<?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>46165</bug_id>
          
          <creation_ts>2010-09-20 23:22:07 -0700</creation_ts>
          <short_desc>Focused frame information needed in Chrome and ChromeClient</short_desc>
          <delta_ts>2010-12-23 10:18:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>48685</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Juha Savolainen">juha.savolainen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>kenneth</cc>
    
    <cc>sam</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282113</commentid>
    <comment_count>0</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-20 23:22:07 -0700</bug_when>
    <thetext>Chrome and ChromeClient should support method which is called when focused frame has changed.
In WebKit2 we need this information when accessing current frame. With this change we can avoid
synchronized call from UIProcess to WebProcess when using frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282117</commentid>
    <comment_count>1</comment_count>
      <attachid>68192</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-20 23:33:57 -0700</bug_when>
    <thetext>Created attachment 68192
Added a new method to Chrome and ChromeClient which is called when focused frame has changed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282257</commentid>
    <comment_count>2</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-21 06:29:59 -0700</bug_when>
    <thetext>I think the patch is straightforward and reasonable. Question:

1) Do we need this for WebKit1 too?
2) Should the various ChromeClient in WebKit/ get updated?
3) Should we pass the Focused frame as parameter?
4) Can we test that somehow? even if it is an autotest ... (of course layout test preferred)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282291</commentid>
    <comment_count>3</comment_count>
      <attachid>68192</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-21 07:21:11 -0700</bug_when>
    <thetext>Comment on attachment 68192
Added a new method to Chrome and ChromeClient which is called when focused frame has changed

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

&gt; WebCore/page/ChromeClient.h:90
&gt; +        virtual void focusedFrameChanged() {};

I would prefer if this was pure-virtual like most of the others in this file.


Can you also explain the use case a little more about the use case for having this information in the UIProcess. Why is it necessary to know which frame has focus?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282781</commentid>
    <comment_count>4</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-21 23:06:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I think the patch is straightforward and reasonable. Question:
&gt; 
&gt; 1) Do we need this for WebKit1 too?

Well, I think no. This notification was added because of WebKit2 architecture(UIProcess/WebProcess). In WebKit1 it is quite simply to ask focused frame from WebCore and return that to the user immeadiately. Ofcourse this could be also used in WebKit1 but I think  that there isn&apos;t such benefit than in WebKit2.

&gt; 2) Should the various ChromeClient in WebKit/ get updated?

My idea is that this only affect to WebKit2-side.

&gt; 3) Should we pass the Focused frame as parameter?

Maybe not. We only need to resolve WebKit2::WebFrame.frameID which is focused. Also a little bit later I will introduce WebPage::currentFrameID() method in WebKit2 which returns ID of focused WebFrame. Because this method dosen&apos;t take parameter WebKit::Frame* this could be used allways to resolve focused framedID, even if we don&apos;t know which WebKit::Frame is currently activated. In our case, when focused frame has changed and FocusController calls WebChromeClient::focusedFrameChanged() we just call currentFrameID() method and send frameID to UIProcess.

&gt; 4) Can we test that somehow? even if it is an autotest ... (of course layout test preferred)

Cannot answer right now, I need investigate testing a little bit more how this kind of functions is tested earlyer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282786</commentid>
    <comment_count>5</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-21 23:41:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 68192 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68192&amp;action=review
&gt; 
&gt; &gt; WebCore/page/ChromeClient.h:90
&gt; &gt; +        virtual void focusedFrameChanged() {};
&gt; 
&gt; I would prefer if this was pure-virtual like most of the others in this file.

Pure virtual means that it must be implemented in derived class and I thought that we need this method only in WebKit2-side. If this is changed to pure virtual method then it must be added to all ChromeClients. And implementation would be empty.

&gt; Can you also explain the use case a little more about the use case for having this information in the UIProcess. Why is it necessary to know which frame has focus?

Yes, sure.
Main point is that this is needed because I have done QWKFrame API(initial version, just 5 method) to WebKit2 which is similar than QWebFrame API. The rest patches will come later.

