<?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>70315</bug_id>
          
          <creation_ts>2011-10-18 02:19:39 -0700</creation_ts>
          <short_desc>[Qt][WK2] Rewrite MiniBrowser in QML</short_desc>
          <delta_ts>2011-11-09 10:49:30 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>70525</dependson>
    
    <dependson>70529</dependson>
    
    <dependson>70537</dependson>
    
    <dependson>70693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zeno Albisser">zeno</reporter>
          <assigned_to name="Zeno Albisser">zeno</assigned_to>
          <cc>gopal.1.raghavan</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>s.mathur</cc>
    
    <cc>vestbo</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485925</commentid>
    <comment_count>0</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-18 02:19:39 -0700</bug_when>
    <thetext>The current MiniBrowser is not working properly on most platforms.
On Linux the address bar is usually not responsive and on Mac no content is being displayed at all.
The reason for that are mostly the refactorings in Qt5.
We should therefore rewrite the MiniBrowser and use the latest technology provided in Qt5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486696</commentid>
    <comment_count>1</comment_count>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2011-10-19 05:22:11 -0700</bug_when>
    <thetext>duplicate of https://bugs.webkit.org/show_bug.cgi?id=70368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487676</commentid>
    <comment_count>2</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 10:05:23 -0700</bug_when>
    <thetext>*** Bug 70368 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487696</commentid>
    <comment_count>3</comment_count>
      <attachid>111805</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 10:29:50 -0700</bug_when>
    <thetext>Created attachment 111805
Patch to remove QAction.

This is the first in a series of patches to rewrite QtWebKit MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487820</commentid>
    <comment_count>4</comment_count>
      <attachid>111836</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 13:22:05 -0700</bug_when>
    <thetext>Created attachment 111836
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487824</commentid>
    <comment_count>5</comment_count>
      <attachid>111837</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-20 13:24:02 -0700</bug_when>
    <thetext>Created attachment 111837
patch for review.

fixed ChangeLog diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488259</commentid>
    <comment_count>6</comment_count>
      <attachid>111837</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-10-21 01:37:50 -0700</bug_when>
    <thetext>Comment on attachment 111837
patch for review.

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

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:334
&gt; +    forceActiveFocus();

This change should probably be landed by its own, in both the touch and desktop webview, with an explaination of the reasoning.

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:47
&gt; +    rootObject()-&gt;setProperty(&quot;printLoadedUrls&quot;, options-&gt;printLoadedUrls);

We probably want to expose one single &quot;options&quot; QObject so we can easily add more options.

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:152
&gt; +        qmlRegisterType&lt;QTouchWebView&gt;(&quot;QtQuick&quot;, 2, 0, &quot;BrowserView&quot;);
&gt; +    } else
&gt; +        qmlRegisterType&lt;QDesktopWebView&gt;(&quot;QtQuick&quot;, 2, 0, &quot;BrowserView&quot;);

We should use the public QML apis, not the C++ APIs.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:28
&gt; +        anchors.top: parent.top
&gt; +        anchors.left: parent.left
&gt; +        anchors.right: parent.right

Style: whenever there&apos;s more than one property set, used grouped syntax anchors { }

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:37
&gt; +                width:  height

Style, no aligning of variables (remove extra space)

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:63
&gt; +                width:  height

style

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:88
&gt; +                height: navigationBar.height-2

Style, spacing, same rules as c++

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:94
&gt; +                    source: navigation.canStop ? &quot;../icons/stop.png&quot; : &quot;../icons/refresh.png&quot;

You don&apos;t need ../ here, the icon should be available through qrc as &quot;icons/stop.png&quot;

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:116
&gt; +            anchors.left: controlsRow.right
&gt; +            anchors.right: parent.right
&gt; +            anchors.margins: 2
&gt; +            anchors.verticalCenter: parent.verticalCenter

Style: whenever there&apos;s more than one property set, used grouped syntax anchors { }

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:117
&gt; +            height: navigationBar.height-4

Spacing

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:123
&gt; +                width: parent.width/100*browserView.loadProgress

Spacing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488455</commentid>
    <comment_count>7</comment_count>
      <attachid>111980</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-21 10:20:10 -0700</bug_when>
    <thetext>Created attachment 111980
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488661</commentid>
    <comment_count>8</comment_count>
      <attachid>111980</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-21 14:27:30 -0700</bug_when>
    <thetext>Comment on attachment 111980
patch for review.

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

&gt; Source/WebKit2/ChangeLog:6
&gt; +        Add a first QML based implementation of MiniBrowser.

Bit weird English. Add the first QML based implementation of MiniBrowser

&gt; Tools/ChangeLog:6
&gt; +
&gt; +

remove double newline

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:64
&gt; +{
&gt; +    QObject* webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QDesktopWebView*&gt;();
&gt; +    if (!webView)
&gt; +        webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QTouchWebView*&gt;();
&gt; +    return webView;
&gt; +}

I guess a comment would be good here. Why would there not always be a desktop view?

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:87
&gt; +        QMetaObject::invokeMethod(rootObject(), &quot;setFocusToAddressBar&quot;, Qt::DirectConnection);

focusAddressBar?

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:48
&gt; +    WindowOptions(QObject * parent = 0)

Style

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:50
&gt; +        , m_printLoadedUrls(false)

I would call it printUrlsLoaded.... but maybe that is just me

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:56
&gt; +    void setPrintLoadedUrls(bool p) { m_printLoadedUrls = p; }

I think something like &apos;enabled&apos; would serve better than p. It is not obvious what p means.

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:5
&gt; +    //do not define anchors or a initialisize here! This would messup with QSGViewSizeRootObjetToView.

// Do ...

I am not faminilar with the word initialisize, but I guess you mean &apos;an initializer&apos; . There is also missing a C in Object (QSGView....)

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:167
&gt; +        source: options.useTouchWebView ? &quot;TouchView.qml&quot; : &quot;DesktopView.qml&quot;

Ah that is where it comes from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488666</commentid>
    <comment_count>9</comment_count>
      <attachid>111980</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-10-21 14:31:53 -0700</bug_when>
    <thetext>Comment on attachment 111980
patch for review.

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

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:37
&gt; +#include &lt;QtDeclarative/QDeclarativeEngine&gt;

#include &lt;QDeclarativeEngine&gt; should be enough

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:40
&gt; +Q_DECLARE_METATYPE(QDesktopWebView*)
&gt; +Q_DECLARE_METATYPE(QTouchWebView*)

Do we still need these?

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:90
&gt; +    if ((event-&gt;modifiers() == Qt::ControlModifier &amp;&amp; event-&gt;key() == Qt::Key_L)
&gt; +        || event-&gt;key() == Qt::Key_F6) {
&gt; +        QMetaObject::invokeMethod(rootObject(), &quot;setFocusToAddressBar&quot;, Qt::DirectConnection);
&gt; +        event-&gt;accept();
&gt; +    } else
&gt; +        QSGView::keyPressEvent(event);

Can we do this using http://doc.qt.nokia.com/4.7-snapshot/qml-keys.html ?

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:76
&gt; +    qmlRegisterType&lt;QWebNavigationController&gt;();

We don&apos;t register this in the qml plugin?

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:48
&gt; +    WindowOptions(QObject * parent = 0)

style: star

&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:61
&gt; +    void setPrintLoadedUrls(bool p) { m_printLoadedUrls = p; }
&gt; +    bool printLoadedUrls() const { return m_printLoadedUrls; }
&gt; +    void setUseTouchWebView(bool t) { m_useTouchWebView = t; }
&gt; +    bool useTouchWebView() const { return m_useTouchWebView; }
&gt; +    void setStartMaximized(bool m) { m_startMaximized = m; }
&gt; +    bool startMaximized() const { return m_startMaximized; }

use words, not single characters for the arguments

&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:5
&gt; +    //do not define anchors or a initialisize here! This would messup with QSGViewSizeRootObjetToView.

initial size, &quot;mess up&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489018</commentid>
    <comment_count>10</comment_count>
      <attachid>112110</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-23 06:58:26 -0700</bug_when>
    <thetext>Created attachment 112110
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489019</commentid>
    <comment_count>11</comment_count>
      <attachid>111980</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-23 07:09:56 -0700</bug_when>
    <thetext>Comment on attachment 111980
patch for review.

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

&gt;&gt; Source/WebKit2/ChangeLog:6
&gt;&gt; +        Add a first QML based implementation of MiniBrowser.
&gt; 
&gt; Bit weird English. Add the first QML based implementation of MiniBrowser

fixed.

&gt;&gt; Tools/ChangeLog:6
&gt;&gt; +
&gt; 
&gt; remove double newline

done.

&gt;&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:37
&gt;&gt; +#include &lt;QtDeclarative/QDeclarativeEngine&gt;
&gt; 
&gt; #include &lt;QDeclarativeEngine&gt; should be enough

yes, right.

&gt;&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:40
&gt;&gt; +Q_DECLARE_METATYPE(QTouchWebView*)
&gt; 
&gt; Do we still need these?

Yes we still need those to be able to access the webView, that was created in QML, in C++ code. But i put these lines into the respective headers and made it a separate commit. https://bugs.webkit.org/show_bug.cgi?id=70693

&gt;&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:90
&gt;&gt; +        QSGView::keyPressEvent(event);
&gt; 
&gt; Can we do this using http://doc.qt.nokia.com/4.7-snapshot/qml-keys.html ?

Yes we can. But we need a separate Keys handler in the TextInput element to allow for a consistent behavior. - done.

&gt;&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:76
&gt;&gt; +    qmlRegisterType&lt;QWebNavigationController&gt;();
&gt; 
&gt; We don&apos;t register this in the qml plugin?

Yes we do. - removed.

&gt;&gt;&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:48
&gt;&gt;&gt; +    WindowOptions(QObject * parent = 0)
&gt;&gt; 
&gt;&gt; Style
&gt; 
&gt; style: star

done.

&gt;&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:50
&gt;&gt; +        , m_printLoadedUrls(false)
&gt; 
&gt; I would call it printUrlsLoaded.... but maybe that is just me

sounds a bit synthetic to me... i would prefer to leave it the way it is, unless there is a rule in coding style that applies or something similar.

&gt;&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:56
&gt;&gt; +    void setPrintLoadedUrls(bool p) { m_printLoadedUrls = p; }
&gt; 
&gt; I think something like &apos;enabled&apos; would serve better than p. It is not obvious what p means.

done

&gt;&gt; Tools/MiniBrowser/qt/MiniBrowserApplication.h:61
&gt;&gt; +    bool startMaximized() const { return m_startMaximized; }
&gt; 
&gt; use words, not single characters for the arguments

yes - done. ;-)

&gt;&gt;&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:5
&gt;&gt;&gt; +    //do not define anchors or a initialisize here! This would messup with QSGViewSizeRootObjetToView.
&gt;&gt; 
&gt;&gt; // Do ...
&gt;&gt; 
&gt;&gt; I am not faminilar with the word initialisize, but I guess you mean &apos;an initializer&apos; . There is also missing a C in Object (QSGView....)
&gt; 
&gt; initial size, &quot;mess up&quot;.

Okay... that was really messed up. I agree. - fixed.

&gt;&gt; Tools/MiniBrowser/qt/qml/BrowserWindow.qml:167
&gt;&gt; +        source: options.useTouchWebView ? &quot;TouchView.qml&quot; : &quot;DesktopView.qml&quot;
&gt; 
&gt; Ah that is where it comes from.

Yes it is. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489060</commentid>
    <comment_count>12</comment_count>
      <attachid>112110</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2011-10-23 12:53:29 -0700</bug_when>
    <thetext>Comment on attachment 112110
patch for review.

Good stuf! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489178</commentid>
    <comment_count>13</comment_count>
      <attachid>111805</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-23 22:29:12 -0700</bug_when>
    <thetext>Comment on attachment 111805
Patch to remove QAction.

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

&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:41
&gt; +    Q_PROPERTY(bool canReload READ canReload NOTIFY navigationStateChanged)

FINAL is still valid here. This class will never be subclassed.

&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:-51
&gt; -    QAction* navigationAction(QtWebKit::NavigationAction which) const;

If you remove this C++ API then you also want to move the QtWebKit namespace private as it is the only place we use it in a public header.

&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:52
&gt; +    Q_INVOKABLE void goBack();

There is no need for Q_INVOKABLE. slots works out of the box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489258</commentid>
    <comment_count>14</comment_count>
      <attachid>111805</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-24 02:58:06 -0700</bug_when>
    <thetext>Comment on attachment 111805
Patch to remove QAction.

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:41
&gt;&gt; +    Q_PROPERTY(bool canReload READ canReload NOTIFY navigationStateChanged)
&gt; 
&gt; FINAL is still valid here. This class will never be subclassed.

Changed that.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:-51
&gt;&gt; -    QAction* navigationAction(QtWebKit::NavigationAction which) const;
&gt; 
&gt; If you remove this C++ API then you also want to move the QtWebKit namespace private as it is the only place we use it in a public header.

good point. :)

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwebnavigationcontroller.h:52
&gt;&gt; +    Q_INVOKABLE void goBack();
&gt; 
&gt; There is no need for Q_INVOKABLE. slots works out of the box.

fixed.

There is a separate bug for this refactoring now. -&gt; https://bugs.webkit.org/show_bug.cgi?id=70525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489274</commentid>
    <comment_count>15</comment_count>
      <attachid>112172</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-24 04:17:11 -0700</bug_when>
    <thetext>Created attachment 112172
patch for landing. - subordinated patches (tasks that are blocking this task) should be merged first!

This patch also includes the binary diff of the icons used for MiniBrowser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489523</commentid>
    <comment_count>16</comment_count>
      <attachid>112172</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-10-24 12:19:06 -0700</bug_when>
    <thetext>Comment on attachment 112172
patch for landing. - subordinated patches (tasks that are blocking this task) should be merged first!

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

&gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:67
&gt; +QObject* BrowserWindow::webView() const
&gt; +{
&gt; +    QObject* webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QDesktopWebView*&gt;();
&gt; +    // The webView is created in QML, therefore it might not exist yet.
&gt; +    if (!webView)
&gt; +        webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QTouchWebView*&gt;();
&gt; +    return webView;
&gt; +}

I don&apos;t get this. If the view doesn&apos;t exist when this is called than you don&apos;t know whether it is the desktop or the touch view, do you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489633</commentid>
    <comment_count>17</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-24 14:14:30 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 112172 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112172&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:67
&gt; &gt; +QObject* BrowserWindow::webView() const
&gt; &gt; +{
&gt; &gt; +    QObject* webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QDesktopWebView*&gt;();
&gt; &gt; +    // The webView is created in QML, therefore it might not exist yet.
&gt; &gt; +    if (!webView)
&gt; &gt; +        webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QTouchWebView*&gt;();
&gt; &gt; +    return webView;
&gt; &gt; +}
&gt; 
&gt; I don&apos;t get this. If the view doesn&apos;t exist when this is called than you don&apos;t know whether it is the desktop or the touch view, do you?

Well, you can&apos;t really know of which type an inexistent object is. So... no.
But let&apos;s go it through: In case there has no view been created so far. The porperty(&quot;webView) will return an invalid QVariant. Therfore the value function will not be able to convert to the required type and return a default constructed pointer. - So the return value of webView() will be a nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489641</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-24 14:25:52 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 112172 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112172&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/MiniBrowser/qt/BrowserWindow.cpp:67
&gt; &gt; &gt; +QObject* BrowserWindow::webView() const
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    QObject* webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QDesktopWebView*&gt;();
&gt; &gt; &gt; +    // The webView is created in QML, therefore it might not exist yet.
&gt; &gt; &gt; +    if (!webView)
&gt; &gt; &gt; +        webView = rootObject()-&gt;property(&quot;webView&quot;).value&lt;QTouchWebView*&gt;();
&gt; &gt; &gt; +    return webView;
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; I don&apos;t get this. If the view doesn&apos;t exist when this is called than you don&apos;t know whether it is the desktop or the touch view, do you?
&gt; 
&gt; Well, you can&apos;t really know of which type an inexistent object is. So... no.
&gt; But let&apos;s go it through: In case there has no view been created so far. The porperty(&quot;webView) will return an invalid QVariant. Therfore the value function will not be able to convert to the required type and return a default constructed pointer. - So the return value of webView() will be a nullptr.

We could make the code more clear:

