<?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>60563</bug_id>
          
          <creation_ts>2011-05-10 11:16:24 -0700</creation_ts>
          <short_desc>[Chromium] Click event is not fired for a menulist &lt;select&gt;</short_desc>
          <delta_ts>2013-04-11 13:48:40 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          <dependson>61943</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Naoki Takano">honten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dslomov</cc>
    
    <cc>honten</cc>
    
    <cc>japhet</cc>
    
    <cc>jcivelli</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401364</commentid>
    <comment_count>0</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-10 11:16:24 -0700</bug_when>
    <thetext>Popup window consumes the mouse up event and the event doesn&apos;t reach to the &lt;select&gt; node.
That is the reason why the even is not fired.

Actually, not only click but also mouseup isn&apos;t fired.

The same problem is in WebKit2 here
https://bugs.webkit.org/show_bug.cgi?id=57904

That solution was to send mouse event directly (e.g. using PostMessage() WIn32 API) but for Chromium, I&apos;d rather like to use call API directly to the target &lt;select&gt; node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401728</commentid>
    <comment_count>1</comment_count>
      <attachid>93065</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-10 20:05:08 -0700</bug_when>
    <thetext>Created attachment 93065
Try to forward mouse button event if it is select popup element.

The current my wekit-patch command is broken, so I upload my patch manually.

Please review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402137</commentid>
    <comment_count>2</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 11:52:27 -0700</bug_when>
    <thetext>The bug is related to
http://code.google.com/p/chromium/issues/detail?id=54442
http://code.google.com/p/chromium/issues/detail?id=79815

Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402174</commentid>
    <comment_count>3</comment_count>
      <attachid>93065</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-11 12:40:17 -0700</bug_when>
    <thetext>Comment on attachment 93065
Try to forward mouse button event if it is select popup element.

This seems like the wrong approach. From the perspective of WebCore, there shouldn&apos;t be a difference in how ports dispatch events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402199</commentid>
    <comment_count>4</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 13:17:34 -0700</bug_when>
    <thetext>Ok,

So could you tell me what approach we need?
Do we need to send mouse event directly?

Thanks,