I will add a new class, QWKFrame which have eg. frameName-method which returns frame name. 
The use case: user wants to know name of the current frame(=focused frame), currently WebKit2 C-API dosen&apos;t support any other than mainframe. If we don&apos;t do this notification, then we must do synchronized call from UIProcess to WebProcess everytime when someone wants access to frames. I think we should send frameID to UIProcess when it&apos;s changed so it will be there allready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282898</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-22 06:25:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 68192 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68192&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/page/ChromeClient.h:90
&gt; &gt; &gt; +        virtual void focusedFrameChanged() {};
&gt; &gt; 
&gt; &gt; I would prefer if this was pure-virtual like most of the others in this file.
&gt; 
&gt; Pure virtual means that it must be implemented in derived class and I thought that we need this method only in WebKit2-side. If this is changed to pure virtual method then it must be added to all ChromeClients. And implementation would be empty.

Yes. That is the normal way we do things.

&gt; 
&gt; &gt; Can you also explain the use case a little more about the use case for having this information in the UIProcess. Why is it necessary to know which frame has focus?
&gt; 
&gt; Yes, sure.
&gt; Main point is that this is needed because I have done QWKFrame API(initial version, just 5 method) to WebKit2 which is similar than QWebFrame API. The rest patches will come later.
&gt; 
&gt; I will add a new class, QWKFrame which have eg. frameName-method which returns frame name. 
&gt; The use case: user wants to know name of the current frame(=focused frame), currently WebKit2 C-API dosen&apos;t support any other than mainframe. If we don&apos;t do this notification, then we must do synchronized call from UIProcess to WebProcess everytime when someone wants access to frames. I think we should send frameID to UIProcess when it&apos;s changed so it will be there allready.

I am still not clear on why the user needs to know the name of the focused frame?  What can they do with that information?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282951</commentid>
    <comment_count>7</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-22 08:36:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 68192 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68192&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; WebCore/page/ChromeClient.h:90
&gt; &gt; &gt; &gt; +        virtual void focusedFrameChanged() {};
&gt; &gt; &gt; 
&gt; &gt; &gt; I would prefer if this was pure-virtual like most of the others in this file.
&gt; &gt; 
&gt; &gt; Pure virtual means that it must be implemented in derived class and I thought that we need this method only in WebKit2-side. If this is changed to pure virtual method then it must be added to all ChromeClients. And implementation would be empty.
&gt; 
&gt; Yes. That is the normal way we do things.

Ok, if that is rule then it should fix to pure virtual altought I have a little bit different opinion.

&gt; I am still not clear on why the user needs to know the name of the focused frame?  What can they do with that information?

Sorry, my mistake. I meaned focused frame url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283565</commentid>
    <comment_count>8</comment_count>
      <attachid>68506</attachid>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-23 02:58:02 -0700</bug_when>
    <thetext>Created attachment 68506
Add focusedFrameChanged-method to ChromeClients</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283641</commentid>
    <comment_count>9</comment_count>
      <attachid>68506</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-23 08:06:56 -0700</bug_when>
    <thetext>Comment on attachment 68506
Add focusedFrameChanged-method to ChromeClients

It looks sane to me. Sam?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284262</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-23 23:56:07 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; I am still not clear on why the user needs to know the name of the focused frame?  What can they do with that information?
&gt; 
&gt; Sorry, my mistake. I meaned focused frame url.

I am still not sure what the use case is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284280</commentid>
    <comment_count>11</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-24 00:33:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; 
&gt; &gt; &gt; I am still not clear on why the user needs to know the name of the focused frame?  What can they do with that information?
&gt; &gt; 
&gt; &gt; Sorry, my mistake. I meaned focused frame url.
&gt; 
&gt; I am still not sure what the use case is.

Html-page contains 3 frames(main frame + 2 other) and the user wants to know 
url of any other frame than a mainframe, it&apos;s impossible. 
WebKit1: QWebPage-&gt;currentFrame()-&gt;url()

Html-page contains 3 frames(main frame + 2 other) and the user just wants to
access the current frame, it&apos;s impossible. 
WebKit1: QWebPage-&gt;currentFrame();

