<?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>62191</bug_id>
          
          <creation_ts>2011-06-06 23:28:22 -0700</creation_ts>
          <short_desc>[Qt] Creating webkit2 popup menu hooks and adding popup menus to MiniBrowser.</short_desc>
          <delta_ts>2011-12-12 10:06:03 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65875</dependson>
    
    <dependson>67344</dependson>
    
    <dependson>67938</dependson>
    
    <dependson>73560</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416368</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-06 23:28:22 -0700</bug_when>
    <thetext>Creating a simple API for popup menus in QWKPage and implementing MiniBrowser&apos;s popup menus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416379</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-06 23:52:38 -0700</bug_when>
    <thetext>Are you upstreaming the patches from the branch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416380</commentid>
    <comment_count>2</comment_count>
      <attachid>96214</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-06 23:54:25 -0700</bug_when>
    <thetext>Created attachment 96214
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416381</commentid>
    <comment_count>3</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-06 23:54:56 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Are you upstreaming the patches from the branch?

not actually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416385</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-07 00:05:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Are you upstreaming the patches from the branch?
&gt; 
&gt; not actually.

Well we will need to upsteam them at some point, so it would be nice to know the difference. Anything blocking in you upstreaming those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416388</commentid>
    <comment_count>5</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-07 00:13:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; Are you upstreaming the patches from the branch?
&gt; &gt; 
&gt; &gt; not actually.
&gt; 
&gt; Well we will need to upsteam them at some point, so it would be nice to know the difference. Anything blocking in you upstreaming those?

No. Just consider this thing quite simple and straightforward.
And MiniBrowser is not that usefull without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416390</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-07 00:21:04 -0700</bug_when>
    <thetext>
&gt; No. Just consider this thing quite simple and straightforward.
&gt; And MiniBrowser is not that usefull without it.

OK, just make sure that it at least does not block upstreaming the other patches. Upstreaming those would be great of course</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417554</commentid>
    <comment_count>7</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-08 14:43:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; No. Just consider this thing quite simple and straightforward.
&gt; &gt; And MiniBrowser is not that usefull without it.
&gt; 
&gt; OK, just make sure that it at least does not block upstreaming the other patches. Upstreaming those would be great of course

Of course both are similar because they do the same job. But there are differences:

1 - This patch just uses the features that are now available in webkit2. So it does not support multiple selections and possible types are only &apos;Separator&apos; and &apos;Item&apos;.
2 - To enable the use of this API to implement not full screen popups that try to position themselves near to the &lt;select&gt; component the geometry of the component and current scale factor are available.
3 - There are no slots.
4 - A client class is used to communicate back to WebPopupMenuProxyQt instead of using signals.
5 - There are separated pure virtual classes for the contents (QWKPopupMenuData), the client(QWKPopupMenuClient) and for the popup itself(QWKPopupMenu).
5 - WebPopupMenuProxyQt just destroys QWKPopupMenu objects when they are not needed any more, without calling a &apos;hide&apos; method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418322</commentid>
    <comment_count>8</comment_count>
      <attachid>96214</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-06-09 14:48:46 -0700</bug_when>
    <thetext>Comment on attachment 96214
patch

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

I like where this is going. Let&apos;s do another iteration though. :)

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.h:108
&gt; +    typedef QWKPopupMenu* (*CreatePopupMenuFn)(void *);

Style, void * -&gt; void*.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.h:110
&gt; +    QWKPopupMenu* craetePopupMenu();

Typo, createPopupMenu().

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:45
&gt; +

Unnecessary newline.

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:49
&gt; +            return Separator;

Not sure it makes sense that invalid indices claim to be Separators.. is there a precedent for this?
Same comment repeated for all functions in this class, basically. :)

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:78
&gt; +

Unnecessary newline.

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:84
&gt; +    QRect m_rect;
&gt; +    WebCore::TextDirection m_direction;
&gt; +    double m_scaleFactor;
&gt; +    Vector&lt;WebKit::WebPopupItem&gt; m_items;
&gt; +    int m_selectedIndex;

It&apos;s good practice to order member variables by size in descending order, to avoid ballooning the class with padding.

&gt; Tools/MiniBrowser/qt/PopupMenu.cpp:117
&gt; +    m_timer.start(1);

Why not start(0)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418867</commentid>
    <comment_count>9</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-10 13:38:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 96214 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96214&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:49
&gt; &gt; +            return Separator;
&gt; 
&gt; Not sure it makes sense that invalid indices claim to be Separators.. is there a precedent for this?
&gt; Same comment repeated for all functions in this class, basically. :)

Invalid indices are bad anyway. Would it make sense for them to claim to be Items?
Do you think that we should have a type Invalid to be the type of invalid indexes? 

&gt; 
&gt; &gt; Tools/MiniBrowser/qt/PopupMenu.cpp:117
&gt; &gt; +    m_timer.start(1);
&gt; 
&gt; Why not start(0)?

start(0) is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418915</commentid>
    <comment_count>10</comment_count>
      <attachid>96787</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-10 14:22:39 -0700</bug_when>
    <thetext>Created attachment 96787
patch

This patch is a bit different from the previous one. 

The main difference is that in previous patch the QWKPopupMenuData object was only alive during the QWKPopupMenu::show execution. Now the QWKPopupMenu object owns a QWKPopupMenuData object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419100</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-06-10 18:18:01 -0700</bug_when>
    <thetext>I don&apos;t understand why there is a need to allow the client of WebKit2 to control the popup at all.  Can you explain why that level of control is necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419597</commentid>
    <comment_count>12</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-06-13 09:34:24 -0700</bug_when>
    <thetext>(In reply to comment #11)

Hi Sam.

&gt; I don&apos;t understand why there is a need to allow the client of WebKit2 to control the popup at all.  Can you explain why that level of control is necessary.

Because different platforms may need to have different popups in its browsers.

For example, Maemo and Symbian want to have full screen popups, Meego has its own different needs, and all of them want popups that are very different from the ones we usually see in traditional browsers.

QtWebKit is a library and the actual browser developers are the users of it. We want to allow the browser developers to have full control over the appearance and behavior of the popup menus. Look how different the popup menus are in iPhone, iPad and in MacBook for example.

Do you see problems in this approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436409</commentid>
    <comment_count>13</comment_count>
      <attachid>96787</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-13 06:55:54 -0700</bug_when>
    <thetext>Comment on attachment 96787
patch

r- because this won&apos;t apply after the view class refactoring.

Thinking about this, QWKPopupMenu{,Data} is really not the kind of API we want to expose to the end-user, but rather something that belongs in a platform plugin. Popup menus should Just Work(tm) when slapping a QDesktopWebView or QTouchWebView into your application.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436633</commentid>
    <comment_count>14</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2011-07-13 13:42:28 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 96787 [details])
&gt; r- because this won&apos;t apply after the view class refactoring.
&gt; 
&gt; Thinking about this, QWKPopupMenu{,Data} is really not the kind of API we want to expose to the end-user, but rather something that belongs in a platform plugin. Popup menus should Just Work(tm) when slapping a QDesktopWebView or QTouchWebView into your application.

I think there is a value in customizing the popup menu. The same menu might not be suitable for all applications using QDesktopWebView or QTouchWebView.
In webkit1 we achieved that with the actions that QWebPage was exposing, and I hope we can have the same flexibility in webkit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447339</commentid>
    <comment_count>15</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-08-05 12:30:26 -0700</bug_when>
    <thetext>*** Bug 47900 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448650</commentid>
    <comment_count>16</comment_count>
      <attachid>103369</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-09 10:13:03 -0700</bug_when>
    <thetext>Created attachment 103369
Patch

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448703</commentid>
    <comment_count>17</comment_count>
      <attachid>103369</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-09 11:36:40 -0700</bug_when>
    <thetext>Comment on attachment 103369
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h:71
&gt; +    void setCreateNewPopupMenuFunction(QWKPopupMenuFactory*, void* data);
&gt; +    QWKPopupMenu* createPopupMenu(const QWKPopupMenuData*, QWKPopupMenuClient*);
&gt; +

No no no no no no
The whole idea is to have a simple component you integrate into QML and provide everything you need.
Especially in the current public views, which are supposed to be simplified as much as possible.

QWKPopupMenu -&gt; We have dropped the &quot;WK&quot; prefix in trunk.

If it is required to have a popup menu exposed in the views, then this needs to be hidden by an other in QML. Ideally, if the feature is implemented correct, you would have it working without making any change to MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449844</commentid>
    <comment_count>18</comment_count>
      <attachid>103638</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-11 09:54:41 -0700</bug_when>
    <thetext>Created attachment 103638
Patch

Update patch with suggestions discussed in the irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449847</commentid>
    <comment_count>19</comment_count>
      <attachid>103639</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-11 09:57:27 -0700</bug_when>
    <thetext>Created attachment 103639
Patch

Changelog updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449931</commentid>
    <comment_count>20</comment_count>
      <attachid>103639</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-11 12:29:46 -0700</bug_when>
    <thetext>Comment on attachment 103639
Patch

Could that all thing could be something like :
class QWebKitPopup {
    setItems(const Vector&lt;WebPopupItem&gt;&amp; items) // I oversimplify here
    show(const QRect&amp; geometry);
    hide();
    selectItem(int index) 
}

and QDesktopWebView/QTouchWebView has a void registerWebKitPopup(QWebKitPopup*);

The implementation in desktopwebview creates a default QWebKitPopup which implements a QComboBox or whatever is coming after.

At least it makes the API looks nicer for the touch view. It also allows 3rd party to override the way the popup is shown/rendered. I could totally do a QWebKitPopup based on QML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449933</commentid>
    <comment_count>21</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-11 12:31:07 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 103639 [details])
&gt; Could that all thing could be something like :
&gt; class QWebKitPopup {
&gt;     setItems(const Vector&lt;WebPopupItem&gt;&amp; items) // I oversimplify here
&gt;     show(const QRect&amp; geometry);
&gt;     hide();
&gt;     selectItem(int index) 
&gt; }
&gt; 
&gt; and QDesktopWebView/QTouchWebView has a void registerWebKitPopup(QWebKitPopup*);
&gt; 
&gt; The implementation in desktopwebview creates a default QWebKitPopup which implements a QComboBox or whatever is coming after.
&gt; 
&gt; At least it makes the API looks nicer for the touch view. It also allows 3rd party to override the way the popup is shown/rendered. I could totally do a QWebKitPopup based on QML.

That was the old patch more or less. I really liked the previous one rather than the new approach, sorry to say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449939</commentid>
    <comment_count>22</comment_count>
      <attachid>103639</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-08-11 12:40:45 -0700</bug_when>
    <thetext>Comment on attachment 103639
Patch

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

I think that we could have different WebPopupMenuProxy implementations. We could implement a simple one using QComboBox and use it for now. Then we would have something very similar to what was proposed in previous patch, having QtWebPageProxy::createPopupMenuProxy as the factory.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:174
&gt; +void QDesktopWebViewPrivate::showPopupMenu(QSharedPointer&lt;QComboBox&gt; comboBox)

Why to use a shared pointer if the ownership of this object is not shared?

I don&apos;t like it. Why is QComboBox been used by more then one class? It seems dirty and ugly.

&gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp:201
&gt; +void TouchViewInterface::showPopupMenu(QSharedPointer&lt;QComboBox&gt;)

Is touch interface going to use QComboBox as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449951</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-11 12:54:51 -0700</bug_when>
    <thetext>Did you guys look at what API we are using for the N9 browser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449953</commentid>
    <comment_count>24</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-11 12:55:42 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 103639 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103639&amp;action=review
&gt; 
&gt; I think that we could have different WebPopupMenuProxy implementations. We could implement a simple one using QComboBox and use it for now. Then we would have something very similar to what was proposed in previous patch, having QtWebPageProxy::createPopupMenuProxy as the factory.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:174
&gt; &gt; +void QDesktopWebViewPrivate::showPopupMenu(QSharedPointer&lt;QComboBox&gt; comboBox)
&gt; 
&gt; Why to use a shared pointer if the ownership of this object is not shared?
&gt; 
&gt; I don&apos;t like it. Why is QComboBox been used by more then one class? It seems dirty and ugly.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp:201
&gt; &gt; +void TouchViewInterface::showPopupMenu(QSharedPointer&lt;QComboBox&gt;)
&gt; 
&gt; Is touch interface going to use QComboBox as well?
 
+1 I don&apos;t like it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449955</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-08-11 12:56:40 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 103639 [details] [details])
&gt; &gt; Could that all thing could be something like :
&gt; &gt; class QWebKitPopup {

I really dislike the name popup, I think we call our class something with selector on the N9 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449997</commentid>
    <comment_count>26</comment_count>
      <attachid>103639</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-11 13:28:55 -0700</bug_when>
    <thetext>Comment on attachment 103639
Patch

I&apos;l review later but I am still missing something with this solution.
Before patching anything, I would like someone who know QML better to find a way to have:
-a nice public API for QML developers
-a way for use to write QML code (like creating the popup window with QtComponents) without breaking the nice API

Yes, we will have to cheat with QComboBox for now since Qt components is not ready. But, that should not prevent us from doing the right thing in WebKit. Once we have a clear view of where we go, then we can decide if this is the right solution for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450011</commentid>
    <comment_count>27</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-11 13:53:38 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 103639 [details])
&gt; I&apos;l review later but I am still missing something with this solution.
&gt; Before patching anything, I would like someone who know QML better to find a way to have:
&gt; -a nice public API for QML developers
&gt; -a way for use to write QML code (like creating the popup window with QtComponents) without breaking the nice API

The way I think it could be done is to expose a property Q_PROPERTY(QDesktopWebViewExperimental* private READ ...) which contains all the private API that is not tested/stable. It&apos;s the QML way to do in C++ what you can achieve when you include Qt private headers. The property is not documented but accessible. There is no need to worry about the binary compatibility and we can remove this property as we want in the future. It&apos;s also easy for a code to move from desktopwebview.private.foo() to desktopwebview.foo() when the API is promoted. We can support revision as well. It is much better than a regular C++ subclass that is exposed in QML as a separate object/component because I don&apos;t need to change the name of the component/import if I decide to remove the usage of private stuff (or to use it). If you are worry about the getter of the private property being public in the QDesktopWebView h file, we can just use Q_PRIVATE_PROPERTY and it is possible to move the getter in the d pointer, so no public leak of that property :D.

A factory is good enough as you will give the responsibility of the popup creator passed to the factory to create the popup and styles it the way it wants. Though a default implementation based on QCombobox could be provided. I don&apos;t think it matters with QtComponents as to the popup can&apos;t be integrated with the scene QDesktopWebView/TouchWebView uses (the popup need to go out of the window, at least on desktop or it could be a fullscreen separate top level widget like Maemo/Symbian). Modality is also something solved easily with a regular Qt::Popup widget that is *really* tricky in QML and doesn&apos;t follow the DE you are using.


&gt; 
&gt; Yes, we will have to cheat with QComboBox for now since Qt components is not ready. But, that should not prevent us from doing the right thing in WebKit. Once we have a clear view of where we go, then we can decide if this is the right solution for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450014</commentid>
    <comment_count>28</comment_count>
      <attachid>103664</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-11 13:55:13 -0700</bug_when>
    <thetext>Created attachment 103664
Patch

This patch is a working in progress. The factory was moved to the private implementation and QDesktopWebView/QTouchWebView can implement it own combobox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450048</commentid>
    <comment_count>29</comment_count>
      <attachid>103664</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2011-08-11 14:45:50 -0700</bug_when>
    <thetext>Comment on attachment 103664
Patch

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

&gt; Source/WebKit2/UIProcess/qt/DesktopPopupMenu.cpp:55
&gt; +DesktopPopupMenu::DesktopPopupMenu(const QWKPopupMenuData* data, QWKPopupMenuClient* client, QWidget* parent)

QWK prefix have been dropped.