(In reply to comment #3)
&gt; (From update of attachment 93065 [details])
&gt; This seems like the wrong approach. From the perspective of WebCore, there shouldn&apos;t be a difference in how ports dispatch events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402328</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-11 15:15:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Ok,
&gt; 
&gt; So could you tell me what approach we need?
&gt; Do we need to send mouse event directly?

I am not sure. Can we forward the mouse up from the popup? This way we don&apos;t need to fire simulated clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402333</commentid>
    <comment_count>6</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 15:20:18 -0700</bug_when>
    <thetext>Actually, WebKit2 has the same problem, see
https://bugs.webkit.org/show_bug.cgi?id=57904

Their solution is to send native mouse event to the browser.

But I don&apos;t like this way;-(

What do you think?

(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Ok,
&gt; &gt; 
&gt; &gt; So could you tell me what approach we need?
&gt; &gt; Do we need to send mouse event directly?
&gt; 
&gt; I am not sure. Can we forward the mouse up from the popup? This way we don&apos;t need to fire simulated clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402335</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-11 15:22:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Actually, WebKit2 has the same problem, see
&gt; https://bugs.webkit.org/show_bug.cgi?id=57904
&gt; 
&gt; Their solution is to send native mouse event to the browser.
&gt; 
&gt; But I don&apos;t like this way;-(
&gt; 
&gt; What do you think?

Can you explain why you don&apos;t like it? Forwarding a PlatformMouseEvent from the popup seems like the right thing to do.

&gt; 
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Ok,
&gt; &gt; &gt; 
&gt; &gt; &gt; So could you tell me what approach we need?
&gt; &gt; &gt; Do we need to send mouse event directly?
&gt; &gt; 
&gt; &gt; I am not sure. Can we forward the mouse up from the popup? This way we don&apos;t need to fire simulated clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402338</commentid>
    <comment_count>8</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 15:24:13 -0700</bug_when>
    <thetext>My intention is not that I don&apos;t like to use Windows or Mac specific calls. As you see, they use ::PostMessage(), right?

But if we can use PlatformMouseEvent, it might not use Native calls.

I&apos;ll try it.

(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Actually, WebKit2 has the same problem, see
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=57904
&gt; &gt; 
&gt; &gt; Their solution is to send native mouse event to the browser.
&gt; &gt; 
&gt; &gt; But I don&apos;t like this way;-(
&gt; &gt; 
&gt; &gt; What do you think?
&gt; 
&gt; Can you explain why you don&apos;t like it? Forwarding a PlatformMouseEvent from the popup seems like the right thing to do.
&gt; 
&gt; &gt; 
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; Ok,
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; So could you tell me what approach we need?
&gt; &gt; &gt; &gt; Do we need to send mouse event directly?
&gt; &gt; &gt; 
&gt; &gt; &gt; I am not sure. Can we forward the mouse up from the popup? This way we don&apos;t need to fire simulated clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402408</commentid>
    <comment_count>9</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 16:27:20 -0700</bug_when>
    <thetext>Hmmm... There is the function, Node::dispatchMouseEvent(), so maybe I can use the function to forward the mouse up event to the node.

Thanks,

(In reply to comment #8)
&gt; My intention is not that I don&apos;t like to use Windows or Mac specific calls. As you see, they use ::PostMessage(), right?
&gt; 
&gt; But if we can use PlatformMouseEvent, it might not use Native calls.
&gt; 
&gt; I&apos;ll try it.
&gt; 
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; Actually, WebKit2 has the same problem, see
&gt; &gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=57904
&gt; &gt; &gt; 
&gt; &gt; &gt; Their solution is to send native mouse event to the browser.
&gt; &gt; &gt; 
&gt; &gt; &gt; But I don&apos;t like this way;-(
&gt; &gt; &gt; 
&gt; &gt; &gt; What do you think?
&gt; &gt; 
&gt; &gt; Can you explain why you don&apos;t like it? Forwarding a PlatformMouseEvent from the popup seems like the right thing to do.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; Ok,
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; So could you tell me what approach we need?
&gt; &gt; &gt; &gt; &gt; Do we need to send mouse event directly?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I am not sure. Can we forward the mouse up from the popup? This way we don&apos;t need to fire simulated clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402557</commentid>
    <comment_count>10</comment_count>
      <attachid>93236</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-11 19:29:55 -0700</bug_when>
    <thetext>Created attachment 93236
Use disptachMouseEvent version

Please review again.

I believe this version is much better.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402901</commentid>
    <comment_count>11</comment_count>
      <attachid>93236</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-12 09:45:37 -0700</bug_when>
    <thetext>Comment on attachment 93236
Use disptachMouseEvent version

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

I think you&apos;re almost there. For the most natural way, try handing this off to eventHandler::handleMouseRelease in AutoFillPopuMenuClient?

&gt; Source/WebCore/rendering/RenderMenuList.cpp:314
&gt; +    node()-&gt;dispatchMouseEvent(event, eventNames().mouseupEvent);
&gt; +    node()-&gt;dispatchMouseEvent(event, eventNames().clickEvent);

This logic is probably a bit more complicated than this. When you mouse down on a menu, then move the mouse off the menu, should the click still be dispatched? That&apos;s not how normal DOM works. See http://codesearch.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/page/EventHandler.cpp&amp;l=1666&amp;exact_package=chromium. Perhaps you should just hand this to EventHandler?

&gt; Source/WebCore/rendering/RenderTextControlSingleLine.h:118
&gt; +    virtual void dispatchMouseUpAndClick(const PlatformMouseEvent&amp;) { }

This is definitely wrong. We shouldn&apos;t dispatch events from RenderObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402951</commentid>
    <comment_count>12</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-12 10:44:11 -0700</bug_when>
    <thetext>Thank you for your review.

(In reply to comment #11)
&gt; (From update of attachment 93236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93236&amp;action=review
&gt; 
&gt; I think you&apos;re almost there. For the most natural way, try handing this off to eventHandler::handleMouseRelease in AutoFillPopuMenuClient?

I want to make sure what you are saying.

Why do we need to forward the event to eventHandler::handleMouseRelease in AutoFillPopuMenuClient? I guess this is only for select tag event handler and we should not trigger the event in autofill popup.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderMenuList.cpp:314
&gt; &gt; +    node()-&gt;dispatchMouseEvent(event, eventNames().mouseupEvent);
&gt; &gt; +    node()-&gt;dispatchMouseEvent(event, eventNames().clickEvent);
&gt; 
&gt; This logic is probably a bit more complicated than this. When you mouse down on a menu, then move the mouse off the menu, should the click still be dispatched? That&apos;s not how normal DOM works. See http://codesearch.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/page/EventHandler.cpp&amp;l=1666&amp;exact_package=chromium. Perhaps you should just hand this to EventHandler?

I see, I try it.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTextControlSingleLine.h:118
&gt; &gt; +    virtual void dispatchMouseUpAndClick(const PlatformMouseEvent&amp;) { }
&gt; 
&gt; This is definitely wrong. We shouldn&apos;t dispatch events from RenderObjects.
As you see, I don&apos;t do anything for the object. dispatchMouseUpAndClick() is pure virtual function, so we need to implement something here.

Or don&apos;t we declare the function as pure virtual function?

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402965</commentid>
    <comment_count>13</comment_count>
      <attachid>93236</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-12 11:03:04 -0700</bug_when>
    <thetext>Comment on attachment 93236
Use disptachMouseEvent version

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderTextControlSingleLine.h:118
&gt;&gt;&gt; +    virtual void dispatchMouseUpAndClick(const PlatformMouseEvent&amp;) { }
&gt;&gt; 
&gt;&gt; This is definitely wrong. We shouldn&apos;t dispatch events from RenderObjects.
&gt; 
&gt; As you see, I don&apos;t do anything for the object. dispatchMouseUpAndClick() is pure virtual function, so we need to implement something here.
&gt; 
&gt; Or don&apos;t we declare the function as pure virtual function?
&gt; 
&gt; Thanks

Dispatching DOM events from a RenderObject is just a perverse concept :) RenderTrees and DOM trees are two separate things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403077</commentid>
    <comment_count>14</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-12 12:28:02 -0700</bug_when>
    <thetext>Ok, I got your point.

But from the event handled class(here PopupListBox), we only can use PopupMenuClient class as a channel to forward the event.

That&apos;s why I added the function, dispatchMouseUpAndClick() in PopupMenuClient class.

So is it Ok to change the name to forwardMouseUpAndClick()?

Or do you mean to drag other information like event handler into PopupListBox to forward the event?

If you have any advice or comment, I would appreciate.

Thanks,


(In reply to comment #13)
&gt; (From update of attachment 93236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93236&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderTextControlSingleLine.h:118
&gt; &gt;&gt;&gt; +    virtual void dispatchMouseUpAndClick(const PlatformMouseEvent&amp;) { }
&gt; &gt;&gt; 
&gt; &gt;&gt; This is definitely wrong. We shouldn&apos;t dispatch events from RenderObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403405</commentid>
    <comment_count>15</comment_count>
      <attachid>93407</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-12 23:48:16 -0700</bug_when>
    <thetext>Created attachment 93407
EventHandler version

According to your suggestion, I changed to use EventHandler to forward the event.

Actually, just forwarding doesn&apos;t work well because of coordinate issue.

As you know, user click the item in select option window, the mouse point is out of bound from the actual select widget.
The event hander isn&apos;t fired correctly.

So, inspired by WebKit2 solution, I stored the mouse button down position first, and use the location when the up.

I left dispatchMouseUpAndClick() in AutoFillPopupMenuClient.h, because I didn&apos;t get your answer.

Please review again.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403658</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-13 10:43:00 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=93407) [details]
&gt; EventHandler version
&gt; 
&gt; According to your suggestion, I changed to use EventHandler to forward the event.
&gt; 
&gt; Actually, just forwarding doesn&apos;t work well because of coordinate issue.
&gt; 
&gt; As you know, user click the item in select option window, the mouse point is out of bound from the actual select widget.
&gt; The event hander isn&apos;t fired correctly.
&gt; 
&gt; So, inspired by WebKit2 solution, I stored the mouse button down position first, and use the location when the up.
&gt; 
&gt; I left dispatchMouseUpAndClick() in AutoFillPopupMenuClient.h, because I didn&apos;t get your answer.
&gt; 
&gt; Please review again.
&gt; 
&gt; Thanks,

This patch looks even worse than the others :(

I am sorry that this is taking so many roundtrips. I don&apos;t know the code around popups well enough to offer the solution directly, but I can see a problem with existing code. In short, it&apos;s:

Don&apos;t reach into WebCore to make stuff in WebKit layer work. 

The long version: See how the patch in bug 57904 doesn&apos;t make any changes in WebCore code?  That&apos;s because they respect the layering boundaries and realize that even though it is more work to fix this particular issue, the WebCore code should work the same way for _all_ ports. What you&apos;re proposing is hooks in WebCore that are only relevant for Chromium. I assert that this is unnecessary.

I actually rather like the solution in bug 57904 and find it very rational. Co-opting the mousedown event seems reasonable and logical from the perspective of WebCore.

Hope this helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403659</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-13 10:43:47 -0700</bug_when>
    <thetext>Also, the manual test is using alerts, which is a bit disruptive for the testers. How about something like this:

http://jsfiddle.net/FXBgG/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403819</commentid>
    <comment_count>18</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-13 13:47:20 -0700</bug_when>
    <thetext>Thank you for your review so many times!!
I appreciate your review even if so many round trips;-)
Now I understand more clearly what you are talking about.

AFAIK, in chromium, we use PopupMenuChromium.cpp to handle events.
But it doesn&apos;t know the parent window. That&apos;s why I forward the event to WebCore.

On the other hand, PopupMenuWin.cpp and WebKit2 have there parent window handles.
That&apos;s why they can simulate the mouse click natively.

So I guess, if we cannot touch WebCore part, we should also have to have parent handle in PopupMenuChromium.cpp. Of course the handle should be Chromium specific handle, not native HWND or GTK handles.

But still I&apos;m still not sure how we can simulate mouse event between Chromium and WebKit.


&gt;Kent-san,

Do you have any idea about that, if you know?

Thanks,



(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=93407) [details] [details]
&gt; &gt; EventHandler version
&gt; &gt; 
&gt; &gt; According to your suggestion, I changed to use EventHandler to forward the event.
&gt; &gt; 
&gt; &gt; Actually, just forwarding doesn&apos;t work well because of coordinate issue.
&gt; &gt; 
&gt; &gt; As you know, user click the item in select option window, the mouse point is out of bound from the actual select widget.
&gt; &gt; The event hander isn&apos;t fired correctly.
&gt; &gt; 
&gt; &gt; So, inspired by WebKit2 solution, I stored the mouse button down position first, and use the location when the up.
&gt; &gt; 
&gt; &gt; I left dispatchMouseUpAndClick() in AutoFillPopupMenuClient.h, because I didn&apos;t get your answer.
&gt; &gt; 
&gt; &gt; Please review again.
&gt; &gt; 
&gt; &gt; Thanks,
&gt; 
&gt; This patch looks even worse than the others :(
&gt; 
&gt; I am sorry that this is taking so many roundtrips. I don&apos;t know the code around popups well enough to offer the solution directly, but I can see a problem with existing code. In short, it&apos;s:
&gt; 
&gt; Don&apos;t reach into WebCore to make stuff in WebKit layer work. 
&gt; 
&gt; The long version: See how the patch in bug 57904 doesn&apos;t make any changes in WebCore code?  That&apos;s because they respect the layering boundaries and realize that even though it is more work to fix this particular issue, the WebCore code should work the same way for _all_ ports. What you&apos;re proposing is hooks in WebCore that are only relevant for Chromium. I assert that this is unnecessary.
&gt; 
&gt; I actually rather like the solution in bug 57904 and find it very rational. Co-opting the mousedown event seems reasonable and logical from the perspective of WebCore.
&gt; 
&gt; Hope this helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404140</commentid>
    <comment_count>19</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-14 21:02:55 -0700</bug_when>
    <thetext>After looking around the source code, I guess render_view in Chromium code is better choice to forward mouse up event.

But I&apos;m stuck I cannot forward the event well.

Dimitri,
Are you familiar with render_view message routing in Chromium?

Or do you know who is the right person to ask?

Thanks,

(In reply to comment #18)
&gt; Thank you for your review so many times!!
&gt; I appreciate your review even if so many round trips;-)
&gt; Now I understand more clearly what you are talking about.
&gt; 
&gt; AFAIK, in chromium, we use PopupMenuChromium.cpp to handle events.
&gt; But it doesn&apos;t know the parent window. That&apos;s why I forward the event to WebCore.
&gt; 
&gt; On the other hand, PopupMenuWin.cpp and WebKit2 have there parent window handles.
&gt; That&apos;s why they can simulate the mouse click natively.
&gt; 
&gt; So I guess, if we cannot touch WebCore part, we should also have to have parent handle in PopupMenuChromium.cpp. Of course the handle should be Chromium specific handle, not native HWND or GTK handles.
&gt; 
&gt; But still I&apos;m still not sure how we can simulate mouse event between Chromium and WebKit.
&gt; 
&gt; 
&gt; &gt;Kent-san,
&gt; 
&gt; Do you have any idea about that, if you know?
&gt; 
&gt; Thanks,
&gt; 
&gt; 
&gt; 
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; Created an attachment (id=93407) [details] [details] [details]
&gt; &gt; &gt; EventHandler version
&gt; &gt; &gt; 
&gt; &gt; &gt; According to your suggestion, I changed to use EventHandler to forward the event.
&gt; &gt; &gt; 
&gt; &gt; &gt; Actually, just forwarding doesn&apos;t work well because of coordinate issue.
&gt; &gt; &gt; 
&gt; &gt; &gt; As you know, user click the item in select option window, the mouse point is out of bound from the actual select widget.
&gt; &gt; &gt; The event hander isn&apos;t fired correctly.
&gt; &gt; &gt; 
&gt; &gt; &gt; So, inspired by WebKit2 solution, I stored the mouse button down position first, and use the location when the up.
&gt; &gt; &gt; 
&gt; &gt; &gt; I left dispatchMouseUpAndClick() in AutoFillPopupMenuClient.h, because I didn&apos;t get your answer.
&gt; &gt; &gt; 
&gt; &gt; &gt; Please review again.
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks,
&gt; &gt; 
&gt; &gt; This patch looks even worse than the others :(
&gt; &gt; 
&gt; &gt; I am sorry that this is taking so many roundtrips. I don&apos;t know the code around popups well enough to offer the solution directly, but I can see a problem with existing code. In short, it&apos;s:
&gt; &gt; 
&gt; &gt; Don&apos;t reach into WebCore to make stuff in WebKit layer work. 
&gt; &gt; 
&gt; &gt; The long version: See how the patch in bug 57904 doesn&apos;t make any changes in WebCore code?  That&apos;s because they respect the layering boundaries and realize that even though it is more work to fix this particular issue, the WebCore code should work the same way for _all_ ports. What you&apos;re proposing is hooks in WebCore that are only relevant for Chromium. I assert that this is unnecessary.
&gt; &gt; 
&gt; &gt; I actually rather like the solution in bug 57904 and find it very rational. Co-opting the mousedown event seems reasonable and logical from the perspective of WebCore.
&gt; &gt; 
&gt; &gt; Hope this helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405122</commentid>
    <comment_count>20</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-17 10:17:12 -0700</bug_when>
    <thetext>From what I understand, the external popup is consuming the mouse up and down events so they dont have a chance to be sent to the renderer.


I think one way to do it would be to:
- On the Chrome side, change the ViewMsg_SelectPopupMenuItem message (see content/common/view_messages.h) to take an extra parameter which is the click coordinates of the location clicked (probably translated to the page coordinates) when the selection occurred (could be -1, -1 to mean no click triggered the selection). That message is sent by the browser when a popup menu item is clicked from chrome/browser/tab_contents/popup_menu_helper_mac.mm, that would also have to be changed to include that click info. The render view would then pass that click along to the WebKit side.
- On the WebKit Chromium API side the select popup interfaces would have to be modified to take in that new parameter, and the WebViewImpl or ExternalPopupMenu would create and send a click event to the select.

Now that I think of it, another way that would probably be much easier woud be to forward the mouse up event from the external popup menu to the the render widget host view (after translating the coordinates as necessary). That would probably happen in  chrome/browser/tab_contents/popup_menu_helper_mac.mm. That solution is probably better and would only affect Chromium code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405193</commentid>
    <comment_count>21</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-17 11:32:47 -0700</bug_when>
    <thetext>Jay,

Thank you for your good suggestion!!

I&apos;ll try to do it.

For me, Linux is dev environment, so I&apos;ll compare between Mac and Linux code.

Thanks,

(In reply to comment #20)
&gt; From what I understand, the external popup is consuming the mouse up and down events so they dont have a chance to be sent to the renderer.
&gt; 
&gt; 
&gt; I think one way to do it would be to:
&gt; - On the Chrome side, change the ViewMsg_SelectPopupMenuItem message (see content/common/view_messages.h) to take an extra parameter which is the click coordinates of the location clicked (probably translated to the page coordinates) when the selection occurred (could be -1, -1 to mean no click triggered the selection). That message is sent by the browser when a popup menu item is clicked from chrome/browser/tab_contents/popup_menu_helper_mac.mm, that would also have to be changed to include that click info. The render view would then pass that click along to the WebKit side.
&gt; - On the WebKit Chromium API side the select popup interfaces would have to be modified to take in that new parameter, and the WebViewImpl or ExternalPopupMenu would create and send a click event to the select.
&gt; 
&gt; Now that I think of it, another way that would probably be much easier woud be to forward the mouse up event from the external popup menu to the the render widget host view (after translating the coordinates as necessary). That would probably happen in  chrome/browser/tab_contents/popup_menu_helper_mac.mm. That solution is probably better and would only affect Chromium code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405255</commentid>
    <comment_count>22</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-17 13:20:20 -0700</bug_when>
    <thetext>Jay,

After just glance in Chromium source code, Mac is really special and it might not be fitting to Linux and Win.

Because your suggesting way uses external_popup_menu_, and which is called from  RenderView::OnSelectPopupMenuItem(). But external_popup_menu_ looks only used for Mac.

I look into it more, but what do you think of Mac and Win?

Thanks,

(In reply to comment #21)
&gt; Jay,
&gt; 
&gt; Thank you for your good suggestion!!
&gt; 
&gt; I&apos;ll try to do it.
&gt; 
&gt; For me, Linux is dev environment, so I&apos;ll compare between Mac and Linux code.
&gt; 
&gt; Thanks,
&gt; 
&gt; (In reply to comment #20)
&gt; &gt; From what I understand, the external popup is consuming the mouse up and down events so they dont have a chance to be sent to the renderer.
&gt; &gt; 
&gt; &gt; 
&gt; &gt; I think one way to do it would be to:
&gt; &gt; - On the Chrome side, change the ViewMsg_SelectPopupMenuItem message (see content/common/view_messages.h) to take an extra parameter which is the click coordinates of the location clicked (probably translated to the page coordinates) when the selection occurred (could be -1, -1 to mean no click triggered the selection). That message is sent by the browser when a popup menu item is clicked from chrome/browser/tab_contents/popup_menu_helper_mac.mm, that would also have to be changed to include that click info. The render view would then pass that click along to the WebKit side.
&gt; &gt; - On the WebKit Chromium API side the select popup interfaces would have to be modified to take in that new parameter, and the WebViewImpl or ExternalPopupMenu would create and send a click event to the select.
&gt; &gt; 
&gt; &gt; Now that I think of it, another way that would probably be much easier woud be to forward the mouse up event from the external popup menu to the the render widget host view (after translating the coordinates as necessary). That would probably happen in  chrome/browser/tab_contents/popup_menu_helper_mac.mm. That solution is probably better and would only affect Chromium code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405262</commentid>
    <comment_count>23</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-17 13:36:40 -0700</bug_when>
    <thetext>Naoki,
You are right, my bad. I mistakingly thought this was a Mac only problem.
I&apos;ll look into it a bit more and will have more suggestions soon.

Jay

(In reply to comment #22)
&gt; Jay,
&gt; 
&gt; After just glance in Chromium source code, Mac is really special and it might not be fitting to Linux and Win.
&gt; 
&gt; Because your suggesting way uses external_popup_menu_, and which is called from  RenderView::OnSelectPopupMenuItem(). But external_popup_menu_ looks only used for Mac.
&gt; 
&gt; I look into it more, but what do you think of Mac and Win?
&gt; 
&gt; Thanks,
&gt; 
&gt; (In reply to comment #21)
&gt; &gt; Jay,
&gt; &gt; 
&gt; &gt; Thank you for your good suggestion!!
&gt; &gt; 
&gt; &gt; I&apos;ll try to do it.
&gt; &gt; 
&gt; &gt; For me, Linux is dev environment, so I&apos;ll compare between Mac and Linux code.
&gt; &gt; 
&gt; &gt; Thanks,
&gt; &gt; 
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; From what I understand, the external popup is consuming the mouse up and down events so they dont have a chance to be sent to the renderer.
&gt; &gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I think one way to do it would be to:
&gt; &gt; &gt; - On the Chrome side, change the ViewMsg_SelectPopupMenuItem message (see content/common/view_messages.h) to take an extra parameter which is the click coordinates of the location clicked (probably translated to the page coordinates) when the selection occurred (could be -1, -1 to mean no click triggered the selection). That message is sent by the browser when a popup menu item is clicked from chrome/browser/tab_contents/popup_menu_helper_mac.mm, that would also have to be changed to include that click info. The render view would then pass that click along to the WebKit side.
&gt; &gt; &gt; - On the WebKit Chromium API side the select popup interfaces would have to be modified to take in that new parameter, and the WebViewImpl or ExternalPopupMenu would create and send a click event to the select.
&gt; &gt; &gt; 
&gt; &gt; &gt; Now that I think of it, another way that would probably be much easier woud be to forward the mouse up event from the external popup menu to the the render widget host view (after translating the coordinates as necessary). That would probably happen in  chrome/browser/tab_contents/popup_menu_helper_mac.mm. That solution is probably better and would only affect Chromium code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405986</commentid>
    <comment_count>24</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-18 13:20:52 -0700</bug_when>
    <thetext>Hi, Jay.

Do you have any update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407268</commentid>
    <comment_count>25</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-20 12:20:27 -0700</bug_when>
    <thetext>Jay,

Do you have any update since the last discussion?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>407795</commentid>
    <comment_count>26</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-23 00:59:10 -0700</bug_when>
    <thetext>Jay,

Stil, I&apos;m thinking how to deal with this problem.

And my current idea is to forward the mouse down event in WebPopupMenuImpl::popupClosed().
In the function, we can get PopupContainer from m_widget, and get ChromeClientImpl::webView().

We can get WebViewClient from webView()::client(). Once we can get WebViewClient which derives RenderView, we can forward mouse click events to RenderView.

The tricky point is to get PopupContainer from m_widget with static_cast. But if we don&apos;t change anything in WebCore source code, I guess that is the only way.

What do you think?

Thanks,

(In reply to comment #25)
&gt; Jay,
&gt; 
&gt; Do you have any update since the last discussion?
&gt; 
&gt; Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408185</commentid>
    <comment_count>27</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-23 12:59:30 -0700</bug_when>
    <thetext>Jay looks pretty busy.

Is there anybody who are familiar with this area?

This bug need knowledge about Chromium, popup window and &lt;select&gt; form.

Thanks,

(In reply to comment #26)
&gt; Jay,
&gt; 
&gt; Stil, I&apos;m thinking how to deal with this problem.
&gt; 
&gt; And my current idea is to forward the mouse down event in WebPopupMenuImpl::popupClosed().
&gt; In the function, we can get PopupContainer from m_widget, and get ChromeClientImpl::webView().
&gt; 
&gt; We can get WebViewClient from webView()::client(). Once we can get WebViewClient which derives RenderView, we can forward mouse click events to RenderView.
&gt; 
&gt; The tricky point is to get PopupContainer from m_widget with static_cast. But if we don&apos;t change anything in WebCore source code, I guess that is the only way.
&gt; 
&gt; What do you think?
&gt; 
&gt; Thanks,
&gt; 
&gt; (In reply to comment #25)
&gt; &gt; Jay,
&gt; &gt; 
&gt; &gt; Do you have any update since the last discussion?
&gt; &gt; 
&gt; &gt; Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408325</commentid>
    <comment_count>28</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-23 14:48:14 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Jay,
&gt; 
&gt; Stil, I&apos;m thinking how to deal with this problem.
&gt; 
&gt; And my current idea is to forward the mouse down event in WebPopupMenuImpl::popupClosed().
&gt; In the function, we can get PopupContainer from m_widget, and get ChromeClientImpl::webView().
&gt; 
&gt; We can get WebViewClient from webView()::client(). Once we can get WebViewClient which derives RenderView, we can forward mouse click events to RenderView.
&gt; 
&gt; The tricky point is to get PopupContainer from m_widget with static_cast. But if we don&apos;t change anything in WebCore source code, I guess that is the only way.
&gt; 
&gt; What do you think?

Sorry for the delay.
Wouldn&apos;t WebPopupMenuImpl::popupClosed() be called even when the mouse is not involved (popup closed by keyboard action)?
I am looking into it to see if I have other suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408333</commentid>
    <comment_count>29</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-23 14:51:00 -0700</bug_when>
    <thetext>Yes, I forgot to tell you one more thing.

So, to make sure the even is accepted or cancel, I add one more function in PopupContainer, like bool clickIsAccepted() something like that.

And only if the return value is true, we send the event.

What do you think?

(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; Jay,
&gt; &gt; 
&gt; &gt; Stil, I&apos;m thinking how to deal with this problem.
&gt; &gt; 
&gt; &gt; And my current idea is to forward the mouse down event in WebPopupMenuImpl::popupClosed().
&gt; &gt; In the function, we can get PopupContainer from m_widget, and get ChromeClientImpl::webView().
&gt; &gt; 
&gt; &gt; We can get WebViewClient from webView()::client(). Once we can get WebViewClient which derives RenderView, we can forward mouse click events to RenderView.
&gt; &gt; 
&gt; &gt; The tricky point is to get PopupContainer from m_widget with static_cast. But if we don&apos;t change anything in WebCore source code, I guess that is the only way.
&gt; &gt; 
&gt; &gt; What do you think?
&gt; 
&gt; Sorry for the delay.
&gt; Wouldn&apos;t WebPopupMenuImpl::popupClosed() be called even when the mouse is not involved (popup closed by keyboard action)?
&gt; I am looking into it to see if I have other suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408496</commentid>
    <comment_count>30</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-23 17:20:40 -0700</bug_when>
    <thetext>I kind of dislike having to keep a state (whether mouse was clicked or not).
Could we may be add a pointer to a PlatformEvent as an optional param in PopupMenuClient::valueChanged()?
If there the RenderMenuList would dispatch it to the frame event handler, if NULL nothing would happen.

That way PopupMenuChromium.cpp could decide whether the event needs to be forwarded or not.

Let me know what you think.

Jay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408511</commentid>
    <comment_count>31</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-23 17:38:41 -0700</bug_when>
    <thetext>Hmmm...

But, as you know, PopupMenuClient::valueChanged() is in WebCore domain. So we have to change the logic only for Chromium in WebCore, right?

Dimitri already said,
&gt; This seems like the wrong approach. From the perspective of WebCore, there shouldn&apos;t be a difference in how ports dispatch events.

Or does he mean different thing? Did I misunderstand?

Thanks,


(In reply to comment #30)
&gt; I kind of dislike having to keep a state (whether mouse was clicked or not).
&gt; Could we may be add a pointer to a PlatformEvent as an optional param in PopupMenuClient::valueChanged()?
&gt; If there the RenderMenuList would dispatch it to the frame event handler, if NULL nothing would happen.
&gt; 
&gt; That way PopupMenuChromium.cpp could decide whether the event needs to be forwarded or not.
&gt; 
&gt; Let me know what you think.
&gt; 
&gt; Jay</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409299</commentid>
    <comment_count>32</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-24 16:34:18 -0700</bug_when>
    <thetext>Here is another suggestion that might be interesting.
The problem when you wat to forward the mouse event from PopupMenuChromium.cpp is that you need access to the node you want to forward this event to.
Since the popup menu is created from  PopupMenuChromium::show() at which point we have access to the Frame (through the FrameView).
We could associate the Frame with the PopupContainer.
So then in PopupListBox::handleMouseReleaseEvent() you could forward the mouse event to the focused node (assuming this is the right one).
That way you would not have to change the PopupMenuClient API.

Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409455</commentid>
    <comment_count>33</comment_count>
      <attachid>94743</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-24 21:40:04 -0700</bug_when>
    <thetext>Created attachment 94743
Use focused node version.

Just with only focused node, I cant forward mouse release event!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409456</commentid>
    <comment_count>34</comment_count>
      <attachid>94743</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-24 21:40:53 -0700</bug_when>
    <thetext>Comment on attachment 94743
Use focused node version.

Jay

Thank you for your great suggestion!!

Now I can implement the simplest way to forward the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409822</commentid>
    <comment_count>35</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-25 12:21:29 -0700</bug_when>
    <thetext>Dimitri or Jay,

Could you review my patch?

Thanks,

(In reply to comment #34)
&gt; (From update of attachment 94743 [details])
&gt; Jay
&gt; 
&gt; Thank you for your great suggestion!!
&gt; 
&gt; Now I can implement the simplest way to forward the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409841</commentid>
    <comment_count>36</comment_count>
      <attachid>94743</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-25 12:29:25 -0700</bug_when>
    <thetext>Comment on attachment 94743
Use focused node version.

Is this the right patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409858</commentid>
    <comment_count>37</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-25 12:43:44 -0700</bug_when>
    <thetext>Sorry, my webkit-patch script didn&apos;t work, and I did wrong thing manually;-(

I&apos;ll upload it again.

Sorry for bothering you again...

(In reply to comment #36)
&gt; (From update of attachment 94743 [details])
&gt; Is this the right patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410106</commentid>
    <comment_count>38</comment_count>
      <attachid>94898</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-25 18:30:15 -0700</bug_when>
    <thetext>Created attachment 94898
Use focused node version.

Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410503</commentid>
    <comment_count>39</comment_count>
      <attachid>94898</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-26 09:15:39 -0700</bug_when>
    <thetext>Comment on attachment 94898
Use focused node version.

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

&gt; Source/WebCore/manual-tests/select-element-mouse-event.html:1
&gt; + &lt;!DOCTYPE html&gt;

I wonder if it would be possible to add a test case for this in Source/WebKit/chromium/tests/PopupMenuTest.cpp?
The test framework let&apos;s you load HTML in a page, you could then explicitly open the popup and send a fake mouse event to it and ensure everything works as expected.
(and you could test with and without a focused node).

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:414
&gt; +    listBox()-&gt;m_focusedNode = m_frameView-&gt;frame()-&gt;document()-&gt;focusedNode();

It would be a good idea to set m_focusedNode to 0 when we hide the popup, so we don&apos;t keep a pointer to a potentially deleted object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410505</commentid>
    <comment_count>40</comment_count>
      <attachid>94898</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-26 09:16:35 -0700</bug_when>
    <thetext>Comment on attachment 94898
Use focused node version.

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

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:193
&gt; +    void acceptIndex(int index, const PlatformMouseEvent* event = 0);

this should just be const PlatformMouseEvent&amp;.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:283
&gt; +    Node* m_focusedNode;

This node could be removed from the tree while the popup is still open. I think you need a RefPtr here.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1104
&gt; +            m_focusedNode-&gt;dispatchMouseEvent(*event, eventNames().mouseupEvent);

What&apos;s the re-entrance opportunity here? If up event removes the corresponding select element, are we still safe to continue this execution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410556</commentid>
    <comment_count>41</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-26 10:07:50 -0700</bug_when>
    <thetext>Dimitri and Jay,

Thank you for review.

About test, I&apos;ll try it. But I&apos;ve heard a couple of times, we don&apos;t have any good way to handle autofill test.

(In reply to comment #40)
&gt; (From update of attachment 94898 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94898&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:193
&gt; &gt; +    void acceptIndex(int index, const PlatformMouseEvent* event = 0);
&gt; 
&gt; this should just be const PlatformMouseEvent&amp;.

But acceptIndex() is called by other functions where we don&apos;t have event. That&apos;s why I declared where with default value.

&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:283
&gt; &gt; +    Node* m_focusedNode;
&gt; 
&gt; This node could be removed from the tree while the popup is still open. I think you need a RefPtr here.

Ok


&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1104
&gt; &gt; +            m_focusedNode-&gt;dispatchMouseEvent(*event, eventNames().mouseupEvent);
&gt; 
&gt; What&apos;s the re-entrance opportunity here? If up event removes the corresponding select element, are we still safe to continue this execution?
In this case, it should be fine if we use RefPtr.

But to clarify it, do we have to move this dispatch call to upper function PopupListBox::handleMouseReleaseEvent() from here?

If so, acceptIndex() don&apos;t have to take event anymore either. But acceptIndex() have to return boolean to check if we should forward event or not.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411150</commentid>
    <comment_count>42</comment_count>
      <attachid>95112</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-26 22:14:33 -0700</bug_when>
    <thetext>Created attachment 95112
Change to use RefPtr.

Please review.

1. I cannot write automation test, because PopupMenuTest cannot load test html file and cannot test event handler.
2. Change to use RefPtr.
3. Clear m_focusedNode after the event forward.
4. Check select popup, because we don&apos;t want to fire when autofill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411472</commentid>
    <comment_count>43</comment_count>
      <attachid>95112</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-27 09:10:46 -0700</bug_when>
    <thetext>Comment on attachment 95112
Change to use RefPtr.

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

ok with nits, if Jay confirms this can&apos;t be tested using unit testing framework.

&gt; Source/WebCore/ChangeLog:5
&gt; +        [Chromium]Click event is not fired for a menulist &lt;select&gt;

Need a space between [Chromium] and Click.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Manual test with select-element-mouse-event.html.

Manual test: select-element-mouse-event.html

&gt; Source/WebCore/manual-tests/select-element-mouse-event.html:19
&gt; +  alert(&apos;down&apos;);

Please don&apos;t use alerts. Log into the page itself. That&apos;s a lot less intrusive.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:684
&gt; +    // Clear m_fcosuedNode here, because we cannot clear in hidePopup() which is called before dispatchMouseEvent() is called.

typo: m_focusedNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411493</commentid>
    <comment_count>44</comment_count>
      <attachid>95112</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-27 09:32:27 -0700</bug_when>
    <thetext>Comment on attachment 95112
Change to use RefPtr.

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

&gt; Source/WebCore/manual-tests/select-element-mouse-event.html:12
&gt; +&lt;select id=s size=1&gt;

I can think of several other important test cases:
- have disabled items in the select and try to click it
- have a onchange event handler that removes the select node from the DOM (we had crashes in the past with such scenarios)
- have a onclick event handler that removes the select node from the DOM
- use the keyboard to make the selection and ensures the right events are sent (change but no click)

Regarding making unit-tests. 
You can load actual content in a WebView from a test. See for example WebFrameTest and WebPageSerializerTest.
These tests use mocking of URLs, but in your case you could probably just get away with a data URL for the main frame content.
I cannot guarantee this is going to work, but I think it would be a good thing to try as having unit-tests for this would be really nice.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:685
&gt; +    m_focusedNode = 0;

In the case where acceptIndex returned false, don&apos;t we want to keep the m_focusedNode? (the popup might not have been hidden)

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1111
&gt; +    return true;

Don&apos;t you want to return false in that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411918</commentid>
    <comment_count>45</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-28 16:43:36 -0700</bug_when>
    <thetext>Jay,

Thank you for your detail suggestion for the test.

Now I can find how I write unit test.

But this looks like only for Win, and my dev environment is Linux;-(

Actually I have Win7 VMWare environment, so I try to implement it on it. It is really slow though;-(

If I have chance, I want to port this Popup window unit test for Linux. But this is another topic...

Thanks,

(In reply to comment #44)
&gt; (From update of attachment 95112 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95112&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/manual-tests/select-element-mouse-event.html:12
&gt; &gt; +&lt;select id=s size=1&gt;
&gt; 
&gt; I can think of several other important test cases:
&gt; - have disabled items in the select and try to click it
&gt; - have a onchange event handler that removes the select node from the DOM (we had crashes in the past with such scenarios)
&gt; - have a onclick event handler that removes the select node from the DOM
&gt; - use the keyboard to make the selection and ensures the right events are sent (change but no click)
&gt; 
&gt; Regarding making unit-tests. 
&gt; You can load actual content in a WebView from a test. See for example WebFrameTest and WebPageSerializerTest.
&gt; These tests use mocking of URLs, but in your case you could probably just get away with a data URL for the main frame content.
&gt; I cannot guarantee this is going to work, but I think it would be a good thing to try as having unit-tests for this would be really nice.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:685
&gt; &gt; +    m_focusedNode = 0;
&gt; 
&gt; In the case where acceptIndex returned false, don&apos;t we want to keep the m_focusedNode? (the popup might not have been hidden)
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1111
&gt; &gt; +    return true;
&gt; 
&gt; Don&apos;t you want to return false in that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412418</commentid>
    <comment_count>46</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-30 18:26:05 -0700</bug_when>
    <thetext>Jay,

Thank you for your detail suggestion for the test.

Now I can find how I write unit test.

But this looks like only for Win, and my dev environment is Linux;-(

Actually I have Win7 VMWare environment, so I try to implement it on it. It is really slow though;-(

If I have chance, I want to port this Popup window unit test for Linux. But this is another topic...

Thanks,

(In reply to comment #44)
&gt; (From update of attachment 95112 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95112&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/manual-tests/select-element-mouse-event.html:12
&gt; &gt; +&lt;select id=s size=1&gt;
&gt; 
&gt; I can think of several other important test cases:
&gt; - have disabled items in the select and try to click it
&gt; - have a onchange event handler that removes the select node from the DOM (we had crashes in the past with such scenarios)
&gt; - have a onclick event handler that removes the select node from the DOM
&gt; - use the keyboard to make the selection and ensures the right events are sent (change but no click)
&gt; 
&gt; Regarding making unit-tests. 
&gt; You can load actual content in a WebView from a test. See for example WebFrameTest and WebPageSerializerTest.
&gt; These tests use mocking of URLs, but in your case you could probably just get away with a data URL for the main frame content.
&gt; I cannot guarantee this is going to work, but I think it would be a good thing to try as having unit-tests for this would be really nice.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:685
&gt; &gt; +    m_focusedNode = 0;
&gt; 
&gt; In the case where acceptIndex returned false, don&apos;t we want to keep the m_focusedNode? (the popup might not have been hidden)
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1111
&gt; &gt; +    return true;
&gt; 
&gt; Don&apos;t you want to return false in that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412422</commentid>
    <comment_count>47</comment_count>
      <attachid>95389</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-30 18:49:39 -0700</bug_when>
    <thetext>Created attachment 95389
Implement unit test

Jay,

I implemented unit test.

Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412736</commentid>
    <comment_count>48</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-31 10:33:04 -0700</bug_when>
    <thetext>Jay,

Could you review?

(In reply to comment #47)
&gt; Created an attachment (id=95389) [details]
&gt; Implement unit test
&gt; 
&gt; Jay,
&gt; 
&gt; I implemented unit test.
&gt; 
&gt; Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412846</commentid>
    <comment_count>49</comment_count>
      <attachid>95389</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-31 14:06:22 -0700</bug_when>
    <thetext>Comment on attachment 95389
Implement unit test

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

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:255
&gt; +        filePath += &quot;/Source/WebKit/chromium/tests/data/&quot;;

Could you move the test files to a subdirectory (ex: data/popup)?
This folder is only going to get more crowded, so it&apos;s good to keep it organized.

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:424
&gt; +    // mousedown evnet is held by select node, and we don&apos;t simulate the event for the node.

Typo: evnet

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:473
&gt; +    // Make sure no crash, even if select node is moreved on &apos;change&apos; event handler.

Typo: moreved -&gt; removed

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:495
&gt; +    // Make sure no crash, even if select node is moreved on &apos;click&apos; event handler.

Same typo as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412847</commentid>
    <comment_count>50</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2011-05-31 14:07:15 -0700</bug_when>
    <thetext>Great tests! Thanks for writing them!
Some minor comments, otherwise this looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413082</commentid>
    <comment_count>51</comment_count>
      <attachid>95533</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-05-31 19:12:06 -0700</bug_when>
    <thetext>Created attachment 95533
Fix some nits.

Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413494</commentid>
    <comment_count>52</comment_count>
      <attachid>95533</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-01 10:53:12 -0700</bug_when>
    <thetext>Comment on attachment 95533
Fix some nits.

Rejecting attachment 95533 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;land-a...&quot; exit_code: 2

Last 500 characters of output:
ce/WebCore/platform/graphics/chromium/ContentLayerChromium.cpp
	M	Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
r87822 = f5ebb50a8f945b5c8570319b6a74a5d16f3bd332 (refs/remotes/trunk)
	M	Source/WebKit/gtk/webkit/webkitwebframe.cpp
	M	Source/WebKit/gtk/webkit/webkitwebframe.h
	M	Source/WebKit/gtk/ChangeLog
r87823 = 774fb7c2f75f2e5c7f97deebeee7bf94fd600f63 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/8752875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413500</commentid>
    <comment_count>53</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-01 10:55:07 -0700</bug_when>
    <thetext>Oops,

I forgot to include ChangeLog;-(

I will include it into the patch tonight...

(In reply to comment #52)
&gt; (From update of attachment 95533 [details])
&gt; Rejecting attachment 95533 [details] from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;land-a...&quot; exit_code: 2
&gt; 
&gt; Last 500 characters of output:
&gt; ce/WebCore/platform/graphics/chromium/ContentLayerChromium.cpp
&gt;     M    Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
&gt; r87822 = f5ebb50a8f945b5c8570319b6a74a5d16f3bd332 (refs/remotes/trunk)
&gt;     M    Source/WebKit/gtk/webkit/webkitwebframe.cpp
&gt;     M    Source/WebKit/gtk/webkit/webkitwebframe.h
&gt;     M    Source/WebKit/gtk/ChangeLog
&gt; r87823 = 774fb7c2f75f2e5c7f97deebeee7bf94fd600f63 (refs/remotes/trunk)
&gt; First, rewinding head to replay your work on top of it...
&gt; Fast-forwarded master to refs/remotes/trunk.
&gt; 
&gt; Full output: http://queues.webkit.org/results/8752875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413807</commentid>
    <comment_count>54</comment_count>
      <attachid>95695</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-01 18:21:58 -0700</bug_when>
    <thetext>Created attachment 95695
Added ChangeLog

Please commit again.

I just added ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414201</commentid>
    <comment_count>55</comment_count>
      <attachid>95695</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-02 09:45:15 -0700</bug_when>
    <thetext>Comment on attachment 95695
Added ChangeLog

Clearing flags on attachment: 95695

Committed r87920: &lt;http://trac.webkit.org/changeset/87920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414278</commentid>
    <comment_count>56</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-02 11:08:14 -0700</bug_when>
    <thetext>I had to roll out this patch because it does not compile:

http://build.chromium.org/p/chromium/builders/Win%20Builder%20%28dbg%29%28shared%29/builds/8325/steps/compile/logs/stdio


24&gt;.\tests\PopupMenuTest.cpp(254) :error C2440: &apos;initializing&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::basic_string&lt;_Elem,_Traits,_Ax&gt;&apos;
24&gt;        with
24&gt;        [
24&gt;            _Elem=char,
24&gt;            _Traits=std::char_traits&lt;char&gt;,
24&gt;            _Ax=std::allocator&lt;char&gt;
24&gt;        ]
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(258) :error C2665: &apos;WebKit::WebString::fromUTF8&apos; : none of the 2 overloads could convert all the argument types
24&gt;        public\WebString.h(87): could be &apos;WebKit::WebString WebKit::WebString::fromUTF8(const char *)&apos;
24&gt;        while trying to match the argument list &apos;(std::string)&apos;
24&gt;.\tests\PopupMenuTest.cpp(258) :error C3861: &apos;GURL&apos;: identifier not found
24&gt;.\tests\PopupMenuTest.cpp(270) :error C3861: &apos;GURL&apos;: identifier not found
24&gt;.\tests\PopupMenuTest.cpp(426) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(426) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(426) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
24&gt;.\tests\PopupMenuTest.cpp(438) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(438) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(438) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
24&gt;.\tests\PopupMenuTest.cpp(447) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(447) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(447) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
24&gt;.\tests\PopupMenuTest.cpp(468) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(468) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(468) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
24&gt;.\tests\PopupMenuTest.cpp(490) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(490) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(490) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
24&gt;.\tests\PopupMenuTest.cpp(512) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
24&gt;.\tests\PopupMenuTest.cpp(512) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
24&gt;.\tests\PopupMenuTest.cpp(512) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414287</commentid>
    <comment_count>57</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-02 11:17:52 -0700</bug_when>
    <thetext>Hmmm...

Very strange, I thought PopupMenuTest.cpp is only for chromium, so I wonder why WebKit win build bot try to build...

Do you have any suggestions?

(In reply to comment #56)
&gt; I had to roll out this patch because it does not compile:
&gt; 
&gt; http://build.chromium.org/p/chromium/builders/Win%20Builder%20%28dbg%29%28shared%29/builds/8325/steps/compile/logs/stdio
&gt; 
&gt; 
&gt; 24&gt;.\tests\PopupMenuTest.cpp(254) :error C2440: &apos;initializing&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::basic_string&lt;_Elem,_Traits,_Ax&gt;&apos;
&gt; 24&gt;        with
&gt; 24&gt;        [
&gt; 24&gt;            _Elem=char,
&gt; 24&gt;            _Traits=std::char_traits&lt;char&gt;,
&gt; 24&gt;            _Ax=std::allocator&lt;char&gt;
&gt; 24&gt;        ]
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(258) :error C2665: &apos;WebKit::WebString::fromUTF8&apos; : none of the 2 overloads could convert all the argument types
&gt; 24&gt;        public\WebString.h(87): could be &apos;WebKit::WebString WebKit::WebString::fromUTF8(const char *)&apos;
&gt; 24&gt;        while trying to match the argument list &apos;(std::string)&apos;
&gt; 24&gt;.\tests\PopupMenuTest.cpp(258) :error C3861: &apos;GURL&apos;: identifier not found
&gt; 24&gt;.\tests\PopupMenuTest.cpp(270) :error C3861: &apos;GURL&apos;: identifier not found
&gt; 24&gt;.\tests\PopupMenuTest.cpp(426) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(426) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(426) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
&gt; 24&gt;.\tests\PopupMenuTest.cpp(438) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(438) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(438) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
&gt; 24&gt;.\tests\PopupMenuTest.cpp(447) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(447) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(447) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
&gt; 24&gt;.\tests\PopupMenuTest.cpp(468) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(468) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(468) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
&gt; 24&gt;.\tests\PopupMenuTest.cpp(490) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(490) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(490) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available
&gt; 24&gt;.\tests\PopupMenuTest.cpp(512) :error C2440: &apos;&lt;function-style-cast&gt;&apos; : cannot convert from &apos;WebKit::WebCString&apos; to &apos;std::string&apos;
&gt; 24&gt;        No constructor could take the source type, or constructor overload resolution was ambiguous
&gt; 24&gt;.\tests\PopupMenuTest.cpp(512) :error C2228: left of &apos;.c_str&apos; must have class/struct/union
&gt; 24&gt;.\tests\PopupMenuTest.cpp(512) :error C2512: &apos;testing::AssertionResult&apos; : no appropriate default constructor available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414672</commentid>
    <comment_count>58</comment_count>
      <attachid>95858</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-02 23:41:51 -0700</bug_when>
    <thetext>Created attachment 95858
Add WEBKIT_IMPLEMENTATION change

Jay,

Still I&apos;m not sure this correct is fix, but I believe WEBKIT_IMPLEMENTATION causes the build error.

Do you know why?

I added #define WEBKIT_IMPLEMENTATION 0, but it seems we have better way...

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415258</commentid>
    <comment_count>59</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-03 15:57:45 -0700</bug_when>
    <thetext>Jay,

Could you give me your thought?

(In reply to comment #58)
&gt; Created an attachment (id=95858) [details]
&gt; Add WEBKIT_IMPLEMENTATION change
&gt; 
&gt; Jay,
&gt; 
&gt; Still I&apos;m not sure this correct is fix, but I believe WEBKIT_IMPLEMENTATION causes the build error.
&gt; 
&gt; Do you know why?
&gt; 
&gt; I added #define WEBKIT_IMPLEMENTATION 0, but it seems we have better way...
&gt; 
&gt; Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415820</commentid>
    <comment_count>60</comment_count>
      <attachid>95858</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-06-06 07:17:22 -0700</bug_when>
    <thetext>Comment on attachment 95858
Add WEBKIT_IMPLEMENTATION change

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

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:33
&gt; +#if WEBKIT_IMPLEMENTATION
&gt; +#define WEBKIT_IMPLEMENTATION 0
&gt; +#endif

Don&apos;t do this.

&gt; Source/WebKit/chromium/tests/PopupMenuTest.cpp:38
&gt; +#include &lt;webkit/support/webkit_support.h&gt;

Because webkit_support dependency is added, we can&apos;t build PopupMenuTest.cpp with Chromium-win (shared) configuration.
You need to add PopupMenuTest.cpp to the sources! section of https://trac.webkit.org/browser/trunk/Source/WebKit/chromium/WebKit.gyp?rev=87948#L642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416226</commentid>
    <comment_count>61</comment_count>
      <attachid>96177</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-06-06 19:13:10 -0700</bug_when>
    <thetext>Created attachment 96177
Add PopupMenuTest.cpp into WebKit.gyp

Kent-san,

Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416416</commentid>
    <comment_count>62</comment_count>
      <attachid>96177</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-07 02:44:37 -0700</bug_when>
    <thetext>Comment on attachment 96177
Add PopupMenuTest.cpp into WebKit.gyp

Clearing flags on attachment: 96177

Committed r88232: &lt;http://trac.webkit.org/changeset/88232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434435</commentid>
    <comment_count>63</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-07-08 18:33:29 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (From update of attachment 96177 [details])
&gt; Clearing flags on attachment: 96177
&gt; 
&gt; Committed r88232: &lt;http://trac.webkit.org/changeset/88232&gt;

This changeset introduced a crash in crhromium: http://code.google.com/p/chromium/issues/detail?id=88260</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93065</attachid>
            <date>2011-05-10 20:05:08 -0700</date>
            <delta_ts>2011-05-11 19:28:09 -0700</delta_ts>
            <desc>Try to forward mouse button event if it is select popup element.</desc>
            <filename>select-event.patch</filename>
            <type>text/plain</type>
            <size>11031</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhN2Q3ZTAyLi4zNjQ2NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDUtMTAgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNb3VzZSBidXR0b24gdXAgZXZlbnQgaXMgY29uc3VtZWQgYnkgc2VsZWN0IHBvcHVwIHdpbmRv
dy4KKyAgICAgICAgU28gdGhlIGV2ZW50IGlzIG5vdyBmb3J3YXJkZWQgdG8gdGhlIHNlbGVjdCBu
b2RlIGFuZCBjbGljayBhbmQgbW91c2UgZG93biBldmVudHMgYXJlIGZpcmVkLgorCisgICAgICAg
IE1hbnVhbCB0ZXN0IHdpdGggc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKTogQWRkZWQgbmV3IHBhcmFtZXRlciBv
bmx5TW91c2VCdXR0b25Eb3duLgorICAgICAgICBUaGUgZmxhZyBpcyB0cnVlLCBtb3VzZSBkb3du
IGV2ZW50IGlzIG5vdCBzZW50LgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDogQWRk
ZWQgdGhlIHBhcmFtZXRlciBpbiBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKCkuCisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRD
bGljayk6IEFkZGVkIHRydWUgYXMgaXQgd2FzLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNpbXVsYXRlTW91c2VVcEFuZENsaWNrKTog
QWRkZWQgYnV0IGRvIG5vdGhpbmcuCisgICAgICAgICogbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVt
ZW50LW1vdXNlLWV2ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1BvcHVwTWVu
dUNsaWVudC5oOiBBZGRlZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIG1ldGhvZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cExpc3RCb3g6OmFjY2VwdEluZGV4KTogQWRkZWQgc2ltdWxhdGVNb3VzZVVw
QW5kQ2xpY2soKSBjYWxsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6c2ltdWxhdGVNb3VzZVVwQW5kQ2xp
Y2spOiBBZGRlZCBjYWxsaW5nIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soKSB3aXRoIG9ubHlNb3Vz
ZUJ1dHRvbkRvd24gPT0gdHJ1ZSB0byBmb3J3YXJkIG1vdXNlIGJ1dHRvbiBkb3duIGV2ZW50Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6c2ltdWxhdGVNb3VzZVVwQW5kQ2xpY2spOiBBZGRlZCBi
dXQgZG8gbm90aGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6c2VsZWN0aW9uQ2hhbmdlZCk6IEFkZGVkIGEgc3BhY2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlbGVjdGlvbkNsZWFyZWQpOiBBZGRlZCBh
IHNwYWNlLgorCiAyMDExLTA1LTA2ICBCcmV0dCBXaWxzb24gIDxicmV0dHdAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCmluZGV4IDJiNTcyODUuLjRhNjA4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogICAgIFNjb3BlZEV2ZW50UXVldWU6Omluc3RhbmNlKCktPmVucXVldWVFdmVudChldmVu
dCk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5v
ZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91
c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29rKQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJs
eWluZ0V2ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2ssIGJv
b2wgb25seU1vdXNlQnV0dG9uRG93bikKIHsKICAgICBpZiAobm9kZS0+ZGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVy
CiAgICAgZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MtPmFkZChub2RlKTsKIAogICAg
IC8vIHNlbmQgbW91c2Vkb3duIGFuZCBtb3VzZXVwIGJlZm9yZSB0aGUgY2xpY2ssIGlmIHJlcXVl
c3RlZAotICAgIGlmIChzZW5kTW91c2VFdmVudHMpCisgICAgaWYgKHNlbmRNb3VzZUV2ZW50cyAm
JiAhb25seU1vdXNlQnV0dG9uRG93bikKICAgICAgICAgZGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50
KFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQs
IG5vZGUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCkpOwogICAg
IG5vZGUtPnNldEFjdGl2ZSh0cnVlLCBzaG93UHJlc3NlZExvb2spOwogICAgIGlmIChzZW5kTW91
c2VFdmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggODhlOTc1Ni4u
MjEwOWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZGlzcGF0Y2hFdmVudChOb2RlKiwgY29uc3Qg
RXZlbnREaXNwYXRjaE1lZGlhdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTY29wZWRF
dmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4pOwogCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hTaW11bGF0ZWRDbGljayhOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50
LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2spOworICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSosIFBhc3NSZWZQdHI8RXZlbnQ+IHVu
ZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29r
LCBib29sIG9ubHlNb3VzZUJ1dHRvbkRvd24pOwogCiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+KTsKICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBhZGp1c3RSZWxh
dGVkVGFyZ2V0KEV2ZW50KiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDQ0MjhmZmEuLmNjOTc1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI4NDIsNyArMjg0
Miw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluCiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMs
IGJvb2wgc2hvd1ByZXNzZWRMb29rKQogewotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayh0aGlzLCBldmVudCwgc2VuZE1vdXNlRXZlbnRzLCBzaG93UHJlc3NlZExv
b2spOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayh0aGlzLCBl
dmVudCwgc2VuZE1vdXNlRXZlbnRzLCBzaG93UHJlc3NlZExvb2ssIGZhbHNlKTsKIH0KIAogYm9v
bCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDQ3MTQwNWQuLjlhYmM1ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaApAQCAtMTkyLDYgKzE5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOworICAgIHZpcnR1
YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNw
ZWN0QWxpZ25BdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIEZpbGVMaXN0KiBmaWxlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVtZW50LW1vdXNl
LWV2ZW50Lmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQt
bW91c2UtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMw
Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVj
dC1lbGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorVGhpcyB0ZXN0IGlzIHRvIG1ha2Ugc3VyZSB0aGUgbW91c2Ug
ZXZlbnRzIGFyZSBjb3JyZWN0bHkgZmlyZWQuCis8b2w+Cis8bGk+Q2xpY2sgdGhlIGZvbGxvd2lu
ZyBzZWxlY3QgZWxlbWVudC4KKzxsaT5NYWtlIHN1cmUgImRvd24iIGFsZXJ0IHBvcHMgdXAuCis8
bGk+Q2xvc2UgdGhlIGFsZXJ0LgorPGxpPkNob29zZSBhbnkgbnVtYmVyIGZyb20gcHVsbCBkb3du
IHNlbGVjdCBpdGVtcyB3aXRoIG1vdXNlIGNsaWNrLgorPGxpPk1ha2Ugc3VyZSAidXAiIGFsZXJ0
IHBvcHMgdXAgYW5kIHRoZW4gImNsaWNrIiBwb3BzIHVwLgorPC9vbD4KKzxzZWxlY3QgaWQ9cyBz
aXplPTE+Cis8b3B0aW9uPjA8L29wdGlvbj4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9wdGlvbj4y
PC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKCkgeworICBh
bGVydCgnZG93bicpOworfQorCitmdW5jdGlvbiBoYW5kbGVyMihldikgeworICBhbGVydCgnY2xp
Y2snKTsKK30KKworZnVuY3Rpb24gaGFuZGxlcjMoZXYpIHsKKyAgYWxlcnQoJ3VwJyk7Cit9CisK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcs
IGhhbmRsZXIzKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2Vkb3duJywgaGFuZGxlcik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcjIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oCmluZGV4IGYz
M2I5ZTIuLmRlYzVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVw
TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFBvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+UG9wdXBNZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVD
aGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2
ZW50cyA9IHRydWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCmluZGV4IDk2NWNjZDUuLjRjOWMxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAg
LTEwODMsNiArMTA4Myw5IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5k
ZXgpCiAKICAgICAgICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4gUG9wdXBNZW51Q2xpZW50IHdoYXQg
aW5kZXggd2FzIHNlbGVjdGVkLgogICAgICAgICBtX3BvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQo
aW5kZXgpOworCisgICAgICAgIC8vIE1vdXNlIHVwIGV2ZW50IGlzIGNvbnN1bWVkIGJ5IHRoZSBw
b3B1cCB3aW5kb3cuIFNvIHdlIGZvcndhcmQgdGhlIGV2ZW50IGFnYWluIHRvIGZpcmUgbW91c2Ug
ZG93biBhbmQgY2xpY2sgZXZlbnRzLgorICAgICAgICBtX3BvcHVwQ2xpZW50LT5zaW11bGF0ZU1v
dXNlVXBBbmRDbGljaygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggZjM5NmI3ZC4uOGI3ZGNjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCkBAIC0zMDgsNiArMzA5LDExIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmhpZGVQb3B1cCgp
CiAgICAgICAgIG1fcG9wdXAtPmhpZGUoKTsKIH0KIAordm9pZCBSZW5kZXJNZW51TGlzdDo6c2lt
dWxhdGVNb3VzZVVwQW5kQ2xpY2soKQoreworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayhub2RlKCksIDAsIHRydWUsIHRydWUsIHRydWUpOworfQorCiB2b2lkIFJl
bmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVP
bkNoYW5nZSkKIHsKICAgICAvLyBDaGVjayB0byBlbnN1cmUgYSBwYWdlIG5hdmlnYXRpb24gaGFz
IG5vdCBvY2N1cnJlZCB3aGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaAppbmRleCBjZDZlNTYxLi4xZmMzYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHZhbHVlU2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUG9wT3ZlcigpIGNvbnN0IHsgcmV0dXJuICFQT1BV
UF9NRU5VX1BVTExTX0RPV047IH0KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2ln
bmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFuZ2UgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2ltdWxhdGVNb3VzZVVwQW5kQ2xpY2soKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9u
Q2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkge30KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xl
YXJlZCgpIHt9CiAgICAgdmlydHVhbCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oCmluZGV4IGY0M2FhMWIuLmE2YWQ3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTEx
NSw4ICsxMTUsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMK
ICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBm
aXJlRXZlbnRzID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQodW5z
aWduZWQsIGJvb2wpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNsZWFyZWQoKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1UZXh0
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUxhYmVs
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUljb24o
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MWQ4NDgyYi4uNTczZTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wNS0xMCAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21p
dW1dQ2xpY2sgZXZlbnQgaXMgbm90IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAg
ICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1
dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpzaW11bGF0ZU1vdXNlVXBBbmRDbGljayk6IEFkZGVkIGJ1
dCBkbyBub3RoaW5nLgorCiAyMDExLTA1LTA2ICBCcmV0dCBXaWxzb24gIDxicmV0dHdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuaAppbmRleCBj
NjE2MjZhLi5mYjE5Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
dXRvRmlsbFBvcHVwTWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lk
IHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRydWUp
OworICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgaXRlbVRl
eHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93236</attachid>
            <date>2011-05-11 19:29:55 -0700</date>
            <delta_ts>2011-05-12 23:41:50 -0700</delta_ts>
            <desc>Use disptachMouseEvent version</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>7505</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZTQwMTcyLi5mYjRlYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDUtMTEgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNb3VzZSBidXR0b24gdXAgZXZlbnQgaXMgY29uc3VtZWQgYnkgc2VsZWN0IHBvcHVwIHdpbmRv
dy4KKyAgICAgICAgU28gdGhlIGV2ZW50IGlzIG5vdyBmb3J3YXJkZWQgdG8gdGhlIHNlbGVjdCBu
b2RlIGFuZCBjbGljayBhbmQgbW91c2UgZG93biBldmVudHMgYXJlIGZpcmVkLgorCisgICAgICAg
IE1hbnVhbCB0ZXN0IHdpdGggc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9zZWxlY3QtZWxlbWVudC1tb3VzZS1ldmVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1cE1lbnVDbGllbnQuaDogQWRkZWQgZGlzcGF0Y2hN
b3VzZVVwQW5kQ2xpY2soKSBtZXRob2QuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudCk6IEFkZGVkIGRpc3BhdGNoTW91c2VVcEFuZENsaWNrKCkgY2Fs
bC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVudUxpc3Q6OmRpc3BhdGNoTW91c2VVcEFuZENsaWNrKTogQWRkZWQgY2Fs
bGluZyBkaXNwYXRjaE1vdXNlRXZlbnQoKSB0byBmb3J3YXJkIG1vdXNlIGJ1dHRvbiB1cCBhbmQg
Y2xpY2sgZXZlbnRzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6ZGlzcGF0Y2hNb3VzZVVwQW5k
Q2xpY2spOiBBZGRlZCBidXQgZG8gbm90aGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6c2VsZWN0aW9uQ2hhbmdlZCk6IEFkZGVkIGEgc3BhY2UuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlbGVjdGlvbkNs
ZWFyZWQpOiBBZGRlZCBhIHNwYWNlLgorCiAyMDExLTA1LTExICBBZGFtIFJvYmVuICA8YXJvYmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIG9uIHN0cmljdCBQYXNzT3duUHRyIG9uIFdpbmRv
d3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9zZWxlY3QtZWxlbWVu
dC1tb3VzZS1ldmVudC5odG1sIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVjdC1l
bGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjFjMDM3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0
cy9zZWxlY3QtZWxlbWVudC1tb3VzZS1ldmVudC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KK1RoaXMgdGVzdCBpcyB0byBtYWtlIHN1cmUgdGhl
IG1vdXNlIGV2ZW50cyBhcmUgY29ycmVjdGx5IGZpcmVkLgorPG9sPgorPGxpPkNsaWNrIHRoZSBm
b2xsb3dpbmcgc2VsZWN0IGVsZW1lbnQuCis8bGk+TWFrZSBzdXJlICJkb3duIiBhbGVydCBwb3Bz
IHVwLgorPGxpPkNsb3NlIHRoZSBhbGVydC4KKzxsaT5DaG9vc2UgYW55IG51bWJlciBmcm9tIHB1
bGwgZG93biBzZWxlY3QgaXRlbXMgd2l0aCBtb3VzZSBjbGljay4KKzxsaT5NYWtlIHN1cmUgInVw
IiBhbGVydCBwb3BzIHVwIGFuZCB0aGVuICJjbGljayIgcG9wcyB1cC4KKzwvb2w+Cis8c2VsZWN0
IGlkPXMgc2l6ZT0xPgorPG9wdGlvbj4wPC9vcHRpb24+Cis8b3B0aW9uPjE8L29wdGlvbj4KKzxv
cHRpb24+Mjwvb3B0aW9uPgorPC9zZWxlY3Q+Cis8c2NyaXB0PgorZnVuY3Rpb24gaGFuZGxlcigp
IHsKKyAgYWxlcnQoJ2Rvd24nKTsKK30KKworZnVuY3Rpb24gaGFuZGxlcjIoZXYpIHsKKyAgYWxl
cnQoJ2NsaWNrJyk7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZXIzKGV2KSB7CisgIGFsZXJ0KCd1cCcp
OworfQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ21v
dXNldXAnLCBoYW5kbGVyMyk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50
TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3MnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIyKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBN
ZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVDbGllbnQuaApp
bmRleCBmMzNiOWUyLi5lMmM1NWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qb3B1cE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1l
bnVDbGllbnQuaApAQCAtMzMsMTEgKzMzLDEzIEBAIGNsYXNzIEZvbnRTZWxlY3RvcjsKIGNsYXNz
IEhvc3RXaW5kb3c7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKK2Ns
YXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIAogY2xhc3MgUG9wdXBNZW51Q2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Qb3B1cE1lbnVDbGllbnQoKSB7fQogICAgIHZpcnR1YWwgdm9pZCB2
YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTW91c2VVcEFuZENsaWNrKGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtTW91c2VFdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9u
Q2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRydWUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmlu
ZGV4IDk2NWNjZDUuLmVhYWY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTY2Myw2ICs2NjMsOSBAQCBi
b29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhY2NlcHRJbmRl
eChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zKCkpKTsKKworICAgIC8vIE1vdXNlIHVwIGV2ZW50
IGlzIGNvbnN1bWVkIGJ5IHRoZSBwb3B1cCB3aW5kb3cuIFNvIHdlIGZvcndhcmQgdGhlIGV2ZW50
IGFnYWluIHRvIGZpcmUgbW91c2UgZG93biBhbmQgY2xpY2sgZXZlbnRzLgorICAgIG1fcG9wdXBD
bGllbnQtPmRpc3BhdGNoTW91c2VVcEFuZENsaWNrKGV2ZW50KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXgg
ZjM5NmI3ZC4uNzVmM2UzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCkBAIC0zMDgsNiArMzA4LDEyIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmhpZGVQ
b3B1cCgpCiAgICAgICAgIG1fcG9wdXAtPmhpZGUoKTsKIH0KIAordm9pZCBSZW5kZXJNZW51TGlz
dDo6ZGlzcGF0Y2hNb3VzZVVwQW5kQ2xpY2soY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCkKK3sKKyAgICBub2RlKCktPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygp
Lm1vdXNldXBFdmVudCk7CisgICAgbm9kZSgpLT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKK30KKwogdm9pZCBSZW5kZXJNZW51TGlzdDo6dmFsdWVD
aGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFuZ2UpCiB7CiAgICAgLy8g
Q2hlY2sgdG8gZW5zdXJlIGEgcGFnZSBuYXZpZ2F0aW9uIGhhcyBub3Qgb2NjdXJyZWQgd2hpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggY2Q2ZTU2MS4u
MWFiNTIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAg
LTEwMyw2ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZVNob3VsZENo
YW5nZU9uSG90VHJhY2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFBvcE92ZXIoKSBjb25zdCB7IHJldHVybiAhUE9QVVBfTUVOVV9QVUxMU19ET1dOOyB9
CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wg
ZmlyZU9uQ2hhbmdlID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTW91c2VVcEFu
ZENsaWNrKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKSB7fQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rp
b25DbGVhcmVkKCkge30KICAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggZjQzYWExYi4uMzM3YzVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApA
QCAtMTE1LDggKzExNSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBQb3B1cE1lbnVDbGllbnQgbWV0
aG9kcwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBi
b29sIGZpcmVFdmVudHMgPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdl
ZCh1bnNpZ25lZCwgYm9vbCkge30KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgp
IHt9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTW91c2VVcEFuZENsaWNrKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVu
c2lnbmVkLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUxhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUljb24odW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjQ0ZGI4MS4uMzRlNTgxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNS0xMSAgTmFva2kgVGFr
YW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dQ2xpY2sgZXZlbnQgaXMgbm90IGZpcmVk
IGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAgICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51
Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpkaXNw
YXRjaE1vdXNlVXBBbmRDbGljayk6IEFkZGVkIGJ1dCBkbyBub3RoaW5nLgorCiAyMDExLTA1LTEw
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBIYWppbWUgTW9yaXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1
dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgKaW5kZXggYzYxNjI2YS4uZWU0MzJlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5o
CkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlz
dEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hNb3VzZVVwQW5kQ2xpY2soY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQodW5zaWduZWQsIGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DbGVhcmVkKCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBpdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93407</attachid>
            <date>2011-05-12 23:48:16 -0700</date>
            <delta_ts>2011-05-24 21:37:09 -0700</delta_ts>
            <desc>EventHandler version</desc>
            <filename>test.patch</filename>
            <type>text/plain</type>
            <size>11875</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYWRmNTA4Li5hMWI1YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMDUtMTIgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNb3VzZSBidXR0b24gdXAgZXZlbnQgaXMgY29uc3VtZWQgYnkgc2VsZWN0IHBvcHVwIHdpbmRv
dy4KKyAgICAgICAgU28gdGhlIGV2ZW50IGlzIG5vdyBmb3J3YXJkZWQgdG8gdGhlIHNlbGVjdCBu
b2RlIGFuZCBjbGljayBhbmQgbW91c2UgZG93biBldmVudHMgYXJlIGZpcmVkLgorICAgICAgICBX
aGVuIHRoZSBldmVudCBpcyBmb3J3YXJkZWQsIHN0b3JlZCBtX2N1cnJlbnRQcm9jZXNzTW91c2VE
b3duUG9pbnQgaXMgdXNlZCBhcyB0aGUgbW91c2UgYnV0dG9uIHVwIHBvaW50LgorCisgICAgICAg
IE1hbnVhbCB0ZXN0IHdpdGggc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIG1hbnVhbC10ZXN0cy9zZWxlY3QtZWxlbWVudC1tb3VzZS1ldmVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOiBDYWxsIHNldEN1cnJl
bnRseVByb2Nlc3NlZE1vdXNlRG93blBvaW50KCkgdG8gc3RvcmUgdGhlIHBvaW50LgorICAgICAg
ICAqIHBsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiBBZGRlZCBkaXNwYXRjaE1vdXNlVXBBbmRDbGlj
aygpIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmFjY2VwdEluZGV4KTog
Q2hhbmdlZCB0byByZXR1cm4gdHJ1ZSBpZiB0aGUgaW5kZXggaXMgYWNjZXB0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6IEFkZGVkIGluaXRpYWxpemF0aW9uIGZvciBtX2N1
cnJlbnRQcm9jZXNzTW91c2VEb3duLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6
OmhpZGVQb3B1cCk6IEFkZGVkIGNsZWFyIGZvciBtX2N1cnJlbnRQcm9jZXNzTW91c2VEb3duLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OnNldEN1cnJlbnRseVByb2Nlc3NlZE1v
dXNlRG93blBvaW50KTogQWRkZWQgdG8gc3RvcmUgdGhlIHBvaW50LgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWVudUxpc3Q6OmRpc3BhdGNoTW91c2VVcEFuZENsaWNrKTogQWRkZWQgY2FsbGlu
ZyBkaXNwYXRjaE1vdXNlRXZlbnQoKSB0byBmb3J3YXJkIG1vdXNlIGJ1dHRvbiB1cCBhbmQgY2xp
Y2sgZXZlbnRzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6ZGlzcGF0Y2hNb3VzZVVwQW5kQ2xp
Y2spOiBBZGRlZCBidXQgZG8gbm90aGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6c2VsZWN0aW9uQ2hhbmdlZCk6IEFkZGVkIGEgc3BhY2UuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlbGVjdGlvbkNsZWFy
ZWQpOiBBZGRlZCBhIHNwYWNlLgorCiAyMDExLTA1LTEyICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNjA0YjhjMS4uMzUwYWYyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcApAQCAtNjkyLDYgKzY5MiwxMSBAQCB2b2lkIFNl
bGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0
YSYgZGF0YSwgRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBzZWxlY3Rp
b24gc28gaXQgY2FuIGJlIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uIHdoZW4gd2UgY2Fs
bCBvbkNoYW5nZSBkdXJpbmcgc2V0U2VsZWN0ZWRJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
Ly8gd2hpY2ggZ2V0cyBjYWxsZWQgZnJvbSBSZW5kZXJNZW51TGlzdDo6dmFsdWVDaGFuZ2VkLCB3
aGljaCBnZXRzIGNhbGxlZCBhZnRlciB0aGUgdXNlciBtYWtlcyBhIHNlbGVjdGlvbiBmcm9tIHRo
ZSBtZW51LgogICAgICAgICAgICAgICAgICAgICBzYXZlTGFzdFNlbGVjdGlvbihkYXRhLCBlbGVt
ZW50KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IGEgcG9wdXAgbWVudSBmb3Ig
c2VsZWN0IGVsZW1lbnRzLiBXaGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHNlbGVjdGVkIGl0ZW0s
CisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGZha2UgYSBtb3VzZSB1cCBldmVudCBieSB1c2lu
ZyB0aGlzIHN0b3JlZCBkb3duIGV2ZW50LgorICAgICAgICAgICAgICAgICAgICBNb3VzZUV2ZW50
KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgbWVudUxpc3QtPnNldEN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93blBvaW50
KEludFBvaW50KG1vdXNlRXZlbnQtPngoKSwgbW91c2VFdmVudC0+eSgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIG1lbnVMaXN0LT5zaG93UG9wdXAoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc2VsZWN0
LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9z
ZWxlY3QtZWxlbWVudC1tb3VzZS1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIxYzAzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51
YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbApAQCAtMCwwICsxLDM1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CitUaGlzIHRlc3QgaXMgdG8gbWFrZSBz
dXJlIHRoZSBtb3VzZSBldmVudHMgYXJlIGNvcnJlY3RseSBmaXJlZC4KKzxvbD4KKzxsaT5DbGlj
ayB0aGUgZm9sbG93aW5nIHNlbGVjdCBlbGVtZW50LgorPGxpPk1ha2Ugc3VyZSAiZG93biIgYWxl
cnQgcG9wcyB1cC4KKzxsaT5DbG9zZSB0aGUgYWxlcnQuCis8bGk+Q2hvb3NlIGFueSBudW1iZXIg
ZnJvbSBwdWxsIGRvd24gc2VsZWN0IGl0ZW1zIHdpdGggbW91c2UgY2xpY2suCis8bGk+TWFrZSBz
dXJlICJ1cCIgYWxlcnQgcG9wcyB1cCBhbmQgdGhlbiAiY2xpY2siIHBvcHMgdXAuCis8L29sPgor
PHNlbGVjdCBpZD1zIHNpemU9MT4KKzxvcHRpb24+MDwvb3B0aW9uPgorPG9wdGlvbj4xPC9vcHRp
b24+Cis8b3B0aW9uPjI8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhh
bmRsZXIoKSB7CisgIGFsZXJ0KCdkb3duJyk7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZXIyKGV2KSB7
CisgIGFsZXJ0KCdjbGljaycpOworfQorCitmdW5jdGlvbiBoYW5kbGVyMyhldikgeworICBhbGVy
dCgndXAnKTsKK30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3Rl
bmVyKCdtb3VzZXVwJywgaGFuZGxlcjMpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5h
ZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKTsKK2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyMik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BvcHVwTWVudUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xp
ZW50LmgKaW5kZXggZjMzYjllMi4uZTJjNTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UG9wdXBNZW51Q2xpZW50LmgKQEAgLTMzLDExICszMywxMyBAQCBjbGFzcyBGb250U2VsZWN0b3I7
CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsYWJsZUFy
ZWE7CitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKIGNsYXNzIFBvcHVwTWVudUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9wdXBNZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFs
IHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0g
dHJ1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1vdXNlVXBBbmRDbGljayhjb25z
dCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
bGVjdGlvbkNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNsZWFyZWQoKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcAppbmRleCA5NjVjY2Q1Li41ODg0NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC0xODUsOCArMTg1
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdEluZGV4KGludCBpbmRleCk7CiAKICAgICAv
LyBBY2NlcHRzIHRoZSBzZWxlY3RlZCBpbmRleCBhcyB0aGUgdmFsdWUgdG8gYmUgZGlzcGxheWVk
IGluIHRoZSA8c2VsZWN0PiB3aWRnZXQgb24KLSAgICAvLyB0aGUgd2ViIHBhZ2UsIGFuZCBjbG9z
ZXMgdGhlIHBvcHVwLgotICAgIHZvaWQgYWNjZXB0SW5kZXgoaW50IGluZGV4KTsKKyAgICAvLyB0
aGUgd2ViIHBhZ2UsIGFuZCBjbG9zZXMgdGhlIHBvcHVwLiBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW5k
ZXggaXMgYWNjZXB0ZWQuCisgICAgYm9vbCBhY2NlcHRJbmRleChpbnQgaW5kZXgpOwogCiAgICAg
Ly8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gKHNvIG5vIHJvdyBhcHBlYXJzIHNlbGVjdGVkKS4KICAg
ICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CkBAIC02NjIsNyArNjYyLDEwIEBAIGJvb2wgUG9wdXBM
aXN0Qm94OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQogICAgIGlmICghaXNQb2ludEluQm91bmRzKGV2ZW50LnBvcygpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBhY2NlcHRJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9z
KCkpKTsKKyAgICAvLyBNb3VzZSB1cCBldmVudCBpcyBjb25zdW1lZCBieSB0aGUgcG9wdXAgd2lu
ZG93LiBTbyB3ZSBmb3J3YXJkIHRoZSBldmVudCBhZ2FpbiB0byBmaXJlIG1vdXNlIGRvd24gYW5k
IGNsaWNrIGV2ZW50cy4KKyAgICBpZiAoYWNjZXB0SW5kZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50
LnBvcygpKSkpCisgICAgICAgIG1fcG9wdXBDbGllbnQtPmRpc3BhdGNoTW91c2VVcEFuZENsaWNr
KGV2ZW50KTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDU4LDIxICsxMDYxLDIxIEBA
IGludCBQb3B1cExpc3RCb3g6OnBvaW50VG9Sb3dJbmRleChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50
IGluZGV4KQorYm9vbCBQb3B1cExpc3RCb3g6OmFjY2VwdEluZGV4KGludCBpbmRleCkKIHsKICAg
ICAvLyBDbGVhciBtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gb25jZSB1c2VyIGFjY2VwdHMgdGhl
IHNlbGVjdGVkIGluZGV4LgogICAgIGlmIChtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPj0gMCkK
ICAgICAgICAgbV9hY2NlcHRlZEluZGV4T25BYmFuZG9uID0gLTE7CiAKICAgICBpZiAoaW5kZXgg
Pj0gbnVtSXRlbXMoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGlmIChtX3BvcHVwQ2xpZW50KSB7CiAgICAg
ICAgICAgICAvLyBFbnRlciBwcmVzc2VkIHdpdGggbm8gc2VsZWN0aW9uLCBqdXN0IGNsb3NlIHRo
ZSBwb3B1cC4KICAgICAgICAgICAgIGhpZGVQb3B1cCgpOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpc1NlbGVjdGFi
bGVJdGVtKGluZGV4KSkgewpAQCAtMTA4Myw3ICsxMDg2LDExIEBAIHZvaWQgUG9wdXBMaXN0Qm94
OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiAKICAgICAgICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4g
UG9wdXBNZW51Q2xpZW50IHdoYXQgaW5kZXggd2FzIHNlbGVjdGVkLgogICAgICAgICBtX3BvcHVw
Q2xpZW50LT52YWx1ZUNoYW5nZWQoaW5kZXgpOworCisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQb3B1cExpc3RCb3g6OnNlbGVjdElu
ZGV4KGludCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IGYzOTZiN2QuLjg4ZGU3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNTcsNiArNTcsNyBAQCBSZW5kZXJNZW51TGlzdDo6UmVu
ZGVyTWVudUxpc3QoRWxlbWVudCogZWxlbWVudCkKICAgICAsIG1fb3B0aW9uc1dpZHRoKDApCiAg
ICAgLCBtX2xhc3RTZWxlY3RlZEluZGV4KC0xKQogICAgICwgbV9wb3B1cElzVmlzaWJsZShmYWxz
ZSkKKyAgICAsIG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duKGZhbHNlKQogewogfQogCkBA
IC0zMDYsNiArMzA3LDI2IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmhpZGVQb3B1cCgpCiB7CiAg
ICAgaWYgKG1fcG9wdXApCiAgICAgICAgIG1fcG9wdXAtPmhpZGUoKTsKKworICAgIG1fY3VycmVu
dGx5UHJvY2Vzc2VkTW91c2VEb3duID0gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyTWVudUxpc3Q6
OnNldEN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93blBvaW50KGNvbnN0IEludFBvaW50JiBwKQor
eworICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duID0gdHJ1ZTsKKyAgICBtX2N1cnJl
bnRseVByb2Nlc3NlZE1vdXNlRG93blBvaW50ID0gcDsKK30KKwordm9pZCBSZW5kZXJNZW51TGlz
dDo6ZGlzcGF0Y2hNb3VzZVVwQW5kQ2xpY2soY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAobV9jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd24pIHsKKyAgICAgICAg
Ly8gT25seSBpZiB0aGUgbW91c2UgZG93biBpcyBwcmVzc2VkLCB3ZSBmb3J3YXJkIHRoZSBldmVu
dCBhZmx0ZXIgcmVwbGFjaW5nIHRoZSBtb3VzZSBwcmVzc2VkIGRvd24gcG9pbnQuCisgICAgICAg
IFBsYXRmb3JtTW91c2VFdmVudCBuZXdFdmVudCA9IGV2ZW50OworICAgICAgICBJbnRQb2ludCYg
bmV3UG9pbnQgPSBjb25zdF9jYXN0PEludFBvaW50Jj4obmV3RXZlbnQucG9zKCkpOworICAgICAg
ICBuZXdQb2ludC5zZXRYKG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duUG9pbnQueCgpKTsK
KyAgICAgICAgbmV3UG9pbnQuc2V0WShtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93blBvaW50
LnkoKSk7CisgICAgICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChuZXdFdmVudCk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojp2YWx1
ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVPbkNoYW5nZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXggY2Q2ZTU2MS4uMGJkYTY0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKQEAgLTU5LDYgKzU5
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0
Q3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duUG9pbnQoY29uc3QgSW50UG9pbnQmKTsKKwogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtMTAzLDYgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHZhbHVl
U2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkUG9wT3ZlcigpIGNvbnN0IHsgcmV0dXJuICFQT1BVUF9NRU5VX1BVTExT
X0RPV047IH0KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRl
eCwgYm9vbCBmaXJlT25DaGFuZ2UgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hN
b3VzZVVwQW5kQ2xpY2soY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCB2
b2lkIHNlbGVjdGlvbkNoYW5nZWQodW5zaWduZWQsIGJvb2wpIHt9CiAgICAgdmlydHVhbCB2b2lk
IHNlbGVjdGlvbkNsZWFyZWQoKSB7fQogICAgIHZpcnR1YWwgRm9udFNlbGVjdG9yKiBmb250U2Vs
ZWN0b3IoKSBjb25zdDsKQEAgLTEzNiw2ICsxMzksOSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PFBvcHVwTWVudT4gbV9wb3B1cDsKICAgICBib29sIG1fcG9wdXBJc1Zpc2libGU7CisKKyAgICBi
b29sIG1fY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duOworICAgIEludFBvaW50IG1fY3VycmVu
dGx5UHJvY2Vzc2VkTW91c2VEb3duUG9pbnQ7CiB9OwogCiBpbmxpbmUgUmVuZGVyTWVudUxpc3Qq
IHRvUmVuZGVyTWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXgg
ZjQzYWExYi4uMzM3YzVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtMTE1LDggKzExNSw5IEBAIHByaXZh
dGU6CiAKICAgICAvLyBQb3B1cE1lbnVDbGllbnQgbWV0aG9kcwogICAgIHZpcnR1YWwgdm9pZCB2
YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkge30KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHt9CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoTW91c2VVcEFuZENsaWNrKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0
ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRl
bUxhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRl
bUljb24odW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggODVkOWNiNS4uM2M1YmIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wNS0xMiAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
Q2hyb21pdW1dQ2xpY2sgZXZlbnQgaXMgbm90IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2Mwor
CisgICAgICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OkF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpkaXNwYXRjaE1vdXNlVXBBbmRDbGljayk6IEFk
ZGVkIGJ1dCBkbyBub3RoaW5nLgorCiAyMDExLTA1LTExICBKb2huIEFiZC1FbC1NYWxlayAgPGph
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGll
bnQuaAppbmRleCBjNjE2MjZhLi5lZTQzMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgKQEAgLTcyLDYgKzcyLDcgQEAg
cHVibGljOgogCiAgICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50IG1ldGhvZHM6CiAgICAg
dmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2
ZW50cyA9IHRydWUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE1vdXNlVXBBbmRDbGljayhj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dGlvbkNsZWFyZWQoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGl0ZW1UZXh0KHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94743</attachid>
            <date>2011-05-24 21:40:04 -0700</date>
            <delta_ts>2011-05-25 18:28:31 -0700</delta_ts>
            <desc>Use focused node version.</desc>
            <filename>select-event.patch</filename>
            <type>text/plain</type>
            <size>11031</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhN2Q3ZTAyLi4zNjQ2NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDUtMTAgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNb3VzZSBidXR0b24gdXAgZXZlbnQgaXMgY29uc3VtZWQgYnkgc2VsZWN0IHBvcHVwIHdpbmRv
dy4KKyAgICAgICAgU28gdGhlIGV2ZW50IGlzIG5vdyBmb3J3YXJkZWQgdG8gdGhlIHNlbGVjdCBu
b2RlIGFuZCBjbGljayBhbmQgbW91c2UgZG93biBldmVudHMgYXJlIGZpcmVkLgorCisgICAgICAg
IE1hbnVhbCB0ZXN0IHdpdGggc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbC4KKworICAg
ICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKTogQWRkZWQgbmV3IHBhcmFtZXRlciBv
bmx5TW91c2VCdXR0b25Eb3duLgorICAgICAgICBUaGUgZmxhZyBpcyB0cnVlLCBtb3VzZSBkb3du
IGV2ZW50IGlzIG5vdCBzZW50LgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuaDogQWRk
ZWQgdGhlIHBhcmFtZXRlciBpbiBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKCkuCisgICAgICAgICog
ZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRD
bGljayk6IEFkZGVkIHRydWUgYXMgaXQgd2FzLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNpbXVsYXRlTW91c2VVcEFuZENsaWNrKTog
QWRkZWQgYnV0IGRvIG5vdGhpbmcuCisgICAgICAgICogbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVt
ZW50LW1vdXNlLWV2ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1BvcHVwTWVu
dUNsaWVudC5oOiBBZGRlZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIG1ldGhvZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cExpc3RCb3g6OmFjY2VwdEluZGV4KTogQWRkZWQgc2ltdWxhdGVNb3VzZVVw
QW5kQ2xpY2soKSBjYWxsLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6c2ltdWxhdGVNb3VzZVVwQW5kQ2xp
Y2spOiBBZGRlZCBjYWxsaW5nIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soKSB3aXRoIG9ubHlNb3Vz
ZUJ1dHRvbkRvd24gPT0gdHJ1ZSB0byBmb3J3YXJkIG1vdXNlIGJ1dHRvbiBkb3duIGV2ZW50Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6c2ltdWxhdGVNb3VzZVVwQW5kQ2xpY2spOiBBZGRlZCBi
dXQgZG8gbm90aGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6c2VsZWN0aW9uQ2hhbmdlZCk6IEFkZGVkIGEgc3BhY2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNlbGVjdGlvbkNsZWFyZWQpOiBBZGRlZCBh
IHNwYWNlLgorCiAyMDExLTA1LTA2ICBCcmV0dCBXaWxzb24gIDxicmV0dHdAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCmluZGV4IDJiNTcyODUuLjRhNjA4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogICAgIFNjb3BlZEV2ZW50UXVldWU6Omluc3RhbmNlKCktPmVucXVldWVFdmVudChldmVu
dCk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5v
ZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91
c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29rKQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJs
eWluZ0V2ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2ssIGJv
b2wgb25seU1vdXNlQnV0dG9uRG93bikKIHsKICAgICBpZiAobm9kZS0+ZGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVy
CiAgICAgZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MtPmFkZChub2RlKTsKIAogICAg
IC8vIHNlbmQgbW91c2Vkb3duIGFuZCBtb3VzZXVwIGJlZm9yZSB0aGUgY2xpY2ssIGlmIHJlcXVl
c3RlZAotICAgIGlmIChzZW5kTW91c2VFdmVudHMpCisgICAgaWYgKHNlbmRNb3VzZUV2ZW50cyAm
JiAhb25seU1vdXNlQnV0dG9uRG93bikKICAgICAgICAgZGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50
KFNpbXVsYXRlZE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQs
IG5vZGUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHVuZGVybHlpbmdFdmVudCkpOwogICAg
IG5vZGUtPnNldEFjdGl2ZSh0cnVlLCBzaG93UHJlc3NlZExvb2spOwogICAgIGlmIChzZW5kTW91
c2VFdmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggODhlOTc1Ni4u
MjEwOWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaApAQCAtNTEsNyArNTEs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZGlzcGF0Y2hFdmVudChOb2RlKiwgY29uc3Qg
RXZlbnREaXNwYXRjaE1lZGlhdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTY29wZWRF
dmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4pOwogCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hTaW11bGF0ZWRDbGljayhOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50
LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2spOworICAgIHN0YXRp
YyB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSosIFBhc3NSZWZQdHI8RXZlbnQ+IHVu
ZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29r
LCBib29sIG9ubHlNb3VzZUJ1dHRvbkRvd24pOwogCiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+KTsKICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBhZGp1c3RSZWxh
dGVkVGFyZ2V0KEV2ZW50KiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDQ0MjhmZmEuLmNjOTc1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI4NDIsNyArMjg0
Miw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluCiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTaW11
bGF0ZWRDbGljayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMs
IGJvb2wgc2hvd1ByZXNzZWRMb29rKQogewotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayh0aGlzLCBldmVudCwgc2VuZE1vdXNlRXZlbnRzLCBzaG93UHJlc3NlZExv
b2spOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayh0aGlzLCBl
dmVudCwgc2VuZE1vdXNlRXZlbnRzLCBzaG93UHJlc3NlZExvb2ssIGZhbHNlKTsKIH0KIAogYm9v
bCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDQ3MTQwNWQuLjlhYmM1ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaApAQCAtMTkyLDYgKzE5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZCgpOworICAgIHZpcnR1
YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3
aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNw
ZWN0QWxpZ25BdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIEZpbGVMaXN0KiBmaWxlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVtZW50LW1vdXNl
LWV2ZW50Lmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQt
bW91c2UtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMw
Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVj
dC1lbGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorVGhpcyB0ZXN0IGlzIHRvIG1ha2Ugc3VyZSB0aGUgbW91c2Ug
ZXZlbnRzIGFyZSBjb3JyZWN0bHkgZmlyZWQuCis8b2w+Cis8bGk+Q2xpY2sgdGhlIGZvbGxvd2lu
ZyBzZWxlY3QgZWxlbWVudC4KKzxsaT5NYWtlIHN1cmUgImRvd24iIGFsZXJ0IHBvcHMgdXAuCis8
bGk+Q2xvc2UgdGhlIGFsZXJ0LgorPGxpPkNob29zZSBhbnkgbnVtYmVyIGZyb20gcHVsbCBkb3du
IHNlbGVjdCBpdGVtcyB3aXRoIG1vdXNlIGNsaWNrLgorPGxpPk1ha2Ugc3VyZSAidXAiIGFsZXJ0
IHBvcHMgdXAgYW5kIHRoZW4gImNsaWNrIiBwb3BzIHVwLgorPC9vbD4KKzxzZWxlY3QgaWQ9cyBz
aXplPTE+Cis8b3B0aW9uPjA8L29wdGlvbj4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9wdGlvbj4y
PC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKCkgeworICBh
bGVydCgnZG93bicpOworfQorCitmdW5jdGlvbiBoYW5kbGVyMihldikgeworICBhbGVydCgnY2xp
Y2snKTsKK30KKworZnVuY3Rpb24gaGFuZGxlcjMoZXYpIHsKKyAgYWxlcnQoJ3VwJyk7Cit9CisK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcs
IGhhbmRsZXIzKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2Vkb3duJywgaGFuZGxlcik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcjIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oCmluZGV4IGYz
M2I5ZTIuLmRlYzVlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVw
TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFBvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+UG9wdXBNZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVD
aGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1ZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2
ZW50cyA9IHRydWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCmluZGV4IDk2NWNjZDUuLjRjOWMxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAg
LTEwODMsNiArMTA4Myw5IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5k
ZXgpCiAKICAgICAgICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4gUG9wdXBNZW51Q2xpZW50IHdoYXQg
aW5kZXggd2FzIHNlbGVjdGVkLgogICAgICAgICBtX3BvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQo
aW5kZXgpOworCisgICAgICAgIC8vIE1vdXNlIHVwIGV2ZW50IGlzIGNvbnN1bWVkIGJ5IHRoZSBw
b3B1cCB3aW5kb3cuIFNvIHdlIGZvcndhcmQgdGhlIGV2ZW50IGFnYWluIHRvIGZpcmUgbW91c2Ug
ZG93biBhbmQgY2xpY2sgZXZlbnRzLgorICAgICAgICBtX3BvcHVwQ2xpZW50LT5zaW11bGF0ZU1v
dXNlVXBBbmRDbGljaygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggZjM5NmI3ZC4uOGI3ZGNjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCkBAIC0zMDgsNiArMzA5LDExIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmhpZGVQb3B1cCgp
CiAgICAgICAgIG1fcG9wdXAtPmhpZGUoKTsKIH0KIAordm9pZCBSZW5kZXJNZW51TGlzdDo6c2lt
dWxhdGVNb3VzZVVwQW5kQ2xpY2soKQoreworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hT
aW11bGF0ZWRDbGljayhub2RlKCksIDAsIHRydWUsIHRydWUsIHRydWUpOworfQorCiB2b2lkIFJl
bmRlck1lbnVMaXN0Ojp2YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVP
bkNoYW5nZSkKIHsKICAgICAvLyBDaGVjayB0byBlbnN1cmUgYSBwYWdlIG5hdmlnYXRpb24gaGFz
IG5vdCBvY2N1cnJlZCB3aGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaAppbmRleCBjZDZlNTYxLi4xZmMzYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHZhbHVlU2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUG9wT3ZlcigpIGNvbnN0IHsgcmV0dXJuICFQT1BV
UF9NRU5VX1BVTExTX0RPV047IH0KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2ln
bmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFuZ2UgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2ltdWxhdGVNb3VzZVVwQW5kQ2xpY2soKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9u
Q2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkge30KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xl
YXJlZCgpIHt9CiAgICAgdmlydHVhbCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oCmluZGV4IGY0M2FhMWIuLmE2YWQ3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTEx
NSw4ICsxMTUsOSBAQCBwcml2YXRlOgogCiAgICAgLy8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMK
ICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBm
aXJlRXZlbnRzID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQodW5z
aWduZWQsIGJvb2wpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNsZWFyZWQoKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1UZXh0
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUxhYmVs
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbUljb24o
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MWQ4NDgyYi4uNTczZTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wNS0xMCAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21p
dW1dQ2xpY2sgZXZlbnQgaXMgbm90IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAg
ICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1
dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpzaW11bGF0ZU1vdXNlVXBBbmRDbGljayk6IEFkZGVkIGJ1
dCBkbyBub3RoaW5nLgorCiAyMDExLTA1LTA2ICBCcmV0dCBXaWxzb24gIDxicmV0dHdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuaAppbmRleCBj
NjE2MjZhLi5mYjE5Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
dXRvRmlsbFBvcHVwTWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lk
IHZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRydWUp
OworICAgIHZpcnR1YWwgdm9pZCBzaW11bGF0ZU1vdXNlVXBBbmRDbGljaygpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgaXRlbVRl
eHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94898</attachid>
            <date>2011-05-25 18:30:15 -0700</date>
            <delta_ts>2011-05-26 22:07:35 -0700</delta_ts>
            <desc>Use focused node version.</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>4784</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYjNhZjEyLi44YjJkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDUtMjQgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNYW51YWwgdGVzdCB3aXRoIHNlbGVjdC1lbGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwuCisKKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbDogQWRk
IHRvIGNoZWNrIHVwLCBkb3duIGNsaWNrIG1vdXNlIGV2ZW50IGFyZSBmaXJlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OlBvcHVwTGlzdEJveCk6IEFkZCBtX2ZvY3VzZWROb2RlIHRvIGZv
cndhcmQgbW91c2UgcmVsZWFzZSBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwQ29udGFp
bmVyOjpzaG93UG9wdXApOiBTZXQgbV9mb2N1c2VkTm9kZSBmcm9tIG1fZnJhbWVWaWV3LgorICAg
ICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6IEZv
cndhcmQgZXZlbnQgdG8gYWNjZXB0SW5kZXgoKS4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlz
dEJveDo6YWNjZXB0SW5kZXgpOiBBZGQgUGxhdGZvcm1Nb3VzZUV2ZW50IGFzIGEgcGFyYW1ldGVy
IHRvIGZvcndhcmQgdG8gbV9mb2N1c2VkTm9kZS4KKwogMjAxMS0wNS0yNCAgQWRhbSBLbGVpbiAg
PGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
ODcxNDUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc2VsZWN0LWVs
ZW1lbnQtbW91c2UtZXZlbnQuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9zZWxl
Y3QtZWxlbWVudC1tb3VzZS1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjQ2OWI1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwt
dGVzdHMvc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbApAQCAtMCwwICsxLDM1IEBACisg
PCFET0NUWVBFIGh0bWw+CisgPGh0bWw+CisgPGJvZHk+CisgVGhpcyB0ZXN0IGlzIHRvIG1ha2Ug
c3VyZSB0aGUgbW91c2UgZXZlbnRzIGFyZSBjb3JyZWN0bHkgZmlyZWQuCisgPG9sPgorIDxsaT5D
bGljayB0aGUgZm9sbG93aW5nIHNlbGVjdCBlbGVtZW50LgorIDxsaT5NYWtlIHN1cmUgImRvd24i
IGFsZXJ0IHBvcHMgdXAuCisgPGxpPkNsb3NlIHRoZSBhbGVydC4KKyA8bGk+Q2hvb3NlIGFueSBu
dW1iZXIgZnJvbSBwdWxsIGRvd24gc2VsZWN0IGl0ZW1zIHdpdGggbW91c2UgY2xpY2suCisgPGxp
Pk1ha2Ugc3VyZSAidXAiIGFsZXJ0IHBvcHMgdXAgYW5kIHRoZW4gImNsaWNrIiBwb3BzIHVwLgor
IDwvb2w+CisgPHNlbGVjdCBpZD1zIHNpemU9MT4KKyA8b3B0aW9uPjA8L29wdGlvbj4KKyA8b3B0
aW9uPjE8L29wdGlvbj4KKyA8b3B0aW9uPjI8L29wdGlvbj4KKyA8L3NlbGVjdD4KKyA8c2NyaXB0
PgorIGZ1bmN0aW9uIGhhbmRsZXIoKSB7CisgICBhbGVydCgnZG93bicpOworIH0KKyAKKyBmdW5j
dGlvbiBoYW5kbGVyMihldikgeworICAgYWxlcnQoJ2NsaWNrJyk7CisgfQorIAorIGZ1bmN0aW9u
IGhhbmRsZXIzKGV2KSB7CisgICBhbGVydCgndXAnKTsKKyB9CisgCisgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgaGFuZGxlcjMpOworIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywg
aGFuZGxlcik7CisgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIGhhbmRsZXIyKTsKKyA8L3NjcmlwdD4KKyA8L2JvZHk+CisgPC9odG1sPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21p
dW0uY3BwCmluZGV4IDVkZDdhZjguLjUxNmQzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTE2OCw2ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1fcmVwZWF0aW5nQ2hhcigwKQogICAgICAgICAs
IG1fbGFzdENoYXJUaW1lKDApCiAgICAgICAgICwgbV9tYXhXaW5kb3dXaWR0aChzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1heCgpKQorICAgICAgICAsIG1fZm9jdXNlZE5vZGUoMCkKICAgICB7
CiAgICAgICAgIHNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJhckFsd2F5c09mZiwgU2Nyb2xsYmFy
QWx3YXlzT2ZmKTsKICAgICB9CkBAIC0xODksNyArMTkwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IEFjY2VwdHMgdGhlIHNlbGVjdGVkIGluZGV4IGFzIHRoZSB2YWx1ZSB0byBiZSBkaXNwbGF5ZWQg
aW4gdGhlIDxzZWxlY3Q+IHdpZGdldCBvbgogICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3Nl
cyB0aGUgcG9wdXAuCi0gICAgdm9pZCBhY2NlcHRJbmRleChpbnQgaW5kZXgpOworICAgIHZvaWQg
YWNjZXB0SW5kZXgoaW50IGluZGV4LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQqIGV2ZW50ID0g
MCk7CiAKICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFwcGVhcnMgc2Vs
ZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKQEAgLTI3Nyw2ICsyNzgsOSBAQCBw
cml2YXRlOgogCiAgICAgLy8gSWYgd2lkdGggZXhlZWRzIHNjcmVlbiB3aWR0aCwgd2UgaGF2ZSB0
byBjbGlwIGl0LgogICAgIGludCBtX21heFdpbmRvd1dpZHRoOworCisgICAgLy8gVG8gZm9yd2Fy
ZCBsYXN0IG1vdXNlIHJlbGVhc2UgZXZlbnQuCisgICAgTm9kZSogbV9mb2N1c2VkTm9kZTsKIH07
CiAKIHN0YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3RydWN0UmVsYXRpdmVNb3VzZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZSwKQEAgLTQwNyw2ICs0MTEsNyBAQCBJbnRSZWN0
IFBvcHVwQ29udGFpbmVyOjpsYXlvdXRBbmRDYWxjdWxhdGVXaWRnZXRSZWN0KGludCB0YXJnZXRD
b250cm9sSGVpZ2h0LCBjbwogdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKEZyYW1lVmll
dyogdmlldykKIHsKICAgICBtX2ZyYW1lVmlldyA9IHZpZXc7CisgICAgbGlzdEJveCgpLT5tX2Zv
Y3VzZWROb2RlID0gbV9mcmFtZVZpZXctPmZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2Rl
KCk7CiAKICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2hyb21lQ2xpZW50ID0gY2hyb21lQ2xp
ZW50Q2hyb21pdW0oKTsKICAgICBpZiAoY2hyb21lQ2xpZW50KSB7CkBAIC02NzIsNyArNjc3LDgg
QEAgYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpc1BvaW50SW5Cb3VuZHMoZXZlbnQucG9z
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJ
bmRleChldmVudC5wb3MoKSkpOworICAgIGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJbmRleChldmVu
dC5wb3MoKSksICZldmVudCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTA2OCw3ICsx
MDc0LDcgQEAgaW50IFBvcHVwTGlzdEJveDo6cG9pbnRUb1Jvd0luZGV4KGNvbnN0IEludFBvaW50
JiBwb2ludCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJ
bmRleChpbnQgaW5kZXgpCit2b2lkIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQqIGV2ZW50KQogewogICAgIC8vIENsZWFyIG1fYWNj
ZXB0ZWRJbmRleE9uQWJhbmRvbiBvbmNlIHVzZXIgYWNjZXB0cyB0aGUgc2VsZWN0ZWQgaW5kZXgu
CiAgICAgaWYgKG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiA+PSAwKQpAQCAtMTA5Myw2ICsxMDk5
LDExIEBAIHZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiAKICAgICAg
ICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4gUG9wdXBNZW51Q2xpZW50IHdoYXQgaW5kZXggd2FzIHNl
bGVjdGVkLgogICAgICAgICBtX3BvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQoaW5kZXgpOworCisg
ICAgICAgIGlmIChldmVudCAmJiBtX2ZvY3VzZWROb2RlKSB7CisgICAgICAgICAgICBtX2ZvY3Vz
ZWROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoKmV2ZW50LCBldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50KTsKKyAgICAgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoTW91c2VFdmVudCgqZXZl
bnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95112</attachid>
            <date>2011-05-26 22:14:33 -0700</date>
            <delta_ts>2011-05-30 18:39:26 -0700</delta_ts>
            <desc>Change to use RefPtr.</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>5095</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDUzMGFjLi4yM2M3ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDUtMjYgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XUNsaWNrIGV2ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAg
ICBNYW51YWwgdGVzdCB3aXRoIHNlbGVjdC1lbGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwuCisKKyAg
ICAgICAgKiBtYW51YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwOiBB
ZGQgbV9mb2N1c2VkTm9kZSB0byBmb3J3YXJkIG1vdXNlIHJlbGVhc2UgZXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKTogU2V0IG1fZm9jdXNlZE5vZGUg
ZnJvbSBtX2ZyYW1lVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQpOiBDYWxsIGRpc3BhdGNoTW91c2VFdmVudCB0byBmb3J3YXJkIHRo
ZSBldmVudCBvbmx5IGlmIHNlbGVjdCBwb3B1cC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlz
dEJveDo6YWNjZXB0SW5kZXgpOiBDaGFuZ2UgdG8gcmV0dXJuIGFjY2VwdGVkIG9yIG5vdC4KKwog
MjAxMS0wNS0yNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg3NDQ0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVtZW50LW1vdXNlLWV2ZW50Lmh0bWwg
Yi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc2VsZWN0LWVsZW1lbnQtbW91c2UtZXZlbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMwMzc1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3NlbGVjdC1lbGVtZW50LW1v
dXNlLWV2ZW50Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorVGhpcyB0ZXN0IGlzIHRvIG1ha2Ugc3VyZSB0aGUgbW91c2UgZXZlbnRzIGFyZSBj
b3JyZWN0bHkgZmlyZWQuCis8b2w+Cis8bGk+Q2xpY2sgdGhlIGZvbGxvd2luZyBzZWxlY3QgZWxl
bWVudC4KKzxsaT5NYWtlIHN1cmUgImRvd24iIGFsZXJ0IHBvcHMgdXAuCis8bGk+Q2xvc2UgdGhl
IGFsZXJ0LgorPGxpPkNob29zZSBhbnkgbnVtYmVyIGZyb20gcHVsbCBkb3duIHNlbGVjdCBpdGVt
cyB3aXRoIG1vdXNlIGNsaWNrLgorPGxpPk1ha2Ugc3VyZSAidXAiIGFsZXJ0IHBvcHMgdXAgYW5k
IHRoZW4gImNsaWNrIiBwb3BzIHVwLgorPC9vbD4KKzxzZWxlY3QgaWQ9cyBzaXplPTE+Cis8b3B0
aW9uPjA8L29wdGlvbj4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9wdGlvbj4yPC9vcHRpb24+Cis8
L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKCkgeworICBhbGVydCgnZG93bicp
OworfQorCitmdW5jdGlvbiBoYW5kbGVyMihldikgeworICBhbGVydCgnY2xpY2snKTsKK30KKwor
ZnVuY3Rpb24gaGFuZGxlcjMoZXYpIHsKKyAgYWxlcnQoJ3VwJyk7Cit9CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZXIzKTsK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3du
JywgaGFuZGxlcik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVu
ZXIoJ2NsaWNrJywgaGFuZGxlcjIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKaW5kZXggNWRkN2FmOC4uNjU4OWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtMTg4LDggKzE4
OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3RJbmRleChpbnQgaW5kZXgpOwogCiAgICAg
Ly8gQWNjZXB0cyB0aGUgc2VsZWN0ZWQgaW5kZXggYXMgdGhlIHZhbHVlIHRvIGJlIGRpc3BsYXll
ZCBpbiB0aGUgPHNlbGVjdD4gd2lkZ2V0IG9uCi0gICAgLy8gdGhlIHdlYiBwYWdlLCBhbmQgY2xv
c2VzIHRoZSBwb3B1cC4KLSAgICB2b2lkIGFjY2VwdEluZGV4KGludCBpbmRleCk7CisgICAgLy8g
dGhlIHdlYiBwYWdlLCBhbmQgY2xvc2VzIHRoZSBwb3B1cC4gUmV0dXJucyB0cnVlIGlmIGluZGV4
IGlzIGFjY2VwdGVkLgorICAgIGJvb2wgYWNjZXB0SW5kZXgoaW50IGluZGV4KTsKIAogICAgIC8v
IENsZWFycyB0aGUgc2VsZWN0aW9uIChzbyBubyByb3cgYXBwZWFycyBzZWxlY3RlZCkuCiAgICAg
dm9pZCBjbGVhclNlbGVjdGlvbigpOwpAQCAtMjc3LDYgKzI3Nyw5IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBJZiB3aWR0aCBleGVlZHMgc2NyZWVuIHdpZHRoLCB3ZSBoYXZlIHRvIGNsaXAgaXQuCiAg
ICAgaW50IG1fbWF4V2luZG93V2lkdGg7CisKKyAgICAvLyBUbyBmb3J3YXJkIGxhc3QgbW91c2Ug
cmVsZWFzZSBldmVudC4KKyAgICBSZWZQdHI8Tm9kZT4gbV9mb2N1c2VkTm9kZTsKIH07CiAKIHN0
YXRpYyBQbGF0Zm9ybU1vdXNlRXZlbnQgY29uc3RydWN0UmVsYXRpdmVNb3VzZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZSwKQEAgLTQwNyw2ICs0MTAsNyBAQCBJbnRSZWN0IFBvcHVw
Q29udGFpbmVyOjpsYXlvdXRBbmRDYWxjdWxhdGVXaWRnZXRSZWN0KGludCB0YXJnZXRDb250cm9s
SGVpZ2h0LCBjbwogdm9pZCBQb3B1cENvbnRhaW5lcjo6c2hvd1BvcHVwKEZyYW1lVmlldyogdmll
dykKIHsKICAgICBtX2ZyYW1lVmlldyA9IHZpZXc7CisgICAgbGlzdEJveCgpLT5tX2ZvY3VzZWRO
b2RlID0gbV9mcmFtZVZpZXctPmZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CiAK
ICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSogY2hyb21lQ2xpZW50ID0gY2hyb21lQ2xpZW50Q2hy
b21pdW0oKTsKICAgICBpZiAoY2hyb21lQ2xpZW50KSB7CkBAIC02NzIsNyArNjc2LDE0IEBAIGJv
b2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQogICAgIGlmICghaXNQb2ludEluQm91bmRzKGV2ZW50LnBvcygpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhY2NlcHRJbmRleChwb2ludFRvUm93SW5kZXgo
ZXZlbnQucG9zKCkpKTsKKyAgICBpZiAoYWNjZXB0SW5kZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50
LnBvcygpKSkgJiYgbV9mb2N1c2VkTm9kZSAmJiBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS5t
ZW51VHlwZSgpID09IFBvcHVwTWVudVN0eWxlOjpTZWxlY3RQb3B1cCkgeworICAgICAgICBtX2Zv
Y3VzZWROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQpOworICAgICAgICBtX2ZvY3VzZWROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQs
IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKKyAgICB9CisKKyAgICAvLyBDbGVhciBtX2Zjb3N1
ZWROb2RlIGhlcmUsIGJlY2F1c2Ugd2UgY2Fubm90IGNsZWFyIGluIGhpZGVQb3B1cCgpIHdoaWNo
IGlzIGNhbGxlZCBiZWZvcmUgZGlzcGF0Y2hNb3VzZUV2ZW50KCkgaXMgY2FsbGVkLgorICAgIG1f
Zm9jdXNlZE5vZGUgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjgsMjEgKzEw
NzksMjEgQEAgaW50IFBvcHVwTGlzdEJveDo6cG9pbnRUb1Jvd0luZGV4KGNvbnN0IEludFBvaW50
JiBwb2ludCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJ
bmRleChpbnQgaW5kZXgpCitib29sIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4
KQogewogICAgIC8vIENsZWFyIG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiBvbmNlIHVzZXIgYWNj
ZXB0cyB0aGUgc2VsZWN0ZWQgaW5kZXguCiAgICAgaWYgKG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRv
biA+PSAwKQogICAgICAgICBtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPSAtMTsKIAogICAgIGlm
IChpbmRleCA+PSBudW1JdGVtcygpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQp
IHsKICAgICAgICAgICAgIC8vIEVudGVyIHByZXNzZWQgd2l0aCBubyBzZWxlY3Rpb24sIGp1c3Qg
Y2xvc2UgdGhlIHBvcHVwLgogICAgICAgICAgICAgaGlkZVBvcHVwKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlz
U2VsZWN0YWJsZUl0ZW0oaW5kZXgpKSB7CkBAIC0xMDkzLDcgKzExMDQsMTEgQEAgdm9pZCBQb3B1
cExpc3RCb3g6OmFjY2VwdEluZGV4KGludCBpbmRleCkKIAogICAgICAgICAvLyBUZWxsIHRoZSA8
c2VsZWN0PiBQb3B1cE1lbnVDbGllbnQgd2hhdCBpbmRleCB3YXMgc2VsZWN0ZWQuCiAgICAgICAg
IG1fcG9wdXBDbGllbnQtPnZhbHVlQ2hhbmdlZChpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUG9wdXBMaXN0Qm94Ojpz
ZWxlY3RJbmRleChpbnQgaW5kZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95389</attachid>
            <date>2011-05-30 18:49:39 -0700</date>
            <delta_ts>2011-05-31 19:12:06 -0700</delta_ts>
            <desc>Implement unit test</desc>
            <filename>select.patch</filename>
            <type>text/plain</type>
            <size>18403</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDUzMGFjLi5iNTk4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDUtMzAgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XSBDbGljayBldmVudCBpcyBub3QgZmlyZWQgZm9yIGEgbWVudWxpc3QgPHNlbGVjdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTYzCisKKyAgICAg
ICAgVGVzdHM6IFNlbGVjdEl0ZW1FdmVudEZpcmUsIFNlbGVjdEl0ZW1LZXlFdmVudCwgU2VsZWN0
SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlIGFuZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFu
Z2UgaW4gd2Via2l0X3VuaXRfdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKTogU2V0IG1fZm9jdXNlZE5vZGUgZnJvbSBtX2ZyYW1lVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiBDYWxsIGRp
c3BhdGNoTW91c2VFdmVudCB0byBmb3J3YXJkIHRoZSBldmVudCBvbmx5IGlmIHNlbGVjdCBwb3B1
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgpOiBDaGFuZ2Ug
dG8gcmV0dXJuIGFjY2VwdGVkIG9yIG5vdC4KKwogMjAxMS0wNS0yNiAgU2hlcmlmZiBCb3QgIDx3
ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjg3NDQ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDVkZDdhZjguLjZjZDM0N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0SW5kZXgo
aW50IGluZGV4KTsKIAogICAgIC8vIEFjY2VwdHMgdGhlIHNlbGVjdGVkIGluZGV4IGFzIHRoZSB2
YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldCBvbgotICAgIC8vIHRo
ZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuCi0gICAgdm9pZCBhY2NlcHRJbmRleChp
bnQgaW5kZXgpOworICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuIFJl
dHVybnMgdHJ1ZSBpZiBpbmRleCBpcyBhY2NlcHRlZC4KKyAgICBib29sIGFjY2VwdEluZGV4KGlu
dCBpbmRleCk7CiAKICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFwcGVh
cnMgc2VsZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKQEAgLTI3Nyw2ICsyNzcs
OSBAQCBwcml2YXRlOgogCiAgICAgLy8gSWYgd2lkdGggZXhlZWRzIHNjcmVlbiB3aWR0aCwgd2Ug
aGF2ZSB0byBjbGlwIGl0LgogICAgIGludCBtX21heFdpbmRvd1dpZHRoOworCisgICAgLy8gVG8g
Zm9yd2FyZCBsYXN0IG1vdXNlIHJlbGVhc2UgZXZlbnQuCisgICAgUmVmUHRyPE5vZGU+IG1fZm9j
dXNlZE5vZGU7CiB9OwogCiBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNvbnN0cnVjdFJlbGF0
aXZlTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGUsCkBAIC00MDcsNiArNDEw
LDcgQEAgSW50UmVjdCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0QW5kQ2FsY3VsYXRlV2lkZ2V0UmVj
dChpbnQgdGFyZ2V0Q29udHJvbEhlaWdodCwgY28KIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQ
b3B1cChGcmFtZVZpZXcqIHZpZXcpCiB7CiAgICAgbV9mcmFtZVZpZXcgPSB2aWV3OworICAgIGxp
c3RCb3goKS0+bV9mb2N1c2VkTm9kZSA9IG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpOwogCiAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNsaWVu
dCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNsaWVudCkgewpAQCAt
NjcyLDcgKzY3NiwxNiBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKICAgICBpZiAoIWlzUG9pbnRJbkJv
dW5kcyhldmVudC5wb3MoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYWNjZXB0SW5k
ZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50LnBvcygpKSk7CisgICAgLy8gTmVlZCB0byBjaGVjayBi
ZWZvcmUgY2FsbGluZyBhY2NlcHRJbmRleCgpLCBiZWNhdXNlIG1fcG9wdXBDbGllbnQgbWlnaHQg
YmUgcmVtb3ZlZCBpbiBhY2NlcHRJbmRleCgpIGNhbGxpbmcgYmVjYXVzZSBvZiBldmVudCBoYW5k
bGVyLgorICAgIGJvb2wgaXNTZWxlY3RQb3B1cCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgp
Lm1lbnVUeXBlKCkgPT0gUG9wdXBNZW51U3R5bGU6OlNlbGVjdFBvcHVwOworICAgIGlmIChhY2Nl
cHRJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zKCkpKSAmJiBtX2ZvY3VzZWROb2RlICYm
IGlzU2VsZWN0UG9wdXApIHsKKyAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hNb3VzZUV2
ZW50KGV2ZW50LCBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KTsKKyAgICAgICAgbV9mb2N1c2Vk
Tm9kZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7
CisKKyAgICAgICAgLy8gQ2xlYXIgbV9mb2N1c2VkTm9kZSBoZXJlLCBiZWNhdXNlIHdlIGNhbm5v
dCBjbGVhciBpbiBoaWRlUG9wdXAoKSB3aGljaCBpcyBjYWxsZWQgYmVmb3JlIGRpc3BhdGNoTW91
c2VFdmVudCgpIGlzIGNhbGxlZC4KKyAgICAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgfQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjgsMjEgKzEwODEsMjEgQEAgaW50IFBvcHVw
TGlzdEJveDo6cG9pbnRUb1Jvd0luZGV4KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICByZXR1
cm4gLTE7CiB9CiAKLXZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiti
b29sIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIENsZWFy
IG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiBvbmNlIHVzZXIgYWNjZXB0cyB0aGUgc2VsZWN0ZWQg
aW5kZXguCiAgICAgaWYgKG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiA+PSAwKQogICAgICAgICBt
X2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPSAtMTsKIAogICAgIGlmIChpbmRleCA+PSBudW1JdGVt
cygpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChp
bmRleCA8IDApIHsKICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQpIHsKICAgICAgICAgICAgIC8v
IEVudGVyIHByZXNzZWQgd2l0aCBubyBzZWxlY3Rpb24sIGp1c3QgY2xvc2UgdGhlIHBvcHVwLgog
ICAgICAgICAgICAgaGlkZVBvcHVwKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlzU2VsZWN0YWJsZUl0ZW0oaW5k
ZXgpKSB7CkBAIC0xMDkzLDcgKzExMDYsMTEgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmFjY2VwdElu
ZGV4KGludCBpbmRleCkKIAogICAgICAgICAvLyBUZWxsIHRoZSA8c2VsZWN0PiBQb3B1cE1lbnVD
bGllbnQgd2hhdCBpbmRleCB3YXMgc2VsZWN0ZWQuCiAgICAgICAgIG1fcG9wdXBDbGllbnQtPnZh
bHVlQ2hhbmdlZChpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFBvcHVwTGlzdEJveDo6c2VsZWN0SW5kZXgoaW50IGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNzE2NWJhLi45M2JmZmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTA1LTMwICBOYW9r
aSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQ2xpY2sgZXZlbnQgaXMgbm90
IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAgICAgICogdGVzdHMvUG9wdXBNZW51
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OlRlc3RQb3B1
cE1lbnVDbGllbnQpOiBJbml0aWFsaXplIG1fbm9kZS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKTogVG8gZmlyZSAnY2hhbmdlJyBldmVudCwgZm9y
d2FyZCB0aGUgZXZlbnQgbGlrZSBSZW5kZXJNZW51TGlzdC4KKyAgICAgICAgKFdlYktpdDo6VGVz
dFBvcHVwTWVudUNsaWVudDo6aXRlbUlzRW5hYmxlZCk6IENoYW5nZSB0byByZXR1cm4gdHJ1ZSBv
ciBmYWxzZSBhY2NvcmRpbmcgdG8gZGlzYWJsZWQgaXRlbSBvciBub3QuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OnNldERpc2FibGVkSW5kZXgpOiBTZXQgZGlzYWJsZWQg
aW5kZXggdG8gc2ltdWxhdGUgZGlzYWJsZWQgaXRlbS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6c2V0Rm9jdXNlZE5vZGUpOiBTZXQgZm9jdXNlZCBub2RlIHRvIGRpc3Bh
dGNoIHRoZSBldmVudC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6U2Vs
ZWN0UG9wdXBNZW51VGVzdCk6IEFkZCBiYXNlVVJMLgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQ
b3B1cE1lbnVUZXN0OjpUZWFyRG93bik6IEFkZCBVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpIGNh
bGwuCisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZCk6IFRvIHNpbXVsYXRlIGh0bWwgbG9hZCwgY2FsbCBSZWdpc3Rlck1vY2tlZFVSTCgp
LgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpzZXJ2ZVJlcXVlc3RzKTog
Q2FsbCBTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCkuCisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdFBvcHVwTWVudVRlc3Q6OmxvYWRGcmFtZSk6IFNpbXVsYXRlIGxvYWQgZnJhbWUgd2l0
aCB1cmwgc3RyaW5nLgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOiBJbXBsZW1lbnQgU2VsZWN0
SXRlbUV2ZW50RmlyZSwgU2VsZWN0SXRlbUtleUV2ZW50LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0
T25DaGFuZ2UgYW5kIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZS4KKyAgICAgICAgKiB0
ZXN0cy9kYXRhL3NlbGVjdF9ldmVudC5odG1sOiBBZGRlZCBmb3IgU2VsZWN0SXRlbUV2ZW50Rmly
ZSBhbmQgU2VsZWN0SXRlbUtleUV2ZW50LgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2
ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbDogQWRkZWQgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9u
Q2hhbmdlLgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGlj
ay5odG1sOiBBZGRlZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2UuCisKIDIwMTEtMDUt
MjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NzQ0NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCmluZGV4IDNiOWI3OWIuLjAwZDNhNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApAQCAtMzEs
MTkgKzMxLDMzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKICNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2hyb21pdW0u
aCIKKyNpbmNsdWRlICJTZWxlY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUg
IldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViU2NyZWVuSW5mby5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCisjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVz
dC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgog
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorI2lu
Y2x1ZGUgInY4LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKQEAgLTUzLDExICs2NywxNSBAQCBuYW1lc3BhY2UgewogY2xhc3MgVGVzdFBvcHVw
TWVudUNsaWVudCA6IHB1YmxpYyBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgogICAgIC8vIEl0
ZW0gYXQgaW5kZXggMCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LgotICAgIFRlc3RQb3B1cE1lbnVD
bGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCkgeyB9CisgICAgVGVzdFBvcHVwTWVudUNsaWVudCgp
IDogbV9zZWxlY3RJbmRleCgwKSwgbV9ub2RlKDApIHsgfQogICAgIHZpcnR1YWwgflRlc3RQb3B1
cE1lbnVDbGllbnQoKSB7fQogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWduZWQg
bGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKQogICAgIHsKICAgICAgICAgbV9zZWxl
Y3RJbmRleCA9IGxpc3RJbmRleDsKKyAgICAgICAgaWYgKG1fbm9kZSkgeworICAgICAgICAgICAg
U2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1l
bnQqPihtX25vZGUpKTsKKyAgICAgICAgICAgIHNlbGVjdC0+c2V0U2VsZWN0ZWRJbmRleEJ5VXNl
cihzZWxlY3QtPmxpc3RUb09wdGlvbkluZGV4KGxpc3RJbmRleCksIHRydWUsIGZpcmVFdmVudHMp
OworICAgICAgICB9CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKHVu
c2lnbmVkLCBib29sKSB7fQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DbGVhcmVkKCkge30K
QEAgLTcyLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1JY29uKHVu
c2lnbmVkKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0
ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1cm4gaXRlbVRleHQobGlz
dEluZGV4KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1BY2Nlc3NpYmlsaXR5VGV4dCh1bnNp
Z25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxpc3RJbmRleCk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRJbmRleFNldC5maW5kKGxpc3RJbmRl
eCkgPT0gbV9kaXNhYmxlZEluZGV4U2V0LmVuZCgpOyB9CiAgICAgdmlydHVhbCBQb3B1cE1lbnVT
dHlsZSBpdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAg
Rm9udCBmb250KEZvbnRQbGF0Zm9ybURhdGEoMTIuMCwgZmFsc2UsIGZhbHNlKSwgZmFsc2UpOwpA
QCAtOTIsMTQgKzExMCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBvcE92
ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZVNob3Vs
ZENoYW5nZU9uSG90VHJhY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KSB7IH0KLSAgICAKKwogICAg
IHZpcnR1YWwgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3QgeyByZXR1cm4gMDsg
fQotICAgIAorCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xs
YmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRy
b2xTaXplKSB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHNldERpc2FibGVkSW5kZXgodW5zaWdu
ZWQgaW5kZXgpIHsgbV9kaXNhYmxlZEluZGV4U2V0Lmluc2VydChpbmRleCk7IH0KKyAgICB2b2lk
IHNldEZvY3VzZWROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQorCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fc2VsZWN0SW5kZXg7CisgICAgc3RkOjpzZXQ8dW5zaWduZWQ+IG1f
ZGlzYWJsZWRJbmRleFNldDsKKyAgICBOb2RlKiBtX25vZGU7CiB9OwogCiBjbGFzcyBUZXN0V2Vi
V2lkZ2V0Q2xpZW50IDogcHVibGljIFdlYldpZGdldENsaWVudCB7CkBAIC0xNTAsNiArMTczLDcg
QEAgcHVibGljOgogY2xhc3MgU2VsZWN0UG9wdXBNZW51VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIHB1YmxpYzoKICAgICBTZWxlY3RQb3B1cE1lbnVUZXN0KCkKKyAgICAgICAgOiBiYXNl
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCiAgICAgewogICAgIH0KIApAQCAtMTY1LDYgKzE4
OSw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIG1fcG9wdXBNZW51ID0gMDsKICAgICAg
ICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3Rl
ckFsbE1vY2tlZFVSTHMoKTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUg
Y3VycmVudGx5IGlzIGEgc2VsZWN0IHBvcHVwIGluIHRoZSBXZWJWaWV3LgpAQCAtMjIwLDEyICsy
NDUsMzkgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KIAorICAgIHZvaWQgcmVn
aXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7Cisg
ICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25zZS5pbml0aWFs
aXplKCk7CisgICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKworICAg
ICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290
RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aCArPSAiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS8iOworICAgICAgICBmaWxlUGF0aCArPSBmaWxlTmFtZTsKKworICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwoV2ViVVJMKEdVUkwoYmFzZVVSTCAr
IGZpbGVOYW1lKSksIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9z
dXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorCisgICAg
dm9pZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5h
bWUpCisgICAgeworICAgICAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CisgICAgICAgIHVy
bFJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTChXZWJVUkwo
R1VSTChiYXNlVVJMICsgZmlsZU5hbWUpKSk7CisgICAgICAgIGZyYW1lLT5sb2FkUmVxdWVzdCh1
cmxSZXF1ZXN0KTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBUZXN0V2ViVmlld0NsaWVudCBt
X3dlYnZpZXdDbGllbnQ7CiAgICAgV2ViVmlld0ltcGwqIG1fd2ViVmlldzsKICAgICBUZXN0V2Vi
RnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKICAgICBUZXN0UG9wdXBNZW51Q2xpZW50IG1f
cG9wdXBNZW51Q2xpZW50OwogICAgIFJlZlB0cjxQb3B1cE1lbnU+IG1fcG9wdXBNZW51OworICAg
IHN0ZDo6c3RyaW5nIGJhc2VVUkw7CiB9OwogCiAvLyBUZXN0cyB0aGF0IHNob3cvaGlkZSBhbmQg
cmVwZWF0cy4gIFNlbGVjdCBwb3B1cHMgYXJlIHJldXNlZCBpbiB3ZWIgcGFnZXMgd2hlbgpAQCAt
MzUwLDQgKzQwMiwxMTQgQEAgVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1X
aXRoS2V5Ym9hcmRJdGVtQ2xpY2tPdXRzaWRlKQogICAgIEVYUEVDVF9FUSgyLCBzZWxlY3RlZElu
ZGV4KCkpOwogfQogCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbUV2ZW50
RmlyZSkKK3sKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoInNlbGVjdF9ldmVudC5odG1sIik7
CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudC5odG1s
Iik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9j
dXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUo
KSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKwor
ICAgIHNob3dQb3B1cCgpOworCisgICAgaW50IG1lbnVIZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVj
dFBvcHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUhlaWdodCAqIDAuNSBtZWFu
cyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAwLgorICAgIEludFBvaW50IHJv
dzFQb2ludCgyLCBtZW51SGVpZ2h0ICogMC41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25F
dmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQp
OworCisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOworCisgICAgLy8gbW91c2Vkb3duIGV2
bmV0IGlzIGhlbGQgYnkgc2VsZWN0IG5vZGUsIGFuZCB3ZSBkb24ndCBzaW11bGF0ZSB0aGUgZXZl
bnQgZm9yIHRoZSBub2RlLgorICAgIC8vIFNvIHdlIGNhbiBvbmx5IHNlZSBtb3VzZXVwIGFuZCBj
bGljayBldmVudC4KKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBzdGQ6OnN0cmluZyhlbGVt
ZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisKKyAgICAvLyBEaXNhYmxlIHRoZSBp
dGVtIGF0IGluZGV4IDEuCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0RGlzYWJsZWRJbmRleCgx
KTsKKworICAgIHNob3dQb3B1cCgpOworICAgIC8vIG1lbnVIZWlnaHQgKiAxLjUgbWVhbnMgdGhl
IFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4KKyAgICByb3cxUG9pbnQuc2V0WSht
ZW51SGVpZ2h0ICogMS41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9p
bnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgLy8g
VGhlIGl0ZW0gYXQgaW5kZXggMSBpcyBkaXNhYmxlZCwgc28gdGhlIHRleHQgc2hvdWxkIG5vdCBi
ZSBjaGFuZ2VkLgorICAgIEVYUEVDVF9TVFJFUSgidXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1l
bnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKKworICAgIHNob3dQb3B1cCgpOworICAg
IC8vIG1lbnVIZWlnaHQgKiAyLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQg
aW5kZXggMi4KKyAgICByb3cxUG9pbnQuc2V0WShtZW51SGVpZ2h0ICogMi41KTsKKyAgICBzaW11
bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNl
VXBFdmVudChyb3cxUG9pbnQpOworCisgICAgLy8gVGhlIGl0ZW0gaXMgY2hhbmdlZCB0byB0aGUg
aXRlbSBhdCBpbmRleCAyLCBmcm9tIGluZGV4IDAsIHNvIGNoYW5nZSBldmVudCBpcyBmaXJlZC4K
KyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2tjaGFuZ2V1cGNsaWNrIiwgc3RkOjpzdHJpbmcoZWxl
bWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCitURVNUX0YoU2VsZWN0UG9w
dXBNZW51VGVzdCwgU2VsZWN0SXRlbUtleUV2ZW50KQoreworICAgIHJlZ2lzdGVyTW9ja2VkVVJM
TG9hZCgic2VsZWN0X2V2ZW50Lmh0bWwiKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNl
dEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgIGxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5G
cmFtZSgpLCAic2VsZWN0X2V2ZW50Lmh0bWwiKTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAg
ICBtX3BvcHVwTWVudUNsaWVudC5zZXRGb2N1c2VkTm9kZShzdGF0aWNfY2FzdDxXZWJGcmFtZUlt
cGwqPihtX3dlYlZpZXctPm1haW5GcmFtZSgpKS0+ZnJhbWVWaWV3KCktPmZyYW1lKCktPmRvY3Vt
ZW50KCktPmZvY3VzZWROb2RlKCkpOworCisgICAgc2hvd1BvcHVwKCk7CisKKyAgICAvLyBTaXVt
dWxhdGUgdG8gY2hvb3NlIHRoZSBpdGVtIGF0IGluZGV4IDEgd2l0aCBrZXlib2FyZC4KKyAgICBz
aW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50
KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9SRVRVUk4pOworCisg
ICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOworICAgIC8vIFdlIG9ubHkgY2FuIHNlZSBjaGFu
Z2UgZXZlbnQgYnV0IG5vIG90aGVyIG1vdXNlIHJlbGF0ZWQgZXZlbnRzLgorICAgIEVYUEVDVF9T
VFJFUSgiY2hhbmdlIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNf
c3RyKCkpOworfQorCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVJlbW92
ZVNlbGVjdE9uQ2hhbmdlKQoreworICAgIC8vIE1ha2Ugc3VyZSBubyBjcmFzaCwgZXZlbiBpZiBz
ZWxlY3Qgbm9kZSBpcyBtb3JldmVkIG9uICdjaGFuZ2UnIGV2ZW50IGhhbmRsZXIuCisgICAgcmVn
aXN0ZXJNb2NrZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIik7
CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudF9yZW1v
dmVfb25fY2hhbmdlLmh0bWwiKTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICBtX3BvcHVw
TWVudUNsaWVudC5zZXRGb2N1c2VkTm9kZShzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dl
YlZpZXctPm1haW5GcmFtZSgpKS0+ZnJhbWVWaWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmZv
Y3VzZWROb2RlKCkpOworCisgICAgc2hvd1BvcHVwKCk7CisKKyAgICBpbnQgbWVudUhlaWdodCA9
IG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+bWVudUl0ZW1IZWlnaHQoKTsKKyAgICAvLyBtZW51
SGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEu
CisgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIG1lbnVIZWlnaHQgKiAxLjUpOworICAgIHNpbXVs
YXRlTGVmdE1vdXNlRG93bkV2ZW50KHJvdzFQb2ludCk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VV
cEV2ZW50KHJvdzFQb2ludCk7CisKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSBtX3dlYlZpZXct
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIik7CisgICAg
RVhQRUNUX1NUUkVRKCJjaGFuZ2UiLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0
ZjgoKSkuY19zdHIoKSk7Cit9CisKK1RFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJ
dGVtUmVtb3ZlU2VsZWN0T25DbGljaykKK3sKKyAgICAvLyBNYWtlIHN1cmUgbm8gY3Jhc2gsIGV2
ZW4gaWYgc2VsZWN0IG5vZGUgaXMgbW9yZXZlZCBvbiAnY2xpY2snIGV2ZW50IGhhbmRsZXIuCisg
ICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0
bWwiKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRy
dWUpOworICAgIGxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5GcmFtZSgpLCAic2VsZWN0X2V2ZW50
X3JlbW92ZV9vbl9jbGljay5odG1sIik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9w
b3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4o
bV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQb3B1cCgpOworCisgICAgaW50IG1lbnVIZWln
aHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8g
bWVudUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRl
eCAxLgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51SGVpZ2h0ICogMS41KTsKKyAgICBz
aW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1v
dXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJW
aWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOwor
ICAgIEVYUEVDVF9TVFJFUSgiY2xpY2siLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgp
LnV0ZjgoKSkuY19zdHIoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvc2VsZWN0X2V2ZW50Lmh0bWwgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvc2VsZWN0X2V2ZW50Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiYjAzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9zZWxlY3RfZXZlbnQuaHRtbApAQCAtMCwwICsx
LDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJtZXNzYWdl
Ij48L2Rpdj4KKzxzZWxlY3QgaWQ9InMiIGF1dG9mb2N1cz4KKzxvcHRpb24+MTwvb3B0aW9uPgor
PG9wdGlvbj4yPC9vcHRpb24+Cis8b3B0aW9uPjM8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGhhbmRsZXIoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVz
c2FnZScpLmlubmVyVGV4dCArPSAiZG93biI7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZXIyKGUpIHsK
KyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNsaWNr
IjsKK30KKworZnVuY3Rpb24gaGFuZGxlcjMoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbWVzc2FnZScpLmlubmVyVGV4dCArPSAidXAiOworfQorCitmdW5jdGlvbiBoYW5kbGVyNChl
KSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJj
aGFuZ2UiOworfQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVu
ZXIoJ21vdXNlZG93bicsIGhhbmRsZXIpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5h
ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIyKTsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZXIzKTsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGFuZGxlcjQp
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3NlbGVjdF9l
dmVudF9yZW1vdmVfb25fY2hhbmdlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iMjFjZjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0
bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ibWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9u
PjE8L29wdGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNoYW5nZSI7CisgIHNlbGVjdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJyk7CisgIHNlbGVjdC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHNlbGVjdCk7Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRM
aXN0ZW5lcignY2hhbmdlJywgaGFuZGxlcik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGljay5odG1sIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2xp
Y2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjUwMzZmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3NlbGVjdF9l
dmVudF9yZW1vdmVfb25fY2xpY2suaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJtZXNzYWdlIj48L2Rpdj4KKzxzZWxlY3QgaWQ9
InMiIGF1dG9mb2N1cz4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9wdGlvbj4yPC9vcHRpb24+Cis8
b3B0aW9uPjM8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhhbmRsZXIo
ZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpLmlubmVyVGV4dCArPSAi
Y2xpY2siOworICBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpOworICBzZWxl
Y3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWxlY3QpOworfQorCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95533</attachid>
            <date>2011-05-31 19:12:06 -0700</date>
            <delta_ts>2011-06-01 18:15:52 -0700</delta_ts>
            <desc>Fix some nits.</desc>
            <filename>select2.patch</filename>
            <type>text/plain</type>
            <size>15514</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmNwcAppbmRleCA1ZGQ3YWY4Li42Y2QzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC0xODgs
OCArMTg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdEluZGV4KGludCBpbmRleCk7CiAK
ICAgICAvLyBBY2NlcHRzIHRoZSBzZWxlY3RlZCBpbmRleCBhcyB0aGUgdmFsdWUgdG8gYmUgZGlz
cGxheWVkIGluIHRoZSA8c2VsZWN0PiB3aWRnZXQgb24KLSAgICAvLyB0aGUgd2ViIHBhZ2UsIGFu
ZCBjbG9zZXMgdGhlIHBvcHVwLgotICAgIHZvaWQgYWNjZXB0SW5kZXgoaW50IGluZGV4KTsKKyAg
ICAvLyB0aGUgd2ViIHBhZ2UsIGFuZCBjbG9zZXMgdGhlIHBvcHVwLiBSZXR1cm5zIHRydWUgaWYg
aW5kZXggaXMgYWNjZXB0ZWQuCisgICAgYm9vbCBhY2NlcHRJbmRleChpbnQgaW5kZXgpOwogCiAg
ICAgLy8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gKHNvIG5vIHJvdyBhcHBlYXJzIHNlbGVjdGVkKS4K
ICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CkBAIC0yNzcsNiArMjc3LDkgQEAgcHJpdmF0ZToK
IAogICAgIC8vIElmIHdpZHRoIGV4ZWVkcyBzY3JlZW4gd2lkdGgsIHdlIGhhdmUgdG8gY2xpcCBp
dC4KICAgICBpbnQgbV9tYXhXaW5kb3dXaWR0aDsKKworICAgIC8vIFRvIGZvcndhcmQgbGFzdCBt
b3VzZSByZWxlYXNlIGV2ZW50LgorICAgIFJlZlB0cjxOb2RlPiBtX2ZvY3VzZWROb2RlOwogfTsK
IAogc3RhdGljIFBsYXRmb3JtTW91c2VFdmVudCBjb25zdHJ1Y3RSZWxhdGl2ZU1vdXNlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBlLApAQCAtNDA3LDYgKzQxMCw3IEBAIEludFJlY3Qg
UG9wdXBDb250YWluZXI6OmxheW91dEFuZENhbGN1bGF0ZVdpZGdldFJlY3QoaW50IHRhcmdldENv
bnRyb2xIZWlnaHQsIGNvCiB2b2lkIFBvcHVwQ29udGFpbmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3
KiB2aWV3KQogewogICAgIG1fZnJhbWVWaWV3ID0gdmlldzsKKyAgICBsaXN0Qm94KCktPm1fZm9j
dXNlZE5vZGUgPSBtX2ZyYW1lVmlldy0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUo
KTsKIAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjaHJvbWVDbGllbnQgPSBjaHJvbWVDbGll
bnRDaHJvbWl1bSgpOwogICAgIGlmIChjaHJvbWVDbGllbnQpIHsKQEAgLTY3Miw3ICs2NzYsMTYg
QEAgYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpc1BvaW50SW5Cb3VuZHMoZXZlbnQucG9z
KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJ
bmRleChldmVudC5wb3MoKSkpOworICAgIC8vIE5lZWQgdG8gY2hlY2sgYmVmb3JlIGNhbGxpbmcg
YWNjZXB0SW5kZXgoKSwgYmVjYXVzZSBtX3BvcHVwQ2xpZW50IG1pZ2h0IGJlIHJlbW92ZWQgaW4g
YWNjZXB0SW5kZXgoKSBjYWxsaW5nIGJlY2F1c2Ugb2YgZXZlbnQgaGFuZGxlci4KKyAgICBib29s
IGlzU2VsZWN0UG9wdXAgPSBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS5tZW51VHlwZSgpID09
IFBvcHVwTWVudVN0eWxlOjpTZWxlY3RQb3B1cDsKKyAgICBpZiAoYWNjZXB0SW5kZXgocG9pbnRU
b1Jvd0luZGV4KGV2ZW50LnBvcygpKSkgJiYgbV9mb2N1c2VkTm9kZSAmJiBpc1NlbGVjdFBvcHVw
KSB7CisgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCk7CisgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNo
TW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpOworCisgICAgICAgIC8v
IENsZWFyIG1fZm9jdXNlZE5vZGUgaGVyZSwgYmVjYXVzZSB3ZSBjYW5ub3QgY2xlYXIgaW4gaGlk
ZVBvcHVwKCkgd2hpY2ggaXMgY2FsbGVkIGJlZm9yZSBkaXNwYXRjaE1vdXNlRXZlbnQoKSBpcyBj
YWxsZWQuCisgICAgICAgIG1fZm9jdXNlZE5vZGUgPSAwOworICAgIH0KKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xMDY4LDIxICsxMDgxLDIxIEBAIGludCBQb3B1cExpc3RCb3g6OnBvaW50
VG9Sb3dJbmRleChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIC0xOwogfQogCi12
b2lkIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4KQorYm9vbCBQb3B1cExpc3RC
b3g6OmFjY2VwdEluZGV4KGludCBpbmRleCkKIHsKICAgICAvLyBDbGVhciBtX2FjY2VwdGVkSW5k
ZXhPbkFiYW5kb24gb25jZSB1c2VyIGFjY2VwdHMgdGhlIHNlbGVjdGVkIGluZGV4LgogICAgIGlm
IChtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPj0gMCkKICAgICAgICAgbV9hY2NlcHRlZEluZGV4
T25BYmFuZG9uID0gLTE7CiAKICAgICBpZiAoaW5kZXggPj0gbnVtSXRlbXMoKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPCAwKSB7CiAg
ICAgICAgIGlmIChtX3BvcHVwQ2xpZW50KSB7CiAgICAgICAgICAgICAvLyBFbnRlciBwcmVzc2Vk
IHdpdGggbm8gc2VsZWN0aW9uLCBqdXN0IGNsb3NlIHRoZSBwb3B1cC4KICAgICAgICAgICAgIGhp
ZGVQb3B1cCgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIGlmIChpc1NlbGVjdGFibGVJdGVtKGluZGV4KSkgewpAQCAtMTA5
Myw3ICsxMTA2LDExIEBAIHZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5kZXgp
CiAKICAgICAgICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4gUG9wdXBNZW51Q2xpZW50IHdoYXQgaW5k
ZXggd2FzIHNlbGVjdGVkLgogICAgICAgICBtX3BvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQoaW5k
ZXgpOworCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogdm9pZCBQb3B1cExpc3RCb3g6OnNlbGVjdEluZGV4KGludCBpbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCmluZGV4IDNiOWI3OWIu
LmJlMmZmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBN
ZW51VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVU
ZXN0LmNwcApAQCAtMzEsMTkgKzMxLDMzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0Lmg+CiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAi
UG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUG9w
dXBNZW51Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJTZWxlY3RFbGVtZW50LmgiCisjaW5jbHVkZSAi
V2ViRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1w
bC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViU2NyZWVuSW5mby5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJW
aWV3SW1wbC5oIgorI2luY2x1ZGUgInY4LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTUzLDExICs2NywxNSBAQCBuYW1lc3BhY2Ugewog
Y2xhc3MgVGVzdFBvcHVwTWVudUNsaWVudCA6IHB1YmxpYyBQb3B1cE1lbnVDbGllbnQgewogcHVi
bGljOgogICAgIC8vIEl0ZW0gYXQgaW5kZXggMCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LgotICAg
IFRlc3RQb3B1cE1lbnVDbGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCkgeyB9CisgICAgVGVzdFBv
cHVwTWVudUNsaWVudCgpIDogbV9zZWxlY3RJbmRleCgwKSwgbV9ub2RlKDApIHsgfQogICAgIHZp
cnR1YWwgflRlc3RQb3B1cE1lbnVDbGllbnQoKSB7fQogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNo
YW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKQogICAgIHsK
ICAgICAgICAgbV9zZWxlY3RJbmRleCA9IGxpc3RJbmRleDsKKyAgICAgICAgaWYgKG1fbm9kZSkg
eworICAgICAgICAgICAgU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gdG9TZWxlY3RFbGVtZW50KHN0
YXRpY19jYXN0PEVsZW1lbnQqPihtX25vZGUpKTsKKyAgICAgICAgICAgIHNlbGVjdC0+c2V0U2Vs
ZWN0ZWRJbmRleEJ5VXNlcihzZWxlY3QtPmxpc3RUb09wdGlvbkluZGV4KGxpc3RJbmRleCksIHRy
dWUsIGZpcmVFdmVudHMpOworICAgICAgICB9CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBzZWxl
Y3Rpb25DaGFuZ2VkKHVuc2lnbmVkLCBib29sKSB7fQogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rp
b25DbGVhcmVkKCkge30KQEAgLTcyLDcgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIGl0ZW1JY29uKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGl0ZW1Ub29sVGlwKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1
cm4gaXRlbVRleHQobGlzdEluZGV4KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1BY2Nlc3Np
YmlsaXR5VGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxp
c3RJbmRleCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5h
YmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRJbmRleFNl
dC5maW5kKGxpc3RJbmRleCkgPT0gbV9kaXNhYmxlZEluZGV4U2V0LmVuZCgpOyB9CiAgICAgdmly
dHVhbCBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAog
ICAgIHsKICAgICAgICAgRm9udCBmb250KEZvbnRQbGF0Zm9ybURhdGEoMTIuMCwgZmFsc2UsIGZh
bHNlKSwgZmFsc2UpOwpAQCAtOTIsMTQgKzExMCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFBvcE92ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCB2YWx1ZVNob3VsZENoYW5nZU9uSG90VHJhY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KSB7
IH0KLSAgICAKKwogICAgIHZpcnR1YWwgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29u
c3QgeyByZXR1cm4gMDsgfQotICAgIAorCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJh
cj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24s
IFNjcm9sbGJhckNvbnRyb2xTaXplKSB7IHJldHVybiAwOyB9CiAKKyAgICB2b2lkIHNldERpc2Fi
bGVkSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9kaXNhYmxlZEluZGV4U2V0Lmluc2VydChpbmRl
eCk7IH0KKyAgICB2b2lkIHNldEZvY3VzZWROb2RlKE5vZGUqIG5vZGUpIHsgbV9ub2RlID0gbm9k
ZTsgfQorCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2VsZWN0SW5kZXg7CisgICAgc3RkOjpz
ZXQ8dW5zaWduZWQ+IG1fZGlzYWJsZWRJbmRleFNldDsKKyAgICBOb2RlKiBtX25vZGU7CiB9Owog
CiBjbGFzcyBUZXN0V2ViV2lkZ2V0Q2xpZW50IDogcHVibGljIFdlYldpZGdldENsaWVudCB7CkBA
IC0xNTAsNiArMTczLDcgQEAgcHVibGljOgogY2xhc3MgU2VsZWN0UG9wdXBNZW51VGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICBTZWxlY3RQb3B1cE1lbnVUZXN0KCkK
KyAgICAgICAgOiBiYXNlVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCiAgICAgewogICAgIH0K
IApAQCAtMTY1LDYgKzE4OSw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIG1fcG9wdXBN
ZW51ID0gMDsKICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKICAgICB9CiAKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlcmUgY3VycmVudGx5IGlzIGEgc2VsZWN0IHBvcHVwIGluIHRoZSBXZWJWaWV3
LgpAQCAtMjIwLDEyICsyNDUsMzkgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3dlYlZpZXctPnNl
bGVjdFBvcHVwKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0K
IAorICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxl
TmFtZSkKKyAgICB7CisgICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICBy
ZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0
L2h0bWwiKTsKKworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0
OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aCArPSAiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC8iOworICAgICAgICBmaWxlUGF0aCAr
PSBmaWxlTmFtZTsKKworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwo
V2ViVVJMKEdVUkwoYmFzZVVSTCArIGZpbGVOYW1lKSksIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZy
b21VVEY4KGZpbGVQYXRoKSk7CisgICAgfQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAg
ICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVl
c3RzKCk7CisgICAgfQorCisgICAgdm9pZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBXZWJVUkxSZXF1ZXN0IHVy
bFJlcXVlc3Q7CisgICAgICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgICAgICB1cmxS
ZXF1ZXN0LnNldFVSTChXZWJVUkwoR1VSTChiYXNlVVJMICsgZmlsZU5hbWUpKSk7CisgICAgICAg
IGZyYW1lLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAg
ICBUZXN0V2ViVmlld0NsaWVudCBtX3dlYnZpZXdDbGllbnQ7CiAgICAgV2ViVmlld0ltcGwqIG1f
d2ViVmlldzsKICAgICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKICAgICBU
ZXN0UG9wdXBNZW51Q2xpZW50IG1fcG9wdXBNZW51Q2xpZW50OwogICAgIFJlZlB0cjxQb3B1cE1l
bnU+IG1fcG9wdXBNZW51OworICAgIHN0ZDo6c3RyaW5nIGJhc2VVUkw7CiB9OwogCiAvLyBUZXN0
cyB0aGF0IHNob3cvaGlkZSBhbmQgcmVwZWF0cy4gIFNlbGVjdCBwb3B1cHMgYXJlIHJldXNlZCBp
biB3ZWIgcGFnZXMgd2hlbgpAQCAtMzUwLDQgKzQwMiwxMTQgQEAgVEVTVF9GKFNlbGVjdFBvcHVw
TWVudVRlc3QsIFNlbGVjdEl0ZW1XaXRoS2V5Ym9hcmRJdGVtQ2xpY2tPdXRzaWRlKQogICAgIEVY
UEVDVF9FUSgyLCBzZWxlY3RlZEluZGV4KCkpOwogfQogCitURVNUX0YoU2VsZWN0UG9wdXBNZW51
VGVzdCwgU2VsZWN0SXRlbUV2ZW50RmlyZSkKK3sKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
InNlbGVjdF9ldmVudC5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZh
U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUo
KSwgInNlbGVjdF9ldmVudC5odG1sIik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9w
b3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4o
bV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQb3B1cCgpOworCisgICAgaW50IG1lbnVIZWln
aHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8g
bWVudUhlaWdodCAqIDAuNSBtZWFucyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRl
eCAwLgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51SGVpZ2h0ICogMC41KTsKKyAgICBz
aW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1v
dXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJW
aWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOwor
CisgICAgLy8gbW91c2Vkb3duIGV2ZW50IGlzIGhlbGQgYnkgc2VsZWN0IG5vZGUsIGFuZCB3ZSBk
b24ndCBzaW11bGF0ZSB0aGUgZXZlbnQgZm9yIHRoZSBub2RlLgorICAgIC8vIFNvIHdlIGNhbiBv
bmx5IHNlZSBtb3VzZXVwIGFuZCBjbGljayBldmVudC4KKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xp
Y2siLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisK
KyAgICAvLyBEaXNhYmxlIHRoZSBpdGVtIGF0IGluZGV4IDEuCisgICAgbV9wb3B1cE1lbnVDbGll
bnQuc2V0RGlzYWJsZWRJbmRleCgxKTsKKworICAgIHNob3dQb3B1cCgpOworICAgIC8vIG1lbnVI
ZWlnaHQgKiAxLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4K
KyAgICByb3cxUG9pbnQuc2V0WShtZW51SGVpZ2h0ICogMS41KTsKKyAgICBzaW11bGF0ZUxlZnRN
b3VzZURvd25FdmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChy
b3cxUG9pbnQpOworCisgICAgLy8gVGhlIGl0ZW0gYXQgaW5kZXggMSBpcyBkaXNhYmxlZCwgc28g
dGhlIHRleHQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLgorICAgIEVYUEVDVF9TVFJFUSgidXBjbGlj
ayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKKwor
ICAgIHNob3dQb3B1cCgpOworICAgIC8vIG1lbnVIZWlnaHQgKiAyLjUgbWVhbnMgdGhlIFkgcG9z
aXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMi4KKyAgICByb3cxUG9pbnQuc2V0WShtZW51SGVp
Z2h0ICogMi41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOwor
ICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgLy8gVGhlIGl0
ZW0gaXMgY2hhbmdlZCB0byB0aGUgaXRlbSBhdCBpbmRleCAyLCBmcm9tIGluZGV4IDAsIHNvIGNo
YW5nZSBldmVudCBpcyBmaXJlZC4KKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2tjaGFuZ2V1cGNs
aWNrIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOwor
fQorCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbUtleUV2ZW50KQorewor
ICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgic2VsZWN0X2V2ZW50Lmh0bWwiKTsKKyAgICBtX3dl
YlZpZXctPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgIGxvYWRG
cmFtZShtX3dlYlZpZXctPm1haW5GcmFtZSgpLCAic2VsZWN0X2V2ZW50Lmh0bWwiKTsKKyAgICBz
ZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICBtX3BvcHVwTWVudUNsaWVudC5zZXRGb2N1c2VkTm9kZShz
dGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dlYlZpZXctPm1haW5GcmFtZSgpKS0+ZnJhbWVW
aWV3KCktPmZyYW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpOworCisgICAgc2hvd1Bv
cHVwKCk7CisKKyAgICAvLyBTaXVtdWxhdGUgdG8gY2hvb3NlIHRoZSBpdGVtIGF0IGluZGV4IDEg
d2l0aCBrZXlib2FyZC4KKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworICAg
IHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfRE9XTik7CisgICAgc2ltdWxhdGVLZXlEb3duRXZl
bnQoVktFWV9SRVRVUk4pOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5t
YWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOworICAgIC8v
IFdlIG9ubHkgY2FuIHNlZSBjaGFuZ2UgZXZlbnQgYnV0IG5vIG90aGVyIG1vdXNlIHJlbGF0ZWQg
ZXZlbnRzLgorICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5p
bm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCitURVNUX0YoU2VsZWN0UG9wdXBNZW51
VGVzdCwgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlKQoreworICAgIC8vIE1ha2Ugc3Vy
ZSBubyBjcmFzaCwgZXZlbiBpZiBzZWxlY3Qgbm9kZSBpcyByZW1vdmVkIG9uICdjaGFuZ2UnIGV2
ZW50IGhhbmRsZXIuCisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnRfcmVt
b3ZlX29uX2NoYW5nZS5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZh
U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUo
KSwgInNlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0bWwiKTsKKyAgICBzZXJ2ZVJlcXVl
c3RzKCk7CisKKyAgICBtX3BvcHVwTWVudUNsaWVudC5zZXRGb2N1c2VkTm9kZShzdGF0aWNfY2Fz
dDxXZWJGcmFtZUltcGwqPihtX3dlYlZpZXctPm1haW5GcmFtZSgpKS0+ZnJhbWVWaWV3KCktPmZy
YW1lKCktPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpOworCisgICAgc2hvd1BvcHVwKCk7CisK
KyAgICBpbnQgbWVudUhlaWdodCA9IG1fd2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+bWVudUl0ZW1I
ZWlnaHQoKTsKKyAgICAvLyBtZW51SGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9u
IHRoZSBpdGVtIGF0IGluZGV4IDEuCisgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIG1lbnVIZWln
aHQgKiAxLjUpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50KHJvdzFQb2ludCk7Cisg
ICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJvdzFQb2ludCk7CisKKyAgICBXZWJFbGVtZW50
IGVsZW1lbnQgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVsZW1lbnRC
eUlkKCJtZXNzYWdlIik7CisgICAgRVhQRUNUX1NUUkVRKCJjaGFuZ2UiLCBzdGQ6OnN0cmluZyhl
bGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7Cit9CisKK1RFU1RfRihTZWxlY3RQ
b3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DbGljaykKK3sKKyAgICAvLyBN
YWtlIHN1cmUgbm8gY3Jhc2gsIGV2ZW4gaWYgc2VsZWN0IG5vZGUgaXMgcmVtb3ZlZCBvbiAnY2xp
Y2snIGV2ZW50IGhhbmRsZXIuCisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKCJzZWxlY3RfZXZl
bnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwiKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNl
dEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgIGxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5G
cmFtZSgpLCAic2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGljay5odG1sIik7CisgICAgc2VydmVS
ZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUoc3RhdGlj
X2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygp
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQb3B1cCgp
OworCisgICAgaW50IG1lbnVIZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1lbnVJ
dGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBwb3NpdGlv
biBvbiB0aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51
SGVpZ2h0ICogMS41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQp
OworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgV2ViRWxl
bWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVt
ZW50QnlJZCgibWVzc2FnZSIpOworICAgIEVYUEVDVF9TVFJFUSgiY2xpY2siLCBzdGQ6OnN0cmlu
ZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAv
c2VsZWN0X2V2ZW50Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9w
dXAvc2VsZWN0X2V2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDRiYjAzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnQuaHRtbApAQCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJtZXNzYWdlIj48L2Rpdj4KKzxzZWxlY3Qg
aWQ9InMiIGF1dG9mb2N1cz4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9wdGlvbj4yPC9vcHRpb24+
Cis8b3B0aW9uPjM8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhhbmRs
ZXIoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpLmlubmVyVGV4dCAr
PSAiZG93biI7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZXIyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNsaWNrIjsKK30KKworZnVuY3Rpb24g
aGFuZGxlcjMoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpLmlubmVy
VGV4dCArPSAidXAiOworfQorCitmdW5jdGlvbiBoYW5kbGVyNChlKSB7CisgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJjaGFuZ2UiOworfQorCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhh
bmRsZXIpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdj
bGljaycsIGhhbmRsZXIyKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZXIzKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
JykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgaGFuZGxlcjQpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVf
b25fY2hhbmdlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAv
c2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iMjFjZjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0
bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0ibWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9u
PjE8L29wdGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3Nl
bGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNoYW5nZSI7CisgIHNlbGVjdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJyk7CisgIHNlbGVjdC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKHNlbGVjdCk7Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRM
aXN0ZW5lcignY2hhbmdlJywgaGFuZGxlcik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGljay5odG1s
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9y
ZW1vdmVfb25fY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
MjUwMzZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2xpY2suaHRtbApAQCAtMCwwICsxLDIw
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJtZXNzYWdlIj48
L2Rpdj4KKzxzZWxlY3QgaWQ9InMiIGF1dG9mb2N1cz4KKzxvcHRpb24+MTwvb3B0aW9uPgorPG9w
dGlvbj4yPC9vcHRpb24+Cis8b3B0aW9uPjM8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGhhbmRsZXIoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2Fn
ZScpLmlubmVyVGV4dCArPSAiY2xpY2siOworICBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncycpOworICBzZWxlY3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWxlY3QpOworfQor
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg
aGFuZGxlcik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95695</attachid>
            <date>2011-06-01 18:21:58 -0700</date>
            <delta_ts>2011-06-02 23:35:11 -0700</delta_ts>
            <desc>Added ChangeLog</desc>
            <filename>select2.patch</filename>
            <type>text/plain</type>
            <size>18461</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYzYxOTlmLi42YWQ0YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDYtMDEgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XSBDbGljayBldmVudCBpcyBub3QgZmlyZWQgZm9yIGEgbWVudWxpc3QgPHNlbGVjdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTYzCisKKyAgICAg
ICAgVGVzdHM6IFNlbGVjdEl0ZW1FdmVudEZpcmUsIFNlbGVjdEl0ZW1LZXlFdmVudCwgU2VsZWN0
SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlIGFuZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFu
Z2UgaW4gd2Via2l0X3VuaXRfdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKTogU2V0IG1fZm9jdXNlZE5vZGUgZnJvbSBtX2ZyYW1lVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiBDYWxsIGRp
c3BhdGNoTW91c2VFdmVudCB0byBmb3J3YXJkIHRoZSBldmVudCBvbmx5IGlmIHNlbGVjdCBwb3B1
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgpOiBDaGFuZ2Ug
dG8gcmV0dXJuIGFjY2VwdGVkIG9yIG5vdC4KKwogMjAxMS0wNS0zMCAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJVSUxEIEZJWCBmb3Igcjg3NjkyIHdpdGgg
IUVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCA1ZGQ3YWY4Li42Y2QzNDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCkBAIC0xODgsOCArMTg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
bGVjdEluZGV4KGludCBpbmRleCk7CiAKICAgICAvLyBBY2NlcHRzIHRoZSBzZWxlY3RlZCBpbmRl
eCBhcyB0aGUgdmFsdWUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSA8c2VsZWN0PiB3aWRnZXQgb24K
LSAgICAvLyB0aGUgd2ViIHBhZ2UsIGFuZCBjbG9zZXMgdGhlIHBvcHVwLgotICAgIHZvaWQgYWNj
ZXB0SW5kZXgoaW50IGluZGV4KTsKKyAgICAvLyB0aGUgd2ViIHBhZ2UsIGFuZCBjbG9zZXMgdGhl
IHBvcHVwLiBSZXR1cm5zIHRydWUgaWYgaW5kZXggaXMgYWNjZXB0ZWQuCisgICAgYm9vbCBhY2Nl
cHRJbmRleChpbnQgaW5kZXgpOwogCiAgICAgLy8gQ2xlYXJzIHRoZSBzZWxlY3Rpb24gKHNvIG5v
IHJvdyBhcHBlYXJzIHNlbGVjdGVkKS4KICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCk7CkBAIC0y
NzcsNiArMjc3LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIElmIHdpZHRoIGV4ZWVkcyBzY3JlZW4g
d2lkdGgsIHdlIGhhdmUgdG8gY2xpcCBpdC4KICAgICBpbnQgbV9tYXhXaW5kb3dXaWR0aDsKKwor
ICAgIC8vIFRvIGZvcndhcmQgbGFzdCBtb3VzZSByZWxlYXNlIGV2ZW50LgorICAgIFJlZlB0cjxO
b2RlPiBtX2ZvY3VzZWROb2RlOwogfTsKIAogc3RhdGljIFBsYXRmb3JtTW91c2VFdmVudCBjb25z
dHJ1Y3RSZWxhdGl2ZU1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBlLApAQCAt
NDA3LDYgKzQxMCw3IEBAIEludFJlY3QgUG9wdXBDb250YWluZXI6OmxheW91dEFuZENhbGN1bGF0
ZVdpZGdldFJlY3QoaW50IHRhcmdldENvbnRyb2xIZWlnaHQsIGNvCiB2b2lkIFBvcHVwQ29udGFp
bmVyOjpzaG93UG9wdXAoRnJhbWVWaWV3KiB2aWV3KQogewogICAgIG1fZnJhbWVWaWV3ID0gdmll
dzsKKyAgICBsaXN0Qm94KCktPm1fZm9jdXNlZE5vZGUgPSBtX2ZyYW1lVmlldy0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKIAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBj
aHJvbWVDbGllbnQgPSBjaHJvbWVDbGllbnRDaHJvbWl1bSgpOwogICAgIGlmIChjaHJvbWVDbGll
bnQpIHsKQEAgLTY3Miw3ICs2NzYsMTYgQEAgYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFp
c1BvaW50SW5Cb3VuZHMoZXZlbnQucG9zKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGFjY2VwdEluZGV4KHBvaW50VG9Sb3dJbmRleChldmVudC5wb3MoKSkpOworICAgIC8vIE5lZWQg
dG8gY2hlY2sgYmVmb3JlIGNhbGxpbmcgYWNjZXB0SW5kZXgoKSwgYmVjYXVzZSBtX3BvcHVwQ2xp
ZW50IG1pZ2h0IGJlIHJlbW92ZWQgaW4gYWNjZXB0SW5kZXgoKSBjYWxsaW5nIGJlY2F1c2Ugb2Yg
ZXZlbnQgaGFuZGxlci4KKyAgICBib29sIGlzU2VsZWN0UG9wdXAgPSBtX3BvcHVwQ2xpZW50LT5t
ZW51U3R5bGUoKS5tZW51VHlwZSgpID09IFBvcHVwTWVudVN0eWxlOjpTZWxlY3RQb3B1cDsKKyAg
ICBpZiAoYWNjZXB0SW5kZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50LnBvcygpKSkgJiYgbV9mb2N1
c2VkTm9kZSAmJiBpc1NlbGVjdFBvcHVwKSB7CisgICAgICAgIG1fZm9jdXNlZE5vZGUtPmRpc3Bh
dGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCk7CisgICAgICAg
IG1fZm9jdXNlZE5vZGUtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpOworCisgICAgICAgIC8vIENsZWFyIG1fZm9jdXNlZE5vZGUgaGVyZSwgYmVjYXVz
ZSB3ZSBjYW5ub3QgY2xlYXIgaW4gaGlkZVBvcHVwKCkgd2hpY2ggaXMgY2FsbGVkIGJlZm9yZSBk
aXNwYXRjaE1vdXNlRXZlbnQoKSBpcyBjYWxsZWQuCisgICAgICAgIG1fZm9jdXNlZE5vZGUgPSAw
OworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDY4LDIxICsxMDgxLDIxIEBA
IGludCBQb3B1cExpc3RCb3g6OnBvaW50VG9Sb3dJbmRleChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgcmV0dXJuIC0xOwogfQogCi12b2lkIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50
IGluZGV4KQorYm9vbCBQb3B1cExpc3RCb3g6OmFjY2VwdEluZGV4KGludCBpbmRleCkKIHsKICAg
ICAvLyBDbGVhciBtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gb25jZSB1c2VyIGFjY2VwdHMgdGhl
IHNlbGVjdGVkIGluZGV4LgogICAgIGlmIChtX2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPj0gMCkK
ICAgICAgICAgbV9hY2NlcHRlZEluZGV4T25BYmFuZG9uID0gLTE7CiAKICAgICBpZiAoaW5kZXgg
Pj0gbnVtSXRlbXMoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGlmIChtX3BvcHVwQ2xpZW50KSB7CiAgICAg
ICAgICAgICAvLyBFbnRlciBwcmVzc2VkIHdpdGggbm8gc2VsZWN0aW9uLCBqdXN0IGNsb3NlIHRo
ZSBwb3B1cC4KICAgICAgICAgICAgIGhpZGVQb3B1cCgpOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpc1NlbGVjdGFi
bGVJdGVtKGluZGV4KSkgewpAQCAtMTA5Myw3ICsxMTA2LDExIEBAIHZvaWQgUG9wdXBMaXN0Qm94
OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiAKICAgICAgICAgLy8gVGVsbCB0aGUgPHNlbGVjdD4g
UG9wdXBNZW51Q2xpZW50IHdoYXQgaW5kZXggd2FzIHNlbGVjdGVkLgogICAgICAgICBtX3BvcHVw
Q2xpZW50LT52YWx1ZUNoYW5nZWQoaW5kZXgpOworCisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBQb3B1cExpc3RCb3g6OnNlbGVjdElu
ZGV4KGludCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGMwZjIwMC4uNDMz
MmU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0w
Ni0wMSAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIENsaWNrIGV2
ZW50IGlzIG5vdCBmaXJlZCBmb3IgYSBtZW51bGlzdCA8c2VsZWN0PgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA1NjMKKworICAgICAgICAqIHRlc3Rz
L1BvcHVwTWVudVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXN0UG9wdXBNZW51Q2xpZW50
OjpUZXN0UG9wdXBNZW51Q2xpZW50KTogSW5pdGlhbGl6ZSBtX25vZGUuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OnZhbHVlQ2hhbmdlZCk6IFRvIGZpcmUgJ2NoYW5nZScg
ZXZlbnQsIGZvcndhcmQgdGhlIGV2ZW50IGxpa2UgUmVuZGVyTWVudUxpc3QuCisgICAgICAgIChX
ZWJLaXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6Oml0ZW1Jc0VuYWJsZWQpOiBDaGFuZ2UgdG8gcmV0
dXJuIHRydWUgb3IgZmFsc2UgYWNjb3JkaW5nIHRvIGRpc2FibGVkIGl0ZW0gb3Igbm90LgorICAg
ICAgICAoV2ViS2l0OjpUZXN0UG9wdXBNZW51Q2xpZW50OjpzZXREaXNhYmxlZEluZGV4KTogU2V0
IGRpc2FibGVkIGluZGV4IHRvIHNpbXVsYXRlIGRpc2FibGVkIGl0ZW0uCisgICAgICAgIChXZWJL
aXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OnNldEZvY3VzZWROb2RlKTogU2V0IGZvY3VzZWQgbm9k
ZSB0byBkaXNwYXRjaCB0aGUgZXZlbnQuCisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVu
dVRlc3Q6OlNlbGVjdFBvcHVwTWVudVRlc3QpOiBBZGQgYmFzZVVSTC4KKyAgICAgICAgKFdlYktp
dDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6VGVhckRvd24pOiBBZGQgVW5yZWdpc3RlckFsbE1vY2tl
ZFVSTHMoKSBjYWxsLgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpyZWdp
c3Rlck1vY2tlZFVSTExvYWQpOiBUbyBzaW11bGF0ZSBodG1sIGxvYWQsIGNhbGwgUmVnaXN0ZXJN
b2NrZWRVUkwoKS4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6c2VydmVS
ZXF1ZXN0cyk6IENhbGwgU2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpLgorICAgICAg
ICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0Ojpsb2FkRnJhbWUpOiBTaW11bGF0ZSBsb2Fk
IGZyYW1lIHdpdGggdXJsIHN0cmluZy4KKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKTogSW1wbGVt
ZW50IFNlbGVjdEl0ZW1FdmVudEZpcmUsIFNlbGVjdEl0ZW1LZXlFdmVudCwgU2VsZWN0SXRlbVJl
bW92ZVNlbGVjdE9uQ2hhbmdlIGFuZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2UuCisg
ICAgICAgICogdGVzdHMvZGF0YS9zZWxlY3RfZXZlbnQuaHRtbDogQWRkZWQgZm9yIFNlbGVjdEl0
ZW1FdmVudEZpcmUgYW5kIFNlbGVjdEl0ZW1LZXlFdmVudC4KKyAgICAgICAgKiB0ZXN0cy9kYXRh
L3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0bWw6IEFkZGVkIFNlbGVjdEl0ZW1SZW1v
dmVTZWxlY3RPbkNoYW5nZS4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3NlbGVjdF9ldmVudF9yZW1v
dmVfb25fY2xpY2suaHRtbDogQWRkZWQgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlLgor
CiAyMDExLTA1LTI3ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAppbmRleCAzYjliNzliLi5iZTJmZjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTMxLDE5
ICszMSwzMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiAjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2lu
Y2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgi
CisjaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUg
IldlYlNjcmVlbkluZm8uaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldl
YlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3Qu
aCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNp
bmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNs
dWRlICJ2OC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CkBAIC01MywxMSArNjcsMTUgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIFRlc3RQb3B1cE1l
bnVDbGllbnQgOiBwdWJsaWMgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBJdGVt
IGF0IGluZGV4IDAgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC4KLSAgICBUZXN0UG9wdXBNZW51Q2xp
ZW50KCkgOiBtX3NlbGVjdEluZGV4KDApIHsgfQorICAgIFRlc3RQb3B1cE1lbnVDbGllbnQoKSA6
IG1fc2VsZWN0SW5kZXgoMCksIG1fbm9kZSgwKSB7IH0KICAgICB2aXJ0dWFsIH5UZXN0UG9wdXBN
ZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxp
c3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1ZSkKICAgICB7CiAgICAgICAgIG1fc2VsZWN0
SW5kZXggPSBsaXN0SW5kZXg7CisgICAgICAgIGlmIChtX25vZGUpIHsKKyAgICAgICAgICAgIFNl
bGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obV9ub2RlKSk7CisgICAgICAgICAgICBzZWxlY3QtPnNldFNlbGVjdGVkSW5kZXhCeVVzZXIo
c2VsZWN0LT5saXN0VG9PcHRpb25JbmRleChsaXN0SW5kZXgpLCB0cnVlLCBmaXJlRXZlbnRzKTsK
KyAgICAgICAgfQogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNp
Z25lZCwgYm9vbCkge30KICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHt9CkBA
IC03Miw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtSWNvbih1bnNp
Z25lZCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBpdGVt
VG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxpc3RJ
bmRleCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWdu
ZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBpdGVtVGV4dChsaXN0SW5kZXgpOyB9Ci0gICAg
dmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlz
dEluZGV4KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkSW5kZXhTZXQuZmluZChsaXN0SW5kZXgp
ID09IG1fZGlzYWJsZWRJbmRleFNldC5lbmQoKTsgfQogICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5
bGUgaXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEZv
bnQgZm9udChGb250UGxhdGZvcm1EYXRhKDEyLjAsIGZhbHNlLCBmYWxzZSksIGZhbHNlKTsKQEAg
LTkyLDE0ICsxMTAsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQb3BPdmVy
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVTaG91bGRD
aGFuZ2VPbkhvdFRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGV4dEZyb21JdGVtKHVuc2lnbmVkIGxpc3RJbmRleCkgeyB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LSAgICAKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJh
cihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9s
U2l6ZSkgeyByZXR1cm4gMDsgfQogCisgICAgdm9pZCBzZXREaXNhYmxlZEluZGV4KHVuc2lnbmVk
IGluZGV4KSB7IG1fZGlzYWJsZWRJbmRleFNldC5pbnNlcnQoaW5kZXgpOyB9CisgICAgdm9pZCBz
ZXRGb2N1c2VkTm9kZShOb2RlKiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KKwogcHJpdmF0ZToK
ICAgICB1bnNpZ25lZCBtX3NlbGVjdEluZGV4OworICAgIHN0ZDo6c2V0PHVuc2lnbmVkPiBtX2Rp
c2FibGVkSW5kZXhTZXQ7CisgICAgTm9kZSogbV9ub2RlOwogfTsKIAogY2xhc3MgVGVzdFdlYldp
ZGdldENsaWVudCA6IHB1YmxpYyBXZWJXaWRnZXRDbGllbnQgewpAQCAtMTUwLDYgKzE3Myw3IEBA
IHB1YmxpYzoKIGNsYXNzIFNlbGVjdFBvcHVwTWVudVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgU2VsZWN0UG9wdXBNZW51VGVzdCgpCisgICAgICAgIDogYmFzZVVS
TCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKQogICAgIHsKICAgICB9CiAKQEAgLTE2NSw2ICsxODks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBtX3BvcHVwTWVudSA9IDA7CiAgICAgICAg
IG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJB
bGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGN1
cnJlbnRseSBpcyBhIHNlbGVjdCBwb3B1cCBpbiB0aGUgV2ViVmlldy4KQEAgLTIyMCwxMiArMjQ1
LDM5IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5k
bGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50KTsKICAgICB9CiAKKyAgICB2b2lkIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAg
ICAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6
ZSgpOworICAgICAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisKKyAgICAg
ICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERp
cigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvcG9wdXAvIjsKKyAgICAgICAgZmlsZVBhdGggKz0gZmlsZU5hbWU7CisKKyAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKFdlYlVSTChHVVJMKGJhc2VV
UkwgKyBmaWxlTmFtZSkpLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkp
OworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1ZXN0cygpCisgICAgeworICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIH0KKwor
ICAgIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZp
bGVOYW1lKQorICAgIHsKKyAgICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OworICAgICAg
ICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2Vi
VVJMKEdVUkwoYmFzZVVSTCArIGZpbGVOYW1lKSkpOworICAgICAgICBmcmFtZS0+bG9hZFJlcXVl
c3QodXJsUmVxdWVzdCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVGVzdFdlYlZpZXdDbGll
bnQgbV93ZWJ2aWV3Q2xpZW50OwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXc7CiAgICAgVGVz
dFdlYkZyYW1lQ2xpZW50IG1fd2ViRnJhbWVDbGllbnQ7CiAgICAgVGVzdFBvcHVwTWVudUNsaWVu
dCBtX3BvcHVwTWVudUNsaWVudDsKICAgICBSZWZQdHI8UG9wdXBNZW51PiBtX3BvcHVwTWVudTsK
KyAgICBzdGQ6OnN0cmluZyBiYXNlVVJMOwogfTsKIAogLy8gVGVzdHMgdGhhdCBzaG93L2hpZGUg
YW5kIHJlcGVhdHMuICBTZWxlY3QgcG9wdXBzIGFyZSByZXVzZWQgaW4gd2ViIHBhZ2VzIHdoZW4K
QEAgLTM1MCw0ICs0MDIsMTE0IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJ
dGVtV2l0aEtleWJvYXJkSXRlbUNsaWNrT3V0c2lkZSkKICAgICBFWFBFQ1RfRVEoMiwgc2VsZWN0
ZWRJbmRleCgpKTsKIH0KIAorVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1F
dmVudEZpcmUpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnQuaHRt
bCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1
ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnQu
aHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIG1fcG9wdXBNZW51Q2xpZW50LnNl
dEZvY3VzZWROb2RlKHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZy
YW1lKCkpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7
CisKKyAgICBzaG93UG9wdXAoKTsKKworICAgIGludCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5z
ZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgpOworICAgIC8vIG1lbnVIZWlnaHQgKiAwLjUg
bWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMC4KKyAgICBJbnRQb2lu
dCByb3cxUG9pbnQoMiwgbWVudUhlaWdodCAqIDAuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VE
b3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBv
aW50KTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKTsKKworICAgIC8vIG1vdXNlZG93
biBldmVudCBpcyBoZWxkIGJ5IHNlbGVjdCBub2RlLCBhbmQgd2UgZG9uJ3Qgc2ltdWxhdGUgdGhl
IGV2ZW50IGZvciB0aGUgbm9kZS4KKyAgICAvLyBTbyB3ZSBjYW4gb25seSBzZWUgbW91c2V1cCBh
bmQgY2xpY2sgZXZlbnQuCisgICAgRVhQRUNUX1NUUkVRKCJ1cGNsaWNrIiwgc3RkOjpzdHJpbmco
ZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworCisgICAgLy8gRGlzYWJsZSB0
aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldERpc2FibGVkSW5k
ZXgoMSk7CisKKyAgICBzaG93UG9wdXAoKTsKKyAgICAvLyBtZW51SGVpZ2h0ICogMS41IG1lYW5z
IHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEuCisgICAgcm93MVBvaW50LnNl
dFkobWVudUhlaWdodCAqIDEuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93
MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAg
IC8vIFRoZSBpdGVtIGF0IGluZGV4IDEgaXMgZGlzYWJsZWQsIHNvIHRoZSB0ZXh0IHNob3VsZCBu
b3QgYmUgY2hhbmdlZC4KKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBzdGQ6OnN0cmluZyhl
bGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisKKyAgICBzaG93UG9wdXAoKTsK
KyAgICAvLyBtZW51SGVpZ2h0ICogMi41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVt
IGF0IGluZGV4IDIuCisgICAgcm93MVBvaW50LnNldFkobWVudUhlaWdodCAqIDIuNSk7CisgICAg
c2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRN
b3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIC8vIFRoZSBpdGVtIGlzIGNoYW5nZWQgdG8g
dGhlIGl0ZW0gYXQgaW5kZXggMiwgZnJvbSBpbmRleCAwLCBzbyBjaGFuZ2UgZXZlbnQgaXMgZmly
ZWQuCisgICAgRVhQRUNUX1NUUkVRKCJ1cGNsaWNrY2hhbmdldXBjbGljayIsIHN0ZDo6c3RyaW5n
KGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVj
dFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1LZXlFdmVudCkKK3sKKyAgICByZWdpc3Rlck1vY2tl
ZFVSTExvYWQoInNlbGVjdF9ldmVudC5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygp
LT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5t
YWluRnJhbWUoKSwgInNlbGVjdF9ldmVudC5odG1sIik7CisgICAgc2VydmVSZXF1ZXN0cygpOwor
CisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5k
b2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQb3B1cCgpOworCisgICAgLy8g
U2l1bXVsYXRlIHRvIGNob29zZSB0aGUgaXRlbSBhdCBpbmRleCAxIHdpdGgga2V5Ym9hcmQuCisg
ICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9ET1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25F
dmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRlS2V5RG93bkV2ZW50KFZLRVlfUkVUVVJOKTsK
KworICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKTsKKyAgICAvLyBXZSBvbmx5IGNhbiBzZWUg
Y2hhbmdlIGV2ZW50IGJ1dCBubyBvdGhlciBtb3VzZSByZWxhdGVkIGV2ZW50cy4KKyAgICBFWFBF
Q1RfU1RSRVEoImNoYW5nZSIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgp
KS5jX3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1S
ZW1vdmVTZWxlY3RPbkNoYW5nZSkKK3sKKyAgICAvLyBNYWtlIHN1cmUgbm8gY3Jhc2gsIGV2ZW4g
aWYgc2VsZWN0IG5vZGUgaXMgcmVtb3ZlZCBvbiAnY2hhbmdlJyBldmVudCBoYW5kbGVyLgorICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgic2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRt
bCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1
ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnRf
cmVtb3ZlX29uX2NoYW5nZS5odG1sIik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9w
b3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4o
bV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQb3B1cCgpOworCisgICAgaW50IG1lbnVIZWln
aHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8g
bWVudUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRl
eCAxLgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51SGVpZ2h0ICogMS41KTsKKyAgICBz
aW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1v
dXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJW
aWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOwor
ICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQo
KS51dGY4KCkpLmNfc3RyKCkpOworfQorCitURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2Vs
ZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2xpY2spCit7CisgICAgLy8gTWFrZSBzdXJlIG5vIGNyYXNo
LCBldmVuIGlmIHNlbGVjdCBub2RlIGlzIHJlbW92ZWQgb24gJ2NsaWNrJyBldmVudCBoYW5kbGVy
LgorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgic2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGlj
ay5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxl
ZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9l
dmVudF9yZW1vdmVfb25fY2xpY2suaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAg
IG1fcG9wdXBNZW51Q2xpZW50LnNldEZvY3VzZWROb2RlKHN0YXRpY19jYXN0PFdlYkZyYW1lSW1w
bCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisKKyAgICBzaG93UG9wdXAoKTsKKworICAgIGludCBtZW51
SGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgpOworICAg
IC8vIG1lbnVIZWlnaHQgKiAxLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQg
aW5kZXggMS4KKyAgICBJbnRQb2ludCByb3cxUG9pbnQoMiwgbWVudUhlaWdodCAqIDEuNSk7Cisg
ICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxl
ZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1f
d2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2Ui
KTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsaWNrIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRl
eHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudC5odG1s
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YmIwMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAvc2VsZWN0
X2V2ZW50Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxi
b2R5PgorPGRpdiBpZD0ibWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+
Cis8b3B0aW9uPjE8L29wdGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRp
b24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImRvd24iOworfQorCitm
dW5jdGlvbiBoYW5kbGVyMihlKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdl
JykuaW5uZXJUZXh0ICs9ICJjbGljayI7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZXIzKGUpIHsKKyAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gInVwIjsKK30K
KworZnVuY3Rpb24gaGFuZGxlcjQoZSkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVz
c2FnZScpLmlubmVyVGV4dCArPSAiY2hhbmdlIjsKK30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVyKTsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyMik7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAn
LCBoYW5kbGVyMyk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVu
ZXIoJ2NoYW5nZScsIGhhbmRsZXI0KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1v
dmVfb25fY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIx
Y2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0
YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sCkBAIC0wLDAgKzEsMjAg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9Im1lc3NhZ2UiPjwv
ZGl2PgorPHNlbGVjdCBpZD0icyIgYXV0b2ZvY3VzPgorPG9wdGlvbj4xPC9vcHRpb24+Cis8b3B0
aW9uPjI8L29wdGlvbj4KKzxvcHRpb24+Mzwvb3B0aW9uPgorPC9zZWxlY3Q+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gaGFuZGxlcihlKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdl
JykuaW5uZXJUZXh0ICs9ICJjaGFuZ2UiOworICBzZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncycpOworICBzZWxlY3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWxlY3QpOworfQor
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScs
IGhhbmRsZXIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2xpY2suaHRtbCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1MDM2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3Rf
ZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ibWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlk
PSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9uPjE8L29wdGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgor
PG9wdGlvbj4zPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVy
KGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0g
ImNsaWNrIjsKKyAgc2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKTsKKyAgc2Vs
ZWN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2VsZWN0KTsKK30KKworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95858</attachid>
            <date>2011-06-02 23:41:51 -0700</date>
            <delta_ts>2011-06-06 19:13:10 -0700</delta_ts>
            <desc>Add WEBKIT_IMPLEMENTATION change</desc>
            <filename>select3.patch</filename>
            <type>text/plain</type>
            <size>18602</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MjcwOWY2Li5iNzc2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDYtMDEgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XSBDbGljayBldmVudCBpcyBub3QgZmlyZWQgZm9yIGEgbWVudWxpc3QgPHNlbGVjdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTYzCisKKyAgICAg
ICAgVGVzdHM6IFNlbGVjdEl0ZW1FdmVudEZpcmUsIFNlbGVjdEl0ZW1LZXlFdmVudCwgU2VsZWN0
SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlIGFuZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFu
Z2UgaW4gd2Via2l0X3VuaXRfdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKTogU2V0IG1fZm9jdXNlZE5vZGUgZnJvbSBtX2ZyYW1lVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiBDYWxsIGRp
c3BhdGNoTW91c2VFdmVudCB0byBmb3J3YXJkIHRoZSBldmVudCBvbmx5IGlmIHNlbGVjdCBwb3B1
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgpOiBDaGFuZ2Ug
dG8gcmV0dXJuIGFjY2VwdGVkIG9yIG5vdC4KKwogMjAxMS0wNS0yOCAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDVkZDdhZjguLjZjZDM0N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0SW5kZXgo
aW50IGluZGV4KTsKIAogICAgIC8vIEFjY2VwdHMgdGhlIHNlbGVjdGVkIGluZGV4IGFzIHRoZSB2
YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldCBvbgotICAgIC8vIHRo
ZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuCi0gICAgdm9pZCBhY2NlcHRJbmRleChp
bnQgaW5kZXgpOworICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuIFJl
dHVybnMgdHJ1ZSBpZiBpbmRleCBpcyBhY2NlcHRlZC4KKyAgICBib29sIGFjY2VwdEluZGV4KGlu
dCBpbmRleCk7CiAKICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFwcGVh
cnMgc2VsZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKQEAgLTI3Nyw2ICsyNzcs
OSBAQCBwcml2YXRlOgogCiAgICAgLy8gSWYgd2lkdGggZXhlZWRzIHNjcmVlbiB3aWR0aCwgd2Ug
aGF2ZSB0byBjbGlwIGl0LgogICAgIGludCBtX21heFdpbmRvd1dpZHRoOworCisgICAgLy8gVG8g
Zm9yd2FyZCBsYXN0IG1vdXNlIHJlbGVhc2UgZXZlbnQuCisgICAgUmVmUHRyPE5vZGU+IG1fZm9j
dXNlZE5vZGU7CiB9OwogCiBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNvbnN0cnVjdFJlbGF0
aXZlTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGUsCkBAIC00MDcsNiArNDEw
LDcgQEAgSW50UmVjdCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0QW5kQ2FsY3VsYXRlV2lkZ2V0UmVj
dChpbnQgdGFyZ2V0Q29udHJvbEhlaWdodCwgY28KIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQ
b3B1cChGcmFtZVZpZXcqIHZpZXcpCiB7CiAgICAgbV9mcmFtZVZpZXcgPSB2aWV3OworICAgIGxp
c3RCb3goKS0+bV9mb2N1c2VkTm9kZSA9IG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpOwogCiAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNsaWVu
dCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNsaWVudCkgewpAQCAt
NjcyLDcgKzY3NiwxNiBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKICAgICBpZiAoIWlzUG9pbnRJbkJv
dW5kcyhldmVudC5wb3MoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYWNjZXB0SW5k
ZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50LnBvcygpKSk7CisgICAgLy8gTmVlZCB0byBjaGVjayBi
ZWZvcmUgY2FsbGluZyBhY2NlcHRJbmRleCgpLCBiZWNhdXNlIG1fcG9wdXBDbGllbnQgbWlnaHQg
YmUgcmVtb3ZlZCBpbiBhY2NlcHRJbmRleCgpIGNhbGxpbmcgYmVjYXVzZSBvZiBldmVudCBoYW5k
bGVyLgorICAgIGJvb2wgaXNTZWxlY3RQb3B1cCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgp
Lm1lbnVUeXBlKCkgPT0gUG9wdXBNZW51U3R5bGU6OlNlbGVjdFBvcHVwOworICAgIGlmIChhY2Nl
cHRJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zKCkpKSAmJiBtX2ZvY3VzZWROb2RlICYm
IGlzU2VsZWN0UG9wdXApIHsKKyAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hNb3VzZUV2
ZW50KGV2ZW50LCBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KTsKKyAgICAgICAgbV9mb2N1c2Vk
Tm9kZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7
CisKKyAgICAgICAgLy8gQ2xlYXIgbV9mb2N1c2VkTm9kZSBoZXJlLCBiZWNhdXNlIHdlIGNhbm5v
dCBjbGVhciBpbiBoaWRlUG9wdXAoKSB3aGljaCBpcyBjYWxsZWQgYmVmb3JlIGRpc3BhdGNoTW91
c2VFdmVudCgpIGlzIGNhbGxlZC4KKyAgICAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgfQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjgsMjEgKzEwODEsMjEgQEAgaW50IFBvcHVw
TGlzdEJveDo6cG9pbnRUb1Jvd0luZGV4KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICByZXR1
cm4gLTE7CiB9CiAKLXZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiti
b29sIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIENsZWFy
IG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiBvbmNlIHVzZXIgYWNjZXB0cyB0aGUgc2VsZWN0ZWQg
aW5kZXguCiAgICAgaWYgKG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiA+PSAwKQogICAgICAgICBt
X2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPSAtMTsKIAogICAgIGlmIChpbmRleCA+PSBudW1JdGVt
cygpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChp
bmRleCA8IDApIHsKICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQpIHsKICAgICAgICAgICAgIC8v
IEVudGVyIHByZXNzZWQgd2l0aCBubyBzZWxlY3Rpb24sIGp1c3QgY2xvc2UgdGhlIHBvcHVwLgog
ICAgICAgICAgICAgaGlkZVBvcHVwKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlzU2VsZWN0YWJsZUl0ZW0oaW5k
ZXgpKSB7CkBAIC0xMDkzLDcgKzExMDYsMTEgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmFjY2VwdElu
ZGV4KGludCBpbmRleCkKIAogICAgICAgICAvLyBUZWxsIHRoZSA8c2VsZWN0PiBQb3B1cE1lbnVD
bGllbnQgd2hhdCBpbmRleCB3YXMgc2VsZWN0ZWQuCiAgICAgICAgIG1fcG9wdXBDbGllbnQtPnZh
bHVlQ2hhbmdlZChpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFBvcHVwTGlzdEJveDo6c2VsZWN0SW5kZXgoaW50IGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZDVkMWY3Li4yZjA3MDc0IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTA2LTAyICBOYW9r
aSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQ2xpY2sgZXZlbnQgaXMgbm90
IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAgICAgICogdGVzdHMvUG9wdXBNZW51
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OlRlc3RQb3B1
cE1lbnVDbGllbnQpOiBJbml0aWFsaXplIG1fbm9kZS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKTogVG8gZmlyZSAnY2hhbmdlJyBldmVudCwgZm9y
d2FyZCB0aGUgZXZlbnQgbGlrZSBSZW5kZXJNZW51TGlzdC4KKyAgICAgICAgKFdlYktpdDo6VGVz
dFBvcHVwTWVudUNsaWVudDo6aXRlbUlzRW5hYmxlZCk6IENoYW5nZSB0byByZXR1cm4gdHJ1ZSBv
ciBmYWxzZSBhY2NvcmRpbmcgdG8gZGlzYWJsZWQgaXRlbSBvciBub3QuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OnNldERpc2FibGVkSW5kZXgpOiBTZXQgZGlzYWJsZWQg
aW5kZXggdG8gc2ltdWxhdGUgZGlzYWJsZWQgaXRlbS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6c2V0Rm9jdXNlZE5vZGUpOiBTZXQgZm9jdXNlZCBub2RlIHRvIGRpc3Bh
dGNoIHRoZSBldmVudC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6U2Vs
ZWN0UG9wdXBNZW51VGVzdCk6IEFkZCBiYXNlVVJMLgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQ
b3B1cE1lbnVUZXN0OjpUZWFyRG93bik6IEFkZCBVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpIGNh
bGwuCisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZCk6IFRvIHNpbXVsYXRlIGh0bWwgbG9hZCwgY2FsbCBSZWdpc3Rlck1vY2tlZFVSTCgp
LgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpzZXJ2ZVJlcXVlc3RzKTog
Q2FsbCBTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCkuCisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdFBvcHVwTWVudVRlc3Q6OmxvYWRGcmFtZSk6IFNpbXVsYXRlIGxvYWQgZnJhbWUgd2l0
aCB1cmwgc3RyaW5nLgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOiBJbXBsZW1lbnQgU2VsZWN0
SXRlbUV2ZW50RmlyZSwgU2VsZWN0SXRlbUtleUV2ZW50LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0
T25DaGFuZ2UgYW5kIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZS4KKyAgICAgICAgKiB0
ZXN0cy9kYXRhL3NlbGVjdF9ldmVudC5odG1sOiBBZGRlZCBmb3IgU2VsZWN0SXRlbUV2ZW50Rmly
ZSBhbmQgU2VsZWN0SXRlbUtleUV2ZW50LgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2
ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbDogQWRkZWQgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9u
Q2hhbmdlLgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGlj
ay5odG1sOiBBZGRlZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2UuCisKIDIwMTEtMDYt
MDIgIEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
b3B1cE1lbnVUZXN0LmNwcAppbmRleCAzYjliNzliLi44OTI2YTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTI4LDIyICsyOCw0MCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjZGVm
aW5lIFdFQktJVF9JTVBMRU1FTlRBVElPTiAwCisjZW5kaWYKKwogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oPgogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgog
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCisjaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgor
I2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKKyNpbmNsdWRlICJX
ZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5o
IgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5o
IgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlICJ2OC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC01MywxMSArNzEsMTUgQEAgbmFt
ZXNwYWNlIHsKIGNsYXNzIFRlc3RQb3B1cE1lbnVDbGllbnQgOiBwdWJsaWMgUG9wdXBNZW51Q2xp
ZW50IHsKIHB1YmxpYzoKICAgICAvLyBJdGVtIGF0IGluZGV4IDAgaXMgc2VsZWN0ZWQgYnkgZGVm
YXVsdC4KLSAgICBUZXN0UG9wdXBNZW51Q2xpZW50KCkgOiBtX3NlbGVjdEluZGV4KDApIHsgfQor
ICAgIFRlc3RQb3B1cE1lbnVDbGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCksIG1fbm9kZSgwKSB7
IH0KICAgICB2aXJ0dWFsIH5UZXN0UG9wdXBNZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFsIHZv
aWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1
ZSkKICAgICB7CiAgICAgICAgIG1fc2VsZWN0SW5kZXggPSBsaXN0SW5kZXg7CisgICAgICAgIGlm
IChtX25vZGUpIHsKKyAgICAgICAgICAgIFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0
RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9ub2RlKSk7CisgICAgICAgICAgICBzZWxl
Y3QtPnNldFNlbGVjdGVkSW5kZXhCeVVzZXIoc2VsZWN0LT5saXN0VG9PcHRpb25JbmRleChsaXN0
SW5kZXgpLCB0cnVlLCBmaXJlRXZlbnRzKTsKKyAgICAgICAgfQogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkge30KICAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHt9CkBAIC03Miw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBpdGVtSWNvbih1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxpc3RJbmRleCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBp
dGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBp
dGVtVGV4dChsaXN0SW5kZXgpOyB9Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBtX2Rpc2Fi
bGVkSW5kZXhTZXQuZmluZChsaXN0SW5kZXgpID09IG1fZGlzYWJsZWRJbmRleFNldC5lbmQoKTsg
fQogICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRl
eCkgY29uc3QKICAgICB7CiAgICAgICAgIEZvbnQgZm9udChGb250UGxhdGZvcm1EYXRhKDEyLjAs
IGZhbHNlLCBmYWxzZSksIGZhbHNlKTsKQEAgLTkyLDE0ICsxMTQsMTkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQb3BPdmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVTaG91bGRDaGFuZ2VPbkhvdFRyYWNrKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEZyb21JdGVtKHVuc2lnbmVkIGxp
c3RJbmRleCkgeyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNlbGVj
dG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9y
aWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgeyByZXR1cm4gMDsgfQogCisgICAgdm9p
ZCBzZXREaXNhYmxlZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fZGlzYWJsZWRJbmRleFNldC5p
bnNlcnQoaW5kZXgpOyB9CisgICAgdm9pZCBzZXRGb2N1c2VkTm9kZShOb2RlKiBub2RlKSB7IG1f
bm9kZSA9IG5vZGU7IH0KKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NlbGVjdEluZGV4Owor
ICAgIHN0ZDo6c2V0PHVuc2lnbmVkPiBtX2Rpc2FibGVkSW5kZXhTZXQ7CisgICAgTm9kZSogbV9u
b2RlOwogfTsKIAogY2xhc3MgVGVzdFdlYldpZGdldENsaWVudCA6IHB1YmxpYyBXZWJXaWRnZXRD
bGllbnQgewpAQCAtMTUwLDYgKzE3Nyw3IEBAIHB1YmxpYzoKIGNsYXNzIFNlbGVjdFBvcHVwTWVu
dVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgU2VsZWN0UG9wdXBN
ZW51VGVzdCgpCisgICAgICAgIDogYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKQogICAg
IHsKICAgICB9CiAKQEAgLTE2NSw2ICsxOTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAg
ICBtX3BvcHVwTWVudSA9IDA7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICAgICAg
d2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGN1cnJlbnRseSBpcyBhIHNlbGVjdCBwb3B1cCBpbiB0
aGUgV2ViVmlldy4KQEAgLTIyMCwxMiArMjQ5LDM5IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV93
ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50
KTsKICAgICB9CiAKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsK
KyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgICAgICByZXNwb25zZS5zZXRNSU1F
VHlwZSgidGV4dC9odG1sIik7CisKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJr
aXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGgg
Kz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAvIjsKKyAgICAgICAg
ZmlsZVBhdGggKz0gZmlsZU5hbWU7CisKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKFdlYlVSTChHVVJMKGJhc2VVUkwgKyBmaWxlTmFtZSkpLCByZXNwb25zZSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1
ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNN
b2NrZWRSZXF1ZXN0cygpOworICAgIH0KKworICAgIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiBm
cmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgV2ViVVJM
UmVxdWVzdCB1cmxSZXF1ZXN0OworICAgICAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAg
ICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKEdVUkwoYmFzZVVSTCArIGZpbGVOYW1lKSkp
OworICAgICAgICBmcmFtZS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CisgICAgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgVGVzdFdlYlZpZXdDbGllbnQgbV93ZWJ2aWV3Q2xpZW50OwogICAgIFdlYlZp
ZXdJbXBsKiBtX3dlYlZpZXc7CiAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IG1fd2ViRnJhbWVDbGll
bnQ7CiAgICAgVGVzdFBvcHVwTWVudUNsaWVudCBtX3BvcHVwTWVudUNsaWVudDsKICAgICBSZWZQ
dHI8UG9wdXBNZW51PiBtX3BvcHVwTWVudTsKKyAgICBzdGQ6OnN0cmluZyBiYXNlVVJMOwogfTsK
IAogLy8gVGVzdHMgdGhhdCBzaG93L2hpZGUgYW5kIHJlcGVhdHMuICBTZWxlY3QgcG9wdXBzIGFy
ZSByZXVzZWQgaW4gd2ViIHBhZ2VzIHdoZW4KQEAgLTM1MCw0ICs0MDYsMTE0IEBAIFRFU1RfRihT
ZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtV2l0aEtleWJvYXJkSXRlbUNsaWNrT3V0c2lk
ZSkKICAgICBFWFBFQ1RfRVEoMiwgc2VsZWN0ZWRJbmRleCgpKTsKIH0KIAorVEVTVF9GKFNlbGVj
dFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1FdmVudEZpcmUpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnQuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+
bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnQuaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsK
KworICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldEZvY3VzZWROb2RlKHN0YXRpY19jYXN0PFdlYkZy
YW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisKKyAgICBzaG93UG9wdXAoKTsKKworICAgIGlu
dCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgp
OworICAgIC8vIG1lbnVIZWlnaHQgKiAwLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0
ZW0gYXQgaW5kZXggMC4KKyAgICBJbnRQb2ludCByb3cxUG9pbnQoMiwgbWVudUhlaWdodCAqIDAu
NSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11
bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVu
dCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1l
c3NhZ2UiKTsKKworICAgIC8vIG1vdXNlZG93biBldmVudCBpcyBoZWxkIGJ5IHNlbGVjdCBub2Rl
LCBhbmQgd2UgZG9uJ3Qgc2ltdWxhdGUgdGhlIGV2ZW50IGZvciB0aGUgbm9kZS4KKyAgICAvLyBT
byB3ZSBjYW4gb25seSBzZWUgbW91c2V1cCBhbmQgY2xpY2sgZXZlbnQuCisgICAgRVhQRUNUX1NU
UkVRKCJ1cGNsaWNrIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNf
c3RyKCkpOworCisgICAgLy8gRGlzYWJsZSB0aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIG1fcG9w
dXBNZW51Q2xpZW50LnNldERpc2FibGVkSW5kZXgoMSk7CisKKyAgICBzaG93UG9wdXAoKTsKKyAg
ICAvLyBtZW51SGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0
IGluZGV4IDEuCisgICAgcm93MVBvaW50LnNldFkobWVudUhlaWdodCAqIDEuNSk7CisgICAgc2lt
dWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3Vz
ZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIC8vIFRoZSBpdGVtIGF0IGluZGV4IDEgaXMgZGlz
YWJsZWQsIHNvIHRoZSB0ZXh0IHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBFWFBFQ1RfU1RS
RVEoInVwY2xpY2siLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19z
dHIoKSk7CisKKyAgICBzaG93UG9wdXAoKTsKKyAgICAvLyBtZW51SGVpZ2h0ICogMi41IG1lYW5z
IHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDIuCisgICAgcm93MVBvaW50LnNl
dFkobWVudUhlaWdodCAqIDIuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93
MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAg
IC8vIFRoZSBpdGVtIGlzIGNoYW5nZWQgdG8gdGhlIGl0ZW0gYXQgaW5kZXggMiwgZnJvbSBpbmRl
eCAwLCBzbyBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQuCisgICAgRVhQRUNUX1NUUkVRKCJ1cGNsaWNr
Y2hhbmdldXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5j
X3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1LZXlF
dmVudCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoInNlbGVjdF9ldmVudC5odG1sIik7
CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudC5odG1s
Iik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9j
dXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUo
KSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKwor
ICAgIHNob3dQb3B1cCgpOworCisgICAgLy8gU2l1bXVsYXRlIHRvIGNob29zZSB0aGUgaXRlbSBh
dCBpbmRleCAxIHdpdGgga2V5Ym9hcmQuCisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9E
T1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRl
S2V5RG93bkV2ZW50KFZLRVlfUkVUVVJOKTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1f
d2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2Ui
KTsKKyAgICAvLyBXZSBvbmx5IGNhbiBzZWUgY2hhbmdlIGV2ZW50IGJ1dCBubyBvdGhlciBtb3Vz
ZSByZWxhdGVkIGV2ZW50cy4KKyAgICBFWFBFQ1RfU1RSRVEoImNoYW5nZSIsIHN0ZDo6c3RyaW5n
KGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVj
dFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZSkKK3sKKyAgICAv
LyBNYWtlIHN1cmUgbm8gY3Jhc2gsIGV2ZW4gaWYgc2VsZWN0IG5vZGUgaXMgcmVtb3ZlZCBvbiAn
Y2hhbmdlJyBldmVudCBoYW5kbGVyLgorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgic2VsZWN0
X2V2ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+
bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIik7CisgICAg
c2VydmVSZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUo
c3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1l
VmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQ
b3B1cCgpOworCisgICAgaW50IG1lbnVIZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCkt
Pm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBw
b3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIEludFBvaW50IHJvdzFQb2ludCgy
LCBtZW51SGVpZ2h0ICogMS41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cx
UG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAg
V2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5n
ZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOworICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgc3Rk
OjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCitURVNU
X0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2xpY2spCit7
CisgICAgLy8gTWFrZSBzdXJlIG5vIGNyYXNoLCBldmVuIGlmIHNlbGVjdCBub2RlIGlzIHJlbW92
ZWQgb24gJ2NsaWNrJyBldmVudCBoYW5kbGVyLgorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgi
c2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGljay5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0
aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJW
aWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudF9yZW1vdmVfb25fY2xpY2suaHRtbCIpOwor
ICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldEZvY3VzZWRO
b2RlKHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5m
cmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisKKyAgICBz
aG93UG9wdXAoKTsKKworICAgIGludCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1
cCgpLT5tZW51SXRlbUhlaWdodCgpOworICAgIC8vIG1lbnVIZWlnaHQgKiAxLjUgbWVhbnMgdGhl
IFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4KKyAgICBJbnRQb2ludCByb3cxUG9p
bnQoMiwgbWVudUhlaWdodCAqIDEuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQo
cm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKwor
ICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsaWNrIiwg
c3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3BvcHVwL3NlbGVjdF9ldmVudC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA0YmIwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvcG9wdXAvc2VsZWN0X2V2ZW50Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ibWVzc2FnZSI+PC9kaXY+
Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9uPjE8L29wdGlvbj4KKzxvcHRpb24+
Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5p
bm5lclRleHQgKz0gImRvd24iOworfQorCitmdW5jdGlvbiBoYW5kbGVyMihlKSB7CisgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJjbGljayI7Cit9CisK
K2Z1bmN0aW9uIGhhbmRsZXIzKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3Nh
Z2UnKS5pbm5lclRleHQgKz0gInVwIjsKK30KKworZnVuY3Rpb24gaGFuZGxlcjQoZSkgeworICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpLmlubmVyVGV4dCArPSAiY2hhbmdlIjsK
K30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZWRvd24nLCBoYW5kbGVyKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRM
aXN0ZW5lcignY2xpY2snLCBoYW5kbGVyMik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycp
LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVyMyk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZXI0KTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZl
bnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIxY2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29u
X2NoYW5nZS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxkaXYgaWQ9Im1lc3NhZ2UiPjwvZGl2PgorPHNlbGVjdCBpZD0icyIgYXV0b2ZvY3Vz
PgorPG9wdGlvbj4xPC9vcHRpb24+Cis8b3B0aW9uPjI8L29wdGlvbj4KKzxvcHRpb24+Mzwvb3B0
aW9uPgorPC9zZWxlY3Q+Cis8c2NyaXB0PgorZnVuY3Rpb24gaGFuZGxlcihlKSB7CisgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJjaGFuZ2UiOworICBz
ZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpOworICBzZWxlY3QucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChzZWxlY3QpOworfQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycp
LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZXIpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25f
Y2xpY2suaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxl
Y3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMzI1MDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwKQEAg
LTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
bWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9uPjE8L29w
dGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3NlbGVjdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNsaWNrIjsKKyAgc2VsZWN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3MnKTsKKyAgc2VsZWN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2Vs
ZWN0KTsKK30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIGhhbmRsZXIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="89433"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96177</attachid>
            <date>2011-06-06 19:13:10 -0700</date>
            <delta_ts>2011-06-07 02:44:37 -0700</delta_ts>
            <desc>Add PopupMenuTest.cpp into WebKit.gyp</desc>
            <filename>select4.patch</filename>
            <type>text/plain</type>
            <size>19229</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MjcwOWY2Li5iNzc2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDYtMDEgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XSBDbGljayBldmVudCBpcyBub3QgZmlyZWQgZm9yIGEgbWVudWxpc3QgPHNlbGVjdD4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNTYzCisKKyAgICAg
ICAgVGVzdHM6IFNlbGVjdEl0ZW1FdmVudEZpcmUsIFNlbGVjdEl0ZW1LZXlFdmVudCwgU2VsZWN0
SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlIGFuZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFu
Z2UgaW4gd2Via2l0X3VuaXRfdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6
c2hvd1BvcHVwKTogU2V0IG1fZm9jdXNlZE5vZGUgZnJvbSBtX2ZyYW1lVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOiBDYWxsIGRp
c3BhdGNoTW91c2VFdmVudCB0byBmb3J3YXJkIHRoZSBldmVudCBvbmx5IGlmIHNlbGVjdCBwb3B1
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgpOiBDaGFuZ2Ug
dG8gcmV0dXJuIGFjY2VwdGVkIG9yIG5vdC4KKwogMjAxMS0wNS0yOCAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IDVkZDdhZjguLjZjZDM0N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0SW5kZXgo
aW50IGluZGV4KTsKIAogICAgIC8vIEFjY2VwdHMgdGhlIHNlbGVjdGVkIGluZGV4IGFzIHRoZSB2
YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIDxzZWxlY3Q+IHdpZGdldCBvbgotICAgIC8vIHRo
ZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuCi0gICAgdm9pZCBhY2NlcHRJbmRleChp
bnQgaW5kZXgpOworICAgIC8vIHRoZSB3ZWIgcGFnZSwgYW5kIGNsb3NlcyB0aGUgcG9wdXAuIFJl
dHVybnMgdHJ1ZSBpZiBpbmRleCBpcyBhY2NlcHRlZC4KKyAgICBib29sIGFjY2VwdEluZGV4KGlu
dCBpbmRleCk7CiAKICAgICAvLyBDbGVhcnMgdGhlIHNlbGVjdGlvbiAoc28gbm8gcm93IGFwcGVh
cnMgc2VsZWN0ZWQpLgogICAgIHZvaWQgY2xlYXJTZWxlY3Rpb24oKTsKQEAgLTI3Nyw2ICsyNzcs
OSBAQCBwcml2YXRlOgogCiAgICAgLy8gSWYgd2lkdGggZXhlZWRzIHNjcmVlbiB3aWR0aCwgd2Ug
aGF2ZSB0byBjbGlwIGl0LgogICAgIGludCBtX21heFdpbmRvd1dpZHRoOworCisgICAgLy8gVG8g
Zm9yd2FyZCBsYXN0IG1vdXNlIHJlbGVhc2UgZXZlbnQuCisgICAgUmVmUHRyPE5vZGU+IG1fZm9j
dXNlZE5vZGU7CiB9OwogCiBzdGF0aWMgUGxhdGZvcm1Nb3VzZUV2ZW50IGNvbnN0cnVjdFJlbGF0
aXZlTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGUsCkBAIC00MDcsNiArNDEw
LDcgQEAgSW50UmVjdCBQb3B1cENvbnRhaW5lcjo6bGF5b3V0QW5kQ2FsY3VsYXRlV2lkZ2V0UmVj
dChpbnQgdGFyZ2V0Q29udHJvbEhlaWdodCwgY28KIHZvaWQgUG9wdXBDb250YWluZXI6OnNob3dQ
b3B1cChGcmFtZVZpZXcqIHZpZXcpCiB7CiAgICAgbV9mcmFtZVZpZXcgPSB2aWV3OworICAgIGxp
c3RCb3goKS0+bV9mb2N1c2VkTm9kZSA9IG1fZnJhbWVWaWV3LT5mcmFtZSgpLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpOwogCiAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNocm9tZUNsaWVu
dCA9IGNocm9tZUNsaWVudENocm9taXVtKCk7CiAgICAgaWYgKGNocm9tZUNsaWVudCkgewpAQCAt
NjcyLDcgKzY3NiwxNiBAQCBib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlTW91c2VSZWxlYXNlRXZl
bnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKICAgICBpZiAoIWlzUG9pbnRJbkJv
dW5kcyhldmVudC5wb3MoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYWNjZXB0SW5k
ZXgocG9pbnRUb1Jvd0luZGV4KGV2ZW50LnBvcygpKSk7CisgICAgLy8gTmVlZCB0byBjaGVjayBi
ZWZvcmUgY2FsbGluZyBhY2NlcHRJbmRleCgpLCBiZWNhdXNlIG1fcG9wdXBDbGllbnQgbWlnaHQg
YmUgcmVtb3ZlZCBpbiBhY2NlcHRJbmRleCgpIGNhbGxpbmcgYmVjYXVzZSBvZiBldmVudCBoYW5k
bGVyLgorICAgIGJvb2wgaXNTZWxlY3RQb3B1cCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgp
Lm1lbnVUeXBlKCkgPT0gUG9wdXBNZW51U3R5bGU6OlNlbGVjdFBvcHVwOworICAgIGlmIChhY2Nl
cHRJbmRleChwb2ludFRvUm93SW5kZXgoZXZlbnQucG9zKCkpKSAmJiBtX2ZvY3VzZWROb2RlICYm
IGlzU2VsZWN0UG9wdXApIHsKKyAgICAgICAgbV9mb2N1c2VkTm9kZS0+ZGlzcGF0Y2hNb3VzZUV2
ZW50KGV2ZW50LCBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KTsKKyAgICAgICAgbV9mb2N1c2Vk
Tm9kZS0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCk7
CisKKyAgICAgICAgLy8gQ2xlYXIgbV9mb2N1c2VkTm9kZSBoZXJlLCBiZWNhdXNlIHdlIGNhbm5v
dCBjbGVhciBpbiBoaWRlUG9wdXAoKSB3aGljaCBpcyBjYWxsZWQgYmVmb3JlIGRpc3BhdGNoTW91
c2VFdmVudCgpIGlzIGNhbGxlZC4KKyAgICAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgfQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjgsMjEgKzEwODEsMjEgQEAgaW50IFBvcHVw
TGlzdEJveDo6cG9pbnRUb1Jvd0luZGV4KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICByZXR1
cm4gLTE7CiB9CiAKLXZvaWQgUG9wdXBMaXN0Qm94OjphY2NlcHRJbmRleChpbnQgaW5kZXgpCiti
b29sIFBvcHVwTGlzdEJveDo6YWNjZXB0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIENsZWFy
IG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiBvbmNlIHVzZXIgYWNjZXB0cyB0aGUgc2VsZWN0ZWQg
aW5kZXguCiAgICAgaWYgKG1fYWNjZXB0ZWRJbmRleE9uQWJhbmRvbiA+PSAwKQogICAgICAgICBt
X2FjY2VwdGVkSW5kZXhPbkFiYW5kb24gPSAtMTsKIAogICAgIGlmIChpbmRleCA+PSBudW1JdGVt
cygpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChp
bmRleCA8IDApIHsKICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQpIHsKICAgICAgICAgICAgIC8v
IEVudGVyIHByZXNzZWQgd2l0aCBubyBzZWxlY3Rpb24sIGp1c3QgY2xvc2UgdGhlIHBvcHVwLgog
ICAgICAgICAgICAgaGlkZVBvcHVwKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGlzU2VsZWN0YWJsZUl0ZW0oaW5k
ZXgpKSB7CkBAIC0xMDkzLDcgKzExMDYsMTEgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmFjY2VwdElu
ZGV4KGludCBpbmRleCkKIAogICAgICAgICAvLyBUZWxsIHRoZSA8c2VsZWN0PiBQb3B1cE1lbnVD
bGllbnQgd2hhdCBpbmRleCB3YXMgc2VsZWN0ZWQuCiAgICAgICAgIG1fcG9wdXBDbGllbnQtPnZh
bHVlQ2hhbmdlZChpbmRleCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFBvcHVwTGlzdEJveDo6c2VsZWN0SW5kZXgoaW50IGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZDVkMWY3Li5mMjE1NGEzIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTA2LTAyICBOYW9r
aSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gQ2xpY2sgZXZlbnQgaXMgbm90
IGZpcmVkIGZvciBhIG1lbnVsaXN0IDxzZWxlY3Q+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU2MworCisgICAgICAgICogdGVzdHMvUG9wdXBNZW51
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OlRlc3RQb3B1
cE1lbnVDbGllbnQpOiBJbml0aWFsaXplIG1fbm9kZS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6dmFsdWVDaGFuZ2VkKTogVG8gZmlyZSAnY2hhbmdlJyBldmVudCwgZm9y
d2FyZCB0aGUgZXZlbnQgbGlrZSBSZW5kZXJNZW51TGlzdC4KKyAgICAgICAgKFdlYktpdDo6VGVz
dFBvcHVwTWVudUNsaWVudDo6aXRlbUlzRW5hYmxlZCk6IENoYW5nZSB0byByZXR1cm4gdHJ1ZSBv
ciBmYWxzZSBhY2NvcmRpbmcgdG8gZGlzYWJsZWQgaXRlbSBvciBub3QuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RQb3B1cE1lbnVDbGllbnQ6OnNldERpc2FibGVkSW5kZXgpOiBTZXQgZGlzYWJsZWQg
aW5kZXggdG8gc2ltdWxhdGUgZGlzYWJsZWQgaXRlbS4KKyAgICAgICAgKFdlYktpdDo6VGVzdFBv
cHVwTWVudUNsaWVudDo6c2V0Rm9jdXNlZE5vZGUpOiBTZXQgZm9jdXNlZCBub2RlIHRvIGRpc3Bh
dGNoIHRoZSBldmVudC4KKyAgICAgICAgKFdlYktpdDo6U2VsZWN0UG9wdXBNZW51VGVzdDo6U2Vs
ZWN0UG9wdXBNZW51VGVzdCk6IEFkZCBiYXNlVVJMLgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQ
b3B1cE1lbnVUZXN0OjpUZWFyRG93bik6IEFkZCBVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpIGNh
bGwuCisgICAgICAgIChXZWJLaXQ6OlNlbGVjdFBvcHVwTWVudVRlc3Q6OnJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZCk6IFRvIHNpbXVsYXRlIGh0bWwgbG9hZCwgY2FsbCBSZWdpc3Rlck1vY2tlZFVSTCgp
LgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVUZXN0OjpzZXJ2ZVJlcXVlc3RzKTog
Q2FsbCBTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCkuCisgICAgICAgIChXZWJLaXQ6
OlNlbGVjdFBvcHVwTWVudVRlc3Q6OmxvYWRGcmFtZSk6IFNpbXVsYXRlIGxvYWQgZnJhbWUgd2l0
aCB1cmwgc3RyaW5nLgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOiBJbXBsZW1lbnQgU2VsZWN0
SXRlbUV2ZW50RmlyZSwgU2VsZWN0SXRlbUtleUV2ZW50LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0
T25DaGFuZ2UgYW5kIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZS4KKyAgICAgICAgKiB0
ZXN0cy9kYXRhL3NlbGVjdF9ldmVudC5odG1sOiBBZGRlZCBmb3IgU2VsZWN0SXRlbUV2ZW50Rmly
ZSBhbmQgU2VsZWN0SXRlbUtleUV2ZW50LgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2
ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbDogQWRkZWQgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9u
Q2hhbmdlLgorICAgICAgICAqIHRlc3RzL2RhdGEvc2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGlj
ay5odG1sOiBBZGRlZCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2UuCisgICAgICAgICog
V2ViS2l0Lmd5cDogQWRkZWQgUG9wdXBNZW51VGVzdC5jcHAuIEJlY2F1c2Ugd2Via2l0X3N1cHBv
cnQgZGVwZW5kZW5jeSBpcyBhZGRlZCwgd2UgY2FuJ3QgYnVpbGQgUG9wdXBNZW51VGVzdC5jcHAg
d2l0aCBDaHJvbWl1bS13aW4gKHNoYXJlZCkgY29uZmlndXJhdGlvbi4KKwogMjAxMS0wNi0wMiAg
QWFyb24gQ29sd2VsbCAgPGFjb2x3ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBhMzUxNDZh
Li4xMjBiNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC02NDcsNiArNjQ3LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5j
cHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1Nl
cmlhbGl6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9XZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIiBvciBPUz09Im1hYyInLCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAppbmRl
eCAzYjliNzliLi5iZTJmZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
UG9wdXBNZW51VGVzdC5jcHAKQEAgLTMxLDE5ICszMSwzMyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93
ZWJraXRfc3VwcG9ydC5oPgogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJFbGVtZW50
LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgog
I2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCisjaW5jbHVkZSAiU2VsZWN0RWxlbWVudC5oIgor
I2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51SW1wbC5oIgogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKKyNpbmNsdWRlICJX
ZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5o
IgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5o
IgorI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlICJ2OC5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC01MywxMSArNjcsMTUgQEAgbmFt
ZXNwYWNlIHsKIGNsYXNzIFRlc3RQb3B1cE1lbnVDbGllbnQgOiBwdWJsaWMgUG9wdXBNZW51Q2xp
ZW50IHsKIHB1YmxpYzoKICAgICAvLyBJdGVtIGF0IGluZGV4IDAgaXMgc2VsZWN0ZWQgYnkgZGVm
YXVsdC4KLSAgICBUZXN0UG9wdXBNZW51Q2xpZW50KCkgOiBtX3NlbGVjdEluZGV4KDApIHsgfQor
ICAgIFRlc3RQb3B1cE1lbnVDbGllbnQoKSA6IG1fc2VsZWN0SW5kZXgoMCksIG1fbm9kZSgwKSB7
IH0KICAgICB2aXJ0dWFsIH5UZXN0UG9wdXBNZW51Q2xpZW50KCkge30KICAgICB2aXJ0dWFsIHZv
aWQgdmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1
ZSkKICAgICB7CiAgICAgICAgIG1fc2VsZWN0SW5kZXggPSBsaXN0SW5kZXg7CisgICAgICAgIGlm
IChtX25vZGUpIHsKKyAgICAgICAgICAgIFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2VsZWN0
RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9ub2RlKSk7CisgICAgICAgICAgICBzZWxl
Y3QtPnNldFNlbGVjdGVkSW5kZXhCeVVzZXIoc2VsZWN0LT5saXN0VG9PcHRpb25JbmRleChsaXN0
SW5kZXgpLCB0cnVlLCBmaXJlRXZlbnRzKTsKKyAgICAgICAgfQogICAgIH0KICAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkge30KICAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0aW9uQ2xlYXJlZCgpIHt9CkBAIC03Miw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBpdGVtSWNvbih1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGl0ZW1UZXh0KGxpc3RJbmRleCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBp
dGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBp
dGVtVGV4dChsaXN0SW5kZXgpOyB9Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQodW5z
aWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCB7IHJldHVybiBtX2Rpc2Fi
bGVkSW5kZXhTZXQuZmluZChsaXN0SW5kZXgpID09IG1fZGlzYWJsZWRJbmRleFNldC5lbmQoKTsg
fQogICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRl
eCkgY29uc3QKICAgICB7CiAgICAgICAgIEZvbnQgZm9udChGb250UGxhdGZvcm1EYXRhKDEyLjAs
IGZhbHNlLCBmYWxzZSksIGZhbHNlKTsKQEAgLTkyLDE0ICsxMTAsMTkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQb3BPdmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdmFsdWVTaG91bGRDaGFuZ2VPbkhvdFRyYWNrKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEZyb21JdGVtKHVuc2lnbmVkIGxp
c3RJbmRleCkgeyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNlbGVj
dG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9y
aWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgeyByZXR1cm4gMDsgfQogCisgICAgdm9p
ZCBzZXREaXNhYmxlZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fZGlzYWJsZWRJbmRleFNldC5p
bnNlcnQoaW5kZXgpOyB9CisgICAgdm9pZCBzZXRGb2N1c2VkTm9kZShOb2RlKiBub2RlKSB7IG1f
bm9kZSA9IG5vZGU7IH0KKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NlbGVjdEluZGV4Owor
ICAgIHN0ZDo6c2V0PHVuc2lnbmVkPiBtX2Rpc2FibGVkSW5kZXhTZXQ7CisgICAgTm9kZSogbV9u
b2RlOwogfTsKIAogY2xhc3MgVGVzdFdlYldpZGdldENsaWVudCA6IHB1YmxpYyBXZWJXaWRnZXRD
bGllbnQgewpAQCAtMTUwLDYgKzE3Myw3IEBAIHB1YmxpYzoKIGNsYXNzIFNlbGVjdFBvcHVwTWVu
dVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgU2VsZWN0UG9wdXBN
ZW51VGVzdCgpCisgICAgICAgIDogYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKQogICAg
IHsKICAgICB9CiAKQEAgLTE2NSw2ICsxODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAg
ICBtX3BvcHVwTWVudSA9IDA7CiAgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICAgICAg
d2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CiAgICAgfQogCiAgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGN1cnJlbnRseSBpcyBhIHNlbGVjdCBwb3B1cCBpbiB0
aGUgV2ViVmlldy4KQEAgLTIyMCwxMiArMjQ1LDM5IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV93
ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50
KTsKICAgICB9CiAKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsK
KyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgICAgICByZXNwb25zZS5zZXRNSU1F
VHlwZSgidGV4dC9odG1sIik7CisKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJr
aXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGgg
Kz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAvIjsKKyAgICAgICAg
ZmlsZVBhdGggKz0gZmlsZU5hbWU7CisKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKFdlYlVSTChHVVJMKGJhc2VVUkwgKyBmaWxlTmFtZSkpLCByZXNwb25zZSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1
ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNN
b2NrZWRSZXF1ZXN0cygpOworICAgIH0KKworICAgIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiBm
cmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgV2ViVVJM
UmVxdWVzdCB1cmxSZXF1ZXN0OworICAgICAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAg
ICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKEdVUkwoYmFzZVVSTCArIGZpbGVOYW1lKSkp
OworICAgICAgICBmcmFtZS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CisgICAgfQorCiBwcm90
ZWN0ZWQ6CiAgICAgVGVzdFdlYlZpZXdDbGllbnQgbV93ZWJ2aWV3Q2xpZW50OwogICAgIFdlYlZp
ZXdJbXBsKiBtX3dlYlZpZXc7CiAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IG1fd2ViRnJhbWVDbGll
bnQ7CiAgICAgVGVzdFBvcHVwTWVudUNsaWVudCBtX3BvcHVwTWVudUNsaWVudDsKICAgICBSZWZQ
dHI8UG9wdXBNZW51PiBtX3BvcHVwTWVudTsKKyAgICBzdGQ6OnN0cmluZyBiYXNlVVJMOwogfTsK
IAogLy8gVGVzdHMgdGhhdCBzaG93L2hpZGUgYW5kIHJlcGVhdHMuICBTZWxlY3QgcG9wdXBzIGFy
ZSByZXVzZWQgaW4gd2ViIHBhZ2VzIHdoZW4KQEAgLTM1MCw0ICs0MDIsMTE0IEBAIFRFU1RfRihT
ZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtV2l0aEtleWJvYXJkSXRlbUNsaWNrT3V0c2lk
ZSkKICAgICBFWFBFQ1RfRVEoMiwgc2VsZWN0ZWRJbmRleCgpKTsKIH0KIAorVEVTVF9GKFNlbGVj
dFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1FdmVudEZpcmUpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKCJzZWxlY3RfZXZlbnQuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+
bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnQuaHRtbCIpOworICAgIHNlcnZlUmVxdWVzdHMoKTsK
KworICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldEZvY3VzZWROb2RlKHN0YXRpY19jYXN0PFdlYkZy
YW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisKKyAgICBzaG93UG9wdXAoKTsKKworICAgIGlu
dCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgp
OworICAgIC8vIG1lbnVIZWlnaHQgKiAwLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0
ZW0gYXQgaW5kZXggMC4KKyAgICBJbnRQb2ludCByb3cxUG9pbnQoMiwgbWVudUhlaWdodCAqIDAu
NSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11
bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVu
dCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1l
c3NhZ2UiKTsKKworICAgIC8vIG1vdXNlZG93biBldmVudCBpcyBoZWxkIGJ5IHNlbGVjdCBub2Rl
LCBhbmQgd2UgZG9uJ3Qgc2ltdWxhdGUgdGhlIGV2ZW50IGZvciB0aGUgbm9kZS4KKyAgICAvLyBT
byB3ZSBjYW4gb25seSBzZWUgbW91c2V1cCBhbmQgY2xpY2sgZXZlbnQuCisgICAgRVhQRUNUX1NU
UkVRKCJ1cGNsaWNrIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNf
c3RyKCkpOworCisgICAgLy8gRGlzYWJsZSB0aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIG1fcG9w
dXBNZW51Q2xpZW50LnNldERpc2FibGVkSW5kZXgoMSk7CisKKyAgICBzaG93UG9wdXAoKTsKKyAg
ICAvLyBtZW51SGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0
IGluZGV4IDEuCisgICAgcm93MVBvaW50LnNldFkobWVudUhlaWdodCAqIDEuNSk7CisgICAgc2lt
dWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3Vz
ZVVwRXZlbnQocm93MVBvaW50KTsKKworICAgIC8vIFRoZSBpdGVtIGF0IGluZGV4IDEgaXMgZGlz
YWJsZWQsIHNvIHRoZSB0ZXh0IHNob3VsZCBub3QgYmUgY2hhbmdlZC4KKyAgICBFWFBFQ1RfU1RS
RVEoInVwY2xpY2siLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19z
dHIoKSk7CisKKyAgICBzaG93UG9wdXAoKTsKKyAgICAvLyBtZW51SGVpZ2h0ICogMi41IG1lYW5z
IHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDIuCisgICAgcm93MVBvaW50LnNl
dFkobWVudUhlaWdodCAqIDIuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93
MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKworICAg
IC8vIFRoZSBpdGVtIGlzIGNoYW5nZWQgdG8gdGhlIGl0ZW0gYXQgaW5kZXggMiwgZnJvbSBpbmRl
eCAwLCBzbyBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQuCisgICAgRVhQRUNUX1NUUkVRKCJ1cGNsaWNr
Y2hhbmdldXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5j
X3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1LZXlF
dmVudCkKK3sKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoInNlbGVjdF9ldmVudC5odG1sIik7
CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICBsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudC5odG1s
Iik7CisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9j
dXNlZE5vZGUoc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUo
KSktPmZyYW1lVmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKwor
ICAgIHNob3dQb3B1cCgpOworCisgICAgLy8gU2l1bXVsYXRlIHRvIGNob29zZSB0aGUgaXRlbSBh
dCBpbmRleCAxIHdpdGgga2V5Ym9hcmQuCisgICAgc2ltdWxhdGVLZXlEb3duRXZlbnQoVktFWV9E
T1dOKTsKKyAgICBzaW11bGF0ZUtleURvd25FdmVudChWS0VZX0RPV04pOworICAgIHNpbXVsYXRl
S2V5RG93bkV2ZW50KFZLRVlfUkVUVVJOKTsKKworICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1f
d2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2Ui
KTsKKyAgICAvLyBXZSBvbmx5IGNhbiBzZWUgY2hhbmdlIGV2ZW50IGJ1dCBubyBvdGhlciBtb3Vz
ZSByZWxhdGVkIGV2ZW50cy4KKyAgICBFWFBFQ1RfU1RSRVEoImNoYW5nZSIsIHN0ZDo6c3RyaW5n
KGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKK30KKworVEVTVF9GKFNlbGVj
dFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZSkKK3sKKyAgICAv
LyBNYWtlIHN1cmUgbm8gY3Jhc2gsIGV2ZW4gaWYgc2VsZWN0IG5vZGUgaXMgcmVtb3ZlZCBvbiAn
Y2hhbmdlJyBldmVudCBoYW5kbGVyLgorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgic2VsZWN0
X2V2ZW50X3JlbW92ZV9vbl9jaGFuZ2UuaHRtbCIpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbG9hZEZyYW1lKG1fd2ViVmlldy0+
bWFpbkZyYW1lKCksICJzZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIik7CisgICAg
c2VydmVSZXF1ZXN0cygpOworCisgICAgbV9wb3B1cE1lbnVDbGllbnQuc2V0Rm9jdXNlZE5vZGUo
c3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obV93ZWJWaWV3LT5tYWluRnJhbWUoKSktPmZyYW1l
VmlldygpLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKTsKKworICAgIHNob3dQ
b3B1cCgpOworCisgICAgaW50IG1lbnVIZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCkt
Pm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBw
b3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAxLgorICAgIEludFBvaW50IHJvdzFQb2ludCgy
LCBtZW51SGVpZ2h0ICogMS41KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cx
UG9pbnQpOworICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOworCisgICAg
V2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5n
ZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOworICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgc3Rk
OjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCitURVNU
X0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2xpY2spCit7
CisgICAgLy8gTWFrZSBzdXJlIG5vIGNyYXNoLCBldmVuIGlmIHNlbGVjdCBub2RlIGlzIHJlbW92
ZWQgb24gJ2NsaWNrJyBldmVudCBoYW5kbGVyLgorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgi
c2VsZWN0X2V2ZW50X3JlbW92ZV9vbl9jbGljay5odG1sIik7CisgICAgbV93ZWJWaWV3LT5zZXR0
aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBsb2FkRnJhbWUobV93ZWJW
aWV3LT5tYWluRnJhbWUoKSwgInNlbGVjdF9ldmVudF9yZW1vdmVfb25fY2xpY2suaHRtbCIpOwor
ICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldEZvY3VzZWRO
b2RlKHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpLT5m
cmFtZVZpZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSk7CisKKyAgICBz
aG93UG9wdXAoKTsKKworICAgIGludCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1
cCgpLT5tZW51SXRlbUhlaWdodCgpOworICAgIC8vIG1lbnVIZWlnaHQgKiAxLjUgbWVhbnMgdGhl
IFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4KKyAgICBJbnRQb2ludCByb3cxUG9p
bnQoMiwgbWVudUhlaWdodCAqIDEuNSk7CisgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQo
cm93MVBvaW50KTsKKyAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKKwor
ICAgIFdlYkVsZW1lbnQgZWxlbWVudCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCkuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKTsKKyAgICBFWFBFQ1RfU1RSRVEoImNsaWNrIiwg
c3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3BvcHVwL3NlbGVjdF9ldmVudC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA0YmIwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvcG9wdXAvc2VsZWN0X2V2ZW50Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0ibWVzc2FnZSI+PC9kaXY+
Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9uPjE8L29wdGlvbj4KKzxvcHRpb24+
Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3NhZ2UnKS5p
bm5lclRleHQgKz0gImRvd24iOworfQorCitmdW5jdGlvbiBoYW5kbGVyMihlKSB7CisgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJjbGljayI7Cit9CisK
K2Z1bmN0aW9uIGhhbmRsZXIzKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lc3Nh
Z2UnKS5pbm5lclRleHQgKz0gInVwIjsKK30KKworZnVuY3Rpb24gaGFuZGxlcjQoZSkgeworICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVzc2FnZScpLmlubmVyVGV4dCArPSAiY2hhbmdlIjsK
K30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZWRvd24nLCBoYW5kbGVyKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzJykuYWRkRXZlbnRM
aXN0ZW5lcignY2xpY2snLCBoYW5kbGVyMik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycp
LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVyMyk7Citkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZXI0KTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZl
bnRfcmVtb3ZlX29uX2NoYW5nZS5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25fY2hhbmdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIxY2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29u
X2NoYW5nZS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
Ym9keT4KKzxkaXYgaWQ9Im1lc3NhZ2UiPjwvZGl2PgorPHNlbGVjdCBpZD0icyIgYXV0b2ZvY3Vz
PgorPG9wdGlvbj4xPC9vcHRpb24+Cis8b3B0aW9uPjI8L29wdGlvbj4KKzxvcHRpb24+Mzwvb3B0
aW9uPgorPC9zZWxlY3Q+Cis8c2NyaXB0PgorZnVuY3Rpb24gaGFuZGxlcihlKSB7CisgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJykuaW5uZXJUZXh0ICs9ICJjaGFuZ2UiOworICBz
ZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycpOworICBzZWxlY3QucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChzZWxlY3QpOworfQorCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncycp
LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZXIpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwL3NlbGVjdF9ldmVudF9yZW1vdmVfb25f
Y2xpY2suaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxl
Y3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMzI1MDM2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS9wb3B1cC9zZWxlY3RfZXZlbnRfcmVtb3ZlX29uX2NsaWNrLmh0bWwKQEAg
LTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0i
bWVzc2FnZSI+PC9kaXY+Cis8c2VsZWN0IGlkPSJzIiBhdXRvZm9jdXM+Cis8b3B0aW9uPjE8L29w
dGlvbj4KKzxvcHRpb24+Mjwvb3B0aW9uPgorPG9wdGlvbj4zPC9vcHRpb24+Cis8L3NlbGVjdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBoYW5kbGVyKGUpIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ21lc3NhZ2UnKS5pbm5lclRleHQgKz0gImNsaWNrIjsKKyAgc2VsZWN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3MnKTsKKyAgc2VsZWN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2Vs
ZWN0KTsKK30KKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MnKS5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIGhhbmRsZXIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>