In WebKit2, there is only possibility to operate with the mainframe, 
not focused or any other than mainframe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284367</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-24 07:25:48 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I am still not clear on why the user needs to know the name of the focused frame?  What can they do with that information?
&gt; &gt; &gt; 
&gt; &gt; &gt; Sorry, my mistake. I meaned focused frame url.
&gt; &gt; 
&gt; &gt; I am still not sure what the use case is.
&gt; 
&gt; Html-page contains 3 frames(main frame + 2 other) and the user wants to know 
&gt; url of any other frame than a mainframe, it&apos;s impossible. 
&gt; WebKit1: QWebPage-&gt;currentFrame()-&gt;url()
&gt; 
&gt; Html-page contains 3 frames(main frame + 2 other) and the user just wants to
&gt; access the current frame, it&apos;s impossible. 
&gt; WebKit1: QWebPage-&gt;currentFrame();
&gt; 
&gt; In WebKit2, there is only possibility to operate with the mainframe, 
&gt; not focused or any other than mainframe.

I understand how it can be used, but *why* does a user need to know which frame is focused from the UIProcess.  The model we have been trying to work with is to have almost everything be based on the Page, and have frames act almost as handles to the load state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286073</commentid>
    <comment_count>13</comment_count>
    <who name="Juha Savolainen">juha.savolainen</who>
    <bug_when>2010-09-27 22:48:54 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; I understand how it can be used, but *why* does a user need to know which frame is focused from the UIProcess.  The model we have been trying to work with is to have almost everything be based on the Page, and have frames act almost as handles to the load state.

Thank you for comments. This would related to new API for frames, could you say your opinion about that API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286182</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-28 04:53:42 -0700</bug_when>
    <thetext>Hi Simon, do you know the reason why we originally added the currentFrame method? That seems to be before I joined the project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326135</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-23 10:18:03 -0800</bug_when>
    <thetext>This never had a use case mentioned, but we ended up needing to know the focused frame in Safari.

*** This bug has been marked as a duplicate of bug 48685 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68192</attachid>
            <date>2010-09-20 23:33:57 -0700</date>
            <delta_ts>2010-12-23 00:42:59 -0800</delta_ts>
            <desc>Added a new method to Chrome and ChromeClient which is called when focused frame has changed</desc>
            <filename>FocusedFrameChanged.patch</filename>
            <type>text/plain</type>
            <size>2769</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzU5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDktMTYgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaHJvbWUgYW5kIENocm9tZUNsaWVudCB3ZXJlIG1hZGUgdG8gc3VwcG9ydCBmb2N1
c2VkIGZyYW1lIG5vdGlmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDYxNjUKKworICAgICAgICBBZGRlZCBhIG5ldyBtZXRob2Qgd2hpY2gg
aXMgY2FsbGVkIHdoZW4gZm9jdXNlZCBmcmFtZSBoYXMgY2hhbmdlZC4gVGhpcyAKKyAgICAgICAg
aW5mb3JtYXRpb24gaXMgbmVlZGVkIHdoZW4gYWNjZXNzaW5nIGZyYW1lcyBpbiBXZWJLaXQyLgor
CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpm
b2N1c2VkRnJhbWVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAgICAq
IHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmZv
Y3VzZWRGcmFtZUNoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKToKKwog
MjAxMC0wOS0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggY2hyb21pdW0gYnVpbGQuCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gNjc1OTgpCisr
KyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwx
MSBAQCB2b2lkIENocm9tZTo6dW5mb2N1cygpIGNvbnN0CiAgICAgbV9jbGllbnQtPnVuZm9jdXMo
KTsKIH0KIAordm9pZCBDaHJvbWU6OmZvY3VzZWRGcmFtZUNoYW5nZWQoKQoreworICAgIG1fY2xp
ZW50LT5mb2N1c2VkRnJhbWVDaGFuZ2VkKCk7Cit9CisKIGJvb2wgQ2hyb21lOjpjYW5UYWtlRm9j
dXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVu
dC0+Y2FuVGFrZUZvY3VzKGRpcmVjdGlvbik7CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShyZXZpc2lvbiA2NzU5OCkKKysr
IFdlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9jdXMoKSBjb25zdDsKICAgICAgICAg
dm9pZCB1bmZvY3VzKCkgY29uc3Q7CiAKKyAgICAgICAgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2Vk
KCk7CisKICAgICAgICAgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIGNvbnN0Owog
ICAgICAgICB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikgY29uc3Q7CiAKSW5kZXg6IFdl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hy
b21lQ2xpZW50LmgJKHJldmlzaW9uIDY3NTk4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
dW5mb2N1cygpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdl
ZCgpIHt9OworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rp
b24pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikg
PSAwOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNjc1OTgpCisr
KyBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3
LDYgKzEwNyw4IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoUGEKICAg
ICAgICAgbmV3RnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCisg
ICAgbV9wYWdlLT5jaHJvbWUoKS0+Zm9jdXNlZEZyYW1lQ2hhbmdlZCgpOworCiAgICAgbV9pc0No
YW5naW5nRm9jdXNlZEZyYW1lID0gZmFsc2U7CiB9CiAK
</data>
<flag name="review"
          id="57669"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68506</attachid>
            <date>2010-09-23 02:58:02 -0700</date>
            <delta_ts>2010-12-23 10:18:27 -0800</delta_ts>
            <desc>Add focusedFrameChanged-method to ChromeClients</desc>
            <filename>focusedFrameChanged.patch</filename>
            <type>text/plain</type>
            <size>20650</size>
            <attacher name="Juha Savolainen">juha.savolainen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODEyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDktMjMgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xh