QObject* BrowserWindow::webView() const {
{
    QVariant view = rootObject()-&gt;property(&quot;webView&quot;);

    // The view is either a QDesktopWebView or a QTouchWebView, depending on how MiniBrowser was started.
    if (view.canConvert&lt;QDesktopWebView&gt;())
         return view.value&lt;QDesktopWebView&gt;();
    else
         return view.value&lt;QTouchWebView&gt;();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490008</commentid>
    <comment_count>19</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-25 06:45:51 -0700</bug_when>
    <thetext>*** Bug 69258 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490055</commentid>
    <comment_count>20</comment_count>
      <attachid>112341</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2011-10-25 08:43:19 -0700</bug_when>
    <thetext>Created attachment 112341
patch for landing. - Adding a temporary solution for TouchWebView.

Simon: I fixed the issue as discussed and amended the existing patch accordingly. Could you please commit all the changes in one go? - Thanks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490664</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-10-26 01:30:14 -0700</bug_when>
    <thetext>Committed r98450: &lt;http://trac.webkit.org/changeset/98450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111805</attachid>
            <date>2011-10-20 10:29:50 -0700</date>
            <delta_ts>2011-10-24 02:58:06 -0700</delta_ts>
            <desc>Patch to remove QAction.</desc>
            <filename>70315_20111020-192623.patch</filename>
            <type>text/plain</type>
            <size>30031</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBjZjhjMmQwLi41MzgyYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcg
QEAKKzIwMTEtMTAtMjAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
KworICAgICAgICBbUXRdW1dLMl0gUmV3cml0ZSBNaW5pQnJvd3NlciBpbiBRTUwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzE1CisKKyAgICAgICAg
SW4gb3JkZXIgdG8gcmV3cml0ZSBNaW5pQnJvd3NlciBpbiBRTUwgd2UgbmVlZCBhIHN1aXRhYmxl
CisgICAgICAgIG1lY2hhbmlzbSBmb3IgdHJpZ2dlcmluZyBuYXZpZ2F0aW9uIGFjdGlvbnMuCisg
ICAgICAgIER1ZSB0byB0aGUgUXRXaWRnZXRzIGRlcGVuZGVuY3kgb2YgUUFjdGlvbiB0aGUgY3Vy
cmVudAorICAgICAgICBzb2x1dGlvbiBpcyBub3Qgc3VpdGFibGUgYW55bW9yZS4gVGhlcmVmb3Jl
IHdlIGludHJvZHVjZQorICAgICAgICBpbnZva2FibGUgbWV0aG9kcyBhbmQgZXhwb3J0IHByb3Bl
cnRpZXMgaW4gUVdlYk5hdmlnYXRpb25Db250cm9sbGVyLgorCisgICAgICAgIFBhdGNoIGJ5IEpv
Y2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPiwKKyAgICAgICAgICAg
ICAgICAgWmVubyBBbGJpc3NlciA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5jcHA6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNv
bnRyb2xsZXI6OlFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcik6CisgICAgICAgIChRV2ViTmF2aWdh
dGlvbkNvbnRyb2xsZXI6OmNhbkdvQmFjayk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRy
b2xsZXI6OmNhbkdvRm9yd2FyZCk6CisgICAgICAgIChRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6
OmNhblN0b3ApOgorICAgICAgICAoUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpjYW5SZWxvYWQp
OgorICAgICAgICAoUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpnb0JhY2spOgorICAgICAgICAo
UVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpnb0ZvcndhcmQpOgorICAgICAgICAoUVdlYk5hdmln
YXRpb25Db250cm9sbGVyOjpzdG9wKToKKyAgICAgICAgKFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxl
cjo6cmVsb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9uY29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rl
c3RzL3RzdF9jb21tb252aWV3dGVzdHMuY3BwOgorICAgICAgICAodHN0X0NvbW1vblZpZXdUZXN0
czo6YmFja0FuZEZvcndhcmQpOgorICAgICAgICAodHN0X0NvbW1vblZpZXdUZXN0czo6cmVsb2Fk
KToKKyAgICAgICAgKHRzdF9Db21tb25WaWV3VGVzdHM6OnN0b3ApOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHA6
CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OmdvQmFjayk6CisgICAgICAgIChXZWJWaWV3
QWJzdHJhY3Rpb246OmdvRm9yd2FyZCk6CisgICAgICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OnN0
b3ApOgorICAgICAgICAoV2ViVmlld0Fic3RyYWN0aW9uOjpyZWxvYWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcWRlc2t0b3B3ZWJ2aWV3L3RzdF9x
ZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FEZXNrdG9wV2ViVmlldzo6bmF2aWdh
dGlvblN0YXR1c0F0U3RhcnR1cCk6CisgICAgICAgIChMb2FkU3RhcnRlZENhdGNoZXI6Om9uTG9h
ZFN0YXJ0ZWQpOgorICAgICAgICAodHN0X1FEZXNrdG9wV2ViVmlldzo6c3RvcEVuYWJsZWRBZnRl
ckxvYWRTdGFydGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0b3VjaHdl
YnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FUb3VjaFdlYlZpZXc6
Om5hdmlnYXRpb25TdGF0dXNBdFN0YXJ0dXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCk6CisgICAgICAgIChk
aXNwYXRjaExvYWRGYWlsZWQpOgorICAgICAgICAocXRfd2tfZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChxdF93a19kaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAocXRfd2tfZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJv
eHk6OlF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpjYW5Hb0JhY2sp
OgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmdvQmFjayk6CisgICAgICAgIChRdFdlYlBhZ2VQ
cm94eTo6Y2FuR29Gb3J3YXJkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQp
OgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmNhblN0b3ApOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OnN0b3ApOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OmNhblJlbG9hZCk6CisgICAg
ICAgIChRdFdlYlBhZ2VQcm94eTo6cmVsb2FkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5Ojpu
YXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpkaWRSZWxh
dW5jaFByb2Nlc3MpOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6CisKIDIwMTEtMTAtMTcg
IEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbHRlcmluZyBvZiBVUkxz
IHdoZW4gc2VyaWFsaXppbmcgYmFjayBmb3J3YXJkIGxpc3Qgc2F2ZXMgYmFkIGN1cnJlbnQgaW5k
ZXggdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
Ym5hdmlnYXRpb25jb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcAppbmRleCA4N2QwY2JjLi5kMmM5MTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9u
Y29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
bmF2aWdhdGlvbmNvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBAIFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjo6UVdlYk5hdmlnYXRpb25Db250cm9sbGVyKFF0V2ViUGFnZVByb3h5KiBwYWdl
UHJveHkpCiAgICAgOiBRT2JqZWN0KHBhZ2VQcm94eSkKICAgICAsIGQobmV3IFFXZWJOYXZpZ2F0
aW9uQ29udHJvbGxlclByaXZhdGUocGFnZVByb3h5KSkKIHsKKyAgICBjb25uZWN0KHBhZ2VQcm94
eSwgU0lHTkFMKHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpKSwgdGhpcywgU0lHTkFMKG5hdmlnYXRp
b25TdGF0ZUNoYW5nZWQoKSkpOwogfQogCiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6On5RV2Vi
TmF2aWdhdGlvbkNvbnRyb2xsZXIoKQpAQCAtNDcsNDcgKzQ4LDQyIEBAIFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjo6flFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigpCiAgICAgZGVsZXRlIGQ7CiB9
CiAKLVFBY3Rpb24qIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6YmFja0FjdGlvbigpIGNvbnN0
Citib29sIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjo6Y2FuR29CYWNrKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZC0+cGFnZVByb3h5LT5uYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpCYWNrKTsK
KyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKIH0KIAotUUFjdGlvbiogUVdl
Yk5hdmlnYXRpb25Db250cm9sbGVyOjpmb3J3YXJkQWN0aW9uKCkgY29uc3QKK2Jvb2wgUVdlYk5h
dmlnYXRpb25Db250cm9sbGVyOjpjYW5Hb0ZvcndhcmQoKSBjb25zdAogewotICAgIHJldHVybiBk
LT5wYWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkZvcndhcmQpOworICAgIHJl
dHVybiBkLT5wYWdlUHJveHktPmNhbkdvRm9yd2FyZCgpOwogfQogCi1RQWN0aW9uKiBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXI6OnN0b3BBY3Rpb24oKSBjb25zdAorYm9vbCBRV2ViTmF2aWdhdGlv
bkNvbnRyb2xsZXI6OmNhblN0b3AoKSBjb25zdAogewotICAgIHJldHVybiBkLT5wYWdlUHJveHkt
Pm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OlN0b3ApOworICAgIHJldHVybiBkLT5wYWdlUHJv
eHktPmNhblN0b3AoKTsKIH0KIAotUUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpy
ZWxvYWRBY3Rpb24oKSBjb25zdAorYm9vbCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmNhblJl
bG9hZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+bmF2aWdhdGlvbkFjdGlv
bihRdFdlYktpdDo6UmVsb2FkKTsKKyAgICByZXR1cm4gZC0+cGFnZVByb3h5LT5jYW5SZWxvYWQo
KTsKIH0KIAotUUFjdGlvbiogUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0
aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdAordm9pZCBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXI6OmdvQmFjaygpCiB7Ci0gICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+
bmF2aWdhdGlvbkFjdGlvbih3aGljaCk7CisgICAgZC0+cGFnZVByb3h5LT5nb0JhY2soKTsKIH0K
IAotdm9pZCBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI6OmJhY2soKQordm9pZCBRV2ViTmF2aWdh
dGlvbkNvbnRyb2xsZXI6OmdvRm9yd2FyZCgpCiB7Ci0gICAgZC0+cGFnZVByb3h5LT5uYXZpZ2F0
aW9uQWN0aW9uKFF0V2ViS2l0OjpCYWNrKS0+dHJpZ2dlcigpOwotfQotCi12b2lkIFFXZWJOYXZp
Z2F0aW9uQ29udHJvbGxlcjo6Zm9yd2FyZCgpCi17Ci0gICAgZC0+cGFnZVByb3h5LT5uYXZpZ2F0
aW9uQWN0aW9uKFF0V2ViS2l0OjpGb3J3YXJkKS0+dHJpZ2dlcigpOworICAgIGQtPnBhZ2VQcm94
eS0+Z29Gb3J3YXJkKCk7CiB9CiAKIHZvaWQgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOjpzdG9w
KCkKIHsKLSAgICBkLT5wYWdlUHJveHktPm5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OlN0b3Ap
LT50cmlnZ2VyKCk7CisgICAgZC0+cGFnZVByb3h5LT5zdG9wKCk7CiB9CiAKIHZvaWQgUVdlYk5h
dmlnYXRpb25Db250cm9sbGVyOjpyZWxvYWQoKQogewotICAgIGQtPnBhZ2VQcm94eS0+bmF2aWdh
dGlvbkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKS0+dHJpZ2dlcigpOworICAgIGQtPnBhZ2VQcm94
eS0+cmVsb2FkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaAppbmRleCA1N2FiNzQ3Li40NDg1ODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0
aW9uY29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdl
Ym5hdmlnYXRpb25jb250cm9sbGVyLmgKQEAgLTM1LDI2ICszNSwyNyBAQCBjbGFzcyBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXJQcml2YXRlOwogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViTmF2
aWdhdGlvbkNvbnRyb2xsZXIgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKLSAgICBR
X1BST1BFUlRZKFFBY3Rpb24qIGJhY2tBY3Rpb24gUkVBRCBiYWNrQWN0aW9uIENPTlNUQU5UIEZJ
TkFMKQotICAgIFFfUFJPUEVSVFkoUUFjdGlvbiogZm9yd2FyZEFjdGlvbiBSRUFEIGZvcndhcmRB
Y3Rpb24gQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJUWShRQWN0aW9uKiBzdG9wQWN0aW9u
IFJFQUQgc3RvcEFjdGlvbiBDT05TVEFOVCBGSU5BTCkKLSAgICBRX1BST1BFUlRZKFFBY3Rpb24q
IHJlbG9hZEFjdGlvbiBSRUFEIHJlbG9hZEFjdGlvbiBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKGJvb2wgY2FuR29CYWNrIFJFQUQgY2FuR29CYWNrIE5PVElGWSBuYXZpZ2F0aW9uU3Rh
dGVDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoYm9vbCBjYW5Hb0ZvcndhcmQgUkVBRCBjYW5Hb0Zv
cndhcmQgTk9USUZZIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQpCisgICAgUV9QUk9QRVJUWShib29s
IGNhblN0b3AgUkVBRCBjYW5TdG9wIE5PVElGWSBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKQorICAg
IFFfUFJPUEVSVFkoYm9vbCBjYW5SZWxvYWQgUkVBRCBjYW5SZWxvYWQgTk9USUZZIG5hdmlnYXRp
b25TdGF0ZUNoYW5nZWQpCiBwdWJsaWM6CiAgICAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKFF0
V2ViUGFnZVByb3h5Kik7CiAgICAgflFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcigpOwogCi0gICAg
UUFjdGlvbiogYmFja0FjdGlvbigpIGNvbnN0OwotICAgIFFBY3Rpb24qIGZvcndhcmRBY3Rpb24o
KSBjb25zdDsKLSAgICBRQWN0aW9uKiBzdG9wQWN0aW9uKCkgY29uc3Q7Ci0gICAgUUFjdGlvbiog
cmVsb2FkQWN0aW9uKCkgY29uc3Q7Ci0KLSAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdDsKKyAgICBib29sIGNhbkdvQmFj
aygpIGNvbnN0OworICAgIGJvb2wgY2FuR29Gb3J3YXJkKCkgY29uc3Q7CisgICAgYm9vbCBjYW5T
dG9wKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWxvYWQoKSBjb25zdDsKIAogcHVibGljIHNsb3Rz
OgotICAgIHZvaWQgYmFjaygpOwotICAgIHZvaWQgZm9yd2FyZCgpOwotICAgIHZvaWQgc3RvcCgp
OwotICAgIHZvaWQgcmVsb2FkKCk7CisgICAgUV9JTlZPS0FCTEUgdm9pZCBnb0JhY2soKTsKKyAg
ICBRX0lOVk9LQUJMRSB2b2lkIGdvRm9yd2FyZCgpOworICAgIFFfSU5WT0tBQkxFIHZvaWQgc3Rv
cCgpOworICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVsb2FkKCk7CisKK1FfU0lHTkFMUzoKKyAgICB2
b2lkIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBRV2ViTmF2aWdh
dGlvbkNvbnRyb2xsZXJQcml2YXRlKiBkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0
cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcAppbmRleCBmNzI0ZjZhLi45Nzk2ODE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0
cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy90c3RfY29tbW9udmlld3Rlc3RzLmNwcApAQCAt
MTE3LDEzICsxMTcsMTMgQEAgdm9pZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpiYWNrQW5kRm9yd2Fy
ZCgpCiAgICAgUVZFUklGWSh2aWV3QWJzdHJhY3Rpb24tPnVybCh1cmwpKTsKICAgICBRQ09NUEFS
RSh1cmwucGF0aCgpLCBRTGF0aW4xU3RyaW5nKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL2Jhc2lj
X3BhZ2UyLmh0bWwiKSk7CiAKLSAgICB2aWV3QWJzdHJhY3Rpb24tPnRyaWdnZXJOYXZpZ2F0aW9u
QWN0aW9uKFF0V2ViS2l0OjpCYWNrKTsKKyAgICB2aWV3QWJzdHJhY3Rpb24tPmdvQmFjaygpOwog
ICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh2aWV3QWJzdHJhY3Rpb24uZGF0YSgpLCBTSUdOQUwo
bG9hZFN1Y2NlZWRlZCgpKSkpOwogCiAgICAgUVZFUklGWSh2aWV3QWJzdHJhY3Rpb24tPnVybCh1
cmwpKTsKICAgICBRQ09NUEFSRSh1cmwucGF0aCgpLCBRTGF0aW4xU3RyaW5nKFRFU1RTX1NPVVJD
RV9ESVIgIi9odG1sL2Jhc2ljX3BhZ2UuaHRtbCIpKTsKIAotICAgIHZpZXdBYnN0cmFjdGlvbi0+
dHJpZ2dlck5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6OkZvcndhcmQpOworICAgIHZpZXdBYnN0
cmFjdGlvbi0+Z29Gb3J3YXJkKCk7CiAgICAgUVZFUklGWSh3YWl0Rm9yU2lnbmFsKHZpZXdBYnN0
cmFjdGlvbi5kYXRhKCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKSk7CiAKICAgICBRVkVSSUZZ
KHZpZXdBYnN0cmFjdGlvbi0+dXJsKHVybCkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgdHN0
X0NvbW1vblZpZXdUZXN0czo6cmVsb2FkKCkKICAgICBRVkVSSUZZKHZpZXdBYnN0cmFjdGlvbi0+
dXJsKHVybCkpOwogICAgIFFDT01QQVJFKHVybC5wYXRoKCksIFFMYXRpbjFTdHJpbmcoVEVTVFNf
U09VUkNFX0RJUiAiL2h0bWwvYmFzaWNfcGFnZS5odG1sIikpOwogCi0gICAgdmlld0Fic3RyYWN0
aW9uLT50cmlnZ2VyTmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6UmVsb2FkKTsKKyAgICB2aWV3
QWJzdHJhY3Rpb24tPnJlbG9hZCgpOwogICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh2aWV3QWJz
dHJhY3Rpb24uZGF0YSgpLCBTSUdOQUwobG9hZFN1Y2NlZWRlZCgpKSkpOwogCiAgICAgUVZFUklG
WSh2aWV3QWJzdHJhY3Rpb24tPnVybCh1cmwpKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIHRz
dF9Db21tb25WaWV3VGVzdHM6OnN0b3AoKQogICAgIFFDT01QQVJFKHVybC5wYXRoKCksIFFMYXRp
bjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwvYmFzaWNfcGFnZS5odG1sIikpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgdGVzdCBzaG91bGQgYmUgZmxlc2hlZCBvdXQuIFJpZ2h0IG5vdyBp
dCdzIGp1c3QgaGVyZSB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgY3Jhc2guCi0gICAgdmlld0Fic3Ry
YWN0aW9uLT50cmlnZ2VyTmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6U3RvcCk7CisgICAgdmll
d0Fic3RyYWN0aW9uLT5zdG9wKCk7CiB9CiAKIHZvaWQgdHN0X0NvbW1vblZpZXdUZXN0czo6bG9h
ZFByb2dyZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJh
Y3Rpb24uY3BwCmluZGV4IDAyMWJjZGMuLjhkNDUzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21t
b252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcApAQCAtOTcsMTIgKzk3LDI0IEBAIGlu
dCBXZWJWaWV3QWJzdHJhY3Rpb246OmxvYWRQcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIHRv
dWNoVmlld1Byb2dyZXNzOwogfQogCi12b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6dHJpZ2dlck5h
dmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpCit2b2lkIFdl
YlZpZXdBYnN0cmFjdGlvbjo6Z29CYWNrKCkKIHsKLSAgICBRQWN0aW9uKiB0b3VjaEFjdGlvbiA9
IHRvdWNoV2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPm5hdmlnYXRp
b25BY3Rpb24od2hpY2gpOwotICAgIHRvdWNoQWN0aW9uLT50cmlnZ2VyKCk7Ci0gICAgUUFjdGlv
biogZGVza3RvcEFjdGlvbiA9IGRlc2t0b3BXZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVy
KCktPm5hdmlnYXRpb25BY3Rpb24od2hpY2gpOwotICAgIGRlc2t0b3BBY3Rpb24tPnRyaWdnZXIo
KTsKKyAgICB0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5n
b0JhY2soKTsKK30KKwordm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OmdvRm9yd2FyZCgpCit7Cisg
ICAgdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Z29Gb3J3
YXJkKCk7Cit9CisKK3ZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpzdG9wKCkKK3sKKyAgICB0b3Vj
aFdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wKCk7Cit9CisK
K3ZvaWQgV2ViVmlld0Fic3RyYWN0aW9uOjpyZWxvYWQoKQoreworICAgIHRvdWNoV2ViVmlldygp
LT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnJlbG9hZCgpOwogfQogCiB2b2lkIFdl
YlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZFN0YXJ0ZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmll
d2Fic3RyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2Nv
bW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaAppbmRleCBiNmJkMGQ2Li5jZDQ2YWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1v
bnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaApA
QCAtNDEsNyArNDEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgdXJsKFFVcmwmKSBjb25zdDsKICAg
ICBpbnQgbG9hZFByb2dyZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHRyaWdnZXJOYXZpZ2F0aW9u
QWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICB2b2lkIGdvQmFjaygpOwor
ICAgIHZvaWQgZ29Gb3J3YXJkKCk7CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCByZWxvYWQo
KTsKIAogUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFN0YXJ0ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcWRlc2t0b3B3ZWJ2aWV3L3RzdF9x
ZGVza3RvcHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xZGVza3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggNThjYjBjNS4u
ZDQyZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xZGVza3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xZGVza3RvcHdlYnZpZXcvdHN0X3FkZXNrdG9w
d2Vidmlldy5jcHAKQEAgLTE3LDcgKzE3LDYgQEAKICAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KICovCiAKLSNpbmNsdWRlIDxRQWN0aW9uPgogI2luY2x1ZGUgPFFTY29wZWRQb2ludGVy
PgogI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CiAjaW5jbHVkZSA8cWRlc2t0b3B3ZWJ2aWV3Lmg+
CkBAIC0zNCw4ICszMyw4IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBpbml0KCk7CiAgICAg
dm9pZCBjbGVhbnVwKCk7CiAKLSAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25zU3RhdHVzQXRTdGFy
dHVwKCk7Ci0gICAgdm9pZCBzdG9wQWN0aW9uRW5hYmxlZEFmdGVyTG9hZFN0YXJ0ZWQoKTsKKyAg
ICB2b2lkIG5hdmlnYXRpb25TdGF0dXNBdFN0YXJ0dXAoKTsKKyAgICB2b2lkIHN0b3BFbmFibGVk
QWZ0ZXJMb2FkU3RhcnRlZCgpOwogCiBwcml2YXRlOgogICAgIGlubGluZSBRRGVza3RvcFdlYlZp
ZXcqIHdlYlZpZXcoKSBjb25zdDsKQEAgLTYyLDIzICs2MSwxNSBAQCBpbmxpbmUgUURlc2t0b3BX
ZWJWaWV3KiB0c3RfUURlc2t0b3BXZWJWaWV3Ojp3ZWJWaWV3KCkgY29uc3QKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UURlc2t0b3BXZWJWaWV3Kj4obV93aW5kb3ctPndlYlZpZXcuZGF0YSgpKTsK
IH0KIAotdm9pZCB0c3RfUURlc2t0b3BXZWJWaWV3OjpuYXZpZ2F0aW9uQWN0aW9uc1N0YXR1c0F0
U3RhcnR1cCgpCit2b2lkIHRzdF9RRGVza3RvcFdlYlZpZXc6Om5hdmlnYXRpb25TdGF0dXNBdFN0
YXJ0dXAoKQogewotICAgIFFBY3Rpb24qIGJhY2tBY3Rpb24gPSB3ZWJWaWV3KCktPm5hdmlnYXRp
b25Db250cm9sbGVyKCktPmJhY2tBY3Rpb24oKTsKLSAgICBRVkVSSUZZKGJhY2tBY3Rpb24pOwot
ICAgIFFDT01QQVJFKGJhY2tBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBB
UkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5Hb0JhY2soKSwgZmFsc2Up
OwogCi0gICAgUUFjdGlvbiogZm9yd2FyZEFjdGlvbiA9IHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNv
bnRyb2xsZXIoKS0+Zm9yd2FyZEFjdGlvbigpOwotICAgIFFWRVJJRlkoZm9yd2FyZEFjdGlvbik7
Ci0gICAgUUNPTVBBUkUoZm9yd2FyZEFjdGlvbi0+aXNFbmFibGVkKCksIGZhbHNlKTsKKyAgICBR
Q09NUEFSRSh3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhbkdvRm9yd2FyZCgp
LCBmYWxzZSk7CiAKLSAgICBRQWN0aW9uKiBzdG9wQWN0aW9uID0gd2ViVmlldygpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5zdG9wQWN0aW9uKCk7Ci0gICAgUVZFUklGWShzdG9wQWN0aW9uKTsK
LSAgICBRQ09NUEFSRShzdG9wQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01Q
QVJFKHdlYlZpZXcoKS0+bmF2aWdhdGlvbkNvbnRyb2xsZXIoKS0+Y2FuU3RvcCgpLCBmYWxzZSk7
CiAKLSAgICBRQWN0aW9uKiByZWxvYWRBY3Rpb24gPSB3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250
cm9sbGVyKCktPnJlbG9hZEFjdGlvbigpOwotICAgIFFWRVJJRlkocmVsb2FkQWN0aW9uKTsKLSAg
ICBRQ09NUEFSRShyZWxvYWRBY3Rpb24tPmlzRW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBB
UkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5SZWxvYWQoKSwgZmFsc2Up
OwogfQogCiBjbGFzcyBMb2FkU3RhcnRlZENhdGNoZXIgOiBwdWJsaWMgUU9iamVjdCB7CkBAIC05
NSw5ICs4Niw3IEBAIHB1YmxpYyBzbG90czoKICAgICB7CiAgICAgICAgIFFNZXRhT2JqZWN0Ojpp
bnZva2VNZXRob2QodGhpcywgImZpbmlzaGVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCi0g
ICAgICAgIFFBY3Rpb24qIHN0b3BBY3Rpb24gPSBtX3dlYlZpZXctPm5hdmlnYXRpb25Db250cm9s
bGVyKCktPnN0b3BBY3Rpb24oKTsKLSAgICAgICAgUVZFUklGWShzdG9wQWN0aW9uKTsKLSAgICAg
ICAgUUNPTVBBUkUoc3RvcEFjdGlvbi0+aXNFbmFibGVkKCksIHRydWUpOworICAgICAgICBRQ09N
UEFSRShtX3dlYlZpZXctPm5hdmlnYXRpb25Db250cm9sbGVyKCktPmNhblN0b3AoKSwgdHJ1ZSk7
CiAgICAgfQogCiBzaWduYWxzOgpAQCAtMTA3LDE3ICs5NiwxNSBAQCBwcml2YXRlOgogICAgIFFE
ZXNrdG9wV2ViVmlldyogbV93ZWJWaWV3OwogfTsKIAotdm9pZCB0c3RfUURlc2t0b3BXZWJWaWV3
OjpzdG9wQWN0aW9uRW5hYmxlZEFmdGVyTG9hZFN0YXJ0ZWQoKQordm9pZCB0c3RfUURlc2t0b3BX
ZWJWaWV3OjpzdG9wRW5hYmxlZEFmdGVyTG9hZFN0YXJ0ZWQoKQogewotICAgIFFBY3Rpb24qIHN0
b3BBY3Rpb24gPSB3ZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPnN0b3BBY3Rpb24o
KTsKLSAgICBRVkVSSUZZKHN0b3BBY3Rpb24pOwotICAgIFFDT01QQVJFKHN0b3BBY3Rpb24tPmlz
RW5hYmxlZCgpLCBmYWxzZSk7CisgICAgUUNPTVBBUkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29u
dHJvbGxlcigpLT5jYW5TdG9wKCksIGZhbHNlKTsKIAogICAgIExvYWRTdGFydGVkQ2F0Y2hlciBj
YXRjaGVyKHdlYlZpZXcoKSk7CiAgICAgd2ViVmlldygpLT5sb2FkKFFVcmw6OmZyb21Mb2NhbEZp
bGUoUUxhdGluMVN0cmluZyhURVNUU19TT1VSQ0VfRElSICIvaHRtbC9iYXNpY19wYWdlLmh0bWwi
KSkpOwogICAgIHdhaXRGb3JTaWduYWwoJmNhdGNoZXIsIFNJR05BTChmaW5pc2hlZCgpKSk7CiAK
LSAgICBRQ09NUEFSRShzdG9wQWN0aW9uLT5pc0VuYWJsZWQoKSwgdHJ1ZSk7CisgICAgUUNPTVBB
UkUod2ViVmlldygpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCksIHRydWUpOwog
CiAgICAgd2FpdEZvclNpZ25hbCh3ZWJWaWV3KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRv
dWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3F0b3VjaHdlYnZpZXcvdHN0X3F0b3VjaHdlYnZpZXcuY3BwCmluZGV4
IGRiY2I0ODAuLjU5NDY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcXRvdWNod2Vidmlldy90c3RfcXRvdWNod2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xdG91Y2h3ZWJ2aWV3L3RzdF9xdG91
Y2h3ZWJ2aWV3LmNwcApAQCAtMTcsNyArMTcsNiBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgogKi8KIAotI2luY2x1ZGUgPFFBY3Rpb24+CiAjaW5jbHVkZSA8UXRUZXN0L1F0VGVz
dD4KICNpbmNsdWRlIDxxdG91Y2h3ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXRvdWNod2Vidmlldy5o
PgpAQCAtMzYsNyArMzUsNyBAQCBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgY2xlYW51cCgpOwog
CiAgICAgdm9pZCBhY2Nlc3NQYWdlKCk7Ci0gICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uc1N0YXR1
c0F0U3RhcnR1cCgpOworICAgIHZvaWQgbmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpOwogCiBw
cml2YXRlOgogICAgIGlubGluZSBRVG91Y2hXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3Q7CkBAIC03
MywyMyArNzIsMTUgQEAgdm9pZCB0c3RfUVRvdWNoV2ViVmlldzo6YWNjZXNzUGFnZSgpCiAgICAg
UUNPTVBBUkUocGFnZVByb3BlcnR5QWNjZXNzLCBwYWdlRGlyZWN0QWNjZXNzKTsKIH0KIAotdm9p
ZCB0c3RfUVRvdWNoV2ViVmlldzo6bmF2aWdhdGlvbkFjdGlvbnNTdGF0dXNBdFN0YXJ0dXAoKQor
dm9pZCB0c3RfUVRvdWNoV2ViVmlldzo6bmF2aWdhdGlvblN0YXR1c0F0U3RhcnR1cCgpCiB7Ci0g
ICAgUUFjdGlvbiogYmFja0FjdGlvbiA9IHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29u
dHJvbGxlcigpLT5iYWNrQWN0aW9uKCk7Ci0gICAgUVZFUklGWShiYWNrQWN0aW9uKTsKLSAgICBR
Q09NUEFSRShiYWNrQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdl
YlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5Hb0JhY2soKSwgZmFs
c2UpOwogCi0gICAgUUFjdGlvbiogZm9yd2FyZEFjdGlvbiA9IHdlYlZpZXcoKS0+cGFnZSgpLT5u
YXZpZ2F0aW9uQ29udHJvbGxlcigpLT5mb3J3YXJkQWN0aW9uKCk7Ci0gICAgUVZFUklGWShmb3J3
YXJkQWN0aW9uKTsKLSAgICBRQ09NUEFSRShmb3J3YXJkQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFs
c2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxl
cigpLT5jYW5Hb0ZvcndhcmQoKSwgZmFsc2UpOwogCi0gICAgUUFjdGlvbiogc3RvcEFjdGlvbiA9
IHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5zdG9wQWN0aW9uKCk7
Ci0gICAgUVZFUklGWShzdG9wQWN0aW9uKTsKLSAgICBRQ09NUEFSRShzdG9wQWN0aW9uLT5pc0Vu
YWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0
aW9uQ29udHJvbGxlcigpLT5jYW5TdG9wKCksIGZhbHNlKTsKIAotICAgIFFBY3Rpb24qIHJlbG9h
ZEFjdGlvbiA9IHdlYlZpZXcoKS0+cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5yZWxv
YWRBY3Rpb24oKTsKLSAgICBRVkVSSUZZKHJlbG9hZEFjdGlvbik7Ci0gICAgUUNPTVBBUkUocmVs
b2FkQWN0aW9uLT5pc0VuYWJsZWQoKSwgZmFsc2UpOworICAgIFFDT01QQVJFKHdlYlZpZXcoKS0+
cGFnZSgpLT5uYXZpZ2F0aW9uQ29udHJvbGxlcigpLT5jYW5SZWxvYWQoKSwgZmFsc2UpOwogfQog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCBjMDAz
ZGZjLi45OTg3M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZChX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogICAgIGlmICghV0tGcmFt
ZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdG9RdFdlYlBhZ2VQ
cm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0b1F0V2Vi
UGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB0b1F0
V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5sb2FkRGlkU3VjY2VlZCgpOwogfQogCkBAIC03Myw3
ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZEZhaWxlZChXS0ZyYW1lUmVmIGZyYW1l
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvLCBXS0Vycm9yCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWlu
RnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNs
aWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOworICAgIHRvUXRXZWJQYWdlUHJv
eHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwogCiAgICAgaW50IGVycm9y
Q29kZSA9IFdLRXJyb3JHZXRFcnJvckNvZGUoZXJyb3IpOwogICAgIGlmICh0b0ltcGwoZXJyb3Ip
LT5wbGF0Zm9ybUVycm9yKCkuaXNDYW5jZWxsYXRpb24oKSB8fCBlcnJvckNvZGUgPT0ga1dLRXJy
b3JDb2RlRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSB8fCBlcnJvckNvZGUgPT0g
a1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhhbmRsZUxvYWQpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQg
cXRfd2tfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUCiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRh
dGVOYXZpZ2F0aW9uQWN0aW9ucygpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbykt
PnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5m
byktPmxvYWREaWRCZWdpbigpOwogfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBxdF93a19k
aWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2UKICAgICBXZWJGcmFtZVByb3h5KiB3a2ZyYW1lID0gdG9JbXBsKGZyYW1lKTsK
ICAgICBRU3RyaW5nIHVybFN0cih3a2ZyYW1lLT51cmwoKSk7CiAgICAgUVVybCBxVXJsID0gdXJs
U3RyOwotICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmlnYXRpb25B
Y3Rpb25zKCk7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdh
dGlvblN0YXRlKCk7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+ZGlkQ2hhbmdl
VXJsKHFVcmwpOwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPmxvYWREaWRDb21t
aXQoKTsKIH0KQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHF0X3drX2RpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgVwogICAg
IFdlYkZyYW1lUHJveHkqIHdrZnJhbWUgPSB0b0ltcGwoZnJhbWUpOwogICAgIFFTdHJpbmcgdXJs
U3RyKHdrZnJhbWUtPnVybCgpKTsKICAgICBRVXJsIHFVcmwgPSB1cmxTdHI7Ci0gICAgdG9RdFdl
YlBhZ2VQcm94eShjbGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0
b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKICAg
ICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5kaWRDaGFuZ2VVcmwocVVybCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4
IDJiNWU2NmEuLjFlNDIxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmNwcApAQCAtNDIsMTIgKzQyLDEwIEBACiAjaW5jbHVkZSAiV2ViVW5kb0Nv
bW1hbmRRdC5oIgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0Lmgi
Ci0jaW5jbHVkZSA8UUFjdGlvbj4KICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50PgogI2luY2x1ZGUgPFFKU0VuZ2luZT4KICNpbmNsdWRl
IDxRTWltZURhdGE+Ci0jaW5jbHVkZSA8UVN0eWxlPgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50Pgog
I2luY2x1ZGUgPFFVbmRvU3RhY2s+CiAjaW5jbHVkZSA8UXREZWJ1Zz4KQEAgLTExMSw3ICsxMDks
NiBAQCBRdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkoVmlld0ludGVyZmFjZSogdmlld0lu
dGVyZmFjZSwgUG9saWN5SW50ZXJmYWNlKiBwbwogICAgICwgbV9sb2FkUHJvZ3Jlc3MoMCkKIHsK
ICAgICBBU1NFUlQodmlld0ludGVyZmFjZSk7Ci0gICAgbWVtc2V0KG1fYWN0aW9ucywgMCwgc2l6
ZW9mKG1fYWN0aW9ucykpOwogICAgIG1fd2ViUGFnZVByb3h5ID0gbV9jb250ZXh0LT5jcmVhdGVX
ZWJQYWdlKHRoaXMsIHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKICAgICBtX2hpc3RvcnkgPSBRV0tI
aXN0b3J5UHJpdmF0ZTo6Y3JlYXRlSGlzdG9yeSh0aGlzLCBtX3dlYlBhZ2VQcm94eS0+YmFja0Zv
cndhcmRMaXN0KCkpOwogICAgIGlmICghY29udGV4dFJlZikKQEAgLTQzMCw2NiArNDI3LDY1IEBA
IHZvaWQgUXRXZWJQYWdlUHJveHk6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVj
dCYgYXJlYSkKICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3QoYXJlYSwgUXQ6OndoaXRlKTsKIH0K
IAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6dXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpXZWJB
Y3Rpb24gYWN0aW9uKQorYm9vbCBRdFdlYlBhZ2VQcm94eTo6Y2FuR29CYWNrKCkgY29uc3QKIHsK
LSAgICBRQWN0aW9uKiBhID0gbV9hY3Rpb25zW2FjdGlvbl07Ci0gICAgaWYgKCFhKQotICAgICAg
ICByZXR1cm47CisgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5jYW5Hb0JhY2soKTsKK30KKwor
dm9pZCBRdFdlYlBhZ2VQcm94eTo6Z29CYWNrKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+Z29C
YWNrKCk7Cit9CisKK2Jvb2wgUXRXZWJQYWdlUHJveHk6OmNhbkdvRm9yd2FyZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5jYW5Hb0ZvcndhcmQoKTsKK30KKwordm9pZCBR
dFdlYlBhZ2VQcm94eTo6Z29Gb3J3YXJkKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+Z29Gb3J3
YXJkKCk7Cit9CiAKK2Jvb2wgUXRXZWJQYWdlUHJveHk6OmNhblN0b3AoKSBjb25zdAorewogICAg
IFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJveHk+IG1haW5GcmFtZSA9IG1fd2ViUGFnZVByb3h5
LT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gbWFpbkZyYW1lICYmICEoV2ViRnJhbWVQcm94eTo6
TG9hZFN0YXRlRmluaXNoZWQgPT0gbWFpbkZyYW1lLT5sb2FkU3RhdGUoKSk7Cit9CiAKLSAgICBi
b29sIGVuYWJsZWQgPSBhLT5pc0VuYWJsZWQoKTsKLQotICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0g
ICAgY2FzZSBRdFdlYlBhZ2VQcm94eTo6QmFjazoKLSAgICAgICAgZW5hYmxlZCA9IG1fd2ViUGFn
ZVByb3h5LT5jYW5Hb0JhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdFdlYlBhZ2VQ
cm94eTo6Rm9yd2FyZDoKLSAgICAgICAgZW5hYmxlZCA9IG1fd2ViUGFnZVByb3h5LT5jYW5Hb0Zv
cndhcmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBRdFdlYlBhZ2VQcm94eTo6U3RvcDoK
LSAgICAgICAgZW5hYmxlZCA9IG1haW5GcmFtZSAmJiAhKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0
ZUZpbmlzaGVkID09IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFF0V2ViUGFnZVByb3h5OjpSZWxvYWQ6Ci0gICAgICAgIGlmIChtYWluRnJhbWUpCi0g
ICAgICAgICAgICBlbmFibGVkID0gKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZUZpbmlzaGVkID09
IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbmFi
bGVkID0gbV93ZWJQYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgpOwot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICB9Cit2b2lkIFF0V2ViUGFnZVByb3h5OjpzdG9wKCkKK3sKKyAgICBtX3dlYlBhZ2VQ
cm94eS0+c3RvcExvYWRpbmcoKTsKK30KIAotICAgIGEtPnNldEVuYWJsZWQoZW5hYmxlZCk7Citi
b29sIFF0V2ViUGFnZVByb3h5OjpjYW5SZWxvYWQoKSBjb25zdAoreworICAgIFJlZlB0cjxXZWJL
aXQ6OldlYkZyYW1lUHJveHk+IG1haW5GcmFtZSA9IG1fd2ViUGFnZVByb3h5LT5tYWluRnJhbWUo
KTsKKyAgICBpZiAobWFpbkZyYW1lKQorICAgICAgICByZXR1cm4gKFdlYkZyYW1lUHJveHk6Okxv
YWRTdGF0ZUZpbmlzaGVkID09IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOworICAgIHJldHVybiBt
X3dlYlBhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCktPmN1cnJlbnRJdGVtKCk7CiB9CiAKLXZv
aWQgUXRXZWJQYWdlUHJveHk6OnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCkKK3ZvaWQgUXRXZWJQ
YWdlUHJveHk6OnJlbG9hZCgpCiB7Ci0gICAgdXBkYXRlQWN0aW9uKFF0V2ViUGFnZVByb3h5OjpC
YWNrKTsKLSAgICB1cGRhdGVBY3Rpb24oUXRXZWJQYWdlUHJveHk6OkZvcndhcmQpOwotICAgIHVw
ZGF0ZUFjdGlvbihRdFdlYlBhZ2VQcm94eTo6U3RvcCk7Ci0gICAgdXBkYXRlQWN0aW9uKFF0V2Vi
UGFnZVByb3h5OjpSZWxvYWQpOworICAgIG1fd2ViUGFnZVByb3h5LT5yZWxvYWQoLyogcmVsb2Fk
RnJvbU9yaWdpbiAqLyB0cnVlKTsKIH0KIAotdm9pZCBRdFdlYlBhZ2VQcm94eTo6d2ViQWN0aW9u
VHJpZ2dlcmVkKGJvb2wgY2hlY2tlZCkKK3ZvaWQgUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25T
dGF0ZUNoYW5nZWQoKQogewotICAgIFFBY3Rpb24qIGEgPSBxb2JqZWN0X2Nhc3Q8UUFjdGlvbio+
KHNlbmRlcigpKTsKLSAgICBpZiAoIWEpCi0gICAgICAgIHJldHVybjsKLSAgICBRdFdlYlBhZ2VQ
cm94eTo6V2ViQWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PFF0V2ViUGFnZVByb3h5OjpXZWJB
Y3Rpb24+KGEtPmRhdGEoKS50b0ludCgpKTsKLSAgICB0cmlnZ2VyQWN0aW9uKGFjdGlvbiwgY2hl
Y2tlZCk7CisgICAgZW1pdCB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTsKIH0KIAogdm9pZCBRdFdl
YlBhZ2VQcm94eTo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICB1cGRhdGVOYXZpZ2F0aW9u
QWN0aW9ucygpOworICAgIHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwogICAgIG1fdmlld0ludGVy
ZmFjZS0+ZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgc2V0RHJhd2luZ0FyZWFTaXplKG1fdmll
d0ludGVyZmFjZS0+ZHJhd2luZ0FyZWFTaXplKCkpOwogfQogCiB2b2lkIFF0V2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkQ3Jhc2goKQogewotICAgIHVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7Cisg
ICAgdXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5wcm9jZXNz
RGlkQ3Jhc2goKTsKIH0KIApAQCAtNTcwLDEwNCArNTY2LDYgQEAgUVdLSGlzdG9yeSogUXRXZWJQ
YWdlUHJveHk6Omhpc3RvcnkoKSBjb25zdAogICAgIHJldHVybiBtX2hpc3Rvcnk7CiB9CiAKLXZv
aWQgUXRXZWJQYWdlUHJveHk6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIHdlYkFjdGlvbiwgYm9v
bCkKLXsKLSAgICBzd2l0Y2ggKHdlYkFjdGlvbikgewotICAgIGNhc2UgQmFjazoKLSAgICAgICAg
bV93ZWJQYWdlUHJveHktPmdvQmFjaygpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGb3J3
YXJkOgotICAgICAgICBtX3dlYlBhZ2VQcm94eS0+Z29Gb3J3YXJkKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFN0b3A6Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5zdG9wTG9hZGluZygp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBSZWxvYWQ6Ci0gICAgICAgIG1fd2ViUGFnZVBy
b3h5LT5yZWxvYWQoLyogcmVsb2FkRnJvbU9yaWdpbiAqLyB0cnVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLX0K
LQotUUFjdGlvbiogUXRXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb24gd2hpY2gpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3aGljaCkgewotICAg
IGNhc2UgUXRXZWJLaXQ6OkJhY2s6Ci0gICAgICAgIHJldHVybiBhY3Rpb24oUXRXZWJQYWdlUHJv
eHk6OkJhY2spOwotICAgIGNhc2UgUXRXZWJLaXQ6OkZvcndhcmQ6Ci0gICAgICAgIHJldHVybiBh
Y3Rpb24oUXRXZWJQYWdlUHJveHk6OkZvcndhcmQpOwotICAgIGNhc2UgUXRXZWJLaXQ6OlJlbG9h
ZDoKLSAgICAgICAgcmV0dXJuIGFjdGlvbihRdFdlYlBhZ2VQcm94eTo6UmVsb2FkKTsKLSAgICBj
YXNlIFF0V2ViS2l0OjpTdG9wOgotICAgICAgICByZXR1cm4gYWN0aW9uKFF0V2ViUGFnZVByb3h5
OjpTdG9wKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotUUFjdGlvbiogUXRXZWJQYWdl
UHJveHk6OmFjdGlvbihXZWJBY3Rpb24gYWN0aW9uKSBjb25zdAotewotICAgIGlmIChhY3Rpb24g
PT0gUXRXZWJQYWdlUHJveHk6Ok5vV2ViQWN0aW9uIHx8IGFjdGlvbiA+PSBXZWJBY3Rpb25Db3Vu
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobV9hY3Rpb25zW2FjdGlvbl0pCi0gICAg
ICAgIHJldHVybiBtX2FjdGlvbnNbYWN0aW9uXTsKLQotICAgIFFTdHJpbmcgdGV4dDsKLSAgICBR
SWNvbiBpY29uOwotICAgIFFTdHlsZSogc3R5bGUgPSBxb2JqZWN0X2Nhc3Q8UUFwcGxpY2F0aW9u
Kj4oUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UoKSktPnN0eWxlKCk7Ci0gICAgYm9vbCBjaGVj
a2FibGUgPSBmYWxzZTsKLSAgICBRdFdlYlBhZ2VQcm94eSogbXV0YWJsZVNlbGYgPSBjb25zdF9j
YXN0PFF0V2ViUGFnZVByb3h5Kj4odGhpcyk7Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAg
IGNhc2UgQmFjazoKLSAgICAgICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpOwot
ICAgICAgICBpY29uID0gc3R5bGUtPnN0YW5kYXJkSWNvbihRU3R5bGU6OlNQX0Fycm93QmFjayk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9yd2FyZDoKLSAgICAgICAgdGV4dCA9IGNvbnRl
eHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpOwotICAgICAgICBpY29uID0gc3R5bGUtPnN0YW5kYXJk
SWNvbihRU3R5bGU6OlNQX0Fycm93Rm9yd2FyZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U3RvcDoKLSAgICAgICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKTsKLSAgICAgICAg
aWNvbiA9IHN0eWxlLT5zdGFuZGFyZEljb24oUVN0eWxlOjpTUF9Ccm93c2VyU3RvcCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVsb2FkOgotICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJ
dGVtVGFnUmVsb2FkKCk7Ci0gICAgICAgIGljb24gPSBzdHlsZS0+c3RhbmRhcmRJY29uKFFTdHls
ZTo6U1BfQnJvd3NlclJlbG9hZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5kbzogewot
ICAgICAgICBRQWN0aW9uKiB1bmRvQWN0aW9uID0gbV91bmRvU3RhY2stPmNyZWF0ZVVuZG9BY3Rp
b24obXV0YWJsZVNlbGYpOwotICAgICAgICBtX2FjdGlvbnNbYWN0aW9uXSA9IHVuZG9BY3Rpb247
Ci0gICAgICAgIHJldHVybiB1bmRvQWN0aW9uOwotICAgIH0KLSAgICBjYXNlIFJlZG86IHsKLSAg
ICAgICAgUUFjdGlvbiogcmVkb0FjdGlvbiA9IG1fdW5kb1N0YWNrLT5jcmVhdGVSZWRvQWN0aW9u
KG11dGFibGVTZWxmKTsKLSAgICAgICAgbV9hY3Rpb25zW2FjdGlvbl0gPSByZWRvQWN0aW9uOwot
ICAgICAgICByZXR1cm4gcmVkb0FjdGlvbjsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICh0
ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBRQWN0aW9uKiBhID0gbmV3
IFFBY3Rpb24obXV0YWJsZVNlbGYpOwotICAgIGEtPnNldFRleHQodGV4dCk7Ci0gICAgYS0+c2V0
RGF0YShhY3Rpb24pOwotICAgIGEtPnNldENoZWNrYWJsZShjaGVja2FibGUpOwotICAgIGEtPnNl
dEljb24oaWNvbik7Ci0KLSAgICBjb25uZWN0KGEsIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCB0
aGlzLCBTTE9UKHdlYkFjdGlvblRyaWdnZXJlZChib29sKSkpOwotCi0gICAgbV9hY3Rpb25zW2Fj
dGlvbl0gPSBhOwotICAgIG11dGFibGVTZWxmLT51cGRhdGVBY3Rpb24oYWN0aW9uKTsKLSAgICBy
ZXR1cm4gYTsKLX0KLQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJ
bWFnZSkKIHsKICAgICBRSW1hZ2UgZHJhZ1FJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggZmJkNjQxNS4uZjdmYWE4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTE0MSw4ICsxNDEs
MTUgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFSZWN0Jik7
CiAKLSAgICB2b2lkIHVwZGF0ZUFjdGlvbihRdFdlYlBhZ2VQcm94eTo6V2ViQWN0aW9uIGFjdGlv
bik7Ci0gICAgdm9pZCB1cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOworICAgIGJvb2wgY2FuR29C
YWNrKCkgY29uc3Q7CisgICAgdm9pZCBnb0JhY2soKTsKKyAgICBib29sIGNhbkdvRm9yd2FyZCgp
IGNvbnN0OworICAgIHZvaWQgZ29Gb3J3YXJkKCk7CisgICAgYm9vbCBjYW5TdG9wKCkgY29uc3Q7
CisgICAgdm9pZCBzdG9wKCk7CisgICAgYm9vbCBjYW5SZWxvYWQoKSBjb25zdDsKKyAgICB2b2lk
IHJlbG9hZCgpOworCiAgICAgdm9pZCB1cGRhdGVFZGl0b3JBY3Rpb25zKCk7CiAKICAgICBXS1Bh
Z2VSZWYgcGFnZVJlZigpIGNvbnN0OwpAQCAtMTU2LDExICsxNjMsNiBAQCBwdWJsaWM6CiAKICAg
ICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKLSAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9u
KFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uKSBjb25zdDsKLQotICAgIFFBY3Rpb24qIGFjdGlv
bihXZWJBY3Rpb24gYWN0aW9uKSBjb25zdDsKLSAgICB2b2lkIHRyaWdnZXJBY3Rpb24oV2ViQWN0
aW9uIGFjdGlvbiwgYm9vbCBjaGVja2VkID0gZmFsc2UpOwotCiAgICAgdm9pZCBzZXRDdXN0b21V
c2VyQWdlbnQoY29uc3QgUVN0cmluZyYpOwogICAgIFFTdHJpbmcgY3VzdG9tVXNlckFnZW50KCkg
Y29uc3Q7CiAKQEAgLTE3NSwxMSArMTc3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2VJ
c1Zpc2libGUoYm9vbCk7CiAKIHB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgd2ViQWN0aW9uVHJp
Z2dlcmVkKGJvb2wgY2hlY2tlZCk7CisgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7
CiAKIHB1YmxpYzoKICAgICBRX1NJR05BTCB2b2lkIHNjcm9sbFJlcXVlc3RlZChpbnQgZHgsIGlu
dCBkeSk7CiAgICAgUV9TSUdOQUwgdm9pZCB6b29tYWJsZUFyZWFGb3VuZChjb25zdCBRUmVjdCYp
OworICAgIFFfU0lHTkFMIHZvaWQgdXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGluaXQoKTsKQEAgLTIwMiw3ICsyMDUsNiBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgUVdLSGlzdG9yeSogbV9oaXN0b3J5Owog
Ci0gICAgbXV0YWJsZSBRQWN0aW9uKiBtX2FjdGlvbnNbUXRXZWJQYWdlUHJveHk6OldlYkFjdGlv
bkNvdW50XTsKICAgICBtdXRhYmxlIFFXS1ByZWZlcmVuY2VzKiBtX3ByZWZlcmVuY2VzOwogCiAg
ICAgT3duUHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUyZThkM2EuLmE5MTViMzUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgor
CisgICAgICAgIFtRdF1bV0syXSBSZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMTUKKworICAgICAgICBJ
biBvcmRlciB0byByZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTCB3ZSBuZWVkIGEgc3VpdGFibGUK
KyAgICAgICAgbWVjaGFuaXNtIGZvciB0cmlnZ2VyaW5nIG5hdmlnYXRpb24gYWN0aW9ucy4KKyAg
ICAgICAgRHVlIHRvIHRoZSBRdFdpZGdldHMgZGVwZW5kZW5jeSBvZiBRQWN0aW9uIHRoZSBjdXJy
ZW50CisgICAgICAgIHNvbHV0aW9uIGlzIG5vdCBzdWl0YWJsZSBhbnltb3JlLiBUaGVyZWZvcmUg
d2UgaW50cm9kdWNlCisgICAgICAgIGludm9rYWJsZSBtZXRob2RzIGFuZCBleHBvcnQgcHJvcGVy
dGllcyBpbiBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgUGF0Y2ggYnkgSm9j
ZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+LAorICAgICAgICAgICAg
ICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jy
b3dzZXJWaWV3LmNwcDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoQnJv
d3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyk6CisKIDIwMTEtMTAtMTcgIEtlbnQgVGFtdXJhICA8
dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEEgZm9sbG93LXVwIG9mIHI5NzcxNi4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcCBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcAppbmRleCA0MWNlZmM3Li5mMWM2ZjJjIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwCkBAIC04NSwxMiArODUsMyBAQCBRRGVza3Rv
cFdlYlZpZXcqIEJyb3dzZXJWaWV3OjpkZXNrdG9wV2ViVmlldygpIGNvbnN0CiAgICAgcmV0dXJu
IHFvYmplY3RfY2FzdDxRRGVza3RvcFdlYlZpZXcqPihtX2l0ZW0pOwogfQogCi1RQWN0aW9uKiBC
cm93c2VyVmlldzo6bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbiB3
aGljaCkgY29uc3QKLXsKLSAgICBpZiAoZGVza3RvcFdlYlZpZXcoKSkKLSAgICAgICAgcmV0dXJu
IGRlc2t0b3BXZWJWaWV3KCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPm5hdmlnYXRpb25BY3Rp
b24od2hpY2gpOwotICAgIGlmICh0b3VjaFdlYlZpZXcoKSkKLSAgICAgICAgcmV0dXJuIHRvdWNo
V2ViVmlldygpLT5wYWdlKCktPm5hdmlnYXRpb25Db250cm9sbGVyKCktPm5hdmlnYXRpb25BY3Rp
b24od2hpY2gpOwotICAgIFFfQVNTRVJUKGZhbHNlKTsKLSAgICByZXR1cm4gMDsKLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmggYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyVmlldy5oCmluZGV4IDUwMjlkYTQuLjFlNWVjZGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlclZpZXcuaApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
b2FkKGNvbnN0IFFTdHJpbmcmKTsKICAgICBRU0dJdGVtKiB2aWV3KCkgY29uc3Q7CiAKLSAgICBR
QWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNo
KSBjb25zdDsKLQogICAgIFFUb3VjaFdlYlZpZXcqIHRvdWNoV2ViVmlldygpIGNvbnN0OwogICAg
IFFEZXNrdG9wV2ViVmlldyogZGVza3RvcFdlYlZpZXcoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyV2luZG93LmNwcAppbmRleCBmMmY0NWFjLi4zMTE0NTUyIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcApAQCAtMTQzLDEzICsxNDMsNiBAQCBCcm93c2Vy
V2luZG93OjpCcm93c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCiAgICAgbV9hZGRy
ZXNzQmFyID0gbmV3IFFMaW5lRWRpdCgpOwogICAgIGNvbm5lY3QobV9hZGRyZXNzQmFyLCBTSUdO
QUwocmV0dXJuUHJlc3NlZCgpKSwgU0xPVChjaGFuZ2VMb2NhdGlvbigpKSk7CiAKLSAgICBRVG9v
bEJhciogYmFyID0gYWRkVG9vbEJhcigiTmF2aWdhdGlvbiIpOwotICAgIGJhci0+YWRkQWN0aW9u
KG1fYnJvd3Nlci0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6QmFjaykpOwotICAgIGJhci0+
YWRkQWN0aW9uKG1fYnJvd3Nlci0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6Rm9yd2FyZCkp
OwotICAgIGJhci0+YWRkQWN0aW9uKG1fYnJvd3Nlci0+bmF2aWdhdGlvbkFjdGlvbihRdFdlYktp
dDo6UmVsb2FkKSk7Ci0gICAgYmFyLT5hZGRBY3Rpb24obV9icm93c2VyLT5uYXZpZ2F0aW9uQWN0
aW9uKFF0V2ViS2l0OjpTdG9wKSk7Ci0gICAgYmFyLT5hZGRXaWRnZXQobV9hZGRyZXNzQmFyKTsK
LQogICAgIFFTaG9ydGN1dCogc2VsZWN0QWRkcmVzc0JhciA9IG5ldyBRU2hvcnRjdXQoUXQ6OkNU
UkwgfCBRdDo6S2V5X0wsIHRoaXMpOwogICAgIGNvbm5lY3Qoc2VsZWN0QWRkcmVzc0JhciwgU0lH
TkFMKGFjdGl2YXRlZCgpKSwgdGhpcywgU0xPVChvcGVuTG9jYXRpb24oKSkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111836</attachid>
            <date>2011-10-20 13:22:05 -0700</date>
            <delta_ts>2011-10-20 13:24:02 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>70529_20111020-222001.patch</filename>
            <type>text/plain</type>
            <size>17969</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZjFjOWE4Li5kNjZhNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTEtMTAtMjAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
IAorICAgICAgICBbUXRdW1dLMl0gUmV3cml0ZSBNaW5pQnJvd3NlciBpbiBRTUwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzE1CisKKyAgICAgICAg
QWRkIGEgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIE1pbmlCcm93c2VyLgorCisg
ICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEu
Y29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBBbGJpc3NlciA8emVuby5hbGJpc3NlckBub2tp
YS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChP
T1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFEZXNrdG9w
V2ViVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKworMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAg
PHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgorCiAgICAgICAgIFtRdF1bV0syXSBEaXNhYmxlIENv
bnRleHQgTWVudXMgdW50aWwgd2UgaGF2ZSBhIHByb3BlciBRTUwgaW1wbGVtZW50YXRpb24KICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwNTM3CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cAppbmRleCAxODZiOWQ3Li45MWY1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBAIC0zMzEsNiArMzMxLDcgQEAgdm9p
ZCBRRGVza3RvcFdlYlZpZXc6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQogCiB2
b2lkIFFEZXNrdG9wV2ViVmlldzo6bW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkK
IHsKKyAgICBmb3JjZUFjdGl2ZUZvY3VzKCk7CiAgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwogfQog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWNk
Mzk5Ny4uZTU0YTViZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8emVu
by5hbGJpc3NlckBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWluaUJy
b3dzZXIgaW4gUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDMxNQorCisKKyAgICAgICAgQWRkIGEgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVudGF0
aW9uIG9mIE1pbmlCcm93c2VyLgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290dGUg
PGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBBbGJp
c3NlciA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNw
cDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoQnJv
d3NlcldpbmRvdzo6d2ViVmlldyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojpsb2FkKToKKyAg
ICAgICAgKEJyb3dzZXJXaW5kb3c6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoQnJvd3Nlcldp
bmRvdzo6fkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJX
aW5kb3cuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86CisgICAg
ICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjOgorICAgICAgICAqIE1pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJyb3dzZXJB
cHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbik6CisgICAgICAgIChNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oOgorICAgICAgICAoV2luZG93T3B0aW9uczo6V2lu
ZG93T3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFVybExvYWRlcjo6VXJsTG9hZGVyKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9p
Y29ucy9uZXh0LnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvcHJl
dmlvdXMucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZyZXNo
LnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L21haW4uY3BwOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOiBBZGRlZC4K
KworMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgor
CiAgICAgICAgIFtRdF1bV0syXSBSZW1vdmUgUXRXaWRnZXRzIGRlcGVuZGVuY3kgaW4gTWluaUJy
b3dzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
NTI5CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZWU5MGZhOC4u
NjQwYWUxYyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5j
cHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTI4LDMx
ICsyOCw0MyBAQAogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAiVXJs
TG9hZGVyLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNo
d2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKIAorI2luY2x1ZGUgPFF0RGVj
bGFyYXRpdmUvUURlY2xhcmF0aXZlQ29udGV4dD4KKworUV9ERUNMQVJFX01FVEFUWVBFKFFEZXNr
dG9wV2ViVmlldyopCitRX0RFQ0xBUkVfTUVUQVRZUEUoUVRvdWNoV2ViVmlldyopCiAKIEJyb3dz
ZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKLSAgICA6IG1f
dXJsTG9hZGVyKDApCiB7Ci0gICAgaWYgKG9wdGlvbnMpCi0gICAgICAgIG1fd2luZG93T3B0aW9u
cyA9ICpvcHRpb25zOwotICAgIGVsc2UgewotICAgICAgICBXaW5kb3dPcHRpb25zIHRtcE9wdGlv
bnM7Ci0gICAgICAgIG1fd2luZG93T3B0aW9ucyA9IHRtcE9wdGlvbnM7Ci0gICAgfQorICAgIHNl
dFdpbmRvd1RpdGxlKCJKdXN0IGEgVGl0bGUiKTsKKyAgICBzZXRXaW5kb3dGbGFncyhRdDo6V2lu
ZG93IHwgUXQ6OldpbmRvd1RpdGxlSGludCB8IFF0OjpXaW5kb3dNaW5NYXhCdXR0b25zSGludCB8
IFF0OjpXaW5kb3dDbG9zZUJ1dHRvbkhpbnQpOworICAgIHNldFJlc2l6ZU1vZGUoUVNHVmlldzo6
U2l6ZVJvb3RPYmplY3RUb1ZpZXcpOworICAgIHNldFNvdXJjZShRVXJsKCJxcmM6L3FtbC9Ccm93
c2VyV2luZG93LnFtbCIpKTsKIAotICAgIGlmIChtX3dpbmRvd09wdGlvbnMuc3RhcnRNYXhpbWl6
ZWQpCisgICAgcm9vdE9iamVjdCgpLT5zZXRQcm9wZXJ0eSgicHJpbnRMb2FkZWRVcmxzIiwgb3B0
aW9ucy0+cHJpbnRMb2FkZWRVcmxzKTsKKyAgICBjb25uZWN0KHJvb3RPYmplY3QoKSwgU0lHTkFM
KHBhZ2VUaXRsZUNoYW5nZWQoUVN0cmluZykpLCB0aGlzLCBTTE9UKHNldFdpbmRvd1RpdGxlKFFT
dHJpbmcpKSk7CisgICAgaWYgKG9wdGlvbnMtPnN0YXJ0TWF4aW1pemVkKQogICAgICAgICBzZXRX
aW5kb3dTdGF0ZShRdDo6V2luZG93TWF4aW1pemVkKTsKICAgICBlbHNlCiAgICAgICAgIHJlc2l6
ZSg4MDAsIDYwMCk7CiAgICAgc2hvdygpOwogfQogCitRT2JqZWN0KiBCcm93c2VyV2luZG93Ojp3
ZWJWaWV3KCkgY29uc3QKK3sKKyAgICBRT2JqZWN0KiB3ZWJWaWV3ID0gcm9vdE9iamVjdCgpLT5w
cm9wZXJ0eSgid2ViVmlldyIpLnZhbHVlPFFEZXNrdG9wV2ViVmlldyo+KCk7CisgICAgaWYgKCF3
ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0gcm9vdE9iamVjdCgpLT5wcm9wZXJ0eSgid2ViVmll
dyIpLnZhbHVlPFFUb3VjaFdlYlZpZXcqPigpOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCiB2
b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWQoY29uc3QgUVN0cmluZyYgdXJsKQogeworICAgIFFVcmwg
Y29tcGxldGVkVXJsID0gUVVybDo6ZnJvbVVzZXJJbnB1dCh1cmwpOworICAgIFFNZXRhT2JqZWN0
OjppbnZva2VNZXRob2Qocm9vdE9iamVjdCgpLCAibG9hZCIsIFF0OjpEaXJlY3RDb25uZWN0aW9u
LCBRX0FSRyhRVmFyaWFudCwgY29tcGxldGVkVXJsKSk7CiB9CiAKIEJyb3dzZXJXaW5kb3cqIEJy
b3dzZXJXaW5kb3c6Om5ld1dpbmRvdyhjb25zdCBRU3RyaW5nJiB1cmwpCkBAIC02Niw4ICs3OCwx
NCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnNjcmVlbnNob3QoKQogewogfQogCi12b2lkIEJyb3dz
ZXJXaW5kb3c6OmxvYWRVUkxMaXN0RnJvbUZpbGUoKQordm9pZCBCcm93c2VyV2luZG93OjprZXlQ
cmVzc0V2ZW50KFFLZXlFdmVudCAqZXZlbnQpCiB7CisgICAgaWYgKChldmVudC0+bW9kaWZpZXJz
KCkgPT0gUXQ6OkNvbnRyb2xNb2RpZmllciAmJiBldmVudC0+a2V5KCkgPT0gUXQ6OktleV9MKQor
ICAgICAgICB8fCBldmVudC0+a2V5KCkgPT0gUXQ6OktleV9GNikgeworICAgICAgICBRTWV0YU9i
amVjdDo6aW52b2tlTWV0aG9kKHJvb3RPYmplY3QoKSwgInNldEZvY3VzVG9BZGRyZXNzQmFyIiwg
UXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgICAgICBldmVudC0+YWNjZXB0KCk7CisgICAgfSBl
bHNlCisgICAgICAgIFFTR1ZpZXc6OmtleVByZXNzRXZlbnQoZXZlbnQpOwogfQogCiB2b2lkIEJy
b3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2VudExpc3QoKQpAQCAtNzYsNSArOTQsNCBAQCB2b2lk
IEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2VudExpc3QoKQogCiBCcm93c2VyV2luZG93Ojp+
QnJvd3NlcldpbmRvdygpCiB7Ci0gICAgZGVsZXRlIG1fdXJsTG9hZGVyOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDhlYzJkMWEuLmVhZDY1YTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTMxLDExICszMSw4IEBACiAKICNpbmNsdWRlICJN
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5jbHVk
ZSA8UVRpbWVyPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVNHVmlldz4KIAotY2xhc3MgVXJs
TG9hZGVyOwotCiBjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFTR1ZpZXcgewogICAgIFFf
T0JKRUNUCiAKQEAgLTUxLDEzICs0OCwxMSBAQCBwdWJsaWMgc2xvdHM6CiBwcm90ZWN0ZWQgc2xv
dHM6CiAgICAgdm9pZCBzY3JlZW5zaG90KCk7CiAKLSAgICB2b2lkIGxvYWRVUkxMaXN0RnJvbUZp
bGUoKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZl
bnQgKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRMaXN0KCk7Ci0KLSAg
ICBVcmxMb2FkZXIqIG1fdXJsTG9hZGVyOwotICAgIFdpbmRvd09wdGlvbnMgbV93aW5kb3dPcHRp
b25zOwogICAgIFFTdHJpbmdMaXN0IG1fdXNlckFnZW50TGlzdDsKIH07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L01pbmlCcm93c2VyLnBybwppbmRleCBhMmVkMDk4Li4yZGYyNjkzOCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtNDgsMyArNDgsNiBAQCBERUZJTkVTIC09IFFUX0FT
Q0lJX0NBU1RfV0FSTklOR1MKIAogIyBVc2UgdGhlIE1pbmlCcm93c2VyLnFyYyBmaWxlIGZyb20g
dGhlIHNvdXJjZXMuCiBSRVNPVVJDRVMgKz0gTWluaUJyb3dzZXIucXJjCisKK09USEVSX0ZJTEVT
ICs9IFwKKyAgICBxbWwvQnJvd3NlcldpbmRvdy5xbWwKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L01pbmlCcm93c2VyLnFyYyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93
c2VyLnFyYwppbmRleCBmZmU3N2IwLi5hNTdhOTU0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXIucXJjCkBAIC0xLDUgKzEsMTAgQEAKIDxSQ0M+CiAgICAgPHFyZXNvdXJjZSBwcmVmaXg9
Ii8iPgorICAgICAgICA8ZmlsZT5pY29ucy9uZXh0LnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+
aWNvbnMvcHJldmlvdXMucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5pY29ucy9yZWZyZXNoLnBu
ZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvc3RvcC5wbmc8L2ZpbGU+CisgICAgICAgIDxm
aWxlPnFtbC9Ccm93c2VyV2luZG93LnFtbDwvZmlsZT4KICAgICAgICAgPGZpbGU+dXNlcmFnZW50
bGlzdC50eHQ8L2ZpbGU+CiAgICAgPC9xcmVzb3VyY2U+CiA8L1JDQz4KZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggZDRiNTBhMS4uMmU3
NjcxOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlv
bi5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2luY2x1ZGUgIk1pbmlCcm93c2VyQXBwbGljYXRp
b24uaCIKIAorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgorI2luY2x1ZGUgInF0b3VjaHdl
YnZpZXcuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJ1dGlscy5oIgogI2luY2x1ZGUgPFFSZWdFeHA+CiAjaW5jbHVkZSA8UUV2ZW50PgpAQCAtNzAs
NiArNzMsNyBAQCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpNaW5pQnJvd3NlckFwcGxpY2F0aW9u
KGludCYgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgc2V0QXBwbGljYXRpb25OYW1lKCJRdE1pbmlC
cm93c2VyIik7CiAgICAgc2V0QXBwbGljYXRpb25WZXJzaW9uKCIwLjEiKTsKIAorICAgIHFtbFJl
Z2lzdGVyVHlwZTxRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI+KCk7CiAgICAgaGFuZGxlVXNlck9w
dGlvbnMoKTsKIH0KIApAQCAtMTM2LDE3ICsxNDAsMTYgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxp
Y2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygpCiAgICAgICAgICAgICAgPDwgIlstciBsaXN0XSIK
ICAgICAgICAgICAgICA8PCAiWy1yb2JvdC10aW1lb3V0IHNlY29uZHNdIgogICAgICAgICAgICAg
IDw8ICJbLXJvYm90LWV4dHJhLXRpbWUgc2Vjb25kc10iCi0gICAgICAgICAgICAgPDwgIlstY2h1
bmtlZC1kcmF3aW5nLWFyZWFdIgogICAgICAgICAgICAgIDw8ICJbLXByaW50LWxvYWRlZC11cmxz
XSIKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgICAgICAgICAg
PDwgIlstZ2wtdmlld3BvcnRdIgotI2VuZGlmCiAgICAgICAgICAgICAgPDwgIlVSTHMiOwogICAg
ICAgICBhcHBRdWl0KDApOwogICAgIH0KIAotICAgIGlmIChhcmdzLmNvbnRhaW5zKCItdG91Y2gi
KSkKKyAgICBpZiAoYXJncy5jb250YWlucygiLXRvdWNoIikpIHsKICAgICAgICAgbV93aW5kb3dP
cHRpb25zLnVzZVRvdWNoV2ViVmlldyA9IHRydWU7CisgICAgICAgIHFtbFJlZ2lzdGVyVHlwZTxR
VG91Y2hXZWJWaWV3PigiUXRRdWljayIsIDIsIDAsICJCcm93c2VyVmlldyIpOworICAgIH0gZWxz
ZQorICAgICAgICBxbWxSZWdpc3RlclR5cGU8UURlc2t0b3BXZWJWaWV3PigiUXRRdWljayIsIDIs
IDAsICJCcm93c2VyVmlldyIpOwogCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1tYXhpbWl6ZSIp
KQogICAgICAgICBtX3dpbmRvd09wdGlvbnMuc3RhcnRNYXhpbWl6ZWQgPSB0cnVlOwpAQCAtMTc2
LDkgKzE3OSw0IEBAIHZvaWQgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6aGFuZGxlVXNlck9wdGlv
bnMoKQogCiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1wcmludC1sb2FkZWQtdXJscyIpKQogICAg
ICAgICBtX3dpbmRvd09wdGlvbnMucHJpbnRMb2FkZWRVcmxzID0gdHJ1ZTsKLQotI2lmIGRlZmlu
ZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5HTCkKLSAgICBpZiAoYXJncy5jb250YWlucygiLWds
LXZpZXdwb3J0IikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy51c2VRR0xXaWRnZXRWaWV3cG9y
dCA9IHRydWU7Ci0jZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyQXBwbGljYXRpb24uaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
QXBwbGljYXRpb24uaAppbmRleCA3YjJkMTRhLi5kY2I1YzVkIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCkBAIC00MSwxOCArNDEsMTIgQEAgc3Ry
dWN0IFdpbmRvd09wdGlvbnMgewogICAgICAgICA6IHByaW50TG9hZGVkVXJscyhmYWxzZSkKICAg
ICAgICAgLCB1c2VUb3VjaFdlYlZpZXcoZmFsc2UpCiAgICAgICAgICwgc3RhcnRNYXhpbWl6ZWQo
ZmFsc2UpCi0jaWYgZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgICAgICAs
IHVzZVFHTFdpZGdldFZpZXdwb3J0KGZhbHNlKQotI2VuZGlmCiAgICAgewogICAgIH0KIAogICAg
IGJvb2wgcHJpbnRMb2FkZWRVcmxzOwogICAgIGJvb2wgdXNlVG91Y2hXZWJWaWV3OwogICAgIGJv
b2wgc3RhcnRNYXhpbWl6ZWQ7Ci0jaWYgZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdM
KQotICAgIGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQ7Ci0jZW5kaWYKIH07CiAKIGNsYXNzIE1p
bmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJsaWMgUUd1aUFwcGxpY2F0aW9uIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9VcmxMb2FkZXIuY3BwCmluZGV4IGY4MmE2ZDMuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvVXJsTG9hZGVyLmNwcApAQCAtNDEsMTYgKzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVy
KEJyb3dzZXJXaW5kb3cqIGJyb3dzZXJXaW5kb3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5h
bWUsCiAgICAgbV9jaGVja0lmRmluaXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAg
IGNvbm5lY3QoJm1fY2hlY2tJZkZpbmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlz
LCBTTE9UKGNoZWNrSWZGaW5pc2hlZCgpKSk7CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRG
aW5pc2hlZCBvbiBRV2ViUGFnZSBpcyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQot
Ci0gICAgLy8gRklYTUU6IFJlY29ubmVjdCB0aGlzIHNpZ25hbHMgYWZ0ZXIgUXQ1L1F0UXVpY2sg
cmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAgLy8gY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndl
YlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZFN0YXJ0
ZWQoKSkpOwotICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05B
TChsb2FkRmluaXNoZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsK
KyAgICBjb25uZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0
ZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkU3RhcnRlZCgpKSk7CisgICAgY29ubmVjdChtX2Jy
b3dzZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNM
T1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53
ZWJWaWV3KCksIFNJR05BTChsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBp
bnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwogCiAg
ICAgaWYgKHRpbWVvdXRTZWNvbmRzKSB7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldEludGVy
dmFsKHRpbWVvdXRTZWNvbmRzICogMTAwMCk7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldFNp
bmdsZVNob3QodHJ1ZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZWNvbm5lY3QgdGhpcyBzaWduYWwg
YWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAgICAgIC8vIGNvbm5l
Y3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1f
dGltZW91dFRpbWVyLCBTTE9UKHN0YXJ0KCkpKTsKKyAgICAgICAgY29ubmVjdChtX2Jyb3dzZXJX
aW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIs
IFNMT1Qoc3RhcnQoKSkpOwogICAgICAgICBjb25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFM
KHRpbWVvdXQoKSksIHRoaXMsIFNMT1QobG9hZE5leHQoKSkpOwogICAgIH0KICAgICBpZiAoZXh0
cmFUaW1lU2Vjb25kcykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMv
bmV4dC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNmNjVkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwg
YW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgZGlmZmVyCmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmcgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTNiZTNkMQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0L2ljb25zL3ByZXZpb3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNv
bnMvcmVmcmVzaC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNGQw
MgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25z
L3JlZnJlc2gucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNv
bnMvc3RvcC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjgyOTBiCkJpbmFyeSBmaWxlcyAvZGV2L251
bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcgZGlmZmVyCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L21haW4uY3BwCmluZGV4IGEyMGIyNWUuLmNjN2M2MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3Bw
CkBAIC02MSw2ICs2MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAg
IEJyb3dzZXJXaW5kb3cqIHdpbmRvdyA9IG5ldyBCcm93c2VyV2luZG93KCZhcHAubV93aW5kb3dP
cHRpb25zKTsKICAgICB3aW5kb3ctPmxvYWQodXJscy5hdCgwKSk7CisgICAgd2luZG93LT5zZXRH
ZW9tZXRyeSgxMDAsIDEwMCwgODAwLCA2MDApOwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1
cmxzLnNpemUoKTsgKytpKQogICAgICAgICB3aW5kb3ctPm5ld1dpbmRvdyh1cmxzLmF0KGkpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjJlZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCkBAIC0wLDAgKzEsMTY2IEBACitp
bXBvcnQgUXRRdWljayAyLjAKKworCitSZWN0YW5nbGUgeworICAgIC8vZG8gbm90IGRlZmluZSBh
bmNob3JzIG9yIGEgaW5pdGlhbGlzaXplIGhlcmUhIFRoaXMgd291bGQgbWVzc3VwIHdpdGggUVNH
Vmlld1NpemVSb290T2JqZXRUb1ZpZXcuCisKKyAgICBwcm9wZXJ0eSBib29sIHByaW50TG9hZGVk
VXJsczogZmFsc2UKKyAgICBwcm9wZXJ0eSBhbGlhcyBuYXZpZ2F0aW9uOiBicm93c2VyVmlldy5u
YXZpZ2F0aW9uCisgICAgcHJvcGVydHkgYWxpYXMgdGl0bGU6IGJyb3dzZXJWaWV3LnRpdGxlCisg
ICAgcHJvcGVydHkgYWxpYXMgd2ViVmlldzogYnJvd3NlclZpZXcKKworICAgIHNpZ25hbCBwYWdl
VGl0bGVDaGFuZ2VkKHN0cmluZyB0aXRsZSkKKworICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVzcykg
eworICAgICAgICBicm93c2VyVmlldy5sb2FkKGFkZHJlc3MpCisgICAgfQorCisgICAgZnVuY3Rp
b24gc2V0Rm9jdXNUb0FkZHJlc3NCYXIoKSB7CisgICAgICAgIGFkZHJlc3NMaW5lLmZvcmNlQWN0
aXZlRm9jdXMoKQorICAgICAgICBhZGRyZXNzTGluZS5zZWxlY3RBbGwoKQorICAgIH0KKworICAg
IFJlY3RhbmdsZSB7CisgICAgICAgIGlkOiBuYXZpZ2F0aW9uQmFyCisgICAgICAgIGNvbG9yOiAi
I2VmZWZlZiIKKyAgICAgICAgYW5jaG9ycy50b3A6IHBhcmVudC50b3AKKyAgICAgICAgYW5jaG9y
cy5sZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICBhbmNob3JzLnJpZ2h0OiBwYXJlbnQucmlnaHQK
KyAgICAgICAgaGVpZ2h0OiAzMAorCisgICAgICAgIFJvdyB7CisgICAgICAgICAgICBpZDogY29u
dHJvbHNSb3cKKyAgICAgICAgICAgIHNwYWNpbmc6IDQKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7
CisgICAgICAgICAgICAgICAgaWQ6IGJhY2tCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IG5hdmlnYXRpb25CYXIuaGVpZ2h0LTIKKyAgICAgICAgICAgICAgICB3aWR0aDogIGhlaWdodAor
ICAgICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKworICAgICAgICAgICAgICAgIEltYWdl
IHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL3ByZXZpb3VzLnBuZyIKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgICAg
ICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmVsb2Fk
QnV0dG9uLmNvbG9yCisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAg
ICAgICAgICAgICB2aXNpYmxlOiAhbmF2aWdhdGlvbi5jYW5Hb0JhY2sKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBh
bmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJnb2luZyBiYWNrIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5hdmlnYXRpb24uZ29CYWNrKCkKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3Rhbmds
ZSB7CisgICAgICAgICAgICAgICAgaWQ6IGZvcndhcmRCdXR0b24KKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0LTIKKyAgICAgICAgICAgICAgICB3aWR0aDogIGhl
aWdodAorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKworICAgICAgICAgICAgICAg
IEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50Cisg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL25leHQucG5nIgorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBmb3J3
YXJkQnV0dG9uLmNvbG9yCisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAg
ICAgICAgICAgICAgICB2aXNpYmxlOiAhbmF2aWdhdGlvbi5jYW5Hb0ZvcndhcmQKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAg
ICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJnb2luZyBmb3J3YXJkIikK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24uZ29Gb3J3YXJkKCkKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IHJlbG9hZEJ1dHRvbgorICAgICAg
ICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5oZWlnaHQtMgorICAgICAgICAgICAgICAg
IHdpZHRoOiAgaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorCisgICAg
ICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlcklu
OiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291cmNlOiBuYXZpZ2F0aW9uLmNhblN0b3Ag
PyAiLi4vaWNvbnMvc3RvcC5wbmciIDogIi4uL2ljb25zL3JlZnJlc2gucG5nIgorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAg
ICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDog
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRpb24uY2FuU3RvcCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJzdG9wIGxvYWRpbmciKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24uc3RvcCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCJyZWxvYWRpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24u
cmVsb2FkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBS
ZWN0YW5nbGUgeworICAgICAgICAgICAgY29sb3I6ICJ3aGl0ZSIKKyAgICAgICAgICAgIGFuY2hv
cnMubGVmdDogY29udHJvbHNSb3cucmlnaHQKKyAgICAgICAgICAgIGFuY2hvcnMucmlnaHQ6IHBh
cmVudC5yaWdodAorICAgICAgICAgICAgYW5jaG9ycy5tYXJnaW5zOiAyCisgICAgICAgICAgICBh
bmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGljYWxDZW50ZXIKKyAgICAgICAgICAg
IGhlaWdodDogbmF2aWdhdGlvbkJhci5oZWlnaHQtNAorICAgICAgICAgICAgYm9yZGVyLndpZHRo
OiAxCisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGFuY2hvcnMudG9w
OiBwYXJlbnQudG9wCisgICAgICAgICAgICAgICAgYW5jaG9ycy5ib3R0b206IHBhcmVudC5ib3R0
b20KKyAgICAgICAgICAgICAgICBhbmNob3JzLmxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAg
ICAgICAgd2lkdGg6IHBhcmVudC53aWR0aC8xMDAqYnJvd3NlclZpZXcubG9hZFByb2dyZXNzCisg
ICAgICAgICAgICAgICAgY29sb3I6ICJibHVlIgorICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAu
MworICAgICAgICAgICAgICAgIHZpc2libGU6IGJyb3dzZXJWaWV3LmxvYWRQcm9ncmVzcyAhPSAx
MDAKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVGV4dElucHV0IHsKKyAgICAgICAgICAg
ICAgICBpZDogYWRkcmVzc0xpbmUKKyAgICAgICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2Vu
dGVyOiBwYXJlbnQudmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgICAgICBhbmNob3JzLmxlZnQ6
IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5yaWdodDogcGFyZW50LnJpZ2h0
CisgICAgICAgICAgICAgICAgYW5jaG9ycy5tYXJnaW5zOiAyCisgICAgICAgICAgICAgICAgZm9u
dC5wb2ludFNpemU6IDE0CisgICAgICAgICAgICAgICAgZm9udC5mYW1pbHk6ICJIZWx2ZXRpY2Ei
CisgICAgICAgICAgICAgICAgY2xpcDogdHJ1ZQorICAgICAgICAgICAgICAgIHNlbGVjdEJ5TW91
c2U6IHRydWUKKworICAgICAgICAgICAgICAgIEtleXMub25SZXR1cm5QcmVzc2VkOnsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5sb2coImdvaW5nIHRvOiAiLCBhZGRyZXNzTGluZS50ZXh0
KQorICAgICAgICAgICAgICAgICAgICBicm93c2VyVmlldy5sb2FkKGFkZHJlc3NMaW5lLnRleHQp
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgQnJvd3NlclZpZXcgeworICAgICAgICBpZDogYnJvd3NlclZpZXcKKyAgICAgICAgYW5jaG9y
cy50b3A6IG5hdmlnYXRpb25CYXIuYm90dG9tCisgICAgICAgIGFuY2hvcnMubGVmdDogcGFyZW50
LmxlZnQKKyAgICAgICAgYW5jaG9ycy5yaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgIGFuY2hv
cnMuYm90dG9tOiBwYXJlbnQuYm90dG9tCisKKyAgICAgICAgb25UaXRsZUNoYW5nZWQ6IHsKKyAg
ICAgICAgICAgIHBhZ2VUaXRsZUNoYW5nZWQodGl0bGUpCisgICAgICAgIH0KKworICAgICAgICBv
blVybENoYW5nZWQ6IHsKKyAgICAgICAgICAgIGFkZHJlc3NMaW5lLnRleHQgPSB1cmwKKyAgICAg
ICAgICAgIGlmIChwcmludExvYWRlZFVybHMpCisgICAgICAgICAgICAgICAgY29uc29sZS5sb2co
IkxvYWRlZDoiLCB1cmwpOworICAgICAgICAgICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAgICAg
ICB9CisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111837</attachid>
            <date>2011-10-20 13:24:02 -0700</date>
            <delta_ts>2011-10-21 10:20:10 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>70529_20111020-222001.patch</filename>
            <type>text/plain</type>
            <size>17714</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZjFjOWE4Li5kNjZhNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKyAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8emVuby5hbGJpc3NlckBub2tpYS5jb20+
CisgCisgICAgICAgIFtRdF1bV0syXSBSZXdyaXRlIE1pbmlCcm93c2VyIGluIFFNTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAzMTUKKworICAgICAg
ICBBZGQgYSBmaXJzdCBRTUwgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgTWluaUJyb3dzZXIuCisK
KyAgICAgICAgUGF0Y2ggYnkgSm9jZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+LAorICAgICAgICAgICAgICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5v
a2lhLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorCjIwMTEtMTAtMjAgIFplbm8gQWxiaXNzZXIg
IDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRleCAxODZiOWQ3Li45MWY1OGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vi
dmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwCkBAIC0zMzEsNiArMzMxLDcgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXc6OmZvY3Vz
T3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQogCiB2b2lkIFFEZXNrdG9wV2ViVmlldzo6bW91
c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkKIHsKKyAgICBmb3JjZUFjdGl2ZUZvY3Vz
KCk7CiAgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWNkMzk5Ny4uZTU0YTViZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBA
CisgMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgor
IAorICAgICAgICBbUXRdW1dLMl0gUmV3cml0ZSBNaW5pQnJvd3NlciBpbiBRTUwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzE1CisKKworICAgICAg
ICBBZGQgYSBmaXJzdCBRTUwgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgTWluaUJyb3dzZXIuCisK
KyAgICAgICAgUGF0Y2ggYnkgSm9jZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+LAorICAgICAgICAgICAgICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoQnJvd3Nlcldp
bmRvdzo6QnJvd3NlcldpbmRvdyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp3ZWJWaWV3KToK
KyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OmxvYWQpOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6
a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp+QnJvd3NlcldpbmRvdyk6
CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3Nlci5xcmM6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBs
aWNhdGlvbi5jcHA6CisgICAgICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uKToKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246OmhhbmRsZVVz
ZXJPcHRpb25zKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0
aW9uLmg6CisgICAgICAgIChXaW5kb3dPcHRpb25zOjpXaW5kb3dPcHRpb25zKToKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwOgorICAgICAgICAoVXJsTG9hZGVyOjpVcmxM
b2FkZXIpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL25leHQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmc6IEFkZGVkLgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nOiBBZGRlZC4KKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9xdC9xbWwvQnJvd3NlcldpbmRvdy5xbWw6IEFkZGVkLgorCjIwMTEtMTAtMjAgIFplbm8gQWxi
aXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5jcHAKaW5kZXggZWU5MGZhOC4uNjQwYWUxYyAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTI4LDMxICsyOCw0MyBAQAogCiAjaW5jbHVkZSAiQnJv
d3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAiVXJsTG9hZGVyLmgiCiAjaW5jbHVkZSAicWRlc2t0
b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3Vj
aHdlYnBhZ2UuaCIKIAorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlQ29udGV4
dD4KKworUV9ERUNMQVJFX01FVEFUWVBFKFFEZXNrdG9wV2ViVmlldyopCitRX0RFQ0xBUkVfTUVU
QVRZUEUoUVRvdWNoV2ViVmlldyopCiAKIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2lu
ZG93T3B0aW9ucyogb3B0aW9ucykKLSAgICA6IG1fdXJsTG9hZGVyKDApCiB7Ci0gICAgaWYgKG9w
dGlvbnMpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucyA9ICpvcHRpb25zOwotICAgIGVsc2Ugewot
ICAgICAgICBXaW5kb3dPcHRpb25zIHRtcE9wdGlvbnM7Ci0gICAgICAgIG1fd2luZG93T3B0aW9u
cyA9IHRtcE9wdGlvbnM7Ci0gICAgfQorICAgIHNldFdpbmRvd1RpdGxlKCJKdXN0IGEgVGl0bGUi
KTsKKyAgICBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93IHwgUXQ6OldpbmRvd1RpdGxlSGludCB8
IFF0OjpXaW5kb3dNaW5NYXhCdXR0b25zSGludCB8IFF0OjpXaW5kb3dDbG9zZUJ1dHRvbkhpbnQp
OworICAgIHNldFJlc2l6ZU1vZGUoUVNHVmlldzo6U2l6ZVJvb3RPYmplY3RUb1ZpZXcpOworICAg
IHNldFNvdXJjZShRVXJsKCJxcmM6L3FtbC9Ccm93c2VyV2luZG93LnFtbCIpKTsKIAotICAgIGlm
IChtX3dpbmRvd09wdGlvbnMuc3RhcnRNYXhpbWl6ZWQpCisgICAgcm9vdE9iamVjdCgpLT5zZXRQ
cm9wZXJ0eSgicHJpbnRMb2FkZWRVcmxzIiwgb3B0aW9ucy0+cHJpbnRMb2FkZWRVcmxzKTsKKyAg
ICBjb25uZWN0KHJvb3RPYmplY3QoKSwgU0lHTkFMKHBhZ2VUaXRsZUNoYW5nZWQoUVN0cmluZykp
LCB0aGlzLCBTTE9UKHNldFdpbmRvd1RpdGxlKFFTdHJpbmcpKSk7CisgICAgaWYgKG9wdGlvbnMt
PnN0YXJ0TWF4aW1pemVkKQogICAgICAgICBzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93TWF4aW1p
emVkKTsKICAgICBlbHNlCiAgICAgICAgIHJlc2l6ZSg4MDAsIDYwMCk7CiAgICAgc2hvdygpOwog
fQogCitRT2JqZWN0KiBCcm93c2VyV2luZG93Ojp3ZWJWaWV3KCkgY29uc3QKK3sKKyAgICBRT2Jq
ZWN0KiB3ZWJWaWV3ID0gcm9vdE9iamVjdCgpLT5wcm9wZXJ0eSgid2ViVmlldyIpLnZhbHVlPFFE
ZXNrdG9wV2ViVmlldyo+KCk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICB3ZWJWaWV3ID0g
cm9vdE9iamVjdCgpLT5wcm9wZXJ0eSgid2ViVmlldyIpLnZhbHVlPFFUb3VjaFdlYlZpZXcqPigp
OworICAgIHJldHVybiB3ZWJWaWV3OworfQorCiB2b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWQoY29u
c3QgUVN0cmluZyYgdXJsKQogeworICAgIFFVcmwgY29tcGxldGVkVXJsID0gUVVybDo6ZnJvbVVz
ZXJJbnB1dCh1cmwpOworICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qocm9vdE9iamVjdCgp
LCAibG9hZCIsIFF0OjpEaXJlY3RDb25uZWN0aW9uLCBRX0FSRyhRVmFyaWFudCwgY29tcGxldGVk
VXJsKSk7CiB9CiAKIEJyb3dzZXJXaW5kb3cqIEJyb3dzZXJXaW5kb3c6Om5ld1dpbmRvdyhjb25z
dCBRU3RyaW5nJiB1cmwpCkBAIC02Niw4ICs3OCwxNCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnNj
cmVlbnNob3QoKQogewogfQogCi12b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWRVUkxMaXN0RnJvbUZp
bGUoKQordm9pZCBCcm93c2VyV2luZG93OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZXZlbnQp
CiB7CisgICAgaWYgKChldmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OkNvbnRyb2xNb2RpZmllciAm
JiBldmVudC0+a2V5KCkgPT0gUXQ6OktleV9MKQorICAgICAgICB8fCBldmVudC0+a2V5KCkgPT0g
UXQ6OktleV9GNikgeworICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHJvb3RPYmpl
Y3QoKSwgInNldEZvY3VzVG9BZGRyZXNzQmFyIiwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAg
ICAgICBldmVudC0+YWNjZXB0KCk7CisgICAgfSBlbHNlCisgICAgICAgIFFTR1ZpZXc6OmtleVBy
ZXNzRXZlbnQoZXZlbnQpOwogfQogCiB2b2lkIEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2Vu
dExpc3QoKQpAQCAtNzYsNSArOTQsNCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJB
Z2VudExpc3QoKQogCiBCcm93c2VyV2luZG93Ojp+QnJvd3NlcldpbmRvdygpCiB7Ci0gICAgZGVs
ZXRlIG1fdXJsTG9hZGVyOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJv
d3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4
IDhlYzJkMWEuLmVhZDY1YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAg
LTMxLDExICszMSw4IEBACiAKICNpbmNsdWRlICJNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCiAj
aW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5jbHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFF0RGVj
bGFyYXRpdmUvUVNHVmlldz4KIAotY2xhc3MgVXJsTG9hZGVyOwotCiBjbGFzcyBCcm93c2VyV2lu
ZG93IDogcHVibGljIFFTR1ZpZXcgewogICAgIFFfT0JKRUNUCiAKQEAgLTUxLDEzICs0OCwxMSBA
QCBwdWJsaWMgc2xvdHM6CiBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgdm9pZCBzY3JlZW5zaG90KCk7
CiAKLSAgICB2b2lkIGxvYWRVUkxMaXN0RnJvbUZpbGUoKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKik7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVVc2VyQWdlbnRMaXN0KCk7Ci0KLSAgICBVcmxMb2FkZXIqIG1fdXJsTG9hZGVyOwot
ICAgIFdpbmRvd09wdGlvbnMgbV93aW5kb3dPcHRpb25zOwogICAgIFFTdHJpbmdMaXN0IG1fdXNl
ckFnZW50TGlzdDsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlC
cm93c2VyLnBybyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwppbmRleCBh
MmVkMDk4Li4yZGYyNjkzOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAt
NDgsMyArNDgsNiBAQCBERUZJTkVTIC09IFFUX0FTQ0lJX0NBU1RfV0FSTklOR1MKIAogIyBVc2Ug
dGhlIE1pbmlCcm93c2VyLnFyYyBmaWxlIGZyb20gdGhlIHNvdXJjZXMuCiBSRVNPVVJDRVMgKz0g
TWluaUJyb3dzZXIucXJjCisKK09USEVSX0ZJTEVTICs9IFwKKyAgICBxbWwvQnJvd3NlcldpbmRv
dy5xbWwKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnFyYwppbmRleCBmZmU3N2IwLi5hNTdh
OTU0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5xcmMKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjCkBAIC0xLDUgKzEsMTAgQEAK
IDxSQ0M+CiAgICAgPHFyZXNvdXJjZSBwcmVmaXg9Ii8iPgorICAgICAgICA8ZmlsZT5pY29ucy9u
ZXh0LnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvcHJldmlvdXMucG5nPC9maWxlPgor
ICAgICAgICA8ZmlsZT5pY29ucy9yZWZyZXNoLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNv
bnMvc3RvcC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPnFtbC9Ccm93c2VyV2luZG93LnFtbDwv
ZmlsZT4KICAgICAgICAgPGZpbGU+dXNlcmFnZW50bGlzdC50eHQ8L2ZpbGU+CiAgICAgPC9xcmVz
b3VyY2U+CiA8L1JDQz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93
c2VyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBs
aWNhdGlvbi5jcHAKaW5kZXggZDRiNTBhMS4uMmU3NjcxOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAog
I2luY2x1ZGUgIk1pbmlCcm93c2VyQXBwbGljYXRpb24uaCIKIAorI2luY2x1ZGUgInFkZXNrdG9w
d2Vidmlldy5oIgorI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxd2VibmF2
aWdhdGlvbmNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgPFFSZWdF
eHA+CiAjaW5jbHVkZSA8UUV2ZW50PgpAQCAtNzAsNiArNzMsNyBAQCBNaW5pQnJvd3NlckFwcGxp
Y2F0aW9uOjpNaW5pQnJvd3NlckFwcGxpY2F0aW9uKGludCYgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgc2V0QXBwbGljYXRpb25OYW1lKCJRdE1pbmlCcm93c2VyIik7CiAgICAgc2V0QXBwbGljYXRp
b25WZXJzaW9uKCIwLjEiKTsKIAorICAgIHFtbFJlZ2lzdGVyVHlwZTxRV2ViTmF2aWdhdGlvbkNv
bnRyb2xsZXI+KCk7CiAgICAgaGFuZGxlVXNlck9wdGlvbnMoKTsKIH0KIApAQCAtMTM2LDE3ICsx
NDAsMTYgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygp
CiAgICAgICAgICAgICAgPDwgIlstciBsaXN0XSIKICAgICAgICAgICAgICA8PCAiWy1yb2JvdC10
aW1lb3V0IHNlY29uZHNdIgogICAgICAgICAgICAgIDw8ICJbLXJvYm90LWV4dHJhLXRpbWUgc2Vj
b25kc10iCi0gICAgICAgICAgICAgPDwgIlstY2h1bmtlZC1kcmF3aW5nLWFyZWFdIgogICAgICAg
ICAgICAgIDw8ICJbLXByaW50LWxvYWRlZC11cmxzXSIKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VS
RURfV0lUSF9PUEVOR0wpCi0gICAgICAgICAgICAgPDwgIlstZ2wtdmlld3BvcnRdIgotI2VuZGlm
CiAgICAgICAgICAgICAgPDwgIlVSTHMiOwogICAgICAgICBhcHBRdWl0KDApOwogICAgIH0KIAot
ICAgIGlmIChhcmdzLmNvbnRhaW5zKCItdG91Y2giKSkKKyAgICBpZiAoYXJncy5jb250YWlucygi
LXRvdWNoIikpIHsKICAgICAgICAgbV93aW5kb3dPcHRpb25zLnVzZVRvdWNoV2ViVmlldyA9IHRy
dWU7CisgICAgICAgIHFtbFJlZ2lzdGVyVHlwZTxRVG91Y2hXZWJWaWV3PigiUXRRdWljayIsIDIs
IDAsICJCcm93c2VyVmlldyIpOworICAgIH0gZWxzZQorICAgICAgICBxbWxSZWdpc3RlclR5cGU8
UURlc2t0b3BXZWJWaWV3PigiUXRRdWljayIsIDIsIDAsICJCcm93c2VyVmlldyIpOwogCiAgICAg
aWYgKGFyZ3MuY29udGFpbnMoIi1tYXhpbWl6ZSIpKQogICAgICAgICBtX3dpbmRvd09wdGlvbnMu
c3RhcnRNYXhpbWl6ZWQgPSB0cnVlOwpAQCAtMTc2LDkgKzE3OSw0IEBAIHZvaWQgTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbjo6aGFuZGxlVXNlck9wdGlvbnMoKQogCiAgICAgaWYgKGFyZ3MuY29udGFp
bnMoIi1wcmludC1sb2FkZWQtdXJscyIpKQogICAgICAgICBtX3dpbmRvd09wdGlvbnMucHJpbnRM
b2FkZWRVcmxzID0gdHJ1ZTsKLQotI2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5H
TCkKLSAgICBpZiAoYXJncy5jb250YWlucygiLWdsLXZpZXdwb3J0IikpCi0gICAgICAgIG1fd2lu
ZG93T3B0aW9ucy51c2VRR0xXaWRnZXRWaWV3cG9ydCA9IHRydWU7Ci0jZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaCBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaAppbmRleCA3YjJkMTRh
Li5kY2I1YzVkIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFw
cGxpY2F0aW9uLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5oCkBAIC00MSwxOCArNDEsMTIgQEAgc3RydWN0IFdpbmRvd09wdGlvbnMgewogICAgICAg
ICA6IHByaW50TG9hZGVkVXJscyhmYWxzZSkKICAgICAgICAgLCB1c2VUb3VjaFdlYlZpZXcoZmFs
c2UpCiAgICAgICAgICwgc3RhcnRNYXhpbWl6ZWQoZmFsc2UpCi0jaWYgZGVmaW5lZChRVF9DT05G
SUdVUkVEX1dJVEhfT1BFTkdMKQotICAgICAgICAsIHVzZVFHTFdpZGdldFZpZXdwb3J0KGZhbHNl
KQotI2VuZGlmCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgcHJpbnRMb2FkZWRVcmxzOwogICAg
IGJvb2wgdXNlVG91Y2hXZWJWaWV3OwogICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQ7Ci0jaWYgZGVm
aW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIGJvb2wgdXNlUUdMV2lkZ2V0Vmll
d3BvcnQ7Ci0jZW5kaWYKIH07CiAKIGNsYXNzIE1pbmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJs
aWMgUUd1aUFwcGxpY2F0aW9uIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L1Vy
bExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwCmluZGV4IGY4
MmE2ZDMuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRl
ci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcApAQCAtNDEsMTYg
KzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVyKEJyb3dzZXJXaW5kb3cqIGJyb3dzZXJXaW5k
b3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUsCiAgICAgbV9jaGVja0lmRmluaXNoZWRU
aW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAgIGNvbm5lY3QoJm1fY2hlY2tJZkZpbmlzaGVk
VGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNoZWNrSWZGaW5pc2hlZCgpKSk7
CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBvbiBRV2ViUGFnZSBpcyBlbWl0
dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQotCi0gICAgLy8gRklYTUU6IFJlY29ubmVjdCB0
aGlzIHNpZ25hbHMgYWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAg
Ly8gY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVk
KCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZFN0YXJ0ZWQoKSkpOwotICAgIC8vIGNvbm5lY3QobV9i
cm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCB0aGlz
LCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fYnJvd3NlcldpbmRv
dy0+d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2Fk
U3RhcnRlZCgpKSk7CisgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lH
TkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwor
ICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkRmFpbGVk
KFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSksIHRoaXMsIFNM
T1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwogCiAgICAgaWYgKHRpbWVvdXRTZWNvbmRzKSB7CiAg
ICAgICAgIG1fdGltZW91dFRpbWVyLnNldEludGVydmFsKHRpbWVvdXRTZWNvbmRzICogMTAwMCk7
CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7Ci0gICAgICAgIC8v
IEZJWE1FOiBSZWNvbm5lY3QgdGhpcyBzaWduYWwgYWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBp
ZiBuZWNlc3NhcnkuCi0gICAgICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3
KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRpbWVyLCBTTE9UKHN0YXJ0KCkp
KTsKKyAgICAgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxv
YWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIsIFNMT1Qoc3RhcnQoKSkpOwogICAgICAgICBj
b25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1QobG9h
ZE5leHQoKSkpOwogICAgIH0KICAgICBpZiAoZXh0cmFUaW1lU2Vjb25kcykgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
ZjNmNjVkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
aWNvbnMvbmV4dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9p
Y29ucy9wcmV2aW91cy5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiZTNkMQpCaW5hcnkgZmls
ZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3ByZXZpb3VzLnBu
ZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gu
cG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNGQwMgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nIGRpZmZlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9pY29ucy9zdG9wLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNjgyOTBiCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvaWNvbnMvc3RvcC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCmluZGV4IGEyMGIyNWUu
LmNjN2M2MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCkBAIC02MSw2ICs2MSw3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRvdyA9IG5l
dyBCcm93c2VyV2luZG93KCZhcHAubV93aW5kb3dPcHRpb25zKTsKICAgICB3aW5kb3ctPmxvYWQo
dXJscy5hdCgwKSk7CisgICAgd2luZG93LT5zZXRHZW9tZXRyeSgxMDAsIDEwMCwgODAwLCA2MDAp
OwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1cmxzLnNpemUoKTsgKytpKQogICAgICAgICB3
aW5kb3ctPm5ld1dpbmRvdyh1cmxzLmF0KGkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9C
cm93c2VyV2luZG93LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjJl
ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJX
aW5kb3cucW1sCkBAIC0wLDAgKzEsMTY2IEBACitpbXBvcnQgUXRRdWljayAyLjAKKworCitSZWN0
YW5nbGUgeworICAgIC8vZG8gbm90IGRlZmluZSBhbmNob3JzIG9yIGEgaW5pdGlhbGlzaXplIGhl
cmUhIFRoaXMgd291bGQgbWVzc3VwIHdpdGggUVNHVmlld1NpemVSb290T2JqZXRUb1ZpZXcuCisK
KyAgICBwcm9wZXJ0eSBib29sIHByaW50TG9hZGVkVXJsczogZmFsc2UKKyAgICBwcm9wZXJ0eSBh
bGlhcyBuYXZpZ2F0aW9uOiBicm93c2VyVmlldy5uYXZpZ2F0aW9uCisgICAgcHJvcGVydHkgYWxp
YXMgdGl0bGU6IGJyb3dzZXJWaWV3LnRpdGxlCisgICAgcHJvcGVydHkgYWxpYXMgd2ViVmlldzog
YnJvd3NlclZpZXcKKworICAgIHNpZ25hbCBwYWdlVGl0bGVDaGFuZ2VkKHN0cmluZyB0aXRsZSkK
KworICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVzcykgeworICAgICAgICBicm93c2VyVmlldy5sb2Fk
KGFkZHJlc3MpCisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0Rm9jdXNUb0FkZHJlc3NCYXIoKSB7
CisgICAgICAgIGFkZHJlc3NMaW5lLmZvcmNlQWN0aXZlRm9jdXMoKQorICAgICAgICBhZGRyZXNz
TGluZS5zZWxlY3RBbGwoKQorICAgIH0KKworICAgIFJlY3RhbmdsZSB7CisgICAgICAgIGlkOiBu
YXZpZ2F0aW9uQmFyCisgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAgICAgICAgYW5jaG9ycy50
b3A6IHBhcmVudC50b3AKKyAgICAgICAgYW5jaG9ycy5sZWZ0OiBwYXJlbnQubGVmdAorICAgICAg
ICBhbmNob3JzLnJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgaGVpZ2h0OiAzMAorCisgICAg
ICAgIFJvdyB7CisgICAgICAgICAgICBpZDogY29udHJvbHNSb3cKKyAgICAgICAgICAgIHNwYWNp
bmc6IDQKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IGJhY2tC
dXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0LTIKKyAg
ICAgICAgICAgICAgICB3aWR0aDogIGhlaWdodAorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2Vm
ZWZlZiIKKworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5j
aG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2lj
b25zL3ByZXZpb3VzLnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBS
ZWN0YW5nbGUgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAg
ICAgICAgICAgICAgICAgICBjb2xvcjogcmVsb2FkQnV0dG9uLmNvbG9yCisgICAgICAgICAgICAg
ICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhbmF2aWdh
dGlvbi5jYW5Hb0JhY2sKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3Vz
ZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAg
ICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJnb2luZyBiYWNrIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24u
Z29CYWNrKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IGZv
cndhcmRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0
LTIKKyAgICAgICAgICAgICAgICB3aWR0aDogIGhlaWdodAorICAgICAgICAgICAgICAgIGNvbG9y
OiAiI2VmZWZlZiIKKworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAg
ICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTog
Ii4uL2ljb25zL25leHQucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50Cisg
ICAgICAgICAgICAgICAgICAgIGNvbG9yOiBmb3J3YXJkQnV0dG9uLmNvbG9yCisgICAgICAgICAg
ICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhbmF2
aWdhdGlvbi5jYW5Hb0ZvcndhcmQKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAor
ICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJnb2luZyBmb3J3YXJkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5h
dmlnYXRpb24uZ29Gb3J3YXJkKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAg
ICAgICAgaWQ6IHJlbG9hZEJ1dHRvbgorICAgICAgICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlv
bkJhci5oZWlnaHQtMgorICAgICAgICAgICAgICAgIHdpZHRoOiAgaGVpZ2h0CisgICAgICAgICAg
ICAgICAgY29sb3I6ICIjZWZlZmVmIgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAg
ICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAg
ICAgc291cmNlOiBuYXZpZ2F0aW9uLmNhblN0b3AgPyAiLi4vaWNvbnMvc3RvcC5wbmciIDogIi4u
L2ljb25zL3JlZnJlc2gucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50Cisg
ICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG5hdmlnYXRpb24uY2FuU3RvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJzdG9wIGxvYWRpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
dmlnYXRpb24uc3RvcCgpCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJyZWxvYWRpbmciKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24ucmVsb2FkKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgY29s
b3I6ICJ3aGl0ZSIKKyAgICAgICAgICAgIGFuY2hvcnMubGVmdDogY29udHJvbHNSb3cucmlnaHQK
KyAgICAgICAgICAgIGFuY2hvcnMucmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAgICAgYW5j
aG9ycy5tYXJnaW5zOiAyCisgICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJl
bnQudmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5oZWln
aHQtNAorICAgICAgICAgICAgYm9yZGVyLndpZHRoOiAxCisgICAgICAgICAgICBSZWN0YW5nbGUg
eworICAgICAgICAgICAgICAgIGFuY2hvcnMudG9wOiBwYXJlbnQudG9wCisgICAgICAgICAgICAg
ICAgYW5jaG9ycy5ib3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgICAgICAgICBhbmNob3Jz
LmxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aC8x
MDAqYnJvd3NlclZpZXcubG9hZFByb2dyZXNzCisgICAgICAgICAgICAgICAgY29sb3I6ICJibHVl
IgorICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMworICAgICAgICAgICAgICAgIHZpc2libGU6
IGJyb3dzZXJWaWV3LmxvYWRQcm9ncmVzcyAhPSAxMDAKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgVGV4dElucHV0IHsKKyAgICAgICAgICAgICAgICBpZDogYWRkcmVzc0xpbmUKKyAgICAg
ICAgICAgICAgICBhbmNob3JzLnZlcnRpY2FsQ2VudGVyOiBwYXJlbnQudmVydGljYWxDZW50ZXIK
KyAgICAgICAgICAgICAgICBhbmNob3JzLmxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAg
ICAgYW5jaG9ycy5yaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAgYW5jaG9ycy5t
YXJnaW5zOiAyCisgICAgICAgICAgICAgICAgZm9udC5wb2ludFNpemU6IDE0CisgICAgICAgICAg
ICAgICAgZm9udC5mYW1pbHk6ICJIZWx2ZXRpY2EiCisgICAgICAgICAgICAgICAgY2xpcDogdHJ1
ZQorICAgICAgICAgICAgICAgIHNlbGVjdEJ5TW91c2U6IHRydWUKKworICAgICAgICAgICAgICAg
IEtleXMub25SZXR1cm5QcmVzc2VkOnsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2co
ImdvaW5nIHRvOiAiLCBhZGRyZXNzTGluZS50ZXh0KQorICAgICAgICAgICAgICAgICAgICBicm93
c2VyVmlldy5sb2FkKGFkZHJlc3NMaW5lLnRleHQpCisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQnJvd3NlclZpZXcgeworICAgICAgICBp
ZDogYnJvd3NlclZpZXcKKyAgICAgICAgYW5jaG9ycy50b3A6IG5hdmlnYXRpb25CYXIuYm90dG9t
CisgICAgICAgIGFuY2hvcnMubGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgYW5jaG9ycy5yaWdo
dDogcGFyZW50LnJpZ2h0CisgICAgICAgIGFuY2hvcnMuYm90dG9tOiBwYXJlbnQuYm90dG9tCisK
KyAgICAgICAgb25UaXRsZUNoYW5nZWQ6IHsKKyAgICAgICAgICAgIHBhZ2VUaXRsZUNoYW5nZWQo
dGl0bGUpCisgICAgICAgIH0KKworICAgICAgICBvblVybENoYW5nZWQ6IHsKKyAgICAgICAgICAg
IGFkZHJlc3NMaW5lLnRleHQgPSB1cmwKKyAgICAgICAgICAgIGlmIChwcmludExvYWRlZFVybHMp
CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkxvYWRlZDoiLCB1cmwpOworICAgICAgICAg
ICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAgICAgICB9CisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111980</attachid>
            <date>2011-10-21 10:20:10 -0700</date>
            <delta_ts>2011-10-23 07:09:56 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>70529_20111021-191319.patch</filename>
            <type>text/plain</type>
            <size>20652</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMDU5ZTNlLi44NDQ4OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTAtMjAgIFplbm8gQWxiaXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4K
KyAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWluaUJyb3dzZXIgaW4gUU1MCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMxNQorCisgICAgICAg
IEFkZCBhIGZpcnN0IFFNTCBiYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBNaW5pQnJvd3Nlci4KKwor
ICAgICAgICBQYXRjaCBieSBKb2NlbHluIFR1cmNvdHRlIDxqb2NlbHluLnR1cmNvdHRlQG5va2lh
LmNvbT4sCisgICAgICAgICAgICAgICAgIFplbm8gQWxiaXNzZXIgPHplbm8uYWxiaXNzZXJAbm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorCiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2Vy
ICA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFiNjcxZmEuLjY3NjhmOTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAor
MjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgorIAor
ICAgICAgICBbUXRdW1dLMl0gUmV3cml0ZSBNaW5pQnJvd3NlciBpbiBRTUwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMzE1CisKKworICAgICAgICBB
ZGQgYSBmaXJzdCBRTUwgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgTWluaUJyb3dzZXIuCisKKyAg
ICAgICAgUGF0Y2ggYnkgSm9jZWx5biBUdXJjb3R0ZSA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5j
b20+LAorICAgICAgICAgICAgICAgICBaZW5vIEFsYmlzc2VyIDx6ZW5vLmFsYmlzc2VyQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwOgorICAgICAgICAoQnJvd3NlcldpbmRv
dzo6QnJvd3NlcldpbmRvdyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp3ZWJWaWV3KToKKyAg
ICAgICAgKEJyb3dzZXJXaW5kb3c6OmxvYWQpOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6a2V5
UHJlc3NFdmVudCk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp+QnJvd3NlcldpbmRvdyk6Cisg
ICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3F0L01pbmlCcm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5p
QnJvd3Nlci5xcmM6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5jcHA6CisgICAgICAgIChNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpNaW5pQnJvd3NlckFw
cGxpY2F0aW9uKToKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246OmhhbmRsZVVzZXJP
cHRpb25zKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9u
Lmg6CisgICAgICAgIChXaW5kb3dPcHRpb25zOjpXaW5kb3dPcHRpb25zKToKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwOgorICAgICAgICAoVXJsTG9hZGVyOjpVcmxMb2Fk
ZXIpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL25leHQucG5nOiBBZGRlZC4KKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmc6IEFkZGVkLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nOiBBZGRlZC4KKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dz
ZXIvcXQvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9x
dC9xbWwvQnJvd3NlcldpbmRvdy5xbWw6IEFkZGVkLgorCiAyMDExLTEwLTIwICBaZW5vIEFsYmlz
c2VyICA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93
c2VyV2luZG93LmNwcAppbmRleCBlZTkwZmE4Li5hNThiNDQ0IDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyV2luZG93LmNwcApAQCAtMjgsMzEgKzI4LDQ1IEBACiAKICNpbmNsdWRlICJCcm93
c2VyV2luZG93LmgiCiAKLSNpbmNsdWRlICJVcmxMb2FkZXIuaCIKICNpbmNsdWRlICJxZGVza3Rv
cHdlYnZpZXcuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNo
d2VicGFnZS5oIgorI2luY2x1ZGUgInV0aWxzLmgiCiAKKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZl
L1FEZWNsYXJhdGl2ZUNvbnRleHQ+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRp
dmVFbmdpbmU+CisKK1FfREVDTEFSRV9NRVRBVFlQRShRRGVza3RvcFdlYlZpZXcqKQorUV9ERUNM
QVJFX01FVEFUWVBFKFFUb3VjaFdlYlZpZXcqKQogCiBCcm93c2VyV2luZG93OjpCcm93c2VyV2lu
ZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCi0gICAgOiBtX3VybExvYWRlcigwKQogewotICAg
IGlmIChvcHRpb25zKQotICAgICAgICBtX3dpbmRvd09wdGlvbnMgPSAqb3B0aW9uczsKLSAgICBl
bHNlIHsKLSAgICAgICAgV2luZG93T3B0aW9ucyB0bXBPcHRpb25zOwotICAgICAgICBtX3dpbmRv
d09wdGlvbnMgPSB0bXBPcHRpb25zOwotICAgIH0KLQotICAgIGlmIChtX3dpbmRvd09wdGlvbnMu
c3RhcnRNYXhpbWl6ZWQpCisgICAgc2V0V2luZG93VGl0bGUoIk1pbmlCcm93c2VyIik7CisgICAg
c2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvdyB8IFF0OjpXaW5kb3dUaXRsZUhpbnQgfCBRdDo6V2lu
ZG93TWluTWF4QnV0dG9uc0hpbnQgfCBRdDo6V2luZG93Q2xvc2VCdXR0b25IaW50KTsKKyAgICBz
ZXRSZXNpemVNb2RlKFFTR1ZpZXc6OlNpemVSb290T2JqZWN0VG9WaWV3KTsKKyAgICBlbmdpbmUo
KS0+YWRkSW1wb3J0UGF0aChRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbkRpclBhdGgoKS5h
cHBlbmQoIi4uL2ltcG9ydHMiKSk7CisgICAgZW5naW5lKCktPnJvb3RDb250ZXh0KCktPnNldENv
bnRleHRQcm9wZXJ0eSgib3B0aW9ucyIsIG9wdGlvbnMpOworICAgIHNldFNvdXJjZShRVXJsKCJx
cmM6L3FtbC9Ccm93c2VyV2luZG93LnFtbCIpKTsKKyAgICBjb25uZWN0KHJvb3RPYmplY3QoKSwg
U0lHTkFMKHBhZ2VUaXRsZUNoYW5nZWQoUVN0cmluZykpLCB0aGlzLCBTTE9UKHNldFdpbmRvd1Rp
dGxlKFFTdHJpbmcpKSk7CisgICAgaWYgKG9wdGlvbnMtPnN0YXJ0TWF4aW1pemVkKCkpCiAgICAg
ICAgIHNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dNYXhpbWl6ZWQpOwogICAgIGVsc2UKICAgICAg
ICAgcmVzaXplKDgwMCwgNjAwKTsKICAgICBzaG93KCk7CiB9CiAKK1FPYmplY3QqIEJyb3dzZXJX
aW5kb3c6OndlYlZpZXcoKSBjb25zdAoreworICAgIFFPYmplY3QqIHdlYlZpZXcgPSByb290T2Jq
ZWN0KCktPnByb3BlcnR5KCJ3ZWJWaWV3IikudmFsdWU8UURlc2t0b3BXZWJWaWV3Kj4oKTsKKyAg
ICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSByb290T2JqZWN0KCktPnByb3BlcnR5
KCJ3ZWJWaWV3IikudmFsdWU8UVRvdWNoV2ViVmlldyo+KCk7CisgICAgcmV0dXJuIHdlYlZpZXc7
Cit9CisKIHZvaWQgQnJvd3NlcldpbmRvdzo6bG9hZChjb25zdCBRU3RyaW5nJiB1cmwpCiB7Cisg
ICAgUVVybCBjb21wbGV0ZWRVcmwgPSB1cmxGcm9tVXNlcklucHV0KHVybCk7CisgICAgUU1ldGFP
YmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJsb2FkIiwgUXQ6OkRpcmVjdENvbm5l
Y3Rpb24sIFFfQVJHKFFWYXJpYW50LCBjb21wbGV0ZWRVcmwpKTsKIH0KIAogQnJvd3NlcldpbmRv
dyogQnJvd3NlcldpbmRvdzo6bmV3V2luZG93KGNvbnN0IFFTdHJpbmcmIHVybCkKQEAgLTY2LDgg
KzgwLDE0IEBAIHZvaWQgQnJvd3NlcldpbmRvdzo6c2NyZWVuc2hvdCgpCiB7CiB9CiAKLXZvaWQg
QnJvd3NlcldpbmRvdzo6bG9hZFVSTExpc3RGcm9tRmlsZSgpCit2b2lkIEJyb3dzZXJXaW5kb3c6
OmtleVByZXNzRXZlbnQoUUtleUV2ZW50ICpldmVudCkKIHsKKyAgICBpZiAoKGV2ZW50LT5tb2Rp
ZmllcnMoKSA9PSBRdDo6Q29udHJvbE1vZGlmaWVyICYmIGV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5
X0wpCisgICAgICAgIHx8IGV2ZW50LT5rZXkoKSA9PSBRdDo6S2V5X0Y2KSB7CisgICAgICAgIFFN
ZXRhT2JqZWN0OjppbnZva2VNZXRob2Qocm9vdE9iamVjdCgpLCAic2V0Rm9jdXNUb0FkZHJlc3NC
YXIiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgUVNHVmlldzo6a2V5UHJlc3NFdmVudChldmVudCk7CiB9CiAKIHZv
aWQgQnJvd3NlcldpbmRvdzo6dXBkYXRlVXNlckFnZW50TGlzdCgpCkBAIC03Niw1ICs5Niw0IEBA
IHZvaWQgQnJvd3NlcldpbmRvdzo6dXBkYXRlVXNlckFnZW50TGlzdCgpCiAKIEJyb3dzZXJXaW5k
b3c6On5Ccm93c2VyV2luZG93KCkKIHsKLSAgICBkZWxldGUgbV91cmxMb2FkZXI7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKaW5kZXggOGVjMmQxYS4uZWFkNjVhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaApAQCAtMzEsMTEgKzMxLDggQEAKIAogI2luY2x1
ZGUgIk1pbmlCcm93c2VyQXBwbGljYXRpb24uaCIKICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KLSNp
bmNsdWRlIDxRVGltZXI+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RU0dWaWV3PgogCi1jbGFz
cyBVcmxMb2FkZXI7Ci0KIGNsYXNzIEJyb3dzZXJXaW5kb3cgOiBwdWJsaWMgUVNHVmlldyB7CiAg
ICAgUV9PQkpFQ1QKIApAQCAtNTEsMTMgKzQ4LDExIEBAIHB1YmxpYyBzbG90czoKIHByb3RlY3Rl
ZCBzbG90czoKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAotICAgIHZvaWQgbG9hZFVSTExpc3RG
cm9tRmlsZSgpOworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBrZXlQcmVzc0V2ZW50KFFL
ZXlFdmVudCAqKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVVzZXJBZ2VudExpc3QoKTsK
LQotICAgIFVybExvYWRlciogbV91cmxMb2FkZXI7Ci0gICAgV2luZG93T3B0aW9ucyBtX3dpbmRv
d09wdGlvbnM7CiAgICAgUVN0cmluZ0xpc3QgbV91c2VyQWdlbnRMaXN0OwogfTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCmluZGV4IGEyZWQwOTguLjcxYjIyMzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybworKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KQEAgLTQ4LDMgKzQ4LDggQEAgREVGSU5FUyAtPSBR
VF9BU0NJSV9DQVNUX1dBUk5JTkdTCiAKICMgVXNlIHRoZSBNaW5pQnJvd3Nlci5xcmMgZmlsZSBm
cm9tIHRoZSBzb3VyY2VzLgogUkVTT1VSQ0VTICs9IE1pbmlCcm93c2VyLnFyYworCitPVEhFUl9G
SUxFUyArPSBcCisgICAgcW1sL0Jyb3dzZXJXaW5kb3cucW1sIFwKKyAgICBxbWwvRGVza3RvcFZp
ZXcucW1sIFwKKyAgICBxbWwvVG91Y2hWaWV3LnFtbApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvcXQvTWluaUJyb3dzZXIucXJjIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXIucXJjCmluZGV4IGZmZTc3YjAuLjEyZGRjMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnFyYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJv
d3Nlci5xcmMKQEAgLTEsNSArMSwxMiBAQAogPFJDQz4KICAgICA8cXJlc291cmNlIHByZWZpeD0i
LyI+CisgICAgICAgIDxmaWxlPmljb25zL25leHQucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5p
Y29ucy9wcmV2aW91cy5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25zL3JlZnJlc2gucG5n
PC9maWxlPgorICAgICAgICA8ZmlsZT5pY29ucy9zdG9wLnBuZzwvZmlsZT4KKyAgICAgICAgPGZp
bGU+cW1sL0Jyb3dzZXJXaW5kb3cucW1sPC9maWxlPgogICAgICAgICA8ZmlsZT51c2VyYWdlbnRs
aXN0LnR4dDwvZmlsZT4KKyAgICAgICAgPGZpbGU+cW1sL0Rlc2t0b3BWaWV3LnFtbDwvZmlsZT4K
KyAgICAgICAgPGZpbGU+cW1sL1RvdWNoVmlldy5xbWw8L2ZpbGU+CiAgICAgPC9xcmVzb3VyY2U+
CiA8L1JDQz4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBw
bGljYXRpb24uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlv
bi5jcHAKaW5kZXggZDRiNTBhMS4uMWYwYzNlMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2luY2x1
ZGUgIk1pbmlCcm93c2VyQXBwbGljYXRpb24uaCIKIAorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmll
dy5oIgorI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxd2VibmF2aWdhdGlv
bmNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgPFFSZWdFeHA+CiAj
aW5jbHVkZSA8UUV2ZW50PgpAQCAtNjEsNyArNjQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNN
b3VzZUV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQpCiAKIE1pbmlCcm93c2VyQXBwbGljYXRpb246
Ok1pbmlCcm93c2VyQXBwbGljYXRpb24oaW50JiBhcmdjLCBjaGFyKiogYXJndikKICAgICA6IFFH
dWlBcHBsaWNhdGlvbihhcmdjLCBhcmd2KQotICAgICwgbV93aW5kb3dPcHRpb25zKCkKKyAgICAs
IG1fd2luZG93T3B0aW9ucyh0aGlzKQogICAgICwgbV9pc1JvYm90aXplZChmYWxzZSkKICAgICAs
IG1fcm9ib3RUaW1lb3V0U2Vjb25kcygwKQogICAgICwgbV9yb2JvdEV4dHJhVGltZVNlY29uZHMo
MCkKQEAgLTcwLDYgKzczLDcgQEAgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJB
cHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIHNldEFwcGxpY2F0aW9uTmFt
ZSgiUXRNaW5pQnJvd3NlciIpOwogICAgIHNldEFwcGxpY2F0aW9uVmVyc2lvbigiMC4xIik7CiAK
KyAgICBxbWxSZWdpc3RlclR5cGU8UVdlYk5hdmlnYXRpb25Db250cm9sbGVyPigpOwogICAgIGhh
bmRsZVVzZXJPcHRpb25zKCk7CiB9CiAKQEAgLTEzNiwyMCArMTQwLDE2IEBAIHZvaWQgTWluaUJy
b3dzZXJBcHBsaWNhdGlvbjo6aGFuZGxlVXNlck9wdGlvbnMoKQogICAgICAgICAgICAgIDw8ICJb
LXIgbGlzdF0iCiAgICAgICAgICAgICAgPDwgIlstcm9ib3QtdGltZW91dCBzZWNvbmRzXSIKICAg
ICAgICAgICAgICA8PCAiWy1yb2JvdC1leHRyYS10aW1lIHNlY29uZHNdIgotICAgICAgICAgICAg
IDw8ICJbLWNodW5rZWQtZHJhd2luZy1hcmVhXSIKICAgICAgICAgICAgICA8PCAiWy1wcmludC1s
b2FkZWQtdXJsc10iCi0jaWYgZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAg
ICAgICAgICAgIDw8ICJbLWdsLXZpZXdwb3J0XSIKLSNlbmRpZgogICAgICAgICAgICAgIDw8ICJV
UkxzIjsKICAgICAgICAgYXBwUXVpdCgwKTsKICAgICB9CiAKICAgICBpZiAoYXJncy5jb250YWlu
cygiLXRvdWNoIikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy51c2VUb3VjaFdlYlZpZXcgPSB0
cnVlOworICAgICAgICBtX3dpbmRvd09wdGlvbnMuc2V0VXNlVG91Y2hXZWJWaWV3KHRydWUpOwog
CiAgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1tYXhpbWl6ZSIpKQotICAgICAgICBtX3dpbmRvd09w
dGlvbnMuc3RhcnRNYXhpbWl6ZWQgPSB0cnVlOworICAgICAgICBtX3dpbmRvd09wdGlvbnMuc2V0
U3RhcnRNYXhpbWl6ZWQodHJ1ZSk7CiAKICAgICBpbnQgcm9ib3RJbmRleCA9IGFyZ3MuaW5kZXhP
ZigiLXIiKTsKICAgICBpZiAocm9ib3RJbmRleCAhPSAtMSkgewpAQCAtMTc1LDEwICsxNzUsNSBA
QCB2b2lkIE1pbmlCcm93c2VyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25zKCkKICAgICAg
ICAgbV9yb2JvdEV4dHJhVGltZVNlY29uZHMgPSB0YWtlT3B0aW9uVmFsdWUoJmFyZ3MsIHJvYm90
RXh0cmFUaW1lSW5kZXgpLnRvSW50KCk7CiAKICAgICBpZiAoYXJncy5jb250YWlucygiLXByaW50
LWxvYWRlZC11cmxzIikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy5wcmludExvYWRlZFVybHMg
PSB0cnVlOwotCi0jaWYgZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIGlm
IChhcmdzLmNvbnRhaW5zKCItZ2wtdmlld3BvcnQiKSkKLSAgICAgICAgbV93aW5kb3dPcHRpb25z
LnVzZVFHTFdpZGdldFZpZXdwb3J0ID0gdHJ1ZTsKLSNlbmRpZgorICAgICAgICBtX3dpbmRvd09w
dGlvbnMuc2V0UHJpbnRMb2FkZWRVcmxzKHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCmluZGV4IDdiMmQxNGEuLjgzYWVlZWYwIDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCkBAIC0yOSwz
MCArMjksNDEgQEAKICNpZm5kZWYgTWluaUJyb3dzZXJBcHBsaWNhdGlvbl9oCiAjZGVmaW5lIE1p
bmlCcm93c2VyQXBwbGljYXRpb25faAogCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZT4KICNpbmNs
dWRlIDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUhhc2g+CisjaW5jbHVkZSA8
UU9iamVjdD4KICNpbmNsdWRlIDxRU3RyaW5nTGlzdD4KICNpbmNsdWRlIDxRVG91Y2hFdmVudD4K
ICNpbmNsdWRlIDxRVXJsPgogI2luY2x1ZGUgInF3aW5kb3dzeXN0ZW1pbnRlcmZhY2VfcXBhLmgi
CiAKLXN0cnVjdCBXaW5kb3dPcHRpb25zIHsKLSAgICBXaW5kb3dPcHRpb25zKCkKLSAgICAgICAg
OiBwcmludExvYWRlZFVybHMoZmFsc2UpCi0gICAgICAgICwgdXNlVG91Y2hXZWJWaWV3KGZhbHNl
KQotICAgICAgICAsIHN0YXJ0TWF4aW1pemVkKGZhbHNlKQotI2lmIGRlZmluZWQoUVRfQ09ORklH
VVJFRF9XSVRIX09QRU5HTCkKLSAgICAgICAgLCB1c2VRR0xXaWRnZXRWaWV3cG9ydChmYWxzZSkK
LSNlbmRpZgorY2xhc3MgV2luZG93T3B0aW9ucyA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09C
SkVDVAorICAgIFFfUFJPUEVSVFkoYm9vbCBwcmludExvYWRlZFVybHMgUkVBRCBwcmludExvYWRl
ZFVybHMpCisgICAgUV9QUk9QRVJUWShib29sIHVzZVRvdWNoV2ViVmlldyBSRUFEIHVzZVRvdWNo
V2ViVmlldykKKyAgICBRX1BST1BFUlRZKGJvb2wgc3RhcnRNYXhpbWl6ZWQgUkVBRCBzdGFydE1h
eGltaXplZCkKKworcHVibGljOgorICAgIFdpbmRvd09wdGlvbnMoUU9iamVjdCAqIHBhcmVudCA9
IDApCisgICAgICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgICAgICwgbV9wcmludExvYWRlZFVy
bHMoZmFsc2UpCisgICAgICAgICwgbV91c2VUb3VjaFdlYlZpZXcoZmFsc2UpCisgICAgICAgICwg
bV9zdGFydE1heGltaXplZChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBwcmludExv
YWRlZFVybHM7Ci0gICAgYm9vbCB1c2VUb3VjaFdlYlZpZXc7Ci0gICAgYm9vbCBzdGFydE1heGlt
aXplZDsKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgYm9vbCB1
c2VRR0xXaWRnZXRWaWV3cG9ydDsKLSNlbmRpZgorICAgIHZvaWQgc2V0UHJpbnRMb2FkZWRVcmxz
KGJvb2wgcCkgeyBtX3ByaW50TG9hZGVkVXJscyA9IHA7IH0KKyAgICBib29sIHByaW50TG9hZGVk
VXJscygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbnRMb2FkZWRVcmxzOyB9CisgICAgdm9pZCBzZXRV
c2VUb3VjaFdlYlZpZXcoYm9vbCB0KSB7IG1fdXNlVG91Y2hXZWJWaWV3ID0gdDsgfQorICAgIGJv
b2wgdXNlVG91Y2hXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV91c2VUb3VjaFdlYlZpZXc7IH0K
KyAgICB2b2lkIHNldFN0YXJ0TWF4aW1pemVkKGJvb2wgbSkgeyBtX3N0YXJ0TWF4aW1pemVkID0g
bTsgfQorICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TWF4
aW1pemVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ByaW50TG9hZGVkVXJsczsKKyAgICBi
b29sIG1fdXNlVG91Y2hXZWJWaWV3OworICAgIGJvb2wgbV9zdGFydE1heGltaXplZDsKIH07CiAK
IGNsYXNzIE1pbmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJsaWMgUUd1aUFwcGxpY2F0aW9uIHsK
QEAgLTgzLDQgKzk0LDYgQEAgcHJpdmF0ZToKICAgICBRSGFzaDxpbnQsIFFXaW5kb3dTeXN0ZW1J
bnRlcmZhY2U6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwogCitRTUxfREVDTEFSRV9U
WVBFKFdpbmRvd09wdGlvbnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L1VybExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3Bw
CmluZGV4IGY4MmE2ZDMuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L1VybExvYWRlci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcApA
QCAtNDEsMTYgKzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVyKEJyb3dzZXJXaW5kb3cqIGJy
b3dzZXJXaW5kb3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUsCiAgICAgbV9jaGVja0lm
RmluaXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAgIGNvbm5lY3QoJm1fY2hlY2tJ
ZkZpbmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNoZWNrSWZGaW5p
c2hlZCgpKSk7CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBvbiBRV2ViUGFn
ZSBpcyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQotCi0gICAgLy8gRklYTUU6IFJl
Y29ubmVjdCB0aGlzIHNpZ25hbHMgYWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBpZiBuZWNlc3Nh
cnkuCi0gICAgLy8gY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxv
YWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZFN0YXJ0ZWQoKSkpOwotICAgIC8vIGNv
bm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkRmluaXNoZWQoYm9v
bCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKKyAgICBjb25uZWN0KG1fYnJv
d3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1Qo
ZnJhbWVMb2FkU3RhcnRlZCgpKSk7CisgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZp
ZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNo
ZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChs
b2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0IFFVcmwmKSks
IHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwogCiAgICAgaWYgKHRpbWVvdXRTZWNv
bmRzKSB7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldEludGVydmFsKHRpbWVvdXRTZWNvbmRz
ICogMTAwMCk7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7Ci0g
ICAgICAgIC8vIEZJWE1FOiBSZWNvbm5lY3QgdGhpcyBzaWduYWwgYWZ0ZXIgUXQ1L1F0UXVpY2sg
cmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAgICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93
LT53ZWJWaWV3KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRpbWVyLCBTTE9U
KHN0YXJ0KCkpKTsKKyAgICAgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwg
U0lHTkFMKGxvYWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIsIFNMT1Qoc3RhcnQoKSkpOwog
ICAgICAgICBjb25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMs
IFNMT1QobG9hZE5leHQoKSkpOwogICAgIH0KICAgICBpZiAoZXh0cmFUaW1lU2Vjb25kcykgewpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42ZjNmNjVkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9w
cmV2aW91cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiZTNkMQpC
aW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3By
ZXZpb3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25z
L3JlZnJlc2gucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNGQwMgpCaW5hcnkgZmlsZXMgL2Rl
di9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nIGRpZmZl
cgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iNjgyOTBiCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCmluZGV4
IGEyMGIyNWUuLmNjN2M2MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4u
Y3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCkBAIC02MSw2ICs2MSw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIEJyb3dzZXJXaW5kb3cqIHdp
bmRvdyA9IG5ldyBCcm93c2VyV2luZG93KCZhcHAubV93aW5kb3dPcHRpb25zKTsKICAgICB3aW5k
b3ctPmxvYWQodXJscy5hdCgwKSk7CisgICAgd2luZG93LT5zZXRHZW9tZXRyeSgxMDAsIDEwMCwg
ODAwLCA2MDApOwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1cmxzLnNpemUoKTsgKytpKQog
ICAgICAgICB3aW5kb3ctPm5ld1dpbmRvdyh1cmxzLmF0KGkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43ZGQyNDRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1s
L0Jyb3dzZXJXaW5kb3cucW1sCkBAIC0wLDAgKzEsMTg2IEBACitpbXBvcnQgUXRRdWljayAyLjAK
K2ltcG9ydCBRdFdlYktpdCAzLjAKKworUmVjdGFuZ2xlIHsKKyAgICAvL2RvIG5vdCBkZWZpbmUg
YW5jaG9ycyBvciBhIGluaXRpYWxpc2l6ZSBoZXJlISBUaGlzIHdvdWxkIG1lc3N1cCB3aXRoIFFT
R1ZpZXdTaXplUm9vdE9iamV0VG9WaWV3LgorCisgICAgcHJvcGVydHkgYm9vbCBjYW5Hb0JhY2s6
IGZhbHNlCisgICAgcHJvcGVydHkgYm9vbCBjYW5Hb0ZvcndhcmQ6IGZhbHNlCisgICAgcHJvcGVy
dHkgYm9vbCBjYW5TdG9wOiBmYWxzZQorICAgIHByb3BlcnR5IGludCBsb2FkUHJvZ3Jlc3M6IDAK
KyAgICBwcm9wZXJ0eSBhbGlhcyB3ZWJWaWV3OiB2aWV3TG9hZGVyLml0ZW0KKworICAgIHNpZ25h
bCBwYWdlVGl0bGVDaGFuZ2VkKHN0cmluZyB0aXRsZSkKKworICAgIGZ1bmN0aW9uIGxvYWQoYWRk
cmVzcykgeworICAgICAgICB3ZWJWaWV3LmxvYWQoYWRkcmVzcykKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBzZXRGb2N1c1RvQWRkcmVzc0JhcigpIHsKKyAgICAgICAgYWRkcmVzc0xpbmUuZm9yY2VB
Y3RpdmVGb2N1cygpCisgICAgICAgIGFkZHJlc3NMaW5lLnNlbGVjdEFsbCgpCisgICAgfQorCisg
ICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgaWQ6IG5hdmlnYXRpb25CYXIKKyAgICAgICAgY29sb3I6
ICIjZWZlZmVmIgorICAgICAgICBoZWlnaHQ6IDMwCisgICAgICAgIGFuY2hvcnMgeworICAgICAg
ICAgICAgdG9wOiBwYXJlbnQudG9wCisgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAg
ICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICB9CisKKyAgICAgICAgUm93IHsK
KyAgICAgICAgICAgIGlkOiBjb250cm9sc1JvdworICAgICAgICAgICAgc3BhY2luZzogNAorICAg
ICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogYmFja0J1dHRvbgorICAg
ICAgICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5oZWlnaHQgLSAyCisgICAgICAgICAg
ICAgICAgd2lkdGg6IGhlaWdodAorICAgICAgICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKwor
ICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50
ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogIi4uL2ljb25zL3ByZXZp
b3VzLnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUg
eworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAg
ICAgICAgICBjb2xvcjogcmVsb2FkQnV0dG9uLmNvbG9yCisgICAgICAgICAgICAgICAgICAgIG9w
YWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiAhY2FuR29CYWNrCisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VBcmVhIHsKKyAgICAgICAgICAg
ICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgb25DbGlj
a2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZ29pbmcgYmFjayIp
CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3Lm5hdmlnYXRpb24uZ29CYWNrKCkKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IGZvcndhcmRCdXR0b24K
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0IC0gMgorICAgICAg
ICAgICAgICAgIHdpZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYi
CisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMu
Y2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9u
ZXh0LnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUg
eworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAg
ICAgICAgICBjb2xvcjogZm9yd2FyZEJ1dHRvbi5jb2xvcgorICAgICAgICAgICAgICAgICAgICBv
cGFjaXR5OiAwLjgKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogIWNhbkdvRm9yd2FyZAor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAg
ICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9u
Q2xpY2tlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImdvaW5nIGZv
cndhcmQiKQorICAgICAgICAgICAgICAgICAgICAgICAgd2ViVmlldy5uYXZpZ2F0aW9uLmdvRm9y
d2FyZCgpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiByZWxv
YWRCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0IC0g
MgorICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBjb2xvcjog
IiNlZmVmZWYiCisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAg
IGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGNh
blN0b3AgPyAiLi4vaWNvbnMvc3RvcC5wbmciIDogIi4uL2ljb25zL3JlZnJlc2gucG5nIgorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAg
ICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uQ2xp
Y2tlZDogeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhblN0b3ApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygic3RvcCBsb2FkaW5nIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3Lm5hdmlnYXRpb24uc3RvcCgpCisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJyZWxvYWRpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXcu
bmF2aWdhdGlvbi5yZWxvYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICBjb2xvcjogIndoaXRlIgorICAgICAg
ICAgICAgaGVpZ2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdodCAtIDQKKyAgICAgICAgICAgIGJvcmRl
ci53aWR0aDogMQorICAgICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgbGVmdDog
Y29udHJvbHNSb3cucmlnaHQKKyAgICAgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0Cisg
ICAgICAgICAgICAgICAgbWFyZ2luczogMgorICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2VudGVy
OiBwYXJlbnQudmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3Rh
bmdsZSB7CisgICAgICAgICAgICAgICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgICAgIHRv
cDogcGFyZW50LnRvcAorICAgICAgICAgICAgICAgICAgICBib3R0b206IHBhcmVudC5ib3R0b20K
KyAgICAgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgd2lkdGg6IHBhcmVudC53aWR0aCAvIDEwMCAqIGxvYWRQcm9ncmVz
cworICAgICAgICAgICAgICAgIGNvbG9yOiAiYmx1ZSIKKyAgICAgICAgICAgICAgICBvcGFjaXR5
OiAwLjMKKyAgICAgICAgICAgICAgICB2aXNpYmxlOiBsb2FkUHJvZ3Jlc3MgIT0gMTAwCisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFRleHRJbnB1dCB7CisgICAgICAgICAgICAgICAgaWQ6
IGFkZHJlc3NMaW5lCisgICAgICAgICAgICAgICAgY2xpcDogdHJ1ZQorICAgICAgICAgICAgICAg
IHNlbGVjdEJ5TW91c2U6IHRydWUKKyAgICAgICAgICAgICAgICBmb250IHsKKyAgICAgICAgICAg
ICAgICAgICAgcG9pbnRTaXplOiAxNAorICAgICAgICAgICAgICAgICAgICBmYW1pbHk6ICJIZWx2
ZXRpY2EiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFuY2hvcnMgeworICAg
ICAgICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisg
ICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAgICAgICAg
IHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luczogMgorICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEtleXMub25SZXR1cm5QcmVzc2VkOnsK
KyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImdvaW5nIHRvOiAiLCBhZGRyZXNzTGlu
ZS50ZXh0KQorICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoYWRkcmVzc0xpbmUudGV4
dCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBMb2FkZXIgeworICAgICAgICBpZDogdmlld0xvYWRlcgorICAgICAgICBhbmNob3JzIHsK
KyAgICAgICAgICAgIHRvcDogbmF2aWdhdGlvbkJhci5ib3R0b20KKyAgICAgICAgICAgIGxlZnQ6
IHBhcmVudC5sZWZ0CisgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgICAg
ICBib3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgfQorICAgICAgICBzb3VyY2U6IG9wdGlv
bnMudXNlVG91Y2hXZWJWaWV3ID8gIlRvdWNoVmlldy5xbWwiIDogIkRlc2t0b3BWaWV3LnFtbCIK
KyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAgIHRhcmdldDogdmlld0xvYWRlci5p
dGVtCisgICAgICAgIG9uVGl0bGVDaGFuZ2VkOiBwYWdlVGl0bGVDaGFuZ2VkKHRpdGxlKQorICAg
ICAgICBvblVybENoYW5nZWQ6IHsKKyAgICAgICAgICAgIGFkZHJlc3NMaW5lLnRleHQgPSB1cmwK
KyAgICAgICAgICAgIGlmIChvcHRpb25zLnByaW50TG9hZGVkVXJscykKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmxvZygiTG9hZGVkOiIsIHVybCk7CisgICAgICAgICAgICBmb3JjZUFjdGl2ZUZv
Y3VzKCk7CisgICAgICAgIH0KKyAgICAgICAgb25OYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkOiB7Cisg
ICAgICAgICAgICBjYW5Hb0JhY2sgPSB2aWV3TG9hZGVyLml0ZW0ubmF2aWdhdGlvbi5jYW5Hb0Jh
Y2sKKyAgICAgICAgICAgIGNhbkdvRm9yd2FyZCA9IHZpZXdMb2FkZXIuaXRlbS5uYXZpZ2F0aW9u
LmNhbkdvRm9yd2FyZAorICAgICAgICAgICAgY2FuU3RvcCA9IHZpZXdMb2FkZXIuaXRlbS5uYXZp
Z2F0aW9uLmNhblN0b3AKKyAgICAgICAgfQorICAgICAgICBvbkxvYWRQcm9ncmVzc0NoYW5nZWQ6
IGxvYWRQcm9ncmVzcyA9IHZpZXdMb2FkZXIuaXRlbS5sb2FkUHJvZ3Jlc3MKKyAgICB9Cit9CmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvRGVza3RvcFZpZXcucW1sIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvcW1sL0Rlc2t0b3BWaWV3LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43NTJkZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvcW1sL0Rlc2t0b3BWaWV3LnFtbApAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBRdFF1
aWNrIDIuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAorCitEZXNrdG9wV2ViVmlldyB7CisgICAgc2ln
bmFsIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQKKworICAgIENvbXBvbmVudC5vbkNvbXBsZXRlZDog
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdhdGlvblN0YXRl
Q2hhbmdlZCkKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZp
ZXcucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1RvdWNoVmlldy5xbWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhZmRiMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sCkBAIC0wLDAgKzEsOCBAQAoraW1w
b3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCisKK1RvdWNoV2ViVmlldyB7Cisg
ICAgc2lnbmFsIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQKKworICAgIENvbXBvbmVudC5vbkNvbXBs
ZXRlZDogbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdhdGlv
blN0YXRlQ2hhbmdlZCkKK30K
</data>
<flag name="review"
          id="109948"
          type_id="1"
          status="-"
          setter="vestbo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112110</attachid>
            <date>2011-10-23 06:58:26 -0700</date>
            <delta_ts>2011-10-24 04:17:11 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>70529_20111023-155245.patch</filename>
            <type>text/plain</type>
            <size>22347</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiNmFkM2EwLi4xZjlmZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xMyw2ICsxMywy
MSBAQAogCiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8emVuby5hbGJpc3NlckBub2tpYS5j
b20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWluaUJyb3dzZXIgaW4gUU1MCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMxNQorCisgICAg
ICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIE1pbmlCcm93c2Vy
LgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBBbGJpc3NlciA8emVuby5hbGJpc3Nl
ckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXc6Om1vdXNlUHJlc3NFdmVudCk6CisKKzIwMTEtMTAtMjAgIFplbm8gQWxi
aXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKwogICAgICAgICBbUXRdW1dLMl0gRGlz
YWJsZSBDb250ZXh0IE1lbnVzIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgUU1MIGltcGxlbWVudGF0
aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDUz
NwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YWI2NzFmYS4uNmIyODg4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8
emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWlu
aUJyb3dzZXIgaW4gUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MDMxNQorCisgICAgICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVu
dGF0aW9uIG9mIE1pbmlCcm93c2VyLgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290
dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBB
bGJpc3NlciA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAo
QnJvd3NlcldpbmRvdzo6d2ViVmlldyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojpsb2FkKToK
KyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoQnJvd3Nl
cldpbmRvdzo6fkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86Cisg
ICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbik6CisgICAgICAgIChNaW5pQnJv
d3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oOgorICAgICAgICAoV2luZG93T3B0aW9uczo6
V2luZG93T3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcDoK
KyAgICAgICAgKFVybExvYWRlcjo6VXJsTG9hZGVyKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9x
dC9pY29ucy9uZXh0LnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMv
cHJldmlvdXMucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZy
ZXNoLnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmc6
IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOiBBZGRl
ZC4KKworMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29t
PgorCiAgICAgICAgIFtRdF1bV0syXSBSZW1vdmUgUXRXaWRnZXRzIGRlcGVuZGVuY3kgaW4gTWlu
aUJyb3dzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNTI5CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZWU5MGZh
OC4uZmNhOGJlNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTI4
LDMxICsyOCw0OCBAQAogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAi
VXJsTG9hZGVyLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRv
dWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKKyNpbmNsdWRlICJ1dGls
cy5oIgogCisjaW5jbHVkZSA8UURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFFEaXI+CiAK
IEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKLSAg
ICA6IG1fdXJsTG9hZGVyKDApCiB7Ci0gICAgaWYgKG9wdGlvbnMpCi0gICAgICAgIG1fd2luZG93
T3B0aW9ucyA9ICpvcHRpb25zOwotICAgIGVsc2UgewotICAgICAgICBXaW5kb3dPcHRpb25zIHRt
cE9wdGlvbnM7Ci0gICAgICAgIG1fd2luZG93T3B0aW9ucyA9IHRtcE9wdGlvbnM7Ci0gICAgfQor
ICAgIHNldFdpbmRvd1RpdGxlKCJNaW5pQnJvd3NlciIpOworICAgIHNldFdpbmRvd0ZsYWdzKFF0
OjpXaW5kb3cgfCBRdDo6V2luZG93VGl0bGVIaW50IHwgUXQ6OldpbmRvd01pbk1heEJ1dHRvbnNI
aW50IHwgUXQ6OldpbmRvd0Nsb3NlQnV0dG9uSGludCk7CisgICAgc2V0UmVzaXplTW9kZShRU0dW
aWV3OjpTaXplUm9vdE9iamVjdFRvVmlldyk7CiAKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnN0
YXJ0TWF4aW1pemVkKQorICAgIC8vIFRoaXMgYWxsb3dzIHN0YXJ0aW5nIE1pbmlCcm93c2VyIGZy
b20gdGhlIGJ1aWxkIGRpcmVjdG9yeSB3aXRob3V0IHByZXZpb3VzbHkgZGVmaW5pbmcgUU1MX0lN
UE9SVF9QQVRILgorICAgIFFEaXIgcW1sSW1wb3J0RGlyID0gUURpcihRQ29yZUFwcGxpY2F0aW9u
OjphcHBsaWNhdGlvbkRpclBhdGgoKSk7CisgICAgcW1sSW1wb3J0RGlyLmNkKCIuLi9pbXBvcnRz
Iik7CisgICAgZW5naW5lKCktPmFkZEltcG9ydFBhdGgocW1sSW1wb3J0RGlyLmNhbm9uaWNhbFBh
dGgoKSk7CisKKyAgICBlbmdpbmUoKS0+cm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5
KCJvcHRpb25zIiwgb3B0aW9ucyk7CisgICAgc2V0U291cmNlKFFVcmwoInFyYzovcW1sL0Jyb3dz
ZXJXaW5kb3cucW1sIikpOworICAgIGNvbm5lY3Qocm9vdE9iamVjdCgpLCBTSUdOQUwocGFnZVRp
dGxlQ2hhbmdlZChRU3RyaW5nKSksIHRoaXMsIFNMT1Qoc2V0V2luZG93VGl0bGUoUVN0cmluZykp
KTsKKyAgICBpZiAob3B0aW9ucy0+c3RhcnRNYXhpbWl6ZWQoKSkKICAgICAgICAgc2V0V2luZG93
U3RhdGUoUXQ6OldpbmRvd01heGltaXplZCk7CiAgICAgZWxzZQogICAgICAgICByZXNpemUoODAw
LCA2MDApOwogICAgIHNob3coKTsKIH0KIAorUU9iamVjdCogQnJvd3NlcldpbmRvdzo6d2ViVmll
dygpIGNvbnN0Cit7CisgICAgUU9iamVjdCogd2ViVmlldyA9IHJvb3RPYmplY3QoKS0+cHJvcGVy
dHkoIndlYlZpZXciKS52YWx1ZTxRRGVza3RvcFdlYlZpZXcqPigpOworICAgIC8vIFRoZSB3ZWJW
aWV3IGlzIGNyZWF0ZWQgaW4gUU1MLCB0aGVyZWZvcmUgaXQgbWlnaHQgbm90IGV4aXN0IHlldC4K
KyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSByb290T2JqZWN0KCktPnByb3Bl
cnR5KCJ3ZWJWaWV3IikudmFsdWU8UVRvdWNoV2ViVmlldyo+KCk7CisgICAgcmV0dXJuIHdlYlZp
ZXc7Cit9CisKIHZvaWQgQnJvd3NlcldpbmRvdzo6bG9hZChjb25zdCBRU3RyaW5nJiB1cmwpCiB7
CisgICAgUVVybCBjb21wbGV0ZWRVcmwgPSB1cmxGcm9tVXNlcklucHV0KHVybCk7CisgICAgUU1l
dGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJsb2FkIiwgUXQ6OkRpcmVjdENv
bm5lY3Rpb24sIFFfQVJHKFFWYXJpYW50LCBjb21wbGV0ZWRVcmwpKTsKIH0KIAogQnJvd3Nlcldp
bmRvdyogQnJvd3NlcldpbmRvdzo6bmV3V2luZG93KGNvbnN0IFFTdHJpbmcmIHVybCkKQEAgLTY2
LDE1ICs4MywxMCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnNjcmVlbnNob3QoKQogewogfQogCi12
b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWRVUkxMaXN0RnJvbUZpbGUoKQotewotfQotCiB2b2lkIEJy
b3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2VudExpc3QoKQogewogfQogCiBCcm93c2VyV2luZG93
Ojp+QnJvd3NlcldpbmRvdygpCiB7Ci0gICAgZGVsZXRlIG1fdXJsTG9hZGVyOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDhlYzJkMWEuLjIwZjA4ZTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTMxLDExICszMSw4IEBACiAKICNpbmNsdWRl
ICJNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5j
bHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVNHVmlldz4KIAotY2xhc3Mg
VXJsTG9hZGVyOwotCiBjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFTR1ZpZXcgewogICAg
IFFfT0JKRUNUCiAKQEAgLTUxLDEzICs0OCw4IEBAIHB1YmxpYyBzbG90czoKIHByb3RlY3RlZCBz
bG90czoKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAotICAgIHZvaWQgbG9hZFVSTExpc3RGcm9t
RmlsZSgpOwotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVXNlckFnZW50TGlzdCgpOwotCi0g
ICAgVXJsTG9hZGVyKiBtX3VybExvYWRlcjsKLSAgICBXaW5kb3dPcHRpb25zIG1fd2luZG93T3B0
aW9uczsKICAgICBRU3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CiB9OwogCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5wcm8KaW5kZXggYTJlZDA5OC4uNzFiMjIzOCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtNDgsMyArNDgsOCBAQCBERUZJTkVTIC09IFFUX0FT
Q0lJX0NBU1RfV0FSTklOR1MKIAogIyBVc2UgdGhlIE1pbmlCcm93c2VyLnFyYyBmaWxlIGZyb20g
dGhlIHNvdXJjZXMuCiBSRVNPVVJDRVMgKz0gTWluaUJyb3dzZXIucXJjCisKK09USEVSX0ZJTEVT
ICs9IFwKKyAgICBxbWwvQnJvd3NlcldpbmRvdy5xbWwgXAorICAgIHFtbC9EZXNrdG9wVmlldy5x
bWwgXAorICAgIHFtbC9Ub3VjaFZpZXcucW1sCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5xcmMgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5x
cmMKaW5kZXggZmZlNzdiMC4uMTJkZGMzMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXIucXJjCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
LnFyYwpAQCAtMSw1ICsxLDEyIEBACiA8UkNDPgogICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4K
KyAgICAgICAgPGZpbGU+aWNvbnMvbmV4dC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25z
L3ByZXZpb3VzLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvcmVmcmVzaC5wbmc8L2Zp
bGU+CisgICAgICAgIDxmaWxlPmljb25zL3N0b3AucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5x
bWwvQnJvd3NlcldpbmRvdy5xbWw8L2ZpbGU+CiAgICAgICAgIDxmaWxlPnVzZXJhZ2VudGxpc3Qu
dHh0PC9maWxlPgorICAgICAgICA8ZmlsZT5xbWwvRGVza3RvcFZpZXcucW1sPC9maWxlPgorICAg
ICAgICA8ZmlsZT5xbWwvVG91Y2hWaWV3LnFtbDwvZmlsZT4KICAgICA8L3FyZXNvdXJjZT4KIDwv
UkNDPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNw
cAppbmRleCBkNGI1MGExLi5mY2Q0NGNjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAi
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIgogCisjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3Lmgi
CisjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29u
dHJvbGxlci5oIgogI2luY2x1ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSA8UVJlZ0V4cD4KICNpbmNs
dWRlIDxRRXZlbnQ+CkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc01vdXNl
RXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCkKIAogTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWlu
aUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIDogUUd1aUFw
cGxpY2F0aW9uKGFyZ2MsIGFyZ3YpCi0gICAgLCBtX3dpbmRvd09wdGlvbnMoKQorICAgICwgbV93
aW5kb3dPcHRpb25zKHRoaXMpCiAgICAgLCBtX2lzUm9ib3RpemVkKGZhbHNlKQogICAgICwgbV9y
b2JvdFRpbWVvdXRTZWNvbmRzKDApCiAgICAgLCBtX3JvYm90RXh0cmFUaW1lU2Vjb25kcygwKQpA
QCAtMTM2LDIwICsxMzksMTYgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVV
c2VyT3B0aW9ucygpCiAgICAgICAgICAgICAgPDwgIlstciBsaXN0XSIKICAgICAgICAgICAgICA8
PCAiWy1yb2JvdC10aW1lb3V0IHNlY29uZHNdIgogICAgICAgICAgICAgIDw8ICJbLXJvYm90LWV4
dHJhLXRpbWUgc2Vjb25kc10iCi0gICAgICAgICAgICAgPDwgIlstY2h1bmtlZC1kcmF3aW5nLWFy
ZWFdIgogICAgICAgICAgICAgIDw8ICJbLXByaW50LWxvYWRlZC11cmxzXSIKLSNpZiBkZWZpbmVk
KFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgICAgICAgICAgPDwgIlstZ2wtdmlld3Bv
cnRdIgotI2VuZGlmCiAgICAgICAgICAgICAgPDwgIlVSTHMiOwogICAgICAgICBhcHBRdWl0KDAp
OwogICAgIH0KIAogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItdG91Y2giKSkKLSAgICAgICAgbV93
aW5kb3dPcHRpb25zLnVzZVRvdWNoV2ViVmlldyA9IHRydWU7CisgICAgICAgIG1fd2luZG93T3B0
aW9ucy5zZXRVc2VUb3VjaFdlYlZpZXcodHJ1ZSk7CiAKICAgICBpZiAoYXJncy5jb250YWlucygi
LW1heGltaXplIikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy5zdGFydE1heGltaXplZCA9IHRy
dWU7CisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRTdGFydE1heGltaXplZCh0cnVlKTsKIAog
ICAgIGludCByb2JvdEluZGV4ID0gYXJncy5pbmRleE9mKCItciIpOwogICAgIGlmIChyb2JvdElu
ZGV4ICE9IC0xKSB7CkBAIC0xNzUsMTAgKzE3NCw1IEBAIHZvaWQgTWluaUJyb3dzZXJBcHBsaWNh
dGlvbjo6aGFuZGxlVXNlck9wdGlvbnMoKQogICAgICAgICBtX3JvYm90RXh0cmFUaW1lU2Vjb25k
cyA9IHRha2VPcHRpb25WYWx1ZSgmYXJncywgcm9ib3RFeHRyYVRpbWVJbmRleCkudG9JbnQoKTsK
IAogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItcHJpbnQtbG9hZGVkLXVybHMiKSkKLSAgICAgICAg
bV93aW5kb3dPcHRpb25zLnByaW50TG9hZGVkVXJscyA9IHRydWU7Ci0KLSNpZiBkZWZpbmVkKFFU
X0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoIi1nbC12aWV3
cG9ydCIpKQotICAgICAgICBtX3dpbmRvd09wdGlvbnMudXNlUUdMV2lkZ2V0Vmlld3BvcnQgPSB0
cnVlOwotI2VuZGlmCisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRQcmludExvYWRlZFVybHMo
dHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFw
cGxpY2F0aW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9u
LmgKaW5kZXggN2IyZDE0YS4uMzEwNmY0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyQXBwbGljYXRpb24uaApAQCAtMjksMzAgKzI5LDQxIEBACiAjaWZuZGVmIE1pbmlC
cm93c2VyQXBwbGljYXRpb25faAogI2RlZmluZSBNaW5pQnJvd3NlckFwcGxpY2F0aW9uX2gKIAor
I2luY2x1ZGUgPFF0RGVjbGFyYXRpdmU+CiAjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9u
PgogI2luY2x1ZGUgPFFIYXNoPgorI2luY2x1ZGUgPFFPYmplY3Q+CiAjaW5jbHVkZSA8UVN0cmlu
Z0xpc3Q+CiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRl
ICJxd2luZG93c3lzdGVtaW50ZXJmYWNlX3FwYS5oIgogCi1zdHJ1Y3QgV2luZG93T3B0aW9ucyB7
Ci0gICAgV2luZG93T3B0aW9ucygpCi0gICAgICAgIDogcHJpbnRMb2FkZWRVcmxzKGZhbHNlKQot
ICAgICAgICAsIHVzZVRvdWNoV2ViVmlldyhmYWxzZSkKLSAgICAgICAgLCBzdGFydE1heGltaXpl
ZChmYWxzZSkKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgICAg
ICwgdXNlUUdMV2lkZ2V0Vmlld3BvcnQoZmFsc2UpCi0jZW5kaWYKK2NsYXNzIFdpbmRvd09wdGlv
bnMgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKGJvb2wg
cHJpbnRMb2FkZWRVcmxzIFJFQUQgcHJpbnRMb2FkZWRVcmxzKQorICAgIFFfUFJPUEVSVFkoYm9v
bCB1c2VUb3VjaFdlYlZpZXcgUkVBRCB1c2VUb3VjaFdlYlZpZXcpCisgICAgUV9QUk9QRVJUWShi
b29sIHN0YXJ0TWF4aW1pemVkIFJFQUQgc3RhcnRNYXhpbWl6ZWQpCisKK3B1YmxpYzoKKyAgICBX
aW5kb3dPcHRpb25zKFFPYmplY3QqIHBhcmVudCA9IDApCisgICAgICAgIDogUU9iamVjdChwYXJl
bnQpCisgICAgICAgICwgbV9wcmludExvYWRlZFVybHMoZmFsc2UpCisgICAgICAgICwgbV91c2VU
b3VjaFdlYlZpZXcoZmFsc2UpCisgICAgICAgICwgbV9zdGFydE1heGltaXplZChmYWxzZSkKICAg
ICB7CiAgICAgfQogCi0gICAgYm9vbCBwcmludExvYWRlZFVybHM7Ci0gICAgYm9vbCB1c2VUb3Vj
aFdlYlZpZXc7Ci0gICAgYm9vbCBzdGFydE1heGltaXplZDsKLSNpZiBkZWZpbmVkKFFUX0NPTkZJ
R1VSRURfV0lUSF9PUEVOR0wpCi0gICAgYm9vbCB1c2VRR0xXaWRnZXRWaWV3cG9ydDsKLSNlbmRp
ZgorICAgIHZvaWQgc2V0UHJpbnRMb2FkZWRVcmxzKGJvb2wgZW5hYmxlZCkgeyBtX3ByaW50TG9h
ZGVkVXJscyA9IGVuYWJsZWQ7IH0KKyAgICBib29sIHByaW50TG9hZGVkVXJscygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbnRMb2FkZWRVcmxzOyB9CisgICAgdm9pZCBzZXRVc2VUb3VjaFdlYlZpZXco
Ym9vbCBlbmFibGVkKSB7IG1fdXNlVG91Y2hXZWJWaWV3ID0gZW5hYmxlZDsgfQorICAgIGJvb2wg
dXNlVG91Y2hXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV91c2VUb3VjaFdlYlZpZXc7IH0KKyAg
ICB2b2lkIHNldFN0YXJ0TWF4aW1pemVkKGJvb2wgZW5hYmxlZCkgeyBtX3N0YXJ0TWF4aW1pemVk
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0TWF4aW1pemVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ByaW50TG9hZGVkVXJs
czsKKyAgICBib29sIG1fdXNlVG91Y2hXZWJWaWV3OworICAgIGJvb2wgbV9zdGFydE1heGltaXpl
ZDsKIH07CiAKIGNsYXNzIE1pbmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJsaWMgUUd1aUFwcGxp
Y2F0aW9uIHsKQEAgLTgzLDQgKzk0LDYgQEAgcHJpdmF0ZToKICAgICBRSGFzaDxpbnQsIFFXaW5k
b3dTeXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwogCitRTUxf
REVDTEFSRV9UWVBFKFdpbmRvd09wdGlvbnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxM
b2FkZXIuY3BwCmluZGV4IGY4MmE2ZDMuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L1VybExvYWRlci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9h
ZGVyLmNwcApAQCAtNDEsMTYgKzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVyKEJyb3dzZXJX
aW5kb3cqIGJyb3dzZXJXaW5kb3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUsCiAgICAg
bV9jaGVja0lmRmluaXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAgIGNvbm5lY3Qo
Jm1fY2hlY2tJZkZpbmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNo
ZWNrSWZGaW5pc2hlZCgpKSk7CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBv
biBRV2ViUGFnZSBpcyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQotCi0gICAgLy8g
RklYTUU6IFJlY29ubmVjdCB0aGlzIHNpZ25hbHMgYWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBp
ZiBuZWNlc3NhcnkuCi0gICAgLy8gY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwg
U0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZFN0YXJ0ZWQoKSkpOwot
ICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKKyAgICBjb25u
ZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRo
aXMsIFNMT1QoZnJhbWVMb2FkU3RhcnRlZCgpKSk7CisgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5k
b3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVM
b2FkRmluaXNoZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCks
IFNJR05BTChsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0
IFFVcmwmKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwogCiAgICAgaWYgKHRp
bWVvdXRTZWNvbmRzKSB7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldEludGVydmFsKHRpbWVv
dXRTZWNvbmRzICogMTAwMCk7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldFNpbmdsZVNob3Qo
dHJ1ZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZWNvbm5lY3QgdGhpcyBzaWduYWwgYWZ0ZXIgUXQ1
L1F0UXVpY2sgcmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAgICAgIC8vIGNvbm5lY3QobV9icm93
c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRp
bWVyLCBTTE9UKHN0YXJ0KCkpKTsKKyAgICAgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndl
YlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIsIFNMT1Qoc3Rh
cnQoKSkpOwogICAgICAgICBjb25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFMKHRpbWVvdXQo
KSksIHRoaXMsIFNMT1QobG9hZE5leHQoKSkpOwogICAgIH0KICAgICBpZiAoZXh0cmFUaW1lU2Vj
b25kcykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42ZjNmNjVkCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9pY29ucy9wcmV2aW91cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTNiZTNkMQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0
L2ljb25zL3ByZXZpb3VzLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L2ljb25zL3JlZnJlc2gucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVz
aC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiNGQwMgpCaW5hcnkg
ZmlsZXMgL2Rldi9udWxsIGFuZCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gu
cG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5w
bmcgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iNjgyOTBiCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4u
Y3BwCmluZGV4IGEyMGIyNWUuLmNjN2M2MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCkBAIC02MSw2
ICs2MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIEJyb3dzZXJX
aW5kb3cqIHdpbmRvdyA9IG5ldyBCcm93c2VyV2luZG93KCZhcHAubV93aW5kb3dPcHRpb25zKTsK
ICAgICB3aW5kb3ctPmxvYWQodXJscy5hdCgwKSk7CisgICAgd2luZG93LT5zZXRHZW9tZXRyeSgx
MDAsIDEwMCwgODAwLCA2MDApOwogCiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1cmxzLnNpemUo
KTsgKytpKQogICAgICAgICB3aW5kb3ctPm5ld1dpbmRvdyh1cmxzLmF0KGkpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45OGFlYTNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBR
dFdlYktpdCAzLjAKKworUmVjdGFuZ2xlIHsKKyAgICAvLyBEbyBub3QgZGVmaW5lIGFuY2hvcnMg
b3IgYW4gaW5pdGlhbCBzaXplIGhlcmUhIFRoaXMgd291bGQgbWVzcyB1cCB3aXRoIFFTR1ZpZXc6
OlNpemVSb290T2JqZWN0VG9WaWV3LgorCisgICAgcHJvcGVydHkgYm9vbCBjYW5Hb0JhY2s6IGZh
bHNlCisgICAgcHJvcGVydHkgYm9vbCBjYW5Hb0ZvcndhcmQ6IGZhbHNlCisgICAgcHJvcGVydHkg
Ym9vbCBjYW5TdG9wOiBmYWxzZQorICAgIHByb3BlcnR5IGludCBsb2FkUHJvZ3Jlc3M6IDAKKyAg
ICBwcm9wZXJ0eSBhbGlhcyB3ZWJWaWV3OiB2aWV3TG9hZGVyLml0ZW0KKworICAgIHNpZ25hbCBw
YWdlVGl0bGVDaGFuZ2VkKHN0cmluZyB0aXRsZSkKKworICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVz
cykgeworICAgICAgICB3ZWJWaWV3LmxvYWQoYWRkcmVzcykKKyAgICB9CisKKyAgICBmdW5jdGlv
biBmb2N1c0FkZHJlc3NCYXIoKSB7CisgICAgICAgIGFkZHJlc3NMaW5lLmZvcmNlQWN0aXZlRm9j
dXMoKQorICAgICAgICBhZGRyZXNzTGluZS5zZWxlY3RBbGwoKQorICAgIH0KKworICAgIFJlY3Rh
bmdsZSB7CisgICAgICAgIGlkOiBuYXZpZ2F0aW9uQmFyCisgICAgICAgIGNvbG9yOiAiI2VmZWZl
ZiIKKyAgICAgICAgaGVpZ2h0OiAzMAorICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgIHRv
cDogcGFyZW50LnRvcAorICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgICAg
IHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgfQorCisgICAgICAgIFJvdyB7CisgICAgICAg
ICAgICBpZDogY29udHJvbHNSb3cKKyAgICAgICAgICAgIHNwYWNpbmc6IDQKKyAgICAgICAgICAg
IFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgaWQ6IGJhY2tCdXR0b24KKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0IC0gMgorICAgICAgICAgICAgICAgIHdp
ZHRoOiBoZWlnaHQKKyAgICAgICAgICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisKKyAgICAgICAg
ICAgICAgICBJbWFnZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBh
cmVudAorICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICIuLi9pY29ucy9wcmV2aW91cy5wbmci
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAg
ICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3I6IHJlbG9hZEJ1dHRvbi5jb2xvcgorICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAw
LjgKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogIWNhbkdvQmFjaworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAgICAg
IGFuY2hvcnMuZmlsbDogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogewor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coImdvaW5nIGJhY2siKQorICAgICAg
ICAgICAgICAgICAgICAgICAgd2ViVmlldy5uYXZpZ2F0aW9uLmdvQmFjaygpCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlkOiBmb3J3YXJkQnV0dG9uCisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdodCAtIDIKKyAgICAgICAgICAgICAg
ICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorCisgICAg
ICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlcklu
OiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvbmV4dC5wbmci
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAg
ICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3I6IGZvcndhcmRCdXR0b24uY29sb3IKKyAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTog
MC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6ICFjYW5Hb0ZvcndhcmQKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAg
ICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJnb2luZyBmb3J3YXJkIikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXcubmF2aWdhdGlvbi5nb0ZvcndhcmQoKQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBpZDogcmVsb2FkQnV0dG9u
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdodCAtIDIKKyAgICAg
ICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVm
IgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3Jz
LmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291cmNlOiBjYW5TdG9wID8g
Ii4uL2ljb25zL3N0b3AucG5nIiA6ICIuLi9pY29ucy9yZWZyZXNoLnBuZyIKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAg
ICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5TdG9wKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coInN0b3AgbG9hZGluZyIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2ViVmlldy5uYXZpZ2F0aW9uLnN0b3AoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi
cmVsb2FkaW5nIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3Lm5hdmlnYXRp
b24ucmVsb2FkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBSZWN0YW5nbGUgeworICAgICAgICAgICAgY29sb3I6ICJ3aGl0ZSIKKyAgICAgICAgICAgIGhl
aWdodDogbmF2aWdhdGlvbkJhci5oZWlnaHQgLSA0CisgICAgICAgICAgICBib3JkZXIud2lkdGg6
IDEKKyAgICAgICAgICAgIGFuY2hvcnMgeworICAgICAgICAgICAgICAgIGxlZnQ6IGNvbnRyb2xz
Um93LnJpZ2h0CisgICAgICAgICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAg
ICAgICAgIG1hcmdpbnM6IDIKKyAgICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50
LnZlcnRpY2FsQ2VudGVyCisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgewor
ICAgICAgICAgICAgICAgIGFuY2hvcnMgeworICAgICAgICAgICAgICAgICAgICB0b3A6IHBhcmVu
dC50b3AKKyAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBwYXJlbnQuYm90dG9tCisgICAgICAg
ICAgICAgICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHdpZHRoOiBwYXJlbnQud2lkdGggLyAxMDAgKiBsb2FkUHJvZ3Jlc3MKKyAgICAg
ICAgICAgICAgICBjb2xvcjogImJsdWUiCisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zCisg
ICAgICAgICAgICAgICAgdmlzaWJsZTogbG9hZFByb2dyZXNzICE9IDEwMAorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBUZXh0SW5wdXQgeworICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNz
TGluZQorICAgICAgICAgICAgICAgIGNsaXA6IHRydWUKKyAgICAgICAgICAgICAgICBzZWxlY3RC
eU1vdXNlOiB0cnVlCisgICAgICAgICAgICAgICAgZm9udCB7CisgICAgICAgICAgICAgICAgICAg
IHBvaW50U2l6ZTogMTQKKyAgICAgICAgICAgICAgICAgICAgZmFtaWx5OiAiSGVsdmV0aWNhIgor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0aWNhbENlbnRlcgorICAgICAgICAg
ICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAorICAgICAgICAgICAgICAgICAgICByaWdodDog
cGFyZW50LnJpZ2h0CisgICAgICAgICAgICAgICAgICAgIG1hcmdpbnM6IDIKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBLZXlzLm9uUmV0dXJuUHJlc3NlZDp7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJnb2luZyB0bzogIiwgYWRkcmVzc0xpbmUudGV4dCkK
KyAgICAgICAgICAgICAgICAgICAgd2ViVmlldy5sb2FkKGFkZHJlc3NMaW5lLnRleHQpCisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgS2V5cy5vblByZXNzZWQ6IHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCgoZXZlbnQubW9kaWZpZXJzICYgUXQuQ29udHJvbE1vZGlmaWVy
KSAmJiBldmVudC5rZXkgPT0gUXQuS2V5X0wpIHx8IGV2ZW50LmtleSA9PSBRdC5rZXlfRjYpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzQWRkcmVzc0JhcigpCisgICAgICAgICAgICAg
ICAgICAgICAgICBldmVudC5hY2NlcHRlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IExvYWRlciB7CisgICAgICAgIGlkOiB2aWV3TG9hZGVyCisgICAgICAgIGFuY2hvcnMgeworICAg
ICAgICAgICAgdG9wOiBuYXZpZ2F0aW9uQmFyLmJvdHRvbQorICAgICAgICAgICAgbGVmdDogcGFy
ZW50LmxlZnQKKyAgICAgICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgICAgIGJv
dHRvbTogcGFyZW50LmJvdHRvbQorICAgICAgICB9CisgICAgICAgIHNvdXJjZTogb3B0aW9ucy51
c2VUb3VjaFdlYlZpZXcgPyAiVG91Y2hWaWV3LnFtbCIgOiAiRGVza3RvcFZpZXcucW1sIgorICAg
IH0KKworICAgIENvbm5lY3Rpb25zIHsKKyAgICAgICAgdGFyZ2V0OiB2aWV3TG9hZGVyLml0ZW0K
KyAgICAgICAgb25UaXRsZUNoYW5nZWQ6IHBhZ2VUaXRsZUNoYW5nZWQodGl0bGUpCisgICAgICAg
IG9uVXJsQ2hhbmdlZDogeworICAgICAgICAgICAgYWRkcmVzc0xpbmUudGV4dCA9IHVybAorICAg
ICAgICAgICAgaWYgKG9wdGlvbnMucHJpbnRMb2FkZWRVcmxzKQorICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJMb2FkZWQ6IiwgdXJsKTsKKyAgICAgICAgICAgIGZvcmNlQWN0aXZlRm9jdXMo
KTsKKyAgICAgICAgfQorICAgICAgICBvbk5hdmlnYXRpb25TdGF0ZUNoYW5nZWQ6IHsKKyAgICAg
ICAgICAgIGNhbkdvQmFjayA9IHZpZXdMb2FkZXIuaXRlbS5uYXZpZ2F0aW9uLmNhbkdvQmFjawor
ICAgICAgICAgICAgY2FuR29Gb3J3YXJkID0gdmlld0xvYWRlci5pdGVtLm5hdmlnYXRpb24uY2Fu
R29Gb3J3YXJkCisgICAgICAgICAgICBjYW5TdG9wID0gdmlld0xvYWRlci5pdGVtLm5hdmlnYXRp
b24uY2FuU3RvcAorICAgICAgICB9CisgICAgICAgIG9uTG9hZFByb2dyZXNzQ2hhbmdlZDogbG9h
ZFByb2dyZXNzID0gdmlld0xvYWRlci5pdGVtLmxvYWRQcm9ncmVzcworICAgIH0KKworICAgIEtl
eXMub25QcmVzc2VkOiB7CisgICAgICAgIGlmICgoKGV2ZW50Lm1vZGlmaWVycyAmIFF0LkNvbnRy
b2xNb2RpZmllcikgJiYgZXZlbnQua2V5ID09IFF0LktleV9MKSB8fCBldmVudC5rZXkgPT0gUXQu
a2V5X0Y2KSB7CisgICAgICAgICAgICBmb2N1c0FkZHJlc3NCYXIoKQorICAgICAgICAgICAgZXZl
bnQuYWNjZXB0ZWQgPSB0cnVlCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9xbWwvRGVza3RvcFZpZXcucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvcW1sL0Rlc2t0b3BWaWV3LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43NTJkZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Rl
c2t0b3BWaWV3LnFtbApAQCAtMCwwICsxLDggQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0
IFF0V2ViS2l0IDMuMAorCitEZXNrdG9wV2ViVmlldyB7CisgICAgc2lnbmFsIG5hdmlnYXRpb25T
dGF0ZUNoYW5nZWQKKworICAgIENvbXBvbmVudC5vbkNvbXBsZXRlZDogbmF2aWdhdGlvbi5uYXZp
Z2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCkKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL1RvdWNoVmlldy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTFhZmRiMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L3FtbC9Ub3VjaFZpZXcucW1sCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IFF0UXVpY2sgMi4w
CitpbXBvcnQgUXRXZWJLaXQgMy4wCisKK1RvdWNoV2ViVmlldyB7CisgICAgc2lnbmFsIG5hdmln
YXRpb25TdGF0ZUNoYW5nZWQKKworICAgIENvbXBvbmVudC5vbkNvbXBsZXRlZDogbmF2aWdhdGlv
bi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5lY3QobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCkK
K30K
</data>
<flag name="review"
          id="110109"
          type_id="1"
          status="+"
          setter="vestbo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112172</attachid>
            <date>2011-10-24 04:17:11 -0700</date>
            <delta_ts>2011-10-25 08:43:19 -0700</delta_ts>
            <desc>patch for landing. - subordinated patches (tasks that are blocking this task) should be merged first!</desc>
            <filename>70529_20111024-130856.patch</filename>
            <type>text/plain</type>
            <size>28425</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5Yjg3ZTQ5Li43Y2RlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xMyw2ICsxMywy
MSBAQAogCiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8emVuby5hbGJpc3NlckBub2tpYS5j
b20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWluaUJyb3dzZXIgaW4gUU1MCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMxNQorCisgICAg
ICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIE1pbmlCcm93c2Vy
LgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBBbGJpc3NlciA8emVuby5hbGJpc3Nl
ckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXc6Om1vdXNlUHJlc3NFdmVudCk6CisKKzIwMTEtMTAtMjAgIFplbm8gQWxi
aXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKwogICAgICAgICBbUXRdW1dLMl0gRGlz
YWJsZSBDb250ZXh0IE1lbnVzIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgUU1MIGltcGxlbWVudGF0
aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDUz
NwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MjU3MjNhNy4uNjNkNWM5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEwLTI0ICBaZW5vIEFsYmlzc2VyICA8
emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWlu
aUJyb3dzZXIgaW4gUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MDMxNQorCisgICAgICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVu
dGF0aW9uIG9mIE1pbmlCcm93c2VyLgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290
dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBB
bGJpc3NlciA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAo
QnJvd3NlcldpbmRvdzo6d2ViVmlldyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojpsb2FkKToK
KyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoQnJvd3Nl
cldpbmRvdzo6fkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86Cisg
ICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbik6CisgICAgICAgIChNaW5pQnJv
d3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oOgorICAgICAgICAoV2luZG93T3B0aW9uczo6
V2luZG93T3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcDoK
KyAgICAgICAgKFVybExvYWRlcjo6VXJsTG9hZGVyKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9x
dC9pY29ucy9uZXh0LnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMv
cHJldmlvdXMucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZy
ZXNoLnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmc6
IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOiBBZGRl
ZC4KKworMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29t
PgorCiAgICAgICAgIFtRdF1bV0syXSBSZW1vdmUgUXRXaWRnZXRzIGRlcGVuZGVuY3kgaW4gTWlu
aUJyb3dzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNTI5CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZWU5MGZh
OC4uZmNhOGJlNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTI4
LDMxICsyOCw0OCBAQAogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAi
VXJsTG9hZGVyLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRv
dWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKKyNpbmNsdWRlICJ1dGls
cy5oIgogCisjaW5jbHVkZSA8UURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFFEaXI+CiAK
IEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKLSAg
ICA6IG1fdXJsTG9hZGVyKDApCiB7Ci0gICAgaWYgKG9wdGlvbnMpCi0gICAgICAgIG1fd2luZG93
T3B0aW9ucyA9ICpvcHRpb25zOwotICAgIGVsc2UgewotICAgICAgICBXaW5kb3dPcHRpb25zIHRt
cE9wdGlvbnM7Ci0gICAgICAgIG1fd2luZG93T3B0aW9ucyA9IHRtcE9wdGlvbnM7Ci0gICAgfQor
ICAgIHNldFdpbmRvd1RpdGxlKCJNaW5pQnJvd3NlciIpOworICAgIHNldFdpbmRvd0ZsYWdzKFF0
OjpXaW5kb3cgfCBRdDo6V2luZG93VGl0bGVIaW50IHwgUXQ6OldpbmRvd01pbk1heEJ1dHRvbnNI
aW50IHwgUXQ6OldpbmRvd0Nsb3NlQnV0dG9uSGludCk7CisgICAgc2V0UmVzaXplTW9kZShRU0dW
aWV3OjpTaXplUm9vdE9iamVjdFRvVmlldyk7CiAKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnN0
YXJ0TWF4aW1pemVkKQorICAgIC8vIFRoaXMgYWxsb3dzIHN0YXJ0aW5nIE1pbmlCcm93c2VyIGZy
b20gdGhlIGJ1aWxkIGRpcmVjdG9yeSB3aXRob3V0IHByZXZpb3VzbHkgZGVmaW5pbmcgUU1MX0lN
UE9SVF9QQVRILgorICAgIFFEaXIgcW1sSW1wb3J0RGlyID0gUURpcihRQ29yZUFwcGxpY2F0aW9u
OjphcHBsaWNhdGlvbkRpclBhdGgoKSk7CisgICAgcW1sSW1wb3J0RGlyLmNkKCIuLi9pbXBvcnRz
Iik7CisgICAgZW5naW5lKCktPmFkZEltcG9ydFBhdGgocW1sSW1wb3J0RGlyLmNhbm9uaWNhbFBh
dGgoKSk7CisKKyAgICBlbmdpbmUoKS0+cm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5
KCJvcHRpb25zIiwgb3B0aW9ucyk7CisgICAgc2V0U291cmNlKFFVcmwoInFyYzovcW1sL0Jyb3dz
ZXJXaW5kb3cucW1sIikpOworICAgIGNvbm5lY3Qocm9vdE9iamVjdCgpLCBTSUdOQUwocGFnZVRp
dGxlQ2hhbmdlZChRU3RyaW5nKSksIHRoaXMsIFNMT1Qoc2V0V2luZG93VGl0bGUoUVN0cmluZykp
KTsKKyAgICBpZiAob3B0aW9ucy0+c3RhcnRNYXhpbWl6ZWQoKSkKICAgICAgICAgc2V0V2luZG93
U3RhdGUoUXQ6OldpbmRvd01heGltaXplZCk7CiAgICAgZWxzZQogICAgICAgICByZXNpemUoODAw
LCA2MDApOwogICAgIHNob3coKTsKIH0KIAorUU9iamVjdCogQnJvd3NlcldpbmRvdzo6d2ViVmll
dygpIGNvbnN0Cit7CisgICAgUU9iamVjdCogd2ViVmlldyA9IHJvb3RPYmplY3QoKS0+cHJvcGVy
dHkoIndlYlZpZXciKS52YWx1ZTxRRGVza3RvcFdlYlZpZXcqPigpOworICAgIC8vIFRoZSB3ZWJW
aWV3IGlzIGNyZWF0ZWQgaW4gUU1MLCB0aGVyZWZvcmUgaXQgbWlnaHQgbm90IGV4aXN0IHlldC4K
KyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSByb290T2JqZWN0KCktPnByb3Bl
cnR5KCJ3ZWJWaWV3IikudmFsdWU8UVRvdWNoV2ViVmlldyo+KCk7CisgICAgcmV0dXJuIHdlYlZp
ZXc7Cit9CisKIHZvaWQgQnJvd3NlcldpbmRvdzo6bG9hZChjb25zdCBRU3RyaW5nJiB1cmwpCiB7
CisgICAgUVVybCBjb21wbGV0ZWRVcmwgPSB1cmxGcm9tVXNlcklucHV0KHVybCk7CisgICAgUU1l
dGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJsb2FkIiwgUXQ6OkRpcmVjdENv
bm5lY3Rpb24sIFFfQVJHKFFWYXJpYW50LCBjb21wbGV0ZWRVcmwpKTsKIH0KIAogQnJvd3Nlcldp
bmRvdyogQnJvd3NlcldpbmRvdzo6bmV3V2luZG93KGNvbnN0IFFTdHJpbmcmIHVybCkKQEAgLTY2
LDE1ICs4MywxMCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnNjcmVlbnNob3QoKQogewogfQogCi12
b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWRVUkxMaXN0RnJvbUZpbGUoKQotewotfQotCiB2b2lkIEJy
b3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2VudExpc3QoKQogewogfQogCiBCcm93c2VyV2luZG93
Ojp+QnJvd3NlcldpbmRvdygpCiB7Ci0gICAgZGVsZXRlIG1fdXJsTG9hZGVyOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDhlYzJkMWEuLjIwZjA4ZTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTMxLDExICszMSw4IEBACiAKICNpbmNsdWRl
ICJNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5j
bHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVNHVmlldz4KIAotY2xhc3Mg
VXJsTG9hZGVyOwotCiBjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFTR1ZpZXcgewogICAg
IFFfT0JKRUNUCiAKQEAgLTUxLDEzICs0OCw4IEBAIHB1YmxpYyBzbG90czoKIHByb3RlY3RlZCBz
bG90czoKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAotICAgIHZvaWQgbG9hZFVSTExpc3RGcm9t
RmlsZSgpOwotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVXNlckFnZW50TGlzdCgpOwotCi0g
ICAgVXJsTG9hZGVyKiBtX3VybExvYWRlcjsKLSAgICBXaW5kb3dPcHRpb25zIG1fd2luZG93T3B0
aW9uczsKICAgICBRU3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CiB9OwogCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5wcm8KaW5kZXggYTJlZDA5OC4uNzFiMjIzOCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtNDgsMyArNDgsOCBAQCBERUZJTkVTIC09IFFUX0FT
Q0lJX0NBU1RfV0FSTklOR1MKIAogIyBVc2UgdGhlIE1pbmlCcm93c2VyLnFyYyBmaWxlIGZyb20g
dGhlIHNvdXJjZXMuCiBSRVNPVVJDRVMgKz0gTWluaUJyb3dzZXIucXJjCisKK09USEVSX0ZJTEVT
ICs9IFwKKyAgICBxbWwvQnJvd3NlcldpbmRvdy5xbWwgXAorICAgIHFtbC9EZXNrdG9wVmlldy5x
bWwgXAorICAgIHFtbC9Ub3VjaFZpZXcucW1sCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5xcmMgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5x
cmMKaW5kZXggZmZlNzdiMC4uMTJkZGMzMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXIucXJjCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
LnFyYwpAQCAtMSw1ICsxLDEyIEBACiA8UkNDPgogICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4K
KyAgICAgICAgPGZpbGU+aWNvbnMvbmV4dC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25z
L3ByZXZpb3VzLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvcmVmcmVzaC5wbmc8L2Zp
bGU+CisgICAgICAgIDxmaWxlPmljb25zL3N0b3AucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5x
bWwvQnJvd3NlcldpbmRvdy5xbWw8L2ZpbGU+CiAgICAgICAgIDxmaWxlPnVzZXJhZ2VudGxpc3Qu
dHh0PC9maWxlPgorICAgICAgICA8ZmlsZT5xbWwvRGVza3RvcFZpZXcucW1sPC9maWxlPgorICAg
ICAgICA8ZmlsZT5xbWwvVG91Y2hWaWV3LnFtbDwvZmlsZT4KICAgICA8L3FyZXNvdXJjZT4KIDwv
UkNDPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNw
cAppbmRleCBkNGI1MGExLi5mY2Q0NGNjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAi
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIgogCisjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3Lmgi
CisjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29u
dHJvbGxlci5oIgogI2luY2x1ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSA8UVJlZ0V4cD4KICNpbmNs
dWRlIDxRRXZlbnQ+CkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc01vdXNl
RXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCkKIAogTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWlu
aUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIDogUUd1aUFw
cGxpY2F0aW9uKGFyZ2MsIGFyZ3YpCi0gICAgLCBtX3dpbmRvd09wdGlvbnMoKQorICAgICwgbV93
aW5kb3dPcHRpb25zKHRoaXMpCiAgICAgLCBtX2lzUm9ib3RpemVkKGZhbHNlKQogICAgICwgbV9y
b2JvdFRpbWVvdXRTZWNvbmRzKDApCiAgICAgLCBtX3JvYm90RXh0cmFUaW1lU2Vjb25kcygwKQpA
QCAtMTM2LDIwICsxMzksMTYgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVV
c2VyT3B0aW9ucygpCiAgICAgICAgICAgICAgPDwgIlstciBsaXN0XSIKICAgICAgICAgICAgICA8
PCAiWy1yb2JvdC10aW1lb3V0IHNlY29uZHNdIgogICAgICAgICAgICAgIDw8ICJbLXJvYm90LWV4
dHJhLXRpbWUgc2Vjb25kc10iCi0gICAgICAgICAgICAgPDwgIlstY2h1bmtlZC1kcmF3aW5nLWFy
ZWFdIgogICAgICAgICAgICAgIDw8ICJbLXByaW50LWxvYWRlZC11cmxzXSIKLSNpZiBkZWZpbmVk
KFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgICAgICAgICAgPDwgIlstZ2wtdmlld3Bv
cnRdIgotI2VuZGlmCiAgICAgICAgICAgICAgPDwgIlVSTHMiOwogICAgICAgICBhcHBRdWl0KDAp
OwogICAgIH0KIAogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItdG91Y2giKSkKLSAgICAgICAgbV93
aW5kb3dPcHRpb25zLnVzZVRvdWNoV2ViVmlldyA9IHRydWU7CisgICAgICAgIG1fd2luZG93T3B0
aW9ucy5zZXRVc2VUb3VjaFdlYlZpZXcodHJ1ZSk7CiAKICAgICBpZiAoYXJncy5jb250YWlucygi
LW1heGltaXplIikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy5zdGFydE1heGltaXplZCA9IHRy
dWU7CisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRTdGFydE1heGltaXplZCh0cnVlKTsKIAog
ICAgIGludCByb2JvdEluZGV4ID0gYXJncy5pbmRleE9mKCItciIpOwogICAgIGlmIChyb2JvdElu
ZGV4ICE9IC0xKSB7CkBAIC0xNzUsMTAgKzE3NCw1IEBAIHZvaWQgTWluaUJyb3dzZXJBcHBsaWNh
dGlvbjo6aGFuZGxlVXNlck9wdGlvbnMoKQogICAgICAgICBtX3JvYm90RXh0cmFUaW1lU2Vjb25k
cyA9IHRha2VPcHRpb25WYWx1ZSgmYXJncywgcm9ib3RFeHRyYVRpbWVJbmRleCkudG9JbnQoKTsK
IAogICAgIGlmIChhcmdzLmNvbnRhaW5zKCItcHJpbnQtbG9hZGVkLXVybHMiKSkKLSAgICAgICAg
bV93aW5kb3dPcHRpb25zLnByaW50TG9hZGVkVXJscyA9IHRydWU7Ci0KLSNpZiBkZWZpbmVkKFFU
X0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgaWYgKGFyZ3MuY29udGFpbnMoIi1nbC12aWV3
cG9ydCIpKQotICAgICAgICBtX3dpbmRvd09wdGlvbnMudXNlUUdMV2lkZ2V0Vmlld3BvcnQgPSB0
cnVlOwotI2VuZGlmCisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRQcmludExvYWRlZFVybHMo
dHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFw
cGxpY2F0aW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9u
LmgKaW5kZXggN2IyZDE0YS4uMzEwNmY0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyQXBwbGljYXRpb24uaApAQCAtMjksMzAgKzI5LDQxIEBACiAjaWZuZGVmIE1pbmlC
cm93c2VyQXBwbGljYXRpb25faAogI2RlZmluZSBNaW5pQnJvd3NlckFwcGxpY2F0aW9uX2gKIAor
I2luY2x1ZGUgPFF0RGVjbGFyYXRpdmU+CiAjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9u
PgogI2luY2x1ZGUgPFFIYXNoPgorI2luY2x1ZGUgPFFPYmplY3Q+CiAjaW5jbHVkZSA8UVN0cmlu
Z0xpc3Q+CiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRl
ICJxd2luZG93c3lzdGVtaW50ZXJmYWNlX3FwYS5oIgogCi1zdHJ1Y3QgV2luZG93T3B0aW9ucyB7
Ci0gICAgV2luZG93T3B0aW9ucygpCi0gICAgICAgIDogcHJpbnRMb2FkZWRVcmxzKGZhbHNlKQot
ICAgICAgICAsIHVzZVRvdWNoV2ViVmlldyhmYWxzZSkKLSAgICAgICAgLCBzdGFydE1heGltaXpl
ZChmYWxzZSkKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAgICAg
ICwgdXNlUUdMV2lkZ2V0Vmlld3BvcnQoZmFsc2UpCi0jZW5kaWYKK2NsYXNzIFdpbmRvd09wdGlv
bnMgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKyAgICBRX1BST1BFUlRZKGJvb2wg
cHJpbnRMb2FkZWRVcmxzIFJFQUQgcHJpbnRMb2FkZWRVcmxzKQorICAgIFFfUFJPUEVSVFkoYm9v
bCB1c2VUb3VjaFdlYlZpZXcgUkVBRCB1c2VUb3VjaFdlYlZpZXcpCisgICAgUV9QUk9QRVJUWShi
b29sIHN0YXJ0TWF4aW1pemVkIFJFQUQgc3RhcnRNYXhpbWl6ZWQpCisKK3B1YmxpYzoKKyAgICBX
aW5kb3dPcHRpb25zKFFPYmplY3QqIHBhcmVudCA9IDApCisgICAgICAgIDogUU9iamVjdChwYXJl
bnQpCisgICAgICAgICwgbV9wcmludExvYWRlZFVybHMoZmFsc2UpCisgICAgICAgICwgbV91c2VU
b3VjaFdlYlZpZXcoZmFsc2UpCisgICAgICAgICwgbV9zdGFydE1heGltaXplZChmYWxzZSkKICAg
ICB7CiAgICAgfQogCi0gICAgYm9vbCBwcmludExvYWRlZFVybHM7Ci0gICAgYm9vbCB1c2VUb3Vj
aFdlYlZpZXc7Ci0gICAgYm9vbCBzdGFydE1heGltaXplZDsKLSNpZiBkZWZpbmVkKFFUX0NPTkZJ
R1VSRURfV0lUSF9PUEVOR0wpCi0gICAgYm9vbCB1c2VRR0xXaWRnZXRWaWV3cG9ydDsKLSNlbmRp
ZgorICAgIHZvaWQgc2V0UHJpbnRMb2FkZWRVcmxzKGJvb2wgZW5hYmxlZCkgeyBtX3ByaW50TG9h
ZGVkVXJscyA9IGVuYWJsZWQ7IH0KKyAgICBib29sIHByaW50TG9hZGVkVXJscygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbnRMb2FkZWRVcmxzOyB9CisgICAgdm9pZCBzZXRVc2VUb3VjaFdlYlZpZXco
Ym9vbCBlbmFibGVkKSB7IG1fdXNlVG91Y2hXZWJWaWV3ID0gZW5hYmxlZDsgfQorICAgIGJvb2wg
dXNlVG91Y2hXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV91c2VUb3VjaFdlYlZpZXc7IH0KKyAg
ICB2b2lkIHNldFN0YXJ0TWF4aW1pemVkKGJvb2wgZW5hYmxlZCkgeyBtX3N0YXJ0TWF4aW1pemVk
ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0TWF4aW1pemVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ByaW50TG9hZGVkVXJs
czsKKyAgICBib29sIG1fdXNlVG91Y2hXZWJWaWV3OworICAgIGJvb2wgbV9zdGFydE1heGltaXpl
ZDsKIH07CiAKIGNsYXNzIE1pbmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJsaWMgUUd1aUFwcGxp
Y2F0aW9uIHsKQEAgLTgzLDQgKzk0LDYgQEAgcHJpdmF0ZToKICAgICBRSGFzaDxpbnQsIFFXaW5k
b3dTeXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwogCitRTUxf
REVDTEFSRV9UWVBFKFdpbmRvd09wdGlvbnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxM
b2FkZXIuY3BwCmluZGV4IGY4MmE2ZDMuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L1VybExvYWRlci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9h
ZGVyLmNwcApAQCAtNDEsMTYgKzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVyKEJyb3dzZXJX
aW5kb3cqIGJyb3dzZXJXaW5kb3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUsCiAgICAg
bV9jaGVja0lmRmluaXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAgIGNvbm5lY3Qo
Jm1fY2hlY2tJZkZpbmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNo
ZWNrSWZGaW5pc2hlZCgpKSk7CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBv
biBRV2ViUGFnZSBpcyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQotCi0gICAgLy8g
RklYTUU6IFJlY29ubmVjdCB0aGlzIHNpZ25hbHMgYWZ0ZXIgUXQ1L1F0UXVpY2sgcmV3cml0ZSBp
ZiBuZWNlc3NhcnkuCi0gICAgLy8gY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndlYlZpZXcoKSwg
U0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZFN0YXJ0ZWQoKSkpOwot
ICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKKyAgICBjb25u
ZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRo
aXMsIFNMT1QoZnJhbWVMb2FkU3RhcnRlZCgpKSk7CisgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5k
b3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSksIHRoaXMsIFNMT1QoZnJhbWVM
b2FkRmluaXNoZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCks
IFNJR05BTChsb2FkRmFpbGVkKFFEZXNrdG9wV2ViVmlldzo6RXJyb3JUeXBlLCBpbnQsIGNvbnN0
IFFVcmwmKSksIHRoaXMsIFNMT1QoZnJhbWVMb2FkRmluaXNoZWQoKSkpOwogCiAgICAgaWYgKHRp
bWVvdXRTZWNvbmRzKSB7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldEludGVydmFsKHRpbWVv
dXRTZWNvbmRzICogMTAwMCk7CiAgICAgICAgIG1fdGltZW91dFRpbWVyLnNldFNpbmdsZVNob3Qo
dHJ1ZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZWNvbm5lY3QgdGhpcyBzaWduYWwgYWZ0ZXIgUXQ1
L1F0UXVpY2sgcmV3cml0ZSBpZiBuZWNlc3NhcnkuCi0gICAgICAgIC8vIGNvbm5lY3QobV9icm93
c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRp
bWVyLCBTTE9UKHN0YXJ0KCkpKTsKKyAgICAgICAgY29ubmVjdChtX2Jyb3dzZXJXaW5kb3ctPndl
YlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIsIFNMT1Qoc3Rh
cnQoKSkpOwogICAgICAgICBjb25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFMKHRpbWVvdXQo
KSksIHRoaXMsIFNMT1QobG9hZE5leHQoKSkpOwogICAgIH0KICAgICBpZiAoZXh0cmFUaW1lU2Vj
b25kcykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcg
Yi9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjNmNjVk
MzNkMzAzMzE1ZjBkOGQ5ZGQwM2M3ZTdlMjQyN2Q0OTUwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA5MzAKemNtVjtUMTZ9LXlQKTxoOzNLfExrMDAwZTFOSkxUcTAwMCZNMDAwJlUxXkBzNiNJJFRY
MDAwMDRiMyNjfTJuWXhXCnpkPGJOUzAwMDBQYlZYUW5RKlVOO2NWVGo2MEMjdEhFQF5JU2I3TnN9
V2lEQFdYUGZSazhVTyRURylZODNSNSo+Ygp6bTBNXlhSVFBINUhNOGdCVihtcEtESmEkX1p8I0dI
M04/dylmPnMxVU1YbVpHUWwlN3BYLVA+N2Z9JnRpcSgxYVQKelApbGpkTHhAQG1EUGxgQmg5OyZl
bmllJVEjIUorc3ZCbV9gbGpPezAmdDUqOUlkemdZKFQ4LXcmJi1CMy1gZkEkCnppYGs7OFQjZkxx
M2liYmo4PUhmIWBYPSs+bDdyUTtkMlFWLT8+OUNWYn11T3lWOF9FUlJJal52PEUhYFZIRShhKgp6
Q2pPRnZlTHZ1bCZEKDE+dC1Kcn1eSmA3I21naTtKViktViZYbE1AcHopXlF1YnQ5cDN3KSlLWlA4
djZDdHktfmMKelJsfj05WlQqfH0lOWhpdz4mVFZCa3tgRSpKJVI0dSopa19WKXVBWCg5Ykg0TTJw
KUg9WDwlJTgpRSg8O2BQKjgxCnpAODx7Tnt7SUJPdmcySiZ7blZhODZ+JlJkNnNIY1NtZWc1Tndj
SipCSHlWMiF7cDlkV0RKKHY5Pko4ZzUkTDBKPQp6c2syMTNMfVd8RVgtSCY0a35BVm9MdCt+ZXJ5
O1F8QHkraWl4UntSZDxPNGdlUyNqO153dVVgSCkxcU1PNT11I3QKeiQ9TlkzNm8obX57KjleOXBN
PHRaTFAjblJQR1gkSTN8IzE4WHlPWVZ5WUhGVzh8IVgqeHZ8K0N0Wj5ZSGE1MD1ACnpjO1pgPmEq
TTxSS2spRks7MEhiaFFAfUdtO3NocnRZTkdOfTVKWVpSNVMrTVo0bTdDcEZvbSlfQlkzX0FFWTJ5
bgp6dUI+Tkc7ZFZZZWFiJExDZGc0JVRaTXRoZ2E2YklOIXcpPTZtM09JdFg5UTA/KjAwKSVLZjlj
Xmo+RUlsUSMxUWMKekE1N2w/O0g3ekI1ZWUjPiVGRCskPl9ZKDBORXZQZi12fXFpLWxWcHNoQzhv
K2kxQ3BySiRBZmhYN1pRbCszKHQyCnpIJjY+MDVzNmVhRiZXZVYxJT5ncStWLSEkWjBBUGUtT3Mm
UHNQPm4kQHchSmpfeC11Rl5SdHJeIUBhdEZ3OWdGegp6SFQqaldEazVvUiQzRWNxOWtBPHhzIVl8
RF94ZEsmPnImO2VsfjImcS00bE8oX1JGNktLQ3J0a2pfPzt5MDM0OEoKenZWZDglJE4zMExBcz5D
KDVmMlV5X01BRTVVUH5pcDdEO3klYUs0KEtERnlffUJocjRuSFU5TzcoTC1uN2JGRW8hCnprfTF4
PCVkNlo5UmtiMlExfG56ODB3enVMc35gSkVTX1kxfj95UWlAS2BRVkJDO18zVz5ZUlV0bDw3ZyUr
a289YQp6UjIpZG9mekVSbzBnPFpPT1JSLTFReFdrZ3BSfUotI1pDVU9Rb1JEP0ExeDxgendfYk5H
eW5ocTA3KnFvTTZOPCQKRWc1LXcwTEkzfiYKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3ByZXZpb3VzLnBuZyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L2ljb25zL3ByZXZpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2JlM2QxZWU2Yjkw
ODQzZDdkZjBmNTE3NzMzZjYzY2U3MmY0NjExCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA5NTUK
emNtVjtzMTRSNlpQKTxoOzNLfExrMDAwZTFOSkxUcTAwMCZNMDAwJlUxXkBzNiNJJFRYMDAwMDRi
MyNjfTJuWXhXCnpkPGJOUzAwMDBQYlZYUW5RKlVOO2NWVGo2MEMjdEhFQF5JU2I3TnN9V2lEQFdY
UGZSazhVTyRUTy1WI1NSNSo+Ygp6bH0lX3xSVHplIUAwQGUqJjdWXkhCTiZZfDEmeFRIZzJ0R2NF
WlFnJHNsb2FtaWR7KFFyWW1hYHApUjZgOHhlJHgKekU9KUpBVnMlbENCMD8+Ozh4PG0qRGt6OVNs
dnZZPHAqQ3NnV009TlVfajU2S2t9Oy1aVD1jLXBJZzV8eWQldUBeCno/aCNleE4tVDNsc0RTJUYj
bDhFMzBUQipfWk5DNTFzUU5+PVlqKWY+NjdJY3pRfEVfOVl+Tlo4e1U9eW41fGJOdAp6WntGTi1g
PlQ1ZjU0MmUwKHpPX0EqbSs9QlQ2NXlZeUttaV56cHdrenJvZUAzVkt4VG1wTzwjUW8kOX1QTjlV
YmcKel9YZ2lpZUBAVGxMNSFuUFVUfS1Le2xQISMjVntNUmB1MUEodEFjWVE7VF9nQW9mekQ8XlAx
fjYtQyFyQ0pfVkV7CnpPP1k5flRnXnJjZipgVi08bWxNJF8yMzxfST1KXmF4NHBIdz9kWmM+cEtk
ZGVHQk5jRE1sOTlAZEAqPyNCTXVgNQp6WWI9NjZNOTZQPnltMXR7O2I3bW90MmV5N3FrbVYrYE5i
KUlLNj9naDAtT20qSDY9fEd0Wl44el98I3hCJDRNSGEKekQ2JCRqS2pJRnlafHJ6eEFwY20pPG9S
IXlwOElKVHMwbzNqcV8jcHVKYy03ajswVEhBUmR8aEFkNHJjNzhgPzM1CnprYFZoNlduVXh+aT14
O056KytJMTZ+dDclWHt1LW1pc14tYU1YezlyU0l4OzI9bD1adCZfXmZWeT4hIXRabzAwJAp6aHE1
bntuaUFMd0VgcVN4NjE3O0dTfWpwKV4mQilDUW1JQFh0ZlFLS3toSHRSKlgpSmlXNSo4eypNfVlT
YlVzODcKejFsWWpmTFBIUmxEdHJsUWFnbzdUTDRrI0glZTx2MUw/aSZCaTh1VFF3Pj8jeThCZzlq
YSkwbWt3IVkzTXI3LSgzCnpZQVFVcTx5bzlfKnViRXdxK1VzVWJ3Xjw0M0BzdU90N19+cnJ+fEBH
KEdUd0AtYCR3IWs+aF4rbyFuajlIcyl7SAp6PX15bGNMc05NRCZAMUl+Rl4qUF9FLSpLTDc2WEpM
bEdHZ0FPcz1OaXpEKWpAfENPUHtwRkI4IWFsUnxwR1pibmYKeiNBT1clV0IhNWlNSFlaXnJjJD1v
U2d6cXVYbnZaNyFyUkgtTGdEbnUmclhiJjdtS0F2PEBHREFJWmlWOUlgPFZvCnpkPGlYI3I3dT43
ZXduO2ZKaEYjMGpsQHZRVCpnX1FVIWlJZ3NfSTF+aT5saE91OHstV19lWWJsJUhZaDg+byZ7bwp6
QnhXdWYtUGdmbVU9YioocyFJS2hrdCNnXnFISzN7NkckZV9SNmtgSUQ2MX5ORHNzOFVSNzVQKkA3
JmdASGNmNCEKZDFXMHJoJGxyMTFTaH5DPCZhRDZkMDAyb3ZQREhMa1YxaGl3I2NsdXEKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25z
L3JlZnJlc2gucG5nIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvaWNvbnMvcmVmcmVzaC5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2FiNGQwMmM3NTY1MDJmOTIyYmJmZjM0ZGYzNGMwMDU2NDA2YmQ5NgpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMTM2NAp6Y21WLWExKmBnclApPGg7M0t8TGswMDBlMU5KTFRxMDAw
Jk0wMDAmVTFeQHM2I0kkVFgwMDAwNGIzI2N9Mm5ZeFcKemQ8Yk5TMDAwMFBiVlhRblEqVU47Y1ZU
ajYwQyN0SEVAXklTYjdOc31XaURAV1hQZlJrOFVPJFU9MUR8QlI1Kj5iCnptMSNeQVhCZngtPz5q
Uil5UiVDPG1Sc1p5WW11TjlNV3w+U2tENFp9Rj1eVG1mfHs3NzBAaEVxTyVzelF7bjlpcwp6SEVH
Z1g2ZUttYWZUVDJPd1hzS0hKVzh6ITFWTEtgTE9sPWAwZGF4Nz1YanJmVT9DaVNASmxFOFhPZnZg
ZSlGNFcKem98JV5zNSZuO2pLVEE8clMmUV42YnNQM0tYUDNVKWtebGhnWH5yZCQtPnkmO14mPkVC
SEJCb2A1RU98c0tqJj1KCno1X0NiM1hifXxucW9jT2NuN1FWcWVXejBkckB1QEtUUlpEMzk/U3pY
MjNHb0JiM01TeVV3KDBeWkRtZmY+fmdCJAp6b0klJE8xVlJRTEplc3NfXm0rbSM7e2t+PTlRSmVO
M3p3dkc9KUJ6JFZnKWdnKWxzYD1VPjxubWYjI0ZoWD5uekgKelVTRis2Mz0wJGZGayY8bm55TnRK
ME9KZ3hYIzs7U2Y9aXdFIWBKXkYobi1MeHNXNUJWdF5OXlhhdzM+Xz9abURACnpjP01ja148N0RW
T004MkpAaU9ofW1VYzFiNFJYIV9WRyQ5N25kKXxoTih3VFpnKWdLXkxfbytPWSthdmdGVXJyYgp6
X2RrM1JeSi1CUj4qXmdnYnM+cClGVjhNMyl6Nyg5WFpAS0BuaEZAcVZPUFNJNVpfO2B0PjdWITZ3
aW8lYD89UD4KekEzcHUySFEzZk9PaW9xOCgwQis+MHcmaHlyIXooN3VxKi1EOS1hPmQhKXBWPmxn
dTMjPDZXTWVkUENQdUZDYWIjCnpmU1daSC11Qyo2d2t0S3w8JVZ1O3tRWEtfYC12WXJnN0ZUSCVw
P3QkWmpDfmJJNG1KcFdUN3okc0czNl4lRkladgp6am4oVzhWNyQqRm58STtGd0FFRX4+NHRlfER4
Z2EtNGgyS3dBcVc2PWd+UElsRE1BKGlGeHo4R2grdn0yQG53dnwKens8RSZEazE0YFYjVmsjcFNf
bSR4WUZ3cXIoJUleX2lxeGNkNFFZdV5ZJVdOS3N6QCplRmBLbWo+X3woYElnODhVCnolLSVOeTBI
QVdrcVdMYldZRGk8bWYzcXlvajwmUSVORHpucyF0YERVdmd1WXAwQ1BUJjs7Tj1HMkRsY3swMSZ+
KQp6eFkrKjA9SShMJU1qVEo4MFJWLWR3eDhOTk4oN1NVOUZKQEdXUVN+JUlSRk82ZlVzYGo8R1Ir
IXtnS0p7dU9IdnQKejlqJUtAK3QoPlR5akVJSjc8UnwjQCFrSkVFRkJ6dVR0fGUmZDk0NXV2KWcx
YHhIU1I+TFRPJFNuJEYqZTQyPTRZCnp3akpOcXUrVUJ4Jko7LSUkNWU7IXJeJkVMbigrSXBZX2U/
NG9TIXBwKTBUIVFrZGYjRjFKSzwrTXgzISMjcVRzUAp6VUcmQCVwMGd+bVZiVH1lZWYhP3ZoclUy
S257bktvejQ1RnRoJW8/YmFeZiZKOT5rRUI8SCYoNl9OTWJhK3M8OS0Kej88dUtuYGJ0PlQwYiZE
T3YxQjZZaChsSDRkaFFOd3drWjwxVj5RRCY1dnBHVm98YXxeaElIZ0ZpQUJWOygwUntgCnpSfCsk
dzt7MF4yPEllQzBwMnhuaFhVeGFPQ3hUQU4jKnBJSGtlOEU7IzVnQnd7R31fYm5SPz9RRmxVVjJl
Pjg8ZAp6SEoydGgxSytWfXhveWszRVcwO2chWGx0QkZISjc2UWVCS3FfczxYbigtZkhTTjZgNHw0
Wm1kPTJRUXg3OD1qUlUKekF+NDNKXl8yfXF0a1Z8Z0A0QzNkKHtiaWU/dn4xKD9qXmFedERqSEgk
aj9udEdFLXhqKF91cno1SEwmJmxLfnhGCnp5JmlHKD0waU89Rj48KjNedVpiY1ZFfHp3KHIzVy1i
Xjk4O2UkVlopLWdCUyoxSGNpREokPiFZSDdQNSVsYEM1Twp6VDV6VTFSbUJLS09vPDIoNSNPSnFl
WFlqXnR+UFo4MnReWWxxVG1kZXQ9QGc/JjZeR1RGOVdheFEwR0w2TXZ8T3YKekJfWDNBQT9PfFUy
MWZoNTBRQmZ3TjF7KzRmQ3YlTXFOUnkzQ2U0QShMPFMmWGBac1N5Vj8/Nl5GcDA+VCVsUXV9CldY
PFY5ZSt9fmdUMDAwMDxNTlVNbkxTVFpNPGF3Mz0KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3N0b3AucG5nIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY4MjkwYmYxZWJmNTY4ZDhh
YjA4MGE0ZTNlYzdkNzUwNDhlYzQ2MQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTI3Mgp6Y21W
PFUxUEEreFApPGg7M0t8TGswMDBlMU5KTFRxMDAwJk0wMDAmVTFeQHM2I0kkVFgwMDAwNlZvT0l2
MDAwMDAKejAwOCt6eU1GKXgwMTBxTlMjdG1ZM2xqaFUzbGprVm53JUhfMDAwTWNObGlydSlkfj84
RCohXylOQmFOKDFjZ2FOCnpLfnktKWpnP3p5UjdWKWNleztAbV9MNk1rNFlqcHVOTHgofTdUampW
NyE0TWNRVk1+LU04cFBedyU5QGB3cDVHSgp6MmJJS25mJT8jZ0xpLWs+UChjdT50K29sSkRCNk9p
NzwxOUlOdEBmY3lHaCpMP0FoeCViRVhmd3VFcz5eentmbnkKeiV4fUs9Rjg+aWNWO3FNaWZPeTgx
TkRKNj1Fajt6bU4lJXMrcnZsXyQ+azJkaD1Pdyg7MF91TihQcn5XeWhLNyV9CnpIWnszKm1rWDND
bnpDKU1FVVorRHBXRTlyZ01FRzlPVzUteWQ9fmZ3b1Q7dl98NnRxQm8kaCNGQUYxKGl1eCtzSQp6
SlhBYFFsKC1peVYqWipuVHNlMHhHdH1Hci1SSlBgO35mMTc9dlVRc2I/PE42d2FYTGw+bXdac0F3
PVBCcjU/Pm4KelZIcE9OVk5nP0Y/fSowWil2dHhhJVJBdFFTPk99IV8zQSlpJi1VaEtQcHFlaGJS
PEh8PDNURWclZUg1UCF3YGIkCnprYGYlVDctbGxibilVMFFRP1hjMD9abXs9NCowMUVKXnxtWl9X
UFQrQDgwYystbzh5YjUrVWsjQmRWJiVtP21+TQp6VFpBV3NBbVFgalVBdlplSUUqNn0hJUMlaSNx
VzFVNk4kQzg2QjckTjtFRHp5OUZGKDRII2Q4dFUwcX5DQSN6SFEKendKYTl3KnVtMCRgJCtrR09i
ZGFiWCY3Wj90WkhwIyNvb1BgTFhjSnBCTkV9azsyPk1LWjFIRncmbkV5SGZVZklrCnpMWGZfSDl8
fStSU3s5KSpYQW5aTD83I3QxPD5lVHFyTSVxUWluRndvellaUDNaSk18TXI0Jlh1aklMPkBMTXxN
fAp6eD5QRWtjX0JiNERyfXFoKUQqJGZyJikzRUFUSigyajs/OEZOLT1Rd0ZhKDQ2YXlnVnpENWJF
SzB4NjQwKSplOzcKekR3Zm0za31BKlRVfi1iRjNtMCZESlVHMnhBe1FAV2pnMXdkd3J5aVNndiY/
MDxhaXY2WlJiN0xeN2tjbDlxRCRuCnp4VW1zVTJzR2ZpI3p4fHxaZWRBQD5oNENHQ2JucyFHITA1
aF4zS2lqU2p2MWVOSiM9UEpSVio7Yl97MSg4VUxJKgp6TWNAQVlYaEtrUF5lOXV+PEhWJlQrMCNT
di1hVS18ZSZwfmx3clMxO0taR2hOJHcqMFotYUo7ZHdWYHt4e04yX0AKenJtS3RTKnxZUT9JZkIj
V1ZxPCRkOEpDTGBjQD1ValVYMWVqV2A7c2FpOChsa24zXklMM31UcmtZfSFRUD0xdU5qCnp4PHV+
IWJ4S0ReREYrZ2xGVm40UXl3S0V5dEQqdWNGRyVQdjdoPnRzbkp2QXx3eW0rQDtrdERWNGJFSTdM
VCtMTAp6WENsRmFhMlBjKmZAZmQ9eTh6SXByLXxPVkxvUyliNl4pVmA4TnN1MUJ+Xmd7SnZWTmNw
fj1iSDlxXjN+JjtlS0wKelFZa2UkSG53cnk9RlFIV1ZVUCgxKFQwWjVMIWx6bkV8Xm5GYT1wRHxN
QEFeRXRmVnAhOzcpSV5gUkNvY2Y3dE1QCnpDczsrVD16eXltKGBoKzZLMz95eXVYcEI+TndWPkg1
dkp5dCVQSzJiU3pGOFJvdEBlS3Y5VnVtYyhWbnZ2KCY4dgp6dUdNOFM9NGRkdSRzWShmYkQwZDti
USpMV3JSJCgrc0RoUE9SazdVZj1oYHA3V1FKbX5BOG1OTTErMXModUBoTUcKekY/PzN6XkxfWiVo
N0Jkb2BTVEhGVyU9U1NYdEkoTDxATTVlez1DXjhrTkBeMTlJX3otZ257JnY7OEl7WUBJMGByCnoz
M2p7K1p2YUImX1ghMDs8ZkVWanJ+JkEyaGpZTDw1Q3J9TzFfNHZkQGx8O05BNVp9LTFRcX5gZk8m
LSU4OSpGKAppUF9RVTQ0YTZ3Szd2TWpibXRecHdjP2swVzAwMDA8TU5VTW5MU1RYITVtJE51Cgps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9t
YWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCmluZGV4IGEyMGIyNWUuLmNj
N2M2MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCkBAIC02MSw2ICs2MSw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKIAogICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRvdyA9IG5ldyBC
cm93c2VyV2luZG93KCZhcHAubV93aW5kb3dPcHRpb25zKTsKICAgICB3aW5kb3ctPmxvYWQodXJs
cy5hdCgwKSk7CisgICAgd2luZG93LT5zZXRHZW9tZXRyeSgxMDAsIDEwMCwgODAwLCA2MDApOwog
CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1cmxzLnNpemUoKTsgKytpKQogICAgICAgICB3aW5k
b3ctPm5ld1dpbmRvdyh1cmxzLmF0KGkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93
c2VyV2luZG93LnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGFlYTNm
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5k
b3cucW1sCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChD
KSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworUmVjdGFu
Z2xlIHsKKyAgICAvLyBEbyBub3QgZGVmaW5lIGFuY2hvcnMgb3IgYW4gaW5pdGlhbCBzaXplIGhl
cmUhIFRoaXMgd291bGQgbWVzcyB1cCB3aXRoIFFTR1ZpZXc6OlNpemVSb290T2JqZWN0VG9WaWV3
LgorCisgICAgcHJvcGVydHkgYm9vbCBjYW5Hb0JhY2s6IGZhbHNlCisgICAgcHJvcGVydHkgYm9v
bCBjYW5Hb0ZvcndhcmQ6IGZhbHNlCisgICAgcHJvcGVydHkgYm9vbCBjYW5TdG9wOiBmYWxzZQor
ICAgIHByb3BlcnR5IGludCBsb2FkUHJvZ3Jlc3M6IDAKKyAgICBwcm9wZXJ0eSBhbGlhcyB3ZWJW
aWV3OiB2aWV3TG9hZGVyLml0ZW0KKworICAgIHNpZ25hbCBwYWdlVGl0bGVDaGFuZ2VkKHN0cmlu
ZyB0aXRsZSkKKworICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVzcykgeworICAgICAgICB3ZWJWaWV3
LmxvYWQoYWRkcmVzcykKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb2N1c0FkZHJlc3NCYXIoKSB7
CisgICAgICAgIGFkZHJlc3NMaW5lLmZvcmNlQWN0aXZlRm9jdXMoKQorICAgICAgICBhZGRyZXNz
TGluZS5zZWxlY3RBbGwoKQorICAgIH0KKworICAgIFJlY3RhbmdsZSB7CisgICAgICAgIGlkOiBu
YXZpZ2F0aW9uQmFyCisgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKyAgICAgICAgaGVpZ2h0OiAz
MAorICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgIHRvcDogcGFyZW50LnRvcAorICAgICAg
ICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgICAgIHJpZ2h0OiBwYXJlbnQucmlnaHQK
KyAgICAgICAgfQorCisgICAgICAgIFJvdyB7CisgICAgICAgICAgICBpZDogY29udHJvbHNSb3cK
KyAgICAgICAgICAgIHNwYWNpbmc6IDQKKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAg
ICAgICAgICAgaWQ6IGJhY2tCdXR0b24KKyAgICAgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRp
b25CYXIuaGVpZ2h0IC0gMgorICAgICAgICAgICAgICAgIHdpZHRoOiBoZWlnaHQKKyAgICAgICAg
ICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisKKyAgICAgICAgICAgICAgICBJbWFnZSB7CisgICAg
ICAgICAgICAgICAgICAgIGFuY2hvcnMuY2VudGVySW46IHBhcmVudAorICAgICAgICAgICAgICAg
ICAgICBzb3VyY2U6ICIuLi9pY29ucy9wcmV2aW91cy5wbmciCisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9y
cy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlbG9hZEJ1dHRvbi5j
b2xvcgorICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjgKKyAgICAgICAgICAgICAgICAg
ICAgdmlzaWJsZTogIWNhbkdvQmFjaworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIE1vdXNlQXJlYSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50
CisgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZDogeworICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc29sZS5sb2coImdvaW5nIGJhY2siKQorICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uLmdvQmFjaygpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAg
ICAgICAgICAgIGlkOiBmb3J3YXJkQnV0dG9uCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBuYXZp
Z2F0aW9uQmFyLmhlaWdodCAtIDIKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAg
ICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorCisgICAgICAgICAgICAgICAgSW1hZ2Ugewor
ICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlOiAiLi4vaWNvbnMvbmV4dC5wbmciCisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9y
cy5maWxsOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgY29sb3I6IGZvcndhcmRCdXR0b24u
Y29sb3IKKyAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC44CisgICAgICAgICAgICAgICAg
ICAgIHZpc2libGU6ICFjYW5Hb0ZvcndhcmQKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBh
cmVudAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnNvbGUubG9nKCJnb2luZyBmb3J3YXJkIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHdlYlZpZXcubmF2aWdhdGlvbi5nb0ZvcndhcmQoKQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUmVjdGFuZ2xl
IHsKKyAgICAgICAgICAgICAgICBpZDogcmVsb2FkQnV0dG9uCisgICAgICAgICAgICAgICAgaGVp
Z2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdodCAtIDIKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVp
Z2h0CisgICAgICAgICAgICAgICAgY29sb3I6ICIjZWZlZmVmIgorCisgICAgICAgICAgICAgICAg
SW1hZ2UgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlOiBjYW5TdG9wID8gIi4uL2ljb25zL3N0b3AucG5nIiA6
ICIuLi9pY29ucy9yZWZyZXNoLnBuZyIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBNb3VzZUFyZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVu
dAorICAgICAgICAgICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYW5TdG9wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5s
b2coInN0b3AgbG9hZGluZyIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViVmlldy5u
YXZpZ2F0aW9uLnN0b3AoKQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygicmVsb2FkaW5nIikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3Lm5hdmlnYXRpb24ucmVsb2FkKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSZWN0YW5nbGUgeworICAgICAg
ICAgICAgY29sb3I6ICJ3aGl0ZSIKKyAgICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5o
ZWlnaHQgLSA0CisgICAgICAgICAgICBib3JkZXIud2lkdGg6IDEKKyAgICAgICAgICAgIGFuY2hv
cnMgeworICAgICAgICAgICAgICAgIGxlZnQ6IGNvbnRyb2xzUm93LnJpZ2h0CisgICAgICAgICAg
ICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAgICAgICAgIG1hcmdpbnM6IDIKKyAg
ICAgICAgICAgICAgICB2ZXJ0aWNhbENlbnRlcjogcGFyZW50LnZlcnRpY2FsQ2VudGVyCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGFuY2hv
cnMgeworICAgICAgICAgICAgICAgICAgICB0b3A6IHBhcmVudC50b3AKKyAgICAgICAgICAgICAg
ICAgICAgYm90dG9tOiBwYXJlbnQuYm90dG9tCisgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBh
cmVudC5sZWZ0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJl
bnQud2lkdGggLyAxMDAgKiBsb2FkUHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICBjb2xvcjogImJs
dWUiCisgICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zCisgICAgICAgICAgICAgICAgdmlzaWJs
ZTogbG9hZFByb2dyZXNzICE9IDEwMAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUZXh0
SW5wdXQgeworICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzTGluZQorICAgICAgICAgICAgICAg
IGNsaXA6IHRydWUKKyAgICAgICAgICAgICAgICBzZWxlY3RCeU1vdXNlOiB0cnVlCisgICAgICAg
ICAgICAgICAgZm9udCB7CisgICAgICAgICAgICAgICAgICAgIHBvaW50U2l6ZTogMTQKKyAgICAg
ICAgICAgICAgICAgICAgZmFtaWx5OiAiSGVsdmV0aWNhIgorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgICAgICAgICAgdmVydGljYWxDZW50
ZXI6IHBhcmVudC52ZXJ0aWNhbENlbnRlcgorICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwYXJl
bnQubGVmdAorICAgICAgICAgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAg
ICAgICAgICAgICAgIG1hcmdpbnM6IDIKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBLZXlzLm9uUmV0dXJuUHJlc3NlZDp7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCJnb2luZyB0bzogIiwgYWRkcmVzc0xpbmUudGV4dCkKKyAgICAgICAgICAgICAgICAgICAg
d2ViVmlldy5sb2FkKGFkZHJlc3NMaW5lLnRleHQpCisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgS2V5cy5vblByZXNzZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgo
ZXZlbnQubW9kaWZpZXJzICYgUXQuQ29udHJvbE1vZGlmaWVyKSAmJiBldmVudC5rZXkgPT0gUXQu
S2V5X0wpIHx8IGV2ZW50LmtleSA9PSBRdC5rZXlfRjYpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvY3VzQWRkcmVzc0JhcigpCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5hY2Nl
cHRlZCA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIExvYWRlciB7CisgICAgICAgIGlk
OiB2aWV3TG9hZGVyCisgICAgICAgIGFuY2hvcnMgeworICAgICAgICAgICAgdG9wOiBuYXZpZ2F0
aW9uQmFyLmJvdHRvbQorICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAgICAgICAgICAg
IHJpZ2h0OiBwYXJlbnQucmlnaHQKKyAgICAgICAgICAgIGJvdHRvbTogcGFyZW50LmJvdHRvbQor
ICAgICAgICB9CisgICAgICAgIHNvdXJjZTogb3B0aW9ucy51c2VUb3VjaFdlYlZpZXcgPyAiVG91
Y2hWaWV3LnFtbCIgOiAiRGVza3RvcFZpZXcucW1sIgorICAgIH0KKworICAgIENvbm5lY3Rpb25z
IHsKKyAgICAgICAgdGFyZ2V0OiB2aWV3TG9hZGVyLml0ZW0KKyAgICAgICAgb25UaXRsZUNoYW5n
ZWQ6IHBhZ2VUaXRsZUNoYW5nZWQodGl0bGUpCisgICAgICAgIG9uVXJsQ2hhbmdlZDogeworICAg
ICAgICAgICAgYWRkcmVzc0xpbmUudGV4dCA9IHVybAorICAgICAgICAgICAgaWYgKG9wdGlvbnMu
cHJpbnRMb2FkZWRVcmxzKQorICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJMb2FkZWQ6Iiwg
dXJsKTsKKyAgICAgICAgICAgIGZvcmNlQWN0aXZlRm9jdXMoKTsKKyAgICAgICAgfQorICAgICAg
ICBvbk5hdmlnYXRpb25TdGF0ZUNoYW5nZWQ6IHsKKyAgICAgICAgICAgIGNhbkdvQmFjayA9IHZp
ZXdMb2FkZXIuaXRlbS5uYXZpZ2F0aW9uLmNhbkdvQmFjaworICAgICAgICAgICAgY2FuR29Gb3J3
YXJkID0gdmlld0xvYWRlci5pdGVtLm5hdmlnYXRpb24uY2FuR29Gb3J3YXJkCisgICAgICAgICAg
ICBjYW5TdG9wID0gdmlld0xvYWRlci5pdGVtLm5hdmlnYXRpb24uY2FuU3RvcAorICAgICAgICB9
CisgICAgICAgIG9uTG9hZFByb2dyZXNzQ2hhbmdlZDogbG9hZFByb2dyZXNzID0gdmlld0xvYWRl
ci5pdGVtLmxvYWRQcm9ncmVzcworICAgIH0KKworICAgIEtleXMub25QcmVzc2VkOiB7CisgICAg
ICAgIGlmICgoKGV2ZW50Lm1vZGlmaWVycyAmIFF0LkNvbnRyb2xNb2RpZmllcikgJiYgZXZlbnQu
a2V5ID09IFF0LktleV9MKSB8fCBldmVudC5rZXkgPT0gUXQua2V5X0Y2KSB7CisgICAgICAgICAg
ICBmb2N1c0FkZHJlc3NCYXIoKQorICAgICAgICAgICAgZXZlbnQuYWNjZXB0ZWQgPSB0cnVlCisg
ICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwv
RGVza3RvcFZpZXcucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Rlc2t0b3BWaWV3LnFt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTJkZGQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Rlc2t0b3BWaWV3LnFtbApAQCAtMCww
ICsxLDggQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAorCitEZXNr
dG9wV2ViVmlldyB7CisgICAgc2lnbmFsIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQKKworICAgIENv
bXBvbmVudC5vbkNvbXBsZXRlZDogbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNv
bm5lY3QobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCkKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL1Rv
dWNoVmlldy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhZmRiMAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1s
CkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRXZWJLaXQgMy4w
CisKK1RvdWNoV2ViVmlldyB7CisgICAgc2lnbmFsIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQKKwor
ICAgIENvbXBvbmVudC5vbkNvbXBsZXRlZDogbmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFu
Z2VkLmNvbm5lY3QobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112341</attachid>
            <date>2011-10-25 08:43:19 -0700</date>
            <delta_ts>2011-10-25 08:43:19 -0700</delta_ts>
            <desc>patch for landing. - Adding a temporary solution for TouchWebView.</desc>
            <filename>70529_20111025-173257.patch</filename>
            <type>text/plain</type>
            <size>28188</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5Yjg3ZTQ5Li43Y2RlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xMyw2ICsxMywy
MSBAQAogCiAyMDExLTEwLTIwICBaZW5vIEFsYmlzc2VyICA8emVuby5hbGJpc3NlckBub2tpYS5j
b20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWluaUJyb3dzZXIgaW4gUU1MCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMxNQorCisgICAg
ICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mIE1pbmlCcm93c2Vy
LgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290dGUgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBBbGJpc3NlciA8emVuby5hbGJpc3Nl
ckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXc6Om1vdXNlUHJlc3NFdmVudCk6CisKKzIwMTEtMTAtMjAgIFplbm8gQWxi
aXNzZXIgIDx6ZW5vLmFsYmlzc2VyQG5va2lhLmNvbT4KKwogICAgICAgICBbUXRdW1dLMl0gRGlz
YWJsZSBDb250ZXh0IE1lbnVzIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgUU1MIGltcGxlbWVudGF0
aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDUz
NwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
MjU3MjNhNy4uNjNkNWM5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEwLTI0ICBaZW5vIEFsYmlzc2VyICA8
emVuby5hbGJpc3NlckBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0XVtXSzJdIFJld3JpdGUgTWlu
aUJyb3dzZXIgaW4gUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MDMxNQorCisgICAgICAgIEFkZCB0aGUgZmlyc3QgUU1MIGJhc2VkIGltcGxlbWVu
dGF0aW9uIG9mIE1pbmlCcm93c2VyLgorCisgICAgICAgIFBhdGNoIGJ5IEpvY2VseW4gVHVyY290
dGUgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPiwKKyAgICAgICAgICAgICAgICAgWmVubyBB
bGJpc3NlciA8emVuby5hbGJpc3NlckBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAo
QnJvd3NlcldpbmRvdzo6d2ViVmlldyk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojpsb2FkKToK
KyAgICAgICAgKEJyb3dzZXJXaW5kb3c6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoQnJvd3Nl
cldpbmRvdzo6fkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm86Cisg
ICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucXJjOgorICAgICAgICAqIE1pbmlC
cm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uY3BwOgorICAgICAgICAoTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbik6CisgICAgICAgIChNaW5pQnJv
d3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oOgorICAgICAgICAoV2luZG93T3B0aW9uczo6
V2luZG93T3B0aW9ucyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcDoK
KyAgICAgICAgKFVybExvYWRlcjo6VXJsTG9hZGVyKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9x
dC9pY29ucy9uZXh0LnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMv
cHJldmlvdXMucG5nOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZy
ZXNoLnBuZzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvaWNvbnMvc3RvcC5wbmc6
IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0Jyb3dzZXJXaW5kb3cucW1sOiBBZGRl
ZC4KKworMjAxMS0xMC0yMCAgWmVubyBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29t
PgorCiAgICAgICAgIFtRdF1bV0syXSBSZW1vdmUgUXRXaWRnZXRzIGRlcGVuZGVuY3kgaW4gTWlu
aUJyb3dzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNTI5CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggZWU5MGZh
OC4uZmNhOGJlNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTI4
LDMxICsyOCw0OCBAQAogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAi
VXJsTG9hZGVyLmgiCiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRv
dWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKKyNpbmNsdWRlICJ1dGls
cy5oIgogCisjaW5jbHVkZSA8UURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFFEaXI+CiAK
IEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKLSAg
ICA6IG1fdXJsTG9hZGVyKDApCiB7Ci0gICAgaWYgKG9wdGlvbnMpCi0gICAgICAgIG1fd2luZG93
T3B0aW9ucyA9ICpvcHRpb25zOwotICAgIGVsc2UgewotICAgICAgICBXaW5kb3dPcHRpb25zIHRt
cE9wdGlvbnM7Ci0gICAgICAgIG1fd2luZG93T3B0aW9ucyA9IHRtcE9wdGlvbnM7Ci0gICAgfQor
ICAgIHNldFdpbmRvd1RpdGxlKCJNaW5pQnJvd3NlciIpOworICAgIHNldFdpbmRvd0ZsYWdzKFF0
OjpXaW5kb3cgfCBRdDo6V2luZG93VGl0bGVIaW50IHwgUXQ6OldpbmRvd01pbk1heEJ1dHRvbnNI
aW50IHwgUXQ6OldpbmRvd0Nsb3NlQnV0dG9uSGludCk7CisgICAgc2V0UmVzaXplTW9kZShRU0dW
aWV3OjpTaXplUm9vdE9iamVjdFRvVmlldyk7CiAKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnN0
YXJ0TWF4aW1pemVkKQorICAgIC8vIFRoaXMgYWxsb3dzIHN0YXJ0aW5nIE1pbmlCcm93c2VyIGZy
b20gdGhlIGJ1aWxkIGRpcmVjdG9yeSB3aXRob3V0IHByZXZpb3VzbHkgZGVmaW5pbmcgUU1MX0lN
UE9SVF9QQVRILgorICAgIFFEaXIgcW1sSW1wb3J0RGlyID0gUURpcihRQ29yZUFwcGxpY2F0aW9u
OjphcHBsaWNhdGlvbkRpclBhdGgoKSk7CisgICAgcW1sSW1wb3J0RGlyLmNkKCIuLi9pbXBvcnRz
Iik7CisgICAgZW5naW5lKCktPmFkZEltcG9ydFBhdGgocW1sSW1wb3J0RGlyLmNhbm9uaWNhbFBh
dGgoKSk7CisKKyAgICBlbmdpbmUoKS0+cm9vdENvbnRleHQoKS0+c2V0Q29udGV4dFByb3BlcnR5
KCJvcHRpb25zIiwgb3B0aW9ucyk7CisgICAgc2V0U291cmNlKFFVcmwoInFyYzovcW1sL0Jyb3dz
ZXJXaW5kb3cucW1sIikpOworICAgIGNvbm5lY3Qocm9vdE9iamVjdCgpLCBTSUdOQUwocGFnZVRp
dGxlQ2hhbmdlZChRU3RyaW5nKSksIHRoaXMsIFNMT1Qoc2V0V2luZG93VGl0bGUoUVN0cmluZykp
KTsKKyAgICBpZiAob3B0aW9ucy0+c3RhcnRNYXhpbWl6ZWQoKSkKICAgICAgICAgc2V0V2luZG93
U3RhdGUoUXQ6OldpbmRvd01heGltaXplZCk7CiAgICAgZWxzZQogICAgICAgICByZXNpemUoODAw
LCA2MDApOwogICAgIHNob3coKTsKIH0KIAorUU9iamVjdCogQnJvd3NlcldpbmRvdzo6d2ViVmll
dygpIGNvbnN0Cit7CisgICAgUU9iamVjdCogd2ViVmlldyA9IHJvb3RPYmplY3QoKS0+cHJvcGVy
dHkoIndlYlZpZXciKS52YWx1ZTxRRGVza3RvcFdlYlZpZXcqPigpOworICAgIC8vIFRoZSB3ZWJW
aWV3IGlzIGNyZWF0ZWQgaW4gUU1MLCB0aGVyZWZvcmUgaXQgbWlnaHQgbm90IGV4aXN0IHlldC4K
KyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHdlYlZpZXcgPSByb290T2JqZWN0KCktPnByb3Bl
cnR5KCJ3ZWJWaWV3IikudmFsdWU8UVRvdWNoV2ViVmlldyo+KCk7CisgICAgcmV0dXJuIHdlYlZp
ZXc7Cit9CisKIHZvaWQgQnJvd3NlcldpbmRvdzo6bG9hZChjb25zdCBRU3RyaW5nJiB1cmwpCiB7
CisgICAgUVVybCBjb21wbGV0ZWRVcmwgPSB1cmxGcm9tVXNlcklucHV0KHVybCk7CisgICAgUU1l
dGFPYmplY3Q6Omludm9rZU1ldGhvZChyb290T2JqZWN0KCksICJsb2FkIiwgUXQ6OkRpcmVjdENv
bm5lY3Rpb24sIFFfQVJHKFFWYXJpYW50LCBjb21wbGV0ZWRVcmwpKTsKIH0KIAogQnJvd3Nlcldp
bmRvdyogQnJvd3NlcldpbmRvdzo6bmV3V2luZG93KGNvbnN0IFFTdHJpbmcmIHVybCkKQEAgLTY2
LDE1ICs4MywxMCBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnNjcmVlbnNob3QoKQogewogfQogCi12
b2lkIEJyb3dzZXJXaW5kb3c6OmxvYWRVUkxMaXN0RnJvbUZpbGUoKQotewotfQotCiB2b2lkIEJy
b3dzZXJXaW5kb3c6OnVwZGF0ZVVzZXJBZ2VudExpc3QoKQogewogfQogCiBCcm93c2VyV2luZG93
Ojp+QnJvd3NlcldpbmRvdygpCiB7Ci0gICAgZGVsZXRlIG1fdXJsTG9hZGVyOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDhlYzJkMWEuLjIwZjA4ZTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTMxLDExICszMSw4IEBACiAKICNpbmNsdWRl
ICJNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5j
bHVkZSA8UVRpbWVyPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVNHVmlldz4KIAotY2xhc3Mg
VXJsTG9hZGVyOwotCiBjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFTR1ZpZXcgewogICAg
IFFfT0JKRUNUCiAKQEAgLTUxLDEzICs0OCw4IEBAIHB1YmxpYyBzbG90czoKIHByb3RlY3RlZCBz
bG90czoKICAgICB2b2lkIHNjcmVlbnNob3QoKTsKIAotICAgIHZvaWQgbG9hZFVSTExpc3RGcm9t
RmlsZSgpOwotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVXNlckFnZW50TGlzdCgpOwotCi0g
ICAgVXJsTG9hZGVyKiBtX3VybExvYWRlcjsKLSAgICBXaW5kb3dPcHRpb25zIG1fd2luZG93T3B0
aW9uczsKICAgICBRU3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CiB9OwogCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5wcm8KaW5kZXggYTJlZDA5OC4uNzFiMjIzOCAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtNDgsMyArNDgsOCBAQCBERUZJTkVTIC09IFFUX0FT
Q0lJX0NBU1RfV0FSTklOR1MKIAogIyBVc2UgdGhlIE1pbmlCcm93c2VyLnFyYyBmaWxlIGZyb20g
dGhlIHNvdXJjZXMuCiBSRVNPVVJDRVMgKz0gTWluaUJyb3dzZXIucXJjCisKK09USEVSX0ZJTEVT
ICs9IFwKKyAgICBxbWwvQnJvd3NlcldpbmRvdy5xbWwgXAorICAgIHFtbC9EZXNrdG9wVmlldy5x
bWwgXAorICAgIHFtbC9Ub3VjaFZpZXcucW1sCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5xcmMgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5x
cmMKaW5kZXggZmZlNzdiMC4uMTJkZGMzMiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXIucXJjCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
LnFyYwpAQCAtMSw1ICsxLDEyIEBACiA8UkNDPgogICAgIDxxcmVzb3VyY2UgcHJlZml4PSIvIj4K
KyAgICAgICAgPGZpbGU+aWNvbnMvbmV4dC5wbmc8L2ZpbGU+CisgICAgICAgIDxmaWxlPmljb25z
L3ByZXZpb3VzLnBuZzwvZmlsZT4KKyAgICAgICAgPGZpbGU+aWNvbnMvcmVmcmVzaC5wbmc8L2Zp
bGU+CisgICAgICAgIDxmaWxlPmljb25zL3N0b3AucG5nPC9maWxlPgorICAgICAgICA8ZmlsZT5x
bWwvQnJvd3NlcldpbmRvdy5xbWw8L2ZpbGU+CiAgICAgICAgIDxmaWxlPnVzZXJhZ2VudGxpc3Qu
dHh0PC9maWxlPgorICAgICAgICA8ZmlsZT5xbWwvRGVza3RvcFZpZXcucW1sPC9maWxlPgorICAg
ICAgICA8ZmlsZT5xbWwvVG91Y2hWaWV3LnFtbDwvZmlsZT4KICAgICA8L3FyZXNvdXJjZT4KIDwv
UkNDPgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNw
cAppbmRleCBiMTZiMjIyLi5jMzhlNjU3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAi
TWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oIgogCisjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3Lmgi
CisjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgorI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29u
dHJvbGxlci5oIgogI2luY2x1ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSA8UVJlZ0V4cD4KICNpbmNs
dWRlIDxRRXZlbnQ+CkBAIC02Miw3ICs2NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc01vdXNl
RXZlbnQoY29uc3QgUUV2ZW50KiBldmVudCkKIAogTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWlu
aUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIDogUUd1aUFw
cGxpY2F0aW9uKGFyZ2MsIGFyZ3YpCi0gICAgLCBtX3dpbmRvd09wdGlvbnMoKQorICAgICwgbV93
aW5kb3dPcHRpb25zKHRoaXMpCiAgICAgLCBtX3JlYWxUb3VjaEV2ZW50UmVjZWl2ZWQoZmFsc2Up
CiAgICAgLCBtX3BlbmRpbmdGYWtlVG91Y2hFdmVudENvdW50KDApCiAgICAgLCBtX2lzUm9ib3Rp
emVkKGZhbHNlKQpAQCAtMTg4LDEwICsxOTEsMTAgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0
aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygpCiAgICAgfQogCiAgICAgaWYgKGFyZ3MuY29udGFpbnMo
Ii10b3VjaCIpKQotICAgICAgICBtX3dpbmRvd09wdGlvbnMudXNlVG91Y2hXZWJWaWV3ID0gdHJ1
ZTsKKyAgICAgICAgbV93aW5kb3dPcHRpb25zLnNldFVzZVRvdWNoV2ViVmlldyh0cnVlKTsKIAog
ICAgIGlmIChhcmdzLmNvbnRhaW5zKCItbWF4aW1pemUiKSkKLSAgICAgICAgbV93aW5kb3dPcHRp
b25zLnN0YXJ0TWF4aW1pemVkID0gdHJ1ZTsKKyAgICAgICAgbV93aW5kb3dPcHRpb25zLnNldFN0
YXJ0TWF4aW1pemVkKHRydWUpOwogCiAgICAgaW50IHJvYm90SW5kZXggPSBhcmdzLmluZGV4T2Yo
Ii1yIik7CiAgICAgaWYgKHJvYm90SW5kZXggIT0gLTEpIHsKQEAgLTIxNyw2ICsyMjAsNSBAQCB2
b2lkIE1pbmlCcm93c2VyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25zKCkKICAgICAgICAg
bV9yb2JvdEV4dHJhVGltZVNlY29uZHMgPSB0YWtlT3B0aW9uVmFsdWUoJmFyZ3MsIHJvYm90RXh0
cmFUaW1lSW5kZXgpLnRvSW50KCk7CiAKICAgICBpZiAoYXJncy5jb250YWlucygiLXByaW50LWxv
YWRlZC11cmxzIikpCi0gICAgICAgIG1fd2luZG93T3B0aW9ucy5wcmludExvYWRlZFVybHMgPSB0
cnVlOwotCisgICAgICAgIG1fd2luZG93T3B0aW9ucy5zZXRQcmludExvYWRlZFVybHModHJ1ZSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0
aW9uLmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgKaW5k
ZXggMDcwZWE3MS4uYjUzOWE3MSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWlu
aUJyb3dzZXJBcHBsaWNhdGlvbi5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93
c2VyQXBwbGljYXRpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBNaW5pQnJvd3NlckFw
cGxpY2F0aW9uX2gKIAogI2luY2x1ZGUgPFFIYXNoPgorI2luY2x1ZGUgPFFPYmplY3Q+CiAjaW5j
bHVkZSA8UVN0cmluZ0xpc3Q+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZT4KICNpbmNsdWRlIDxR
dEd1aS9RR3VpQXBwbGljYXRpb24+CkBAIC0zNywyMCArMzgsMzIgQEAKICNpbmNsdWRlIDxRVXJs
PgogI2luY2x1ZGUgInF3aW5kb3dzeXN0ZW1pbnRlcmZhY2VfcXBhLmgiCiAKLXN0cnVjdCBXaW5k
b3dPcHRpb25zIHsKLSAgICBXaW5kb3dPcHRpb25zKCkKLSAgICAgICAgOiBwcmludExvYWRlZFVy
bHMoZmFsc2UpCi0gICAgICAgICwgdXNlVG91Y2hXZWJWaWV3KGZhbHNlKQotICAgICAgICAsIHN0
YXJ0TWF4aW1pemVkKGZhbHNlKQotI2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5H
TCkKLSAgICAgICAgLCB1c2VRR0xXaWRnZXRWaWV3cG9ydChmYWxzZSkKLSNlbmRpZgorY2xhc3Mg
V2luZG93T3B0aW9ucyA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJP
UEVSVFkoYm9vbCBwcmludExvYWRlZFVybHMgUkVBRCBwcmludExvYWRlZFVybHMpCisgICAgUV9Q
Uk9QRVJUWShib29sIHVzZVRvdWNoV2ViVmlldyBSRUFEIHVzZVRvdWNoV2ViVmlldykKKyAgICBR
X1BST1BFUlRZKGJvb2wgc3RhcnRNYXhpbWl6ZWQgUkVBRCBzdGFydE1heGltaXplZCkKKworcHVi
bGljOgorICAgIFdpbmRvd09wdGlvbnMoUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICAgICAgOiBR
T2JqZWN0KHBhcmVudCkKKyAgICAgICAgLCBtX3ByaW50TG9hZGVkVXJscyhmYWxzZSkKKyAgICAg
ICAgLCBtX3VzZVRvdWNoV2ViVmlldyhmYWxzZSkKKyAgICAgICAgLCBtX3N0YXJ0TWF4aW1pemVk
KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBib29sIHByaW50TG9hZGVkVXJsczsKLSAgICBi
b29sIHVzZVRvdWNoV2ViVmlldzsKLSAgICBib29sIHN0YXJ0TWF4aW1pemVkOworICAgIHZvaWQg
c2V0UHJpbnRMb2FkZWRVcmxzKGJvb2wgZW5hYmxlZCkgeyBtX3ByaW50TG9hZGVkVXJscyA9IGVu
YWJsZWQ7IH0KKyAgICBib29sIHByaW50TG9hZGVkVXJscygpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bnRMb2FkZWRVcmxzOyB9CisgICAgdm9pZCBzZXRVc2VUb3VjaFdlYlZpZXcoYm9vbCBlbmFibGVk
KSB7IG1fdXNlVG91Y2hXZWJWaWV3ID0gZW5hYmxlZDsgfQorICAgIGJvb2wgdXNlVG91Y2hXZWJW
aWV3KCkgY29uc3QgeyByZXR1cm4gbV91c2VUb3VjaFdlYlZpZXc7IH0KKyAgICB2b2lkIHNldFN0
YXJ0TWF4aW1pemVkKGJvb2wgZW5hYmxlZCkgeyBtX3N0YXJ0TWF4aW1pemVkID0gZW5hYmxlZDsg
fQorICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TWF4aW1p
emVkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ByaW50TG9hZGVkVXJsczsKKyAgICBib29s
IG1fdXNlVG91Y2hXZWJWaWV3OworICAgIGJvb2wgbV9zdGFydE1heGltaXplZDsKIH07CiAKIGNs
YXNzIE1pbmlCcm93c2VyQXBwbGljYXRpb24gOiBwdWJsaWMgUUd1aUFwcGxpY2F0aW9uIHsKQEAg
LTgxLDQgKzk0LDYgQEAgcHJpdmF0ZToKICAgICBRSGFzaDxpbnQsIFFXaW5kb3dTeXN0ZW1JbnRl
cmZhY2U6OlRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwogCitRTUxfREVDTEFSRV9UWVBF
KFdpbmRvd09wdGlvbnMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L1VybExvYWRlci5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwCmlu
ZGV4IDBkYTRlMDUuLmViZDY3MGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L1Vy
bExvYWRlci5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcApAQCAt
NDEsMTYgKzQxLDE0IEBAIFVybExvYWRlcjo6VXJsTG9hZGVyKEJyb3dzZXJXaW5kb3cqIGJyb3dz
ZXJXaW5kb3csIGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUsCiAgICAgbV9jaGVja0lmRmlu
aXNoZWRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwogICAgIGNvbm5lY3QoJm1fY2hlY2tJZkZp
bmlzaGVkVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGNoZWNrSWZGaW5pc2hl
ZCgpKSk7CiAgICAgLy8gbG9hZFN0YXJ0ZWQgYW5kIGxvYWRGaW5pc2hlZCBvbiBRV2ViUGFnZSBp
cyBlbWl0dGVkIGZvciBlYWNoIGZyYW1lL3N1Yi1mcmFtZQotCi0gICAgLy8gRklYTUU6IFJlY29u
bmVjdCB0aGVzZSBzaWduYWxzIGFmdGVyIFF0NS9RdFF1aWNrIHJld3JpdGUgaWYgbmVjZXNzYXJ5
LgotICAgIC8vIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJR05BTChsb2Fk
U3RhcnRlZCgpKSwgdGhpcywgU0xPVChmcmFtZUxvYWRTdGFydGVkKCkpKTsKLSAgICAvLyBjb25u
ZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wp
KSwgdGhpcywgU0xPVChmcmFtZUxvYWRGaW5pc2hlZCgpKSk7CisgICAgY29ubmVjdChtX2Jyb3dz
ZXJXaW5kb3ctPndlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlzLCBTTE9UKGZy
YW1lTG9hZFN0YXJ0ZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3
KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVk
KCkpKTsKKyAgICBjb25uZWN0KG1fYnJvd3NlcldpbmRvdy0+d2ViVmlldygpLCBTSUdOQUwobG9h
ZEZhaWxlZChRRGVza3RvcFdlYlZpZXc6OkVycm9yVHlwZSwgaW50LCBjb25zdCBRVXJsJikpLCB0
aGlzLCBTTE9UKGZyYW1lTG9hZEZpbmlzaGVkKCkpKTsKIAogICAgIGlmICh0aW1lb3V0U2Vjb25k
cykgewogICAgICAgICBtX3RpbWVvdXRUaW1lci5zZXRJbnRlcnZhbCh0aW1lb3V0U2Vjb25kcyAq
IDEwMDApOwogICAgICAgICBtX3RpbWVvdXRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOwotICAg
ICAgICAvLyBGSVhNRTogUmVjb25uZWN0IHRoaXMgc2lnbmFsIGFmdGVyIFF0NS9RdFF1aWNrIHJl
d3JpdGUgaWYgbmVjZXNzYXJ5LgotICAgICAgICAvLyBjb25uZWN0KG1fYnJvd3NlcldpbmRvdy0+
d2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksICZtX3RpbWVvdXRUaW1lciwgU0xPVChz
dGFydCgpKSk7CisgICAgICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93LT53ZWJWaWV3KCksIFNJ
R05BTChsb2FkU3RhcnRlZCgpKSwgJm1fdGltZW91dFRpbWVyLCBTTE9UKHN0YXJ0KCkpKTsKICAg
ICAgICAgY29ubmVjdCgmbV90aW1lb3V0VGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBT
TE9UKGxvYWROZXh0KCkpKTsKICAgICB9CiAgICAgaWYgKGV4dHJhVGltZVNlY29uZHMpIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL25leHQucG5nIGIvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvaWNvbnMvbmV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYzZjY1ZDMzZDMwMzMxNWYw
ZDhkOWRkMDNjN2U3ZTI0MjdkNDk1MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTMwCnpjbVY7
VDE2fS15UCk8aDszS3xMazAwMGUxTkpMVHEwMDAmTTAwMCZVMV5AczYjSSRUWDAwMDA0YjMjY30y
bll4Vwp6ZDxiTlMwMDAwUGJWWFFuUSpVTjtjVlRqNjBDI3RIRUBeSVNiN05zfVdpREBXWFBmUms4
VU8kVEcpWTgzUjUqPmIKem0wTV5YUlRQSDVITThnQlYobXBLREphJF9afCNHSDNOP3cpZj5zMVVN
WG1aR1FsJTdwWC1QPjdmfSZ0aXEoMWFUCnpQKWxqZEx4QEBtRFBsYEJoOTsmZW5pZSVRIyFKK3N2
Qm1fYGxqT3swJnQ1KjlJZHpnWShUOC13JiYtQjMtYGZBJAp6aWBrOzhUI2ZMcTNpYmJqOD1IZiFg
WD0rPmw3clE7ZDJRVi0/PjlDVmJ9dU95VjhfRVJSSWpedjxFIWBWSEUoYSoKekNqT0Z2ZUx2dWwm
RCgxPnQtSnJ9XkpgNyNtZ2k7SlYpLVYmWGxNQHB6KV5RdWJ0OXAzdykpS1pQOHY2Q3R5LX5jCnpS
bH49OVpUKnx9JTloaXc+JlRWQmt7YEUqSiVSNHUqKWtfVil1QVgoOWJINE0ycClIPVg8JSU4KUUo
PDtgUCo4MQp6QDg8e057e0lCT3ZnMkome25WYTg2fiZSZDZzSGNTbWVnNU53Y0oqQkh5VjIhe3A5
ZFdESih2OT5KOGc1JEwwSj0KenNrMjEzTH1XfEVYLUgmNGt+QVZvTHQrfmVyeTtRfEB5K2lpeFJ7
UmQ8TzRnZVMjajted3VVYEgpMXFNTzU9dSN0CnokPU5ZMzZvKG1+eyo5XjlwTTx0WkxQI25SUEdY
JEkzfCMxOFh5T1lWeVlIRlc4fCFYKnh2fCtDdFo+WUhhNTA9QAp6YztaYD5hKk08UktrKUZLOzBI
YmhRQH1HbTtzaHJ0WU5HTn01SllaUjVTK01aNG03Q3BGb20pX0JZM19BRVkyeW4KenVCPk5HO2RW
WWVhYiRMQ2RnNCVUWk10aGdhNmJJTiF3KT02bTNPSXRYOVEwPyowMCklS2Y5Y15qPkVJbFEjMVFj
CnpBNTdsPztIN3pCNWVlIz4lRkQrJD5fWSgwTkV2UGYtdn1xaS1sVnBzaEM4bytpMUNwckokQWZo
WDdaUWwrMyh0Mgp6SCY2PjA1czZlYUYmV2VWMSU+Z3ErVi0hJFowQVBlLU9zJlBzUD5uJEB3IUpq
X3gtdUZeUnRyXiFAYXRGdzlnRnoKekhUKmpXRGs1b1IkM0VjcTlrQTx4cyFZfERfeGRLJj5yJjtl
bH4yJnEtNGxPKF9SRjZLS0NydGtqXz87eTAzNDhKCnp2VmQ4JSROMzBMQXM+Qyg1ZjJVeV9NQUU1
VVB+aXA3RDt5JWFLNChLREZ5X31CaHI0bkhVOU83KEwtbjdiRkVvIQp6a30xeDwlZDZaOVJrYjJR
MXxuejgwd3p1THN+YEpFU19ZMX4/eVFpQEtgUVZCQztfM1c+WVJVdGw8N2clK2tvPWEKelIyKWRv
ZnpFUm8wZzxaT09SUi0xUXhXa2dwUn1KLSNaQ1VPUW9SRD9BMXg8YHp3X2JOR3luaHEwNypxb002
TjwkCkVnNS13MExJM34mCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9pY29ucy9wcmV2aW91cy5wbmcgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9pY29ucy9wcmV2aW91cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNiZTNkMWVlNmI5MDg0M2Q3ZGYwZjUx
NzczM2Y2M2NlNzJmNDYxMQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgOTU1CnpjbVY7czE0UjZa
UCk8aDszS3xMazAwMGUxTkpMVHEwMDAmTTAwMCZVMV5AczYjSSRUWDAwMDA0YjMjY30ybll4Vwp6
ZDxiTlMwMDAwUGJWWFFuUSpVTjtjVlRqNjBDI3RIRUBeSVNiN05zfVdpREBXWFBmUms4VU8kVE8t
ViNTUjUqPmIKemx9JV98UlR6ZSFAMEBlKiY3Vl5IQk4mWXwxJnhUSGcydEdjRVpRZyRzbG9hbWlk
eyhRclltYWBwKVI2YDh4ZSR4CnpFPSlKQVZzJWxDQjA/Pjs4eDxtKkRrejlTbHZ2WTxwKkNzZ1dN
PU5VX2o1NktrfTstWlQ9Yy1wSWc1fHlkJXVAXgp6P2gjZXhOLVQzbHNEUyVGI2w4RTMwVEIqX1pO
QzUxc1FOfj1ZailmPjY3SWN6UXxFXzlZfk5aOHtVPXluNXxiTnQKelp7Rk4tYD5UNWY1NDJlMCh6
T19BKm0rPUJUNjV5WXlLbWleenB3a3pyb2VAM1ZLeFRtcE88I1FvJDl9UE45VWJnCnpfWGdpaWVA
QFRsTDUhblBVVH0tS3tsUCEjI1Z7TVJgdTFBKHRBY1lRO1RfZ0FvZnpEPF5QMX42LUMhckNKX1ZF
ewp6Tz9ZOX5UZ15yY2YqYFYtPG1sTSRfMjM8X0k9Sl5heDRwSHc/ZFpjPnBLZGRlR0JOY0RNbDk5
QGRAKj8jQk11YDUKelliPTY2TTk2UD55bTF0eztiN21vdDJleTdxa21WK2BOYilJSzY/Z2gwLU9t
Kkg2PXxHdFpeOHpffCN4QiQ0TUhhCnpENiQkaktqSUZ5WnxyenhBcGNtKTxvUiF5cDhJSlRzMG8z
anFfI3B1SmMtN2o7MFRIQVJkfGhBZDRyYzc4YD8zNQp6a2BWaDZXblV4fmk9eDtOeisrSTE2fnQ3
JVh7dS1taXNeLWFNWHs5clNJeDsyPWw9WnQmX15mVnk+ISF0Wm8wMCQKemhxNW57bmlBTHdFYHFT
eDYxNztHU31qcCleJkIpQ1FtSUBYdGZRS0t7aEh0UipYKUppVzUqOHsqTX1ZU2JVczg3CnoxbFlq
ZkxQSFJsRHRybFFhZ283VEw0ayNIJWU8djFMP2kmQmk4dVRRdz4/I3k4Qmc5amEpMG1rdyFZM01y
Ny0oMwp6WUFRVXE8eW85Xyp1YkV3cStVc1Vid148NDNAc3VPdDdffnJyfnxARyhHVHdALWAkdyFr
PmheK28hbmo5SHMpe0gKej19eWxjTHNOTUQmQDFJfkZeKlBfRS0qS0w3NlhKTGxHR2dBT3M9Tml6
RClqQHxDT1B7cEZCOCFhbFJ8cEdaYm5mCnojQU9XJVdCITVpTUhZWl5yYyQ9b1NnenF1WG52Wjch
clJILUxnRG51JnJYYiY3bUtBdjxAR0RBSVppVjlJYDxWbwp6ZDxpWCNyN3U+N2V3bjtmSmhGIzBq
bEB2UVQqZ19RVSFpSWdzX0kxfmk+bGhPdTh7LVdfZVlibCVIWWg4Pm8me28KekJ4V3VmLVBnZm1V
PWIqKHMhSUtoa3QjZ15xSEszezZHJGVfUjZrYElENjF+TkRzczhVUjc1UCpANyZnQEhjZjQhCmQx
VzByaCRscjExU2h+QzwmYUQ2ZDAwMm92UERITGtWMWhpdyNjbHVxCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9yZWZyZXNoLnBu
ZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L2ljb25zL3JlZnJlc2gucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNh
YjRkMDJjNzU2NTAyZjkyMmJiZmYzNGRmMzRjMDA1NjQwNmJkOTYKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDEzNjQKemNtVi1hMSpgZ3JQKTxoOzNLfExrMDAwZTFOSkxUcTAwMCZNMDAwJlUxXkBz
NiNJJFRYMDAwMDRiMyNjfTJuWXhXCnpkPGJOUzAwMDBQYlZYUW5RKlVOO2NWVGo2MEMjdEhFQF5J
U2I3TnN9V2lEQFdYUGZSazhVTyRVPTFEfEJSNSo+Ygp6bTEjXkFYQmZ4LT8+alIpeVIlQzxtUnNa
eVltdU45TVd8PlNrRDRafUY9XlRtZnx7NzcwQGhFcU8lc3pRe245aXMKekhFR2dYNmVLbWFmVFQy
T3dYc0tISlc4eiExVkxLYExPbD1gMGRheDc9WGpyZlU/Q2lTQEpsRThYT2Z2YGUpRjRXCnpvfCVe
czUmbjtqS1RBPHJTJlFeNmJzUDNLWFAzVSlrXmxoZ1h+cmQkLT55JjteJj5FQkhCQm9gNUVPfHNL
aiY9Sgp6NV9DYjNYYn18bnFvY09jbjdRVnFlV3owZHJAdUBLVFJaRDM5P1N6WDIzR29CYjNNU3lV
dygwXlpEbWZmPn5nQiQKem9JJSRPMVZSUUxKZXNzX15tK20jO3trfj05UUplTjN6d3ZHPSlCeiRW
ZylnZylsc2A9VT48bm1mIyNGaFg+bnpICnpVU0YrNjM9MCRmRmsmPG5ueU50SjBPSmd4WCM7O1Nm
PWl3RSFgSl5GKG4tTHhzVzVCVnReTl5YYXczPl8/Wm1EQAp6Yz9NY2tePDdEVk9NODJKQGlPaH1t
VWMxYjRSWCFfVkckOTduZCl8aE4od1RaZylnS15MX28rT1krYXZnRlVycmIKel9kazNSXkotQlI+
Kl5nZ2JzPnApRlY4TTMpejcoOVhaQEtAbmhGQHFWT1BTSTVaXztgdD43ViE2d2lvJWA/PVA+CnpB
M3B1MkhRM2ZPT2lvcTgoMEIrPjB3Jmh5ciF6KDd1cSotRDktYT5kISlwVj5sZ3UzIzw2V01lZFBD
UHVGQ2FiIwp6ZlNXWkgtdUMqNndrdEt8PCVWdTt7UVhLX2AtdllyZzdGVEglcD90JFpqQ35iSTRt
SnBXVDd6JHNHMzZeJUZJWnYKempuKFc4VjckKkZufEk7RndBRUV+PjR0ZXxEeGdhLTRoMkt3QXFX
Nj1nflBJbERNQShpRnh6OEdoK3Z9MkBud3Z8Cnp7PEUmRGsxNGBWI1ZrI3BTX20keFlGd3FyKCVJ
Xl9pcXhjZDRRWXVeWSVXTktzekAqZUZgS21qPl98KGBJZzg4VQp6JS0lTnkwSEFXa3FXTGJXWURp
PG1mM3F5b2o8JlElTkR6bnMhdGBEVXZndVlwMENQVCY7O049RzJEbGN7MDEmfikKenhZKyowPUko
TCVNalRKODBSVi1kd3g4Tk5OKDdTVTlGSkBHV1FTfiVJUkZPNmZVc2BqPEdSKyF7Z0tKe3VPSHZ0
Cno5aiVLQCt0KD5UeWpFSUo3PFJ8I0Aha0pFRUZCenVUdHxlJmQ5NDV1dilnMWB4SFNSPkxUTyRT
biRGKmU0Mj00WQp6d2pKTnF1K1VCeCZKOy0lJDVlOyFyXiZFTG4oK0lwWV9lPzRvUyFwcCkwVCFR
a2RmI0YxSks8K014MyEjI3FUc1AKelVHJkAlcDBnfm1WYlR9ZWVmIT92aHJVMktue25Lb3o0NUZ0
aCVvP2JhXmYmSjk+a0VCPEgmKDZfTk1iYStzPDktCno/PHVLbmBidD5UMGImRE92MUI2WWgobEg0
ZGhRTnd3a1o8MVY+UUQmNXZwR1ZvfGF8XmhJSGdGaUFCVjsoMFJ7YAp6UnwrJHc7ezBeMjxJZUMw
cDJ4bmhYVXhhT0N4VEFOIypwSUhrZThFOyM1Z0J3e0d9X2JuUj8/UUZsVVYyZT44PGQKekhKMnRo
MUsrVn14b3lrM0VXMDtnIVhsdEJGSEo3NlFlQktxX3M8WG4oLWZIU042YDR8NFptZD0yUVF4Nzg9
alJVCnpBfjQzSl5fMn1xdGtWfGdANEMzZCh7YmllP3Z+MSg/al5hXnREakhIJGo/bnRHRS14aihf
dXJ6NUhMJiZsS354Rgp6eSZpRyg9MGlPPUY+PCozXnVaYmNWRXx6dyhyM1ctYl45ODtlJFZaKS1n
QlMqMUhjaURKJD4hWUg3UDUlbGBDNU8KelQ1elUxUm1CS0tPbzwyKDUjT0pxZVhZal50flBaODJ0
XllscVRtZGV0PUBnPyY2XkdURjlXYXhRMEdMNk12fE92CnpCX1gzQUE/T3xVMjFmaDUwUUJmd04x
eys0ZkN2JU1xTlJ5M0NlNEEoTDxTJlhgWnNTeVY/PzZeRnAwPlQlbFF1fQpXWDxWOWUrfX5nVDAw
MDA8TU5VTW5MU1RaTTxhdzM9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9pY29ucy9zdG9wLnBuZyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0
L2ljb25zL3N0b3AucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ODI5MGJmMWViZjU2OGQ4YWIwODBhNGUzZWM3
ZDc1MDQ4ZWM0NjEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEyNzIKemNtVjxVMVBBK3hQKTxo
OzNLfExrMDAwZTFOSkxUcTAwMCZNMDAwJlUxXkBzNiNJJFRYMDAwMDZWb09JdjAwMDAwCnowMDgr
enlNRil4MDEwcU5TI3RtWTNsamhVM2xqa1ZudyVIXzAwME1jTmxpcnUpZH4/OEQqIV8pTkJhTigx
Y2dhTgp6S355LSlqZz96eVI3ViljZXs7QG1fTDZNazRZanB1Tkx4KH03VGpqVjchNE1jUVZNfi1N
OHBQXnclOUBgd3A1R0oKejJiSUtuZiU/I2dMaS1rPlAoY3U+dCtvbEpEQjZPaTc8MTlJTnRAZmN5
R2gqTD9BaHglYkVYZnd1RXM+Xnp7Zm55CnoleH1LPUY4PmljVjtxTWlmT3k4MU5ESjY9RWo7em1O
JSVzK3J2bF8kPmsyZGg9T3coOzBfdU4oUHJ+V3loSzclfQp6SFp7Mypta1gzQ256QylNRVVaK0Rw
V0U5cmdNRUc5T1c1LXlkPX5md29UO3ZffDZ0cUJvJGgjRkFGMShpdXgrc0kKekpYQWBRbCgtaXlW
KloqblRzZTB4R3R9R3ItUkpQYDt+ZjE3PXZVUXNiPzxONndhWExsPm13WnNBdz1QQnI1Pz5uCnpW
SHBPTlZOZz9GP30qMFopdnR4YSVSQXRRUz5PfSFfM0EpaSYtVWhLUHBxZWhiUjxIfDwzVEVnJWVI
NVAhd2BiJAp6a2BmJVQ3LWxsYm4pVTBRUT9YYzA/Wm17PTQqMDFFSl58bVpfV1BUK0A4MGMrLW84
eWI1K1VrI0JkViYlbT9tfk0KelRaQVdzQW1RYGpVQXZaZUlFKjZ9ISVDJWkjcVcxVTZOJEM4NkI3
JE47RUR6eTlGRig0SCNkOHRVMHF+Q0EjekhRCnp3SmE5dyp1bTAkYCQra0dPYmRhYlgmN1o/dFpI
cCMjb29QYExYY0pwQk5FfWs7Mj5NS1oxSEZ3Jm5FeUhmVWZJawp6TFhmX0g5fH0rUlN7OSkqWEFu
Wkw/NyN0MTw+ZVRxck0lcVFpbkZ3b3pZWlAzWkpNfE1yNCZYdWpJTD5ATE18TXwKeng+UEVrY19C
YjREcn1xaClEKiRmciYpM0VBVEooMmo7PzhGTi09UXdGYSg0NmF5Z1Z6RDViRUsweDY0MCkqZTs3
CnpEd2ZtM2t9QSpUVX4tYkYzbTAmREpVRzJ4QXtRQFdqZzF3ZHdyeWlTZ3YmPzA8YWl2NlpSYjdM
XjdrY2w5cUQkbgp6eFVtc1Uyc0dmaSN6eHx8WmVkQUA+aDRDR0NibnMhRyEwNWheM0tpalNqdjFl
TkojPVBKUlYqO2JfezEoOFVMSSoKek1jQEFZWGhLa1BeZTl1fjxIViZUKzAjU3YtYVUtfGUmcH5s
d3JTMTtLWkdoTiR3KjBaLWFKO2R3VmB7eHtOMl9ACnpybUt0Uyp8WVE/SWZCI1dWcTwkZDhKQ0xg
Y0A9VWpVWDFlaldgO3NhaTgobGtuM15JTDN9VHJrWX0hUVA9MXVOagp6eDx1fiFieEtEXkRGK2ds
RlZuNFF5d0tFeXREKnVjRkclUHY3aD50c25KdkF8d3ltK0A7a3REVjRiRUk3TFQrTEwKelhDbEZh
YTJQYypmQGZkPXk4eklwci18T1ZMb1MpYjZeKVZgOE5zdTFCfl5ne0p2Vk5jcH49Ykg5cV4zfiY7
ZUtMCnpRWWtlJEhud3J5PUZRSFdWVVAoMShUMFo1TCFsem5FfF5uRmE9cER8TUBBXkV0ZlZwITs3
KUleYFJDb2NmN3RNUAp6Q3M7K1Q9enl5bShgaCs2SzM/eXl1WHBCPk53Vj5INXZKeXQlUEsyYlN6
RjhSb3RAZUt2OVZ1bWMoVm52digmOHYKenVHTThTPTRkZHUkc1koZmJEMGQ7YlEqTFdyUiQoK3NE
aFBPUms3VWY9aGBwN1dRSm1+QThtTk0xKzFzKHVAaE1HCnpGPz8zel5MX1olaDdCZG9gU1RIRlcl
PVNTWHRJKEw8QE01ZXs9Q144a05AXjE5SV96LWdueyZ2OzhJe1lASTBgcgp6MzNqeytadmFCJl9Y
ITA7PGZFVmpyfiZBMmhqWUw8NUNyfU8xXzR2ZEBsfDtOQTVafS0xUXF+YGZPJi0lODkqRigKaVBf
UVU0NGE2d0s3dk1qYm10XnB3Yz9rMFcwMDAwPE1OVU1uTFNUWCE1bSROdQoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAgYi9U
b29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcAppbmRleCBhMjBiMjVlLi5jYzdjNjA1IDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9tYWluLmNwcApAQCAtNjEsNiArNjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAKICAgICBCcm93c2VyV2luZG93KiB3aW5kb3cgPSBuZXcgQnJvd3NlcldpbmRv
dygmYXBwLm1fd2luZG93T3B0aW9ucyk7CiAgICAgd2luZG93LT5sb2FkKHVybHMuYXQoMCkpOwor
ICAgIHdpbmRvdy0+c2V0R2VvbWV0cnkoMTAwLCAxMDAsIDgwMCwgNjAwKTsKIAogICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgdXJscy5zaXplKCk7ICsraSkKICAgICAgICAgd2luZG93LT5uZXdXaW5k
b3codXJscy5hdChpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJv
d3NlcldpbmRvdy5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvQnJvd3NlcldpbmRvdy5x
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExZDUxNAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ccm93c2VyV2luZG93LnFtbApAQCAt
MCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2
ZXJzaXR5IG9mIFN6ZWdlZAorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW1w
b3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCisKK1JlY3RhbmdsZSB7CisgICAg
Ly8gRG8gbm90IGRlZmluZSBhbmNob3JzIG9yIGFuIGluaXRpYWwgc2l6ZSBoZXJlISBUaGlzIHdv
dWxkIG1lc3MgdXAgd2l0aCBRU0dWaWV3OjpTaXplUm9vdE9iamVjdFRvVmlldy4KKworICAgIHBy
b3BlcnR5IGJvb2wgY2FuR29CYWNrOiBmYWxzZQorICAgIHByb3BlcnR5IGJvb2wgY2FuR29Gb3J3
YXJkOiBmYWxzZQorICAgIHByb3BlcnR5IGJvb2wgY2FuU3RvcDogZmFsc2UKKyAgICBwcm9wZXJ0
eSBpbnQgbG9hZFByb2dyZXNzOiAwCisgICAgcHJvcGVydHkgYWxpYXMgd2ViVmlldzogdmlld0xv
YWRlci5pdGVtCisKKyAgICBzaWduYWwgcGFnZVRpdGxlQ2hhbmdlZChzdHJpbmcgdGl0bGUpCisK
KyAgICBmdW5jdGlvbiBsb2FkKGFkZHJlc3MpIHsKKyAgICAgICAgd2ViVmlldy5sb2FkKGFkZHJl
c3MpCisgICAgfQorCisgICAgZnVuY3Rpb24gZm9jdXNBZGRyZXNzQmFyKCkgeworICAgICAgICBh
ZGRyZXNzTGluZS5mb3JjZUFjdGl2ZUZvY3VzKCkKKyAgICAgICAgYWRkcmVzc0xpbmUuc2VsZWN0
QWxsKCkKKyAgICB9CisKKyAgICBSZWN0YW5nbGUgeworICAgICAgICBpZDogbmF2aWdhdGlvbkJh
cgorICAgICAgICBjb2xvcjogIiNlZmVmZWYiCisgICAgICAgIGhlaWdodDogMzAKKyAgICAgICAg
YW5jaG9ycyB7CisgICAgICAgICAgICB0b3A6IHBhcmVudC50b3AKKyAgICAgICAgICAgIGxlZnQ6
IHBhcmVudC5sZWZ0CisgICAgICAgICAgICByaWdodDogcGFyZW50LnJpZ2h0CisgICAgICAgIH0K
KworICAgICAgICBSb3cgeworICAgICAgICAgICAgaWQ6IGNvbnRyb2xzUm93CisgICAgICAgICAg
ICBzcGFjaW5nOiA0CisgICAgICAgICAgICBSZWN0YW5nbGUgeworICAgICAgICAgICAgICAgIGlk
OiBiYWNrQnV0dG9uCisgICAgICAgICAgICAgICAgaGVpZ2h0OiBuYXZpZ2F0aW9uQmFyLmhlaWdo
dCAtIDIKKyAgICAgICAgICAgICAgICB3aWR0aDogaGVpZ2h0CisgICAgICAgICAgICAgICAgY29s
b3I6ICIjZWZlZmVmIgorCisgICAgICAgICAgICAgICAgSW1hZ2UgeworICAgICAgICAgICAgICAg
ICAgICBhbmNob3JzLmNlbnRlckluOiBwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgc291cmNl
OiAiLi4vaWNvbnMvcHJldmlvdXMucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFy
ZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZWxvYWRCdXR0b24uY29sb3IKKyAgICAg
ICAgICAgICAgICAgICAgb3BhY2l0eTogMC44CisgICAgICAgICAgICAgICAgICAgIHZpc2libGU6
ICFjYW5Hb0JhY2sKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBNb3VzZUFy
ZWEgeworICAgICAgICAgICAgICAgICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAorICAgICAgICAg
ICAgICAgICAgICBvbkNsaWNrZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCJnb2luZyBiYWNrIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXcubmF2aWdh
dGlvbi5nb0JhY2soKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBp
ZDogZm9yd2FyZEJ1dHRvbgorICAgICAgICAgICAgICAgIGhlaWdodDogbmF2aWdhdGlvbkJhci5o
ZWlnaHQgLSAyCisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAorICAgICAgICAgICAgICAg
IGNvbG9yOiAiI2VmZWZlZiIKKworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAgICAgICAgICAg
ICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZTogIi4uL2ljb25zL25leHQucG5nIgorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMuZmlsbDogcGFy
ZW50CisgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBmb3J3YXJkQnV0dG9uLmNvbG9yCisgICAg
ICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuOAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxl
OiAhY2FuR29Gb3J3YXJkCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91
c2VBcmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAg
ICAgICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZygiZ29pbmcgZm9yd2FyZCIpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3
Lm5hdmlnYXRpb24uZ29Gb3J3YXJkKCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlY3RhbmdsZSB7CisgICAgICAg
ICAgICAgICAgaWQ6IHJlbG9hZEJ1dHRvbgorICAgICAgICAgICAgICAgIGhlaWdodDogbmF2aWdh
dGlvbkJhci5oZWlnaHQgLSAyCisgICAgICAgICAgICAgICAgd2lkdGg6IGhlaWdodAorICAgICAg
ICAgICAgICAgIGNvbG9yOiAiI2VmZWZlZiIKKworICAgICAgICAgICAgICAgIEltYWdlIHsKKyAg
ICAgICAgICAgICAgICAgICAgYW5jaG9ycy5jZW50ZXJJbjogcGFyZW50CisgICAgICAgICAgICAg
ICAgICAgIHNvdXJjZTogY2FuU3RvcCA/ICIuLi9pY29ucy9zdG9wLnBuZyIgOiAiLi4vaWNvbnMv
cmVmcmVzaC5wbmciCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTW91c2VB
cmVhIHsKKyAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5maWxsOiBwYXJlbnQKKyAgICAgICAg
ICAgICAgICAgICAgb25DbGlja2VkOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2Fu
U3RvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJzdG9wIGxv
YWRpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXcubmF2aWdhdGlvbi5z
dG9wKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc29sZS5sb2coInJlbG9hZGluZyIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2ViVmlldy5uYXZpZ2F0aW9uLnJlbG9hZCgpCisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgIGNvbG9y
OiAid2hpdGUiCisgICAgICAgICAgICBoZWlnaHQ6IG5hdmlnYXRpb25CYXIuaGVpZ2h0IC0gNAor
ICAgICAgICAgICAgYm9yZGVyLndpZHRoOiAxCisgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAg
ICAgICAgICAgICBsZWZ0OiBjb250cm9sc1Jvdy5yaWdodAorICAgICAgICAgICAgICAgIHJpZ2h0
OiBwYXJlbnQucmlnaHQKKyAgICAgICAgICAgICAgICBtYXJnaW5zOiAyCisgICAgICAgICAgICAg
ICAgdmVydGljYWxDZW50ZXI6IHBhcmVudC52ZXJ0aWNhbENlbnRlcgorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgUmVjdGFuZ2xlIHsKKyAgICAgICAgICAgICAgICBhbmNob3JzIHsKKyAgICAg
ICAgICAgICAgICAgICAgdG9wOiBwYXJlbnQudG9wCisgICAgICAgICAgICAgICAgICAgIGJvdHRv
bTogcGFyZW50LmJvdHRvbQorICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwYXJlbnQubGVmdAor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aWR0aDogcGFyZW50LndpZHRoIC8g
MTAwICogbG9hZFByb2dyZXNzCisgICAgICAgICAgICAgICAgY29sb3I6ICJibHVlIgorICAgICAg
ICAgICAgICAgIG9wYWNpdHk6IDAuMworICAgICAgICAgICAgICAgIHZpc2libGU6IGxvYWRQcm9n
cmVzcyAhPSAxMDAKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVGV4dElucHV0IHsKKyAg
ICAgICAgICAgICAgICBpZDogYWRkcmVzc0xpbmUKKyAgICAgICAgICAgICAgICBjbGlwOiB0cnVl
CisgICAgICAgICAgICAgICAgc2VsZWN0QnlNb3VzZTogdHJ1ZQorICAgICAgICAgICAgICAgIGZv
bnQgeworICAgICAgICAgICAgICAgICAgICBwb2ludFNpemU6IDE0CisgICAgICAgICAgICAgICAg
ICAgIGZhbWlseTogIkhlbHZldGljYSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYW5jaG9ycyB7CisgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsQ2VudGVyOiBwYXJlbnQu
dmVydGljYWxDZW50ZXIKKyAgICAgICAgICAgICAgICAgICAgbGVmdDogcGFyZW50LmxlZnQKKyAg
ICAgICAgICAgICAgICAgICAgcmlnaHQ6IHBhcmVudC5yaWdodAorICAgICAgICAgICAgICAgICAg
ICBtYXJnaW5zOiAyCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgS2V5cy5v
blJldHVyblByZXNzZWQ6eworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiZ29pbmcg
dG86ICIsIGFkZHJlc3NMaW5lLnRleHQpCisgICAgICAgICAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChhZGRyZXNzTGluZS50ZXh0KQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IEtleXMub25QcmVzc2VkOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICgoKGV2ZW50Lm1vZGlm
aWVycyAmIFF0LkNvbnRyb2xNb2RpZmllcikgJiYgZXZlbnQua2V5ID09IFF0LktleV9MKSB8fCBl
dmVudC5rZXkgPT0gUXQua2V5X0Y2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c0Fk
ZHJlc3NCYXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuYWNjZXB0ZWQgPSB0cnVl
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMb2FkZXIgeworICAgICAgICBpZDogdmlld0xvYWRl
cgorICAgICAgICBhbmNob3JzIHsKKyAgICAgICAgICAgIHRvcDogbmF2aWdhdGlvbkJhci5ib3R0
b20KKyAgICAgICAgICAgIGxlZnQ6IHBhcmVudC5sZWZ0CisgICAgICAgICAgICByaWdodDogcGFy
ZW50LnJpZ2h0CisgICAgICAgICAgICBib3R0b206IHBhcmVudC5ib3R0b20KKyAgICAgICAgfQor
ICAgICAgICBzb3VyY2U6IG9wdGlvbnMudXNlVG91Y2hXZWJWaWV3ID8gIlRvdWNoVmlldy5xbWwi
IDogIkRlc2t0b3BWaWV3LnFtbCIKKyAgICB9CisKKyAgICBDb25uZWN0aW9ucyB7CisgICAgICAg
IHRhcmdldDogdmlld0xvYWRlci5pdGVtCisgICAgICAgIG9uVGl0bGVDaGFuZ2VkOiBwYWdlVGl0
bGVDaGFuZ2VkKHZpZXdMb2FkZXIuaXRlbS50aXRsZSkKKyAgICAgICAgb25VcmxDaGFuZ2VkOiB7
CisgICAgICAgICAgICBhZGRyZXNzTGluZS50ZXh0ID0gdmlld0xvYWRlci5pdGVtLnVybAorICAg
ICAgICAgICAgaWYgKG9wdGlvbnMucHJpbnRMb2FkZWRVcmxzKQorICAgICAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJMb2FkZWQ6Iiwgdmlld0xvYWRlci5pdGVtLnVybCk7CisgICAgICAgICAgICBm
b3JjZUFjdGl2ZUZvY3VzKCk7CisgICAgICAgIH0KKyAgICAgICAgb25OYXZpZ2F0aW9uU3RhdGVD
aGFuZ2VkOiB7CisgICAgICAgICAgICBjYW5Hb0JhY2sgPSB2aWV3TG9hZGVyLml0ZW0ubmF2aWdh
dGlvbi5jYW5Hb0JhY2sKKyAgICAgICAgICAgIGNhbkdvRm9yd2FyZCA9IHZpZXdMb2FkZXIuaXRl
bS5uYXZpZ2F0aW9uLmNhbkdvRm9yd2FyZAorICAgICAgICAgICAgY2FuU3RvcCA9IHZpZXdMb2Fk
ZXIuaXRlbS5uYXZpZ2F0aW9uLmNhblN0b3AKKyAgICAgICAgfQorICAgICAgICBvbkxvYWRQcm9n
cmVzc0NoYW5nZWQ6IGxvYWRQcm9ncmVzcyA9IHZpZXdMb2FkZXIuaXRlbS5sb2FkUHJvZ3Jlc3MK
KyAgICB9CisKKyAgICBLZXlzLm9uUHJlc3NlZDogeworICAgICAgICBpZiAoKChldmVudC5tb2Rp
ZmllcnMgJiBRdC5Db250cm9sTW9kaWZpZXIpICYmIGV2ZW50LmtleSA9PSBRdC5LZXlfTCkgfHwg
ZXZlbnQua2V5ID09IFF0LmtleV9GNikgeworICAgICAgICAgICAgZm9jdXNBZGRyZXNzQmFyKCkK
KyAgICAgICAgICAgIGV2ZW50LmFjY2VwdGVkID0gdHJ1ZQorICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0Rlc2t0b3BWaWV3LnFtbCBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3FtbC9EZXNrdG9wVmlldy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzUyZGRkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0L3FtbC9EZXNrdG9wVmlldy5xbWwKQEAgLTAsMCArMSw4IEBACitpbXBvcnQgUXRR
dWljayAyLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworRGVza3RvcFdlYlZpZXcgeworICAgIHNp
Z25hbCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkCisKKyAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6
IG5hdmlnYXRpb24ubmF2aWdhdGlvblN0YXRlQ2hhbmdlZC5jb25uZWN0KG5hdmlnYXRpb25TdGF0
ZUNoYW5nZWQpCit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvVG91Y2hW
aWV3LnFtbCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9Ub3VjaFZpZXcucW1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MGMyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9xdC9xbWwvVG91Y2hWaWV3LnFtbApAQCAtMCwwICsxLDE3IEBACitp
bXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKKworVG91Y2hXZWJWaWV3IHsK
KyAgICBpZDogd2ViVmlldworICAgIHByb3BlcnR5IHZhcmlhbnQgbmF2aWdhdGlvbjogd2ViVmll
dy5wYWdlLm5hdmlnYXRpb24KKyAgICBwcm9wZXJ0eSBzdHJpbmcgdXJsOiB3ZWJWaWV3LnBhZ2Uu
dXJsCisgICAgcHJvcGVydHkgaW50IGxvYWRQcm9ncmVzczogd2ViVmlldy5wYWdlLmxvYWRQcm9n
cmVzcworICAgIHByb3BlcnR5IHN0cmluZyB0aXRsZTogd2ViVmlldy5wYWdlLnRpdGxlCisgICAg
c2lnbmFsIG5hdmlnYXRpb25TdGF0ZUNoYW5nZWQKKworICAgIGZ1bmN0aW9uIGxvYWQoYWRkcmVz
cykgeworICAgICAgICBwYWdlLmxvYWQoYWRkcmVzcykKKyAgICB9CisKKyAgICBDb21wb25lbnQu
b25Db21wbGV0ZWQ6IHBhZ2UubmF2aWdhdGlvbi5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkLmNvbm5l
Y3QobmF2aWdhdGlvblN0YXRlQ2hhbmdlZCkKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>