&gt; Source/WebKit2/UIProcess/qt/qwkpopupmenu.h:27
&gt; +class QWKPopupMenuData {

These classes (QWKPopupMenuData and QWKPopupMenu) does not make sense if they are not going to be public.
They are redundant, add a lot of complexity and no value. I think that we should not have them.

If we are not going to have public classes then we should inherit straight from WebPopupMenuProxy and return the customized object from QtWebPageProxy::createPopupMenuProxy.

For example, we could have

    class QComboBoxWebPopupMenuProxy : public WebPopupMenuProxy {
    public:
        QComboBoxWebPopupMenuProxy(..., QWidget* parentWidget);

    ...
    }

QDesktopWebPageProxy could then return an instance of this class by overriding QtWebPageProxy::createPopupMenuProxy.

I am considering that there will be no public API for popup menu delegates. But we should wait for the discussion about QML API to go further before taking any decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451794</commentid>
    <comment_count>30</comment_count>
      <attachid>104076</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-16 12:20:49 -0700</bug_when>
    <thetext>Created attachment 104076
Patch

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452231</commentid>
    <comment_count>31</comment_count>
      <attachid>104171</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-17 07:08:44 -0700</bug_when>
    <thetext>Created attachment 104171
Patch

Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452360</commentid>
    <comment_count>32</comment_count>
      <attachid>104171</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-17 10:56:20 -0700</bug_when>
    <thetext>Comment on attachment 104171
Patch

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

I didn&apos;t do a full review yet but I like better that change.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2399
&gt; +#if !PLATFORM(QT)

A comment here on why? I can&apos;t see why you do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452411</commentid>
    <comment_count>33</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-17 11:31:42 -0700</bug_when>
    <thetext>After showPopupMenu is called, WebPopupMenuProxy::invalidate() clears the m_client pointer reference. This is not interesting for us because we are using m_client to send the hidePopup event for WebProcess when needed.

(In reply to comment #32)
&gt; (From update of attachment 104171 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104171&amp;action=review
&gt; 
&gt; I didn&apos;t do a full review yet but I like better that change.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2399
&gt; &gt; +#if !PLATFORM(QT)
&gt; 
&gt; A comment here on why? I can&apos;t see why you do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453812</commentid>
    <comment_count>34</comment_count>
      <attachid>104171</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-19 07:35:05 -0700</bug_when>
    <thetext>Comment on attachment 104171
Patch

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

I talked with Jens about using the desktop QML components. That project is just not gonna cut it, and we should not rely on it for now.

Since we have to get rid of QWidget, Jens suggest we put all dependencies to QWidget in plugins. That will be quite some work, but that is something to keep in mind.

I apologize for blocking this patch for a while. I believed the Desktop components were going to make it to Qt5.


When it comes to this patch...this patch looks very weird. Nothing is used in the standard way. That might be correct, but that requires explanations.

&gt; Source/WebKit2/ChangeLog:7
&gt; +        This patch implements a simple QtWebKit WebKit2 popup menu in DesktopWebView.
&gt; +

This changelog needs a lot more explanations.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2401
&gt; +#if !PLATFORM(QT)
&gt;      protectedActivePopupMenu-&gt;invalidate();
&gt; +#endif

This invalidate() is here for good reasons. The way WebPopupMenuProxy:: showPopupMenu() is designed is to be used as a blocking API.

I would prefer to refactor this assumption if necessary instead of adding a #ifdef for Qt. Otherwise you are abusing the design of the class and it is opening gates for future bugs when refactoring WebPopupMenuProxy.

&gt; Source/WebKit2/UIProcess/qt/QComboBoxWebPopupMenuProxy.cpp:116
&gt; +
&gt; +    QMouseEvent event(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton,
&gt; +                      Qt::LeftButton, Qt::NoModifier);
&gt; +    QCoreApplication::sendEvent(m_combo, &amp;event);

This needs comments because that looks really weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454018</commentid>
    <comment_count>35</comment_count>
      <attachid>104551</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-19 13:20:15 -0700</bug_when>
    <thetext>Created attachment 104551
Patch

Updated patch. Use QEventLoop to block  the main event loop when the popup is being showed and improve ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454045</commentid>
    <comment_count>36</comment_count>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-19 13:43:35 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 104171 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104171&amp;action=review
&gt; 
&gt; I talked with Jens about using the desktop QML components. That project is just not gonna cut it, and we should not rely on it for now.
&gt; 
&gt; Since we have to get rid of QWidget, Jens suggest we put all dependencies to QWidget in plugins. That will be quite some work, but that is something to keep in mind.

This can be the next step.

&gt; 
&gt; I apologize for blocking this patch for a while. I believed the Desktop components were going to make it to Qt5.
&gt; 
&gt; 
&gt; When it comes to this patch...this patch looks very weird. Nothing is used in the standard way. That might be correct, but that requires explanations.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:7
&gt; &gt; +        This patch implements a simple QtWebKit WebKit2 popup menu in DesktopWebView.
&gt; &gt; +
&gt; 
&gt; This changelog needs a lot more explanations.

Ok

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2401
&gt; &gt; +#if !PLATFORM(QT)
&gt; &gt;      protectedActivePopupMenu-&gt;invalidate();
&gt; &gt; +#endif
&gt; 
&gt; This invalidate() is here for good reasons. The way WebPopupMenuProxy:: showPopupMenu() is designed is to be used as a blocking API.
&gt; 
&gt; I would prefer to refactor this assumption if necessary instead of adding a #ifdef for Qt. Otherwise you are abusing the design of the class and it is opening gates for future bugs when refactoring WebPopupMenuProxy.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/QComboBoxWebPopupMenuProxy.cpp:116
&gt; &gt; +
&gt; &gt; +    QMouseEvent event(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton,
&gt; &gt; +                      Qt::LeftButton, Qt::NoModifier);
&gt; &gt; +    QCoreApplication::sendEvent(m_combo, &amp;event);
&gt; 
&gt; This needs comments because that looks really weird.

Ok. This is explained in the ChangeLog now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454610</commentid>
    <comment_count>37</comment_count>
      <attachid>104551</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-22 08:27:51 -0700</bug_when>
    <thetext>Comment on attachment 104551
Patch

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

&gt; Source/WebKit2/WebKit2.pro:240
&gt;      UIProcess/qt/ClientImpl.h \
&gt; +    UIProcess/qt/QComboBoxWebPopupMenuProxy.h \
&gt;      UIProcess/qt/TouchViewInterface.h \

Alphabetical order.

&gt; Source/WebKit2/WebKit2.pro:473
&gt;      UIProcess/qt/ClientImpl.cpp \
&gt; +    UIProcess/qt/QComboBoxWebPopupMenuProxy.cpp \
&gt;      UIProcess/qt/TouchViewInterface.cpp \

Alphabetical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454619</commentid>
    <comment_count>38</comment_count>
      <attachid>104682</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-22 08:56:45 -0700</bug_when>
    <thetext>Created attachment 104682
Patch

Proposed patch. Put the files in alphabetical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454659</commentid>
    <comment_count>39</comment_count>
      <attachid>104691</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-22 10:20:37 -0700</bug_when>
    <thetext>Created attachment 104691
Patch

Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456975</commentid>
    <comment_count>40</comment_count>
      <attachid>105215</attachid>
    <who name="Igor Trindade Oliveira">igor.oliveira</who>
    <bug_when>2011-08-25 10:41:00 -0700</bug_when>
    <thetext>Created attachment 105215
Patch

Proposed patch. Share code with WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458188</commentid>
    <comment_count>41</comment_count>
      <attachid>105215</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-08-29 05:56:40 -0700</bug_when>
    <thetext>Comment on attachment 105215
Patch

I like that one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459790</commentid>
    <comment_count>42</comment_count>
      <attachid>105215</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-08-31 11:44:16 -0700</bug_when>
    <thetext>Comment on attachment 105215
Patch

Removing r=? for now. After discussing this patch with Igor, we decided to make another version and upload it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519293</commentid>
    <comment_count>43</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-12-12 10:04:50 -0800</bug_when>
    <thetext>Finally closing this. Bug 73560.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519294</commentid>
    <comment_count>44</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-12-12 10:06:03 -0800</bug_when>
    <thetext>Finally closing this. Bug 73560 added the itemSelector property to experimental, that can be used to customize popup menus using QML. MiniBrowser was updated to use it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96214</attachid>
            <date>2011-06-06 23:54:25 -0700</date>
            <delta_ts>2011-06-10 14:22:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>27281</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAzYTAxMzE3MGNiY2Q1MWI2NzY1ZTY0YzlkMGQ3ZWYwNjcxMTE5NzJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgNyBKdW4gMjAxMSAwMzo0NTo0NiAtMDMwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gQ3JlYXRpbmcgd2Via2l0MiBwb3B1cCBtZW51IGhvb2tzIGFuZCBhZGRpbmcgcG9w
dXAgbWVudXMgdG8gTWluaUJyb3dzZXIuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjIxOTEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL1dlYktp
dDI6CgpDcmVhdGluZyBhIHNpbXBsZSBBUEkgZm9yIHBvcHVwIG1lbnVzIGluIFFXS1BhZ2UgYW5k
IGltcGxlbWVudGluZyBNaW5pQnJvd3NlcidzCnBvcHVwIG1lbnVzLgoKUVdLUGFnZSBub3cgaGF2
ZSBtZXRob2RzIHRvIHNldCBhIGZhY3RvcnkgZnVuY3Rpb24gZm9yIHBvcHVwIG1lbnVzIGNyZWF0
aW9uIGFuZAp0byBhY3R1YWxseSBjcmVhdGUgdGhlIHBvcHVwcyB1c2luZyB0aGUgZmFjdG9yeS4g
VGhlIGZhY3RvcnkgY3JlYXRlcyBvYmplY3RzIG9mIHRoZQpjbGFzcyBRV0tQb3B1cE1lbnUuCgoq
IFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6CihRV0tQYWdlUHJpdmF0ZTo6UVdLUGFnZVBy
aXZhdGUpOgooUVdLUGFnZVByaXZhdGU6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKFFXS1BhZ2U6
OnNldENyZWF0ZU5ld1BvcHVwTWVudUZ1bmN0aW9uKToKKFFXS1BhZ2U6OmNyYWV0ZVBvcHVwTWVu
dSk6CiogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmg6CiogVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlX3AuaDoKCkZpbGUgcXdrcG9wdXBtZW51LmggaGF2ZSB0aGUgYWJzdHJhY3QgY2xhc3NlcyBy
ZWxhdGVkIHRvIHBvcHVwIG1lbnVzLiBUaGUgb2JqZWN0cyBvZgpjbGFzcyBRV0tQb3B1cE1lbnUg
Y3JlYXRlZCBieSB0aGUgZmFjdG9yeSB1c2UgY2xhc3NlcyBRV0tQb3B1cE1lbnVEYXRhIGFuZCBR
V0tQb3B1cE1lbnVDbGllbnQKdG8gcmVjZWl2ZSBwb3B1cCBjb250ZW50cyBhbmQgdG8gc2V0IHRo
ZSBzZWxlY3RlZCBpbmRleC4KCiogVUlQcm9jZXNzL0FQSS9xdC9xd2twb3B1cG1lbnUuaDogQWRk
ZWQuCihRV0tQb3B1cE1lbnVEYXRhOjp+UVdLUG9wdXBNZW51RGF0YSk6CihRV0tQb3B1cE1lbnU6
On5RV0tQb3B1cE1lbnUpOgoqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgoKQ2xhc3MgV2ViUG9wdXBNZW51UHJveHlRdCB1
c2VzIFFXS1BvcHVwTWVudSBvYmplY3RzIGFuZCBwcm92aWRlcyB0byB0aGVtIHRoZSBpbmZvcm1h
dGlvbgp0aGF0IHRoZXkgbmVlZC4KCiogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQu
Y3BwOgooUG9wdXBNZW51RGF0YTo6UG9wdXBNZW51RGF0YSk6CihQb3B1cE1lbnVEYXRhOjppdGVt
VHlwZSk6CihQb3B1cE1lbnVEYXRhOjppdGVtVGV4dERpcmVjdGlvbik6CihQb3B1cE1lbnVEYXRh
OjppdGVtVGV4dCk6CihQb3B1cE1lbnVEYXRhOjppdGVtQWNjZXNzaWJpbGl0eVRleHQpOgooUG9w
dXBNZW51RGF0YTo6aXRlbVRvb2xUaXApOgooUG9wdXBNZW51RGF0YTo6aXRlbUlzRW5hYmxlZCk6
CihQb3B1cE1lbnVEYXRhOjppdGVtSXNMYWJlbCk6CihQb3B1cE1lbnVEYXRhOjppdGVtSXNTZWxl
Y3RlZCk6CihQb3B1cE1lbnVEYXRhOjppdGVtSGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKToKKFBv
cHVwTWVudURhdGE6Oml0ZW1Db3VudCk6CihQb3B1cE1lbnVEYXRhOjpnZW9tZXRyeSk6CihQb3B1
cE1lbnVEYXRhOjpzY2FsZUZhY3Rvcik6CihQb3B1cE1lbnVEYXRhOjp0ZXh0RGlyZWN0aW9uKToK
KFBvcHVwTWVudURhdGE6OmlzVmFsaWRJbmRleCk6CihXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5
UXQ6OldlYlBvcHVwTWVudVByb3h5UXQpOgooV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0Ojpz
aG93UG9wdXBNZW51KToKKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVu
dSk6CihXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNlbGVjdEl0ZW0pOgoqIFVJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6CihXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6
OmNyZWF0ZSk6CgoqIFdlYktpdDJBUEkucHJpOgoKVG9vbHM6CgpNaW5pQnJvd3NlciB1c2VzIHRo
ZSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdG8gaW1wbGVtZW50IHBvcHVwIG1lbnVzLiBUaGlzIGltcGxl
bWVudGF0aW9uCnVzZXMgUUNvbWJvQm94ZXMgdG8gcHJvdmlkZSB0aGUgcG9wdXBzLgoKKiBNaW5p
QnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHA6CihCcm93c2VyVmlldzo6QnJvd3NlclZpZXcpOgoo
QnJvd3NlclZpZXc6OmNyZWF0ZVBvcHVwTWVudSk6CiogTWluaUJyb3dzZXIvcXQvQnJvd3NlclZp
ZXcuaDoKKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86CiogTWluaUJyb3dzZXIvcXQv
UG9wdXBNZW51LmNwcDogQWRkZWQuCihQb3B1cENvbWJvOjpQb3B1cENvbWJvKToKKFBvcHVwQ29t
Ym86OmhpZGVQb3B1cCk6CihQb3B1cENvbWJvOjpldmVudEZpbHRlcik6CihQb3B1cE1lbnU6OlBv
cHVwTWVudSk6CihQb3B1cE1lbnU6On5Qb3B1cE1lbnUpOgooUG9wdXBNZW51OjpzaG93KToKKFBv
cHVwTWVudTo6c2V0SW5kZXgpOgooUG9wdXBNZW51Ojpkb1NldEluZGV4KToKKiBNaW5pQnJvd3Nl
ci9xdC9Qb3B1cE1lbnUuaDogQWRkZWQuCihQb3B1cE1lbnU6OmFjdGl2ZUNoYW5nZWQpOgotLS0K
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2
MCArKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAg
ICAgICAgIHwgICAxNyArKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2UuaCAgICAgICAgICB8ICAgIDUgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlX3AuaCAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcG9wdXBtZW51LmggICAgIHwgICA2MiArKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgIDIgKwogLi4uL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwICAgfCAgIDgwICsrKysrKysrKysr
Ky0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggIHwg
ICAxNyArKy0KIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMjcgKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3Bw
ICAgICAgICAgICAgICAgfCAgICA4ICsrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmll
dy5oICAgICAgICAgICAgICAgICB8ICAgIDQgKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXIucHJvICAgICAgICAgICAgICAgfCAgICAyICsKIFRvb2xzL01pbmlCcm93c2VyL3F0L1Bv
cHVwTWVudS5jcHAgICAgICAgICAgICAgICAgIHwgIDEyNiArKysrKysrKysrKysrKysrKysrKwog
VG9vbHMvTWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmggICAgICAgICAgICAgICAgICAgfCAgIDY3
ICsrKysrKysrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCA0NzIgaW5zZXJ0aW9ucygrKSwgOSBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a3BvcHVwbWVudS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIv
cXQvUG9wdXBNZW51LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0
L1BvcHVwTWVudS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ3ZDQ0NWUuLmQyNDNjYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MyBAQAorMjAxMS0wNi0wNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRk
aW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAgICAgICBDcmVhdGluZyBhIHNpbXBs
ZSBBUEkgZm9yIHBvcHVwIG1lbnVzIGluIFFXS1BhZ2UgYW5kIGltcGxlbWVudGluZyBNaW5pQnJv
d3NlcidzCisgICAgICAgIHBvcHVwIG1lbnVzLgorCisgICAgICAgIFFXS1BhZ2Ugbm93IGhhdmUg
bWV0aG9kcyB0byBzZXQgYSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBwb3B1cCBtZW51cyBjcmVhdGlv
biBhbmQKKyAgICAgICAgdG8gYWN0dWFsbHkgY3JlYXRlIHRoZSBwb3B1cHMgdXNpbmcgdGhlIGZh
Y3RvcnkuIFRoZSBmYWN0b3J5IGNyZWF0ZXMgb2JqZWN0cyBvZiB0aGUKKyAgICAgICAgY2xhc3Mg
UVdLUG9wdXBNZW51LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoK
KyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQ
YWdlUHJpdmF0ZTo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoUVdLUGFnZTo6c2V0
Q3JlYXRlTmV3UG9wdXBNZW51RnVuY3Rpb24pOgorICAgICAgICAoUVdLUGFnZTo6Y3JhZXRlUG9w
dXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oOgorCisgICAgICAgIEZpbGUgcXdrcG9wdXBt
ZW51LmggaGF2ZSB0aGUgYWJzdHJhY3QgY2xhc3NlcyByZWxhdGVkIHRvIHBvcHVwIG1lbnVzLiBU
aGUgb2JqZWN0cyBvZgorICAgICAgICBjbGFzcyBRV0tQb3B1cE1lbnUgY3JlYXRlZCBieSB0aGUg
ZmFjdG9yeSB1c2UgY2xhc3NlcyBRV0tQb3B1cE1lbnVEYXRhIGFuZCBRV0tQb3B1cE1lbnVDbGll
bnQKKyAgICAgICAgdG8gcmVjZWl2ZSBwb3B1cCBjb250ZW50cyBhbmQgdG8gc2V0IHRoZSBzZWxl
Y3RlZCBpbmRleC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcG9wdXBtZW51Lmg6
IEFkZGVkLgorICAgICAgICAoUVdLUG9wdXBNZW51RGF0YTo6flFXS1BvcHVwTWVudURhdGEpOgor
ICAgICAgICAoUVdLUG9wdXBNZW51Ojp+UVdLUG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93
UG9wdXBNZW51KToKKworICAgICAgICBDbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IHVzZXMgUVdL
UG9wdXBNZW51IG9iamVjdHMgYW5kIHByb3ZpZGVzIHRvIHRoZW0gdGhlIGluZm9ybWF0aW9uCisg
ICAgICAgIHRoYXQgdGhleSBuZWVkLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwOgorICAgICAgICAoUG9wdXBNZW51RGF0YTo6UG9wdXBNZW51RGF0YSk6
CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtVHlwZSk6CisgICAgICAgIChQb3B1cE1lbnVE
YXRhOjppdGVtVGV4dERpcmVjdGlvbik6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtVGV4
dCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtQWNjZXNzaWJpbGl0eVRleHQpOgorICAg
ICAgICAoUG9wdXBNZW51RGF0YTo6aXRlbVRvb2xUaXApOgorICAgICAgICAoUG9wdXBNZW51RGF0
YTo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSXNMYWJlbCk6
CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSXNTZWxlY3RlZCk6CisgICAgICAgIChQb3B1
cE1lbnVEYXRhOjppdGVtSGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKToKKyAgICAgICAgKFBvcHVw
TWVudURhdGE6Oml0ZW1Db3VudCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpnZW9tZXRyeSk6
CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChQb3B1cE1l
bnVEYXRhOjp0ZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKFBvcHVwTWVudURhdGE6OmlzVmFsaWRJ
bmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OldlYlBvcHVwTWVu
dVByb3h5UXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9w
dXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVw
TWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNlbGVjdEl0ZW0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBXZWJL
aXQyQVBJLnByaToKKwogMjAxMS0wNi0wNiAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKaW5kZXggMzgwOGYyMy4uNzJkM2IwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCkBAIC05Niw2
ICs5Niw4IEBAIFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZShRV0tQYWdlKiBxcSwgUVdL
Q29udGV4dCogYywgV0tQYWdlR3JvdXBSZWYgcGFnZUdyCiAgICAgLCBjcmVhdGVOZXdQYWdlRm4o
MCkKICAgICAsIGJhY2tpbmdTdG9yZVR5cGUoUUdyYXBoaWNzV0tWaWV3OjpTaW1wbGUpCiAgICAg
LCBpc0Nvbm5lY3RlZFRvRW5naW5lKHRydWUpCisgICAgLCBwb3B1cE1lbnVGYWN0b3J5KDApCisg
ICAgLCBwb3B1cE1lbnVGYWN0b3J5RGF0YSgwKQogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBz
aXplb2YoYWN0aW9ucykpOwogICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVX
ZWJQYWdlKHRoaXMsIHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKQEAgLTI0Niw5ICsyNDgsOSBAQCB2
b2lkIFFXS1BhZ2VQcml2YXRlOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmLCBib29sKQogewogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBR
V0tQYWdlUHJpdmF0ZTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KikKK1Bhc3NS
ZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVQb3B1cE1lbnVQ
cm94eShXZWJQYWdlUHJveHkqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJv
eHlRdDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZShx
LCBjbGllbnQpOwogfQogCiBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFFXS1BhZ2VQ
cml2YXRlOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCkBAIC01OTQsNiAr
NTk2LDE3IEBAIFFXS1BhZ2U6OlZpZXdwb3J0QXR0cmlidXRlcyBRV0tQYWdlOjp2aWV3cG9ydEF0
dHJpYnV0ZXNGb3JTaXplKGNvbnN0IFFTaXplJiBhdmFpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAordm9pZCBRV0tQYWdlOjpzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihDcmVhdGVQb3B1
cE1lbnVGbiBmdW5jdGlvbiwgdm9pZCogZGF0YSkKK3sKKyAgICBkLT5wb3B1cE1lbnVGYWN0b3J5
ID0gZnVuY3Rpb247CisgICAgZC0+cG9wdXBNZW51RmFjdG9yeURhdGEgPSBkYXRhOworfQorCitR
V0tQb3B1cE1lbnUqIFFXS1BhZ2U6OmNyYWV0ZVBvcHVwTWVudSgpCit7CisgICAgcmV0dXJuIGQt
PnBvcHVwTWVudUZhY3RvcnkgPyBkLT5wb3B1cE1lbnVGYWN0b3J5KGQtPnBvcHVwTWVudUZhY3Rv
cnlEYXRhKSA6IDA7Cit9CisKIHZvaWQgUVdLUGFnZTo6c2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRz
UmVjdChjb25zdCBRUmVjdCYgcmVjdCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVElMRURfQkFDS0lO
R19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKaW5kZXgg
MzZlY2MyNC4uNWJlYTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmgKQEAgLTIsNiArMiw3IEBACiAjZGVmaW5lIHF3a3BhZ2VfaAogCiAjaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgogI2luY2x1ZGUgPFFBY3Rp
b24+CiAjaW5jbHVkZSA8UU1lbnU+CiAjaW5jbHVkZSA8UU9iamVjdD4KQEAgLTEwNCw2ICsxMDUs
MTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUVdLUGFnZSogKCpDcmVhdGVOZXdQYWdlRm4pKFFX
S1BhZ2UqKTsKICAgICB2b2lkIHNldENyZWF0ZU5ld1BhZ2VGdW5jdGlvbihDcmVhdGVOZXdQYWdl
Rm4gZnVuY3Rpb24pOwogCisgICAgdHlwZWRlZiBRV0tQb3B1cE1lbnUqICgqQ3JlYXRlUG9wdXBN
ZW51Rm4pKHZvaWQgKik7CisgICAgdm9pZCBzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihD
cmVhdGVQb3B1cE1lbnVGbiBmdW5jdGlvbiwgdm9pZCogZGF0YSk7CisgICAgUVdLUG9wdXBNZW51
KiBjcmFldGVQb3B1cE1lbnUoKTsKKwogICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0
IFFTdHJpbmcmKTsKICAgICBRU3RyaW5nIGN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAppbmRleCBkNTY5ZTAyLi44
ZmE2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgK
QEAgLTEzNiw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGU7CiAKICAgICBib29sIGlzQ29ubmVjdGVkVG9Fbmdp
bmU7CisKKyAgICBRV0tQYWdlOjpDcmVhdGVQb3B1cE1lbnVGbiBwb3B1cE1lbnVGYWN0b3J5Owor
ICAgIHZvaWQqIHBvcHVwTWVudUZhY3RvcnlEYXRhOwogfTsKIAogY2xhc3MgUXRWaWV3cG9ydEF0
dHJpYnV0ZXNQcml2YXRlIDogcHVibGljIFFTaGFyZWREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcG9wdXBtZW51LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BvcHVwbWVudS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg1N2JhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a3BvcHVwbWVudS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpZm5kZWYgcXdrcG9wdXBtZW51X2gKKyNkZWZpbmUgcXdrcG9wdXBtZW51
X2gKKworI2luY2x1ZGUgPFFSZWN0PgorI2luY2x1ZGUgPFFTdHJpbmc+CisKK2NsYXNzIFFXS1Bv
cHVwTWVudURhdGEgeworcHVibGljOgorICAgIHZpcnR1YWwgflFXS1BvcHVwTWVudURhdGEoKSB7
IH0KKworICAgIGVudW0gSXRlbVR5cGUgeyBTZXBhcmF0b3IsIEl0ZW0gfTsKKyAgICBlbnVtIFRl
eHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworCisgICAgdmlydHVhbCBJdGVtVHlwZSBpdGVtVHlw
ZShpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHREaXJlY3Rpb24gaXRlbVRleHREaXJl
Y3Rpb24oaW50KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRleHQoaW50
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1BY2Nlc3NpYmlsaXR5VGV4dChp
bnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRvb2xUaXAoaW50KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQoaW50KSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGl0ZW1Jc0xhYmVsKGludCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpdGVtSXNTZWxlY3RlZChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXRl
bUhhc1RleHREaXJlY3Rpb25PdmVycmlkZShpbnQpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
aW50IGl0ZW1Db3VudCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUVJlY3QgZ2VvbWV0cnko
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24oKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgc2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7Cit9
OworCitjbGFzcyBRV0tQb3B1cE1lbnVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RJdGVtKGludCkgPSAwOworfTsKKworY2xhc3MgUVdLUG9wdXBNZW51IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5RV0tQb3B1cE1lbnUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hv
dyhjb25zdCBRV0tQb3B1cE1lbnVEYXRhJiwgUVdLUG9wdXBNZW51Q2xpZW50KikgPSAwOworfTsK
KworI2VuZGlmIC8vIHF3a3BvcHVwbWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGRjM2RiZDkuLjY5OTE1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMzIzLDcgKzIzMjMsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0
RGlyZWN0aW9uLCBjbwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gcHJvdGVjdGVkQWN0
aXZlUG9wdXBNZW51ID0gbV9hY3RpdmVQb3B1cE1lbnU7CiAKICAgICBwcm90ZWN0ZWRBY3RpdmVQ
b3B1cE1lbnUtPnNob3dQb3B1cE1lbnUocmVjdCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4o
dGV4dERpcmVjdGlvbiksIG1fdmlld1NjYWxlRmFjdG9yLCBpdGVtcywgZGF0YSwgc2VsZWN0ZWRJ
bmRleCk7CisjaWYgIVBMQVRGT1JNKFFUKQogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudS0+
aW52YWxpZGF0ZSgpOworI2VuZGlmCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51ID0gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVu
dVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVBy
b3h5UXQuY3BwCmluZGV4IDFlOTdkNzQuLmEyNjkyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKQEAgLTI4LDI2ICsyOCwx
MDAgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgogI2luY2x1ZGUgIldl
YlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgPHF3a3BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKK2NsYXNzIFBvcHVwTWVudURhdGEgOiBwdWJsaWMgUVdLUG9wdXBNZW51RGF0YSB7
CitwdWJsaWM6CisgICAgUG9wdXBNZW51RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3Jl
OjpUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50IHNlbGVjdGVkSW5kZXgpCisgICAg
ICAgIDogbV9yZWN0KHJlY3QpCisgICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAg
ICAgICAsIG1fc2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IpCisgICAgICAgICwgbV9pdGVtcyhpdGVt
cykKKyAgICAgICAgLCBtX3NlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCkKKyAgICB7IH0KKwor
CisgICAgdmlydHVhbCBJdGVtVHlwZSBpdGVtVHlwZShpbnQgaW5kZXgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIWlzVmFsaWRJbmRleChpbmRleCkgfHwgbV9pdGVtc1tpbmRleF0ubV90eXBl
ID09IFdlYktpdDo6V2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpCisgICAgICAgICAgICByZXR1cm4g
U2VwYXJhdG9yOworICAgICAgICByZXR1cm4gSXRlbTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFRl
eHREaXJlY3Rpb24gaXRlbVRleHREaXJlY3Rpb24oaW50IGluZGV4KSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFpc1ZhbGlkSW5kZXgoaW5kZXgpIHx8IG1faXRlbXNbaW5kZXhdLm1fdGV4dERp
cmVjdGlvbiA9PSBXZWJDb3JlOjpSVEwpCisgICAgICAgICAgICByZXR1cm4gUlRMOworICAgICAg
ICByZXR1cm4gTFRSOworICAgIH0KKworICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtVGV4dChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJbmRleChpbmRleCkgPyBtX2l0ZW1zW2luZGV4
XS5tX3RleHQgOiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtQWNjZXNzaWJp
bGl0eVRleHQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpc1ZhbGlkSW5kZXgoaW5kZXgpID8g
bV9pdGVtc1tpbmRleF0ubV9hY2Nlc3NpYmlsaXR5VGV4dCA6IFN0cmluZygpOyB9CisgICAgdmly
dHVhbCBRU3RyaW5nIGl0ZW1Ub29sVGlwKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxp
ZEluZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1fdG9vbFRpcCA6IFN0cmluZygpOyB9Cisg
ICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBp
c1ZhbGlkSW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQgOiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNMYWJlbChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGlzVmFsaWRJbmRleChpbmRleCkgPyBtX2l0ZW1zW2luZGV4XS5tX2lzRW5hYmxlZCA6IGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlbGVjdGVkKGludCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5kZXggPT0gbV9zZWxlY3RlZEluZGV4OyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1I
YXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpc1ZhbGlk
SW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0ubV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUg
OiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlbXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQorICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQorCisgICAgdmlydHVhbCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IFdlYkNv
cmU6OlJUTCkKKyAgICAgICAgICAgIHJldHVybiBSVEw7CisgICAgICAgIHJldHVybiBMVFI7Cisg
ICAgfQorCisKK3ByaXZhdGU6CisgICAgUVJlY3QgbV9yZWN0OworICAgIFdlYkNvcmU6OlRleHRE
aXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgZG91YmxlIG1fc2NhbGVGYWN0b3I7CisgICAgVmVj
dG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiBtX2l0ZW1zOworICAgIGludCBtX3NlbGVjdGVkSW5k
ZXg7CisKKyAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlu
ZGV4ID49IDAgJiYgaW5kZXggPCBtX2l0ZW1zLnNpemUoKTsgfQorfTsKKworCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCi0g
ICAgOiBXZWJQb3B1cE1lbnVQcm94eSgwKQorV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBN
ZW51UHJveHlRdChRV0tQYWdlKiBwYWdlLCBDbGllbnQqIGNsaWVudCkKKyAgICA6IFdlYlBvcHVw
TWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fcGFnZShwYWdlKQogeworICAgIEFTU0VSVChtX3Bh
Z2UpOwogfQogCiBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBNZW51UHJveHlRdCgpCiB7
CiB9CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRS
ZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJf
dCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51
KGNvbnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBk
b3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29u
c3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQogeworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcG9wdXBNZW51ID0gYWRv
cHRQdHIobV9wYWdlLT5jcmFldGVQb3B1cE1lbnUoKSk7CisKKyAgICBpZiAoIW1fcG9wdXBNZW51
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwTWVudS0+c2hvdyhQb3B1cE1lbnVEYXRh
KHJlY3QsIGRpcmVjdGlvbiwgc2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KSwgdGhp
cyk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVudSgpCiB7Cisg
ICAgbV9wb3B1cE1lbnUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpz
ZWxlY3RJdGVtKGludCBpbmRleCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaW5kZXgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJQb3B1cE1lbnVQcm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9w
dXBNZW51UHJveHlRdC5oCmluZGV4IGU3MTk3ZDUuLjdkYTg3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtMjYsMTUgKzI2
LDE5IEBACiAjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5UXRfaAogI2RlZmluZSBXZWJQb3B1cE1l
bnVQcm94eVF0X2gKIAorI2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogCitjbGFzcyBRV0tQYWdl
OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUG9wdXBNZW51UHJveHlRdCA6IHB1
YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDogcHVi
bGljIFdlYlBvcHVwTWVudVByb3h5LCBwcml2YXRlIFFXS1BvcHVwTWVudUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlRdD4gY3JlYXRlKCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoUVdLUGFn
ZSogcGFnZSwgQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlBvcHVwTWVudVByb3h5UXQoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViUG9wdXBNZW51UHJveHlRdChwYWdlLCBjbGllbnQpKTsKICAgICB9CiAgICAgfldlYlBvcHVw
TWVudVByb3h5UXQoKTsKIApAQCAtNDIsNyArNDYsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51UHJveHlR
dCgpOworICAgIFdlYlBvcHVwTWVudVByb3h5UXQoUVdLUGFnZSosIENsaWVudCopOworCisgICAg
dm9pZCBzZWxlY3RJdGVtKGludCk7CisKKyAgICBRV0tQYWdlKiBtX3BhZ2U7CisgICAgT3duUHRy
PFFXS1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggMTcwOTU0OS4uNjhmZjYyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQ
SS5wcmkKQEAgLTEzMCw2ICsxMzAsNyBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3RvcnlfcC5oIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBcCisgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twb3B1cG1lbnUuaCBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVmZXJlbmNlcy5o
IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmggXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGEyMGYwZWYuLjZjM2NmM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wNi0wNiAgTHVpeiBBZ29zdGlu
aSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVu
dSBob29rcyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAgICAgICBN
aW5pQnJvd3NlciB1c2VzIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdG8gaW1wbGVtZW50IHBvcHVw
IG1lbnVzLiBUaGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHVzZXMgUUNvbWJvQm94ZXMgdG8g
cHJvdmlkZSB0aGUgcG9wdXBzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlclZp
ZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KToKKyAgICAgICAgKEJy
b3dzZXJWaWV3OjpjcmVhdGVQb3B1cE1lbnUpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jy
b3dzZXJWaWV3Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5jcHA6IEFkZGVkLgorICAgICAgICAo
UG9wdXBDb21ibzo6UG9wdXBDb21ibyk6CisgICAgICAgIChQb3B1cENvbWJvOjpoaWRlUG9wdXAp
OgorICAgICAgICAoUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIpOgorICAgICAgICAoUG9wdXBNZW51
OjpQb3B1cE1lbnUpOgorICAgICAgICAoUG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKyAgICAgICAg
KFBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChQb3B1cE1lbnU6OnNldEluZGV4KToKKyAgICAg
ICAgKFBvcHVwTWVudTo6ZG9TZXRJbmRleCk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvUG9w
dXBNZW51Lmg6IEFkZGVkLgorICAgICAgICAoUG9wdXBNZW51OjphY3RpdmVDaGFuZ2VkKToKKwog
MjAxMS0wNi0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaXJrIFByYW5rZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L0Jyb3dzZXJWaWV3LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcApp
bmRleCA3ZDY0MjZlLi5lMTAxZDUzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9C
cm93c2VyVmlldy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCcm93c2VyVmlldy5oIgogCisjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmU+CiAKIEJyb3dzZXJWaWV3
OjpCcm93c2VyVmlldyhRR3JhcGhpY3NXS1ZpZXc6OkJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0
b3JlVHlwZSwgUVdLQ29udGV4dCogY29udGV4dCwgUVdpZGdldCogcGFyZW50KQpAQCAtMzgsNiAr
MzksOCBAQCBCcm93c2VyVmlldzo6QnJvd3NlclZpZXcoUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUsIFFXSwogICAgIHNldFNjZW5lKG5ldyBRR3JhcGhp
Y3NTY2VuZSh0aGlzKSk7CiAgICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOwogCisgICAgbV9p
dGVtLT5wYWdlKCktPnNldENyZWF0ZU5ld1BvcHVwTWVudUZ1bmN0aW9uKEJyb3dzZXJWaWV3Ojpj
cmVhdGVQb3B1cE1lbnUsIHRoaXMpOworCiAgICAgc2V0RnJhbWVTaGFwZShRRnJhbWU6Ok5vRnJh
bWUpOwogICAgIHNldEhvcml6b250YWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5
c09mZik7CiAgICAgc2V0VmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5
c09mZik7CkBAIC02MCwzICs2Myw4IEBAIFFHcmFwaGljc1dLVmlldyogQnJvd3NlclZpZXc6OnZp
ZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX2l0ZW07CiB9CisKK1FXS1BvcHVwTWVudSogQnJv
d3NlclZpZXc6OmNyZWF0ZVBvcHVwTWVudSh2b2lkKiBkYXRhKQoreworICAgIHJldHVybiBuZXcg
UG9wdXBNZW51KHJlaW50ZXJwcmV0X2Nhc3Q8QnJvd3NlclZpZXcqPihkYXRhKSk7Cit9CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlclZpZXcuaAppbmRleCA1OTMwMDZlLi44MTdiYmRhIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L0Jyb3dzZXJWaWV3LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJxZ3JhcGhp
Y3N3a3ZpZXcuaCIKICNpbmNsdWRlICJxd2tjb250ZXh0LmgiCiAKK2NsYXNzIFFXS1BvcHVwTWVu
dTsKKwogY2xhc3MgQnJvd3NlclZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzVmlldyB7CiAgICAgUV9P
QkpFQ1QKIApAQCAtNDgsNiArNTAsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUUdy
YXBoaWNzV0tWaWV3KiBtX2l0ZW07CisKKyAgICBzdGF0aWMgUVdLUG9wdXBNZW51KiBjcmVhdGVQ
b3B1cE1lbnUodm9pZCopOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nl
ci5wcm8KaW5kZXggOTI2NjZlOS4uMTNlYzc5NCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93
c2VyLnBybwpAQCAtOCw2ICs4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgTWluaUJyb3dzZXJBcHBs
aWNhdGlvbi5jcHAgXAogICAgIFVybExvYWRlci5jcHAgXAogICAgIHV0aWxzLmNwcCBcCisgICAg
UG9wdXBNZW51LmNwcCBcCiAKIEhFQURFUlMgKz0gXAogICAgIEJyb3dzZXJWaWV3LmggXApAQCAt
MTUsNiArMTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgg
XAogICAgIFVybExvYWRlci5oIFwKICAgICB1dGlscy5oIFwKKyAgICBQb3B1cE1lbnUuaCBcCiAK
IGlzRW1wdHkoT1VUUFVUX0RJUik6IE9VVFBVVF9ESVIgPSAuLi8uLi8uLgogaW5jbHVkZSguLi8u
Li8uLi9Tb3VyY2UvV2ViS2l0LnByaSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L1BvcHVwTWVudS5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1lbnUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDVlZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1lbnUuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKKworI2lmbmRlZiBRVF9OT19D
T01CT0JPWAorCisjaW5jbHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UUFwcGxp
Y2F0aW9uPgorI2luY2x1ZGUgPFFJbnB1dENvbnRleHQ+CisjaW5jbHVkZSA8UU1vdXNlRXZlbnQ+
CisjaW5jbHVkZSA8UVN0YW5kYXJkSXRlbU1vZGVsPgorCitQb3B1cENvbWJvOjpQb3B1cENvbWJv
KFBvcHVwTWVudSogb3duZXIpCisgICAgOiBtX293bmVyKG93bmVyKQoreworICAgIHZpZXcoKS0+
aW5zdGFsbEV2ZW50RmlsdGVyKHRoaXMpOworfQorCit2b2lkIFBvcHVwQ29tYm86OmhpZGVQb3B1
cCgpCit7CisgICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRl
eCgtMSk7Cit9CisKK2Jvb2wgUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0Y2hl
ZCwgUUV2ZW50KiBldmVudCkKK3sKKyAgICBRX0FTU0VSVCh3YXRjaGVkID09IHZpZXcoKSk7CisK
KyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIG1fb3duZXIt
PnNldEluZGV4KC0xKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gUG9wdXBNZW51CisK
K1BvcHVwTWVudTo6UG9wdXBNZW51KFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IG1fY29tYm8oMCkK
KyAgICAsIG1fcGFyZW50KHBhcmVudCkKKyAgICAsIG1fY2xpZW50KDApCisgICAgLCBtX2luZGV4
KC0xKQoreworICAgIG1fdGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZt
X3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChkb1NldEluZGV4KCkpKTsKK30K
KworUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKK3sKKyAgICBpZiAobV9jb21ibykgeworICAgICAg
ICBtX2NvbWJvLT5kZWxldGVMYXRlcigpOworICAgICAgICBtX2NvbWJvID0gMDsKKyAgICB9Cit9
CisKK3ZvaWQgUG9wdXBNZW51OjpzaG93KGNvbnN0IFFXS1BvcHVwTWVudURhdGEmIGRhdGEsIFFX
S1BvcHVwTWVudUNsaWVudCogY2xpZW50KQoreworICAgIGlmICghY2xpZW50IHx8ICFtX3BhcmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisKKyAgICBtX2Nv
bWJvID0gbmV3IFBvcHVwQ29tYm8odGhpcyk7CisgICAgY29ubmVjdChtX2NvbWJvLCBTSUdOQUwo
YWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSkpOworICAgIG1f
Y29tYm8tPnNldFBhcmVudChtX3BhcmVudCk7CisgICAgUVJlY3QgcmVjdCA9IGRhdGEuZ2VvbWV0
cnkoKTsKKyAgICBtX2NvbWJvLT5zZXRHZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVjdC50
b3AoKSwgcmVjdC53aWR0aCgpLCBtX2NvbWJvLT5zaXplSGludCgpLmhlaWdodCgpKSk7CisKKyAg
ICBRU3RhbmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVjdF9jYXN0PFFTdGFuZGFyZEl0ZW1N
b2RlbCo+KG1fY29tYm8tPm1vZGVsKCkpOworICAgIFFfQVNTRVJUKG1vZGVsKTsKKworICAgIGlu
dCBjdXJyZW50SW5kZXggPSAtMTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGRhdGEuaXRlbUNv
dW50KCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGRhdGEuaXRlbVR5cGUoaSkpIHsKKyAgICAg
ICAgY2FzZSBRV0tQb3B1cE1lbnVEYXRhOjpTZXBhcmF0b3I6CisgICAgICAgICAgICBtX2NvbWJv
LT5pbnNlcnRTZXBhcmF0b3IoaSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBR
V0tQb3B1cE1lbnVEYXRhOjpJdGVtOgorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0SXRlbShp
LCBkYXRhLml0ZW1UZXh0KGkpKTsKKyAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFi
bGVkKGRhdGEuaXRlbUlzRW5hYmxlZChpKSk7CisjaWZuZGVmIFFUX05PX1RPT0xUSVAKKyAgICAg
ICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRUb29sVGlwKGRhdGEuaXRlbVRvb2xUaXAoaSkpOwor
I2VuZGlmCisgICAgICAgICAgICBpZiAoZGF0YS5pdGVtSXNTZWxlY3RlZChpKSkKKyAgICAgICAg
ICAgICAgICBjdXJyZW50SW5kZXggPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoY3VycmVudEluZGV4ID49IDApCisgICAgICAgIG1fY29tYm8tPnNl
dEN1cnJlbnRJbmRleChjdXJyZW50SW5kZXgpOworCisgICAgUU1vdXNlRXZlbnQgZXZlbnQoUUV2
ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwgUXQ6OkxlZnRCdXR0b24sCisg
ICAgICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAg
ICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9jb21ibywgJmV2ZW50KTsKK30KKwordm9p
ZCBQb3B1cE1lbnU6OnNldEluZGV4KGludCBpbmRleCkKK3sKKyAgICBtX2luZGV4ID0gaW5kZXg7
CisgICAgbV90aW1lci5zdGFydCgxKTsKK30KKwordm9pZCBQb3B1cE1lbnU6OmRvU2V0SW5kZXgo
KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlbGVjdEl0ZW0obV9p
bmRleCk7Cit9CisKKyNlbmRpZiAvLyBRVF9OT19DT01CT0JPWApkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1l
bnUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWI4YTk5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisjaWZuZGVmIFBvcHVwTWVudV9oCisjZGVmaW5lIFBvcHVw
TWVudV9oCisKKyNpbmNsdWRlICJxd2twb3B1cG1lbnUuaCIKKyNpbmNsdWRlIDxRQ29tYm9Cb3g+
CisjaW5jbHVkZSA8UVRpbWVyPgorCisjaWZuZGVmIFFUX05PX0NPTUJPQk9YCisKK2NsYXNzIFBv
cHVwQ29tYm87CisKK2NsYXNzIFBvcHVwTWVudSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUVdL
UG9wdXBNZW51IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFBvcHVwTWVudShRV2lkZ2V0
Kik7CisgICAgflBvcHVwTWVudSgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVdL
UG9wdXBNZW51RGF0YSYsIFFXS1BvcHVwTWVudUNsaWVudCopOworCitwcml2YXRlIHNsb3RzOgor
ICAgIHZvaWQgYWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpIHsgc2V0SW5kZXgoaW5kZXgpOyB9Cisg
ICAgdm9pZCBkb1NldEluZGV4KCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFBvcHVw
Q29tYm87CisKKyAgICBQb3B1cENvbWJvKiBtX2NvbWJvOworICAgIFFXaWRnZXQqIG1fcGFyZW50
OworICAgIFFXS1BvcHVwTWVudUNsaWVudCogbV9jbGllbnQ7CisgICAgaW50IG1faW5kZXg7Cisg
ICAgUVRpbWVyIG1fdGltZXI7CisKKyAgICB2b2lkIHNldEluZGV4KGludCk7Cit9OworCitjbGFz
cyBQb3B1cENvbWJvIDogcHVibGljIFFDb21ib0JveCB7CitwdWJsaWM6CisgICAgUG9wdXBDb21i
byhQb3B1cE1lbnUqIG93bmVyUG9wdXApOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXAoKTsK
KworcHJpdmF0ZToKKyAgICBQb3B1cE1lbnUqIG1fb3duZXI7CisgICAgYm9vbCBldmVudEZpbHRl
cihRT2JqZWN0KiwgUUV2ZW50Kik7Cit9OworCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKwor
I2VuZGlmIC8vIFBvcHVwTWVudV9oCi0tIAoxLjcuNC4xCgo=
</data>
<flag name="review"
          id="89851"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96787</attachid>
            <date>2011-06-10 14:22:39 -0700</date>
            <delta_ts>2011-08-25 10:41:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>27787</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA1ZWNkZWEyMjM2ZmU4NzFkMjIzOTBjMGNhYzM1ZTE4YzZhMDAzNDgzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IEZyaSwgMTAgSnVuIDIwMTEgMTc6NDU6MDIgLTAzMDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyMTkxCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJjZS9XZWJL
aXQyOgoKQ3JlYXRpbmcgYSBzaW1wbGUgQVBJIGZvciBwb3B1cCBtZW51cyBpbiBRV0tQYWdlIGFu
ZCBpbXBsZW1lbnRpbmcgTWluaUJyb3dzZXIncwpwb3B1cCBtZW51cy4KClFXS1BhZ2Ugbm93IGhh
dmUgbWV0aG9kcyB0byBzZXQgYSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBwb3B1cCBtZW51cyBjcmVh
dGlvbiBhbmQKdG8gYWN0dWFsbHkgY3JlYXRlIHRoZSBwb3B1cHMgdXNpbmcgdGhlIGZhY3Rvcnku
IFRoZSBmYWN0b3J5IGNyZWF0ZXMgb2JqZWN0cyBvZiB0aGUKY2xhc3MgUVdLUG9wdXBNZW51LgoK
KiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgooUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQ
cml2YXRlKToKKFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CihRV0tQYWdl
OjpzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbik6CihRV0tQYWdlOjpjcmFldGVQb3B1cE1l
bnUpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZV9wLmg6CgpGaWxlIHF3a3BvcHVwbWVudS5oIGhhdmUgdGhlIGFic3RyYWN0IGNsYXNzZXMg
cmVsYXRlZCB0byBwb3B1cCBtZW51cy4gVGhlIG9iamVjdHMgb2YKY2xhc3MgUVdLUG9wdXBNZW51
IGNyZWF0ZWQgYnkgdGhlIGZhY3RvcnkgdXNlIGNsYXNzZXMgUVdLUG9wdXBNZW51RGF0YSBhbmQg
UVdLUG9wdXBNZW51Q2xpZW50CnRvIHJlY2VpdmUgcG9wdXAgY29udGVudHMgYW5kIHRvIHNldCB0
aGUgc2VsZWN0ZWQgaW5kZXguCgoqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcG9wdXBtZW51Lmg6IEFk
ZGVkLgooUVdLUG9wdXBNZW51RGF0YTo6flFXS1BvcHVwTWVudURhdGEpOgooUVdLUG9wdXBNZW51
Ojp+UVdLUG9wdXBNZW51KToKKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KToKCkNsYXNzIFdlYlBvcHVwTWVudVByb3h5UXQg
dXNlcyBRV0tQb3B1cE1lbnUgb2JqZWN0cyBhbmQgcHJvdmlkZXMgdG8gdGhlbSB0aGUgaW5mb3Jt
YXRpb24KdGhhdCB0aGV5IG5lZWQuCgoqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcDoKKFBvcHVwTWVudURhdGE6OlBvcHVwTWVudURhdGEpOgooUG9wdXBNZW51RGF0YTo6aXRl
bVR5cGUpOgooUG9wdXBNZW51RGF0YTo6aXRlbVRleHREaXJlY3Rpb24pOgooUG9wdXBNZW51RGF0
YTo6aXRlbVRleHQpOgooUG9wdXBNZW51RGF0YTo6aXRlbUFjY2Vzc2liaWxpdHlUZXh0KToKKFBv
cHVwTWVudURhdGE6Oml0ZW1Ub29sVGlwKToKKFBvcHVwTWVudURhdGE6Oml0ZW1Jc0VuYWJsZWQp
OgooUG9wdXBNZW51RGF0YTo6aXRlbUlzTGFiZWwpOgooUG9wdXBNZW51RGF0YTo6aXRlbUlzU2Vs
ZWN0ZWQpOgooUG9wdXBNZW51RGF0YTo6aXRlbUhhc1RleHREaXJlY3Rpb25PdmVycmlkZSk6CihQ
b3B1cE1lbnVEYXRhOjppdGVtQ291bnQpOgooUG9wdXBNZW51RGF0YTo6Z2VvbWV0cnkpOgooUG9w
dXBNZW51RGF0YTo6c2NhbGVGYWN0b3IpOgooUG9wdXBNZW51RGF0YTo6dGV4dERpcmVjdGlvbik6
CihQb3B1cE1lbnVEYXRhOjppc1ZhbGlkSW5kZXgpOgooV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94
eVF0OjpXZWJQb3B1cE1lbnVQcm94eVF0KToKKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6
c2hvd1BvcHVwTWVudSk6CihXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1l
bnUpOgooV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJdGVtKToKKiBVSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oOgooV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0
OjpjcmVhdGUpOgoKKiBXZWJLaXQyQVBJLnByaToKClRvb2xzOgoKTWluaUJyb3dzZXIgdXNlcyB0
aGUgbmV3IGluZnJhc3RydWN0dXJlIHRvIGltcGxlbWVudCBwb3B1cCBtZW51cy4gVGhpcyBpbXBs
ZW1lbnRhdGlvbgp1c2VzIFFDb21ib0JveGVzIHRvIHByb3ZpZGUgdGhlIHBvcHVwcy4KCiogTWlu
aUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwOgooQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KToK
KEJyb3dzZXJWaWV3OjpjcmVhdGVQb3B1cE1lbnUpOgoqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJW
aWV3Lmg6CiogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvOgoqIE1pbmlCcm93c2VyL3F0
L1BvcHVwTWVudS5jcHA6IEFkZGVkLgooUG9wdXBDb21ibzo6UG9wdXBDb21ibyk6CihQb3B1cENv
bWJvOjpoaWRlUG9wdXApOgooUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIpOgooUG9wdXBNZW51OjpQ
b3B1cE1lbnUpOgooUG9wdXBNZW51Ojp+UG9wdXBNZW51KToKKFBvcHVwTWVudTo6c2hvdyk6CihQ
b3B1cE1lbnU6OnNldEluZGV4KToKKFBvcHVwTWVudTo6ZG9TZXRJbmRleCk6CiogTWluaUJyb3dz
ZXIvcXQvUG9wdXBNZW51Lmg6IEFkZGVkLgooUG9wdXBNZW51OjphY3RpdmVDaGFuZ2VkKToKLS0t
CiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NjAgKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5j
cHAgICAgICAgIHwgICAxNyArKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
a3BhZ2UuaCAgICAgICAgICB8ICAgIDUgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaCAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcG9wdXBtZW51LmggICAgIHwgICA3MiArKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgIDIgKwogLi4uL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwICAgfCAgIDc0ICsrKysr
KysrKysrKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmggIHwgICAxNyArKystCiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaSAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDEgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDI3ICsrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
Vmlldy5jcHAgICAgICAgICAgICAgICB8ICAgIDggKysKIFRvb2xzL01pbmlCcm93c2VyL3F0L0Jy
b3dzZXJWaWV3LmggICAgICAgICAgICAgICAgIHwgICAgMyArCiBUb29scy9NaW5pQnJvd3Nlci9x
dC9NaW5pQnJvd3Nlci5wcm8gICAgICAgICAgICAgICB8ICAgIDIgKwogVG9vbHMvTWluaUJyb3dz
ZXIvcXQvUG9wdXBNZW51LmNwcCAgICAgICAgICAgICAgICAgfCAgMTEzICsrKysrKysrKysrKysr
KysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1lbnUuaCAgICAgICAgICAgICAgICAg
ICB8ICAgNjYgKysrKysrKysrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCA0NjEgaW5zZXJ0aW9ucygr
KSwgOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BvcHVwbWVudS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWlu
aUJyb3dzZXIvcXQvUG9wdXBNZW51LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlC
cm93c2VyL3F0L1BvcHVwTWVudS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhlNjVkZTUuLmIzZTBiY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMS0wNi0wNiAgTHVpeiBBZ29zdGluaSAgPGx1
aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29r
cyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAgICAgICBDcmVhdGlu
ZyBhIHNpbXBsZSBBUEkgZm9yIHBvcHVwIG1lbnVzIGluIFFXS1BhZ2UgYW5kIGltcGxlbWVudGlu
ZyBNaW5pQnJvd3NlcidzCisgICAgICAgIHBvcHVwIG1lbnVzLgorCisgICAgICAgIFFXS1BhZ2Ug
bm93IGhhdmUgbWV0aG9kcyB0byBzZXQgYSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBwb3B1cCBtZW51
cyBjcmVhdGlvbiBhbmQKKyAgICAgICAgdG8gYWN0dWFsbHkgY3JlYXRlIHRoZSBwb3B1cHMgdXNp
bmcgdGhlIGZhY3RvcnkuIFRoZSBmYWN0b3J5IGNyZWF0ZXMgb2JqZWN0cyBvZiB0aGUKKyAgICAg
ICAgY2xhc3MgUVdLUG9wdXBNZW51LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2tw
YWdlLmNwcDoKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAg
ICAgIChRV0tQYWdlUHJpdmF0ZTo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoUVdL
UGFnZTo6c2V0Q3JlYXRlTmV3UG9wdXBNZW51RnVuY3Rpb24pOgorICAgICAgICAoUVdLUGFnZTo6
Y3JhZXRlUG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oOgorCisgICAgICAgIEZpbGUg
cXdrcG9wdXBtZW51LmggaGF2ZSB0aGUgYWJzdHJhY3QgY2xhc3NlcyByZWxhdGVkIHRvIHBvcHVw
IG1lbnVzLiBUaGUgb2JqZWN0cyBvZgorICAgICAgICBjbGFzcyBRV0tQb3B1cE1lbnUgY3JlYXRl
ZCBieSB0aGUgZmFjdG9yeSB1c2UgY2xhc3NlcyBRV0tQb3B1cE1lbnVEYXRhIGFuZCBRV0tQb3B1
cE1lbnVDbGllbnQKKyAgICAgICAgdG8gcmVjZWl2ZSBwb3B1cCBjb250ZW50cyBhbmQgdG8gc2V0
IHRoZSBzZWxlY3RlZCBpbmRleC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcG9w
dXBtZW51Lmg6IEFkZGVkLgorICAgICAgICAoUVdLUG9wdXBNZW51RGF0YTo6flFXS1BvcHVwTWVu
dURhdGEpOgorICAgICAgICAoUVdLUG9wdXBNZW51Ojp+UVdLUG9wdXBNZW51KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzaG93UG9wdXBNZW51KToKKworICAgICAgICBDbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0
IHVzZXMgUVdLUG9wdXBNZW51IG9iamVjdHMgYW5kIHByb3ZpZGVzIHRvIHRoZW0gdGhlIGluZm9y
bWF0aW9uCisgICAgICAgIHRoYXQgdGhleSBuZWVkLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwOgorICAgICAgICAoUG9wdXBNZW51RGF0YTo6UG9wdXBN
ZW51RGF0YSk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtVHlwZSk6CisgICAgICAgIChQ
b3B1cE1lbnVEYXRhOjppdGVtVGV4dERpcmVjdGlvbik6CisgICAgICAgIChQb3B1cE1lbnVEYXRh
OjppdGVtVGV4dCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtQWNjZXNzaWJpbGl0eVRl
eHQpOgorICAgICAgICAoUG9wdXBNZW51RGF0YTo6aXRlbVRvb2xUaXApOgorICAgICAgICAoUG9w
dXBNZW51RGF0YTo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVt
SXNMYWJlbCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSXNTZWxlY3RlZCk6CisgICAg
ICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKToKKyAgICAg
ICAgKFBvcHVwTWVudURhdGE6Oml0ZW1Db3VudCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpn
ZW9tZXRyeSk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpzY2FsZUZhY3Rvcik6CisgICAgICAg
IChQb3B1cE1lbnVEYXRhOjp0ZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKFBvcHVwTWVudURhdGE6
OmlzVmFsaWRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6Oldl
YlBvcHVwTWVudVByb3h5UXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0
OjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6
aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNl
bGVjdEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZSk6CisKKyAgICAg
ICAgKiBXZWJLaXQyQVBJLnByaToKKwogMjAxMS0wNi0xMCAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNo
b2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3
a3BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcApp
bmRleCAzODA4ZjIzLi5hODY4MGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAKQEAgLTk2LDYgKzk2LDggQEAgUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQ
cml2YXRlKFFXS1BhZ2UqIHFxLCBRV0tDb250ZXh0KiBjLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3IK
ICAgICAsIGNyZWF0ZU5ld1BhZ2VGbigwKQogICAgICwgYmFja2luZ1N0b3JlVHlwZShRR3JhcGhp
Y3NXS1ZpZXc6OlNpbXBsZSkKICAgICAsIGlzQ29ubmVjdGVkVG9FbmdpbmUodHJ1ZSkKKyAgICAs
IHBvcHVwTWVudUZhY3RvcnkoMCkKKyAgICAsIHBvcHVwTWVudUZhY3RvcnlEYXRhKDApCiB7CiAg
ICAgbWVtc2V0KGFjdGlvbnMsIDAsIHNpemVvZihhY3Rpb25zKSk7CiAgICAgcGFnZSA9IGNvbnRl
eHQtPmQtPmNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9JbXBsKHBhZ2VHcm91cFJlZikp
OwpAQCAtMjQ2LDkgKzI0OCw5IEBAIHZvaWQgUVdLUGFnZVByaXZhdGU6OmRvbmVXaXRoS2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViUG9wdXBNZW51UHJveHk+IFFXS1BhZ2VQcml2YXRlOjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUVdLUGFnZVBy
aXZhdGU6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogY2xpZW50KQogewotICAg
IHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gV2ViUG9w
dXBNZW51UHJveHlRdDo6Y3JlYXRlKHEsIGNsaWVudCk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eT4gUVdLUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2Vi
UGFnZVByb3h5KikKQEAgLTU5NCw2ICs1OTYsMTcgQEAgUVdLUGFnZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzIFFXS1BhZ2U6OnZpZXdwb3J0QXR0cmlidXRlc0ZvclNpemUoY29uc3QgUVNpemUmIGF2YWkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFFXS1BhZ2U6OnNldENyZWF0ZU5ld1BvcHVw
TWVudUZ1bmN0aW9uKENyZWF0ZVBvcHVwTWVudUZuIGZ1bmN0aW9uLCB2b2lkKiBkYXRhKQorewor
ICAgIGQtPnBvcHVwTWVudUZhY3RvcnkgPSBmdW5jdGlvbjsKKyAgICBkLT5wb3B1cE1lbnVGYWN0
b3J5RGF0YSA9IGRhdGE7Cit9CisKK1FXS1BvcHVwTWVudSogUVdLUGFnZTo6Y3JlYXRlUG9wdXBN
ZW51KGNvbnN0IFFXS1BvcHVwTWVudURhdGEqIGRhdGEsIFFXS1BvcHVwTWVudUNsaWVudCogY2xp
ZW50KQoreworICAgIHJldHVybiBkLT5wb3B1cE1lbnVGYWN0b3J5ID8gZC0+cG9wdXBNZW51RmFj
dG9yeShkYXRhLCBjbGllbnQsIGQtPnBvcHVwTWVudUZhY3RvcnlEYXRhKSA6IDA7Cit9CisKIHZv
aWQgUVdLUGFnZTo6c2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBRUmVjdCYgcmVj
dCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKaW5kZXggMzZlY2MyNC4uYWViYmQ1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmgKQEAgLTIsNiArMiw3IEBA
CiAjZGVmaW5lIHF3a3BhZ2VfaAogCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorI2luY2x1
ZGUgInF3a3BvcHVwbWVudS5oIgogI2luY2x1ZGUgPFFBY3Rpb24+CiAjaW5jbHVkZSA8UU1lbnU+
CiAjaW5jbHVkZSA8UU9iamVjdD4KQEAgLTEwNCw2ICsxMDUsMTAgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgUVdLUGFnZSogKCpDcmVhdGVOZXdQYWdlRm4pKFFXS1BhZ2UqKTsKICAgICB2b2lkIHNl
dENyZWF0ZU5ld1BhZ2VGdW5jdGlvbihDcmVhdGVOZXdQYWdlRm4gZnVuY3Rpb24pOwogCisgICAg
dHlwZWRlZiBRV0tQb3B1cE1lbnUqICgqQ3JlYXRlUG9wdXBNZW51Rm4pKGNvbnN0IFFXS1BvcHVw
TWVudURhdGEqLCBRV0tQb3B1cE1lbnVDbGllbnQqLCB2b2lkKik7CisgICAgdm9pZCBzZXRDcmVh
dGVOZXdQb3B1cE1lbnVGdW5jdGlvbihDcmVhdGVQb3B1cE1lbnVGbiBmdW5jdGlvbiwgdm9pZCog
ZGF0YSk7CisgICAgUVdLUG9wdXBNZW51KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBN
ZW51RGF0YSosIFFXS1BvcHVwTWVudUNsaWVudCopOworCiAgICAgdm9pZCBzZXRDdXN0b21Vc2Vy
QWdlbnQoY29uc3QgUVN0cmluZyYpOwogICAgIFFTdHJpbmcgY3VzdG9tVXNlckFnZW50KCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCmluZGV4
IGQ1NjllMDIuLjhmYTY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlX3AuaApAQCAtMTM2LDYgKzEzNiw5IEBAIHB1YmxpYzoKICAgICBRR3JhcGhpY3NXS1Zp
ZXc6OkJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZTsKIAogICAgIGJvb2wgaXNDb25u
ZWN0ZWRUb0VuZ2luZTsKKworICAgIFFXS1BhZ2U6OkNyZWF0ZVBvcHVwTWVudUZuIHBvcHVwTWVu
dUZhY3Rvcnk7CisgICAgdm9pZCogcG9wdXBNZW51RmFjdG9yeURhdGE7CiB9OwogCiBjbGFzcyBR
dFZpZXdwb3J0QXR0cmlidXRlc1ByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twb3B1cG1lbnUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcG9wdXBtZW51LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMzZjc5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcG9wdXBtZW51LmgKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBxd2twb3B1cG1lbnVfaAorI2RlZmluZSBx
d2twb3B1cG1lbnVfaAorCisjaW5jbHVkZSA8UVJlY3Q+CisjaW5jbHVkZSA8UVNjb3BlZFBvaW50
ZXI+CisjaW5jbHVkZSA8UVN0cmluZz4KKworY2xhc3MgUVdLUG9wdXBNZW51RGF0YSB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UVdLUG9wdXBNZW51RGF0YSgpIHsgfQorCisgICAgZW51bSBJdGVt
VHlwZSB7IFNlcGFyYXRvciwgSXRlbSB9OworICAgIGVudW0gVGV4dERpcmVjdGlvbiB7IFJUTCwg
TFRSIH07CisKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgVGV4dERpcmVjdGlvbiBpdGVtVGV4dERpcmVjdGlvbihpbnQpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtVGV4dChpbnQpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFFTdHJpbmcgaXRlbUFjY2Vzc2liaWxpdHlUZXh0KGludCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUVN0cmluZyBpdGVtVG9vbFRpcChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXRlbUlzRW5hYmxlZChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXRl
bUlzTGFiZWwoaW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlbGVjdGVk
KGludCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpdGVtSGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlKGludCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgaXRlbUNvdW50KCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBzY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKK307CisKK2NsYXNzIFFXS1BvcHVw
TWVudUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEl0ZW0oaW50KSA9
IDA7Cit9OworCitjbGFzcyBRV0tQb3B1cE1lbnUgeworcHVibGljOgorICAgIFFXS1BvcHVwTWVu
dShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhLCBRV0tQb3B1cE1lbnVDbGllbnQqIGNsaWVu
dCkgOiBtX2RhdGEoZGF0YSksIG1fY2xpZW50KGNsaWVudCkgeyB9CisgICAgdmlydHVhbCB+UVdL
UG9wdXBNZW51KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNob3coKSA9IDA7CisKKyAgICBjb25z
dCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmRhdGEoKTsg
fQorICAgIHZvaWQgc2VsZWN0SXRlbShpbnQgaW5kZXgpIHsgbV9jbGllbnQtPnNlbGVjdEl0ZW0o
aW5kZXgpOyB9CisKK3ByaXZhdGU6CisgICAgUVNjb3BlZFBvaW50ZXI8Y29uc3QgUVdLUG9wdXBN
ZW51RGF0YT4gbV9kYXRhOworICAgIFFXS1BvcHVwTWVudUNsaWVudCogbV9jbGllbnQ7CisKK307
CisKKyNlbmRpZiAvLyBxd2twb3B1cG1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA1ZjYzYTIxLi44NTNkYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjMxOSw3ICsyMzE5LDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgdWludDY0X3QgdGV4
dERpcmVjdGlvbiwgY28KICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFj
dGl2ZVBvcHVwTWVudSA9IG1fYWN0aXZlUG9wdXBNZW51OwogCiAgICAgcHJvdGVjdGVkQWN0aXZl
UG9wdXBNZW51LT5zaG93UG9wdXBNZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+
KHRleHREaXJlY3Rpb24pLCBtX3ZpZXdTY2FsZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVk
SW5kZXgpOworI2lmICFQTEFURk9STShRVCkKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUt
PmludmFsaWRhdGUoKTsKKyNlbmRpZgogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1l
bnVQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQ
cm94eVF0LmNwcAppbmRleCAxZTk3ZDc0Li5iNzI1OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCkBAIC0yOCwyNiArMjgs
OTQgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgogI2luY2x1ZGUgIldl
YlBvcHVwSXRlbS5oIgorI2luY2x1ZGUgPHF3a3BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKK2NsYXNzIFBvcHVwTWVudURhdGEgOiBwdWJsaWMgUVdLUG9wdXBNZW51RGF0YSB7
CitwdWJsaWM6CisgICAgUG9wdXBNZW51RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3Jl
OjpUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50IHNlbGVjdGVkSW5kZXgpCisgICAg
ICAgIDogbV9yZWN0KHJlY3QpCisgICAgICAgICwgbV9pdGVtcyhpdGVtcykKKyAgICAgICAgLCBt
X3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKQorICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlv
bikKKyAgICAgICAgLCBtX3NlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCkKKyAgICB7IH0KKwor
ICAgIHZpcnR1YWwgSXRlbVR5cGUgaXRlbVR5cGUoaW50IGluZGV4KSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFpc1ZhbGlkSW5kZXgoaW5kZXgpIHx8IG1faXRlbXNbaW5kZXhdLm1fdHlwZSA9
PSBXZWJLaXQ6OldlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuIFNl
cGFyYXRvcjsKKyAgICAgICAgcmV0dXJuIEl0ZW07CisgICAgfQorCisgICAgdmlydHVhbCBUZXh0
RGlyZWN0aW9uIGl0ZW1UZXh0RGlyZWN0aW9uKGludCBpbmRleCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghaXNWYWxpZEluZGV4KGluZGV4KSB8fCBtX2l0ZW1zW2luZGV4XS5tX3RleHREaXJl
Y3Rpb24gPT0gV2ViQ29yZTo6UlRMKQorICAgICAgICAgICAgcmV0dXJuIFJUTDsKKyAgICAgICAg
cmV0dXJuIExUUjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRleHQoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBpc1ZhbGlkSW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0u
bV90ZXh0IDogU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbUFjY2Vzc2liaWxp
dHlUZXh0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZEluZGV4KGluZGV4KSA/IG1f
aXRlbXNbaW5kZXhdLm1fYWNjZXNzaWJpbGl0eVRleHQgOiBTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgUVN0cmluZyBpdGVtVG9vbFRpcChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJ
bmRleChpbmRleCkgPyBtX2l0ZW1zW2luZGV4XS5tX3Rvb2xUaXAgOiBTdHJpbmcoKTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpdGVtSXNFbmFibGVkKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNW
YWxpZEluZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1faXNFbmFibGVkIDogZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzTGFiZWwoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBp
c1ZhbGlkSW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQgOiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGluZGV4ID09IG1fc2VsZWN0ZWRJbmRleDsgfQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZElu
ZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlIDog
ZmFsc2U7IH0KKworICAgIHZpcnR1YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlbXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQorICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQorICAgIHZpcnR1YWwgVGV4dERpcmVjdGlvbiB0ZXh0RGly
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gV2ViQ29yZTo6UlRMID8gUlRM
IDogTFRSOyB9CisKKworcHJpdmF0ZToKKyAgICBRUmVjdCBtX3JlY3Q7CisgICAgVmVjdG9yPFdl
YktpdDo6V2ViUG9wdXBJdGVtPiBtX2l0ZW1zOworICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOwor
ICAgIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgaW50IG1fc2VsZWN0
ZWRJbmRleDsKKworICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IG1faXRlbXMuc2l6ZSgpOyB9Cit9OworCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1XZWJQb3B1cE1lbnVQcm94eVF0OjpXZWJQb3B1cE1lbnVQcm94eVF0
KCkKLSAgICA6IFdlYlBvcHVwTWVudVByb3h5KDApCitXZWJQb3B1cE1lbnVQcm94eVF0OjpXZWJQ
b3B1cE1lbnVQcm94eVF0KFFXS1BhZ2UqIHBhZ2UsIENsaWVudCogY2xpZW50KQorICAgIDogV2Vi
UG9wdXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV9wYWdlKHBhZ2UpCiB7CisgICAgQVNTRVJU
KG1fcGFnZSk7CiB9CiAKIFdlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0
KCkKIHsKIH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0
IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBp
bnQzMl90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24sIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1z
LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wb3B1cE1lbnUg
PSBhZG9wdFB0cihtX3BhZ2UtPmNyZWF0ZVBvcHVwTWVudShuZXcgUG9wdXBNZW51RGF0YShyZWN0
LCBkaXJlY3Rpb24sIHNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCksIHRoaXMpKTsK
KworICAgIGlmICghbV9wb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcG9wdXBN
ZW51LT5zaG93KCk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVu
dSgpCiB7CisgICAgbV9wb3B1cE1lbnUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQ
cm94eVF0OjpzZWxlY3RJdGVtKGludCBpbmRleCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaW5kZXgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCmluZGV4IGU3MTk3ZDUuLjdkYTg3NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAt
MjYsMTUgKzI2LDE5IEBACiAjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5UXRfaAogI2RlZmluZSBX
ZWJQb3B1cE1lbnVQcm94eVF0X2gKIAorI2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogCitjbGFz
cyBRV0tQYWdlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUG9wdXBNZW51UHJv
eHlRdCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94
eVF0IDogcHVibGljIFdlYlBvcHVwTWVudVByb3h5LCBwcml2YXRlIFFXS1BvcHVwTWVudUNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlRdD4g
Y3JlYXRlKCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVh
dGUoUVdLUGFnZSogcGFnZSwgQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5UXQoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlRdChwYWdlLCBjbGllbnQpKTsKICAgICB9CiAgICAg
fldlYlBvcHVwTWVudVByb3h5UXQoKTsKIApAQCAtNDIsNyArNDYsMTIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUG9wdXBN
ZW51UHJveHlRdCgpOworICAgIFdlYlBvcHVwTWVudVByb3h5UXQoUVdLUGFnZSosIENsaWVudCop
OworCisgICAgdm9pZCBzZWxlY3RJdGVtKGludCk7CisKKyAgICBRV0tQYWdlKiBtX3BhZ2U7Cisg
ICAgT3duUHRyPFFXS1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggMTcwOTU0OS4uNjhmZjYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0MkFQSS5wcmkKQEAgLTEzMCw2ICsxMzAsNyBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9
IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2hpc3Rvcnlf
cC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2Uu
aCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3Au
aCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twb3B1cG1l
bnUuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twcmVm
ZXJlbmNlcy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGVlZGQxMjIuLjVmY2NkN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wNi0wNiAgTHVp
eiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIg
cG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKwor
ICAgICAgICBNaW5pQnJvd3NlciB1c2VzIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdG8gaW1wbGVt
ZW50IHBvcHVwIG1lbnVzLiBUaGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHVzZXMgUUNvbWJv
Qm94ZXMgdG8gcHJvdmlkZSB0aGUgcG9wdXBzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQv
QnJvd3NlclZpZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KToKKyAg
ICAgICAgKEJyb3dzZXJWaWV3OjpjcmVhdGVQb3B1cE1lbnUpOgorICAgICAgICAqIE1pbmlCcm93
c2VyL3F0L0Jyb3dzZXJWaWV3Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXIucHJvOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5jcHA6IEFkZGVkLgor
ICAgICAgICAoUG9wdXBDb21ibzo6UG9wdXBDb21ibyk6CisgICAgICAgIChQb3B1cENvbWJvOjpo
aWRlUG9wdXApOgorICAgICAgICAoUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIpOgorICAgICAgICAo
UG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAgICAoUG9wdXBNZW51Ojp+UG9wdXBNZW51KToK
KyAgICAgICAgKFBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChQb3B1cE1lbnU6OnNldEluZGV4
KToKKyAgICAgICAgKFBvcHVwTWVudTo6ZG9TZXRJbmRleCk6CisgICAgICAgICogTWluaUJyb3dz
ZXIvcXQvUG9wdXBNZW51Lmg6IEFkZGVkLgorICAgICAgICAoUG9wdXBNZW51OjphY3RpdmVDaGFu
Z2VkKToKKwogMjAxMS0wNi0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbGluZyBvdXQgcjg4NDcxLCBiZWNhdXNlIGl0IGJy
b2tlIHBsdWdpbiB0ZXN0cyBvbiBRdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L0Jyb3dzZXJWaWV3LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcApp
bmRleCA3ZDY0MjZlLi45NDM1YzNhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9C
cm93c2VyVmlldy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCcm93c2VyVmlldy5oIgogCisjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmU+CiAKIEJyb3dzZXJWaWV3
OjpCcm93c2VyVmlldyhRR3JhcGhpY3NXS1ZpZXc6OkJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0
b3JlVHlwZSwgUVdLQ29udGV4dCogY29udGV4dCwgUVdpZGdldCogcGFyZW50KQpAQCAtMzgsNiAr
MzksOCBAQCBCcm93c2VyVmlldzo6QnJvd3NlclZpZXcoUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUsIFFXSwogICAgIHNldFNjZW5lKG5ldyBRR3JhcGhp
Y3NTY2VuZSh0aGlzKSk7CiAgICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOwogCisgICAgbV9p
dGVtLT5wYWdlKCktPnNldENyZWF0ZU5ld1BvcHVwTWVudUZ1bmN0aW9uKEJyb3dzZXJWaWV3Ojpj
cmVhdGVQb3B1cE1lbnUsIHRoaXMpOworCiAgICAgc2V0RnJhbWVTaGFwZShRRnJhbWU6Ok5vRnJh
bWUpOwogICAgIHNldEhvcml6b250YWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5
c09mZik7CiAgICAgc2V0VmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5
c09mZik7CkBAIC02MCwzICs2Myw4IEBAIFFHcmFwaGljc1dLVmlldyogQnJvd3NlclZpZXc6OnZp
ZXcoKSBjb25zdAogewogICAgIHJldHVybiBtX2l0ZW07CiB9CisKK1FXS1BvcHVwTWVudSogQnJv
d3NlclZpZXc6OmNyZWF0ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhLCBR
V0tQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgdm9pZCogdmlldykKK3sKKyAgICByZXR1cm4gbmV3
IFBvcHVwTWVudShkYXRhLCBjbGllbnQsIHJlaW50ZXJwcmV0X2Nhc3Q8QnJvd3NlclZpZXcqPih2
aWV3KSk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5o
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaAppbmRleCA1OTMwMDZlLi4zZDdh
NGUwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlIDxRR3JhcGhpY3NWaWV3PgogI2luY2x1ZGUgInFncmFwaGljc3drdmlldy5oIgogI2lu
Y2x1ZGUgInF3a2NvbnRleHQuaCIKKyNpbmNsdWRlICJxd2twb3B1cG1lbnUuaCIKIAogY2xhc3Mg
QnJvd3NlclZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzVmlldyB7CiAgICAgUV9PQkpFQ1QKQEAgLTQ4
LDYgKzQ5LDggQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIFFHcmFwaGljc1dLVmlldyog
bV9pdGVtOworCisgICAgc3RhdGljIFFXS1BvcHVwTWVudSogY3JlYXRlUG9wdXBNZW51KGNvbnN0
IFFXS1BvcHVwTWVudURhdGEqLCBRV0tQb3B1cE1lbnVDbGllbnQqLCB2b2lkKik7CiB9OwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwppbmRleCA5MjY2NmU5Li4xM2Vj
Nzk0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCkBAIC04LDYgKzgsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcCBcCiAgICAgVXJsTG9h
ZGVyLmNwcCBcCiAgICAgdXRpbHMuY3BwIFwKKyAgICBQb3B1cE1lbnUuY3BwIFwKIAogSEVBREVS
UyArPSBcCiAgICAgQnJvd3NlclZpZXcuaCBcCkBAIC0xNSw2ICsxNiw3IEBAIEhFQURFUlMgKz0g
XAogICAgIE1pbmlCcm93c2VyQXBwbGljYXRpb24uaCBcCiAgICAgVXJsTG9hZGVyLmggXAogICAg
IHV0aWxzLmggXAorICAgIFBvcHVwTWVudS5oIFwKIAogaXNFbXB0eShPVVRQVVRfRElSKTogT1VU
UFVUX0RJUiA9IC4uLy4uLy4uCiBpbmNsdWRlKC4uLy4uLy4uL1NvdXJjZS9XZWJLaXQucHJpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmNwcCBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L1BvcHVwTWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDBhZDg3NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1Bv
cHVwTWVudS5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2luY2x1ZGUg
IlBvcHVwTWVudS5oIgorCisjaWZuZGVmIFFUX05PX0NPTUJPQk9YCisKKyNpbmNsdWRlIDxRQWJz
dHJhY3RJdGVtVmlldz4KKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlucHV0
Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91c2VFdmVudD4KKyNpbmNsdWRlIDxRU3RhbmRhcmRJdGVt
TW9kZWw+CisKK1BvcHVwQ29tYm86OlBvcHVwQ29tYm8oUG9wdXBNZW51KiBvd25lciwgUVJlY3Qg
cmVjdCwgUVdpZGdldCogcGFyZW50KQorICAgIDogUUNvbWJvQm94KHBhcmVudCkKKyAgICAsIG1f
b3duZXIob3duZXIpCit7CisgICAgc2V0R2VvbWV0cnkoUVJlY3QocmVjdC5sZWZ0KCksIHJlY3Qu
dG9wKCksIHJlY3Qud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOworICAgIHZpZXcoKS0+
aW5zdGFsbEV2ZW50RmlsdGVyKHRoaXMpOworfQorCit2b2lkIFBvcHVwQ29tYm86OmhpZGVQb3B1
cCgpCit7CisgICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRl
eCgtMSk7Cit9CisKK2Jvb2wgUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0Y2hl
ZCwgUUV2ZW50KiBldmVudCkKK3sKKyAgICBRX0FTU0VSVCh3YXRjaGVkID09IHZpZXcoKSk7CisK
KyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIG1fb3duZXIt
PnNldEluZGV4KC0xKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworUG9wdXBNZW51OjpQb3B1
cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSogZGF0YSwgUVdLUG9wdXBNZW51Q2xpZW50KiBj
bGllbnQsIFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFFXS1BvcHVwTWVudShkYXRhLCBjbGllbnQp
CisgICAgLCBtX2NvbWJvKDApCisgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX2luZGV4
KC0xKQoreworICAgIG1fdGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZt
X3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChkb1NldEluZGV4KCkpKTsKK30K
KworUG9wdXBNZW51Ojp+UG9wdXBNZW51KCkKK3sKKyAgICBpZiAobV9jb21ibykKKyAgICAgICAg
bV9jb21iby0+ZGVsZXRlTGF0ZXIoKTsKK30KKwordm9pZCBQb3B1cE1lbnU6OnNob3coKQorewor
ICAgIGlmICghbV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tYm8gPSBuZXcg
UG9wdXBDb21ibyh0aGlzLCBkYXRhKCktPmdlb21ldHJ5KCksIG1fcGFyZW50KTsKKyAgICBjb25u
ZWN0KG1fY29tYm8sIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNMT1QoYWN0aXZlQ2hh
bmdlZChpbnQpKSk7CisKKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVjdF9j
YXN0PFFTdGFuZGFyZEl0ZW1Nb2RlbCo+KG1fY29tYm8tPm1vZGVsKCkpOworICAgIFFfQVNTRVJU
KG1vZGVsKTsKKworICAgIGludCBjdXJyZW50SW5kZXggPSAtMTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGRhdGEoKS0+aXRlbUNvdW50KCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGRhdGEo
KS0+aXRlbVR5cGUoaSkpIHsKKyAgICAgICAgY2FzZSBRV0tQb3B1cE1lbnVEYXRhOjpTZXBhcmF0
b3I6CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0b3IoaSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBRV0tQb3B1cE1lbnVEYXRhOjpJdGVtOgorICAgICAgICAg
ICAgbV9jb21iby0+aW5zZXJ0SXRlbShpLCBkYXRhKCktPml0ZW1UZXh0KGkpKTsKKyAgICAgICAg
ICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRFbmFibGVkKGRhdGEoKS0+aXRlbUlzRW5hYmxlZChpKSk7
CisjaWZuZGVmIFFUX05PX1RPT0xUSVAKKyAgICAgICAgICAgIG1vZGVsLT5pdGVtKGkpLT5zZXRU
b29sVGlwKGRhdGEoKS0+aXRlbVRvb2xUaXAoaSkpOworI2VuZGlmCisgICAgICAgICAgICBpZiAo
ZGF0YSgpLT5pdGVtSXNTZWxlY3RlZChpKSkKKyAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXgg
PSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY3Vy
cmVudEluZGV4ID49IDApCisgICAgICAgIG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChjdXJyZW50
SW5kZXgpOworCisgICAgUU1vdXNlRXZlbnQgZXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNz
LCBRQ3Vyc29yOjpwb3MoKSwgUXQ6OkxlZnRCdXR0b24sCisgICAgICAgICAgICAgICAgICAgICAg
UXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpz
ZW5kRXZlbnQobV9jb21ibywgJmV2ZW50KTsKK30KKwordm9pZCBQb3B1cE1lbnU6OnNldEluZGV4
KGludCBpbmRleCkKK3sKKyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV90aW1lci5zdGFydCgw
KTsKK30KKworI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Qb3B1cE1lbnUuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOTMzOTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1lbnUuaApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKyNpZm5kZWYgUG9wdXBNZW51X2gKKyNkZWZpbmUgUG9wdXBNZW51
X2gKKworI2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgorI2luY2x1ZGUgPFFDb21ib0JveD4KKyNp
bmNsdWRlIDxRVGltZXI+CisKKyNpZm5kZWYgUVRfTk9fQ09NQk9CT1gKKworY2xhc3MgUG9wdXBD
b21ibzsKKworY2xhc3MgUG9wdXBNZW51IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRV0tQb3B1
cE1lbnUgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUG9wdXBNZW51KGNvbnN0IFFXS1Bv
cHVwTWVudURhdGEqLCBRV0tQb3B1cE1lbnVDbGllbnQqLCBRV2lkZ2V0Kik7CisgICAgflBvcHVw
TWVudSgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3coKTsKKworcHJpdmF0ZSBzbG90czoKKyAg
ICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50IGluZGV4KSB7IHNldEluZGV4KGluZGV4KTsgfQorICAg
IHZvaWQgZG9TZXRJbmRleCgpIHsgc2VsZWN0SXRlbShtX2luZGV4KTsgfQorCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBQb3B1cENvbWJvOworCisgICAgUG9wdXBDb21ibyogbV9jb21ibzsK
KyAgICBRV2lkZ2V0KiBtX3BhcmVudDsKKyAgICBpbnQgbV9pbmRleDsKKyAgICBRVGltZXIgbV90
aW1lcjsKKworICAgIHZvaWQgc2V0SW5kZXgoaW50KTsKK307CisKK2NsYXNzIFBvcHVwQ29tYm8g
OiBwdWJsaWMgUUNvbWJvQm94IHsKK3B1YmxpYzoKKyAgICBQb3B1cENvbWJvKFBvcHVwTWVudSos
IFFSZWN0LCBRV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgpOworCitwcml2
YXRlOgorICAgIFBvcHVwTWVudSogbV9vd25lcjsKKyAgICBib29sIGV2ZW50RmlsdGVyKFFPYmpl
Y3QqLCBRRXZlbnQqKTsKK307CisKKyNlbmRpZiAvLyBRVF9OT19DT01CT0JPWAorCisjZW5kaWYg
Ly8gUG9wdXBNZW51X2gKLS0gCjEuNy40LjEKCg==
</data>
<flag name="review"
          id="90570"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103369</attachid>
            <date>2011-08-09 10:13:03 -0700</date>
            <delta_ts>2011-08-11 09:54:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>28296</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA4ZDg2NzFhMTU1Y2Q3ZmI1MjM5ZGRjYTEzYzBkM2E1NmFhNGNmOTJjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMyBBdWcgMjAxMSAxOToyMDoxNiAtMDQwMApTdWJqZWN0OiBbUEFU
Q0hdIFtRdF0gQ3JlYXRpbmcgd2Via2l0MiBwb3B1cCBtZW51IGhvb2tzIGFuZCBhZGRpbmcgcG9w
dXAgbWVudXMgdG8gTWluaUJyb3dzZXIuCgotLS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2MiArKysrKysrKysrKwogLi4uL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwICAgfCAgIDEwICsrCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oICB8ICAgIDQgKwogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcCAgfCAgIDEwICsr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCAgICB8ICAg
IDQgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twb3B1cG1lbnUuaCAgICAg
fCAgIDc3ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwICAgICAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJQYWdlUHJveHkuY3BwICAgICB8ICAgMTcgKysrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmggICAgICAgfCAgICA3ICsrCiAuLi4vV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgICB8ICAgNzMgKysrKysrKysrKysrLQogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCAgfCAgIDE2ICsr
LQogU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAxICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAyOSArKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwICAgICAg
ICAgICAgICAgfCAgICA3ICsrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oICAg
ICAgICAgICAgICAgICB8ICAgIDEgKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIu
cHJvICAgICAgICAgICAgICAgfCAgICAyICsKIFRvb2xzL01pbmlCcm93c2VyL3F0L1BvcHVwTWVu
dS5jcHAgICAgICAgICAgICAgICAgIHwgIDExMyArKysrKysrKysrKysrKysrKysrKwogVG9vbHMv
TWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmggICAgICAgICAgICAgICAgICAgfCAgIDc0ICsrKysr
KysrKysrKysKIDE4IGZpbGVzIGNoYW5nZWQsIDUwMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdrcG9wdXBtZW51LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9Q
b3B1cE1lbnUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXQvUG9w
dXBNZW51LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWY3MTA1MC4uNWQ0YmZhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDExLTA4LTA5ICBJZ29yIE9saXZlaXJhICA8aWdvci5vbGl2ZWlyYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gQ3JlYXRpbmcgd2Via2l0MiBwb3B1cCBtZW51
IGhvb2tzIGFuZCBhZGRpbmcgcG9wdXAgbWVudXMgdG8gTWluaUJyb3dzZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE5MQorCisgICAgICAgIENy
ZWF0aW5nIGEgc2ltcGxlIEFQSSBmb3IgcG9wdXAgbWVudXMgaW4gUVdLUGFnZSBhbmQgaW1wbGVt
ZW50aW5nIE1pbmlCcm93c2VyJ3MKKyAgICAgICAgcG9wdXAgbWVudXMuCisKKyAgICAgICAgUURl
c2t0b3BXZWJWaWV3IGFuZCBRVG91Y2hXZWJQYWdlIG5vdyBoYXZlIG1ldGhvZHMgdG8gc2V0IGEg
ZmFjdG9yeSBmdW5jdGlvbiBmb3IgcG9wdXAKKyAgICAgICAgbWVudXMgY3JlYXRpb24gYW5kIHRv
IGFjdHVhbGx5IGNyZWF0ZSB0aGUgcG9wdXBzIHVzaW5nIHRoZSBmYWN0b3J5LiBUaGUgZmFjdG9y
eSBjcmVhdGVzCisgICAgICAgIG9iamVjdHMgb2YgdGhlIGNsYXNzIFFXS1BvcHVwTWVudS4KKwor
ICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3OjpzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbik6CisgICAgICAg
IChRRGVza3RvcFdlYlZpZXc6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuY3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6c2V0Q3JlYXRlTmV3UG9w
dXBNZW51RnVuY3Rpb24pOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6Y3JlYXRlUG9wdXBNZW51
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BvcHVwbWVudS5oOiBBZGRlZC4KKyAgICAgICAgKFFXS1Bv
cHVwTWVudURhdGE6On5RV0tQb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKFFXS1BvcHVwTWVudTo6
UVdLUG9wdXBNZW51KToKKyAgICAgICAgKFFXS1BvcHVwTWVudTo6flFXS1BvcHVwTWVudSk6Cisg
ICAgICAgIChRV0tQb3B1cE1lbnU6OmRhdGEpOgorICAgICAgICAoUVdLUG9wdXBNZW51OjpzZWxl
Y3RJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OlF0V2Vi
UGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94
eSk6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6c2V0Q3JlYXRlTmV3UG9wdXBNZW51RnVuY3Rp
b24pOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudSk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwOgorICAgICAgICAoUG9wdXBNZW51RGF0YTo6UG9wdXBN
ZW51RGF0YSk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtVHlwZSk6CisgICAgICAgIChQ
b3B1cE1lbnVEYXRhOjppdGVtVGV4dERpcmVjdGlvbik6CisgICAgICAgIChQb3B1cE1lbnVEYXRh
OjppdGVtVGV4dCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtQWNjZXNzaWJpbGl0eVRl
eHQpOgorICAgICAgICAoUG9wdXBNZW51RGF0YTo6aXRlbVRvb2xUaXApOgorICAgICAgICAoUG9w
dXBNZW51RGF0YTo6aXRlbUlzRW5hYmxlZCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVt
SXNMYWJlbCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSXNTZWxlY3RlZCk6CisgICAg
ICAgIChQb3B1cE1lbnVEYXRhOjppdGVtSGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKToKKyAgICAg
ICAgKFBvcHVwTWVudURhdGE6Oml0ZW1Db3VudCk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpn
ZW9tZXRyeSk6CisgICAgICAgIChQb3B1cE1lbnVEYXRhOjpzY2FsZUZhY3Rvcik6CisgICAgICAg
IChQb3B1cE1lbnVEYXRhOjp0ZXh0RGlyZWN0aW9uKToKKyAgICAgICAgKFBvcHVwTWVudURhdGE6
OmlzVmFsaWRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6Oldl
YlBvcHVwTWVudVByb3h5UXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0
OjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6
aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNl
bGVjdEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZSk6CisgICAgICAg
ICogV2ViS2l0MkFQSS5wcmk6CisKIDIwMTEtMDgtMDkgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gUmVkaXJlY3QgZGlkRmlu
ZFpvb21hYmxlQXJlYSB0aHJ1IHRvIHRoZSB2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggYjI0OGQ0NC4uODI2MDVl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3
ZWJ2aWV3LmNwcApAQCAtMzU5LDYgKzM1OSwxNiBAQCBXS1BhZ2VSZWYgUURlc2t0b3BXZWJWaWV3
OjpwYWdlUmVmKCkgY29uc3QKICAgICByZXR1cm4gZC0+cGFnZS5wYWdlUmVmKCk7CiB9CiAKK3Zv
aWQgUURlc2t0b3BXZWJWaWV3OjpzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihRV0tQb3B1
cE1lbnVGYWN0b3J5ICpmYWN0b3J5LCB2b2lkKiBkYXRhKQoreworICAgIGQtPnBhZ2Uuc2V0Q3Jl
YXRlTmV3UG9wdXBNZW51RnVuY3Rpb24oZmFjdG9yeSwgZGF0YSk7Cit9CisKK1FXS1BvcHVwTWVu
dSogUURlc2t0b3BXZWJWaWV3OjpjcmVhdGVQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0
YSogZGF0YSwgUVdLUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGQtPnBh
Z2UuY3JlYXRlUG9wdXBNZW51KGRhdGEsIGNsaWVudCk7Cit9CisKIHZvaWQgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICBpc0NyYXNoZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgK
aW5kZXggNTkwZmFiZC4uZTNjZTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRl
ICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVkZSAicXdlYmtpdHR5cGVzLmgiCisjaW5jbHVkZSAi
cXdrcG9wdXBtZW51LmgiCiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZl
L3FzZ3BhaW50ZWRpdGVtLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KQEAgLTY1LDYg
KzY2LDkgQEAgcHVibGljOgogCiAgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBuYXZpZ2F0
aW9uQ29udHJvbGxlcigpIGNvbnN0OwogCisgICAgdm9pZCBzZXRDcmVhdGVOZXdQb3B1cE1lbnVG
dW5jdGlvbihRV0tQb3B1cE1lbnVGYWN0b3J5Kiwgdm9pZCogZGF0YSk7CisgICAgUVdLUG9wdXBN
ZW51KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSosIFFXS1BvcHVwTWVu
dUNsaWVudCopOworCiBwdWJsaWMgUV9TTE9UUzoKICAgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5jcHAKaW5kZXggMTk0YzE5Yy4uMzhkYTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCkBAIC0xMzcsNiArMTM3LDE2IEBAIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogUVRvdWNoV2ViUGFnZTo6bmF2aWdhdGlvbkNvbnRyb2xs
ZXIoKSBjb25zdAogICAgIHJldHVybiBkLT5uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIH0KIAordm9p
ZCBRVG91Y2hXZWJQYWdlOjpzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihRV0tQb3B1cE1l
bnVGYWN0b3J5KiBmYWN0b3J5LCB2b2lkKiBkYXRhKQoreworICAgIGQtPnBhZ2UtPnNldENyZWF0
ZU5ld1BvcHVwTWVudUZ1bmN0aW9uKGZhY3RvcnksIGRhdGEpOworfQorCitRV0tQb3B1cE1lbnUq
IFFUb3VjaFdlYlBhZ2U6OmNyZWF0ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBk
YXRhLCBRV0tQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gZC0+cGFnZS0+
Y3JlYXRlUG9wdXBNZW51KGRhdGEsIGNsaWVudCk7Cit9CisKIFFUb3VjaFdlYlBhZ2VQcml2YXRl
OjpRVG91Y2hXZWJQYWdlUHJpdmF0ZShRVG91Y2hXZWJQYWdlKiB2aWV3KQogICAgIDogcSh2aWV3
KQogICAgICwgcGFnZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaAppbmRleCAxYzQyYTM2Li5lZGUzNmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaApAQCAtMjMsNiArMjMsNyBAQAog
CiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgor
I2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgogCiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dp
dGVtLmg+CiAjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CkBAIC01OSw2ICs2MCw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFFTR05vZGUqIHVwZGF0ZVBhaW50Tm9kZShRU0dOb2RlKiBvbGROb2Rl
LCBVcGRhdGVQYWludE5vZGVEYXRhKik7CiAgICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCop
OwogCisgICAgdm9pZCBzZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihRV0tQb3B1cE1lbnVG
YWN0b3J5Kiwgdm9pZCogZGF0YSk7CisgICAgUVdLUG9wdXBNZW51KiBjcmVhdGVQb3B1cE1lbnUo
Y29uc3QgUVdLUG9wdXBNZW51RGF0YSosIFFXS1BvcHVwTWVudUNsaWVudCopOworCiBRX1NJR05B
TFM6CiAgICAgdm9pZCB1cmxDaGFuZ2VkKGNvbnN0IFFVcmwmKTsKICAgICB2b2lkIHRpdGxlQ2hh
bmdlZChjb25zdCBRU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3a3BvcHVwbWVudS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twb3B1cG1lbnUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg3
ZWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twb3B1cG1lbnUuaApAQCAtMCwwICsxLDc3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAx
MSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2VuZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgcXdrcG9wdXBtZW51X2gKKyNkZWZpbmUgcXdrcG9wdXBtZW51X2gKKworI2luY2x1ZGUgPFFS
ZWN0PgorI2luY2x1ZGUgPFFTY29wZWRQb2ludGVyPgorI2luY2x1ZGUgPFFTdHJpbmc+CisKK2Ns
YXNzIFFXS1BvcHVwTWVudURhdGEgeworcHVibGljOgorICAgIHZpcnR1YWwgflFXS1BvcHVwTWVu
dURhdGEoKSB7IH0KKworICAgIGVudW0gSXRlbVR5cGUgeyBTZXBhcmF0b3IsIEl0ZW0gfTsKKyAg
ICBlbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExUUiB9OworCisgICAgdmlydHVhbCBJdGVtVHlw
ZSBpdGVtVHlwZShpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHREaXJlY3Rpb24gaXRl
bVRleHREaXJlY3Rpb24oaW50KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRl
bVRleHQoaW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1BY2Nlc3NpYmls
aXR5VGV4dChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRvb2xUaXAo
aW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0VuYWJsZWQoaW50KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc0xhYmVsKGludCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXRlbUhhc1RleHREaXJlY3Rpb25PdmVycmlkZShpbnQpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUVJlY3Qg
Z2VvbWV0cnkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgc2NhbGVGYWN0b3IoKSBjb25z
dCA9IDA7Cit9OworCitjbGFzcyBRV0tQb3B1cE1lbnVDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RJdGVtKGludCkgPSAwOworfTsKKworY2xhc3MgUVdLUG9wdXBNZW51
IHsKK3B1YmxpYzoKK1FXS1BvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhLCBR
V0tQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkgIDogbV9kYXRhKGRhdGEpLCBtX2NsaWVudChjbGll
bnQpIHsgfQorICAgIHZpcnR1YWwgflFXS1BvcHVwTWVudSgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzaG93KCkgPSAwOworCisgICAgY29uc3QgUVdLUG9wdXBNZW51RGF0YSogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5kYXRhKCk7IH0KKyAgICB2b2lkIHNlbGVjdEl0ZW0oaW50IGluZGV4
KSB7IG1fY2xpZW50LT5zZWxlY3RJdGVtKGluZGV4KTsgfQorCitwcml2YXRlOgorICAgIFFTY29w
ZWRQb2ludGVyPGNvbnN0IFFXS1BvcHVwTWVudURhdGE+IG1fZGF0YTsKKyAgICBRV0tQb3B1cE1l
bnVDbGllbnQqIG1fY2xpZW50OworCit9OworCitjbGFzcyBRV0tQb3B1cE1lbnVGYWN0b3J5IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIFFXS1BvcHVwTWVudSogY3JlYXRlUG9wdXBNZW51KGNvbnN0
IFFXS1BvcHVwTWVudURhdGEqLCBRV0tQb3B1cE1lbnVDbGllbnQqLCB2b2lkKikgPSAwOworfTsK
KworI2VuZGlmIC8vIHF3a3BvcHVwbWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDdlZTI3MWUuLjc1NjkxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMzg1LDcgKzIzODUsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0
RGlyZWN0aW9uLCBjbwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gcHJvdGVjdGVkQWN0
aXZlUG9wdXBNZW51ID0gbV9hY3RpdmVQb3B1cE1lbnU7CiAKICAgICBwcm90ZWN0ZWRBY3RpdmVQ
b3B1cE1lbnUtPnNob3dQb3B1cE1lbnUocmVjdCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4o
dGV4dERpcmVjdGlvbiksIG1fdmlld1NjYWxlRmFjdG9yLCBpdGVtcywgZGF0YSwgc2VsZWN0ZWRJ
bmRleCk7CisjaWYgIVBMQVRGT1JNKFFUKQogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudS0+
aW52YWxpZGF0ZSgpOworI2VuZGlmCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51ID0gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAK
aW5kZXggZDExMzYzMy4uOTBjOTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgUXRXZWJQYWdlUHJveHk6
OlF0V2ViUGFnZVByb3h5KFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UsIFFXS0NvbnRleHQq
IGMsIFdLUGEKICAgICAsIG1fcHJlZmVyZW5jZXMoMCkKICAgICAsIG1fdW5kb1N0YWNrKGFkb3B0
UHRyKG5ldyBRVW5kb1N0YWNrKHRoaXMpKSkKICAgICAsIG1fbG9hZFByb2dyZXNzKDApCisgICAg
LCBtX3BvcHVwTWVudUZhY3RvcnlEYXRhKDApCiB7CiAgICAgQVNTRVJUKHZpZXdJbnRlcmZhY2Up
OwogICAgIG1lbXNldChtX2FjdGlvbnMsIDAsIHNpemVvZihtX2FjdGlvbnMpKTsKQEAgLTM2OCw5
ICszNjksOSBAQCB2b2lkIFF0V2ViUGFnZVByb3h5Ojpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sKQogewogfQogCi1QYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PiBRdFdlYlBhZ2VQcm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVBy
b3h5KikKK1Bhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVh
dGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIFdlYlBv
cHVwTWVudVByb3h5UXQ6OmNyZWF0ZSgpOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0
OjpjcmVhdGUodGhpcywgcGFnZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94
eT4gUXRXZWJQYWdlUHJveHk6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KikK
QEAgLTcxMCw0ICs3MTEsMTYgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6c2V0UGFnZUlzVmlzaWJs
ZShib29sIGlzVmlzaWJsZSkKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0
UGFnZUlzVmlzaWJsZShpc1Zpc2libGUpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5OjpzZXRD
cmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihRV0tQb3B1cE1lbnVGYWN0b3J5KiBmYWN0b3J5LCB2
b2lkKiBkYXRhKQoreworICAgIG1fcG9wdXBNZW51RmFjdG9yeSA9IGFkb3B0UHRyKGZhY3Rvcnkp
OworICAgIG1fcG9wdXBNZW51RmFjdG9yeURhdGEgPSBkYXRhOworfQorCitRV0tQb3B1cE1lbnUq
IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSog
ZGF0YSwgUVdLUG9wdXBNZW51Q2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIG1fcG9wdXBN
ZW51RmFjdG9yeSA/IG1fcG9wdXBNZW51RmFjdG9yeS0+Y3JlYXRlUG9wdXBNZW51KGRhdGEsIGNs
aWVudCwgbV9wb3B1cE1lbnVGYWN0b3J5RGF0YSkgOiAwOworfQorCisKICNpbmNsdWRlICJtb2Nf
UXRXZWJQYWdlUHJveHkuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuaAppbmRleCAwN2VkOGE5Li4xOTIzM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
cXdlYmtpdHR5cGVzLmgiCisjaW5jbHVkZSAicXdrcG9wdXBtZW51LmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJWaWV3SW50ZXJmYWNlLmgiCkBAIC0xNzMsNiArMTc0LDkgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRQYWdlSXNWaXNpYmxlKGJvb2wpOwogCisgICAgdm9pZCBzZXRDcmVhdGVOZXdQb3B1cE1l
bnVGdW5jdGlvbihRV0tQb3B1cE1lbnVGYWN0b3J5Kiwgdm9pZCogZGF0YSk7CisgICAgUVdLUG9w
dXBNZW51KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSosIFFXS1BvcHVw
TWVudUNsaWVudCopOworCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIHdlYkFjdGlvblRyaWdn
ZXJlZChib29sIGNoZWNrZWQpOwogCkBAIC0yMDEsNiArMjA1LDkgQEAgcHJpdmF0ZToKIAogICAg
IE93blB0cjxRVW5kb1N0YWNrPiBtX3VuZG9TdGFjazsKICAgICBpbnQgbV9sb2FkUHJvZ3Jlc3M7
CisKKyAgICBPd25QdHI8UVdLUG9wdXBNZW51RmFjdG9yeT4gbV9wb3B1cE1lbnVGYWN0b3J5Owor
ICAgIHZvaWQqIG1fcG9wdXBNZW51RmFjdG9yeURhdGE7CiB9OwogCiAjZW5kaWYgLyogUXRXZWJQ
YWdlUHJveHlfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBvcHVwTWVudVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBv
cHVwTWVudVByb3h5UXQuY3BwCmluZGV4IDFlOTdkNzQuLjY5MjgwZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKQEAgLTI3
LDI3ICsyNyw5NCBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5UXQuaCIKIAogI2luY2x1
ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CitjbGFzcyBQb3B1cE1lbnVEYXRhIDogcHVibGljIFFXS1BvcHVwTWVudURhdGEgeworcHVibGlj
OgorICAgIFBvcHVwTWVudURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24sIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktp
dDo6V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludCBzZWxlY3RlZEluZGV4KQorICAgICAgICA6IG1f
cmVjdChyZWN0KQorICAgICAgICAsIG1faXRlbXMoaXRlbXMpCisgICAgICAgICwgbV9zY2FsZUZh
Y3RvcihzY2FsZUZhY3RvcikKKyAgICAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAg
ICAgICwgbV9zZWxlY3RlZEluZGV4KHNlbGVjdGVkSW5kZXgpCisgICAgeyB9CisKKyAgICB2aXJ0
dWFsIEl0ZW1UeXBlIGl0ZW1UeXBlKGludCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghaXNWYWxpZEluZGV4KGluZGV4KSB8fCBtX2l0ZW1zW2luZGV4XS5tX3R5cGUgPT0gV2ViS2l0
OjpXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcikKKyAgICAgICAgICAgIHJldHVybiBTZXBhcmF0b3I7
CisgICAgICAgIHJldHVybiBJdGVtOworICAgIH0KKworICAgIHZpcnR1YWwgVGV4dERpcmVjdGlv
biBpdGVtVGV4dERpcmVjdGlvbihpbnQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
IWlzVmFsaWRJbmRleChpbmRleCkgfHwgbV9pdGVtc1tpbmRleF0ubV90ZXh0RGlyZWN0aW9uID09
IFdlYkNvcmU6OlJUTCkKKyAgICAgICAgICAgIHJldHVybiBSVEw7CisgICAgICAgIHJldHVybiBM
VFI7CisgICAgfQorCisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1UZXh0KGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gaXNWYWxpZEluZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1fdGV4dCA6
IFN0cmluZygpOyB9CisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1BY2Nlc3NpYmlsaXR5VGV4dChp
bnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJbmRleChpbmRleCkgPyBtX2l0ZW1zW2lu
ZGV4XS5tX2FjY2Vzc2liaWxpdHlUZXh0IDogU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFFTdHJp
bmcgaXRlbVRvb2xUaXAoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpc1ZhbGlkSW5kZXgoaW5k
ZXgpID8gbV9pdGVtc1tpbmRleF0ubV90b29sVGlwIDogU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXRlbUlzRW5hYmxlZChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJbmRl
eChpbmRleCkgPyBtX2l0ZW1zW2luZGV4XS5tX2lzRW5hYmxlZCA6IGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGl0ZW1Jc0xhYmVsKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZElu
ZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1faXNFbmFibGVkIDogZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXRlbUlzU2VsZWN0ZWQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRl
eCA9PSBtX3NlbGVjdGVkSW5kZXg7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUhhc1RleHREaXJl
Y3Rpb25PdmVycmlkZShpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJbmRleChpbmRl
eCkgPyBtX2l0ZW1zW2luZGV4XS5tX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSA6IGZhbHNlOyB9
CisKKyAgICB2aXJ0dWFsIGludCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLnNp
emUoKTsgfQorICAgIHZpcnR1YWwgUVJlY3QgZ2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c2NhbGVGYWN0b3I7IH0KKyAgICB2aXJ0dWFsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uID09IFdlYkNvcmU6OlJUTCA/IFJUTCA6IExUUjsg
fQorCisKK3ByaXZhdGU6CisgICAgUVJlY3QgbV9yZWN0OworICAgIFZlY3RvcjxXZWJLaXQ6Oldl
YlBvcHVwSXRlbT4gbV9pdGVtczsKKyAgICBkb3VibGUgbV9zY2FsZUZhY3RvcjsKKyAgICBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIGludCBtX3NlbGVjdGVkSW5kZXg7
CisKKyAgICBib29sIGlzVmFsaWRJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4
ID49IDAgJiYgaW5kZXggPCBtX2l0ZW1zLnNpemUoKTsgfQorfTsKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYlBvcHVwTWVudVByb3h5UXQ6OldlYlBvcHVwTWVudVByb3h5UXQoKQotICAgIDog
V2ViUG9wdXBNZW51UHJveHkoMCkKK1dlYlBvcHVwTWVudVByb3h5UXQ6OldlYlBvcHVwTWVudVBy
b3h5UXQoUXRXZWJQYWdlUHJveHkqIHBhZ2UsIENsaWVudCogY2xpZW50KQorICAgIDogV2ViUG9w
dXBNZW51UHJveHkoY2xpZW50KQorICAgICwgbV9wYWdlKHBhZ2UpCiB7CisgICAgQVNTRVJUKG1f
cGFnZSk7CiB9CiAKIFdlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0KCkK
IHsKIH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IElu
dFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVjdG9y
PFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1l
bnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7Cisg
ICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wb3B1cE1lbnUgPSBh
ZG9wdFB0cihtX3BhZ2UtPmNyZWF0ZVBvcHVwTWVudShuZXcgUG9wdXBNZW51RGF0YShyZWN0LCBk
aXJlY3Rpb24sIHNjYWxlRmFjdG9yLCBpdGVtcywgc2VsZWN0ZWRJbmRleCksIHRoaXMpKTsKKwor
ICAgIGlmICghbV9wb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcG9wdXBNZW51
LT5zaG93KCk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVudSgp
CiB7CisgICAgbV9wb3B1cE1lbnUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94
eVF0OjpzZWxlY3RJdGVtKGludCBpbmRleCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaW5kZXgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5oCmluZGV4IGU3MTk3ZDUuLjljZWE1Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtMjYs
MTUgKzI2LDE4IEBACiAjaWZuZGVmIFdlYlBvcHVwTWVudVByb3h5UXRfaAogI2RlZmluZSBXZWJQ
b3B1cE1lbnVQcm94eVF0X2gKIAorI2luY2x1ZGUgInF3a3BvcHVwbWVudS5oIgogI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5LmgiCiAKK2NsYXNzIFF0V2ViUGFnZVByb3h5OworCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUG9wdXBNZW51UHJveHlRdCA6IHB1YmxpYyBXZWJQb3B1
cE1lbnVQcm94eSB7CitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGljIFdlYlBvcHVw
TWVudVByb3h5LCBwcml2YXRlIFFXS1BvcHVwTWVudUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlRdD4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoUXRXZWJQYWdlUHJveHkqIHBh
Z2UsIENsaWVudCogY2xpZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJQb3B1cE1lbnVQcm94eVF0KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBv
cHVwTWVudVByb3h5UXQocGFnZSwgY2xpZW50KSk7CiAgICAgfQogICAgIH5XZWJQb3B1cE1lbnVQ
cm94eVF0KCk7CiAKQEAgLTQyLDcgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
aGlkZVBvcHVwTWVudSgpOwogCiBwcml2YXRlOgotICAgIFdlYlBvcHVwTWVudVByb3h5UXQoKTsK
KyAgICBXZWJQb3B1cE1lbnVQcm94eVF0KFF0V2ViUGFnZVByb3h5KiwgQ2xpZW50Kik7CisKKyAg
ICB2b2lkIHNlbGVjdEl0ZW0oaW50KTsKKworICAgIFF0V2ViUGFnZVByb3h5KiBtX3BhZ2U7Cisg
ICAgT3duUHRyPFFXS1BvcHVwTWVudT4gbV9wb3B1cE1lbnU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggMzc1NDk5OC4uZGU1NWMwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0MkFQSS5wcmkKQEAgLTUwLDYgKzUwLDcgQEAgV0VCS0lUMl9BUElfU09VUkNFUyA9IFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJv
ci5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5h
dmlnYXRpb25jb250cm9sbGVyLmNwcCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xd2twb3B1cG1lbnUuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgXAogICAgICQkU09VUkNF
X0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3QuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVjODAwNjMu
LmM2MjBkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wOC0wOSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xp
dmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9w
dXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAg
ICAgICBNaW5pQnJvd3NlciB1c2VzIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdG8gaW1wbGVtZW50
IHBvcHVwIG1lbnVzLiBUaGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgIHVzZXMgUUNvbWJvQm94
ZXMgdG8gcHJvdmlkZSB0aGUgcG9wdXBzLgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IEx1
aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93
c2VyVmlldy5jcHA6CisgICAgICAgIChCcm93c2VyVmlldzo6QnJvd3NlclZpZXcpOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3Lmg6CisgICAgICAgICogTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXIucHJvOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5j
cHA6IEFkZGVkLgorICAgICAgICAoUG9wdXBDb21ibzo6UG9wdXBDb21ibyk6CisgICAgICAgIChQ
b3B1cENvbWJvOjpoaWRlUG9wdXApOgorICAgICAgICAoUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIp
OgorICAgICAgICAoUG9wdXBNZW51OjpQb3B1cE1lbnUpOgorICAgICAgICAoUG9wdXBNZW51Ojp+
UG9wdXBNZW51KToKKyAgICAgICAgKFBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgIChQb3B1cE1l
bnU6OnNldEluZGV4KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Qb3B1cE1lbnUuaDogQWRk
ZWQuCisgICAgICAgIChQb3B1cE1lbnU6OmFjdGl2ZUNoYW5nZWQpOgorICAgICAgICAoUG9wdXBN
ZW51Ojpkb1NldEluZGV4KToKKyAgICAgICAgKFBvcHVwRmFjdG9yeTo6Y3JlYXRlUG9wdXBNZW51
KToKKwogMjAxMS0wOC0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyNjgzLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlclZpZXcuY3BwCmluZGV4IDgwODUwNjIuLjQzZjFlZTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyVmlldy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiQnJvd3NlclZpZXcuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgPFFH
cmFwaGljc1NjZW5lPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgpAQCAtNDQs
NiArNDUsMTIgQEAgQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KGJvb2wgdXNlVG91Y2hXZWJWaWV3
LCBRV2lkZ2V0KiBwYXJlbnQpCiAgICAgICAgIG1faXRlbSA9IG5ldyBRVG91Y2hXZWJWaWV3KHJv
b3RJdGVtKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9pdGVtID0gbmV3IFFEZXNrdG9wV2ViVmll
dyhyb290SXRlbSgpKTsKKworICAgIGlmIChkZXNrdG9wV2ViVmlldygpKQorICAgICAgICBkZXNr
dG9wV2ViVmlldygpLT5zZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihuZXcgUG9wdXBGYWN0
b3J5LCBtX2l0ZW0tPmNhbnZhcygpKTsKKworICAgIGlmICh0b3VjaFdlYlZpZXcoKSkKKyAgICAg
ICAgdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+c2V0Q3JlYXRlTmV3UG9wdXBNZW51RnVuY3Rpb24o
bmV3IFBvcHVwRmFjdG9yeSwgbV9pdGVtLT5jYW52YXMoKSk7CiB9CiAKIEJyb3dzZXJWaWV3Ojp+
QnJvd3NlclZpZXcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZp
ZXcuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgKaW5kZXggZDhkZDA2Mi4u
NjM1OTM2OCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCkBAIC0zMSw2ICszMSw3IEBA
CiAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZhcy5oPgogI2luY2x1ZGUgPHF3ZWJr
aXR0eXBlcy5oPgorI2luY2x1ZGUgPHF3a3BvcHVwbWVudS5oPgogCiBjbGFzcyBRRGVza3RvcFdl
YlZpZXc7CiBjbGFzcyBRU0dJdGVtOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQv
TWluaUJyb3dzZXIucHJvIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCmlu
ZGV4IDM5ODE1MTEuLjU5YTFhNDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyLnBybworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8K
QEAgLTgsNiArOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIE1pbmlCcm93c2VyQXBwbGljYXRpb24u
Y3BwIFwKICAgICBVcmxMb2FkZXIuY3BwIFwKICAgICB1dGlscy5jcHAgXAorICAgIFBvcHVwTWVu
dS5jcHAgXAogCiBIRUFERVJTICs9IFwKICAgICBCcm93c2VyVmlldy5oIFwKQEAgLTE1LDYgKzE2
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIFwKICAgICBV
cmxMb2FkZXIuaCBcCiAgICAgdXRpbHMuaCBcCisgICAgUG9wdXBNZW51LmggXAogCiBpc0VtcHR5
KE9VVFBVVF9ESVIpOiBPVVRQVVRfRElSID0gLi4vLi4vLi4KIGluY2x1ZGUoLi4vLi4vLi4vU291
cmNlL1dlYktpdC5wcmkpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Qb3B1cE1l
bnUuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGFkODc0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvUG9wdXBNZW51LmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisjaW5jbHVkZSAiUG9wdXBNZW51LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09NQk9CT1gK
KworI2luY2x1ZGUgPFFBYnN0cmFjdEl0ZW1WaWV3PgorI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4K
KyNpbmNsdWRlIDxRSW5wdXRDb250ZXh0PgorI2luY2x1ZGUgPFFNb3VzZUV2ZW50PgorI2luY2x1
ZGUgPFFTdGFuZGFyZEl0ZW1Nb2RlbD4KKworUG9wdXBDb21ibzo6UG9wdXBDb21ibyhQb3B1cE1l
bnUqIG93bmVyLCBRUmVjdCByZWN0LCBRV2lkZ2V0KiBwYXJlbnQpCisgICAgOiBRQ29tYm9Cb3go
cGFyZW50KQorICAgICwgbV9vd25lcihvd25lcikKK3sKKyAgICBzZXRHZW9tZXRyeShRUmVjdChy
ZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwgcmVjdC53aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgp
KSk7CisgICAgdmlldygpLT5pbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7Cit9CisKK3ZvaWQgUG9w
dXBDb21ibzo6aGlkZVBvcHVwKCkKK3sKKyAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpOworICAg
IG1fb3duZXItPnNldEluZGV4KC0xKTsKK30KKworYm9vbCBQb3B1cENvbWJvOjpldmVudEZpbHRl
cihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQoreworICAgIFFfQVNTRVJUKHdhdGNo
ZWQgPT0gdmlldygpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IFFFdmVudDo6SGlkZSkK
KyAgICAgICAgbV9vd25lci0+c2V0SW5kZXgoLTEpOworCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitQb3B1cE1lbnU6OlBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhLCBRV0tQ
b3B1cE1lbnVDbGllbnQqIGNsaWVudCwgUVdpZGdldCogcGFyZW50KQorICAgIDogUVdLUG9wdXBN
ZW51KGRhdGEsIGNsaWVudCkKKyAgICAsIG1fY29tYm8oMCkKKyAgICAsIG1fcGFyZW50KHBhcmVu
dCkKKyAgICAsIG1faW5kZXgoLTEpCit7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90KHRydWUp
OworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGRv
U2V0SW5kZXgoKSkpOworfQorCitQb3B1cE1lbnU6On5Qb3B1cE1lbnUoKQoreworICAgIGlmICht
X2NvbWJvKQorICAgICAgICBtX2NvbWJvLT5kZWxldGVMYXRlcigpOworfQorCit2b2lkIFBvcHVw
TWVudTo6c2hvdygpCit7CisgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb21ibyA9IG5ldyBQb3B1cENvbWJvKHRoaXMsIGRhdGEoKS0+Z2VvbWV0cnkoKSwgbV9w
YXJlbnQpOworICAgIGNvbm5lY3QobV9jb21ibywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhp
cywgU0xPVChhY3RpdmVDaGFuZ2VkKGludCkpKTsKKworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCog
bW9kZWwgPSBxb2JqZWN0X2Nhc3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4obV9jb21iby0+bW9kZWwo
KSk7CisgICAgUV9BU1NFUlQobW9kZWwpOworCisgICAgaW50IGN1cnJlbnRJbmRleCA9IC0xOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YSgpLT5pdGVtQ291bnQoKTsgKytpKSB7CisgICAg
ICAgIHN3aXRjaCAoZGF0YSgpLT5pdGVtVHlwZShpKSkgeworICAgICAgICBjYXNlIFFXS1BvcHVw
TWVudURhdGE6OlNlcGFyYXRvcjoKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydFNlcGFyYXRv
cihpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFFXS1BvcHVwTWVudURhdGE6
Okl0ZW06CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJdGVtKGksIGRhdGEoKS0+aXRlbVRl
eHQoaSkpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoZGF0YSgpLT5p
dGVtSXNFbmFibGVkKGkpKTsKKyNpZm5kZWYgUVRfTk9fVE9PTFRJUAorICAgICAgICAgICAgbW9k
ZWwtPml0ZW0oaSktPnNldFRvb2xUaXAoZGF0YSgpLT5pdGVtVG9vbFRpcChpKSk7CisjZW5kaWYK
KyAgICAgICAgICAgIGlmIChkYXRhKCktPml0ZW1Jc1NlbGVjdGVkKGkpKQorICAgICAgICAgICAg
ICAgIGN1cnJlbnRJbmRleCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChjdXJyZW50SW5kZXggPj0gMCkKKyAgICAgICAgbV9jb21iby0+c2V0Q3Vy
cmVudEluZGV4KGN1cnJlbnRJbmRleCk7CisKKyAgICBRTW91c2VFdmVudCBldmVudChRRXZlbnQ6
Ok1vdXNlQnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIFFD
b3JlQXBwbGljYXRpb246OnNlbmRFdmVudChtX2NvbWJvLCAmZXZlbnQpOworfQorCit2b2lkIFBv
cHVwTWVudTo6c2V0SW5kZXgoaW50IGluZGV4KQoreworICAgIG1faW5kZXggPSBpbmRleDsKKyAg
ICBtX3RpbWVyLnN0YXJ0KDApOworfQorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5oIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvUG9wdXBNZW51LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNj
NmYwNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1BvcHVwTWVudS5o
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBQb3B1cE1lbnVfaAor
I2RlZmluZSBQb3B1cE1lbnVfaAorCisjaW5jbHVkZSAicXdrcG9wdXBtZW51LmgiCisjaW5jbHVk
ZSA8UUNvbWJvQm94PgorI2luY2x1ZGUgPFFUaW1lcj4KKworI2lmbmRlZiBRVF9OT19DT01CT0JP
WAorCitjbGFzcyBQb3B1cENvbWJvOworCitjbGFzcyBQb3B1cE1lbnUgOiBwdWJsaWMgUU9iamVj
dCwgcHVibGljIFFXS1BvcHVwTWVudSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBQb3B1
cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSosIFFXS1BvcHVwTWVudUNsaWVudCosIFFXaWRn
ZXQqKTsKKyAgICB+UG9wdXBNZW51KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworCitw
cml2YXRlIHNsb3RzOgorICAgIHZvaWQgYWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpIHsgc2V0SW5k
ZXgoaW5kZXgpOyB9CisgICAgdm9pZCBkb1NldEluZGV4KCkgeyBzZWxlY3RJdGVtKG1faW5kZXgp
OyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFBvcHVwQ29tYm87CisKKyAgICBQb3B1
cENvbWJvKiBtX2NvbWJvOworICAgIFFXaWRnZXQqIG1fcGFyZW50OworICAgIGludCBtX2luZGV4
OworICAgIFFUaW1lciBtX3RpbWVyOworCisgICAgdm9pZCBzZXRJbmRleChpbnQpOworfTsKKwor
Y2xhc3MgUG9wdXBDb21ibyA6IHB1YmxpYyBRQ29tYm9Cb3ggeworcHVibGljOgorICAgIFBvcHVw
Q29tYm8oUG9wdXBNZW51KiwgUVJlY3QsIFFXaWRnZXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlk
ZVBvcHVwKCk7CisKK3ByaXZhdGU6CisgICAgUG9wdXBNZW51KiBtX293bmVyOworICAgIGJvb2wg
ZXZlbnRGaWx0ZXIoUU9iamVjdCosIFFFdmVudCopOworfTsKKworY2xhc3MgUG9wdXBGYWN0b3J5
IDogcHVibGljIFFXS1BvcHVwTWVudUZhY3RvcnkgeworcHVibGljOgorICAgIFFXS1BvcHVwTWVu
dSogY3JlYXRlUG9wdXBNZW51KGNvbnN0IFFXS1BvcHVwTWVudURhdGEqIGRhdGEsIFFXS1BvcHVw
TWVudUNsaWVudCogY2xpZW50LCB2b2lkKiB2aWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQb3B1cE1lbnUoZGF0YSwgY2xpZW50LCByZWludGVycHJldF9jYXN0PFFXaWRnZXQqPih2aWV3
KSk7CisgICAgfQorfTsKKworI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCisKKyNlbmRpZiAvLyBQ
b3B1cE1lbnVfaAotLSAKMS43LjQuMQoK
</data>
<flag name="review"
          id="98961"
          type_id="1"
          status="-"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="98962"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103638</attachid>
            <date>2011-08-11 09:54:41 -0700</date>
            <delta_ts>2011-08-11 09:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>11917</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBiMzUyM2Y4YjU5YTNlOTMwMjIxZmJlYzJjNWVmYTBkOTBiNmZmODUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMTEgQXVnIDIwMTEgMTE6MDg6MzEgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKysrKysKIC4uLi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCAgIHwgICAxOCArKysrKwogLi4uL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oICAgfCAgICAyICsKIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAgMiAr
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwICAgICB8ICAg
IDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3Bw
IHwgICAgNCArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNl
LmggICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2Uu
aCAgICAgICAgfCAgICAzICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQ
cm94eVF0LmNwcCAgIHwgICA3NCArKysrKysrKysrKysrKysrKystLQogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCAgfCAgIDI5ICsrKysrKystCiAxMCBm
aWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGVmNzEwNTAuLjU0OTI0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAx
MS0wOC0xMSAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KKwor
ICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5n
IHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgYSBzaW1wbGUgUXRXZWJLaXQgV2ViS2l0MiBwb3B1cCBtZW51LgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2hvd1Bv
cHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OnNob3dQb3B1cE1lbnUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlR
dDo6V2ViUG9wdXBNZW51UHJveHlRdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVBy
b3h5UXQ6OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlR
dDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6
OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0Ojpz
ZWxlY3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6ZG9TZXRJ
bmRleCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKToKKwogMjAxMS0wOC0w
OSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBSZWRpcmVjdCBkaWRGaW5kWm9vbWFibGVBcmVhIHRocnUgdG8gdGhlIHZpZXcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmNwcAppbmRleCBiMjQ4ZDQ0Li4wNDYxODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50PgogI2luY2x1ZGUgPFFTdHlsZU9w
dGlvbkdyYXBoaWNzSXRlbT4KKyNpbmNsdWRlIDxRdENvcmUvUUNvcmVBcHBsaWNhdGlvbj4KICNp
bmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZhcy5oPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRp
dmUvcXNnZXZlbnQuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KQEAgLTE3
MCw2ICsxNzEsMjMgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoaWRlQ29udGV4dE1l
bnUoKQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CiB9CiAKK3ZvaWQgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6c2hvd1BvcHVwTWVudShRU2hhcmVkUG9pbnRlcjxRQ29tYm9Cb3g+IGNvbWJv
Qm94KQoreworICAgIGlmICghY29tYm9Cb3gtPmNvdW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFFXaWRnZXQqIHdpZGdldCA9IHEtPmNhbnZhcygpOworICAgIGlmICghd2lkZ2V0KQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb21ib0JveC0+c2V0UGFyZW50KHdpZGdldCk7CisKKyAgICBR
TW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJlc3MsIFFDdXJzb3I6OnBvcygp
LCBRdDo6TGVmdEJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAgICBRdDo6TGVmdEJ1dHRvbiwg
UXQ6Ok5vTW9kaWZpZXIpOworICAgIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudChjb21ib0Jv
eC5kYXRhKCksICZldmVudCk7Cit9CisKKwogUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZp
ZXcoUVNHSXRlbSogcGFyZW50KQogICAgIDogUVNHUGFpbnRlZEl0ZW0ocGFyZW50KQogICAgICwg
ZChuZXcgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSh0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBhNjgwMzZlLi5m
MTAxMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXdfcC5oCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHNob3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVudT4pOwogICAgIHZpcnR1YWwg
dm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51
KFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4pOworCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3ZWUyNzFlLi43NTY5
MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjM4
NSw3ICsyMzg1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50
UmVjdCYgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwgY28KICAgICBSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IG1fYWN0aXZlUG9wdXBNZW51
OwogCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51LT5zaG93UG9wdXBNZW51KHJlY3QsIHN0
YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBtX3ZpZXdTY2FsZUZhY3Rv
ciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVkSW5kZXgpOworI2lmICFQTEFURk9STShRVCkKICAgICBw
cm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUtPmludmFsaWRhdGUoKTsKKyNlbmRpZgogICAgIHByb3Rl
Y3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IGQxMTM2MzMuLjE1YTZjOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtMzY4LDkg
KzM2OCw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUG9wdXBN
ZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXRXZWJQYWdlUHJveHk6OmNyZWF0
ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gV2ViUG9w
dXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVByb3h5UXQ6
OmNyZWF0ZShtX3ZpZXdJbnRlcmZhY2UsIHBhZ2UpOwogfQogCiBQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJ
bnRlcmZhY2UuY3BwCmluZGV4IGEwODgyMjQuLmViZGU1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC0xOTgsNiArMTk4
LDEwIEBAIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpoaWRlQ29udGV4dE1lbnUoKQogICAgIC8v
IEZJWE1FCiB9CiAKK3ZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpzaG93UG9wdXBNZW51KFFTaGFy
ZWRQb2ludGVyPFFDb21ib0JveD4pCit7Cit9CisKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpw
cm9jZXNzRGlkQ3Jhc2goKQogewogICAgIC8vIEZJWE1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKaW5kZXggNmI0NGM1OC4uNzY4YWVmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
aApAQCAtNzQsNiArNzQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4
dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRl
eHRNZW51KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShRU2hhcmVkUG9pbnRl
cjxRQ29tYm9Cb3g+KTsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDMzZjkzMzAuLmQxYTk2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaApAQCAtMjMsNiArMjMs
NyBAQAogCiAjaW5jbHVkZSA8UXRDb3JlL1FTaGFyZWRQb2ludGVyPgogI2luY2x1ZGUgPFF0Q29y
ZS9RU2l6ZT4KKyNpbmNsdWRlIDxRdEd1aS9RQ29tYm9Cb3g+CiAjaW5jbHVkZSA8UXRHdWkvUU1l
bnU+CiAKIGNsYXNzIFFXZWJFcnJvcjsKQEAgLTY4LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9p
ZCBzaG93UG9wdXBNZW51KFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4pID0gMDsKKwogICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bGF1bmNoUHJvY2VzcygpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMWU5N2Q3NC4uYTBlMWI1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcApAQCAtMjYsMjggKzI2LDkyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViUG9wdXBNZW51UHJveHlRdC5oIgogCisjaW5jbHVkZSA8UXRHdWkvUUFic3RyYWN0SXRlbVZp
ZXc+CisjaW5jbHVkZSA8UXRHdWkvUUNvbWJvQm94PgorI2luY2x1ZGUgPFF0R3VpL1FTdGFuZGFy
ZEl0ZW1Nb2RlbD4KKwogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1
ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViUG9wdXBNZW51
UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCi0gICAgOiBXZWJQb3B1cE1lbnVQcm94eSgw
KQorV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdChWaWV3SW50ZXJmYWNl
KiB2aWV3SW50ZXJmYWNlLCBDbGllbnQqIGNsaWVudCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5
KGNsaWVudCkKKyAgICAsIG1fdmlld0ludGVyZmFjZSh2aWV3SW50ZXJmYWNlKQogeworICAgIEFT
U0VSVChtX3ZpZXdJbnRlcmZhY2UpOworCisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90KHRydWUp
OworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGRv
U2V0SW5kZXgoKSkpOwogfQogCiBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBNZW51UHJv
eHlRdCgpCiB7CiB9CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShj
b25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0
IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
JiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQorYm9vbCBXZWJQb3B1cE1lbnVQcm94eVF0OjpldmVu
dEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQogeworICAgIFFfQVNTRVJU
KHdhdGNoZWQgPT0gbV9wb3B1cE1lbnUtPnZpZXcoKSk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIHNlbGVjdEl0ZW0oLTEpOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkK
K3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwTWVu
dSA9IFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4obmV3IFFDb21ib0JveCk7CisKKyAgICBpZiAo
IW1fcG9wdXBNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwTWVudS0+c2V0R2Vv
bWV0cnkocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIG1fcG9wdXBNZW51LT5zaXpl
SGludCgpLmhlaWdodCgpKTsKKworICAgIG1fcG9wdXBNZW51LT52aWV3KCktPmluc3RhbGxFdmVu
dEZpbHRlcih0aGlzKTsKKyAgICBRT2JqZWN0Ojpjb25uZWN0KG1fcG9wdXBNZW51LmRhdGEoKSwg
U0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChzZWxlY3RJdGVtKGludCkpKTsKKwor
ICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0X2Nhc3Q8UVN0YW5kYXJkSXRl
bU1vZGVsKj4obV9wb3B1cE1lbnUtPm1vZGVsKCkpOworICAgIFFfQVNTRVJUKG1vZGVsKTsKKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGl0ZW1zW2ldLm1fdHlwZSA9PSBXZWJLaXQ6OldlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAg
ICAgICAgICAgbV9wb3B1cE1lbnUtPmluc2VydFNlcGFyYXRvcihpKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYktpdDo6V2ViUG9wdXBJdGVtOjpJdGVtKSB7CisgICAg
ICAgICAgICBtX3BvcHVwTWVudS0+aW5zZXJ0SXRlbShpLCBpdGVtc1tpXS5tX3RleHQpOworICAg
ICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoaXRlbXNbaV0ubV9pc0VuYWJsZWQp
OworI2lmbmRlZiBRVF9OT19UT09MVElQCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpKS0+c2V0
VG9vbFRpcChpdGVtc1tpXS5tX3Rvb2xUaXApOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtX3BvcHVwTWVudS0+c2V0Q3VycmVudEluZGV4KHNlbGVjdGVkSW5kZXgpOworICAgIG1f
dmlld0ludGVyZmFjZS0+c2hvd1BvcHVwTWVudShtX3BvcHVwTWVudSk7CiB9CiAKIHZvaWQgV2Vi
UG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVudSgpCiB7CisgICAgbV9wb3B1cE1lbnUuY2xl
YXIoKTsKIH0KIAordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJdGVtKGludCBpbmRl
eCkKK3sKKyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV90aW1lci5zdGFydCgwKTsKK30KKwor
dm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpkb1NldEluZGV4KCkKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbV9p
bmRleCk7Cit9CisKKyNpbmNsdWRlICJtb2NfV2ViUG9wdXBNZW51UHJveHlRdC5jcHAiCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJQb3B1cE1lbnVQcm94eVF0LmgKaW5kZXggZTcxOTdkNS4uZTU5YzI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCkBAIC0yOCwy
MSArMjgsNDIgQEAKIAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAKKyNpbmNsdWRl
IDxRdENvcmUvUVNoYXJlZFBvaW50ZXI+CisjaW5jbHVkZSA8UXRDb3JlL1FUaW1lcj4KKworY2xh
c3MgUUNvbWJvQm94OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUG9wdXBNZW51
UHJveHlRdCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitjbGFzcyBWaWV3SW50ZXJmYWNl
OworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBX
ZWJQb3B1cE1lbnVQcm94eSB7CisgICAgUV9PQkpFQ1QKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0ZShWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJm
YWNlLCBDbGllbnQqIGNsaWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViUG9wdXBNZW51UHJveHlRdCgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQ
b3B1cE1lbnVQcm94eVF0KHZpZXdJbnRlcmZhY2UsIGNsaWVudCkpOwogICAgIH0KICAgICB+V2Vi
UG9wdXBNZW51UHJveHlRdCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBzY2Fs
ZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRl
UG9wdXBNZW51KCk7CiAKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIGRvU2V0SW5kZXgoKTsK
KyAgICB2b2lkIHNlbGVjdEl0ZW0oaW50KTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgZXZlbnRG
aWx0ZXIoUU9iamVjdCosIFFFdmVudCopOworCiBwcml2YXRlOgotICAgIFdlYlBvcHVwTWVudVBy
b3h5UXQoKTsKKyAgICBXZWJQb3B1cE1lbnVQcm94eVF0KFZpZXdJbnRlcmZhY2UqLCBDbGllbnQq
KTsKKworICAgIGludCBtX2luZGV4OworCisgICAgUVNoYXJlZFBvaW50ZXI8UUNvbWJvQm94PiBt
X3BvcHVwTWVudTsKKyAgICBRVGltZXIgbV90aW1lcjsKKyAgICBWaWV3SW50ZXJmYWNlKiBjb25z
dCBtX3ZpZXdJbnRlcmZhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLS0gCjEuNy40
LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103639</attachid>
            <date>2011-08-11 09:57:27 -0700</date>
            <delta_ts>2011-08-11 13:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>11992</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA4MGQ1MzU1MWNjYzU3ODExZWM3OGViMjliMjBlNmJlNGMxNzBlMjQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMTEgQXVnIDIwMTEgMTE6MDg6MzEgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKysrKysrKysrCiAuLi4vV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgICB8ICAgMTggKysrKysKIC4uLi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCAgIHwgICAgMiArCiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgIDIg
KwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCAgICAgfCAg
ICA0ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNw
cCB8ICAgIDQgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFj
ZS5oICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNl
LmggICAgICAgIHwgICAgMyArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51
UHJveHlRdC5jcHAgICB8ICAgNzQgKysrKysrKysrKysrKysrKysrLS0KIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmggIHwgICAyOSArKysrKysrLQogMTAg
ZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBlZjcxMDUwLi4yN2I5M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MTEtMDgtMTEgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgW1F0XSBDcmVhdGluZyB3ZWJraXQyIHBvcHVwIG1lbnUgaG9va3MgYW5kIGFkZGlu
ZyBwb3B1cCBtZW51cyB0byBNaW5pQnJvd3Nlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTkxCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1l
bnRzIGEgc2ltcGxlIFF0V2ViS2l0IFdlYktpdDIgcG9wdXAgbWVudS4KKworICAgICAgICBPcmln
aW5hbCBwYXRjaCBieSBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3Vj
aFZpZXdJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6
OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZh
Y2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlRdDo6ZG9TZXRJbmRleCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6Y3Jl
YXRlKToKKwogMjAxMS0wOC0wOSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBSZWRpcmVjdCBkaWRGaW5kWm9vbWFibGVBcmVh
IHRocnUgdG8gdGhlIHZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRleCBiMjQ4ZDQ0Li4wNDYxODkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBA
IC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50Pgog
I2luY2x1ZGUgPFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbT4KKyNpbmNsdWRlIDxRdENvcmUvUUNv
cmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZhcy5oPgogI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnZXZlbnQuaD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZl
L3FzZ2l0ZW0uaD4KQEAgLTE3MCw2ICsxNzEsMjMgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpoaWRlQ29udGV4dE1lbnUoKQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CiB9CiAK
K3ZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2hvd1BvcHVwTWVudShRU2hhcmVkUG9pbnRl
cjxRQ29tYm9Cb3g+IGNvbWJvQm94KQoreworICAgIGlmICghY29tYm9Cb3gtPmNvdW50KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFFXaWRnZXQqIHdpZGdldCA9IHEtPmNhbnZhcygpOworICAg
IGlmICghd2lkZ2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBjb21ib0JveC0+c2V0UGFyZW50
KHdpZGdldCk7CisKKyAgICBRTW91c2VFdmVudCBldmVudChRRXZlbnQ6Ok1vdXNlQnV0dG9uUHJl
c3MsIFFDdXJzb3I6OnBvcygpLCBRdDo6TGVmdEJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIpOworICAgIFFDb3JlQXBwbGljYXRpb246
OnNlbmRFdmVudChjb21ib0JveC5kYXRhKCksICZldmVudCk7Cit9CisKKwogUURlc2t0b3BXZWJW
aWV3OjpRRGVza3RvcFdlYlZpZXcoUVNHSXRlbSogcGFyZW50KQogICAgIDogUVNHUGFpbnRlZEl0
ZW0ocGFyZW50KQogICAgICwgZChuZXcgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSh0aGlzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3Au
aAppbmRleCBhNjgwMzZlLi5mMTAxMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVu
dT4pOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKIAorICAgIHZpcnR1YWwg
dm9pZCBzaG93UG9wdXBNZW51KFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4pOworCiAgICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5j
aFByb2Nlc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA3ZWUyNzFlLi43NTY5MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMjM4NSw3ICsyMzg1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQ
b3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwgY28K
ICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9
IG1fYWN0aXZlUG9wdXBNZW51OwogCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51LT5zaG93
UG9wdXBNZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24p
LCBtX3ZpZXdTY2FsZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVkSW5kZXgpOworI2lmICFQ
TEFURk9STShRVCkKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUtPmludmFsaWRhdGUoKTsK
KyNlbmRpZgogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IGQxMTM2MzMu
LjE1YTZjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVBy
b3h5LmNwcApAQCAtMzY4LDkgKzM2OCw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXRX
ZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsK
LSAgICByZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdl
YlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZShtX3ZpZXdJbnRlcmZhY2UsIHBhZ2UpOwogfQogCiBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmluZGV4IGEwODgyMjQuLmViZGU1MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
Y3BwCkBAIC0xOTgsNiArMTk4LDEwIEBAIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpoaWRlQ29u
dGV4dE1lbnUoKQogICAgIC8vIEZJWE1FCiB9CiAKK3ZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpz
aG93UG9wdXBNZW51KFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4pCit7Cit9CisKIHZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIC8vIEZJWE1FCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKaW5kZXgg
NmI0NGM1OC4uNzY4YWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuaApAQCAtNzQsNiArNzQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKICAgICB2aXJ0
dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVw
TWVudShRU2hhcmVkUG9pbnRlcjxRQ29tYm9Cb3g+KTsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkQ3Jhc2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDMzZjkz
MzAuLmQxYTk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3
SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZh
Y2UuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSA8UXRDb3JlL1FTaGFyZWRQb2ludGVy
PgogI2luY2x1ZGUgPFF0Q29yZS9RU2l6ZT4KKyNpbmNsdWRlIDxRdEd1aS9RQ29tYm9Cb3g+CiAj
aW5jbHVkZSA8UXRHdWkvUU1lbnU+CiAKIGNsYXNzIFFXZWJFcnJvcjsKQEAgLTY4LDYgKzY5LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50
ZXI8UU1lbnU+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVDb250ZXh0TWVudSgpID0gMDsK
IAorICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KFFTaGFyZWRQb2ludGVyPFFDb21ib0Jv
eD4pID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpID0gMDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMWU5
N2Q3NC4uYTBlMWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBvcHVwTWVudVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9X
ZWJQb3B1cE1lbnVQcm94eVF0LmNwcApAQCAtMjYsMjggKzI2LDkyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgogCisjaW5jbHVkZSA8UXRH
dWkvUUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UXRHdWkvUUNvbWJvQm94PgorI2luY2x1
ZGUgPFF0R3VpL1FTdGFuZGFyZEl0ZW1Nb2RlbD4KKwogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBN
ZW51RGF0YS5oIgorI2luY2x1ZGUgIlF0V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9w
dXBJdGVtLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCi0gICAgOiBX
ZWJQb3B1cE1lbnVQcm94eSgwKQorV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJv
eHlRdChWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBDbGllbnQqIGNsaWVudCkKKyAgICA6
IFdlYlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fdmlld0ludGVyZmFjZSh2aWV3SW50
ZXJmYWNlKQogeworICAgIEFTU0VSVChtX3ZpZXdJbnRlcmZhY2UpOworCisgICAgbV90aW1lci5z
ZXRTaW5nbGVTaG90KHRydWUpOworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0
KCkpLCB0aGlzLCBTTE9UKGRvU2V0SW5kZXgoKSkpOwogfQogCiBXZWJQb3B1cE1lbnVQcm94eVF0
Ojp+V2ViUG9wdXBNZW51UHJveHlRdCgpCiB7CiB9CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlR
dDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQorYm9vbCBXZWJQb3B1
cE1lbnVQcm94eVF0OjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50
KQogeworICAgIFFfQVNTRVJUKHdhdGNoZWQgPT0gbV9wb3B1cE1lbnUtPnZpZXcoKSk7CisKKyAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIHNlbGVjdEl0ZW0o
LTEpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlR
dDo6c2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMy
X3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3BvcHVwTWVudSA9IFFTaGFyZWRQb2ludGVyPFFDb21ib0JveD4obmV3IFFDb21i
b0JveCk7CisKKyAgICBpZiAoIW1fcG9wdXBNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3BvcHVwTWVudS0+c2V0R2VvbWV0cnkocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IG1fcG9wdXBNZW51LT5zaXplSGludCgpLmhlaWdodCgpKTsKKworICAgIG1fcG9wdXBNZW51LT52
aWV3KCktPmluc3RhbGxFdmVudEZpbHRlcih0aGlzKTsKKyAgICBRT2JqZWN0Ojpjb25uZWN0KG1f
cG9wdXBNZW51LmRhdGEoKSwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChzZWxl
Y3RJdGVtKGludCkpKTsKKworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0
X2Nhc3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4obV9wb3B1cE1lbnUtPm1vZGVsKCkpOworICAgIFFf
QVNTRVJUKG1vZGVsKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKGl0ZW1zW2ldLm1fdHlwZSA9PSBXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgbV9wb3B1cE1lbnUtPmluc2VydFNlcGFyYXRvcihp
KTsKKyAgICAgICAgZWxzZSBpZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYktpdDo6V2ViUG9wdXBJ
dGVtOjpJdGVtKSB7CisgICAgICAgICAgICBtX3BvcHVwTWVudS0+aW5zZXJ0SXRlbShpLCBpdGVt
c1tpXS5tX3RleHQpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaSktPnNldEVuYWJsZWQoaXRl
bXNbaV0ubV9pc0VuYWJsZWQpOworI2lmbmRlZiBRVF9OT19UT09MVElQCisgICAgICAgICAgICBt
b2RlbC0+aXRlbShpKS0+c2V0VG9vbFRpcChpdGVtc1tpXS5tX3Rvb2xUaXApOworI2VuZGlmCisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBtX3BvcHVwTWVudS0+c2V0Q3VycmVudEluZGV4KHNlbGVj
dGVkSW5kZXgpOworICAgIG1fdmlld0ludGVyZmFjZS0+c2hvd1BvcHVwTWVudShtX3BvcHVwTWVu
dSk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVudSgpCiB7Cisg
ICAgbV9wb3B1cE1lbnUuY2xlYXIoKTsKIH0KIAordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpz
ZWxlY3RJdGVtKGludCBpbmRleCkKK3sKKyAgICBtX2luZGV4ID0gaW5kZXg7CisgICAgbV90aW1l
ci5zdGFydCgwKTsKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpkb1NldEluZGV4KCkK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQ
b3B1cE1lbnUodGhpcywgbV9pbmRleCk7Cit9CisKKyNpbmNsdWRlICJtb2NfV2ViUG9wdXBNZW51
UHJveHlRdC5jcHAiCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKaW5kZXggZTcxOTdkNS4uZTU5
YzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVu
dVByb3h5UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51
UHJveHlRdC5oCkBAIC0yOCwyMSArMjgsNDIgQEAKIAogI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5LmgiCiAKKyNpbmNsdWRlIDxRdENvcmUvUVNoYXJlZFBvaW50ZXI+CisjaW5jbHVkZSA8UXRD
b3JlL1FUaW1lcj4KKworY2xhc3MgUUNvbWJvQm94OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgV2ViUG9wdXBNZW51UHJveHlRdCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7Citj
bGFzcyBWaWV3SW50ZXJmYWNlOworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGlj
IFFPYmplY3QsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CisgICAgUV9PQkpFQ1QKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0ZShWaWV3SW50
ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBDbGllbnQqIGNsaWVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlRdCgpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eVF0KHZpZXdJbnRlcmZhY2UsIGNsaWVudCkp
OwogICAgIH0KICAgICB+V2ViUG9wdXBNZW51UHJveHlRdCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJl
Y3Rpb24sIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2
b2lkIGRvU2V0SW5kZXgoKTsKKyAgICB2b2lkIHNlbGVjdEl0ZW0oaW50KTsKKworcHJvdGVjdGVk
OgorICAgIGJvb2wgZXZlbnRGaWx0ZXIoUU9iamVjdCosIFFFdmVudCopOworCiBwcml2YXRlOgot
ICAgIFdlYlBvcHVwTWVudVByb3h5UXQoKTsKKyAgICBXZWJQb3B1cE1lbnVQcm94eVF0KFZpZXdJ
bnRlcmZhY2UqLCBDbGllbnQqKTsKKworICAgIGludCBtX2luZGV4OworCisgICAgUVNoYXJlZFBv
aW50ZXI8UUNvbWJvQm94PiBtX3BvcHVwTWVudTsKKyAgICBRVGltZXIgbV90aW1lcjsKKyAgICBW
aWV3SW50ZXJmYWNlKiBjb25zdCBtX3ZpZXdJbnRlcmZhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLS0gCjEuNy40LjEKCg==
</data>
<flag name="commit-queue"
          id="99316"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103664</attachid>
            <date>2011-08-11 13:55:13 -0700</date>
            <delta_ts>2011-08-16 12:20:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>20011</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBlYWZhYjkyZWUxZWU5NzdmYzc0ODc4N2ZjNTkwOGQwN2ZiYmM2N2M4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMTEgQXVnIDIwMTEgMTY6MzU6MTkgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9EZXNrdG9wUG9wdXBNZW51LmNwcCAgIHwgIDExNCArKysrKysrKysrKysrKysr
KysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0Rlc2t0b3BQb3B1cE1lbnUuaCAgICAg
fCAgIDc0ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBh
Z2VQcm94eS5jcHAgICAgIHwgICAxNyArKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlUHJveHkuaCAgICAgICB8ICAgIDcgKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcCAgIHwgICA3MyArKysrKysrKysrKystCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oICB8ICAgMTYgKystCiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcG9wdXBtZW51LmggICAgICAgICB8ICAgNzcg
KysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAzICsKIDEwIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCA5
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9EZXNrdG9wUG9wdXBNZW51LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9EZXNrdG9wUG9wdXBNZW51LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcG9wdXBtZW51LmgKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggYjI0
OGQ0NC4uMTAxYjBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCisjaW5jbHVkZSAiRGVza3RvcFBv
cHVwTWVudS5oIgogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicXdr
Y29udGV4dC5oIgogCkBAIC00Myw2ICs0NCw3IEBAIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OlFE
ZXNrdG9wV2ViVmlld1ByaXZhdGUoUURlc2t0b3BXZWJWaWV3KiBxLCBXS0NvbnRleHRSZWYKICAg
ICAsIGlzQ3Jhc2hlZChmYWxzZSkKICAgICAsIG5hdmlnYXRpb25Db250cm9sbGVyKDApCiB7Cisg
ICAgcGFnZS5zZXRDcmVhdGVOZXdQb3B1cE1lbnVGdW5jdGlvbihuZXcgRGVza3RvcFBvcHVwRmFj
dG9yeSwgcS0+Y2FudmFzKCkpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnNl
dFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmIGludmFsaWRhdGVkQXJlYSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2VlMjcxZS4uNzU2OTE5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIzODUsNyAr
MjM4NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3Qm
IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIGNvCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVu
dVByb3h5PiBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUgPSBtX2FjdGl2ZVBvcHVwTWVudTsKIAog
ICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudS0+c2hvd1BvcHVwTWVudShyZWN0LCBzdGF0aWNf
Y2FzdDxUZXh0RGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgbV92aWV3U2NhbGVGYWN0b3IsIGl0
ZW1zLCBkYXRhLCBzZWxlY3RlZEluZGV4KTsKKyNpZiAhUExBVEZPUk0oUVQpCiAgICAgcHJvdGVj
dGVkQWN0aXZlUG9wdXBNZW51LT5pbnZhbGlkYXRlKCk7CisjZW5kaWYKICAgICBwcm90ZWN0ZWRB
Y3RpdmVQb3B1cE1lbnUgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvRGVza3RvcFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvRGVza3RvcFBvcHVwTWVudS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYWRlZWRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9EZXNrdG9wUG9wdXBNZW51LmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJEZXNrdG9wUG9wdXBNZW51LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09NQk9C
T1gKKworI2luY2x1ZGUgPFFBYnN0cmFjdEl0ZW1WaWV3PgorI2luY2x1ZGUgPFFBcHBsaWNhdGlv
bj4KKyNpbmNsdWRlIDxRSW5wdXRDb250ZXh0PgorI2luY2x1ZGUgPFFNb3VzZUV2ZW50PgorI2lu
Y2x1ZGUgPFFTdGFuZGFyZEl0ZW1Nb2RlbD4KKworRGVza3RvcFBvcHVwQ29tYm86OkRlc2t0b3BQ
b3B1cENvbWJvKERlc2t0b3BQb3B1cE1lbnUqIG93bmVyLCBRUmVjdCByZWN0LCBRV2lkZ2V0KiBw
YXJlbnQpCisgICAgOiBRQ29tYm9Cb3gocGFyZW50KQorICAgICwgbV9vd25lcihvd25lcikKK3sK
KyAgICBzZXRHZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwgcmVjdC53aWR0
aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7CisgICAgdmlldygpLT5pbnN0YWxsRXZlbnRGaWx0
ZXIodGhpcyk7Cit9CisKK3ZvaWQgRGVza3RvcFBvcHVwQ29tYm86OmhpZGVQb3B1cCgpCit7Cisg
ICAgUUNvbWJvQm94OjpoaWRlUG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRleCgtMSk7Cit9
CisKK2Jvb2wgRGVza3RvcFBvcHVwQ29tYm86OmV2ZW50RmlsdGVyKFFPYmplY3QqIHdhdGNoZWQs
IFFFdmVudCogZXZlbnQpCit7CisgICAgUV9BU1NFUlQod2F0Y2hlZCA9PSB2aWV3KCkpOworCisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gUUV2ZW50OjpIaWRlKQorICAgICAgICBtX293bmVyLT5z
ZXRJbmRleCgtMSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0Rlc2t0b3BQb3B1cE1lbnU6
OkRlc2t0b3BQb3B1cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSogZGF0YSwgUVdLUG9wdXBN
ZW51Q2xpZW50KiBjbGllbnQsIFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFFXS1BvcHVwTWVudShk
YXRhLCBjbGllbnQpCisgICAgLCBtX2NvbWJvKDApCisgICAgLCBtX3BhcmVudChwYXJlbnQpCisg
ICAgLCBtX2luZGV4KC0xKQoreworICAgIG1fdGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAg
ICBjb25uZWN0KCZtX3RpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChkb1NldElu
ZGV4KCkpKTsKK30KKworRGVza3RvcFBvcHVwTWVudTo6fkRlc2t0b3BQb3B1cE1lbnUoKQorewor
ICAgIGlmIChtX2NvbWJvKQorICAgICAgICBtX2NvbWJvLT5kZWxldGVMYXRlcigpOworfQorCit2
b2lkIERlc2t0b3BQb3B1cE1lbnU6OnNob3coKQoreworICAgIGlmICghbV9wYXJlbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29tYm8gPSBuZXcgRGVza3RvcFBvcHVwQ29tYm8odGhpcywg
ZGF0YSgpLT5nZW9tZXRyeSgpLCBtX3BhcmVudCk7CisgICAgY29ubmVjdChtX2NvbWJvLCBTSUdO
QUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSkpOworCisg
ICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRhcmRJdGVt
TW9kZWwqPihtX2NvbWJvLT5tb2RlbCgpKTsKKyAgICBRX0FTU0VSVChtb2RlbCk7CisKKyAgICBp
bnQgY3VycmVudEluZGV4ID0gLTE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXRhKCktPml0
ZW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChkYXRhKCktPml0ZW1UeXBlKGkpKSB7
CisgICAgICAgIGNhc2UgUVdLUG9wdXBNZW51RGF0YTo6U2VwYXJhdG9yOgorICAgICAgICAgICAg
bV9jb21iby0+aW5zZXJ0U2VwYXJhdG9yKGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUVdLUG9wdXBNZW51RGF0YTo6SXRlbToKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2Vy
dEl0ZW0oaSwgZGF0YSgpLT5pdGVtVGV4dChpKSk7CisgICAgICAgICAgICBtb2RlbC0+aXRlbShp
KS0+c2V0RW5hYmxlZChkYXRhKCktPml0ZW1Jc0VuYWJsZWQoaSkpOworI2lmbmRlZiBRVF9OT19U
T09MVElQCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpKS0+c2V0VG9vbFRpcChkYXRhKCktPml0
ZW1Ub29sVGlwKGkpKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGRhdGEoKS0+aXRlbUlzU2Vs
ZWN0ZWQoaSkpCisgICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gaTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGN1cnJlbnRJbmRleCA+PSAwKQor
ICAgICAgICBtX2NvbWJvLT5zZXRDdXJyZW50SW5kZXgoY3VycmVudEluZGV4KTsKKworICAgIFFN
b3VzZUV2ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1cnNvcjo6cG9zKCks
IFF0OjpMZWZ0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgIFF0OjpMZWZ0QnV0dG9uLCBR
dDo6Tm9Nb2RpZmllcik7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29tYm8s
ICZldmVudCk7Cit9CisKK3ZvaWQgRGVza3RvcFBvcHVwTWVudTo6c2V0SW5kZXgoaW50IGluZGV4
KQoreworICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX3RpbWVyLnN0YXJ0KDApOworfQorCisj
ZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9EZXNrdG9wUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
RGVza3RvcFBvcHVwTWVudS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRh
YTYzNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvRGVz
a3RvcFBvcHVwTWVudS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRl
ZiBEZXNrdG9wUG9wdXBNZW51X2gKKyNkZWZpbmUgRGVza3RvcFBvcHVwTWVudV9oCisKKyNpbmNs
dWRlICJxd2twb3B1cG1lbnUuaCIKKyNpbmNsdWRlIDxRQ29tYm9Cb3g+CisjaW5jbHVkZSA8UVRp
bWVyPgorCisjaWZuZGVmIFFUX05PX0NPTUJPQk9YCisKK2NsYXNzIERlc2t0b3BQb3B1cENvbWJv
OworCitjbGFzcyBEZXNrdG9wUG9wdXBNZW51IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBRV0tQ
b3B1cE1lbnUgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgRGVza3RvcFBvcHVwTWVudShj
b25zdCBRV0tQb3B1cE1lbnVEYXRhKiwgUVdLUG9wdXBNZW51Q2xpZW50KiwgUVdpZGdldCopOwor
ICAgIH5EZXNrdG9wUG9wdXBNZW51KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOworCitw
cml2YXRlIHNsb3RzOgorICAgIHZvaWQgYWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpIHsgc2V0SW5k
ZXgoaW5kZXgpOyB9CisgICAgdm9pZCBkb1NldEluZGV4KCkgeyBzZWxlY3RJdGVtKG1faW5kZXgp
OyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERlc2t0b3BQb3B1cENvbWJvOworCisg
ICAgRGVza3RvcFBvcHVwQ29tYm8qIG1fY29tYm87CisgICAgUVdpZGdldCogbV9wYXJlbnQ7Cisg
ICAgaW50IG1faW5kZXg7CisgICAgUVRpbWVyIG1fdGltZXI7CisKKyAgICB2b2lkIHNldEluZGV4
KGludCk7Cit9OworCitjbGFzcyBEZXNrdG9wUG9wdXBDb21ibyA6IHB1YmxpYyBRQ29tYm9Cb3gg
eworcHVibGljOgorICAgIERlc2t0b3BQb3B1cENvbWJvKERlc2t0b3BQb3B1cE1lbnUqLCBRUmVj
dCwgUVdpZGdldCopOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXAoKTsKKworcHJpdmF0ZToK
KyAgICBEZXNrdG9wUG9wdXBNZW51KiBtX293bmVyOworICAgIGJvb2wgZXZlbnRGaWx0ZXIoUU9i
amVjdCosIFFFdmVudCopOworfTsKKworY2xhc3MgRGVza3RvcFBvcHVwRmFjdG9yeSA6IHB1Ymxp
YyBRV0tQb3B1cE1lbnVGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBRV0tQb3B1cE1lbnUqIGNyZWF0
ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiBkYXRhLCBRV0tQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCwgdm9pZCogdmlldykKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgRGVza3Rv
cFBvcHVwTWVudShkYXRhLCBjbGllbnQsIHJlaW50ZXJwcmV0X2Nhc3Q8UVdpZGdldCo+KHZpZXcp
KTsKKyAgICB9Cit9OworCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKworI2VuZGlmIC8vIFBv
cHVwTWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAppbmRleCBkMTEzNjMzLi45MGM5MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQCBRdFdlYlBhZ2VQ
cm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSwgUVdLQ29u
dGV4dCogYywgV0tQYQogICAgICwgbV9wcmVmZXJlbmNlcygwKQogICAgICwgbV91bmRvU3RhY2so
YWRvcHRQdHIobmV3IFFVbmRvU3RhY2sodGhpcykpKQogICAgICwgbV9sb2FkUHJvZ3Jlc3MoMCkK
KyAgICAsIG1fcG9wdXBNZW51RmFjdG9yeURhdGEoMCkKIHsKICAgICBBU1NFUlQodmlld0ludGVy
ZmFjZSk7CiAgICAgbWVtc2V0KG1fYWN0aW9ucywgMCwgc2l6ZW9mKG1fYWN0aW9ucykpOwpAQCAt
MzY4LDkgKzM2OSw5IEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OmRvbmVXaXRoS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
UG9wdXBNZW51UHJveHk+IFF0V2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQ
YWdlUHJveHkqKQorUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXRXZWJQYWdlUHJveHk6
OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4g
V2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVBy
b3h5UXQ6OmNyZWF0ZSh0aGlzLCBwYWdlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVu
dVByb3h5PiBRdFdlYlBhZ2VQcm94eTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkqKQpAQCAtNzEwLDQgKzcxMSwxNiBAQCB2b2lkIFF0V2ViUGFnZVByb3h5OjpzZXRQYWdlSXNW
aXNpYmxlKGJvb2wgaXNWaXNpYmxlKQogICAgIG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
LT5zZXRQYWdlSXNWaXNpYmxlKGlzVmlzaWJsZSk7CiB9CiAKK3ZvaWQgUXRXZWJQYWdlUHJveHk6
OnNldENyZWF0ZU5ld1BvcHVwTWVudUZ1bmN0aW9uKFFXS1BvcHVwTWVudUZhY3RvcnkqIGZhY3Rv
cnksIHZvaWQqIGRhdGEpCit7CisgICAgbV9wb3B1cE1lbnVGYWN0b3J5ID0gYWRvcHRQdHIoZmFj
dG9yeSk7CisgICAgbV9wb3B1cE1lbnVGYWN0b3J5RGF0YSA9IGRhdGE7Cit9CisKK1FXS1BvcHVw
TWVudSogUXRXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVE
YXRhKiBkYXRhLCBRV0tQb3B1cE1lbnVDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbV9w
b3B1cE1lbnVGYWN0b3J5ID8gbV9wb3B1cE1lbnVGYWN0b3J5LT5jcmVhdGVQb3B1cE1lbnUoZGF0
YSwgY2xpZW50LCBtX3BvcHVwTWVudUZhY3RvcnlEYXRhKSA6IDA7Cit9CisKKwogI2luY2x1ZGUg
Im1vY19RdFdlYlBhZ2VQcm94eS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5oCmluZGV4IDA3ZWQ4YTkuLjE5MjMzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNs
dWRlICJxd2Via2l0dHlwZXMuaCIKKyNpbmNsdWRlICJxd2twb3B1cG1lbnUuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIlZpZXdJbnRlcmZhY2UuaCIKQEAgLTE3Myw2ICsxNzQsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFBhZ2VJc1Zpc2libGUoYm9vbCk7CiAKKyAgICB2b2lkIHNldENyZWF0ZU5ld1Bv
cHVwTWVudUZ1bmN0aW9uKFFXS1BvcHVwTWVudUZhY3RvcnkqLCB2b2lkKiBkYXRhKTsKKyAgICBR
V0tQb3B1cE1lbnUqIGNyZWF0ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiwgUVdL
UG9wdXBNZW51Q2xpZW50Kik7CisKIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgd2ViQWN0aW9u
VHJpZ2dlcmVkKGJvb2wgY2hlY2tlZCk7CiAKQEAgLTIwMSw2ICsyMDUsOSBAQCBwcml2YXRlOgog
CiAgICAgT3duUHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwogICAgIGludCBtX2xvYWRQcm9n
cmVzczsKKworICAgIE93blB0cjxRV0tQb3B1cE1lbnVGYWN0b3J5PiBtX3BvcHVwTWVudUZhY3Rv
cnk7CisgICAgdm9pZCogbV9wb3B1cE1lbnVGYWN0b3J5RGF0YTsKIH07CiAKICNlbmRpZiAvKiBR
dFdlYlBhZ2VQcm94eV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMWU5N2Q3NC4uNjkyODBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcApA
QCAtMjcsMjcgKzI3LDk0IEBACiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgogCiAj
aW5jbHVkZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cEl0ZW0uaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKK2NsYXNzIFBvcHVwTWVudURhdGEgOiBwdWJsaWMgUVdLUG9wdXBNZW51RGF0YSB7Citw
dWJsaWM6CisgICAgUG9wdXBNZW51RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8
V2ViS2l0OjpXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50IHNlbGVjdGVkSW5kZXgpCisgICAgICAg
IDogbV9yZWN0KHJlY3QpCisgICAgICAgICwgbV9pdGVtcyhpdGVtcykKKyAgICAgICAgLCBtX3Nj
YWxlRmFjdG9yKHNjYWxlRmFjdG9yKQorICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikK
KyAgICAgICAgLCBtX3NlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRleCkKKyAgICB7IH0KKworICAg
IHZpcnR1YWwgSXRlbVR5cGUgaXRlbVR5cGUoaW50IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKCFpc1ZhbGlkSW5kZXgoaW5kZXgpIHx8IG1faXRlbXNbaW5kZXhdLm1fdHlwZSA9PSBX
ZWJLaXQ6OldlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuIFNlcGFy
YXRvcjsKKyAgICAgICAgcmV0dXJuIEl0ZW07CisgICAgfQorCisgICAgdmlydHVhbCBUZXh0RGly
ZWN0aW9uIGl0ZW1UZXh0RGlyZWN0aW9uKGludCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaXNWYWxpZEluZGV4KGluZGV4KSB8fCBtX2l0ZW1zW2luZGV4XS5tX3RleHREaXJlY3Rp
b24gPT0gV2ViQ29yZTo6UlRMKQorICAgICAgICAgICAgcmV0dXJuIFJUTDsKKyAgICAgICAgcmV0
dXJuIExUUjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbVRleHQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBpc1ZhbGlkSW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0ubV90
ZXh0IDogU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFFTdHJpbmcgaXRlbUFjY2Vzc2liaWxpdHlU
ZXh0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZEluZGV4KGluZGV4KSA/IG1faXRl
bXNbaW5kZXhdLm1fYWNjZXNzaWJpbGl0eVRleHQgOiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwg
UVN0cmluZyBpdGVtVG9vbFRpcChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRJbmRl
eChpbmRleCkgPyBtX2l0ZW1zW2luZGV4XS5tX3Rvb2xUaXAgOiBTdHJpbmcoKTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpdGVtSXNFbmFibGVkKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxp
ZEluZGV4KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1faXNFbmFibGVkIDogZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXRlbUlzTGFiZWwoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpc1Zh
bGlkSW5kZXgoaW5kZXgpID8gbV9pdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQgOiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNTZWxlY3RlZChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGluZGV4ID09IG1fc2VsZWN0ZWRJbmRleDsgfQorICAgIHZpcnR1YWwgYm9vbCBpdGVtSGFzVGV4
dERpcmVjdGlvbk92ZXJyaWRlKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZEluZGV4
KGluZGV4KSA/IG1faXRlbXNbaW5kZXhdLm1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlIDogZmFs
c2U7IH0KKworICAgIHZpcnR1YWwgaW50IGl0ZW1Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faXRl
bXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQorICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9zY2FsZUZhY3RvcjsgfQorICAgIHZpcnR1YWwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gV2ViQ29yZTo6UlRMID8gUlRMIDog
TFRSOyB9CisKKworcHJpdmF0ZToKKyAgICBRUmVjdCBtX3JlY3Q7CisgICAgVmVjdG9yPFdlYktp
dDo6V2ViUG9wdXBJdGVtPiBtX2l0ZW1zOworICAgIGRvdWJsZSBtX3NjYWxlRmFjdG9yOworICAg
IFdlYkNvcmU6OlRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgaW50IG1fc2VsZWN0ZWRJ
bmRleDsKKworICAgIGJvb2wgaXNWYWxpZEluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4g
aW5kZXggPj0gMCAmJiBpbmRleCA8IG1faXRlbXMuc2l6ZSgpOyB9Cit9OworCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBNZW51UHJveHlRdCgpCi0g
ICAgOiBXZWJQb3B1cE1lbnVQcm94eSgwKQorV2ViUG9wdXBNZW51UHJveHlRdDo6V2ViUG9wdXBN
ZW51UHJveHlRdChRdFdlYlBhZ2VQcm94eSogcGFnZSwgQ2xpZW50KiBjbGllbnQpCisgICAgOiBX
ZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX3BhZ2UocGFnZSkKIHsKKyAgICBBU1NF
UlQobV9wYWdlKTsKIH0KIAogV2ViUG9wdXBNZW51UHJveHlRdDo6fldlYlBvcHVwTWVudVByb3h5
UXQoKQogewogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUoY29u
c3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlLCBjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1Bv
cHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRl
bXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkK
IHsKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BvcHVwTWVu
dSA9IGFkb3B0UHRyKG1fcGFnZS0+Y3JlYXRlUG9wdXBNZW51KG5ldyBQb3B1cE1lbnVEYXRhKHJl
Y3QsIGRpcmVjdGlvbiwgc2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZEluZGV4KSwgdGhpcykp
OworCisgICAgaWYgKCFtX3BvcHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wb3B1
cE1lbnUtPnNob3coKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpoaWRlUG9wdXBN
ZW51KCkKIHsKKyAgICBtX3BvcHVwTWVudS5jbGVhcigpOworfQorCit2b2lkIFdlYlBvcHVwTWVu
dVByb3h5UXQ6OnNlbGVjdEl0ZW0oaW50IGluZGV4KQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBpbmRleCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKaW5kZXggZTcxOTdkNS4uOWNlYTVjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCkBA
IC0yNiwxNSArMjYsMTggQEAKICNpZm5kZWYgV2ViUG9wdXBNZW51UHJveHlRdF9oCiAjZGVmaW5l
IFdlYlBvcHVwTWVudVByb3h5UXRfaAogCisjaW5jbHVkZSAicXdrcG9wdXBtZW51LmgiCiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKIAorY2xhc3MgUXRXZWJQYWdlUHJveHk7CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGljIFdl
YlBvcHVwTWVudVByb3h5IHsKK2NsYXNzIFdlYlBvcHVwTWVudVByb3h5UXQgOiBwdWJsaWMgV2Vi
UG9wdXBNZW51UHJveHksIHByaXZhdGUgUVdLUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0ZShRdFdlYlBhZ2VQcm94
eSogcGFnZSwgQ2xpZW50KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlBvcHVwTWVudVByb3h5UXQoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViUG9wdXBNZW51UHJveHlRdChwYWdlLCBjbGllbnQpKTsKICAgICB9CiAgICAgfldlYlBvcHVw
TWVudVByb3h5UXQoKTsKIApAQCAtNDIsNyArNDUsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51UHJveHlR
dCgpOworICAgIFdlYlBvcHVwTWVudVByb3h5UXQoUXRXZWJQYWdlUHJveHkqLCBDbGllbnQqKTsK
KworICAgIHZvaWQgc2VsZWN0SXRlbShpbnQpOworCisgICAgUXRXZWJQYWdlUHJveHkqIG1fcGFn
ZTsKKyAgICBPd25QdHI8UVdLUG9wdXBNZW51PiBtX3BvcHVwTWVudTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3
a3BvcHVwbWVudS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a3BvcHVwbWVudS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ODdlZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcG9wdXBtZW51LmgKQEAgLTAs
MCArMSw3NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbmUKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIHF3a3BvcHVwbWVudV9oCisj
ZGVmaW5lIHF3a3BvcHVwbWVudV9oCisKKyNpbmNsdWRlIDxRUmVjdD4KKyNpbmNsdWRlIDxRU2Nv
cGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRU3RyaW5nPgorCitjbGFzcyBRV0tQb3B1cE1lbnVEYXRh
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RV0tQb3B1cE1lbnVEYXRhKCkgeyB9CisKKyAgICBl
bnVtIEl0ZW1UeXBlIHsgU2VwYXJhdG9yLCBJdGVtIH07CisgICAgZW51bSBUZXh0RGlyZWN0aW9u
IHsgUlRMLCBMVFIgfTsKKworICAgIHZpcnR1YWwgSXRlbVR5cGUgaXRlbVR5cGUoaW50KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBUZXh0RGlyZWN0aW9uIGl0ZW1UZXh0RGlyZWN0aW9uKGludCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1UZXh0KGludCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgUVN0cmluZyBpdGVtQWNjZXNzaWJpbGl0eVRleHQoaW50KSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBRU3RyaW5nIGl0ZW1Ub29sVGlwKGludCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpdGVtSXNFbmFibGVkKGludCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpdGVtSXNMYWJlbChpbnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlz
U2VsZWN0ZWQoaW50KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGl0ZW1IYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUoaW50KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBpdGVtQ291
bnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFFSZWN0IGdlb21ldHJ5KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIHNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOworfTsKKworY2xhc3Mg
UVdLUG9wdXBNZW51Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0SXRl
bShpbnQpID0gMDsKK307CisKK2NsYXNzIFFXS1BvcHVwTWVudSB7CitwdWJsaWM6CitRV0tQb3B1
cE1lbnUoY29uc3QgUVdLUG9wdXBNZW51RGF0YSogZGF0YSwgUVdLUG9wdXBNZW51Q2xpZW50KiBj
bGllbnQpICA6IG1fZGF0YShkYXRhKSwgbV9jbGllbnQoY2xpZW50KSB7IH0KKyAgICB2aXJ0dWFs
IH5RV0tQb3B1cE1lbnUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvdygpID0gMDsKKworICAg
IGNvbnN0IFFXS1BvcHVwTWVudURhdGEqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZGF0
YSgpOyB9CisgICAgdm9pZCBzZWxlY3RJdGVtKGludCBpbmRleCkgeyBtX2NsaWVudC0+c2VsZWN0
SXRlbShpbmRleCk7IH0KKworcHJpdmF0ZToKKyAgICBRU2NvcGVkUG9pbnRlcjxjb25zdCBRV0tQ
b3B1cE1lbnVEYXRhPiBtX2RhdGE7CisgICAgUVdLUG9wdXBNZW51Q2xpZW50KiBtX2NsaWVudDsK
KworfTsKKworY2xhc3MgUVdLUG9wdXBNZW51RmFjdG9yeSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCBRV0tQb3B1cE1lbnUqIGNyZWF0ZVBvcHVwTWVudShjb25zdCBRV0tQb3B1cE1lbnVEYXRhKiwg
UVdLUG9wdXBNZW51Q2xpZW50Kiwgdm9pZCopID0gMDsKK307CisKKyNlbmRpZiAvLyBxd2twb3B1
cG1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA0NGViYjY5Li5iM2M1ZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
bwpAQCAtMjM2LDYgKzIzNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAogICAgIFVJ
UHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggXAorICAgIFVJUHJvY2Vzcy9xdC9EZXNrdG9wUG9wdXBN
ZW51LmggXAogICAgIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFu
R2VzdHVyZVJlY29nbml6ZXIuaCBcCkBAIC0yNDcsNiArMjQ4LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL3F0L3F3a2NvbnRleHRfcC5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlz
dG9yeS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmggXAorICAgIFVJUHJvY2Vz
cy9xdC9xd2twb3B1cG1lbnUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmgg
XAogICAgIFVJUHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlc19wLmggXAogICAgIFVJUHJvY2Vzcy9x
dC9TR0FnZW50LmggXApAQCAtNDY4LDYgKzQ3MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGll
bnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgXAorICAgIFVJUHJvY2Vz
cy9xdC9EZXNrdG9wUG9wdXBNZW51LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RvdWNoVmlld0lu
dGVyZmFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKLS0gCjEuNy40
LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104076</attachid>
            <date>2011-08-16 12:20:49 -0700</date>
            <delta_ts>2011-08-17 07:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>12442</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA5NGZkYzcyZjdmZTQyNjM3MTM3NjM3Yzg1NmRjYmQwYzQ0NjZmZDg5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFR1ZSwgMTYgQXVnIDIwMTEgMTM6NTk6NTUgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzEgKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAgMiArCiAuLi4vVUlQcm9jZXNz
L3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcCAgICB8ICAxMzUgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaCAg
ICAgIHwgICA2OCArKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3
ZWJwYWdlcHJveHkuY3BwICB8ICAgMTEgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cWRlc2t0b3B3ZWJwYWdlcHJveHkuaCB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMjUw
IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQ
b3B1cE1lbnVQcm94eS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI4MzNhYjQuLjljYTAwMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wOC0xNiAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xp
dmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9w
dXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzaW1wbGUgUXRXZWJLaXQgV2ViS2l0MiBwb3B1
cCBtZW51IGluIERlc2t0b3BXZWJWaWV3LgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IEx1
aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9wdXBDb21ib0JveDo6UG9wdXBDb21ib0JveCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBvcHVwQ29tYm9Cb3g6OmhpZGVQb3B1cCk6CisgICAgICAgIChXZWJL
aXQ6OlBvcHVwQ29tYm9Cb3g6OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6UUNvbWJv
Qm94V2ViUG9wdXBNZW51OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6On5RQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmhpZGVQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNldEluZGV4KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjphY3RpdmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UUNvbWJvQm94V2ViUG9wdXBNZW51Ojpkb1NldEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJQYWdl
UHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKwogMjAxMS0wOC0w
NCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1dHVyZS1wcm9vZiBY
Y29kZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAwYzhhNjU0Li4xZjNhNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjM4NSw3ICsyMzg1LDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgdWludDY0X3QgdGV4
dERpcmVjdGlvbiwgY28KICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFj
dGl2ZVBvcHVwTWVudSA9IG1fYWN0aXZlUG9wdXBNZW51OwogCiAgICAgcHJvdGVjdGVkQWN0aXZl
UG9wdXBNZW51LT5zaG93UG9wdXBNZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+
KHRleHREaXJlY3Rpb24pLCBtX3ZpZXdTY2FsZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVk
SW5kZXgpOworI2lmICFQTEFURk9STShRVCkKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUt
PmludmFsaWRhdGUoKTsKKyNlbmRpZgogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hX
ZWJQb3B1cE1lbnVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJv
Qm94V2ViUG9wdXBNZW51UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUxNTEwZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlFDb21ib0JveFdl
YlBvcHVwTWVudVByb3h5LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09NQk9CT1gKKworI2luY2x1ZGUg
IlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgorCisj
aW5jbHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2lu
Y2x1ZGUgPFFJbnB1dENvbnRleHQ+CisjaW5jbHVkZSA8UU1vdXNlRXZlbnQ+CisjaW5jbHVkZSA8
UVN0YW5kYXJkSXRlbU1vZGVsPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVwQ29tYm9Cb3ggOiBwdWJsaWMgUUNvbWJvQm94IHsK
K3B1YmxpYzoKKyAgICBQb3B1cENvbWJvQm94KFFDb21ib0JveFdlYlBvcHVwTWVudSosIFFSZWN0
LCBRV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgpOworCitwcml2YXRlOgor
ICAgIFFDb21ib0JveFdlYlBvcHVwTWVudSogbV9vd25lcjsKKyAgICBib29sIGV2ZW50RmlsdGVy
KFFPYmplY3QqLCBRRXZlbnQqKTsKK307CisKK1BvcHVwQ29tYm9Cb3g6OlBvcHVwQ29tYm9Cb3go
UUNvbWJvQm94V2ViUG9wdXBNZW51KiBvd25lciwgUVJlY3QgcmVjdCwgUVdpZGdldCogcGFyZW50
KQorICAgIDogUUNvbWJvQm94KHBhcmVudCkKKyAgICAsIG1fb3duZXIob3duZXIpCit7CisgICAg
c2V0R2VvbWV0cnkoUVJlY3QocmVjdC5sZWZ0KCksIHJlY3QudG9wKCksIHJlY3Qud2lkdGgoKSwg
c2l6ZUhpbnQoKS5oZWlnaHQoKSkpOworICAgIHZpZXcoKS0+aW5zdGFsbEV2ZW50RmlsdGVyKHRo
aXMpOworfQorCit2b2lkIFBvcHVwQ29tYm9Cb3g6OmhpZGVQb3B1cCgpCit7CisgICAgUUNvbWJv
Qm94OjpoaWRlUG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRleCgtMSk7Cit9CisKK2Jvb2wg
UG9wdXBDb21ib0JveDo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0Y2hlZCwgUUV2ZW50KiBldmVu
dCkKK3sKKyAgICBRX0FTU0VSVCh3YXRjaGVkID09IHZpZXcoKSk7CisKKyAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUpCisgICAgICAgIG1fb3duZXItPnNldEluZGV4KC0xKTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworUUNvbWJvQm94V2ViUG9wdXBNZW51OjpRQ29tYm9C
b3hXZWJQb3B1cE1lbnUoQ2xpZW50KiBjbGllbnQsIFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFdl
YlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fY29tYm8oMCkKKyAgICAsIG1fcGFyZW50
KHBhcmVudCkKKyAgICAsIG1faW5kZXgoLTEpCit7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90
KHRydWUpOworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBT
TE9UKGRvU2V0SW5kZXgoKSkpOworfQorCitRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6On5RQ29tYm9C
b3hXZWJQb3B1cE1lbnUoKQoreworICAgIGlmIChtX2NvbWJvKQorICAgICAgICBtX2NvbWJvLT5k
ZWxldGVMYXRlcigpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2hvd1BvcHVw
TWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCkKK3sKKyAgICBpZiAoIW1fcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bWJvID0gbmV3IFBvcHVwQ29tYm9Cb3godGhpcywgcmVjdCwgbV9wYXJlbnQpOworICAgIGNvbm5l
Y3QobV9jb21ibywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChhY3RpdmVDaGFu
Z2VkKGludCkpKTsKKworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0X2Nh
c3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4obV9jb21iby0+bW9kZWwoKSk7CisgICAgUV9BU1NFUlQo
bW9kZWwpOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoaXRlbXNbaW5kZXhdLm1fdHlwZSA9PSBXZWJLaXQ6Oldl
YlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0U2VwYXJh
dG9yKGluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJ
dGVtKGluZGV4LCBpdGVtc1tpbmRleF0ubV90ZXh0KTsKKyAgICAgICAgICAgIG1vZGVsLT5pdGVt
KGluZGV4KS0+c2V0RW5hYmxlZChpdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQpOworI2lmbmRlZiBR
VF9OT19UT09MVElQCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpbmRleCktPnNldFRvb2xUaXAo
aXRlbXNbaW5kZXhdLm1fdG9vbFRpcCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsKKworICAgIFFNb3VzZUV2
ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1cnNvcjo6cG9zKCksIFF0OjpM
ZWZ0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9N
b2RpZmllcik7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29tYm8sICZldmVu
dCk7Cit9CisKK3ZvaWQgUUNvbWJvQm94V2ViUG9wdXBNZW51OjpoaWRlUG9wdXBNZW51KCkKK3sK
KyAgICBtX2NvbWJvLT5kZWxldGVMYXRlcigpOworICAgIG1fY29tYm8gPSAwOworfQorCit2b2lk
IFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2V0SW5kZXgoaW50IGluZGV4KQoreworICAgIG1faW5k
ZXggPSBpbmRleDsKKyAgICBtX3RpbWVyLnN0YXJ0KDApOworfQorCit9CisKKyNpbmNsdWRlICJt
b2NfUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIgorCisjZW5kaWYgLy8gUVRfTk9fQ09N
Qk9CT1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hX
ZWJQb3B1cE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0Jv
eFdlYlBvcHVwTWVudVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZmQ3OTc5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
Q29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworI2lmbmRlZiBRQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eV9oCisjZGVmaW5lIFFDb21i
b0JveFdlYlBvcHVwTWVudVByb3h5X2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5Lmgi
CisjaW5jbHVkZSA8UGFzc093blB0ci5oPgorCisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Cisj
aW5jbHVkZSA8UXRDb3JlL1FUaW1lcj4KKyNpbmNsdWRlIDxRdEd1aS9RQ29tYm9Cb3g+CisKKyNp
Zm5kZWYgUVRfTk9fQ09NQk9CT1gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVw
Q29tYm9Cb3g7CisKK2NsYXNzIFFDb21ib0JveFdlYlBvcHVwTWVudSA6IHB1YmxpYyBRT2JqZWN0
LCBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UUNvbWJvQm94V2ViUG9wdXBNZW51PiBjcmVhdGUoQ2xpZW50KiBj
bGllbnQsIFFXaWRnZXQqIHdpZGdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUUNvbWJvQm94V2ViUG9wdXBNZW51KGNsaWVudCwgd2lkZ2V0KSk7CisgICAgfQorICAgIH5R
Q29tYm9Cb3hXZWJQb3B1cE1lbnUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUg
c2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQg
aGlkZVBvcHVwTWVudSgpOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgYWN0aXZlQ2hhbmdl
ZChpbnQgaW5kZXgpIHsgc2V0SW5kZXgoaW5kZXgpOyB9CisgICAgdm9pZCBkb1NldEluZGV4KCkg
eyBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG1faW5kZXgpOyB9CisK
K3ByaXZhdGU6CisgICAgUUNvbWJvQm94V2ViUG9wdXBNZW51KENsaWVudCosIFFXaWRnZXQqKTsK
KyAgICBmcmllbmQgY2xhc3MgUG9wdXBDb21ib0JveDsKKworICAgIFBvcHVwQ29tYm9Cb3gqIG1f
Y29tYm87CisgICAgUVdpZGdldCogbV9wYXJlbnQ7CisgICAgaW50IG1faW5kZXg7CisgICAgUVRp
bWVyIG1fdGltZXI7CisKKyAgICB2b2lkIHNldEluZGV4KGludCk7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCisKKyNlbmRpZiAvLyBQb3B1
cE1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9w
d2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdl
YnBhZ2Vwcm94eS5jcHAKaW5kZXggYjk0ZDk1ZS4uOWY5ZTI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCkBAIC0xOCwx
NSArMTgsMTggQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAj
aW5jbHVkZSAicWRlc2t0b3B3ZWJwYWdlcHJveHkuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZp
ZXcuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1
ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJRQ29tYm9Cb3hXZWJQb3B1cE1l
bnVQcm94eS5oIgogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRXZlbnQ+CiAj
aW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVEcmFnRHJvcEV2ZW50PgogI2luY2x1ZGUgPFFHcmFwaGlj
c1dpZGdldD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZhcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCkBAIC0y
MzAsMyArMjMzLDkgQEAgdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6ZGlkRmluZFpvb21hYmxl
QXJlYShjb25zdCBJbnRSZWN0JikKIHsKICAgICAvLyBUaGlzIGZlYXR1cmUgaXMgb25seSB1c2Vk
IGJ5IFFUb3VjaFdlYlZpZXcuCiB9CisKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQ
cm94eT4gUURlc2t0b3BXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYktpdDo6
V2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIFFXaWRnZXQqIHdpZGdldCA9IHN0YXRpY19jYXN0
PFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqPihtX3ZpZXdJbnRlcmZhY2UpLT5xLT5jYW52YXMoKTsg
CisgICAgcmV0dXJuIFFDb21ib0JveFdlYlBvcHVwTWVudTo6Y3JlYXRlKHBhZ2UsIHdpZGdldCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vw
cm94eS5oCmluZGV4IGZkYTRjMDQuLjg2ZWI1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oCkBAIC01MCw2ICs1MCw4IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCopOwogCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CisKICAgICBib29sIGhhbmRsZU1v
dXNlTW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwogICAgIGJvb2wgaGFuZGxl
TW91c2VQcmVzc0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwogICAgIGJvb2wgaGFu
ZGxlTW91c2VSZWxlYXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJvCmluZGV4IDQ0ZWJiNjkuLjA0YjVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0yMzYsNiArMjM2
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5o
IFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L0NsaWVu
dEltcGwuaCBcCisgICAgVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5Lmgg
XAogICAgIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVy
ZVJlY29nbml6ZXIuaCBcCkBAIC00NjgsNiArNDY5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNs
aWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBcCisgICAgVUlQcm9j
ZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNv
Z25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3Bw
IFwKLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104171</attachid>
            <date>2011-08-17 07:08:44 -0700</date>
            <delta_ts>2011-08-19 13:20:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>12473</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBkMmM4MjM5YTRhMGZmMDU0MDIwNDI4YzRmMjgxMzFjN2I2Y2I4MDI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMTcgQXVnIDIwMTEgMDk6NTk6MTMgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzEgKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwICAgICAgICAgIHwgICAgMiArCiAuLi4vVUlQcm9jZXNz
L3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcCAgICB8ICAxMzUgKysrKysrKysrKysr
KysrKysrKysKIC4uLi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaCAg
ICAgIHwgICA2OCArKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3
ZWJwYWdlcHJveHkuY3BwICB8ICAgMTIgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
cWRlc2t0b3B3ZWJwYWdlcHJveHkuaCB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cm8gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMjUx
IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQ
b3B1cE1lbnVQcm94eS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYyZGRiN2UuLmM1YzM3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wOC0xNyAgSWdvciBPbGl2ZWlyYSAgPGlnb3Iub2xp
dmVpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9w
dXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBvcHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxOTEKKworICAg
ICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBzaW1wbGUgUXRXZWJLaXQgV2ViS2l0MiBwb3B1
cCBtZW51IGluIERlc2t0b3BXZWJWaWV3LgorCisgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IEx1
aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UG9wdXBDb21ib0JveDo6UG9wdXBDb21ib0JveCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBvcHVwQ29tYm9Cb3g6OmhpZGVQb3B1cCk6CisgICAgICAgIChXZWJL
aXQ6OlBvcHVwQ29tYm9Cb3g6OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6UUNvbWJv
Qm94V2ViUG9wdXBNZW51OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0
OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6On5RQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmhpZGVQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNldEluZGV4KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjphY3RpdmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UUNvbWJvQm94V2ViUG9wdXBNZW51Ojpkb1NldEluZGV4KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAoUURlc2t0b3BXZWJQYWdl
UHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKwogMjAxMS0wOC0x
NSAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGcmFtZUxv
YWRlckNsaWVudDo6dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZSBkb2VzIG5vdCBoYXZl
IGVub3VnaCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGUyOTYzNWUuLjllNzBmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0yMzk2LDcgKzIzOTYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9u
LCBjbwogICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gcHJvdGVjdGVkQWN0aXZlUG9wdXBN
ZW51ID0gbV9hY3RpdmVQb3B1cE1lbnU7CiAKICAgICBwcm90ZWN0ZWRBY3RpdmVQb3B1cE1lbnUt
PnNob3dQb3B1cE1lbnUocmVjdCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4odGV4dERpcmVj
dGlvbiksIG1fcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywgZGF0YSwgc2VsZWN0ZWRJbmRleCk7Cisj
aWYgIVBMQVRGT1JNKFFUKQogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudS0+aW52YWxpZGF0
ZSgpOworI2VuZGlmCiAgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51ID0gMDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVu
dVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1
cE1lbnVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1MTBk
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9C
b3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUUNvbWJvQm94V2ViUG9wdXBNZW51
UHJveHkuaCIKKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAorCisjaW5jbHVkZSAiUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKKyNpbmNsdWRlIDxR
QWJzdHJhY3RJdGVtVmlldz4KKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUlu
cHV0Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91c2VFdmVudD4KKyNpbmNsdWRlIDxRU3RhbmRhcmRJ
dGVtTW9kZWw+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUG9wdXBDb21ib0JveCA6IHB1YmxpYyBRQ29tYm9Cb3ggeworcHVibGljOgor
ICAgIFBvcHVwQ29tYm9Cb3goUUNvbWJvQm94V2ViUG9wdXBNZW51KiwgUVJlY3QsIFFXaWRnZXQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwKCk7CisKK3ByaXZhdGU6CisgICAgUUNvbWJv
Qm94V2ViUG9wdXBNZW51KiBtX293bmVyOworICAgIGJvb2wgZXZlbnRGaWx0ZXIoUU9iamVjdCos
IFFFdmVudCopOworfTsKKworUG9wdXBDb21ib0JveDo6UG9wdXBDb21ib0JveChRQ29tYm9Cb3hX
ZWJQb3B1cE1lbnUqIG93bmVyLCBRUmVjdCByZWN0LCBRV2lkZ2V0KiBwYXJlbnQpCisgICAgOiBR
Q29tYm9Cb3gocGFyZW50KQorICAgICwgbV9vd25lcihvd25lcikKK3sKKyAgICBzZXRHZW9tZXRy
eShRUmVjdChyZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwgcmVjdC53aWR0aCgpLCBzaXplSGludCgp
LmhlaWdodCgpKSk7CisgICAgdmlldygpLT5pbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7Cit9CisK
K3ZvaWQgUG9wdXBDb21ib0JveDo6aGlkZVBvcHVwKCkKK3sKKyAgICBRQ29tYm9Cb3g6OmhpZGVQ
b3B1cCgpOworICAgIG1fb3duZXItPnNldEluZGV4KC0xKTsKK30KKworYm9vbCBQb3B1cENvbWJv
Qm94OjpldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZlbnQqIGV2ZW50KQoreworICAg
IFFfQVNTRVJUKHdhdGNoZWQgPT0gdmlldygpKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09
IFFFdmVudDo6SGlkZSkKKyAgICAgICAgbV9vd25lci0+c2V0SW5kZXgoLTEpOworCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OlFDb21ib0JveFdlYlBvcHVw
TWVudShDbGllbnQqIGNsaWVudCwgUVdpZGdldCogcGFyZW50KQorICAgIDogV2ViUG9wdXBNZW51
UHJveHkoY2xpZW50KQorICAgICwgbV9jb21ibygwKQorICAgICwgbV9wYXJlbnQocGFyZW50KQor
ICAgICwgbV9pbmRleCgtMSkKK3sKKyAgICBtX3RpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7Cisg
ICAgY29ubmVjdCgmbV90aW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1QoZG9TZXRJ
bmRleCgpKSk7Cit9CisKK1FDb21ib0JveFdlYlBvcHVwTWVudTo6flFDb21ib0JveFdlYlBvcHVw
TWVudSgpCit7CisgICAgaWYgKG1fY29tYm8pCisgICAgICAgIG1fY29tYm8tPmRlbGV0ZUxhdGVy
KCk7Cit9CisKK3ZvaWQgUUNvbWJvQm94V2ViUG9wdXBNZW51OjpzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywg
Y29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQorewor
ICAgIGlmICghbV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tYm8gPSBuZXcg
UG9wdXBDb21ib0JveCh0aGlzLCByZWN0LCBtX3BhcmVudCk7CisgICAgY29ubmVjdChtX2NvbWJv
LCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSkp
OworCisgICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRh
cmRJdGVtTW9kZWwqPihtX2NvbWJvLT5tb2RlbCgpKTsKKyAgICBRX0FTU0VSVChtb2RlbCk7CisK
KyAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMuc2l6ZSgpOyArK2luZGV4KSB7
CisgICAgICAgIGlmIChpdGVtc1tpbmRleF0ubV90eXBlID09IFdlYktpdDo6V2ViUG9wdXBJdGVt
OjpTZXBhcmF0b3IpCisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0b3IoaW5kZXgp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaW5kZXgs
IGl0ZW1zW2luZGV4XS5tX3RleHQpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaW5kZXgpLT5z
ZXRFbmFibGVkKGl0ZW1zW2luZGV4XS5tX2lzRW5hYmxlZCk7CisjaWZuZGVmIFFUX05PX1RPT0xU
SVAKKyAgICAgICAgICAgIG1vZGVsLT5pdGVtKGluZGV4KS0+c2V0VG9vbFRpcChpdGVtc1tpbmRl
eF0ubV90b29sVGlwKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgbV9jb21iby0+
c2V0Q3VycmVudEluZGV4KHNlbGVjdGVkSW5kZXgpOworCisgICAgUU1vdXNlRXZlbnQgZXZlbnQo
UUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwgUXQ6OkxlZnRCdXR0b24s
CisgICAgICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsK
KyAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9jb21ibywgJmV2ZW50KTsKK30KKwor
dm9pZCBRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIG1fY29t
Ym8tPmRlbGV0ZUxhdGVyKCk7CisgICAgbV9jb21ibyA9IDA7Cit9CisKK3ZvaWQgUUNvbWJvQm94
V2ViUG9wdXBNZW51OjpzZXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgbV9pbmRleCA9IGluZGV4
OworICAgIG1fdGltZXIuc3RhcnQoMCk7Cit9CisKK30KKworI2luY2x1ZGUgIm1vY19RQ29tYm9C
b3hXZWJQb3B1cE1lbnVQcm94eS5jcHAiCisKKyNlbmRpZiAvLyBRVF9OT19DT01CT0JPWApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVu
dVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDc5NzkwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdl
YlBvcHVwTWVudVByb3h5LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaWZu
ZGVmIFFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5X2gKKyNkZWZpbmUgUUNvbWJvQm94V2ViUG9w
dXBNZW51UHJveHlfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKKyNpbmNsdWRl
IDxQYXNzT3duUHRyLmg+CisKKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDxR
dENvcmUvUVRpbWVyPgorI2luY2x1ZGUgPFF0R3VpL1FDb21ib0JveD4KKworI2lmbmRlZiBRVF9O
T19DT01CT0JPWAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUG9wdXBDb21ib0JveDsK
KworY2xhc3MgUUNvbWJvQm94V2ViUG9wdXBNZW51IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBX
ZWJQb3B1cE1lbnVQcm94eSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxRQ29tYm9Cb3hXZWJQb3B1cE1lbnU+IGNyZWF0ZShDbGllbnQqIGNsaWVudCwgUVdp
ZGdldCogd2lkZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRQ29tYm9C
b3hXZWJQb3B1cE1lbnUoY2xpZW50LCB3aWRnZXQpKTsKKyAgICB9CisgICAgflFDb21ib0JveFdl
YlBvcHVwTWVudSgpOworCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBzY2FsZUZhY3Rv
ciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBN
ZW51KCk7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBhY3RpdmVDaGFuZ2VkKGludCBpbmRl
eCkgeyBzZXRJbmRleChpbmRleCk7IH0KKyAgICB2b2lkIGRvU2V0SW5kZXgoKSB7IG1fY2xpZW50
LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbV9pbmRleCk7IH0KKworcHJpdmF0ZToK
KyAgICBRQ29tYm9Cb3hXZWJQb3B1cE1lbnUoQ2xpZW50KiwgUVdpZGdldCopOworICAgIGZyaWVu
ZCBjbGFzcyBQb3B1cENvbWJvQm94OworCisgICAgUG9wdXBDb21ib0JveCogbV9jb21ibzsKKyAg
ICBRV2lkZ2V0KiBtX3BhcmVudDsKKyAgICBpbnQgbV9pbmRleDsKKyAgICBRVGltZXIgbV90aW1l
cjsKKworICAgIHZvaWQgc2V0SW5kZXgoaW50KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKworI2VuZGlmIC8vIFBvcHVwTWVudV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5
LmNwcAppbmRleCA3YWU4N2IxLi4yNTIxOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTE4LDE1ICsxOCwxOCBA
QAogICoKICAqLwogCi0jaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJx
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oIgorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgorI2lu
Y2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUlt
cGwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZl
V2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5Lmgi
CiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFFdmVudD4KICNpbmNsdWRlIDxR
R3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0Pgor
I2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
cmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAKQEAgLTIyNSwzICsyMjgs
MTAgQEAgdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudChRVGltZXJFdmVudCog
ZXYpCiAgICAgZWxzZQogICAgICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2KTsKIH0KKworUGFz
c1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBRRGVza3RvcFdlYlBhZ2VQcm94eTo6
Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCit7CisgICAg
UVdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UURlc2t0b3BXZWJWaWV3UHJpdmF0ZSo+KG1f
dmlld0ludGVyZmFjZSktPnEtPmNhbnZhcygpOyAKKyAgICByZXR1cm4gUUNvbWJvQm94V2ViUG9w
dXBNZW51OjpjcmVhdGUocGFnZSwgd2lkZ2V0KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaAppbmRleCA0ODM1YjU3Li4zNmUz
ZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBh
Z2VQcm94eSopOworCiAgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChRR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChRR3JhcGhpY3NT
Y2VuZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KFFHcmFw
aGljc1NjZW5lTW91c2VFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCA0NGViYjY5Li4wNGI1ZGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnBybwpAQCAtMjM2LDYgKzIzNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xp
ZW50LmggXAogICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgg
XAogICAgIFVJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmggXApAQCAtNDY4LDYg
KzQ2OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRDbGll
bnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1l
bnVQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwIFwK
ICAgICBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCi0tIAoxLjcuNC4xCgo=
</data>
<flag name="review"
          id="99924"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104551</attachid>
            <date>2011-08-19 13:20:15 -0700</date>
            <delta_ts>2011-08-22 08:56:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>12852</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA5ZWVkN2QzYTBiZDdjZjc2ZTAzMzA5MWQ2NzY1ZTgxMzljZDNiMDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFdlZCwgMTcgQXVnIDIwMTEgMDk6NTk6MTMgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDkgKysrKysrKwogLi4uL1VJUHJvY2Vzcy9x
dC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAgICAgfCAgMTM0ICsrKysrKysrKysrKysr
KysrKysrCiAuLi4vVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmggICAg
ICB8ICAgNzAgKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2Vi
cGFnZXByb3h5LmNwcCAgfCAgIDEyICsrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmggfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiA2IGZpbGVzIGNoYW5nZWQsIDI2OCBp
bnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9w
dXBNZW51UHJveHkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlLi5mNDVjMzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDgtMTkgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZl
aXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBDcmVhdGluZyB3ZWJraXQyIHBvcHVw
IG1lbnUgaG9va3MgYW5kIGFkZGluZyBwb3B1cCBtZW51cyB0byBNaW5pQnJvd3Nlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTkxCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltcGxlIFF0V2ViS2l0IFdlYktpdDIgcG9wdXAg
bWVudSBpbiBEZXNrdG9wV2ViVmlldy4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L1FDb21ib0Jv
eFdlYlBvcHVwTWVudVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBvcHVwQ29t
Ym9Cb3g6OlBvcHVwQ29tYm9Cb3gpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cENvbWJvQm94Ojpo
aWRlUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OlFDb21i
b0JveFdlYlBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVu
dTo6flFDb21ib0JveFdlYlBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdl
YlBvcHVwTWVudTo6c2hvd1BvcHVwTWVudSk6CisKKyAgICAgICAgQWZ0ZXIgcG9wdWxhdGluZyB0
aGUgUUNvbWJvQm94IHRoZSBwb3B1cCBtZW51IGlzIHNob3dlZCBzZW5kaW5nIHRoZSBRRXZlbnQ6
Ok1vdXNlQnV0dG9uUHJlc3MKKyAgICAgICAgZXZlbnQgZGlyZWN0bHkgdG8gUUNvbWJvQm94IHVz
aW5nIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudC4gVGhpcyBhcHByb2FjaCBpcyB1c2VkCisg
ICAgICAgIGJlY2F1c2Ugd2hlbiB0aGUgdXNlciBjbGlja3MgaW4gdGhlIFdlYktpdCBDb21ib0Jv
eCBhbmQgaWYgd2UgY2FsbHMgZGlyZWN0bHkgUUNvbWJvQm94OjpzaG93UG9wdXAoKQorICAgICAg
ICB3aGVuIHRoZSBtb3VzZSBpcyByZWxlYXNlZCBRQ29tYm9Cb3g6OnZpZXcoKSBoaWRlcyB0aGUg
cG9wdXAsIGl0IGhhcHBlbnMgYmVjYXVzZSBpbnRlcm5hbGx5IGluCisgICAgICAgIFFDb21ib0Jv
eCB3aGVuIHRoZSBtb3VzZSBpcyBwcmVzc2VkLCBpdCBpbml0aWFsaXplcyBzb21lIGZsYWdzIGFu
ZCBwcmV2ZW50cyB0aGUgcG9wdXAgbWVudSB0byAKKyAgICAgICAgYmUgY2xvc2VkIHNvb24gYWZ0
ZXIgaXQgaXMgc2hvd24uIElmIHdlIGNhbGwgUUNvbWJvQm94OjpzaG93UG9wdXAoKSBkaXJlY3Rs
eSB0aGVzZSBmbGFncyBhcmUgCisgICAgICAgIG5vdCBpbml0aWFsaXplZC4KKworICAgICAgICBB
ZnRlciBRRXZlbnRMb29wOmV4ZWMoKSBpcyBjYWxsZWQgdG8gYmxvY2sgdGhlIG1haW4gZXZlbnQg
bG9vcCBhbmQgc3RhcnQgYSBsb2NhbCBldmVudCBsb29wLgorICAgICAgICBJdCBpcyBuZWVkZWQg
YmVjYXVzZSBXZWJQYWdlUHJveHkgZXhwZWN0cyB0aGUgbWVudSBwb3B1cCB0byBydW4gaW4gYSBu
ZXN0ZWQgcnVuIGxvb3AsIAorICAgICAgICBzaW5jZSBpdCBpbnZhbGlkYXRlcyB0aGUgbWVudSBy
aWdodCBhZnRlciBjYWxsaW5nIFdlYlBvcHVwTWVudVByb3h5OjpzaG93UG9wdXBNZW51KCkuCisK
KyAgICAgICAgKFdlYktpdDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjpoaWRlUG9wdXBNZW51KToK
KworICAgICAgICBXaGVuIHRoZSBDb21ib0JveCBoaWRlcyB0aGUgcG9wdXAgbWVudSB3ZSBuZWVk
IHRvIG5vdGlmeSBXZWJQcm9jZXNzLiBJdCBpcyBkb25lIHNlbmRpbmcgdG8KKyAgICAgICAgV2Vi
UHJvY2VzcyB0aGUgbWVzc2FnZSB0aGF0IHRoZSBlbGVtZW50IC0xIHdhcyBzZWxlY3RlZCBpbiB0
aGUgUG9wdXBNZW51LgorCisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6
ZG9TZXRJbmRleCk6CisKKyAgICAgICAgSWYgdGhlIHBvcHVwIG1lbnUgaXMgY2xvc2VkIHdlIGNh
biB1bmxvY2sgdGhlIG1haW4gZXZlbnQgbG9vcCB0YWxraW5nIHRvIGxvY2FsIGV2ZW50IHRvCisg
ICAgICAgIGV4aXQgbm9ybWFsbHkgdXNpbmcgUUV2ZW50TG9vcDo6cXVpdCgpLgorCisgICAgICAg
IChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6c2V0SW5kZXgpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmFjdGl2ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlBh
Z2VQcm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4
LTE1ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlIGRvZXMgbm90IGhh
dmUgZW5vdWdoIHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWFjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwCkBAIC0wLDAg
KzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09NQk9C
T1gKKworI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgIldlYlBv
cHVwSXRlbS5oIgorCisjaW5jbHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UUFw
cGxpY2F0aW9uPgorI2luY2x1ZGUgPFFJbnB1dENvbnRleHQ+CisjaW5jbHVkZSA8UU1vdXNlRXZl
bnQ+CisjaW5jbHVkZSA8UVN0YW5kYXJkSXRlbU1vZGVsPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVwQ29tYm9Cb3ggOiBwdWJs
aWMgUUNvbWJvQm94IHsKK3B1YmxpYzoKKyAgICBQb3B1cENvbWJvQm94KFFDb21ib0JveFdlYlBv
cHVwTWVudSosIFFSZWN0LCBRV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgp
OworCitwcml2YXRlOgorICAgIFFDb21ib0JveFdlYlBvcHVwTWVudSogbV9vd25lcjsKK307CisK
K1BvcHVwQ29tYm9Cb3g6OlBvcHVwQ29tYm9Cb3goUUNvbWJvQm94V2ViUG9wdXBNZW51KiBvd25l
ciwgUVJlY3QgcmVjdCwgUVdpZGdldCogcGFyZW50KQorICAgIDogUUNvbWJvQm94KHBhcmVudCkK
KyAgICAsIG1fb3duZXIob3duZXIpCit7CisgICAgc2V0R2VvbWV0cnkoUVJlY3QocmVjdC5sZWZ0
KCksIHJlY3QudG9wKCksIHJlY3Qud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOworfQor
Cit2b2lkIFBvcHVwQ29tYm9Cb3g6OmhpZGVQb3B1cCgpCit7CisgICAgUUNvbWJvQm94OjpoaWRl
UG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRleCgtMSk7Cit9CisKK1FDb21ib0JveFdlYlBv
cHVwTWVudTo6UUNvbWJvQm94V2ViUG9wdXBNZW51KENsaWVudCogY2xpZW50LCBRV2lkZ2V0KiBw
YXJlbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX2NvbWJvKDAp
CisgICAgLCBtX2V2ZW50TG9vcChuZXcgUUV2ZW50TG9vcCh0aGlzKSkKKyAgICAsIG1fcGFyZW50
KHBhcmVudCkKKyAgICAsIG1faW5kZXgoLTEpCit7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90
KHRydWUpOworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBT
TE9UKGRvU2V0SW5kZXgoKSkpOworfQorCitRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6On5RQ29tYm9C
b3hXZWJQb3B1cE1lbnUoKQoreworICAgIGlmIChtX2NvbWJvKQorICAgICAgICBtX2NvbWJvLT5k
ZWxldGVMYXRlcigpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2hvd1BvcHVw
TWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCkKK3sKKyAgICBpZiAoIW1fcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bWJvID0gbmV3IFBvcHVwQ29tYm9Cb3godGhpcywgcmVjdCwgbV9wYXJlbnQpOworICAgIGNvbm5l
Y3QobV9jb21ibywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChhY3RpdmVDaGFu
Z2VkKGludCkpKTsKKworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0X2Nh
c3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4obV9jb21iby0+bW9kZWwoKSk7CisgICAgUV9BU1NFUlQo
bW9kZWwpOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoaXRlbXNbaW5kZXhdLm1fdHlwZSA9PSBXZWJLaXQ6Oldl
YlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0U2VwYXJh
dG9yKGluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJ
dGVtKGluZGV4LCBpdGVtc1tpbmRleF0ubV90ZXh0KTsKKyAgICAgICAgICAgIG1vZGVsLT5pdGVt
KGluZGV4KS0+c2V0RW5hYmxlZChpdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQpOworI2lmbmRlZiBR
VF9OT19UT09MVElQCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpbmRleCktPnNldFRvb2xUaXAo
aXRlbXNbaW5kZXhdLm1fdG9vbFRpcCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsKKworICAgIFFNb3VzZUV2
ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1cnNvcjo6cG9zKCksIFF0OjpM
ZWZ0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9N
b2RpZmllcik7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29tYm8sICZldmVu
dCk7CisKKyAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBv
cHVwTWVudTo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgbV9jb21iby0+ZGVsZXRlTGF0ZXIoKTsK
KyAgICBtX2NvbWJvID0gMDsKK30KKwordm9pZCBRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmRvU2V0
SW5kZXgoKSAKK3sKKyAgICBpZiAobV9pbmRleCA9PSAtMSkKKyAgICAgICAgbV9ldmVudExvb3At
PnF1aXQoKTsKKworICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywg
bV9pbmRleCk7IAorfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2V0SW5kZXgoaW50
IGluZGV4KQoreworICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX3RpbWVyLnN0YXJ0KDApOwor
fQorCit9CisKKyNpbmNsdWRlICJtb2NfUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIgor
CisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5ODBlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBRQ29tYm9Cb3hXZWJQb3B1cE1lbnVQ
cm94eV9oCisjZGVmaW5lIFFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5X2gKKworI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5LmgiCisjaW5jbHVkZSA8UGFzc093blB0ci5oPgorCisjaW5jbHVk
ZSA8UXRDb3JlL1FFdmVudExvb3A+CisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVk
ZSA8UXRDb3JlL1FUaW1lcj4KKyNpbmNsdWRlIDxRdEd1aS9RQ29tYm9Cb3g+CisKKyNpZm5kZWYg
UVRfTk9fQ09NQk9CT1gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVwQ29tYm9C
b3g7CisKK2NsYXNzIFFDb21ib0JveFdlYlBvcHVwTWVudSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs
aWMgV2ViUG9wdXBNZW51UHJveHkgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UUNvbWJvQm94V2ViUG9wdXBNZW51PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQs
IFFXaWRnZXQqIHdpZGdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUUNv
bWJvQm94V2ViUG9wdXBNZW51KGNsaWVudCwgd2lkZ2V0KSk7CisgICAgfQorICAgIH5RQ29tYm9C
b3hXZWJQb3B1cE1lbnUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgc2NhbGVG
YWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBv
cHVwTWVudSgpOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgZG9TZXRJbmRleCgpOworICAg
IHZvaWQgYWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpIHsgc2V0SW5kZXgoaW5kZXgpOyB9CisKK3By
aXZhdGU6CisgICAgUUNvbWJvQm94V2ViUG9wdXBNZW51KENsaWVudCosIFFXaWRnZXQqKTsKKyAg
ICBmcmllbmQgY2xhc3MgUG9wdXBDb21ib0JveDsKKworICAgIFBvcHVwQ29tYm9Cb3gqIG1fY29t
Ym87CisgICAgUUV2ZW50TG9vcCAqbV9ldmVudExvb3A7CisgICAgUVdpZGdldCogbV9wYXJlbnQ7
CisgICAgaW50IG1faW5kZXg7CisgICAgUVRpbWVyIG1fdGltZXI7CisKKyAgICB2b2lkIHNldElu
ZGV4KGludCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFFUX05P
X0NPTUJPQk9YCisKKyNlbmRpZiAvLyBQb3B1cE1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggN2FlODdiMS4u
MjUyMTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9w
d2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0
b3B3ZWJwYWdlcHJveHkuY3BwCkBAIC0xOCwxNSArMTgsMTggQEAKICAqCiAgKi8KIAotI2luY2x1
ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJwYWdlcHJveHku
aCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZp
ZXdfcC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNp
bmNsdWRlICJRQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPFFBcHBsaWNh
dGlvbj4KICNpbmNsdWRlIDxRRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVEcmFnRHJv
cEV2ZW50PgogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0
aXZlL3FzZ2NhbnZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lvbi5oPgogCkBAIC0yMjUsMyArMjI4LDEwIEBAIHZvaWQgUURlc2t0b3BX
ZWJQYWdlUHJveHk6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KQogICAgIGVsc2UKICAgICAg
ICAgUU9iamVjdDo6dGltZXJFdmVudChldik7CiB9CisKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eT4gUURlc2t0b3BXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIFFXaWRnZXQqIHdpZGdldCA9IHN0
YXRpY19jYXN0PFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqPihtX3ZpZXdJbnRlcmZhY2UpLT5xLT5j
YW52YXMoKTsgCisgICAgcmV0dXJuIFFDb21ib0JveFdlYlBvcHVwTWVudTo6Y3JlYXRlKHBhZ2Us
IHdpZGdldCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNr
dG9wd2VicGFnZXByb3h5LmgKaW5kZXggNDgzNWI1Ny4uMzZlM2Q3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKQEAgLTQ5LDYg
KzQ5LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2
ZW50Kik7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94
eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKwogICAgIGJv
b2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CiAgICAg
Ym9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CiAg
ICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi5wcm8KaW5kZXggNDRlYmI2OS4uMDRiNWRlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAg
LTIzNiw2ICsyMzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKICAgICBVSVByb2Nl
c3MvcXQvQ2xpZW50SW1wbC5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5oIFwKICAgICBVSVByb2Nlc3MvcXQv
UXRQYW5HZXN0dXJlUmVjb2duaXplci5oIFwKQEAgLTQ2OCw2ICs0NjksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9j
ZXNzL1dlYlVJQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwIFwK
KyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIFwKICAgICBV
SVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
R2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVj
b2duaXplci5jcHAgXAotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104682</attachid>
            <date>2011-08-22 08:56:45 -0700</date>
            <delta_ts>2011-08-22 10:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>12864</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjOGI2NTNiZjk2N2E2YTdmMjhlMWI3ODYzZWQ3YTk2MzBmOTgzOTRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMjIgQXVnIDIwMTEgMTE6Mzk6NDggLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDkgKysrKysrKwogLi4uL1VJUHJvY2Vzcy9x
dC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAgICAgfCAgMTM0ICsrKysrKysrKysrKysr
KysrKysrCiAuLi4vVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmggICAg
ICB8ICAgNzAgKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2Vi
cGFnZXByb3h5LmNwcCAgfCAgIDEyICsrLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3Fk
ZXNrdG9wd2VicGFnZXByb3h5LmggfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJv
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiA2IGZpbGVzIGNoYW5nZWQsIDI2OCBp
bnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9w
dXBNZW51UHJveHkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MmRkYjdlLi5mNDVjMzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDgtMTkgIElnb3IgT2xpdmVpcmEgIDxpZ29yLm9saXZl
aXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBDcmVhdGluZyB3ZWJraXQyIHBvcHVw
IG1lbnUgaG9va3MgYW5kIGFkZGluZyBwb3B1cCBtZW51cyB0byBNaW5pQnJvd3Nlci4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTkxCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltcGxlIFF0V2ViS2l0IFdlYktpdDIgcG9wdXAg
bWVudSBpbiBEZXNrdG9wV2ViVmlldy4KKworICAgICAgICBPcmlnaW5hbCBwYXRjaCBieSBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L1FDb21ib0Jv
eFdlYlBvcHVwTWVudVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBvcHVwQ29t
Ym9Cb3g6OlBvcHVwQ29tYm9Cb3gpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cENvbWJvQm94Ojpo
aWRlUG9wdXApOgorICAgICAgICAoV2ViS2l0OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OlFDb21i
b0JveFdlYlBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVu
dTo6flFDb21ib0JveFdlYlBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdl
YlBvcHVwTWVudTo6c2hvd1BvcHVwTWVudSk6CisKKyAgICAgICAgQWZ0ZXIgcG9wdWxhdGluZyB0
aGUgUUNvbWJvQm94IHRoZSBwb3B1cCBtZW51IGlzIHNob3dlZCBzZW5kaW5nIHRoZSBRRXZlbnQ6
Ok1vdXNlQnV0dG9uUHJlc3MKKyAgICAgICAgZXZlbnQgZGlyZWN0bHkgdG8gUUNvbWJvQm94IHVz
aW5nIFFDb3JlQXBwbGljYXRpb246OnNlbmRFdmVudC4gVGhpcyBhcHByb2FjaCBpcyB1c2VkCisg
ICAgICAgIGJlY2F1c2Ugd2hlbiB0aGUgdXNlciBjbGlja3MgaW4gdGhlIFdlYktpdCBDb21ib0Jv
eCBhbmQgaWYgd2UgY2FsbHMgZGlyZWN0bHkgUUNvbWJvQm94OjpzaG93UG9wdXAoKQorICAgICAg
ICB3aGVuIHRoZSBtb3VzZSBpcyByZWxlYXNlZCBRQ29tYm9Cb3g6OnZpZXcoKSBoaWRlcyB0aGUg
cG9wdXAsIGl0IGhhcHBlbnMgYmVjYXVzZSBpbnRlcm5hbGx5IGluCisgICAgICAgIFFDb21ib0Jv
eCB3aGVuIHRoZSBtb3VzZSBpcyBwcmVzc2VkLCBpdCBpbml0aWFsaXplcyBzb21lIGZsYWdzIGFu
ZCBwcmV2ZW50cyB0aGUgcG9wdXAgbWVudSB0byAKKyAgICAgICAgYmUgY2xvc2VkIHNvb24gYWZ0
ZXIgaXQgaXMgc2hvd24uIElmIHdlIGNhbGwgUUNvbWJvQm94OjpzaG93UG9wdXAoKSBkaXJlY3Rs
eSB0aGVzZSBmbGFncyBhcmUgCisgICAgICAgIG5vdCBpbml0aWFsaXplZC4KKworICAgICAgICBB
ZnRlciBRRXZlbnRMb29wOmV4ZWMoKSBpcyBjYWxsZWQgdG8gYmxvY2sgdGhlIG1haW4gZXZlbnQg
bG9vcCBhbmQgc3RhcnQgYSBsb2NhbCBldmVudCBsb29wLgorICAgICAgICBJdCBpcyBuZWVkZWQg
YmVjYXVzZSBXZWJQYWdlUHJveHkgZXhwZWN0cyB0aGUgbWVudSBwb3B1cCB0byBydW4gaW4gYSBu
ZXN0ZWQgcnVuIGxvb3AsIAorICAgICAgICBzaW5jZSBpdCBpbnZhbGlkYXRlcyB0aGUgbWVudSBy
aWdodCBhZnRlciBjYWxsaW5nIFdlYlBvcHVwTWVudVByb3h5OjpzaG93UG9wdXBNZW51KCkuCisK
KyAgICAgICAgKFdlYktpdDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjpoaWRlUG9wdXBNZW51KToK
KworICAgICAgICBXaGVuIHRoZSBDb21ib0JveCBoaWRlcyB0aGUgcG9wdXAgbWVudSB3ZSBuZWVk
IHRvIG5vdGlmeSBXZWJQcm9jZXNzLiBJdCBpcyBkb25lIHNlbmRpbmcgdG8KKyAgICAgICAgV2Vi
UHJvY2VzcyB0aGUgbWVzc2FnZSB0aGF0IHRoZSBlbGVtZW50IC0xIHdhcyBzZWxlY3RlZCBpbiB0
aGUgUG9wdXBNZW51LgorCisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6
ZG9TZXRJbmRleCk6CisKKyAgICAgICAgSWYgdGhlIHBvcHVwIG1lbnUgaXMgY2xvc2VkIHdlIGNh
biB1bmxvY2sgdGhlIG1haW4gZXZlbnQgbG9vcCB0YWxraW5nIHRvIGxvY2FsIGV2ZW50IHRvCisg
ICAgICAgIGV4aXQgbm9ybWFsbHkgdXNpbmcgUUV2ZW50TG9vcDo6cXVpdCgpLgorCisgICAgICAg
IChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6c2V0SW5kZXgpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmFjdGl2ZUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlBh
Z2VQcm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorCiAyMDExLTA4
LTE1ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlIGRvZXMgbm90IGhh
dmUgZW5vdWdoIHBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWFjYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwCkBAIC0wLDAg
KzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmgiCisKKyNpZm5kZWYgUVRfTk9fQ09NQk9C
T1gKKworI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgIldlYlBv
cHVwSXRlbS5oIgorCisjaW5jbHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UUFw
cGxpY2F0aW9uPgorI2luY2x1ZGUgPFFJbnB1dENvbnRleHQ+CisjaW5jbHVkZSA8UU1vdXNlRXZl
bnQ+CisjaW5jbHVkZSA8UVN0YW5kYXJkSXRlbU1vZGVsPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVwQ29tYm9Cb3ggOiBwdWJs
aWMgUUNvbWJvQm94IHsKK3B1YmxpYzoKKyAgICBQb3B1cENvbWJvQm94KFFDb21ib0JveFdlYlBv
cHVwTWVudSosIFFSZWN0LCBRV2lkZ2V0Kik7CisgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgp
OworCitwcml2YXRlOgorICAgIFFDb21ib0JveFdlYlBvcHVwTWVudSogbV9vd25lcjsKK307CisK
K1BvcHVwQ29tYm9Cb3g6OlBvcHVwQ29tYm9Cb3goUUNvbWJvQm94V2ViUG9wdXBNZW51KiBvd25l
ciwgUVJlY3QgcmVjdCwgUVdpZGdldCogcGFyZW50KQorICAgIDogUUNvbWJvQm94KHBhcmVudCkK
KyAgICAsIG1fb3duZXIob3duZXIpCit7CisgICAgc2V0R2VvbWV0cnkoUVJlY3QocmVjdC5sZWZ0
KCksIHJlY3QudG9wKCksIHJlY3Qud2lkdGgoKSwgc2l6ZUhpbnQoKS5oZWlnaHQoKSkpOworfQor
Cit2b2lkIFBvcHVwQ29tYm9Cb3g6OmhpZGVQb3B1cCgpCit7CisgICAgUUNvbWJvQm94OjpoaWRl
UG9wdXAoKTsKKyAgICBtX293bmVyLT5zZXRJbmRleCgtMSk7Cit9CisKK1FDb21ib0JveFdlYlBv
cHVwTWVudTo6UUNvbWJvQm94V2ViUG9wdXBNZW51KENsaWVudCogY2xpZW50LCBRV2lkZ2V0KiBw
YXJlbnQpCisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX2NvbWJvKDAp
CisgICAgLCBtX2V2ZW50TG9vcChuZXcgUUV2ZW50TG9vcCh0aGlzKSkKKyAgICAsIG1fcGFyZW50
KHBhcmVudCkKKyAgICAsIG1faW5kZXgoLTEpCit7CisgICAgbV90aW1lci5zZXRTaW5nbGVTaG90
KHRydWUpOworICAgIGNvbm5lY3QoJm1fdGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBT
TE9UKGRvU2V0SW5kZXgoKSkpOworfQorCitRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6On5RQ29tYm9C
b3hXZWJQb3B1cE1lbnUoKQoreworICAgIGlmIChtX2NvbWJvKQorICAgICAgICBtX2NvbWJvLT5k
ZWxldGVMYXRlcigpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2hvd1BvcHVw
TWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJ
bmRleCkKK3sKKyAgICBpZiAoIW1fcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bWJvID0gbmV3IFBvcHVwQ29tYm9Cb3godGhpcywgcmVjdCwgbV9wYXJlbnQpOworICAgIGNvbm5l
Y3QobV9jb21ibywgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChhY3RpdmVDaGFu
Z2VkKGludCkpKTsKKworICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCogbW9kZWwgPSBxb2JqZWN0X2Nh
c3Q8UVN0YW5kYXJkSXRlbU1vZGVsKj4obV9jb21iby0+bW9kZWwoKSk7CisgICAgUV9BU1NFUlQo
bW9kZWwpOworCisgICAgZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoaXRlbXNbaW5kZXhdLm1fdHlwZSA9PSBXZWJLaXQ6Oldl
YlBvcHVwSXRlbTo6U2VwYXJhdG9yKQorICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0U2VwYXJh
dG9yKGluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRJ
dGVtKGluZGV4LCBpdGVtc1tpbmRleF0ubV90ZXh0KTsKKyAgICAgICAgICAgIG1vZGVsLT5pdGVt
KGluZGV4KS0+c2V0RW5hYmxlZChpdGVtc1tpbmRleF0ubV9pc0VuYWJsZWQpOworI2lmbmRlZiBR
VF9OT19UT09MVElQCisgICAgICAgICAgICBtb2RlbC0+aXRlbShpbmRleCktPnNldFRvb2xUaXAo
aXRlbXNbaW5kZXhdLm1fdG9vbFRpcCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fY29tYm8tPnNldEN1cnJlbnRJbmRleChzZWxlY3RlZEluZGV4KTsKKworICAgIFFNb3VzZUV2
ZW50IGV2ZW50KFFFdmVudDo6TW91c2VCdXR0b25QcmVzcywgUUN1cnNvcjo6cG9zKCksIFF0OjpM
ZWZ0QnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9N
b2RpZmllcik7CisgICAgUUNvcmVBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fY29tYm8sICZldmVu
dCk7CisKKyAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBv
cHVwTWVudTo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgbV9jb21iby0+ZGVsZXRlTGF0ZXIoKTsK
KyAgICBtX2NvbWJvID0gMDsKK30KKwordm9pZCBRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OmRvU2V0
SW5kZXgoKSAKK3sKKyAgICBpZiAobV9pbmRleCA9PSAtMSkKKyAgICAgICAgbV9ldmVudExvb3At
PnF1aXQoKTsKKworICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywg
bV9pbmRleCk7IAorfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6c2V0SW5kZXgoaW50
IGluZGV4KQoreworICAgIG1faW5kZXggPSBpbmRleDsKKyAgICBtX3RpbWVyLnN0YXJ0KDApOwor
fQorCit9CisKKyNpbmNsdWRlICJtb2NfUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIgor
CisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5ODBlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oCkBAIC0wLDAg
KzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2lmbmRlZiBRQ29tYm9Cb3hXZWJQb3B1cE1lbnVQ
cm94eV9oCisjZGVmaW5lIFFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5X2gKKworI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5LmgiCisjaW5jbHVkZSA8UGFzc093blB0ci5oPgorCisjaW5jbHVk
ZSA8UXRDb3JlL1FFdmVudExvb3A+CisjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CisjaW5jbHVk
ZSA8UXRDb3JlL1FUaW1lcj4KKyNpbmNsdWRlIDxRdEd1aS9RQ29tYm9Cb3g+CisKKyNpZm5kZWYg
UVRfTk9fQ09NQk9CT1gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBvcHVwQ29tYm9C
b3g7CisKK2NsYXNzIFFDb21ib0JveFdlYlBvcHVwTWVudSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs
aWMgV2ViUG9wdXBNZW51UHJveHkgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UUNvbWJvQm94V2ViUG9wdXBNZW51PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQs
IFFXaWRnZXQqIHdpZGdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUUNv
bWJvQm94V2ViUG9wdXBNZW51KGNsaWVudCwgd2lkZ2V0KSk7CisgICAgfQorICAgIH5RQ29tYm9C
b3hXZWJQb3B1cE1lbnUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgc2NhbGVG
YWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBv
cHVwTWVudSgpOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgZG9TZXRJbmRleCgpOworICAg
IHZvaWQgYWN0aXZlQ2hhbmdlZChpbnQgaW5kZXgpIHsgc2V0SW5kZXgoaW5kZXgpOyB9CisKK3By
aXZhdGU6CisgICAgUUNvbWJvQm94V2ViUG9wdXBNZW51KENsaWVudCosIFFXaWRnZXQqKTsKKyAg
ICBmcmllbmQgY2xhc3MgUG9wdXBDb21ib0JveDsKKworICAgIFBvcHVwQ29tYm9Cb3gqIG1fY29t
Ym87CisgICAgUUV2ZW50TG9vcCAqbV9ldmVudExvb3A7CisgICAgUVdpZGdldCogbV9wYXJlbnQ7
CisgICAgaW50IG1faW5kZXg7CisgICAgUVRpbWVyIG1fdGltZXI7CisKKyAgICB2b2lkIHNldElu
ZGV4KGludCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFFUX05P
X0NPTUJPQk9YCisKKyNlbmRpZiAvLyBQb3B1cE1lbnVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKaW5kZXggN2FlODdiMS4u
MjUyMTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9w
d2VicGFnZXByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0
b3B3ZWJwYWdlcHJveHkuY3BwCkBAIC0xOCwxNSArMTgsMTggQEAKICAqCiAgKi8KIAotI2luY2x1
ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJwYWdlcHJveHku
aCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxZGVza3RvcHdlYnZp
ZXdfcC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCiAjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNp
bmNsdWRlICJRQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgPFFBcHBsaWNh
dGlvbj4KICNpbmNsdWRlIDxRRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVEcmFnRHJv
cEV2ZW50PgogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0
aXZlL3FzZ2NhbnZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lvbi5oPgogCkBAIC0yMjUsMyArMjI4LDEwIEBAIHZvaWQgUURlc2t0b3BX
ZWJQYWdlUHJveHk6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2KQogICAgIGVsc2UKICAgICAg
ICAgUU9iamVjdDo6dGltZXJFdmVudChldik7CiB9CisKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eT4gUURlc2t0b3BXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVByb3h5
KFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlKQoreworICAgIFFXaWRnZXQqIHdpZGdldCA9IHN0
YXRpY19jYXN0PFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqPihtX3ZpZXdJbnRlcmZhY2UpLT5xLT5j
YW52YXMoKTsgCisgICAgcmV0dXJuIFFDb21ib0JveFdlYlBvcHVwTWVudTo6Y3JlYXRlKHBhZ2Us
IHdpZGdldCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9x
ZGVza3RvcHdlYnBhZ2Vwcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNr
dG9wd2VicGFnZXByb3h5LmgKaW5kZXggNDgzNWI1Ny4uMzZlM2Q3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmgKQEAgLTQ5LDYg
KzQ5LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2
ZW50Kik7CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94
eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKKwogICAgIGJv
b2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CiAgICAg
Ym9vbCBoYW5kbGVNb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CiAg
ICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi5wcm8KaW5kZXggNDRlYmI2OS4uOGRjMDU4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8KQEAg
LTIzNyw2ICsyMzcsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQu
aCBcCiAgICAgVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1Rv
dWNoVmlld0ludGVyZmFjZS5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCiAg
ICAgVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIFwKQEAgLTQ2OSw2ICs0NzAsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
Y3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIFwK
ICAgICBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAgXAogICAgIFVJUHJvY2Vz
cy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGlu
Y2hHZXN0dXJlUmVjb2duaXplci5jcHAgXAotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104691</attachid>
            <date>2011-08-22 10:20:37 -0700</date>
            <delta_ts>2011-08-25 10:41:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>9948</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSBjODdkYjIxZWUzNmI5NGMxOTI0ZjlhMzc5NWI0M2Q1YWEwZThmMGQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IE1vbiwgMjIgQXVnIDIwMTEgMTI6NTY6MDggLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyLgoKLS0tCiAuLi4vVUlQcm9jZXNzL3F0L1FDb21ib0Jv
eFdlYlBvcHVwTWVudVByb3h5LmNwcCAgICB8ICAxMzQgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaCAgICAgIHwgICA3MCAr
KysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHku
Y3BwICB8ICAgMTIgKystCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuaCB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94
eS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdl
YlBvcHVwTWVudVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9C
b3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODllYWNhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUUNvbWJvQm94V2Vi
UG9wdXBNZW51UHJveHkuaCIKKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAorCisjaW5jbHVkZSAi
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKKyNp
bmNsdWRlIDxRQWJzdHJhY3RJdGVtVmlldz4KKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5j
bHVkZSA8UUlucHV0Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91c2VFdmVudD4KKyNpbmNsdWRlIDxR
U3RhbmRhcmRJdGVtTW9kZWw+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUG9wdXBDb21ib0JveCA6IHB1YmxpYyBRQ29tYm9Cb3ggewor
cHVibGljOgorICAgIFBvcHVwQ29tYm9Cb3goUUNvbWJvQm94V2ViUG9wdXBNZW51KiwgUVJlY3Qs
IFFXaWRnZXQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwKCk7CisKK3ByaXZhdGU6Cisg
ICAgUUNvbWJvQm94V2ViUG9wdXBNZW51KiBtX293bmVyOworfTsKKworUG9wdXBDb21ib0JveDo6
UG9wdXBDb21ib0JveChRQ29tYm9Cb3hXZWJQb3B1cE1lbnUqIG93bmVyLCBRUmVjdCByZWN0LCBR
V2lkZ2V0KiBwYXJlbnQpCisgICAgOiBRQ29tYm9Cb3gocGFyZW50KQorICAgICwgbV9vd25lcihv
d25lcikKK3sKKyAgICBzZXRHZW9tZXRyeShRUmVjdChyZWN0LmxlZnQoKSwgcmVjdC50b3AoKSwg
cmVjdC53aWR0aCgpLCBzaXplSGludCgpLmhlaWdodCgpKSk7Cit9CisKK3ZvaWQgUG9wdXBDb21i
b0JveDo6aGlkZVBvcHVwKCkKK3sKKyAgICBRQ29tYm9Cb3g6OmhpZGVQb3B1cCgpOworICAgIG1f
b3duZXItPnNldEluZGV4KC0xKTsKK30KKworUUNvbWJvQm94V2ViUG9wdXBNZW51OjpRQ29tYm9C
b3hXZWJQb3B1cE1lbnUoQ2xpZW50KiBjbGllbnQsIFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFdl
YlBvcHVwTWVudVByb3h5KGNsaWVudCkKKyAgICAsIG1fY29tYm8oMCkKKyAgICAsIG1fZXZlbnRM
b29wKG5ldyBRRXZlbnRMb29wKHRoaXMpKQorICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICwg
bV9pbmRleCgtMSkKK3sKKyAgICBtX3RpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgY29u
bmVjdCgmbV90aW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1QoZG9TZXRJbmRleCgp
KSk7Cit9CisKK1FDb21ib0JveFdlYlBvcHVwTWVudTo6flFDb21ib0JveFdlYlBvcHVwTWVudSgp
Cit7CisgICAgaWYgKG1fY29tYm8pCisgICAgICAgIG1fY29tYm8tPmRlbGV0ZUxhdGVyKCk7Cit9
CisKK3ZvaWQgUUNvbWJvQm94V2ViUG9wdXBNZW51OjpzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBkb3Vi
bGUgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3Qg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIGlm
ICghbV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tYm8gPSBuZXcgUG9wdXBD
b21ib0JveCh0aGlzLCByZWN0LCBtX3BhcmVudCk7CisgICAgY29ubmVjdChtX2NvbWJvLCBTSUdO
QUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKGFjdGl2ZUNoYW5nZWQoaW50KSkpOworCisg
ICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRhcmRJdGVt
TW9kZWwqPihtX2NvbWJvLT5tb2RlbCgpKTsKKyAgICBRX0FTU0VSVChtb2RlbCk7CisKKyAgICBm
b3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGlmIChpdGVtc1tpbmRleF0ubV90eXBlID09IFdlYktpdDo6V2ViUG9wdXBJdGVtOjpTZXBh
cmF0b3IpCisgICAgICAgICAgICBtX2NvbWJvLT5pbnNlcnRTZXBhcmF0b3IoaW5kZXgpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydEl0ZW0oaW5kZXgsIGl0ZW1z
W2luZGV4XS5tX3RleHQpOworICAgICAgICAgICAgbW9kZWwtPml0ZW0oaW5kZXgpLT5zZXRFbmFi
bGVkKGl0ZW1zW2luZGV4XS5tX2lzRW5hYmxlZCk7CisjaWZuZGVmIFFUX05PX1RPT0xUSVAKKyAg
ICAgICAgICAgIG1vZGVsLT5pdGVtKGluZGV4KS0+c2V0VG9vbFRpcChpdGVtc1tpbmRleF0ubV90
b29sVGlwKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgbV9jb21iby0+c2V0Q3Vy
cmVudEluZGV4KHNlbGVjdGVkSW5kZXgpOworCisgICAgUU1vdXNlRXZlbnQgZXZlbnQoUUV2ZW50
OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwgUXQ6OkxlZnRCdXR0b24sCisgICAg
ICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBR
Q29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9jb21ibywgJmV2ZW50KTsKKworICAgIG1fZXZl
bnRMb29wLT5leGVjKCk7Cit9CisKK3ZvaWQgUUNvbWJvQm94V2ViUG9wdXBNZW51OjpoaWRlUG9w
dXBNZW51KCkKK3sKKyAgICBtX2NvbWJvLT5kZWxldGVMYXRlcigpOworICAgIG1fY29tYm8gPSAw
OworfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVwTWVudTo6ZG9TZXRJbmRleCgpIAoreworICAg
IGlmIChtX2luZGV4ID09IC0xKQorICAgICAgICBtX2V2ZW50TG9vcC0+cXVpdCgpOworCisgICAg
bV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBtX2luZGV4KTsgCit9CisK
K3ZvaWQgUUNvbWJvQm94V2ViUG9wdXBNZW51OjpzZXRJbmRleChpbnQgaW5kZXgpCit7CisgICAg
bV9pbmRleCA9IGluZGV4OworICAgIG1fdGltZXIuc3RhcnQoMCk7Cit9CisKK30KKworI2luY2x1
ZGUgIm1vY19RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAiCisKKyNlbmRpZiAvLyBRVF9O
T19DT01CT0JPWApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21i
b0JveFdlYlBvcHVwTWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNv
bWJvQm94V2ViUG9wdXBNZW51UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mOTk4MGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisjaWZuZGVmIFFDb21ib0JveFdlYlBvcHVwTWVudVByb3h5X2gKKyNkZWZpbmUg
UUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHlfaAorCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJv
eHkuaCIKKyNpbmNsdWRlIDxQYXNzT3duUHRyLmg+CisKKyNpbmNsdWRlIDxRdENvcmUvUUV2ZW50
TG9vcD4KKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDxRdENvcmUvUVRpbWVy
PgorI2luY2x1ZGUgPFF0R3VpL1FDb21ib0JveD4KKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUG9wdXBDb21ib0JveDsKKworY2xhc3MgUUNv
bWJvQm94V2ViUG9wdXBNZW51IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eSB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxRQ29t
Ym9Cb3hXZWJQb3B1cE1lbnU+IGNyZWF0ZShDbGllbnQqIGNsaWVudCwgUVdpZGdldCogd2lkZ2V0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBRQ29tYm9Cb3hXZWJQb3B1cE1l
bnUoY2xpZW50LCB3aWRnZXQpKTsKKyAgICB9CisgICAgflFDb21ib0JveFdlYlBvcHVwTWVudSgp
OworCisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90
IHNlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBNZW51KCk7CisKK3By
aXZhdGUgc2xvdHM6CisgICAgdm9pZCBkb1NldEluZGV4KCk7CisgICAgdm9pZCBhY3RpdmVDaGFu
Z2VkKGludCBpbmRleCkgeyBzZXRJbmRleChpbmRleCk7IH0KKworcHJpdmF0ZToKKyAgICBRQ29t
Ym9Cb3hXZWJQb3B1cE1lbnUoQ2xpZW50KiwgUVdpZGdldCopOworICAgIGZyaWVuZCBjbGFzcyBQ
b3B1cENvbWJvQm94OworCisgICAgUG9wdXBDb21ib0JveCogbV9jb21ibzsKKyAgICBRRXZlbnRM
b29wICptX2V2ZW50TG9vcDsKKyAgICBRV2lkZ2V0KiBtX3BhcmVudDsKKyAgICBpbnQgbV9pbmRl
eDsKKyAgICBRVGltZXIgbV90aW1lcjsKKworICAgIHZvaWQgc2V0SW5kZXgoaW50KTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKworI2Vu
ZGlmIC8vIFBvcHVwTWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcAppbmRleCA1ZmNmZWRkLi5kMWE0MjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5j
cHAKQEAgLTE4LDE1ICsxOCwxOCBAQAogICoKICAqLwogCi0jaW5jbHVkZSAicWRlc2t0b3B3ZWJ2
aWV3X3AuaCIKICNpbmNsdWRlICJxZGVza3RvcHdlYnBhZ2Vwcm94eS5oIgorI2luY2x1ZGUgInFk
ZXNrdG9wd2Vidmlldy5oIgorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlFDb21ib0Jv
eFdlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2luY2x1ZGUg
PFFFdmVudD4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQ+CiAjaW5jbHVk
ZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9u
Lmg+CiAKQEAgLTIyNSwzICsyMjgsMTAgQEAgdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6dGlt
ZXJFdmVudChRVGltZXJFdmVudCogZXYpCiAgICAgZWxzZQogICAgICAgICBRT2JqZWN0Ojp0aW1l
ckV2ZW50KGV2KTsKIH0KKworUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBR
RGVza3RvcFdlYlBhZ2VQcm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdl
UHJveHkqIHBhZ2UpCit7CisgICAgUVdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UURlc2t0
b3BXZWJWaWV3UHJpdmF0ZSo+KG1fdmlld0ludGVyZmFjZSktPnEtPmNhbnZhcygpOyAKKyAgICBy
ZXR1cm4gUUNvbWJvQm94V2ViUG9wdXBNZW51OjpjcmVhdGUocGFnZSwgd2lkZ2V0KTsKK30KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHku
aAppbmRleCA0ODM1YjU3Li4zNmUzZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKIAorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworCiAgICAgYm9vbCBoYW5kbGVNb3VzZU1v
dmVFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1vdXNl
UHJlc3NFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpp
bmRleCBlNGNlMTdhLi4zNzNmNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
LnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjM4LDYgKzIzOCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggXAogICAgIFVJUHJv
Y2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1BvbGljeUlu
dGVyZmFjZS5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHku
aCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9j
ZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGlu
Y2hHZXN0dXJlUmVjb2duaXplci5oIFwKQEAgLTQ3MSw2ICs0NzIsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvQ2xpZW50
SW1wbC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwIFwKKyAg
ICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFBh
bkdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJl
UmVjb2duaXplci5jcHAgXAotLSAKMS43LjQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105215</attachid>
            <date>2011-08-25 10:41:00 -0700</date>
            <delta_ts>2011-08-31 11:44:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Qt-Creating-webkit2-popup-menu-hooks-and-adding-popu.patch</filename>
            <type>text/plain</type>
            <size>26371</size>
            <attacher name="Igor Trindade Oliveira">igor.oliveira</attacher>
            
              <data encoding="base64">RnJvbSA4ZDRkYTk2MTBlMjA3NjhhZjJmNTU1YTY5ZjBlZmU4OTI5OTMwM2VhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBJZ29yIE9saXZlaXJhIDxpZ29yLm9saXZlaXJhQG9wZW5ib3Nz
YS5vcmc+CkRhdGU6IFRodSwgMjUgQXVnIDIwMTEgMDk6MDU6NDYgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBbUXRdIENyZWF0aW5nIHdlYmtpdDIgcG9wdXAgbWVudSBob29rcyBhbmQgYWRkaW5nIHBv
cHVwIG1lbnVzIHRvIE1pbmlCcm93c2VyCgotLS0KIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKwogU291cmNlL1dlYktpdC9xdC9R
dFdlYktpdC5wcm8gICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9xdC9XZWJDb3Jl
U3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwICAgICAgIHwgICA4MSArKy0tLS0tLS0tLS0t
LQogLi4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCAgfCAg
IDM2ICsrLS0tLQogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYlBvcHVwLmNw
cCAgICAgfCAgMTE2ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1F0V2ViUG9wdXAuaCAgICAgICB8ICAgNjIgKysrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKysr
CiAuLi4vVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcCAgICB8ICAx
MTAgKysrKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1
cE1lbnVQcm94eS5oICAgICAgfCAgIDY5ICsrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcCAgfCAgIDEyICsrLQogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggfCAgICAyICsKIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKy0KIDEy
IGZpbGVzIGNoYW5nZWQsIDQ2OSBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYlBvcHVw
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRXZWJQb3B1cC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1FDb21ib0JveFdlYlBvcHVwTWVudVByb3h5LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1cE1lbnVQcm94eS5oCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCA5NzM0MDEyLi45YWJmZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDExLTA4LTI1ICBJZ29yIE9saXZlaXJhICA8aWdvci5vbGl2ZWlyYUBvcGVu
Ym9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gQ3JlYXRpbmcgd2Via2l0MiBwb3B1cCBtZW51IGhv
b2tzIGFuZCBhZGRpbmcgcG9wdXAgbWVudXMgdG8gTWluaUJyb3dzZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE5MQorCisgICAgICAgIFJlZmFj
dG9yIFF0RmFsbGJhY2tXZWJQb3B1cCBhbmQgY3JlYXRlcyBhIGJhc2UgY2xhc3MgY2FsbGVkIFF0
V2ViUG9wdXAKKyAgICAgICAgdGhhdCBpcyB1c2VkIGJ5IFF0IFdlYktpdDIgV2ViUG9wdXBNZW51
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUXRX
ZWJLaXQucHJvOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OlF0RmFsbGJhY2tXZWJQ
b3B1cCk6CisgICAgICAgIChXZWJDb3JlOjpRdEZhbGxiYWNrV2ViUG9wdXA6OnNob3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UXRGYWxsYmFja1dlYlBvcHVwOjpkaWRIaWRlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9RdFdlYlBvcHVwLmNwcDogQWRkZWQuCisgICAgICAgIChRdFdlYlBvcHVwQ29tYm86OlF0
V2ViUG9wdXBDb21ibyk6CisgICAgICAgIChRdFdlYlBvcHVwQ29tYm86OnNob3dQb3B1cCk6Cisg
ICAgICAgIChRdFdlYlBvcHVwQ29tYm86OmhpZGVQb3B1cCk6CisgICAgICAgIChRdFdlYlBvcHVw
Q29tYm86OmV2ZW50RmlsdGVyKToKKyAgICAgICAgKFF0V2ViUG9wdXA6OlF0V2ViUG9wdXApOgor
ICAgICAgICAoUXRXZWJQb3B1cDo6flF0V2ViUG9wdXApOgorICAgICAgICAoUXRXZWJQb3B1cDo6
c2hvd1BvcHVwKToKKyAgICAgICAgKFF0V2ViUG9wdXA6OmRlc3Ryb3lQb3B1cCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUXRXZWJQb3B1cC5oOiBBZGRlZC4KKwogMjAxMS0wOC0yMyAgVG9y
IEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBGaXggYnVpbGQgb24gTGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9RdFdlYktp
dC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwppbmRleCAyYzA1OGE1Li42ZmZl
MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwpAQCAtMTkzLDYgKzE5Myw3IEBAIFNPVVJDRVMgKz0g
XAogICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L1BhZ2VDbGllbnRRdC5jcHAgXAogICAgICQkUFdE
L1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudVF0LmNwcCBcCiAgICAgJCRQV0QvV2ViQ29yZVN1cHBv
cnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAgXAorICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L1F0V2Vi
UG9wdXAuY3BwIFwKICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVRdC5j
cHAgXAogICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50UXQuY3BwIFwK
ICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0y
MDksNiArMjEwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaCBcCiAgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQv
UGFnZUNsaWVudFF0LmggXAogICAgICQkUFdEL1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVn
aW4uaCBcCisgICAgJCRQV0QvV2ViQ29yZVN1cHBvcnQvUXRXZWJQb3B1cC5oIFwKICAgICAkJFBX
RC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVRdC5oIFwKICAgICAkJFBXRC9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVRdC5oIFwKICAgICAkJFBXRC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hl
Y2tlckNsaWVudFF0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuY3BwCmluZGV4IGE1MTYxMDYuLjdiOTQwMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQ
b3B1cC5jcHAKQEAgLTM3LDc4ICszNywxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVF0
RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpRdEZhbGxiYWNrV2ViUG9wdXBDb21ibyhRdEZhbGxiYWNr
V2ViUG9wdXAmIG93bmVyUG9wdXApCi0gICAgOiBtX293bmVyUG9wdXAob3duZXJQb3B1cCkKLXsK
LSAgICAvLyBJbnN0YWxsIGFuIGV2ZW50IGZpbHRlciBvbiB0aGUgdmlldyBpbnNpZGUgdGhlIGNv
bWJvIGJveCBwb3B1cCB0byBtYWtlIHN1cmUgd2Uga25vdwotICAgIC8vIHdoZW4gdGhlIHBvcHVw
IGdvdCBjbG9zZWQuIEUuZy4gUUNvbWJvQm94OjpoaWRlUG9wdXAoKSB3b24ndCBiZSBjYWxsZWQg
d2hlbiB0aGUgcG9wdXAKLSAgICAvLyBpcyBjbG9zZWQgYnkgYSBtb3VzZSB3aGVlbCBldmVudCBv
dXRzaWRlIGl0cyB3aW5kb3cuCi0gICAgdmlldygpLT5pbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7
Ci19Ci0KLXZvaWQgUXRGYWxsYmFja1dlYlBvcHVwQ29tYm86OnNob3dQb3B1cCgpCi17Ci0gICAg
UUNvbWJvQm94OjpzaG93UG9wdXAoKTsKLSAgICBtX293bmVyUG9wdXAubV9wb3B1cFZpc2libGUg
PSB0cnVlOwotfQotCi12b2lkIFF0RmFsbGJhY2tXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXAoKQot
ewotI2lmbmRlZiBRVF9OT19JTQotICAgIFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0
aW9uOjpmb2N1c1dpZGdldCgpOwotICAgIGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9
PSBRQ29tYm9Cb3g6OnZpZXcoKQotICAgICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0dHJpYnV0
ZShRdDo6V0FfSW5wdXRNZXRob2RFbmFibGVkKSkgewotICAgICAgICBRSW5wdXRDb250ZXh0KiBx
aWMgPSBhY3RpdmVGb2N1cy0+aW5wdXRDb250ZXh0KCk7Ci0gICAgICAgIGlmIChxaWMpIHsKLSAg
ICAgICAgICAgIHFpYy0+cmVzZXQoKTsKLSAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNXaWRnZXQo
MCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYgLy8gUVRfTk9fSU0KLQotICAgIFFDb21ib0Jv
eDo6aGlkZVBvcHVwKCk7Ci0KLSAgICBpZiAoIW1fb3duZXJQb3B1cC5tX3BvcHVwVmlzaWJsZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9vd25lclBvcHVwLm1fcG9wdXBWaXNpYmxlID0gZmFs
c2U7Ci0gICAgZW1pdCBtX293bmVyUG9wdXAuZGlkSGlkZSgpOwotICAgIG1fb3duZXJQb3B1cC5k
ZXN0cm95UG9wdXAoKTsKLX0KLQotYm9vbCBRdEZhbGxiYWNrV2ViUG9wdXBDb21ibzo6ZXZlbnRG
aWx0ZXIoUU9iamVjdCogd2F0Y2hlZCwgUUV2ZW50KiBldmVudCkKLXsKLSAgICBRX0FTU0VSVCh3
YXRjaGVkID09IHZpZXcoKSk7Ci0KLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlNo
b3cgJiYgIW1fb3duZXJQb3B1cC5tX3BvcHVwVmlzaWJsZSkKLSAgICAgICAgc2hvd1BvcHVwKCk7
Ci0gICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OkhpZGUgJiYgbV9vd25lclBv
cHVwLm1fcG9wdXBWaXNpYmxlKQotICAgICAgICBoaWRlUG9wdXAoKTsKLQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotLy8gUXRGYWxsYmFja1dlYlBvcHVwCi0KIFF0RmFsbGJhY2tXZWJQb3B1cDo6
UXRGYWxsYmFja1dlYlBvcHVwKGNvbnN0IENocm9tZUNsaWVudFF0KiBjaHJvbWVDbGllbnQpCi0g
ICAgOiBtX3BvcHVwVmlzaWJsZShmYWxzZSkKLSAgICAsIG1fY29tYm8oMCkKKyAgICA6IFF0V2Vi
UG9wdXAoKQogICAgICwgbV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQogewogfQogCi1RdEZh
bGxiYWNrV2ViUG9wdXA6On5RdEZhbGxiYWNrV2ViUG9wdXAoKQotewotICAgIGRlc3Ryb3lQb3B1
cCgpOwotfQotCiB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRV2ViU2VsZWN0
RGF0YSYgZGF0YSkKIHsKICAgICBpZiAoIXBhZ2VDbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZGVzdHJveVBvcHVwKCk7Ci0gICAgbV9jb21ibyA9IG5ldyBRdEZhbGxiYWNrV2ViUG9w
dXBDb21ibygqdGhpcyk7CisgICAgbV9jb21ibyA9IG5ldyBRdFdlYlBvcHVwQ29tYm8odGhpcyk7
CiAgICAgY29ubmVjdChtX2NvbWJvLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLAogICAgICAgICAg
ICAgU0xPVChhY3RpdmVDaGFuZ2VkKGludCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiAKQEAg
LTEyMywxMiArNjQsOSBAQCB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6c2hvdyhjb25zdCBRV2Vi
U2VsZWN0RGF0YSYgZGF0YSkKICAgICAgICAgbV9jb21iby0+c2V0UGFyZW50KHBhZ2VDbGllbnQo
KS0+b3duZXJXaWRnZXQoKSk7CiAgICAgICAgIG1fY29tYm8tPnNldEdlb21ldHJ5KFFSZWN0KHJl
Y3QubGVmdCgpLCByZWN0LnRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3Qud2lkdGgoKSwgbV9jb21iby0+c2l6ZUhpbnQoKS5oZWlnaHQoKSkpOwotCiAgICAgfQogCi0g
ICAgUU1vdXNlRXZlbnQgZXZlbnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpw
b3MoKSwgUXQ6OkxlZnRCdXR0b24sCi0gICAgICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0
b24sIFF0OjpOb01vZGlmaWVyKTsKLSAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9j
b21ibywgJmV2ZW50KTsKKyAgICBzaG93UG9wdXAoKTsKIH0KIAogdm9pZCBRdEZhbGxiYWNrV2Vi
UG9wdXA6OmhpZGUoKQpAQCAtMTM4LDE0ICs3Niw2IEBAIHZvaWQgUXRGYWxsYmFja1dlYlBvcHVw
OjpoaWRlKCkKICAgICAvLyBRdDo6UG9wdXAgd2luZG93IHdpbGwgaGlkZSBpdHNlbGYgb24gbW91
c2UgZXZlbnRzIG91dHNpZGUgaXRzIHdpbmRvdy4KIH0KIAotdm9pZCBRdEZhbGxiYWNrV2ViUG9w
dXA6OmRlc3Ryb3lQb3B1cCgpCi17Ci0gICAgaWYgKG1fY29tYm8pIHsKLSAgICAgICAgbV9jb21i
by0+ZGVsZXRlTGF0ZXIoKTsKLSAgICAgICAgbV9jb21ibyA9IDA7Ci0gICAgfQotfQotCiB2b2lk
IFF0RmFsbGJhY2tXZWJQb3B1cDo6cG9wdWxhdGUoY29uc3QgUVdlYlNlbGVjdERhdGEmIGRhdGEp
CiB7CiAgICAgUVN0YW5kYXJkSXRlbU1vZGVsKiBtb2RlbCA9IHFvYmplY3RfY2FzdDxRU3RhbmRh
cmRJdGVtTW9kZWwqPihtX2NvbWJvLT5tb2RlbCgpKTsKQEAgLTE4Myw2ICsxMTMsMTEgQEAgdm9p
ZCBRdEZhbGxiYWNrV2ViUG9wdXA6OnBvcHVsYXRlKGNvbnN0IFFXZWJTZWxlY3REYXRhJiBkYXRh
KQogICAgICAgICBtX2NvbWJvLT5zZXRDdXJyZW50SW5kZXgoY3VycmVudEluZGV4KTsKIH0KIAor
dm9pZCBRdEZhbGxiYWNrV2ViUG9wdXA6OmRpZEhpZGUoKQoreworICAgIGVtaXQgUVdlYlNlbGVj
dE1ldGhvZDo6ZGlkSGlkZSgpOworfQorCiB2b2lkIFF0RmFsbGJhY2tXZWJQb3B1cDo6YWN0aXZl
Q2hhbmdlZChpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4IDwgMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVwLmggYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oCmluZGV4IGEz
YmQ5MDUuLmEzN2E1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUXRGYWxsYmFja1dlYlBvcHVwLmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaApAQCAtMjEsMTAgKzIxLDkgQEAKICNkZWZpbmUgUXRG
YWxsYmFja1dlYlBvcHVwX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtLmgiCisjaW5jbHVkZSAiUXRX
ZWJQb3B1cC5oIgogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogCi0jaW5jbHVk
ZSA8UUNvbWJvQm94PgotCiAjaWZuZGVmIFFUX05PX0NPTUJPQk9YCiAKIFFUX0JFR0lOX05BTUVT
UEFDRQpAQCAtMzYsNTIgKzM1LDM5IEBAIGNsYXNzIFFXZWJQYWdlQ2xpZW50OwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDaHJvbWVDbGllbnRRdDsKLWNsYXNzIFF0RmFsbGJhY2tXZWJQ
b3B1cENvbWJvOwogCi1jbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXAgOiBwdWJsaWMgUVdlYlNlbGVj
dE1ldGhvZCB7CitjbGFzcyBRdEZhbGxiYWNrV2ViUG9wdXAgOiBwdWJsaWMgUVdlYlNlbGVjdE1l
dGhvZCwgcHVibGljIFF0V2ViUG9wdXAgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CiAgICAgUXRG
YWxsYmFja1dlYlBvcHVwKGNvbnN0IENocm9tZUNsaWVudFF0Kik7Ci0gICAgflF0RmFsbGJhY2tX
ZWJQb3B1cCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVdlYlNlbGVjdERhdGEm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwotCi0gICAgdm9pZCBkZXN0cm95UG9wdXAoKTsK
IAogICAgIHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgUVJlY3QmIHJlY3QpIHsgbV9nZW9tZXRyeSA9
IHJlY3Q7IH0KICAgICBRUmVjdCBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnk7
IH0KIAorCisgICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgUVdlYlNlbGVjdERhdGEmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGlkZSgpOworCiAgICAgdm9pZCBzZXRGb250KGNvbnN0IFFGb250JiBm
b250KSB7IG1fZm9udCA9IGZvbnQ7IH0KICAgICBRRm9udCBmb250KCkgY29uc3QgeyByZXR1cm4g
bV9mb250OyB9CiAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGRpZEhpZGUoKTsKKyAgICB2b2lkIHBy
ZXBhcmVUb1Nob3dQb3B1cCgpOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgYWN0aXZlQ2hh
bmdlZChpbnQpOwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBRdEZhbGxiYWNrV2ViUG9w
dXBDb21ibzsKLSAgICBib29sIG1fcG9wdXBWaXNpYmxlOwotICAgIFF0RmFsbGJhY2tXZWJQb3B1
cENvbWJvKiBtX2NvbWJvOwogICAgIGNvbnN0IENocm9tZUNsaWVudFF0KiBtX2Nocm9tZUNsaWVu
dDsKLSAgICBRUmVjdCBtX2dlb21ldHJ5OwogICAgIFFGb250IG1fZm9udDsKKyAgICBRUmVjdCBt
X2dlb21ldHJ5OwogCiAgICAgUVdlYlBhZ2VDbGllbnQqIHBhZ2VDbGllbnQoKSBjb25zdDsKIAog
ICAgIHZvaWQgcG9wdWxhdGUoY29uc3QgUVdlYlNlbGVjdERhdGEmKTsKIH07CiAKLWNsYXNzIFF0
RmFsbGJhY2tXZWJQb3B1cENvbWJvIDogcHVibGljIFFDb21ib0JveCB7Ci1wdWJsaWM6Ci0gICAg
UXRGYWxsYmFja1dlYlBvcHVwQ29tYm8oUXRGYWxsYmFja1dlYlBvcHVwJiBvd25lclBvcHVwKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwKCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1
cCgpOwotICAgIHZpcnR1YWwgYm9vbCBldmVudEZpbHRlcihRT2JqZWN0KiB3YXRjaGVkLCBRRXZl
bnQqIGV2ZW50KTsKLQotcHJpdmF0ZToKLSAgICBRdEZhbGxiYWNrV2ViUG9wdXAmIG1fb3duZXJQ
b3B1cDsKLX07Ci0KIH0KIAogI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0V2ViUG9wdXAuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYlBvcHVwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jZWY2MDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYlBvcHVwLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHaXJpc2ggUmFtYWtyaXNobmFuIDxnaXJpc2hAZm9yd2Fy
ZGJpYXMuaW4+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlF0V2ViUG9wdXAuaCIKKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAorCisjaW5j
bHVkZSA8UUFic3RyYWN0SXRlbVZpZXc+CisjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFHcmFwaGljc1NjZW5lPgorI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CisjaW5jbHVkZSA8
UUlucHV0Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91c2VFdmVudD4KKyNpbmNsdWRlIDxRU3RhbmRh
cmRJdGVtTW9kZWw+CisKK1F0V2ViUG9wdXBDb21ibzo6UXRXZWJQb3B1cENvbWJvKFF0V2ViUG9w
dXAqIG93bmVyUG9wdXApCisgICAgOiBtX293bmVyUG9wdXAob3duZXJQb3B1cCkKK3sKKyAgICAv
LyBJbnN0YWxsIGFuIGV2ZW50IGZpbHRlciBvbiB0aGUgdmlldyBpbnNpZGUgdGhlIGNvbWJvIGJv
eCBwb3B1cCB0byBtYWtlIHN1cmUgd2Uga25vdworICAgIC8vIHdoZW4gdGhlIHBvcHVwIGdvdCBj
bG9zZWQuIEUuZy4gUUNvbWJvQm94OjpoaWRlUG9wdXAoKSB3b24ndCBiZSBjYWxsZWQgd2hlbiB0
aGUgcG9wdXAKKyAgICAvLyBpcyBjbG9zZWQgYnkgYSBtb3VzZSB3aGVlbCBldmVudCBvdXRzaWRl
IGl0cyB3aW5kb3cuCisgICAgdmlldygpLT5pbnN0YWxsRXZlbnRGaWx0ZXIodGhpcyk7Cit9CisK
K3ZvaWQgUXRXZWJQb3B1cENvbWJvOjpzaG93UG9wdXAoKQoreworICAgIFFDb21ib0JveDo6c2hv
d1BvcHVwKCk7CisgICAgbV9vd25lclBvcHVwLT5tX3BvcHVwVmlzaWJsZSA9IHRydWU7Cit9CisK
K3ZvaWQgUXRXZWJQb3B1cENvbWJvOjpoaWRlUG9wdXAoKQoreworI2lmbmRlZiBRVF9OT19JTQor
ICAgIFFXaWRnZXQqIGFjdGl2ZUZvY3VzID0gUUFwcGxpY2F0aW9uOjpmb2N1c1dpZGdldCgpOwor
ICAgIGlmIChhY3RpdmVGb2N1cyAmJiBhY3RpdmVGb2N1cyA9PSBRQ29tYm9Cb3g6OnZpZXcoKQor
ICAgICAgICAmJiBhY3RpdmVGb2N1cy0+dGVzdEF0dHJpYnV0ZShRdDo6V0FfSW5wdXRNZXRob2RF
bmFibGVkKSkgeworICAgICAgICBRSW5wdXRDb250ZXh0KiBxaWMgPSBhY3RpdmVGb2N1cy0+aW5w
dXRDb250ZXh0KCk7CisgICAgICAgIGlmIChxaWMpIHsKKyAgICAgICAgICAgIHFpYy0+cmVzZXQo
KTsKKyAgICAgICAgICAgIHFpYy0+c2V0Rm9jdXNXaWRnZXQoMCk7CisgICAgICAgIH0KKyAgICB9
CisjZW5kaWYgLy8gUVRfTk9fSU0KKworICAgIFFDb21ib0JveDo6aGlkZVBvcHVwKCk7CisKKyAg
ICBpZiAoIW1fb3duZXJQb3B1cC0+bV9wb3B1cFZpc2libGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fb3duZXJQb3B1cC0+bV9wb3B1cFZpc2libGUgPSBmYWxzZTsKKyAgICBtX293bmVyUG9w
dXAtPmRpZEhpZGUoKTsKKyAgICBtX293bmVyUG9wdXAtPmRlc3Ryb3lQb3B1cCgpOworfQorCiti
b29sIFF0V2ViUG9wdXBDb21ibzo6ZXZlbnRGaWx0ZXIoUU9iamVjdCogd2F0Y2hlZCwgUUV2ZW50
KiBldmVudCkKK3sKKyAgICBRX0FTU0VSVCh3YXRjaGVkID09IHZpZXcoKSk7CisKKyAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBRRXZlbnQ6OlNob3cgJiYgIW1fb3duZXJQb3B1cC0+bV9wb3B1cFZp
c2libGUpCisgICAgICAgIHNob3dQb3B1cCgpOworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkg
PT0gUUV2ZW50OjpIaWRlICYmIG1fb3duZXJQb3B1cC0+bV9wb3B1cFZpc2libGUpCisgICAgICAg
IGhpZGVQb3B1cCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBRdFdlYlBvcHVwCisK
K1F0V2ViUG9wdXA6OlF0V2ViUG9wdXAoKQorICAgIDogbV9jb21ibygwKQorICAgICwgbV9wb3B1
cFZpc2libGUoZmFsc2UpCit7Cit9CisKK1F0V2ViUG9wdXA6On5RdFdlYlBvcHVwKCkKK3sKKyAg
ICBkZXN0cm95UG9wdXAoKTsKK30KKwordm9pZCBRdFdlYlBvcHVwOjpzaG93UG9wdXAoKQorewor
ICAgIGlmICghbV9jb21ibykKKyAgICAgICAgcmV0dXJuOworCisgICAgUU1vdXNlRXZlbnQgZXZl
bnQoUUV2ZW50OjpNb3VzZUJ1dHRvblByZXNzLCBRQ3Vyc29yOjpwb3MoKSwgUXQ6OkxlZnRCdXR0
b24sCisgICAgICAgICAgICAgICAgICAgICAgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVy
KTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQobV9jb21ibywgJmV2ZW50KTsKK30K
Kwordm9pZCBRdFdlYlBvcHVwOjpkZXN0cm95UG9wdXAoKQoreworICAgIGlmIChtX2NvbWJvKSB7
CisgICAgICAgIG1fY29tYm8tPmRlbGV0ZUxhdGVyKCk7CisgICAgICAgIG1fY29tYm8gPSAwOwor
ICAgIH0KK30KKworI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0V2ViUG9wdXAuaCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUXRXZWJQb3B1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjY5MDNiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1F0V2ViUG9wdXAuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKyNpZm5kZWYgUXRXZWJQb3B1cF9oCisjZGVmaW5lIFF0V2ViUG9wdXBfaAor
CisjaW5jbHVkZSAiUGxhdGZvcm0uaCIKKworI2luY2x1ZGUgPFFDb21ib0JveD4KKworI2lmbmRl
ZiBRVF9OT19DT01CT0JPWAorCitjbGFzcyBRdFdlYlBvcHVwQ29tYm87CisKK2NsYXNzIFF0V2Vi
UG9wdXAgeworcHVibGljOgorICAgIFF0V2ViUG9wdXAoKTsKKyAgICB2aXJ0dWFsIH5RdFdlYlBv
cHVwKCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkSGlkZSgpID0gMDsKKwor
ICAgIHZvaWQgc2hvd1BvcHVwKCk7CisgICAgdm9pZCBkZXN0cm95UG9wdXAoKTsKKworICAgIFF0
V2ViUG9wdXBDb21ibyogbV9jb21ibzsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUXRX
ZWJQb3B1cENvbWJvOworICAgIGJvb2wgbV9wb3B1cFZpc2libGU7Cit9OworCitjbGFzcyBRdFdl
YlBvcHVwQ29tYm8gOiBwdWJsaWMgUUNvbWJvQm94IHsKK3B1YmxpYzoKKyAgICBRdFdlYlBvcHVw
Q29tYm8oUXRXZWJQb3B1cCogb3duZXJQb3B1cCk7CisgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1
cCgpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXAoKTsKKyAgICB2aXJ0dWFsIGJvb2wgZXZl
bnRGaWx0ZXIoUU9iamVjdCosIFFFdmVudCopOworCitwcml2YXRlOgorICAgIFF0V2ViUG9wdXAq
IG1fb3duZXJQb3B1cDsKK307CisKKyNlbmRpZiAvLyBRVF9OT19DT01CT0JPWAorCisjZW5kaWYg
Ly8gUXRGYWxsYmFja1dlYlBvcHVwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MjZhYjEzLi5mMDJhODdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMjUgIElnb3IgT2xpdmVpcmEgIDxp
Z29yLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBDcmVhdGluZyB3ZWJr
aXQyIHBvcHVwIG1lbnUgaG9va3MgYW5kIGFkZGluZyBwb3B1cCBtZW51cyB0byBNaW5pQnJvd3Nl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTkx
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltcGxlIFF0V2ViS2l0IFdlYktp
dDIgcG9wdXAgbWVudSBpbiBEZXNrdG9wV2ViVmlldy4gVGhpcworICAgICAgICBpcyBkb25lIHJl
dXNpbmcgV2ViS2l0MSBRdFdlYlBvcHVwIGNvZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UUNvbWJvQm94V2ViUG9wdXBN
ZW51OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpRQ29tYm9Cb3hX
ZWJQb3B1cE1lbnU6On5RQ29tYm9Cb3hXZWJQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpR
Q29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUpOgorCisgICAgICAgIFFFdmVudExv
b3A6ZXhlYygpIGlzIHVzZWQgdG8gYmxvY2sgdGhlIG1haW4gZXZlbnQgbG9vcCBhbmQgc3RhcnQg
YSBsb2NhbCBldmVudCBsb29wLgorICAgICAgICBJdCBpcyBuZWVkZWQgYmVjYXVzZSBXZWJQYWdl
UHJveHkgZXhwZWN0cyB0aGUgbWVudSBwb3B1cCB0byBydW4gaW4gYSBuZXN0ZWQgcnVuIGxvb3As
IAorICAgICAgICBzaW5jZSBpdCBpbnZhbGlkYXRlcyB0aGUgbWVudSByaWdodCBhZnRlciBjYWxs
aW5nIFdlYlBvcHVwTWVudVByb3h5OjpzaG93UG9wdXBNZW51KCkuCisKKyAgICAgICAgKFdlYktp
dDo6UUNvbWJvQm94V2ViUG9wdXBNZW51OjpoaWRlUG9wdXBNZW51KToKKworICAgICAgICBXaGVu
IHRoZSBDb21ib0JveCBoaWRlcyB0aGUgcG9wdXAgbWVudSB3ZSBuZWVkIHRvIG5vdGlmeSBXZWJQ
cm9jZXNzLiBJdCBpcyBkb25lIHNlbmRpbmcgdG8KKyAgICAgICAgV2ViUHJvY2VzcyB0aGUgbWVz
c2FnZSB0aGF0IHRoZSBlbGVtZW50IC0xIHdhcyBzZWxlY3RlZCBpbiB0aGUgUG9wdXBNZW51Lgor
CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVudTo6ZG9TZXRJbmRleCk6CisK
KyAgICAgICAgSWYgdGhlIHBvcHVwIG1lbnUgaXMgY2xvc2VkIHdlIGNhbiB1bmxvY2sgdGhlIG1h
aW4gZXZlbnQgbG9vcCB0YWxraW5nIHRvIGxvY2FsIGV2ZW50IHRvCisgICAgICAgIGV4aXQgbm9y
bWFsbHkgdXNpbmcgUUV2ZW50TG9vcDo6cXVpdCgpCisKKyAgICAgICAgKFdlYktpdDo6UUNvbWJv
Qm94V2ViUG9wdXBNZW51OjpzZXRJbmRleCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1FDb21i
b0JveFdlYlBvcHVwTWVudVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpRQ29tYm9C
b3hXZWJQb3B1cE1lbnU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBv
cHVwTWVudTo6ZGlkSGlkZSk6CisgICAgICAgIChXZWJLaXQ6OlFDb21ib0JveFdlYlBvcHVwTWVu
dTo6YWN0aXZlQ2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmNwcDoKKyAgICAgICAgKFFEZXNrdG9wV2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1l
bnVQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5Lmg6
CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMDgtMjMgIEpvY2VseW4gVHVyY290dGUg
IDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gRHJpdmUg
dGlsaW5nIGZyb20gdGhlIFdlYlByb2Nlc3MgYW5kIHJldXNlIFRpbGVkQmFja2luZ1N0b3JlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBvcHVw
TWVudVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQ
b3B1cE1lbnVQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdk
NzI1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29t
Ym9Cb3hXZWJQb3B1cE1lbnVQcm94eS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuaCIKKworI2lmbmRlZiBRVF9OT19DT01CT0JPWAorCisjaW5jbHVkZSAiUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCisKKyNpbmNsdWRl
IDxRQWJzdHJhY3RJdGVtVmlldz4KKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8
UUlucHV0Q29udGV4dD4KKyNpbmNsdWRlIDxRTW91c2VFdmVudD4KKyNpbmNsdWRlIDxRU3RhbmRh
cmRJdGVtTW9kZWw+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUUNvbWJvQm94V2ViUG9wdXBNZW51OjpRQ29tYm9Cb3hXZWJQb3B1cE1lbnUoQ2xp
ZW50KiBjbGllbnQsIFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFdlYlBvcHVwTWVudVByb3h5KGNs
aWVudCkKKyAgICAsIFF0V2ViUG9wdXAoKQorICAgICwgbV9ldmVudExvb3AobmV3IFFFdmVudExv
b3AodGhpcykpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCisgICAgLCBtX2luZGV4KC0xKQorewor
ICAgIG1fdGltZXIuc2V0U2luZ2xlU2hvdCh0cnVlKTsKKyAgICBjb25uZWN0KCZtX3RpbWVyLCBT
SUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChkb1NldEluZGV4KCkpKTsKK30KKworUUNvbWJv
Qm94V2ViUG9wdXBNZW51Ojp+UUNvbWJvQm94V2ViUG9wdXBNZW51KCkKK3sKKyAgICBkZXN0cm95
UG9wdXAoKTsKK30KKwordm9pZCBRQ29tYm9Cb3hXZWJQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
Cit7CisgICAgaWYgKCFtX3BhcmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb21ibyA9
IG5ldyBRdFdlYlBvcHVwQ29tYm8odGhpcyk7CisgICAgbV9jb21iby0+c2V0UGFyZW50KG1fcGFy
ZW50KTsKKyAgICBtX2NvbWJvLT5zZXRHZW9tZXRyeShyZWN0KTsKKyAgICAKKyAgICBjb25uZWN0
KG1fY29tYm8sIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNMT1QoYWN0aXZlQ2hhbmdl
ZChpbnQpKSk7CisKKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwqIG1vZGVsID0gcW9iamVjdF9jYXN0
PFFTdGFuZGFyZEl0ZW1Nb2RlbCo+KG1fY29tYm8tPm1vZGVsKCkpOworICAgIFFfQVNTRVJUKG1v
ZGVsKTsKKworICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5zaXplKCk7ICsr
aW5kZXgpIHsKKyAgICAgICAgaWYgKGl0ZW1zW2luZGV4XS5tX3R5cGUgPT0gV2ViS2l0OjpXZWJQ
b3B1cEl0ZW06OlNlcGFyYXRvcikKKyAgICAgICAgICAgIG1fY29tYm8tPmluc2VydFNlcGFyYXRv
cihpbmRleCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9jb21iby0+aW5zZXJ0SXRl
bShpbmRleCwgaXRlbXNbaW5kZXhdLm1fdGV4dCk7CisgICAgICAgICAgICBtb2RlbC0+aXRlbShp
bmRleCktPnNldEVuYWJsZWQoaXRlbXNbaW5kZXhdLm1faXNFbmFibGVkKTsKKyNpZm5kZWYgUVRf
Tk9fVE9PTFRJUAorICAgICAgICAgICAgbW9kZWwtPml0ZW0oaW5kZXgpLT5zZXRUb29sVGlwKGl0
ZW1zW2luZGV4XS5tX3Rvb2xUaXApOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
X2NvbWJvLT5zZXRDdXJyZW50SW5kZXgoc2VsZWN0ZWRJbmRleCk7CisKKyAgICBzaG93UG9wdXAo
KTsKKyAgICBtX2V2ZW50TG9vcC0+ZXhlYygpOworfQorCit2b2lkIFFDb21ib0JveFdlYlBvcHVw
TWVudTo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgZGVzdHJveVBvcHVwKCk7Cit9CisKK3ZvaWQg
UUNvbWJvQm94V2ViUG9wdXBNZW51Ojpkb1NldEluZGV4KCkgCit7CisgICAgaWYgKG1faW5kZXgg
PT0gLTEpCisgICAgICAgIG1fZXZlbnRMb29wLT5xdWl0KCk7CisKKyAgICBtX2NsaWVudC0+dmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG1faW5kZXgpOyAKK30KKwordm9pZCBRQ29tYm9C
b3hXZWJQb3B1cE1lbnU6OnNldEluZGV4KGludCBpbmRleCkKK3sKKyAgICBtX2luZGV4ID0gaW5k
ZXg7CisgICAgbV90aW1lci5zdGFydCgwKTsKK30KKworfQorCisjaW5jbHVkZSAibW9jX1FDb21i
b0JveFdlYlBvcHVwTWVudVByb3h5LmNwcCIKKworI2VuZGlmIC8vIFFUX05PX0NPTUJPQk9YCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBN
ZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RQ29tYm9Cb3hXZWJQb3B1
cE1lbnVQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNDk0ZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUUNvbWJvQm94
V2ViUG9wdXBNZW51UHJveHkuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNp
Zm5kZWYgUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHlfaAorI2RlZmluZSBRQ29tYm9Cb3hXZWJQ
b3B1cE1lbnVQcm94eV9oCisKKyNpbmNsdWRlICJRdFdlYlBvcHVwLmgiCisjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51UHJveHkuaCIKKyNpbmNsdWRlIDxQYXNzT3duUHRyLmg+CisKKyNpbmNsdWRlIDxR
dENvcmUvUUV2ZW50TG9vcD4KKyNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDxR
dENvcmUvUVRpbWVyPgorI2luY2x1ZGUgPFF0R3VpL1FDb21ib0JveD4KKworI2lmbmRlZiBRVF9O
T19DT01CT0JPWAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUUNvbWJvQm94V2ViUG9w
dXBNZW51IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSwgcHVibGlj
IFF0V2ViUG9wdXAgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UUNvbWJvQm94V2ViUG9wdXBNZW51PiBjcmVhdGUoQ2xpZW50KiBjbGllbnQsIFFXaWRnZXQq
IHdpZGdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUUNvbWJvQm94V2Vi
UG9wdXBNZW51KGNsaWVudCwgd2lkZ2V0KSk7CisgICAgfQorICAgIH5RQ29tYm9Cb3hXZWJQb3B1
cE1lbnUoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwg
aW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgp
OworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgZGlkSGlkZSgpIHsgc2V0SW5kZXgoLTEpOyB9
CisKKyAgICB2b2lkIGRvU2V0SW5kZXgoKTsKKyAgICB2b2lkIGFjdGl2ZUNoYW5nZWQoaW50IGlu
ZGV4KSB7IHNldEluZGV4KGluZGV4KTsgfQorCitwcml2YXRlOgorICAgIFFDb21ib0JveFdlYlBv
cHVwTWVudShDbGllbnQqLCBRV2lkZ2V0Kik7CisKKyAgICBRRXZlbnRMb29wICptX2V2ZW50TG9v
cDsKKyAgICBRV2lkZ2V0KiBtX3BhcmVudDsKKyAgICBpbnQgbV9pbmRleDsKKyAgICBRVGltZXIg
bV90aW1lcjsKKworICAgIHZvaWQgc2V0SW5kZXgoaW50KTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUVRfTk9fQ09NQk9CT1gKKworI2VuZGlmIC8vIFBvcHVwTWVu
dV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJw
YWdlcHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmNwcAppbmRleCA1ZmNmZWRkLi5kMWE0MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5jcHAKQEAgLTE4LDE1ICsx
OCwxOCBAQAogICoKICAqLwogCi0jaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKICNpbmNs
dWRlICJxZGVza3RvcHdlYnBhZ2Vwcm94eS5oIgorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5o
IgorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eUltcGwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlFDb21ib0JveFdlYlBvcHVwTWVudVBy
b3h5LmgiCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFFdmVudD4KICNpbmNs
dWRlIDxRR3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzV2lk
Z2V0PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAKQEAgLTIyNSwz
ICsyMjgsMTAgQEAgdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudChRVGltZXJF
dmVudCogZXYpCiAgICAgZWxzZQogICAgICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2KTsKIH0K
KworUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBRRGVza3RvcFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlUG9wdXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UpCit7
CisgICAgUVdpZGdldCogd2lkZ2V0ID0gc3RhdGljX2Nhc3Q8UURlc2t0b3BXZWJWaWV3UHJpdmF0
ZSo+KG1fdmlld0ludGVyZmFjZSktPnEtPmNhbnZhcygpOyAKKyAgICByZXR1cm4gUUNvbWJvQm94
V2ViUG9wdXBNZW51OjpjcmVhdGUocGFnZSwgd2lkZ2V0KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuaAppbmRleCA0ODM1YjU3
Li4zNmUzZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0
b3B3ZWJwYWdlcHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0
b3B3ZWJwYWdlcHJveHkuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6
OldlYlBhZ2VQcm94eSopOworCiAgICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChRR3JhcGhp
Y3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChRR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwppbmRleCBkMGJmZmFmLi4z
MjNiOGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnBybwpAQCAtMjAsNiArMjAsMTIgQEAgUVQgKz0gZGVjbGFyYXRp
dmUKICMgQnVpbGQgYm90aCBkZWJ1ZyBhbmQgcmVsZWFzZSBjb25maWd1cmF0aW9ucwogbWFjOiBD
T05GSUcgKz0gYnVpbGRfYWxsCiAKK1dFQktJVDFfSEVBREVSU19TSEFSRURfV0lUSF9XRUJLSVQy
PSBcCisgICAgJCRQV0QvLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0V2ViUG9wdXAuaAor
CitXRUJLSVQxX1NPVVJDRVNfU0hBUkVEX1dJVEhfV0VCS0lUMiA9IFwKKyAgICAkJFBXRC8uLi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRXZWJQb3B1cC5jcHAKKwogV0VCS0lUMl9HRU5FUkFU
RURfSEVBREVSUyA9IFwKICAgICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJDRVNfRElSL0F1dGhl
bnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXAogICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09V
UkNFU19ESVIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggXApAQCAtMjM4LDYgKzI0NCw3IEBAIEhF
QURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmggXAogICAgIFVJUHJvY2Vz
cy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1BvbGljeUludGVy
ZmFjZS5oIFwKKyAgICBVSVByb2Nlc3MvcXQvUUNvbWJvQm94V2ViUG9wdXBNZW51UHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGluY2hH
ZXN0dXJlUmVjb2duaXplci5oIFwKQEAgLTMyMSw3ICszMjgsOCBAQCBIRUFERVJTICs9IFwKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUdyb3VwUHJveHkuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggXAotICAg
ICQkV0VCS0lUMl9HRU5FUkFURURfSEVBREVSUworICAgICQkV0VCS0lUMl9HRU5FUkFURURfSEVB
REVSUyBcCisgICAgJCRXRUJLSVQxX0hFQURFUlNfU0hBUkVEX1dJVEhfV0VCS0lUMgogCiBTT1VS
Q0VTICs9IFwKICAgICBQbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBcCkBAIC00
NzEsNiArNDc5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQv
VG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1FDb21ib0JveFdlYlBv
cHVwTWVudVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIu
Y3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAgXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKQEAgLTU3OCw3ICs1
ODcsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL3F0
L1dlYlByb2Nlc3NRdC5jcHAgXAotICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFUworICAg
ICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNFUyBcCisgICAgJCRXRUJLSVQxX1NPVVJDRVNfU0hB
UkVEX1dJVEhfV0VCS0lUMgogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfRVZFTlRT
PTEpIHsKICAgICBIRUFERVJTICs9IFwKLS0gCjEuNy40LjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>