aW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaHJvbWUgYW5kIENocm9tZUNsaWVudCB3ZXJlIG1hZGUgdG8gc3VwcG9ydCBmb2N1
c2VkIGZyYW1lIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ2MTY1CisKKyAgICAgICAgQWRkZWQgZm9jdXNlZEZyYW1lQ2hhbmdl
ZCBtZXRob2Qgd2hpY2ggaXMgY2FsbGVkIHdoZW4gZm9jdXNlZCBmcmFtZSBoYXMgY2hhbmdlZC4g
VGhpcyAKKyAgICAgICAgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHdoZW4gYWNjZXNzaW5nIGZyYW1l
cyBpbiBXZWJLaXQyLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNoYW5nZWQpOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6Zm9jdXNl
ZEZyYW1lQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9DaHJvbWUuaDoKKyAgICAgICAgKiBwYWdl
L0Nocm9tZUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKToKKwogMjAx
MC0wOS0yMiAgTHVrZSBNYWNwaGVyc29uICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCShyZXZpc2lvbiA2NzU5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZm9jdXMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpIHsgfQogCisgICAgdmly
dHVhbCB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoKSB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBj
YW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZp
c2lvbiA2NzU5OCkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNiArMTQ4LDExIEBAIHZvaWQgQ2hyb21lOjp1bmZvY3VzKCkgY29uc3QKICAgICBtX2Ns
aWVudC0+dW5mb2N1cygpOwogfQogCit2b2lkIENocm9tZTo6Zm9jdXNlZEZyYW1lQ2hhbmdlZCgp
Cit7CisgICAgbV9jbGllbnQtPmZvY3VzZWRGcmFtZUNoYW5nZWQoKTsKK30KKwogYm9vbCBDaHJv
bWU6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fY2xpZW50LT5jYW5UYWtlRm9jdXMoZGlyZWN0aW9uKTsKSW5kZXg6IFdlYkNvcmUv
cGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlz
aW9uIDY3NTk4KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
OCw2ICs4OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmb2N1cygpIGNv
bnN0OwogICAgICAgICB2b2lkIHVuZm9jdXMoKSBjb25zdDsKIAorICAgICAgICB2b2lkIGZvY3Vz
ZWRGcmFtZUNoYW5nZWQoKTsKKwogICAgICAgICBib29sIGNhblRha2VGb2N1cyhGb2N1c0RpcmVj
dGlvbikgY29uc3Q7CiAgICAgICAgIHZvaWQgdGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBjb25z
dDsKIApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjc1OTgpCisrKyBXZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB1bmZvY3VzKCkgPSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1
c2VkRnJhbWVDaGFuZ2VkKCkgPSAwOworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9j
dXMoRm9jdXNEaXJlY3Rpb24pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhG
b2N1c0RpcmVjdGlvbikgPSAwOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNjc1OTgpCisrKyBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1
c2VkRnJhbWUoUGEKICAgICAgICAgbmV3RnJhbWUtPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgZmFsc2UsIGZhbHNl
KSk7CiAgICAgfQogCisgICAgbV9wYWdlLT5jaHJvbWUoKS0+Zm9jdXNlZEZyYW1lQ2hhbmdlZCgp
OworCiAgICAgbV9pc0NoYW5naW5nRm9jdXNlZEZyYW1lID0gZmFsc2U7CiB9CiAKSW5kZXg6IFdl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biA2ODEyNSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTAtMDktMjMgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEuc2F2b2xhaW5lbkB3ZWVn
by5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aHJvbWUgYW5kIENocm9tZUNsaWVudCB3ZXJlIG1hZGUgdG8gc3VwcG9ydCBmb2N1c2VkIGZyYW1l
IG5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ2MTY1CisKKyAgICAgICAgQWRkZWQgZm9jdXNlZEZyYW1lQ2hhbmdlZCBtZXRob2Qg
d2hpY2ggaXMgY2FsbGVkIHdoZW4gZm9jdXNlZCBmcmFtZSBoYXMgY2hhbmdlZC4gVGhpcyAKKyAg
ICAgICAgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHdoZW4gYWNjZXNzaW5nIGZyYW1lcyBpbiBXZWJL
aXQyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNo
YW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisKIDIwMTAtMDktMjIgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHI2ODA3OS4KSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiA2NzU5OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwxMSBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6dW5mb2N1cygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNoYW5nZWQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpjYW5UYWtlRm9jdXMo
Rm9jdXNEaXJlY3Rpb24pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJl
dmlzaW9uIDY3NTk4KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKCk7CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGNhblRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbik7CiAgICAg
dmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbik7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4MTI1KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTIzICBKdWhhIFNhdm9sYWlu
ZW4gIDxqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hyb21lIGFuZCBDaHJvbWVDbGllbnQgd2VyZSBtYWRl
IHRvIHN1cHBvcnQgZm9jdXNlZCBmcmFtZSBub3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjE2NQorCisgICAgICAgIEFkZGVkIGZv
Y3VzZWRGcmFtZUNoYW5nZWQgbWV0aG9kIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGZvY3VzZWQgZnJh
bWUgaGFzIGNoYW5nZWQuIFRoaXMgCisgICAgICAgIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB3aGVu
IGFjY2Vzc2luZyBmcmFtZXMgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZEZy
YW1lQ2hhbmdlZCk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMC0w
OS0yMiAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY3NTk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSwxMCBAQCB2
b2lkIENocm9tZUNsaWVudEltcGw6OnVuZm9jdXMoKQogICAgICAgICBtX3dlYlZpZXctPmNsaWVu
dCgpLT5kaWRCbHVyKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZEZyYW1l
Q2hhbmdlZCgpCit7Cit9CisKIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuVGFrZUZvY3VzKEZv
Y3VzRGlyZWN0aW9uKQogewogICAgIC8vIEZvciBub3cgdGhlIGJyb3dzZXIgY2FuIGFsd2F5cyB0
YWtlIGZvY3VzIGlmIHdlJ3JlIG5vdCBydW5uaW5nIGxheW91dApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDY3NTk4KQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgc2NhbGVGYWN0b3IoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9jdXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpOworICAgIHZpcnR1YWwg
dm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCBib29sIGNhblRha2VGb2N1
cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhX
ZWJDb3JlOjpGb2N1c0RpcmVjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzZWROb2RlQ2hh
bmdlZChXZWJDb3JlOjpOb2RlKik7CkluZGV4OiBXZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxMjUpCisrKyBXZWJLaXQv
ZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTIz
ICBKdWhhIFNhdm9sYWluZW4gIDxqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hyb21lIGFuZCBDaHJvbWVD
bGllbnQgd2VyZSBtYWRlIHRvIHN1cHBvcnQgZm9jdXNlZCBmcmFtZSBub3RpZmljYXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjE2NQorCisg
ICAgICAgIEFkZGVkIGZvY3VzZWRGcmFtZUNoYW5nZWQgbWV0aG9kIHdoaWNoIGlzIGNhbGxlZCB3
aGVuIGZvY3VzZWQgZnJhbWUgaGFzIGNoYW5nZWQuIFRoaXMgCisgICAgICAgIGluZm9ybWF0aW9u
IGlzIG5lZWRlZCB3aGVuIGFjY2Vzc2luZyBmcmFtZXMgaW4gV2ViS2l0Mi4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRFZmw6OmZvY3VzZWRGcmFtZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oOgorCiAyMDEwLTA5LTIxICBMdWNhcyBEZSBNYXJjaGkg
IDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDY3NTk4KQorKysgV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzgsNiArMTM4LDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1bmZvY3VzKCkKICAgICBldmFz
X29iamVjdF9mb2N1c19zZXQobV92aWV3LCBFSU5BX0ZBTFNFKTsKIH0KIAordm9pZCBDaHJvbWVD
bGllbnRFZmw6OmZvY3VzZWRGcmFtZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKIFBhZ2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMm
IGZlYXR1cmVzKQogewogICAgIEV2YXNfT2JqZWN0KiBuZXdWaWV3ID0gZXdrX3ZpZXdfd2luZG93
X2NyZWF0ZShtX3ZpZXcsIEVJTkFfVFJVRSwgJmZlYXR1cmVzKTsKSW5kZXg6IFdlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaAkocmV2aXNpb24gNjc1OTgpCisrKyBX
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpOwogCisgICAgdmlydHVhbCB2b2lkIGZvY3VzZWRGcmFt
ZUNoYW5nZWQoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rp
b24pOwogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOwogCkluZGV4
OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjgxMjUpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTIzICBKdWhhIFNhdm9sYWluZW4gIDxqdWhhLnNh
dm9sYWluZW5Ad2VlZ28uZmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hyb21lIGFuZCBDaHJvbWVDbGllbnQgd2VyZSBtYWRlIHRvIHN1cHBvcnQg
Zm9jdXNlZCBmcmFtZSBub3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NjE2NQorCisgICAgICAgIEFkZGVkIGZvY3VzZWRGcmFtZUNo
YW5nZWQgbWV0aG9kIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGZvY3VzZWQgZnJhbWUgaGFzIGNoYW5n
ZWQuIFRoaXMgCisgICAgICAgIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB3aGVuIGFjY2Vzc2luZyBm
cmFtZXMgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hh
bmdlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisKIDIw
MTAtMDktMjIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDY3NTk4KQorKysg
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzcsNiArMTM3LDEwIEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojp1bmZvY3VzKCkKICAg
ICAgICAgZ3RrX3dpbmRvd19zZXRfZm9jdXMoR1RLX1dJTkRPVyh3aW5kb3cpLCBOVUxMKTsKIH0K
IAordm9pZCBDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNoYW5nZWQoKQoreworfQorCiBQYWdl
KiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBjb3JlRmVh
dHVyZXMpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IDA7CkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgJKHJldmlzaW9uIDY3NTk4KQor
KysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVh
bCB2b2lkIGZvY3VzKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCk7CiAKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoKTsKKwogICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuVGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbik7CiAKSW5kZXg6IFdl
YktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZwkocmV2aXNpb24gNjgxMjUpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMjMgIEp1aGEgU2F2b2xhaW5lbiAgPGp1aGEu
c2F2b2xhaW5lbkB3ZWVnby5maT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDaHJvbWUgYW5kIENocm9tZUNsaWVudCB3ZXJlIG1hZGUgdG8gc3VwcG9y
dCBmb2N1c2VkIGZyYW1lIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MTY1CisKKyAgICAgICAgQWRkZWQgZm9jdXNlZEZyYW1l
Q2hhbmdlZCBtZXRob2Qgd2hpY2ggaXMgY2FsbGVkIHdoZW4gZm9jdXNlZCBmcmFtZSBoYXMgY2hh
bmdlZC4gVGhpcyAKKyAgICAgICAgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHdoZW4gYWNjZXNzaW5n
IGZyYW1lcyBpbiBXZWJLaXQyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50SGFpa3U6OmZvY3Vz
ZWRGcmFtZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhh
aWt1Lmg6CisKIDIwMTAtMDktMTMgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50SGFpa3UuY3BwCShyZXZpc2lvbiA2NzU5
OCkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRIYWlrdS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SGFpa3U6
OnVuZm9jdXMoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50
SGFpa3U6OmZvY3VzZWRGcmFtZUNoYW5nZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIGJvb2wgQ2hyb21lQ2xpZW50SGFpa3U6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgJKHJldmlzaW9uIDY3NTk4KQorKysgV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDYgKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGZvY3Vz
KCk7CiAgICAgICAgIHZvaWQgdW5mb2N1cygpOwogCisgICAgICAgIHZvaWQgZm9jdXNlZEZyYW1l
Q2hhbmdlZCgpOworCiAgICAgICAgIGJvb2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKTsK
ICAgICAgICAgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOwogCkluZGV4OiBXZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gNjgxMjUpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEwLTA5LTIzICBKdWhhIFNhdm9sYWluZW4gIDxqdWhhLnNhdm9sYWluZW5A
d2VlZ28uZmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hyb21lIGFuZCBDaHJvbWVDbGllbnQgd2VyZSBtYWRlIHRvIHN1cHBvcnQgZm9jdXNlZCBm
cmFtZSBub3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NjE2NQorCisgICAgICAgIEFkZGVkIGZvY3VzZWRGcmFtZUNoYW5nZWQgbWV0
aG9kIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGZvY3VzZWQgZnJhbWUgaGFzIGNoYW5nZWQuIFRoaXMg
CisgICAgICAgIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB3aGVuIGFjY2Vzc2luZyBmcmFtZXMgaW4g
V2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZCk6CisKIDIwMTAtMDktMjEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBD
YXJsc3Nvbi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAkocmV2aXNpb24gNjc1OTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpOwogICAgIHZpcnR1YWwgdm9pZCB1bmZvY3VzKCk7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZCgpOwogICAgIAogICAgIHZpcnR1
YWwgYm9vbCBjYW5UYWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pOwogICAgIHZpcnR1
YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pOwpJbmRleDogV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDY3NTk4
KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2OCw2ICsxNjgsMTAgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnVuZm9j
dXMoKQogICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3VW5mb2N1
czptX3dlYlZpZXddOwogfQogCit2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hh
bmdlZCgpCit7Cit9CisKIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpjYW5UYWtlRm9jdXMoRm9jdXNE
aXJlY3Rpb24pCiB7CiAgICAgLy8gVGhlcmUncyB1bmZvcnR1bmF0ZWx5IG5vIHdheSB0byBkZXRl
cm1pbmUgaWYgd2Ugd2lsbCBiZWNvbWUgZmlyc3QgcmVzcG9uZGVyIGFnYWluCkluZGV4OiBXZWJL
aXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY4MTI1KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEwLTA5LTIzICBKdWhhIFNhdm9sYWluZW4gIDxqdWhhLnNhdm9sYWluZW5A
d2VlZ28uZmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hyb21lIGFuZCBDaHJvbWVDbGllbnQgd2VyZSBtYWRlIHRvIHN1cHBvcnQgZm9jdXNlZCBm
cmFtZSBub3RpZmljYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00NjE2NQorCisgICAgICAgIEFkZGVkIGZvY3VzZWRGcmFtZUNoYW5nZWQgbWV0
aG9kIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGZvY3VzZWQgZnJhbWUgaGFzIGNoYW5nZWQuIFRoaXMg
CisgICAgICAgIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB3aGVuIGFjY2Vzc2luZyBmcmFtZXMgaW4g
V2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oOgorCiAyMDEwLTA5LTIy
ICBBbmRyYXMgQmVjc2kgIDxhYmVjc2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBTcGVjdWxhdGl2
ZSBidWlsZCBmaXggZm9yIHRoZSBRdCBXaW5kb3dzIGJvdHMuCkluZGV4OiBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDY3NTk4KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDYgKzE0NCwxMCBAQCB2b2lkIENocm9tZUNsaWVudFF0Ojp1bmZvY3VzKCkKICAgICB2
aWV3LT5jbGVhckZvY3VzKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50UXQ6OmZvY3VzZWRGcmFt
ZUNoYW5nZWQoKQoreworfQorCiBib29sIENocm9tZUNsaWVudFF0OjpjYW5UYWtlRm9jdXMoRm9j
dXNEaXJlY3Rpb24pCiB7CiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiBjeWNsaW5nIHRocm91
Z2ggbGlua3MvZm9jdXNhYmxlIG9iamVjdHMgYW5kIHdlCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkocmV2aXNpb24gNjc1OTgpCisrKyBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiAr
NjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cygp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpOwogCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKCk7CisKICAgICAgICAgdmlydHVhbCBib29sIGNhblRha2VG
b2N1cyhGb2N1c0RpcmVjdGlvbik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9j
dXNEaXJlY3Rpb24pOwogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjgxMjUpCisrKyBXZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTIzICBKdWhh
IFNhdm9sYWluZW4gIDxqdWhhLnNhdm9sYWluZW5Ad2VlZ28uZmk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hyb21lIGFuZCBDaHJvbWVDbGllbnQg
d2VyZSBtYWRlIHRvIHN1cHBvcnQgZm9jdXNlZCBmcmFtZSBub3RpZmljYXRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjE2NQorCisgICAgICAg
IEFkZGVkIGZvY3VzZWRGcmFtZUNoYW5nZWQgbWV0aG9kIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGZv
Y3VzZWQgZnJhbWUgaGFzIGNoYW5nZWQuIFRoaXMgCisgICAgICAgIGluZm9ybWF0aW9uIGlzIG5l
ZWRlZCB3aGVuIGFjY2Vzc2luZyBmcmFtZXMgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6
OmZvY3VzZWRGcmFtZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorCiAyMDEwLTA5LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCkluZGV4OiBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiA2
NzU5OCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0NiwxMCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
dW5mb2N1cygpCiAgICAgbV93ZWJWaWV3LT51cGRhdGVBY3RpdmVTdGF0ZSgpOwogfQogCit2b2lk
IFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZCgpCit7Cit9CisKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlID0gMDsKSW5kZXg6IFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjc1OTgpCisrKyBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZXVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCiAgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQpAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGZvY3VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKTsKIAorICAgIHZpcnR1YWwg
dm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKCk7CisKICAgICB2aXJ0dWFsIGJvb2wgY2FuVGFrZUZv
Y3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3Vz
KFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKTsKIApJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODEyNSkKKysrIFdl
YktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0w
OS0yMyAgSnVoYSBTYXZvbGFpbmVuICA8anVoYS5zYXZvbGFpbmVuQHdlZWdvLmZpPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9tZSBhbmQgQ2hy
b21lQ2xpZW50IHdlcmUgbWFkZSB0byBzdXBwb3J0IGZvY3VzZWQgZnJhbWUgbm90aWZpY2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYxNjUK
KworICAgICAgICBBZGRlZCBmb2N1c2VkRnJhbWVDaGFuZ2VkIG1ldGhvZCB3aGljaCBpcyBjYWxs
ZWQgd2hlbiBmb2N1c2VkIGZyYW1lIGhhcyBjaGFuZ2VkLiBUaGlzIAorICAgICAgICBpbmZvcm1h
dGlvbiBpcyBuZWVkZWQgd2hlbiBhY2Nlc3NpbmcgZnJhbWVzIGluIFdlYktpdDIuCisKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNocm9tZUNsaWVudFd4Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0Nocm9tZUNsaWVudFd4Lmg6CisKIDIwMTAtMDktMTcgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3guY3BwCShyZXZpc2lvbiA2NzU5
OCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSwxMSBAQCB2b2lkIENocm9tZUNsaWVudFd4Ojp1bmZvY3Vz
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIENocm9tZUNsaWVudFd4Ojpmb2N1
c2VkRnJhbWVDaGFuZ2VkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIENo
cm9tZUNsaWVudFd4OjpjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Nocm9tZUNsaWVudFd4
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvQ2hyb21lQ2xpZW50V3gu
aAkocmV2aXNpb24gNjc1OTgpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9DaHJvbWVDbGll
bnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZm9jdXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpOwogCisgICAgdmly
dHVhbCB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBjYW5U
YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9j
dXNEaXJlY3Rpb24pOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>