<?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>34382</bug_id>
          
          <creation_ts>2010-01-30 18:26:05 -0800</creation_ts>
          <short_desc>When a live iframe element is moved between pages, it still depends on the old page.</short_desc>
          <delta_ts>2010-03-22 09:42:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>31552</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>levin</cc>
    
    <cc>nicholas.young</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>186142</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-30 18:26:05 -0800</bug_when>
    <thetext>Since http://trac.webkit.org/changeset/53871, the iframe may be moved around in the DOM without being re-loaded. When this happens, we need to update frame tree and make the contentFrame to point to a new Page.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186145</commentid>
    <comment_count>1</comment_count>
      <attachid>47780</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-30 18:45:39 -0800</bug_when>
    <thetext>Created attachment 47780
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186147</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-30 18:47:57 -0800</bug_when>
    <thetext>Attachment 47780 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/Frame.cpp:1601:  Missing space before ( in if(  [whitespace/parens] [5]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186148</commentid>
    <comment_count>3</comment_count>
      <attachid>47781</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-01-30 18:52:18 -0800</bug_when>
    <thetext>Created attachment 47781
Updated patch

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186702</commentid>
    <comment_count>4</comment_count>
      <attachid>47781</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-01 16:56:56 -0800</bug_when>
    <thetext>Comment on attachment 47781
Updated patch

Consider addressing the items below before landing.

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; +2010-01-30  Dmitry Titov  &lt;dimich@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        When live iframe element is moved between pages, it still depends on old page.

s/When live/When a live/
s/on old/on the old/


&gt; diff --git a/LayoutTests/fast/frames/iframe-reparenting-new-page.html b/LayoutTests/fast/frames/iframe-reparenting-new-page.html

It looks like the test could easily be in the script only form which seems preferred when possible.


&gt; +&lt;html&gt;
&gt; +&lt;script&gt;
...

&gt; +&lt;body onload=&quot;test()&quot;&gt;
&gt; +The test verifies that loaded iframe may be passed between different pages without stopping firing timer events. It used window.open to open &apos;page 1&apos; which has iframe in it. It then passes iframe to &apos;page 2&apos; and closes window of &apos;page 1&apos;. The test verifies that the timer in iframe that is initialized when iframe is loaded continues firing after iframe is re-parented and original window was closed. If test passes, you&apos;ll see a few log entries and then &quot;FINISH&quot;.

This test verifies that the loaded iframe may be passed between different pages without stopping firing timer events. It used window.open to open &apos;page 1&apos; which has an iframe in it. It then passes the iframe to &apos;page 2&apos; and closes the window of &apos;page 1&apos;. 

This test verifies that the timer in an iframe that is initialized when the iframe is loaded continues firing after the iframe is re-parented and the original window was closed. If test passes, you&apos;ll see a few log entries and then &quot;FINISH&quot;.


The second &quot;This test verifies&quot; seems like overkill. I would delete all the text before that.


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-01-30  Dmitry Titov  &lt;dimich@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        When live iframe element is moved between pages, it still depends on old page.

When a live... it still depends on the old page.


&gt; +        https://bugs.webkit.org/show_bug.cgi?id=34382
&gt; +
&gt; +        Test: fast/frames/iframe-reparenting-new-page.html
&gt; +
&gt; +        * html/HTMLFrameElementBase.cpp:
&gt; +        (WebCore::HTMLFrameElementBase::setName): Move the code setting the frame name into a separate function.
&gt; +        (WebCore::HTMLFrameElementBase::setNameAndOpenURL):
&gt; +        (WebCore::HTMLFrameElementBase::updateLiveFrame): Update frame tree, reset page in the contentFrame and re-set the name.
&gt; +        (WebCore::HTMLFrameElementBase::insertedIntoDocument): 
&gt; +        * html/HTMLFrameElementBase.h:
&gt; +        * page/Frame.cpp:
&gt; +        (WebCore::Frame::setPage):
&gt; +        * page/Frame.h: Add setPage method. It is only currently used when alive iframe is moved between pages (so the existing Frame should get a new Page)

Please add a period. Also, I think ChangeLog entries typically line wrap at ~80-90 columns (unlike nearly all other files).


&gt; diff --git a/WebCore/html/HTMLFrameElementBase.cpp b/WebCore/html/HTMLFrameElementBase.cpp

&gt; +// Used when live frame is moved in DOM, potentially to another page.

Is the term &quot;live frame&quot; used elsewhere? What does it mean?


&gt; diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
&gt; +void Frame::setPage(Page* page)
&gt; +{

Shouldn&apos;t this ASSERT(ownerElement) ?

&gt; +    if (m_page == page)
&gt; +        return;
&gt; +
&gt; +    if (m_page)
&gt; +        m_page-&gt;decrementFrameCount();
&gt; +
&gt; +    m_page = page;
&gt; +
&gt; +    if (page)
&gt; +        page-&gt;incrementFrameCount();
&gt; +}
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186738</commentid>
    <comment_count>5</comment_count>
      <attachid>47891</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-01 17:56:46 -0800</bug_when>
    <thetext>Created attachment 47891
Updated for review notes.

Fixed all - typos, added ASSERT, converted test to a script test.
There are quite a lot of changes, especially in the test - could you please take another look? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186774</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-01 20:08:19 -0800</bug_when>
    <thetext>This appears to have been committed in changeset 54194 &lt;http://trac.webkit.org/changeset/54194&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186776</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-02-01 20:11:43 -0800</bug_when>
    <thetext>Changeset 54194 &lt;http://trac.webkit.org/changeset/54194&gt; has caused a regression. The test case fast/frames/iframe-reparenting.html is crashing on the Qt bot. For the stderr text, see &lt;http://build.webkit.org/results/Qt%20Linux%20Release/r54194%20%286817%29/fast/frames/iframe-reparenting-stderr.txt&gt;.

For the build results in general, see &lt;http://build.webkit.org/results/Qt%20Linux%20Release/r54194%20%286817%29/&gt;. And for the layout test results, see &lt;http://build.webkit.org/builders/Qt%20Linux%20Release/builds/6817/steps/layout-test/logs/stdio&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186789</commentid>
    <comment_count>8</comment_count>
    <who name="Nick Young">nicholas.young</who>
    <bug_when>2010-02-01 21:08:56 -0800</bug_when>
    <thetext>Something weird is happing with DRT when running those test cases. The crash is actually in fast/frames/iframe-reparenting-new-page.html.

Better Backtrace:
#0  0xb7ae61e7 in QWebFrame::page () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#1  0xb78ceeed in WebCore::HistoryController::saveScrollPositionAndViewStateToItem () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#2  0xb78bd933 in WebCore::FrameLoader::detachFromParent () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#3  0xb78bdaf5 in WebCore::FrameLoader::detachChildren () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#4  0xb78bd93b in WebCore::FrameLoader::detachFromParent () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#5  0xb7af98e3 in QWebPage::~QWebPage () from /home/ynichola/depot/webkit/trunk/WebKitBuild/Release/lib/libQtWebKit.so.4
#6  0x0805d4dc in WebCore::WebPage::~WebPage ()
#7  0xb5f40c68 in QObjectPrivate::deleteChildren (this=0x81aa268) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qobject.cpp:1980
#8  0xb5f492c9 in ~QObject (this=0x81aa538) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qobject.cpp:977
#9  0xb5f40145 in qDeleteInEventHandler (o=0x81aa538) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qobject.cpp:4006
#10 0xb5f436ca in QObject::event (this=0x81aa538, e=0x81aa570) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qobject.cpp:1225
#11 0xb621d40e in QApplicationPrivate::notify_helper (this=0x813b220, receiver=0x81aa538, e=0x81aa570) at /home/ynichola/depot/qt/qt-multimedia/src/gui/kernel/qapplication.cpp:4298
#12 0xb621d880 in QApplication::notify (this=0xbfed7b44, receiver=0x81aa538, e=0x81aa570) at /home/ynichola/depot/qt/qt-multimedia/src/gui/kernel/qapplication.cpp:3702
#13 0xb5f2c198 in QCoreApplication::notifyInternal (this=0xbfed7b44, receiver=0x81aa538, event=0x81aa570) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.cpp:704
#14 0xb621a3db in QCoreApplication::sendEvent (receiver=0x81aa538, event=0x81aa570) at ../../include/QtCore/../../../../../depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.h:215
#15 0xb5f2c722 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8141840) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.cpp:1345
#16 0xb5f2c9b7 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.cpp:1238
#17 0xb63109d6 in QCoreApplication::sendPostedEvents () at ../../include/QtCore/../../../../../depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.h:220
#18 0xb5f67e19 in postEventSourceDispatch (s=0x81437b0) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qeventdispatcher_glib.cpp:276
#19 0xb52722f9 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#20 0xb527587b in ?? () from /usr/lib/libglib-2.0.so.0
#21 0xb52759f8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#22 0xb5f66de2 in QEventDispatcherGlib::processEvents (this=0x814bae0, flags={i = -1074955816}) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qeventdispatcher_glib.cpp:412
#23 0xb630eea2 in QGuiEventDispatcherGlib::processEvents (this=0x814bae0, flags={i = -1074955768}) at /home/ynichola/depot/qt/qt-multimedia/src/gui/kernel/qguieventdispatcher_glib.cpp:204
#24 0xb5f28512 in QEventLoop::processEvents (this=0xbfed7aa8, flags={i = -1074955692}) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qeventloop.cpp:149
#25 0xb5f28784 in QEventLoop::exec (this=0xbfed7aa8, flags={i = -1074955600}) at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qeventloop.cpp:201
#26 0xb5f2caed in QCoreApplication::exec () at /home/ynichola/depot/qt/qt-multimedia/src/corelib/kernel/qcoreapplication.cpp:981
#27 0xb6220570 in QApplication::exec () at /home/ynichola/depot/qt/qt-multimedia/src/gui/kernel/qapplication.cpp:3577
#28 0x0806886a in main ()

Initial inspection seems to indicate an invalid private data pointer is being dereferenced. Will investigate a little more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186816</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-01 22:48:24 -0800</bug_when>
    <thetext>Also new test crashes on Chromium mac and linux: http://build.chromium.org/buildbot/try-server/builders/layout_mac/builds/1147/steps/webkit_tests/logs/stdio

Reverting....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186817</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-01 22:54:39 -0800</bug_when>
    <thetext>Reverted in http://trac.webkit.org/changeset/54207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188790</commentid>
    <comment_count>11</comment_count>
      <attachid>47781</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-08 15:13:25 -0800</bug_when>
    <thetext>Comment on attachment 47781
Updated patch

Cleared David Levin&apos;s review+ from obsolete attachment 47781 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188791</commentid>
    <comment_count>12</comment_count>
      <attachid>47891</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-08 15:13:33 -0800</bug_when>
    <thetext>Comment on attachment 47891
Updated for review notes.

Cleared David Levin&apos;s review+ from obsolete attachment 47891 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189584</commentid>
    <comment_count>13</comment_count>
      <attachid>48543</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-10 19:31:10 -0800</bug_when>
    <thetext>Created attachment 48543
Patch, fixed crashes.

The crashes in Chromium and QT were caused by their WebKit layer assuming the Frame always belongs to a given Page. When iframe is passed between documents, it can also be passed between windows, which requires corresponding update in WebKit layer.
This is acieved by adding FrameLoaderClient::adoptFrame(Frame*) method which is called when Frame is moved in DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189585</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-10 19:34:12 -0800</bug_when>
    <thetext>Attachment 48543 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/Frame.cpp:1666:  One line control clauses should not use braces.  [whitespace/braces] [4]
Ignoring &quot;WebKit/qt/Api/qwebframe.cpp&quot;: this file is exempt from the style guide.
Ignoring &quot;WebKit/qt/Api/qwebframe.h&quot;: this file is exempt from the style guide.
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189604</commentid>
    <comment_count>15</comment_count>
      <attachid>48547</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-10 22:20:57 -0800</bug_when>
    <thetext>Created attachment 48547
Same patch, with style fix.

Fixed style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189766</commentid>
    <comment_count>16</comment_count>
      <attachid>48547</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-11 12:04:31 -0800</bug_when>
    <thetext>Comment on attachment 48547
Same patch, with style fix.


1. I would remove all notImplemented(); I believe these imply that there is a missing implementation, but that is not the case here. The ports with empty methods simply don&apos;t need an implementation as far as we know.
2. I&apos;m concerned about the change in WebKit/qt/Api/qwebframe.h. Does this mean that the public api in qt is changing? It looks like Kenneth Rohde Christiansen &lt; kenneth@webkit.org&gt; has been looking at these changes. Perhaps you could get him to look at this part of your patch.


r=me after kenneth gives an ok (and it would be nice to address the other things mentioned).


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-02-10  Dmitry Titov  &lt;dimich@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        When a live iframe element is moved between pages, it still depends on the old page.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=34382
&gt; +
&gt; +        Test: fast/frames/iframe-reparenting-new-page.html
&gt; +
&gt; +        * html/HTMLFrameElementBase.cpp:
&gt; +        (WebCore::HTMLFrameElementBase::setName):
&gt; +        Move the code setting the frame name into a separate function.
&gt; +
&gt; +        (WebCore::HTMLFrameElementBase::setNameAndOpenURL):
&gt; +        (WebCore::HTMLFrameElementBase::updateOnReparenting):
&gt; +        Called on the frame that was just re-parented and inserted into another Document.
&gt; +        Simply invoke Frame::updateOnreparenting(newParentFrame);

updateOnReparenting
        ^ capital R



In WebKit/chromium/ChangeLog
&gt; +         if Frame moves between Pages the client of corresponding WebFrame
&gt; +         should be replaced as well.
add a &quot;,&quot; after Pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189773</commentid>
    <comment_count>17</comment_count>
      <attachid>48547</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-11 12:40:17 -0800</bug_when>
    <thetext>Comment on attachment 48547
Same patch, with style fix.


&gt;  /*!
&gt; +  The frame is moved between pages - replace the page.
&gt; + 
&gt; +  \note This can not be done on a main frame of the page.
&gt; +*/

Needs \since 4.7 and it needs to block the Qt 4.7 API tracker:
https://bugs.webkit.org/show_bug.cgi?id=31552

&gt; +void QWebFrame::setPage(QWebPage* newPage)
&gt; +{
&gt; +    Q_ASSERT(d-&gt;page);
&gt; +    Q_ASSERT(newPage);
&gt; +    Q_ASSERT(page()-&gt;mainFrame() != this);
&gt; +    if (d-&gt;page != newPage) {
&gt; +        d-&gt;page = newPage;
&gt; +        // The QWebFrame is created as a child of QWebPage. That adds it to QObject&apos;s internal childrent list and
&gt; +        // ensures it will be deleted when parent QWebPage is deleted. Re-parent.
&gt; +        setParent(newPage);
&gt; +    }
&gt; +}

What is the use case? Can this only happen through the public Qt C++ API, or can it happen in any other way? IF so we might need a signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189776</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-02-11 12:44:26 -0800</bug_when>
    <thetext>
&gt; &gt; +void QWebFrame::setPage(QWebPage* newPage)

As this is called from FrameLoaderClientQt, we probably need a signal as well.

I&apos;m not sure we want this as a public API, maybe put it in QWebFramePrivate for now?

Simon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189782</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-11 13:22:43 -0800</bug_when>
    <thetext>Indeed, this can not happen via public WebKit API from outside - this happens as a result of re-parenting iframe element from one document to another. 

As discussed on IRC, I think I should move setPage() to QWebFramePrivate and emit a signal on QWebFrame when the page associated with it changes.

I&apos;ll have an updated patch shortly, after building/testing on Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189783</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-11 13:38:02 -0800</bug_when>
    <thetext>FrameLoaderClient::adoptFrame seems incorrectly named.  it sounds like it is a command to the FrameLoaderClient to perform the &quot;adopt frame&quot; operation.  In reality, it appears to be a notification to the WebKit layer that a frame was moved from one document to another.  A better name might be didAdoptFrame or didTransferFrameToNewDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189784</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-11 13:40:05 -0800</bug_when>
    <thetext>I think we will need a similar notification on WebFrameClient to let the embedder know that the frame moved from one document to another.

Also, what happens to session history when a frame moves between documents in separate Pages?  What if some session history entries correspond only to navigations within the frame that was moved.  Should those session history navigations also move from the old Page to the new Page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189856</commentid>
    <comment_count>22</comment_count>
      <attachid>48600</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-11 18:10:48 -0800</bug_when>
    <thetext>Created attachment 48600
Updated patch.

Thanks all for great feedback. Updated patch:

- [Qt] removed public method from QWebFrame, it should not be a new API. Moved it to QWebFramePrivate
- [Qt] now emit signal, QWebFrame::webPageChanged() when frame moves between pages.
- [Chromium] added virtual WebFrameClient::didTransferChildFrameToNewDocument(WebDocument) to signal the embedder the frame was reparented.
- renamed FrameLoaderClient::adoptFrame(Frame*) to FrameLoaderClient::didTransferChildFrameToNewDocument(Document*), renamed corresponding Frame method as well.
- FrameLoaderClient::didTransferChildFrameToNewDocument(Document*) is now called on the frame loader client of the transferred frame, rather then on the client of the new parent frame.
- removed notImplemented() as suggested by Dave, I agree there is nothing &apos;not implemented&apos; there as we know.
- fiksed some typos.
- test is unchanged

I&apos;ll wait for r+ from Dave and also OK from Kenneth or Simon and Darin Fisher, on Qt and Chromium code in particular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189857</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-11 18:11:57 -0800</bug_when>
    <thetext>Attachment 48600 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Ignoring &quot;WebKit/qt/Api/qwebframe_p.h&quot;: this file is exempt from the style guide.
Ignoring &quot;WebKit/qt/Api/qwebframe.h&quot;: this file is exempt from the style guide.
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189860</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-11 18:28:09 -0800</bug_when>
    <thetext>Attachment 48600 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/259410</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189872</commentid>
    <comment_count>25</comment_count>
      <attachid>48605</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-11 18:56:26 -0800</bug_when>
    <thetext>Created attachment 48605
Updated patch.

Ugh. not the right patch. Now hopefully the right one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189878</commentid>
    <comment_count>26</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-11 19:02:51 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Also, what happens to session history when a frame moves between documents in
&gt; separate Pages?  What if some session history entries correspond only to
&gt; navigations within the frame that was moved.  Should those session history
&gt; navigations also move from the old Page to the new Page?

That is going to be a subject of the separate test+fix. I think the page that looses iframe should do the same as today when iframe is removed, and the one that receives it should probably gain no new history. I&apos;ll need to figure out more details on how the session history works today in WebKit. Spec says each nested browsing context has its own session history which is simple but I guess it&apos;s not that simple in current implementation. Will address it in a separate patch. Thanks a lot for headsup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189967</commentid>
    <comment_count>27</comment_count>
      <attachid>48605</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-12 00:13:28 -0800</bug_when>
    <thetext>Comment on attachment 48605
Updated patch.

&gt; +++ b/WebKit/chromium/public/WebFrameClient.h
...
&gt; +#include &quot;WebDocument.h&quot;

nit: no need to include WebDocument.h.  just forward declare the type.


&gt; +    // The child frame was transferred to a new page, due to DOM operation.
&gt; +    // It&apos;s parent frame, document and containing view has changed.
&gt; +    virtual void didTransferChildFrameToNewDocument(WebDocument) { }

all WebFrameClient methods must start with a WebFrame* that is the subject
of the notification.

one thing is a bit confusing about this method:  how do i find out the
WebFrame that i was transferred from?

also, i realized after we discussed this patch that an even better name
might be didReparentFrame.  and, since the old parent seems like useful
information to pass (the new parent is available at WebFrame::parent),
how about this signature:

  void didReparent(WebFrame*, WebFrame* oldParent);

You could place this next to willClose since it is a similar sort of
notification.

I&apos;m surprised that you call transferChildFrameToNewDocument on each
child frame of the frame being reparented.  I&apos;m guessing this is b/c
you want to have the WebKit layer update the WebFrameClients for each
of the child frames.  That might be better left to the FrameLoaderClient
implementation since it will know if that is necessary.  As is, the
notification isn&apos;t really correct:  the child frame didn&apos;t get moved to
a new document, and it didn&apos;t get reparented.

-Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189983</commentid>
    <comment_count>28</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-12 01:54:49 -0800</bug_when>
    <thetext>(In reply to comment #27)

&gt; I&apos;m surprised that you call transferChildFrameToNewDocument on each
&gt; child frame of the frame being reparented.  I&apos;m guessing this is b/c
&gt; you want to have the WebKit layer update the WebFrameClients for each
&gt; of the child frames.  That might be better left to the FrameLoaderClient
&gt; implementation since it will know if that is necessary.  As is, the
&gt; notification isn&apos;t really correct:  the child frame didn&apos;t get moved to
&gt; a new document, and it didn&apos;t get reparented.

Child Frames should get a new Page pointer. This is the main reason to iterate child frames in Frame::transferChildFrameTonewDocument. So this loop exists for both WebCore and WebKit reasons and as such it&apos;s reasonable to have it in Frame rather then in FrameLoaderClient.

Speaking about WebFrameClient notification, I see it&apos;s a bit awkward . Do we really need it (in chromium WebKit layer)? What would we do in it? The signature you proposed:

void didReparent(WebFrame*, WebFrame* oldParent);

doesn&apos;t also look ideal because for child frames it doesn&apos;t make a lot of sense - the child frames are not really reparented, and their parent frame does not change.

How about we just don&apos;t have it until we have a need for it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190008</commentid>
    <comment_count>29</comment_count>
      <attachid>48605</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-02-12 04:30:07 -0800</bug_when>
    <thetext>Comment on attachment 48605
Updated patch.

&gt; diff --git a/WebKit/qt/Api/qwebframe.h b/WebKit/qt/Api/qwebframe.h
&gt; index 25f6c9b..2ec6f64 100644
&gt; --- a/WebKit/qt/Api/qwebframe.h
&gt; +++ b/WebKit/qt/Api/qwebframe.h
&gt; @@ -217,6 +217,8 @@ Q_SIGNALS:
&gt;      void loadStarted();
&gt;      void loadFinished(bool ok);
&gt;  
&gt; +    void webPageChanged();

I&apos;d prefer &quot;pageChanged()&quot; as the name of the signal, for consistency with the page property.


&gt; +        if (oldPage != newPage) {
&gt; +            m_webFrame-&gt;d-&gt;setPage(newPage);
&gt; +            // The QWebFrame is created as a child of QWebPage. That adds it to QObject&apos;s internal children list and
&gt; +            // ensures it will be deleted when parent QWebPage is deleted. Re-parent.
&gt; +            m_webFrame-&gt;setParent(newPage);
&gt; +            emit m_webFrame-&gt;webPageChanged();

I would do all these three things inside QWebFramePrivate::setPage, so that it basically becomes:

void QWebFramePrivate::setPage(const QWebPage* newPage)
{
    page = newPage;
    setParent(newPage);
    emit q-&gt;pageChanged();
}


Otherwise the Qt parts look good to me! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190086</commentid>
    <comment_count>30</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-12 10:08:42 -0800</bug_when>
    <thetext>(In reply to Darin Fisher&apos;s comment #27)

I don&apos;t think I phrased my response well. Here is another attempt:

I agree the transferChildFrameToNewDocument() seems to do more then its name says. For example, it recurses into children, while they do not get transferred to a new document.

Perhaps the better way would be to split out the recursive Frame::setPage(Page newPage) which would set Page pointer in a frame subtree and call it from transferChildFrameToNewDocument. Then, add a loop in Chromium&apos;s FrameLoaderClientImpl::didTransferChildFrameToNewDocument to update client pointers, as you suggested. This way, each function will do what it names says...

Separately, we might remove WebFrameClient external notification until the moment we&apos;ll actually need an implementation of it - it may give us better understanding what parameters it needs at that time.

Do you think it&apos;s a reasonable plan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190211</commentid>
    <comment_count>31</comment_count>
      <attachid>48680</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-12 16:47:16 -0800</bug_when>
    <thetext>Created attachment 48680
Updated according to comments.

I think I&apos;ve got all comments in. Changes:

- [Qt] webPageChanged -&gt; pageChanged and moved page setting code into setPage(), as requested.
- [Qt] realized that main frame has QWebPage as QObject parent, while child frames have their parent&apos;s QWebFrames as QObject parent - adjusted code for that.
- [Chromium] - chatted with Darin and removed WebFrameClient notification until the time we realize we need it.
- FrameLoaderClient::didTransferChildFrameToNewDocument lost &quot;Document*&quot; parameter, since the new document can always be pulled from frame.
- test did not change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190215</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-12 17:06:08 -0800</bug_when>
    <thetext>Attachment 48680 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/262247</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190220</commentid>
    <comment_count>33</comment_count>
      <attachid>48684</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-12 17:46:29 -0800</bug_when>
    <thetext>Created attachment 48684
Updated patch

EWS is awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190926</commentid>
    <comment_count>34</comment_count>
      <attachid>48684</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-17 01:01:26 -0800</bug_when>
    <thetext>Comment on attachment 48684
Updated patch

r=me (as long as there are ok&apos;s from the other two folks involved for qt and chromium specific changes).

Two minor nits below.


&gt; diff --git a/WebCore/html/HTMLFrameOwnerElement.h b/WebCore/html/HTMLFrameOwnerElement.h
&gt; +    virtual void setName() {}

Would be nice to add a space inside of the {}.


&gt; diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h
&gt; +    virtual void didTransferChildFrameToNewDocument() { return; }

&quot;return;&quot; isn&apos;t needed here.  In other words, s/{ return; }/{ }/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191205</commentid>
    <comment_count>35</comment_count>
      <attachid>48547</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-17 14:23:07 -0800</bug_when>
    <thetext>Comment on attachment 48547
Same patch, with style fix.

Cleared David Levin&apos;s review+ from obsolete attachment 48547 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191211</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-17 14:24:10 -0800</bug_when>
    <thetext>Attachment 48684 was posted by a committer and has review+, assigning to Dmitry Titov for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191458</commentid>
    <comment_count>37</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-18 00:25:58 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/54938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191972</commentid>
    <comment_count>38</comment_count>
      <attachid>48684</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-02-19 10:51:52 -0800</bug_when>
    <thetext>Comment on attachment 48684
Updated patch

cleaned flags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202550</commentid>
    <comment_count>39</comment_count>
    <who name="Kent Hansen">kent.hansen</who>
    <bug_when>2010-03-22 09:42:40 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Landed: http://trac.webkit.org/changeset/54938

Hi Dmitry,
This change adds public API to Qt (QWebFrame::pageChanged()) without documentation. Ideally it should also have a test under WebKit/qt/tests/qwebframe.
Could you please add the missing doc and test, or suggest a wording (describing when one would want to connect to this signal) so I can add it.
Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47780</attachid>
            <date>2010-01-30 18:45:39 -0800</date>
            <delta_ts>2010-01-30 18:52:18 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11067</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMDU1ODNhLi5hMTM3OWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xICsxLDE0IEBACisyMDEwLTAxLTMw
ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbGl2ZSBpZnJhbWUgZWxlbWVudCBp
cyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIG9sZCBwYWdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAg
ICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLW5ldy1wYWdlLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAx
MC0wMS0yOSA9PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmYmYwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCBsb2FkZWQgaWZyYW1lIG1h
eSBiZSBwYXNzZWQgYmV0d2VlbiBkaWZmZXJlbnQgcGFnZXMgd2l0aG91dCBzdG9wcGluZyBmaXJp
bmcgdGltZXIgZXZlbnRzLiBJdCB1c2VkIHdpbmRvdy5vcGVuIHRvIG9wZW4gJ3BhZ2UgMScgd2hp
Y2ggaGFzIGlmcmFtZSBpbiBpdC4gSXQgdGhlbiBwYXNzZXMgaWZyYW1lIHRvICdwYWdlIDInIGFu
ZCBjbG9zZXMgd2luZG93IG9mICdwYWdlIDEnLiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0
aW1lciBpbiBpZnJhbWUgdGhhdCBpcyBpbml0aWFsaXplZCB3aGVuIGlmcmFtZSBpcyBsb2FkZWQg
Y29udGludWVzIGZpcmluZyBhZnRlciBpZnJhbWUgaXMgcmUtcGFyZW50ZWQgYW5kIG9yaWdpbmFs
IHdpbmRvdyB3YXMgY2xvc2VkLiBJZiB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIGZldyBsb2cg
ZW50cmllcyBhbmQgdGhlbiAiRklOSVNIIi4KK0xvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEuCitJ
ZnJhbWUgY291bnRlcjogMAorTG9hZGVkIHBhZ2UgMi4KK1BhZ2UgMiBhZG9wdGVkIHRoZSBpZnJh
bWUuCitJZnJhbWUgdHJhbnNmZXJyZWQuCitJZnJhbWUgY291bnRlcjogMQorUEFTUzogVGhlIG5l
dyBpZnJhbWUncyBwYXJlbnQgaXMgcGFnZSAyLgorQ2xvc2luZyBwYWdlIDEuCitQYWdlIDEgaXMg
Y2xvc2VkLgorV2FpdGluZyB0byByZWNlaXZlIHRoZSB0aW1lciBiZWF0IGZyb20gdGhlIGlmcmFt
ZS4KK1JlY2VpdmVkIHRoZSB0aW1lciBiZWF0IGZyb20gdGhlIHJlLXBhcmVudGVkIGlmcmFtZSAt
IGV4aXRpbmcuCitGSU5JU0guCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDdhYzg4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCkBAIC0wLDAgKzEsNjgg
QEAKKzxodG1sPgorPHNjcmlwdD4KK3ZhciB3aW5kb3cxLCBpZnJhbWUsIHdpbmRvdzI7CisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaCgp
Cit7CisgICAgbG9nKCJSZWNlaXZlZCB0aGUgdGltZXIgYmVhdCBmcm9tIHRoZSByZS1wYXJlbnRl
ZCBpZnJhbWUgLSBleGl0aW5nLiIpCisgICAgd2luZG93Mi5jbG9zZSgpOworICAgIGxvZygiRklO
SVNILiIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBwYWdlMVVubG9h
ZGVkKCkKK3sKKyAgICBsb2coIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgaWZyYW1lLmNvbnRl
bnRXaW5kb3cuZmluaXNoID0gZmluaXNoOworICAgIGxvZygiV2FpdGluZyB0byByZWNlaXZlIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGlmcmFtZS4iKTsKK30KKworZnVuY3Rpb24gdHJhbnNmZXJJ
ZnJhbWUoKQoreworICAgIGxvZygiTG9hZGVkIHBhZ2UgMi4iKTsKKyAgICB3aW5kb3cyLmFkb3B0
SWZyYW1lKGlmcmFtZSk7CisgICAgbG9nKCJJZnJhbWUgdHJhbnNmZXJyZWQuIik7CisgICAgbG9n
KCJJZnJhbWUgY291bnRlcjogIiArIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKyk7CisK
KyAgICBpZiAod2luZG93Mi5sb2NhdGlvbi5ocmVmID09IGlmcmFtZS5jb250ZW50V2luZG93LnBh
cmVudC5sb2NhdGlvbi5ocmVmKQorICAgICAgICBsb2coIlBBU1M6IFRoZSBuZXcgaWZyYW1lJ3Mg
cGFyZW50IGlzIHBhZ2UgMi4iKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDogdGhlIG5l
dyBpZnJhbWUncyBwYXJlbnQgaXMgbm90IHBhZ2UgMi4iKTsKKworICAgIHdpbmRvdzEub251bmxv
YWQgPSBwYWdlMVVubG9hZGVkOworICAgIHdpbmRvdzEuY2xvc2UoKTsKKyAgICBsb2coIkNsb3Np
bmcgcGFnZSAxLiIpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICBsb2co
IkxvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEuIik7CisgICAgbG9nKCJJZnJhbWUgY291bnRlcjog
IiArIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKyk7CisKKyAgICB3aW5kb3cyID0gd2lu
ZG93Lm9wZW4oImlmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWwiLCAiX2JsYW5rIik7
CisgICAgd2luZG93Mi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdHJhbnNmZXJJZnJhbWUsIGZh
bHNlKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB9CisgICAgd2lu
ZG93MSA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
LTEuaHRtbCIsICJfYmxhbmsiKTsKKyAgICB3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVz
dCgpIj4KK1RoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgbG9hZGVkIGlmcmFtZSBtYXkgYmUgcGFzc2Vk
IGJldHdlZW4gZGlmZmVyZW50IHBhZ2VzIHdpdGhvdXQgc3RvcHBpbmcgZmlyaW5nIHRpbWVyIGV2
ZW50cy4gSXQgdXNlZCB3aW5kb3cub3BlbiB0byBvcGVuICdwYWdlIDEnIHdoaWNoIGhhcyBpZnJh
bWUgaW4gaXQuIEl0IHRoZW4gcGFzc2VzIGlmcmFtZSB0byAncGFnZSAyJyBhbmQgY2xvc2VzIHdp
bmRvdyBvZiAncGFnZSAxJy4gVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZy
YW1lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgd2hlbiBpZnJhbWUgaXMgbG9hZGVkIGNvbnRpbnVlcyBm
aXJpbmcgYWZ0ZXIgaWZyYW1lIGlzIHJlLXBhcmVudGVkIGFuZCBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4gSWYgdGVzdCBwYXNzZXMsIHlvdSdsbCBzZWUgYSBmZXcgbG9nIGVudHJpZXMgYW5k
IHRoZW4gIkZJTklTSCIuCis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRiYTI4OQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJh
bWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sCkBAIC0wLDAgKzEsNiBAQAorPGh0bWw+Cis8
Ym9keT4KK1BhZ2UgMTxicj4KKzxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSJpZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFn
ZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgzMDUzYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUt
cmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPHNj
cmlwdD4KK3dpbmRvdy5hZG9wdElmcmFtZSA9IGZ1bmN0aW9uKGlmcmFtZSkKK3sKKyAgICBkb2N1
bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlm
cmFtZSk7CisgICAgb3BlbmVyLmxvZygiUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4iKQorfQor
PC9zY3JpcHQ+Cis8Ym9keT4KK1BhZ2UgMjxicj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzFjYjkxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFt
ZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDIwIEBACis8aHRt
bD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5jb3VudGVyID0gMDsKKworZnVuY3Rpb24gdGljaygpCit7
CisgICAgaWYgKHdpbmRvdy5maW5pc2gpCisgICAgICAgIGZpbmlzaCgpOworfQorCitmdW5jdGlv
biBzdGFydCgpCit7CisgICAgd2luZG93LnNldEludGVydmFsKHRpY2ssIDUwKTsKK30KKzwvc2Ny
aXB0PgorPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YmUwNTYwLi41MDk5
MDRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTAxLTMwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBz
dGlsbCBkZXBlbmRzIG9uIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBUZXN0OiBmYXN0L2ZyYW1lcy9pZnJh
bWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6
c2V0TmFtZSk6IE1vdmUgdGhlIGNvZGUgc2V0dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2Vw
YXJhdGUgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6
c2V0TmFtZUFuZE9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJh
c2U6OnVwZGF0ZUxpdmVGcmFtZSk6IFVwZGF0ZSBmcmFtZSB0cmVlLCByZXNldCBwYWdlIGluIHRo
ZSBjb250ZW50RnJhbWUgYW5kIHJlLXNldCB0aGUgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6IAorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRQYWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6
IEFkZCBzZXRQYWdlIG1ldGhvZC4gSXQgaXMgb25seSBjdXJyZW50bHkgdXNlZCB3aGVuIGFsaXZl
IGlmcmFtZSBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzIChzbyB0aGUgZXhpc3RpbmcgRnJhbWUgc2hv
dWxkIGdldCBhIG5ldyBQYWdlKQorCiAyMDEwLTAxLTI5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgU3RvcCBjb3B5aW5nIGFuIElETCBmaWxlIGluIHRvIHRoZSBmcmFt
ZXdvcmsgd3JhcHBlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDM4
OTA4NTAuLjkwNGI0YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwog
ICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9pZCBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlmIChG
cmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2ZyYW1l
TmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFtZSk7
Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJM
KCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiArMTcx
LDM2IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2FsbGJh
Y2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5z
ZXROYW1lQW5kT3BlblVSTCgpOwogfQogCisvLyBVc2VkIHdoZW4gbGl2ZSBmcmFtZSBpcyBtb3Zl
ZCBpbiBET00sIHBvdGVudGlhbGx5IHRvIGFub3RoZXIgcGFnZS4KK3ZvaWQgSFRNTEZyYW1lRWxl
bWVudEJhc2U6OnVwZGF0ZUxpdmVGcmFtZSgpCit7CisgICAgc2V0TmFtZSgpOworCisgICAgRnJh
bWUqIGZyYW1lID0gY29udGVudEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gU3dpdGNoIHBhZ2UuCisgICAgUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5w
YWdlKCk7CisgICAgUGFnZSogbmV3UGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAo
b2xkUGFnZSAhPSBuZXdQYWdlKSB7CisgICAgICAgIGlmIChvbGRQYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZEZyYW1lKCkgPT0gZnJhbWUpCisgICAgICAgICAgICBvbGRQYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKDApOworCisgICAgICAgIGZyYW1lLT5zZXRQ
YWdlKGRvY3VtZW50KCktPnBhZ2UoKSk7CisgICAgfQorCisgICAgLy8gVXBkYXRlIHRoZSBmcmFt
ZSB0cmVlLgorICAgIEZyYW1lKiBvbGRQYXJlbnRGcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVu
dCgpOworICAgIEZyYW1lKiBuZXdQYXJlbnRGcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7Cisg
ICAgaWYgKG9sZFBhcmVudEZyYW1lICE9IG5ld1BhcmVudEZyYW1lKSB7CisgICAgICAgIGlmIChv
bGRQYXJlbnRGcmFtZSkKKyAgICAgICAgICAgIG9sZFBhcmVudEZyYW1lLT50cmVlKCktPnJlbW92
ZUNoaWxkKGZyYW1lKTsKKyAgICAgICAgaWYgKG5ld1BhcmVudEZyYW1lKQorICAgICAgICAgICAg
bmV3UGFyZW50RnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0KK30KKwog
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTE3NSw2
ICsyMDksOSBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpCiAgICAgLy8gT3RoZXdpc2UsIGEgc3luY2hyb25vdXMgbG9hZCB0aGF0IGV4ZWN1dGVkIEph
dmFTY3JpcHQgd291bGQgc2VlIGluY29ycmVjdCAKICAgICAvLyAoMCkgdmFsdWVzIGZvciB0aGUg
ZnJhbWUncyByZW5kZXJlci1kZXBlbmRlbnQgcHJvcGVydGllcywgbGlrZSB3aWR0aC4KICAgICBt
X3Nob3VsZE9wZW5VUkxBZnRlckF0dGFjaCA9IHRydWU7CisKKyAgICBpZiAobV9yZW1haW5zQWxp
dmVPblJlbW92YWxGcm9tVHJlZSkKKyAgICAgICAgdXBkYXRlTGl2ZUZyYW1lKCk7CiB9CiAKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li4xMjIxNzczIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNjYsMTAgKzY2LDEyIEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgpOwogICAgIHZvaWQgY2hlY2tBdHRhY2hlZFRpbWVyRmly
ZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVudEJhc2U+Kik7CisgICAgdm9pZCB1cGRhdGVMaXZlRnJh
bWUoKTsKIAogICAgIGJvb2wgdmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdT
b3VyY2U7IH0KIAogICAgIHZvaWQgc2V0TmFtZUFuZE9wZW5VUkwoKTsKKyAgICB2b2lkIHNldE5h
bWUoKTsKICAgICB2b2lkIG9wZW5VUkwoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldE5hbWVBbmRP
cGVuVVJMQ2FsbGJhY2soTm9kZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZTJmNDIxYi4uOGY0NTYwOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC0xNTg4LDYgKzE1ODgsMjAgQEAgUGFnZSogRnJhbWU6OnBhZ2UoKSBjb25zdAogICAgIHJl
dHVybiBtX3BhZ2U7CiB9CiAKK3ZvaWQgRnJhbWU6OnNldFBhZ2UoUGFnZSogcGFnZSkKK3sKKyAg
ICBpZiAobV9wYWdlID09IHBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BhZ2Up
CisgICAgICAgIG1fcGFnZS0+ZGVjcmVtZW50RnJhbWVDb3VudCgpOworCisgICAgbV9wYWdlID0g
cGFnZTsKKworICAgIGlmKHBhZ2UpCisgICAgICAgIHBhZ2UtPmluY3JlbWVudEZyYW1lQ291bnQo
KTsKK30KKwogdm9pZCBGcmFtZTo6ZGV0YWNoRnJvbVBhZ2UoKQogewogICAgIG1fcGFnZSA9IDA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CmluZGV4IDMzYmI0MzUuLjgwYWY3YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03NSw2ICs3NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbml0KCk7CiAKICAgICAgICAgUGFnZSogcGFnZSgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldFBhZ2UoUGFnZSopOwogICAgICAgICB2b2lkIGRldGFjaEZy
b21QYWdlKCk7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkg
Y29uc3Q7CiAK
</data>
<flag name="commit-queue"
          id="30317"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47781</attachid>
            <date>2010-01-30 18:52:18 -0800</date>
            <delta_ts>2010-02-08 15:13:24 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10956</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMDU1ODNhLi5hMTM3OWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xICsxLDE0IEBACisyMDEwLTAxLTMw
ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbGl2ZSBpZnJhbWUgZWxlbWVudCBp
cyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIG9sZCBwYWdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAg
ICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLW5ldy1wYWdlLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UtaWZyYW1lLmh0bWw6IEFkZGVkLgorCiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAx
MC0wMS0yOSA9PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmYmYwMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCBsb2FkZWQgaWZyYW1lIG1h
eSBiZSBwYXNzZWQgYmV0d2VlbiBkaWZmZXJlbnQgcGFnZXMgd2l0aG91dCBzdG9wcGluZyBmaXJp
bmcgdGltZXIgZXZlbnRzLiBJdCB1c2VkIHdpbmRvdy5vcGVuIHRvIG9wZW4gJ3BhZ2UgMScgd2hp
Y2ggaGFzIGlmcmFtZSBpbiBpdC4gSXQgdGhlbiBwYXNzZXMgaWZyYW1lIHRvICdwYWdlIDInIGFu
ZCBjbG9zZXMgd2luZG93IG9mICdwYWdlIDEnLiBUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0
aW1lciBpbiBpZnJhbWUgdGhhdCBpcyBpbml0aWFsaXplZCB3aGVuIGlmcmFtZSBpcyBsb2FkZWQg
Y29udGludWVzIGZpcmluZyBhZnRlciBpZnJhbWUgaXMgcmUtcGFyZW50ZWQgYW5kIG9yaWdpbmFs
IHdpbmRvdyB3YXMgY2xvc2VkLiBJZiB0ZXN0IHBhc3NlcywgeW91J2xsIHNlZSBhIGZldyBsb2cg
ZW50cmllcyBhbmQgdGhlbiAiRklOSVNIIi4KK0xvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEuCitJ
ZnJhbWUgY291bnRlcjogMAorTG9hZGVkIHBhZ2UgMi4KK1BhZ2UgMiBhZG9wdGVkIHRoZSBpZnJh
bWUuCitJZnJhbWUgdHJhbnNmZXJyZWQuCitJZnJhbWUgY291bnRlcjogMQorUEFTUzogVGhlIG5l
dyBpZnJhbWUncyBwYXJlbnQgaXMgcGFnZSAyLgorQ2xvc2luZyBwYWdlIDEuCitQYWdlIDEgaXMg
Y2xvc2VkLgorV2FpdGluZyB0byByZWNlaXZlIHRoZSB0aW1lciBiZWF0IGZyb20gdGhlIGlmcmFt
ZS4KK1JlY2VpdmVkIHRoZSB0aW1lciBiZWF0IGZyb20gdGhlIHJlLXBhcmVudGVkIGlmcmFtZSAt
IGV4aXRpbmcuCitGSU5JU0guCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNGM2MTJkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCkBAIC0wLDAgKzEsNjgg
QEAKKzxodG1sPgorPHNjcmlwdD4KK3ZhciB3aW5kb3cxLCBpZnJhbWUsIHdpbmRvdzI7CisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lclRleHQgKz0gbWVzc2FnZSArICJcbiI7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaCgp
Cit7CisgICAgbG9nKCJSZWNlaXZlZCB0aGUgdGltZXIgYmVhdCBmcm9tIHRoZSByZS1wYXJlbnRl
ZCBpZnJhbWUgLSBleGl0aW5nLiIpCisgICAgd2luZG93Mi5jbG9zZSgpOworICAgIGxvZygiRklO
SVNILiIpCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBwYWdlMVVubG9h
ZGVkKCkKK3sKKyAgICBsb2coIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgaWZyYW1lLmNvbnRl
bnRXaW5kb3cuZmluaXNoID0gZmluaXNoOworICAgIGxvZygiV2FpdGluZyB0byByZWNlaXZlIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGlmcmFtZS4iKTsKK30KKworZnVuY3Rpb24gdHJhbnNmZXJJ
ZnJhbWUoKQoreworICAgIGxvZygiTG9hZGVkIHBhZ2UgMi4iKTsKKyAgICB3aW5kb3cyLmFkb3B0
SWZyYW1lKGlmcmFtZSk7CisgICAgbG9nKCJJZnJhbWUgdHJhbnNmZXJyZWQuIik7CisgICAgbG9n
KCJJZnJhbWUgY291bnRlcjogIiArIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKyk7CisK
KyAgICBpZiAod2luZG93Mi5sb2NhdGlvbi5ocmVmID09IGlmcmFtZS5jb250ZW50V2luZG93LnBh
cmVudC5sb2NhdGlvbi5ocmVmKQorICAgICAgICBsb2coIlBBU1M6IFRoZSBuZXcgaWZyYW1lJ3Mg
cGFyZW50IGlzIHBhZ2UgMi4iKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTDogdGhlIG5l
dyBpZnJhbWUncyBwYXJlbnQgaXMgbm90IHBhZ2UgMi4iKTsKKworICAgIHdpbmRvdzEub251bmxv
YWQgPSBwYWdlMVVubG9hZGVkOworICAgIHdpbmRvdzEuY2xvc2UoKTsKKyAgICBsb2coIkNsb3Np
bmcgcGFnZSAxLiIpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICBsb2co
IkxvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEuIik7CisgICAgbG9nKCJJZnJhbWUgY291bnRlcjog
IiArIGlmcmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIrKyk7CisKKyAgICB3aW5kb3cyID0gd2lu
ZG93Lm9wZW4oImlmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0yLmh0bWwiLCAiX2JsYW5rIik7
CisgICAgd2luZG93Mi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdHJhbnNmZXJJZnJhbWUsIGZh
bHNlKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICB9CisgICAgd2lu
ZG93MSA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
LTEuaHRtbCIsICJfYmxhbmsiKTsKKyAgICB3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0idGVz
dCgpIj4KK1RoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgbG9hZGVkIGlmcmFtZSBtYXkgYmUgcGFzc2Vk
IGJldHdlZW4gZGlmZmVyZW50IHBhZ2VzIHdpdGhvdXQgc3RvcHBpbmcgZmlyaW5nIHRpbWVyIGV2
ZW50cy4gSXQgdXNlZCB3aW5kb3cub3BlbiB0byBvcGVuICdwYWdlIDEnIHdoaWNoIGhhcyBpZnJh
bWUgaW4gaXQuIEl0IHRoZW4gcGFzc2VzIGlmcmFtZSB0byAncGFnZSAyJyBhbmQgY2xvc2VzIHdp
bmRvdyBvZiAncGFnZSAxJy4gVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZy
YW1lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgd2hlbiBpZnJhbWUgaXMgbG9hZGVkIGNvbnRpbnVlcyBm
aXJpbmcgYWZ0ZXIgaWZyYW1lIGlzIHJlLXBhcmVudGVkIGFuZCBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4gSWYgdGVzdCBwYXNzZXMsIHlvdSdsbCBzZWUgYSBmZXcgbG9nIGVudHJpZXMgYW5k
IHRoZW4gIkZJTklTSCIuCis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1y
ZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0
bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4KKzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBp
ZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OGZiMGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxz
Y3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUgPSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9j
dW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWUpOworICAgIG9wZW5lci5sb2coIlBhZ2UgMiBhZG9wdGVkIHRoZSBpZnJhbWUuIikKK30K
Kzwvc2NyaXB0PgorPGJvZHk+CitQYWdlIDI8YnI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mZmM5MzdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJh
bWUuaHRtbApAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxzY3JpcHQ+CisKK3dpbmRvdy5jb3Vu
dGVyID0gMDsKKworZnVuY3Rpb24gdGljaygpCit7CisgICAgaWYgKHdpbmRvdy5maW5pc2gpCisg
ICAgICAgIGZpbmlzaCgpOworfQorCitmdW5jdGlvbiBzdGFydCgpCit7CisgICAgd2luZG93LnNl
dEludGVydmFsKHRpY2ssIDUwKTsKK30KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJzdGFydCgp
Ij4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZiZTA1NjAuLjUw
OTkwNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDEtMzAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0
IHN0aWxsIGRlcGVuZHMgb24gb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgIFRlc3Q6IGZhc3QvZnJhbWVzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpzZXROYW1lKTogTW92ZSB0aGUgY29kZSBzZXR0aW5nIHRoZSBmcmFtZSBuYW1lIGludG8gYSBz
ZXBhcmF0ZSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50
QmFzZTo6dXBkYXRlTGl2ZUZyYW1lKTogVXBkYXRlIGZyYW1lIHRyZWUsIHJlc2V0IHBhZ2UgaW4g
dGhlIGNvbnRlbnRGcmFtZSBhbmQgcmUtc2V0IHRoZSBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KTogCisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFBhZ2UpOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
aDogQWRkIHNldFBhZ2UgbWV0aG9kLiBJdCBpcyBvbmx5IGN1cnJlbnRseSB1c2VkIHdoZW4gYWxp
dmUgaWZyYW1lIGlzIG1vdmVkIGJldHdlZW4gcGFnZXMgKHNvIHRoZSBleGlzdGluZyBGcmFtZSBz
aG91bGQgZ2V0IGEgbmV3IFBhZ2UpCisKIDIwMTAtMDEtMjkgIE1hcmsgUm93ZSAgPG1yb3dlQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdG9wIGNvcHlpbmcgYW4gSURMIGZpbGUgaW4gdG8gdGhlIGZy
YW1ld29yayB3cmFwcGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXgg
Mzg5MDg1MC4uOTA0YjRjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi12b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCgpCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpzZXROYW1lKCkKIHsKICAgICBtX2ZyYW1lTmFtZSA9IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7
CiAgICAgaWYgKG1fZnJhbWVOYW1lLmlzTnVsbCgpKQpAQCAtMTU4LDcgKzE1OCwxMSBAQCB2b2lk
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCgpCiAgICAgCiAgICAgaWYg
KEZyYW1lKiBwYXJlbnRGcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgIG1fZnJh
bWVOYW1lID0gcGFyZW50RnJhbWUtPnRyZWUoKS0+dW5pcXVlQ2hpbGROYW1lKG1fZnJhbWVOYW1l
KTsKLSAgICAKK30KKwordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5V
UkwoKQoreworICAgIHNldE5hbWUoKTsKICAgICBvcGVuVVJMKCk7CiB9CiAKQEAgLTE2Nyw2ICsx
NzEsMzYgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkxDYWxs
YmFjayhOb2RlKiBuKQogICAgIHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obikt
PnNldE5hbWVBbmRPcGVuVVJMKCk7CiB9CiAKKy8vIFVzZWQgd2hlbiBsaXZlIGZyYW1lIGlzIG1v
dmVkIGluIERPTSwgcG90ZW50aWFsbHkgdG8gYW5vdGhlciBwYWdlLgordm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6dXBkYXRlTGl2ZUZyYW1lKCkKK3sKKyAgICBzZXROYW1lKCk7CisKKyAgICBG
cmFtZSogZnJhbWUgPSBjb250ZW50RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBTd2l0Y2ggcGFnZS4KKyAgICBQYWdlKiBvbGRQYWdlID0gZnJhbWUt
PnBhZ2UoKTsKKyAgICBQYWdlKiBuZXdQYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlm
IChvbGRQYWdlICE9IG5ld1BhZ2UpIHsKKyAgICAgICAgaWYgKG9sZFBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSBmcmFtZSkKKyAgICAgICAgICAgIG9sZFBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUoMCk7CisKKyAgICAgICAgZnJhbWUtPnNl
dFBhZ2UoZG9jdW1lbnQoKS0+cGFnZSgpKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIGZy
YW1lIHRyZWUuCisgICAgRnJhbWUqIG9sZFBhcmVudEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCk7CisgICAgRnJhbWUqIG5ld1BhcmVudEZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KyAgICBpZiAob2xkUGFyZW50RnJhbWUgIT0gbmV3UGFyZW50RnJhbWUpIHsKKyAgICAgICAgaWYg
KG9sZFBhcmVudEZyYW1lKQorICAgICAgICAgICAgb2xkUGFyZW50RnJhbWUtPnRyZWUoKS0+cmVt
b3ZlQ2hpbGQoZnJhbWUpOworICAgICAgICBpZiAobmV3UGFyZW50RnJhbWUpCisgICAgICAgICAg
ICBuZXdQYXJlbnRGcmFtZS0+dHJlZSgpLT5hcHBlbmRDaGlsZChmcmFtZSk7CisgICAgfQorfQor
CiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtMTc1
LDYgKzIwOSw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3Vt
ZW50KCkKICAgICAvLyBPdGhld2lzZSwgYSBzeW5jaHJvbm91cyBsb2FkIHRoYXQgZXhlY3V0ZWQg
SmF2YVNjcmlwdCB3b3VsZCBzZWUgaW5jb3JyZWN0IAogICAgIC8vICgwKSB2YWx1ZXMgZm9yIHRo
ZSBmcmFtZSdzIHJlbmRlcmVyLWRlcGVuZGVudCBwcm9wZXJ0aWVzLCBsaWtlIHdpZHRoLgogICAg
IG1fc2hvdWxkT3BlblVSTEFmdGVyQXR0YWNoID0gdHJ1ZTsKKworICAgIGlmIChtX3JlbWFpbnNB
bGl2ZU9uUmVtb3ZhbEZyb21UcmVlKQorICAgICAgICB1cGRhdGVMaXZlRnJhbWUoKTsKIH0KIAog
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGVhOTNhZTcuLjEyMjE3NzMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC02NiwxMCArNjYsMTIgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CiAgICAgdm9pZCBjaGVja0F0dGFjaGVkVGltZXJG
aXJlZChUaW1lcjxIVE1MRnJhbWVFbGVtZW50QmFzZT4qKTsKKyAgICB2b2lkIHVwZGF0ZUxpdmVG
cmFtZSgpOwogCiAgICAgYm9vbCB2aWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d1NvdXJjZTsgfQogCiAgICAgdm9pZCBzZXROYW1lQW5kT3BlblVSTCgpOworICAgIHZvaWQgc2V0
TmFtZSgpOwogICAgIHZvaWQgb3BlblVSTCgpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0TmFtZUFu
ZE9wZW5VUkxDYWxsYmFjayhOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlMmY0MjFiLi4zZWU5MDk5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTE1ODgsNiArMTU4OCwyMCBAQCBQYWdlKiBGcmFtZTo6cGFnZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZTsKIH0KIAordm9pZCBGcmFtZTo6c2V0UGFnZShQYWdlKiBwYWdlKQorewor
ICAgIGlmIChtX3BhZ2UgPT0gcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGFn
ZSkKKyAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisKKyAgICBtX3BhZ2Ug
PSBwYWdlOworCisgICAgaWYgKHBhZ2UpCisgICAgICAgIHBhZ2UtPmluY3JlbWVudEZyYW1lQ291
bnQoKTsKK30KKwogdm9pZCBGcmFtZTo6ZGV0YWNoRnJvbVBhZ2UoKQogewogICAgIG1fcGFnZSA9
IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCmluZGV4IDMzYmI0MzUuLjgwYWY3YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03NSw2ICs3NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbml0KCk7CiAKICAgICAgICAgUGFnZSogcGFnZSgp
IGNvbnN0OworICAgICAgICB2b2lkIHNldFBhZ2UoUGFnZSopOwogICAgICAgICB2b2lkIGRldGFj
aEZyb21QYWdlKCk7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
KCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47891</attachid>
            <date>2010-02-01 17:56:46 -0800</date>
            <delta_ts>2010-02-08 15:13:32 -0800</delta_ts>
            <desc>Updated for review notes.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11603</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YzU2MTE0Li4xMGM5ZDhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDIt
MDEgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDItMDEgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVw
YXJlbnRpbmctbmV3LXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMjE3MmE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACitUaGUgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSB0aW1lciBpbiBpZnJh
bWUgY29udGludWVzIGZpcmluZyBhZnRlciBpZnJhbWUgaXMgYWRvcHRlZCBpbnRvIGEgbmV3IHdp
bmRvdyBhbmQgdGhlIG9yaWdpbmFsIHdpbmRvdyB3YXMgY2xvc2VkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitQQVNTIExvYWRlZCBpZnJhbWUgaW4gd2luZG93IDEuCitQQVNTIGlmcmFtZS5j
b250ZW50V2luZG93LmNvdW50ZXIgaXMgMQorUEFTUyBMb2FkZWQgcGFnZSAyLgorUEFTUyBQYWdl
IDIgYWRvcHRlZCB0aGUgaWZyYW1lLgorUEFTUyBJZnJhbWUgdHJhbnNmZXJyZWQuCitQQVNTIGlm
cmFtZS5jb250ZW50V2luZG93LmNvdW50ZXIgaXMgMgorUEFTUyB3aW5kb3cyLmxvY2F0aW9uLmhy
ZWYgaXMgaWZyYW1lLmNvbnRlbnRXaW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYKK1BBU1MgUGFn
ZSAxIGlzIGNsb3NlZC4KK1BBU1MgUmVjZWl2ZWQgdGhlIHRpbWVyIGJlYXQgZnJvbSB0aGUgYWRv
cHRlZCBpZnJhbWUgLSBleGl0aW5nLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc1OGFlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZy
YW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZTAwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
LTEuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorPGJvZHk+CitQYWdlIDE8YnI+Cis8aWZy
YW1lIGlkPSJpZnJhbWUiIHNyYz0iaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWlmcmFtZS5o
dG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1u
ZXctcGFnZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyNmQw
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9p
ZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1s
PgorPHNjcmlwdD4KK3dpbmRvdy5hZG9wdElmcmFtZSA9IGZ1bmN0aW9uKGlmcmFtZSkKK3sKKyAg
ICBkb2N1bWVudC5hZG9wdE5vZGUoaWZyYW1lKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGlmcmFtZSk7CisgICAgb3BlbmVyLnRlc3RQYXNzZWQoIlBhZ2UgMiBhZG9wdGVkIHRoZSBp
ZnJhbWUuIikKK30KKzwvc2NyaXB0PgorPGJvZHk+CitQYWdlIDI8YnI+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1l
LXJlcGFyZW50aW5nLW5ldy1wYWdlLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTc5YTkwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1u
ZXctcGFnZS1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3
aW5kb3cuY291bnRlciA9IDA7CisKK2Z1bmN0aW9uIHRpY2soKQoreworICAgIGlmICh3aW5kb3cu
ZmluaXNoKQorICAgICAgICBmaW5pc2goKTsKK30KKworZnVuY3Rpb24gc3RhcnQoKQoreworICAg
IHdpbmRvdy5zZXRJbnRlcnZhbCh0aWNrLCA1MCk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9h
ZD0ic3RhcnQoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE5MzZlMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9VUl9KU19GSUxFX0hFUkUiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2NyaXB0LXRlc3RzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjODA5NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUt
cmVwYXJlbnRpbmctbmV3LXBhZ2UuanMKQEAgLTAsMCArMSw1MSBAQAorZGVzY3JpcHRpb24oCisi
VGhlIHRlc3QgdmVyaWZpZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJp
bmcgYWZ0ZXIgaWZyYW1lIGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmln
aW5hbCB3aW5kb3cgd2FzIGNsb3NlZC4iCispOworCit2YXIgd2luZG93MSwgaWZyYW1lLCB3aW5k
b3cyOworCitmdW5jdGlvbiBmaW5pc2goKQoreworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdp
bmRvdzIuY2xvc2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBh
Z2UxVW5sb2FkZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7Cisg
ICAgLy8gR2l2ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4K
KyAgICBpZnJhbWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9u
IHRyYW5zZmVySWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOwor
ICAgIHdpbmRvdzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUg
dHJhbnNmZXJyZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAg
IHNob3VsZEJlKCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91
bGRCZSgid2luZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7
CisgICAgd2luZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sK
KyAgICBpZnJhbWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsK
KyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFt
ZS5jb250ZW50V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRX
aW5kb3cuY291bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUt
cmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRv
d3MoKTsKK30KK3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVu
dGluZy1uZXctcGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBjODEzNGU3Li43ZTM2YTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTAyLTAxICBE
bWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlz
IG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKwor
ICAgICAgICBUZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRt
bAorCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhl
IGNvZGUgc2V0dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlTGl2ZUZy
YW1lKToKKyAgICAgICAgVXBkYXRlIGZyYW1lIHRyZWUsIHJlc2V0IHBhZ2UgaW4gdGhlIGNvbnRl
bnRGcmFtZSBhbmQgcmUtc2V0IHRoZSBuYW1lLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJh
bWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiAKKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmg6CisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRQYWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IEFk
ZCBzZXRQYWdlIG1ldGhvZC4gSXQgaXMgb25seSBjdXJyZW50bHkgdXNlZCB3aGVuIGlmcmFtZSBp
cworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZWQgYmV0d2VlbiBwYWdlcyAoc28gdGhlIEFT
U0VSVChtX293bmVyRWxlbWVudCkuCisKIDIwMTAtMDEtMjkgIEdhdmluIEJhcnJhY2xvdWdoICA8
YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcg
KyBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4IDM4
OTA4NTAuLjQ5ZjIxZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwog
ICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9pZCBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlmIChG
cmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2ZyYW1l
TmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFtZSk7
Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJM
KCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiArMTcx
LDM4IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2FsbGJh
Y2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5z
ZXROYW1lQW5kT3BlblVSTCgpOwogfQogCisvLyBVc2VkIHdoZW4gbGl2ZSBmcmFtZSBpcyBtb3Zl
ZCBpbiBET00sIHBvdGVudGlhbGx5IHRvIGFub3RoZXIgcGFnZS4KK3ZvaWQgSFRNTEZyYW1lRWxl
bWVudEJhc2U6OnVwZGF0ZUxpdmVGcmFtZSgpCit7CisgICAgQVNTRVJUKG1fcmVtYWluc0FsaXZl
T25SZW1vdmFsRnJvbVRyZWUpOworCisgICAgc2V0TmFtZSgpOworCisgICAgRnJhbWUqIGZyYW1l
ID0gY29udGVudEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gU3dpdGNoIHBhZ2UuCisgICAgUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCk7Cisg
ICAgUGFnZSogbmV3UGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAob2xkUGFnZSAh
PSBuZXdQYWdlKSB7CisgICAgICAgIGlmIChvbGRQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZEZyYW1lKCkgPT0gZnJhbWUpCisgICAgICAgICAgICBvbGRQYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKDApOworCisgICAgICAgIGZyYW1lLT5zZXRQYWdlKGRvY3Vt
ZW50KCktPnBhZ2UoKSk7CisgICAgfQorCisgICAgLy8gVXBkYXRlIHRoZSBmcmFtZSB0cmVlLgor
ICAgIEZyYW1lKiBvbGRQYXJlbnRGcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAg
IEZyYW1lKiBuZXdQYXJlbnRGcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKG9s
ZFBhcmVudEZyYW1lICE9IG5ld1BhcmVudEZyYW1lKSB7CisgICAgICAgIGlmIChvbGRQYXJlbnRG
cmFtZSkKKyAgICAgICAgICAgIG9sZFBhcmVudEZyYW1lLT50cmVlKCktPnJlbW92ZUNoaWxkKGZy
YW1lKTsKKyAgICAgICAgaWYgKG5ld1BhcmVudEZyYW1lKQorICAgICAgICAgICAgbmV3UGFyZW50
RnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoZnJhbWUpOworICAgIH0KK30KKwogdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIEhUTUxGcmFt
ZU93bmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTE3NSw2ICsyMTEsOSBA
QCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAgICAg
Ly8gT3RoZXdpc2UsIGEgc3luY2hyb25vdXMgbG9hZCB0aGF0IGV4ZWN1dGVkIEphdmFTY3JpcHQg
d291bGQgc2VlIGluY29ycmVjdCAKICAgICAvLyAoMCkgdmFsdWVzIGZvciB0aGUgZnJhbWUncyBy
ZW5kZXJlci1kZXBlbmRlbnQgcHJvcGVydGllcywgbGlrZSB3aWR0aC4KICAgICBtX3Nob3VsZE9w
ZW5VUkxBZnRlckF0dGFjaCA9IHRydWU7CisKKyAgICBpZiAobV9yZW1haW5zQWxpdmVPblJlbW92
YWxGcm9tVHJlZSkKKyAgICAgICAgdXBkYXRlTGl2ZUZyYW1lKCk7CiB9CiAKIHZvaWQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li4xMjIxNzczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxl
bWVudEJhc2UuaApAQCAtNjYsMTAgKzY2LDEyIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFJlbW92ZSgpOwogICAgIHZvaWQgY2hlY2tBdHRhY2hlZFRpbWVyRmlyZWQoVGltZXI8
SFRNTEZyYW1lRWxlbWVudEJhc2U+Kik7CisgICAgdm9pZCB1cGRhdGVMaXZlRnJhbWUoKTsKIAog
ICAgIGJvb2wgdmlld1NvdXJjZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTb3VyY2U7IH0K
IAogICAgIHZvaWQgc2V0TmFtZUFuZE9wZW5VUkwoKTsKKyAgICB2b2lkIHNldE5hbWUoKTsKICAg
ICB2b2lkIG9wZW5VUkwoKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldE5hbWVBbmRPcGVuVVJMQ2Fs
bGJhY2soTm9kZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZTJmNDIxYi4uNDNhNGY5NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xNTg4
LDYgKzE1ODgsMjIgQEAgUGFnZSogRnJhbWU6OnBhZ2UoKSBjb25zdAogICAgIHJldHVybiBtX3Bh
Z2U7CiB9CiAKK3ZvaWQgRnJhbWU6OnNldFBhZ2UoUGFnZSogcGFnZSkKK3sKKyAgICBBU1NFUlQo
bV9vd25lckVsZW1lbnQpOworCisgICAgaWYgKG1fcGFnZSA9PSBwYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9wYWdlKQorICAgICAgICBtX3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291
bnQoKTsKKworICAgIG1fcGFnZSA9IHBhZ2U7CisKKyAgICBpZiAocGFnZSkKKyAgICAgICAgcGFn
ZS0+aW5jcmVtZW50RnJhbWVDb3VudCgpOworfQorCiB2b2lkIEZyYW1lOjpkZXRhY2hGcm9tUGFn
ZSgpCiB7CiAgICAgbV9wYWdlID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzNiYjQzNS4uODBhZjdjMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTc1
LDYgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGluaXQoKTsKIAog
ICAgICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0UGFnZShQYWdlKik7
CiAgICAgICAgIHZvaWQgZGV0YWNoRnJvbVBhZ2UoKTsKICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48543</attachid>
            <date>2010-02-10 19:31:10 -0800</date>
            <delta_ts>2010-02-10 22:20:57 -0800</delta_ts>
            <desc>Patch, fixed crashes.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>34235</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li4zMWUyMDAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp1cGRhdGVPbnJlcGFyZW50aW5nKG5ld1BhcmVudEZyYW1lKTsKKworICAgICAgICAo
V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2V0TmFtZSk6CisgICAgICAgIE1ha2UgdGhpcyBhIHZpcnR1YWwgZnVuY3Rpb24sIHRv
IGJlIGFibGUgdG8gcmVhY2ggaXQgdmlhIEZyYW1lOjptX293bmVyRWxlbWVudC4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmFkb3B0RnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICBBZGQgYSBuZXcgbWV0aG9kLCBhZG9wdEZyYW1lKCkuIEl0IGNvbXBs
aW1lbnRzIGNyZWF0ZUZyYW1lKCkgaW4gdGhhdAorICAgICAgICBhIGZyYW1lIHdoaWNoIHdhcyBy
ZS1wYXJlbnRlZCBpbiBET00gYW5kIHBvdGVudGlhbGx5IGNoYW5nZXMgUGFnZSwgc2hvdWxkCisg
ICAgICAgIG5vdGlmeSB0aGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIGFib3V0IHBvdGVudGlhbCBv
d25lcnNoaXAgY2hhbmdlLgorICAgICAgICBNYW55IGVtYmVkZGVycyBhc3N1bWUgdGhhdCBQYWdl
IG93bnMgYWxsIHRoZSBGcmFtZXMsIG9yIGF0IGxlYXN0CisgICAgICAgIGFsbCBGcmFtZXMgYXJl
IGRlc3Ryb3llZCBiZWZvcmUgJ3RoZWlyJyBQYWdlIGlzIGRlc3Ryb3llZC4gT2J2aW91c2x5LCBp
ZiBGcmFtZQorICAgICAgICBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gYW5vdGhlciBQYWdlLCB0aGUg
ZW1iZWRkZXJzIHNob3VsZCBiZSBub3RpZmllZC4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnVwZGF0ZU9uUmVwYXJlbnRpbmcpOgorICAgICAg
ICBBZGRlZCwgbWFrZXMgYWN0dWFsIGFkanVzdG1lbnRzIGZvciBGcmFtZSAtIHJlc2V0cyB0aGUg
UGFnZSwKKyAgICAgICAgdXBkYXRlcyB0aGUgZnJhbWUgdHJlZSBhbmQgZnJhbWUgbmFtZSwgY2Fs
bHMgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgdG8gdXBkYXRlIGV4dGVybmFsIG9iamVj
dHMgYW5kIHJlY3Vyc2VzIGludG8gY2hpbGRyZW4uCisgICAgICAgIENhbiBvbmx5IGJlIHVzZWQg
b24gY2hpbGQgZnJhbWVzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDEwLTAyLTEw
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKaW5kZXggMzg5MDg1MC4uNWZkNmZkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgpAQCAtMTUwLDcg
KzE1MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFt
ZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogICAgIGlm
IChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTksMTEgQEAgdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlmIChGcmFtZSog
cGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2ZyYW1lTmFtZSA9
IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFtZSk7Ci0gICAg
Cit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKCkKK3sK
KyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiArMTcyLDE0IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2FsbGJhY2soTm9k
ZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5zZXROYW1l
QW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1cGRhdGVPblJl
cGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJl
ZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisgICAgICAgIGZy
YW1lLT51cGRhdGVPblJlcGFyZW50aW5nKGRvY3VtZW50KCktPmZyYW1lKCkpOworfQorCiB2b2lk
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtMTc1LDYgKzE4
OCw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
ICAgICAvLyBPdGhld2lzZSwgYSBzeW5jaHJvbm91cyBsb2FkIHRoYXQgZXhlY3V0ZWQgSmF2YVNj
cmlwdCB3b3VsZCBzZWUgaW5jb3JyZWN0IAogICAgIC8vICgwKSB2YWx1ZXMgZm9yIHRoZSBmcmFt
ZSdzIHJlbmRlcmVyLWRlcGVuZGVudCBwcm9wZXJ0aWVzLCBsaWtlIHdpZHRoLgogICAgIG1fc2hv
dWxkT3BlblVSTEFmdGVyQXR0YWNoID0gdHJ1ZTsKKworICAgIGlmIChtX3JlbWFpbnNBbGl2ZU9u
UmVtb3ZhbEZyb21UcmVlKQorICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5nKCk7CiB9CiAKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li43NzE3ZGYwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNjQsOCArNjQsMTEgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TmFtZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsK
ICAgICB2b2lkIGNoZWNrQXR0YWNoZWRUaW1lckZpcmVkKFRpbWVyPEhUTUxGcmFtZUVsZW1lbnRC
YXNlPiopOworICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZygpOwogCiAgICAgYm9vbCB2aWV3
U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NvdXJjZTsgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggNGE1NmU0NS4uZGNjNDk2NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoKSB7fQogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzBiMDZkNS4u
YmFhOTYwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI5Niw2ICsyOTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikgeyB9CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShGcmFt
ZSopIHsgcmV0dXJuOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29u
c3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7
IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRjMTIxZjQu
LjE1OGY2YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjE5LDYgKzIxOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRvcHRGcmFtZShGcmFtZSopID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IGUyZjQyMWIuLmE1YTBiZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTYyNyw2ICsxNjI3LDQ1IEBA
IHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQogICAgIG1fb3duZXJFbGVtZW50
ID0gMDsKIH0KIAorLy8gVGhlIGZyYW1lIGlzIG1vdmVkIGluIERPTSwgcG90ZW50aWFsbHkgdG8g
YW5vdGhlciBwYWdlLgordm9pZCBGcmFtZTo6dXBkYXRlT25SZXBhcmVudGluZyhGcmFtZSogbmV3
UGFyZW50KQoreworICAgIEFTU0VSVChtX293bmVyRWxlbWVudCk7CisgICAgLy8gU3dpdGNoIHBh
Z2UuCisgICAgUGFnZSogbmV3UGFnZSA9IG5ld1BhcmVudC0+cGFnZSgpOworICAgIGlmIChtX3Bh
Z2UgIT0gbmV3UGFnZSkgeworICAgICAgICBpZiAocGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZEZyYW1lKCkgPT0gdGhpcykKKyAgICAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCktPnNldEZvY3VzZWRGcmFtZSgwKTsKKworICAgICAgICBpZiAobV9wYWdlKQorICAgICAg
ICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisKKyAgICAgICAgbV9wYWdlID0g
bmV3UGFnZTsKKworICAgICAgICBpZiAobmV3UGFnZSkKKyAgICAgICAgICAgIG5ld1BhZ2UtPmlu
Y3JlbWVudEZyYW1lQ291bnQoKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRy
ZWUuCisgICAgRnJhbWUqIG9sZFBhcmVudCA9IHRyZWUoKS0+cGFyZW50KCk7CisgICAgaWYgKG9s
ZFBhcmVudCAhPSBuZXdQYXJlbnQpIHsKKyAgICAgICAgaWYgKG9sZFBhcmVudCkKKyAgICAgICAg
ICAgIG9sZFBhcmVudC0+dHJlZSgpLT5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgaWYgKG5l
d1BhcmVudCkgeworICAgICAgICAgICAgbmV3UGFyZW50LT50cmVlKCktPmFwcGVuZENoaWxkKHRo
aXMpOworICAgICAgICAgICAgbV9vd25lckVsZW1lbnQtPnNldE5hbWUoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIExldCBleHRlcm5hbCBjbGllbnRzIHVwZGF0ZSB0aGVtc2VsdmVzLgor
ICAgIG5ld1BhcmVudC0+bG9hZGVyKCktPmNsaWVudCgpLT5hZG9wdEZyYW1lKHRoaXMpOworCisg
ICAgLy8gRG8gdGhlIHNhbWUgZm9yIGFsbCB0aGUgY2hpbGRyZW4uCisgICAgZm9yIChGcmFtZSog
Y2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBjaGlsZC0+dXBkYXRlT25SZXBhcmVudGluZyh0
aGlzKTsKKyAgICB9Cit9CisKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBlU3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0gZG9jdW1lbnQoKS0+ZG9jdHlw
ZSgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAppbmRleCAzM2JiNDM1Li40YjQ1Y2UwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IGRldGFjaEZyb21QYWdlKCk7CisgICAgICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZyhGcmFt
ZSogbmV3UGFyZW50KTsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDIxN2ZkYTYuLjAzMjkzMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEw
LTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBl
bGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9s
ZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQzODIKKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRldGFjaGVkRnJvbVBhcmVudDMpOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmFkb3B0RnJhbWUpOgorICAg
ICAgICBTaW5jZSBDaHJvbWl1bSdzIFdlYkZyYW1lQ2xpZW50IGlzIGRlc3Ryb3llZCBvbmNlIGEg
d2luZG93IGlzIGNsb3NlZCwKKyAgICAgICAgaWYgRnJhbWUgbW92ZXMgYmV0d2VlbiBQYWdlcyB0
aGUgY2xpZW50IG9mIGNvcnJlc3BvbmRpbmcgV2ViRnJhbWUKKyAgICAgICAgc2hvdWxkIGJlIHJl
cGxhY2VkIGFzIHdlbGwuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUltcGw6OnNldENsaWVudCk6CisKIDIwMTAtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGI5ODQzMDguLjli
YTAzM2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGV0YWNo
ZWRGcm9tUGFyZW50MygpCiAgICAgCiAgICAgLy8gU3RvcCBjb21tdW5pY2F0aW5nIHdpdGggdGhl
IFdlYkZyYW1lQ2xpZW50IGF0IHRoaXMgcG9pbnQgc2luY2Ugd2UgYXJlIG5vCiAgICAgLy8gbG9u
Z2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgUGFnZS4KLSAgICBtX3dlYkZyYW1lLT5kcm9wQ2xpZW50
KCk7CisgICAgbV93ZWJGcmFtZS0+c2V0Q2xpZW50KDApOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9u
IGlzIHJlc3BvbnNpYmxlIGZvciBhc3NvY2lhdGluZyB0aGUgfGlkZW50aWZpZXJ8IHdpdGggYSBn
aXZlbgpAQCAtMTMzMiw2ICsxMzMyLDIzIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6Y3JlYXRlRnJhbWUoCiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNyZWF0ZUNo
aWxkRnJhbWUoZnJhbWVSZXF1ZXN0LCBvd25lckVsZW1lbnQpOwogfQogCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6YWRvcHRGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGZyYW1lLT5vd25lckVsZW1lbnQoKSk7
CisKKyAgICBpZiAoIW1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZy
YW1lKTsKKyAgICBBU1NFUlQod2ViRnJhbWVJbXBsKTsKKworICAgIC8vIFJlcGxhY2UgdGhlIGNs
aWVudCBzaW5jZSB0aGUgb2xkIGNsaWVudCBtYXkgZ28gYXdheSB3aXRoIHRoZSBtYWluIGZyYW1l
LgorICAgIHdlYkZyYW1lSW1wbC0+c2V0Q2xpZW50KG1fd2ViRnJhbWUtPmNsaWVudCgpKTsKK30K
KwogUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y3JlYXRlUGx1Z2lu
KAogICAgIGNvbnN0IEludFNpemUmIHNpemUsIC8vIEZJWE1FOiBob3cgZG8gd2UgdXNlIHRoaXM/
CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCA5MDE2MDBjLi4xMWI0NjAyIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE3NCw2ICsxNzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LAogICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywKICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbigKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKaW5kZXggY2NiYTZkNC4uNDdmNzNhYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCkBAIC0yMjEsNyArMjIxLDcgQEAgcHVibGljOgogICAgIFdlYlBhc3N3b3JkQXV0b2NvbXBs
ZXRlTGlzdGVuZXIqIGdldFBhc3N3b3JkTGlzdGVuZXIoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dCopOwogCiAgICAgV2ViRnJhbWVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9Ci0gICAgdm9pZCBkcm9wQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICB2b2lk
IHNldENsaWVudChXZWJGcmFtZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RXb3JkQXJvdW5kUG9zaXRpb24oV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24pOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDdhNDQ4ODQuLmU0MjNhODQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywg
aXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6YWRvcHRGcmFtZSk6CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9u
IG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wMi0wOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZh
ICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmlu
ZGV4IDFjY2M4YTEuLjE5NzFlMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC00OTEsNiArNDkxLDExIEBAIFBhc3NSZWZQ
dHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmFkb3B0RnJhbWUoRnJhbWUqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1
Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogewogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApp
bmRleCBiMzY0ODczLi43Y2IwYWE3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShXZWJDb3JlOjpGcmFtZSop
OwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4m
LCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihX
ZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cK
aW5kZXggMmFhNGFkNy4uOWNkZmRhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjphZG9wdEZyYW1lKToK
KyAgICAgICAgQWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRo
b2QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6
CisKIDIwMDktMTItMDYgIE1heGltZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAppbmRleCAzYTg0YzRm
Li40NDY4MTBkIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCkBAIC03NDUsNiArNzQ1LDExIEBAIFBhc3NSZWZQdHI8
RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRI
YWlrdTo6YWRvcHRGcmFtZShGcmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
T2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6b2JqZWN0Q29udGVudFR5
cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCAyZmZkZThmLi45MjhmODliIDEwMDY0NAotLS0gYS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCisrKyBi
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKQEAg
LTIyMCw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbG93c1Njcm9sbGluZywg
aW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGFkb3B0RnJhbWUoRnJhbWUqKTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtV
UkwmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxv
YWRNYW51YWxseSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IGVjNzdlNzcuLjNlYjdhZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZy
YW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0
aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgQWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRo
b2QuCisKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKwogMjAx
MC0wMi0wOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyNzc0NzgzLi43ODBjYTVhIDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
ODgsNiArMTg4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1h
cmdpbkhlaWdodCk7CisgICAgdmlydHVhbCB2b2lkIGFkb3B0RnJhbWUoV2ViQ29yZTo6RnJhbWUq
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpTdHJpbmc+JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IGVhZWM4MDcuLjVjNThiMmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM1Miw2ICsxMzUyLDEwIEBAIFBhc3NS
ZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFkb3B0RnJhbWUoRnJhbWUqKQoreworfQorCiBPYmplY3RDb250ZW50VHlwZSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAppbmRleCA0YzFmMzE4Li4xZjA1Y2U1IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC03ODMsNiArNzgzLDI1IEBAIFFXZWJQYWdlICpRV2ViRnJhbWU6OnBhZ2UoKSBjb25zdAog
fQogCiAvKiEKKyAgVGhlIGZyYW1lIGlzIG1vdmVkIGJldHdlZW4gcGFnZXMgLSByZXBsYWNlIHRo
ZSBwYWdlLgorIAorICBcbm90ZSBUaGlzIGNhbiBub3QgYmUgZG9uZSBvbiBhIG1haW4gZnJhbWUg
b2YgdGhlIHBhZ2UuCisqLwordm9pZCBRV2ViRnJhbWU6OnNldFBhZ2UoUVdlYlBhZ2UqIG5ld1Bh
Z2UpCit7CisgICAgUV9BU1NFUlQoZC0+cGFnZSk7CisgICAgUV9BU1NFUlQobmV3UGFnZSk7Cisg
ICAgUV9BU1NFUlQocGFnZSgpLT5tYWluRnJhbWUoKSAhPSB0aGlzKTsKKyAgICBpZiAoZC0+cGFn
ZSAhPSBuZXdQYWdlKSB7CisgICAgICAgIGQtPnBhZ2UgPSBuZXdQYWdlOworICAgICAgICAvLyBU
aGUgUVdlYkZyYW1lIGlzIGNyZWF0ZWQgYXMgYSBjaGlsZCBvZiBRV2ViUGFnZS4gVGhhdCBhZGRz
IGl0IHRvIFFPYmplY3QncyBpbnRlcm5hbCBjaGlsZHJlbnQgbGlzdCBhbmQKKyAgICAgICAgLy8g
ZW5zdXJlcyBpdCB3aWxsIGJlIGRlbGV0ZWQgd2hlbiBwYXJlbnQgUVdlYlBhZ2UgaXMgZGVsZXRl
ZC4gUmUtcGFyZW50LgorICAgICAgICBzZXRQYXJlbnQobmV3UGFnZSk7CisgICAgfQorfQorCisK
Ky8qIQogICBMb2FkcyBcYSB1cmwgaW50byB0aGlzIGZyYW1lLgogCiAgIFxub3RlIFRoZSB2aWV3
IHJlbWFpbnMgdGhlIHNhbWUgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2ZWQgdG8gZGlzcGxh
eSB0aGUgbmV3IFxhIHVybC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IDI1ZjZjOWIuLmJlNTc1NjkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWUuaApAQCAtMTE5LDYgKzExOSw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBRV2Vi
UGFnZSAqcGFnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGFnZShRV2ViUGFnZSogbmV3UGFnZSk7
CiAKICAgICB2b2lkIGxvYWQoY29uc3QgUVVybCAmdXJsKTsKICAgICB2b2lkIGxvYWQoY29uc3Qg
UU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMGVmNDE1Yi4uODUxYjI0OCAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBh
IGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVw
ZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAg
ICAgIChRV2ViRnJhbWU6OnNldFBhZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmZyYW1l
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjphZG9wdEZyYW1lKToKKyAgICAg
ICAgVGhlIFFXZWJGcmFtZSBjYWNoZXMgYSBRV2ViUGFnZSB3aGljaCBzaG91bGQgYmUgcmVwbGFj
ZWQgd2hlbiBGcmFtZSBpcyByZS1wYXJlbnRlZC4KKyAgICAgICAgQWxzbywgdGhlIFFXZWJGcmFt
ZSBpcyBhIGNoaWxkIChpbiBRVCB0ZXJtcykgb2YgUVdlYlBhZ2UgLSBzbyB1cGRhdGUgdGhhdCBy
ZWxhdGlvbnNoaXAgYXMgd2VsbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMi0xMCAgRGllZ28gR29uemFsZXogIDxkaWVnby5nb256
YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUg
Q2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCmluZGV4IDc2MGUzN2UuLjkxMGRmYjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEwNjAsNiArMTA2MCwx
NSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUu
cmVsZWFzZSgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmFkb3B0RnJhbWUoRnJh
bWUqIGZyYW1lKQoreworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKFFXZWJGcmFtZSogd2ViRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUp
KQorICAgICAgICB3ZWJGcmFtZS0+c2V0UGFnZShtX3dlYkZyYW1lLT5wYWdlKCkpOworfQorCiBP
YmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgX21pbWVUeXBlKQogewogLy8gICAgcURlYnVn
KCk8PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1l
ID0gIjw8X21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgKaW5kZXggMzJiOWNhYS4uYzMyOTZiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0xOTQsNiArMTk0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZG9w
dEZyYW1lKEZyYW1lKik7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0
ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lk
Z2V0KiBwbHVnaW5XaWRnZXQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGZlYjIyYTEuLjFjOTgwNTMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBh
IGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVw
ZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkb3B0RnJh
bWUpOgorICAgICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5ldyB2aXJ0dWFs
IG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisKIDIwMTAtMDItMTAgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNp
YUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBiOTI3YzcyLi4yN2NmODExIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzM3LDYgKzcz
NywxMSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZSgpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKEZyYW1lKikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGYxZmI1ZjcuLjQ1YWU4NjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdl
YkNvcmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Nj
cm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRvcHRGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYs
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCAwNWVmYmQyLi5hOTVmZWZiIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAg
RG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBp
cyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6YWRvcHRGcmFtZSk6CisgICAgICAgIEFk
ZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTAtMDItMDQg
IEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQnVp
bGQgZml4IGFmdGVyIGNoYW5nZXMgaW4gcjU0MzQ1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCA1YmI0ZGMxLi42OTc5ZThjIDEwMDY0
NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAor
KysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAt
ODQxLDYgKzg0MSwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFd4Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBjaGls
ZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjphZG9wdEZy
YW1lKEZyYW1lKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBPYmplY3RDb250ZW50
VHlwZSBGcmFtZUxvYWRlckNsaWVudFd4OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBi
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRleCAwYzI5
OTQxLi5mODE4NzZkIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5oCkBAIC0yMDEsNiArMjAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVp
Z2h0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkb3B0RnJhbWUoRnJhbWUqKTsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBI
VE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2lu
V2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVM
b2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwo=
</data>
<flag name="commit-queue"
          id="31245"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48547</attachid>
            <date>2010-02-10 22:20:57 -0800</date>
            <delta_ts>2010-02-17 14:23:07 -0800</delta_ts>
            <desc>Same patch, with style fix.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>34226</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li4zMWUyMDAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp1cGRhdGVPbnJlcGFyZW50aW5nKG5ld1BhcmVudEZyYW1lKTsKKworICAgICAgICAo
V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVPd25lckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudDo6c2V0TmFtZSk6CisgICAgICAgIE1ha2UgdGhpcyBhIHZpcnR1YWwgZnVuY3Rpb24sIHRv
IGJlIGFibGUgdG8gcmVhY2ggaXQgdmlhIEZyYW1lOjptX293bmVyRWxlbWVudC4KKworICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmFkb3B0RnJhbWUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICBBZGQgYSBuZXcgbWV0aG9kLCBhZG9wdEZyYW1lKCkuIEl0IGNvbXBs
aW1lbnRzIGNyZWF0ZUZyYW1lKCkgaW4gdGhhdAorICAgICAgICBhIGZyYW1lIHdoaWNoIHdhcyBy
ZS1wYXJlbnRlZCBpbiBET00gYW5kIHBvdGVudGlhbGx5IGNoYW5nZXMgUGFnZSwgc2hvdWxkCisg
ICAgICAgIG5vdGlmeSB0aGUgV2ViS2l0IGltcGxlbWVudGF0aW9uIGFib3V0IHBvdGVudGlhbCBv
d25lcnNoaXAgY2hhbmdlLgorICAgICAgICBNYW55IGVtYmVkZGVycyBhc3N1bWUgdGhhdCBQYWdl
IG93bnMgYWxsIHRoZSBGcmFtZXMsIG9yIGF0IGxlYXN0CisgICAgICAgIGFsbCBGcmFtZXMgYXJl
IGRlc3Ryb3llZCBiZWZvcmUgJ3RoZWlyJyBQYWdlIGlzIGRlc3Ryb3llZC4gT2J2aW91c2x5LCBp
ZiBGcmFtZQorICAgICAgICBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gYW5vdGhlciBQYWdlLCB0aGUg
ZW1iZWRkZXJzIHNob3VsZCBiZSBub3RpZmllZC4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnVwZGF0ZU9uUmVwYXJlbnRpbmcpOgorICAgICAg
ICBBZGRlZCwgbWFrZXMgYWN0dWFsIGFkanVzdG1lbnRzIGZvciBGcmFtZSAtIHJlc2V0cyB0aGUg
UGFnZSwKKyAgICAgICAgdXBkYXRlcyB0aGUgZnJhbWUgdHJlZSBhbmQgZnJhbWUgbmFtZSwgY2Fs
bHMgdG8gRnJhbWVMb2FkZXJDbGllbnQKKyAgICAgICAgdG8gdXBkYXRlIGV4dGVybmFsIG9iamVj
dHMgYW5kIHJlY3Vyc2VzIGludG8gY2hpbGRyZW4uCisgICAgICAgIENhbiBvbmx5IGJlIHVzZWQg
b24gY2hpbGQgZnJhbWVzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDEwLTAyLTEw
ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAKaW5kZXggMzg5MDg1MC4uNWZkNmZkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgpAQCAtMTUwLDcg
KzE1MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFt
ZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIpOwogICAgIGlm
IChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTksMTEgQEAgdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlmIChGcmFtZSog
cGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2ZyYW1lTmFtZSA9
IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFtZSk7Ci0gICAg
Cit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKCkKK3sK
KyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiArMTcyLDE0IEBA
IHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2FsbGJhY2soTm9k
ZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5zZXROYW1l
QW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1cGRhdGVPblJl
cGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92YWxGcm9tVHJl
ZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisgICAgICAgIGZy
YW1lLT51cGRhdGVPblJlcGFyZW50aW5nKGRvY3VtZW50KCktPmZyYW1lKCkpOworfQorCiB2b2lk
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtMTc1LDYgKzE4
OCw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KCkK
ICAgICAvLyBPdGhld2lzZSwgYSBzeW5jaHJvbm91cyBsb2FkIHRoYXQgZXhlY3V0ZWQgSmF2YVNj
cmlwdCB3b3VsZCBzZWUgaW5jb3JyZWN0IAogICAgIC8vICgwKSB2YWx1ZXMgZm9yIHRoZSBmcmFt
ZSdzIHJlbmRlcmVyLWRlcGVuZGVudCBwcm9wZXJ0aWVzLCBsaWtlIHdpZHRoLgogICAgIG1fc2hv
dWxkT3BlblVSTEFmdGVyQXR0YWNoID0gdHJ1ZTsKKworICAgIGlmIChtX3JlbWFpbnNBbGl2ZU9u
UmVtb3ZhbEZyb21UcmVlKQorICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5nKCk7CiB9CiAKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li43NzE3ZGYwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNjQsOCArNjQsMTEgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TmFtZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsK
ICAgICB2b2lkIGNoZWNrQXR0YWNoZWRUaW1lckZpcmVkKFRpbWVyPEhUTUxGcmFtZUVsZW1lbnRC
YXNlPiopOworICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZygpOwogCiAgICAgYm9vbCB2aWV3
U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NvdXJjZTsgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggNGE1NmU0NS4uZGNjNDk2NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUmVtb3ZlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoKSB7fQogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzBiMDZkNS4u
YmFhOTYwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI5Niw2ICsyOTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKikgeyB9CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShGcmFt
ZSopIHsgcmV0dXJuOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29u
c3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7
IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRjMTIxZjQu
LjE1OGY2YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjE5LDYgKzIxOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYWRvcHRGcmFtZShGcmFtZSopID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IGUyZjQyMWIuLmE1YTBiZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTYyNyw2ICsxNjI3LDQ0IEBA
IHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQogICAgIG1fb3duZXJFbGVtZW50
ID0gMDsKIH0KIAorLy8gVGhlIGZyYW1lIGlzIG1vdmVkIGluIERPTSwgcG90ZW50aWFsbHkgdG8g
YW5vdGhlciBwYWdlLgordm9pZCBGcmFtZTo6dXBkYXRlT25SZXBhcmVudGluZyhGcmFtZSogbmV3
UGFyZW50KQoreworICAgIEFTU0VSVChtX293bmVyRWxlbWVudCk7CisgICAgLy8gU3dpdGNoIHBh
Z2UuCisgICAgUGFnZSogbmV3UGFnZSA9IG5ld1BhcmVudC0+cGFnZSgpOworICAgIGlmIChtX3Bh
Z2UgIT0gbmV3UGFnZSkgeworICAgICAgICBpZiAocGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZEZyYW1lKCkgPT0gdGhpcykKKyAgICAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCktPnNldEZvY3VzZWRGcmFtZSgwKTsKKworICAgICAgICBpZiAobV9wYWdlKQorICAgICAg
ICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisKKyAgICAgICAgbV9wYWdlID0g
bmV3UGFnZTsKKworICAgICAgICBpZiAobmV3UGFnZSkKKyAgICAgICAgICAgIG5ld1BhZ2UtPmlu
Y3JlbWVudEZyYW1lQ291bnQoKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRy
ZWUuCisgICAgRnJhbWUqIG9sZFBhcmVudCA9IHRyZWUoKS0+cGFyZW50KCk7CisgICAgaWYgKG9s
ZFBhcmVudCAhPSBuZXdQYXJlbnQpIHsKKyAgICAgICAgaWYgKG9sZFBhcmVudCkKKyAgICAgICAg
ICAgIG9sZFBhcmVudC0+dHJlZSgpLT5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgaWYgKG5l
d1BhcmVudCkgeworICAgICAgICAgICAgbmV3UGFyZW50LT50cmVlKCktPmFwcGVuZENoaWxkKHRo
aXMpOworICAgICAgICAgICAgbV9vd25lckVsZW1lbnQtPnNldE5hbWUoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIExldCBleHRlcm5hbCBjbGllbnRzIHVwZGF0ZSB0aGVtc2VsdmVzLgor
ICAgIG5ld1BhcmVudC0+bG9hZGVyKCktPmNsaWVudCgpLT5hZG9wdEZyYW1lKHRoaXMpOworCisg
ICAgLy8gRG8gdGhlIHNhbWUgZm9yIGFsbCB0aGUgY2hpbGRyZW4uCisgICAgZm9yIChGcmFtZSog
Y2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPnVwZGF0ZU9uUmVwYXJlbnRpbmcodGhp
cyk7Cit9CisKIFN0cmluZyBGcmFtZTo6ZG9jdW1lbnRUeXBlU3RyaW5nKCkgY29uc3QKIHsKICAg
ICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N0eXBlID0gZG9jdW1lbnQoKS0+ZG9jdHlwZSgpKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRl
eCAzM2JiNDM1Li40YjQ1Y2UwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICB2b2lkIGRldGFjaEZy
b21QYWdlKCk7CisgICAgICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZyhGcmFtZSogbmV3UGFy
ZW50KTsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQoKSBjb25z
dDsKIAogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDIxN2Zk
YTYuLjAzMjkzMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAyLTEwICBE
bWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlz
IG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKwor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRldGFjaGVkRnJvbVBhcmVudDMpOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmFkb3B0RnJhbWUpOgorICAgICAgICBTaW5j
ZSBDaHJvbWl1bSdzIFdlYkZyYW1lQ2xpZW50IGlzIGRlc3Ryb3llZCBvbmNlIGEgd2luZG93IGlz
IGNsb3NlZCwKKyAgICAgICAgaWYgRnJhbWUgbW92ZXMgYmV0d2VlbiBQYWdlcyB0aGUgY2xpZW50
IG9mIGNvcnJlc3BvbmRpbmcgV2ViRnJhbWUKKyAgICAgICAgc2hvdWxkIGJlIHJlcGxhY2VkIGFz
IHdlbGwuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAg
ICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNl
dENsaWVudCk6CisKIDIwMTAtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGI5ODQzMDguLjliYTAzM2YgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTIz
NSw3ICsyMzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGV0YWNoZWRGcm9tUGFy
ZW50MygpCiAgICAgCiAgICAgLy8gU3RvcCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIFdlYkZyYW1l
Q2xpZW50IGF0IHRoaXMgcG9pbnQgc2luY2Ugd2UgYXJlIG5vCiAgICAgLy8gbG9uZ2VyIGFzc29j
aWF0ZWQgd2l0aCB0aGUgUGFnZS4KLSAgICBtX3dlYkZyYW1lLT5kcm9wQ2xpZW50KCk7CisgICAg
bV93ZWJGcmFtZS0+c2V0Q2xpZW50KDApOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciBhc3NvY2lhdGluZyB0aGUgfGlkZW50aWZpZXJ8IHdpdGggYSBnaXZlbgpAQCAt
MTMzMiw2ICsxMzMyLDIzIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6Y3JlYXRlRnJhbWUoCiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNyZWF0ZUNoaWxkRnJhbWUo
ZnJhbWVSZXF1ZXN0LCBvd25lckVsZW1lbnQpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6YWRvcHRGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKGZyYW1lLT5vd25lckVsZW1lbnQoKSk7CisKKyAgICBp
ZiAoIW1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJGcmFt
ZUltcGwqIHdlYkZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKKyAg
ICBBU1NFUlQod2ViRnJhbWVJbXBsKTsKKworICAgIC8vIFJlcGxhY2UgdGhlIGNsaWVudCBzaW5j
ZSB0aGUgb2xkIGNsaWVudCBtYXkgZ28gYXdheSB3aXRoIHRoZSBtYWluIGZyYW1lLgorICAgIHdl
YkZyYW1lSW1wbC0+c2V0Q2xpZW50KG1fd2ViRnJhbWUtPmNsaWVudCgpKTsKK30KKwogUGFzc1Jl
ZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y3JlYXRlUGx1Z2luKAogICAgIGNv
bnN0IEludFNpemUmIHNpemUsIC8vIEZJWE1FOiBob3cgZG8gd2UgdXNlIHRoaXM/CiAgICAgSFRN
TFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaAppbmRleCA5MDE2MDBjLi4xMWI0NjAyIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE3NCw2ICsxNzQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAog
ICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywKICAgICAgICAgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbigKICAgICAgICAgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5k
ZXggY2NiYTZkNC4uNDdmNzNhYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0y
MjEsNyArMjIxLDcgQEAgcHVibGljOgogICAgIFdlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVu
ZXIqIGdldFBhc3N3b3JkTGlzdGVuZXIoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCopOwogCiAg
ICAgV2ViRnJhbWVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0g
ICAgdm9pZCBkcm9wQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICB2b2lkIHNldENsaWVu
dChXZWJGcmFtZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKICAgICBz
dGF0aWMgdm9pZCBzZWxlY3RXb3JkQXJvdW5kUG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqLCBXZWJD
b3JlOjpWaXNpYmxlUG9zaXRpb24pOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDdhNDQ4ODQuLmU0MjNhODQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwg
ZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
YWRvcHRGcmFtZSk6CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3
IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaDoKKwogMjAxMC0wMi0wOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdu
b21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDFjY2M4
YTEuLjE5NzFlMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCkBAIC00OTEsNiArNDkxLDExIEBAIFBhc3NSZWZQdHI8RnJhbWU+
IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmFkb3B0RnJhbWUoRnJhbWUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdl
dCogcGx1Z2luV2lkZ2V0KQogewogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiMzY0
ODczLi43Y2IwYWE3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgYWRvcHRGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBX
VEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9v
bCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpX
aWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggMmFh
NGFkNy4uOWNkZmRhMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRy
eSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92
ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjphZG9wdEZyYW1lKToKKyAgICAgICAg
QWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMDkt
MTItMDYgIE1heGltZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAppbmRleCAzYTg0YzRmLi40NDY4MTBk
IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50SGFpa3UuY3BwCkBAIC03NDUsNiArNzQ1LDExIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZy
YW1lTG9hZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6YWRv
cHRGcmFtZShGcmFtZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogT2JqZWN0Q29u
dGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuaAppbmRleCAyZmZkZThmLi45MjhmODliIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKQEAgLTIyMCw2ICsy
MjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
cmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkb3B0RnJh
bWUoRnJhbWUqKTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvYWRNYW51YWxs
eSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGVjNzdlNzcuLjNlYjdhZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
QWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKwogMjAxMC0wMi0wOSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCAyNzc0NzgzLi43ODBjYTVhIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xODgsNiArMTg4
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4g
Y3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCk7CisgICAgdmlydHVhbCB2b2lkIGFkb3B0RnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGVh
ZWM4MDcuLjVjNThiMmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM1Miw2ICsxMzUyLDEwIEBAIFBhc3NSZWZQdHI8RnJh
bWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmFkb3B0RnJhbWUoRnJhbWUqKQoreworfQorCiBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxv
YWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcAppbmRleCA0YzFmMzE4Li4xZjA1Y2U1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC03ODMs
NiArNzgzLDI1IEBAIFFXZWJQYWdlICpRV2ViRnJhbWU6OnBhZ2UoKSBjb25zdAogfQogCiAvKiEK
KyAgVGhlIGZyYW1lIGlzIG1vdmVkIGJldHdlZW4gcGFnZXMgLSByZXBsYWNlIHRoZSBwYWdlLgor
IAorICBcbm90ZSBUaGlzIGNhbiBub3QgYmUgZG9uZSBvbiBhIG1haW4gZnJhbWUgb2YgdGhlIHBh
Z2UuCisqLwordm9pZCBRV2ViRnJhbWU6OnNldFBhZ2UoUVdlYlBhZ2UqIG5ld1BhZ2UpCit7Cisg
ICAgUV9BU1NFUlQoZC0+cGFnZSk7CisgICAgUV9BU1NFUlQobmV3UGFnZSk7CisgICAgUV9BU1NF
UlQocGFnZSgpLT5tYWluRnJhbWUoKSAhPSB0aGlzKTsKKyAgICBpZiAoZC0+cGFnZSAhPSBuZXdQ
YWdlKSB7CisgICAgICAgIGQtPnBhZ2UgPSBuZXdQYWdlOworICAgICAgICAvLyBUaGUgUVdlYkZy
YW1lIGlzIGNyZWF0ZWQgYXMgYSBjaGlsZCBvZiBRV2ViUGFnZS4gVGhhdCBhZGRzIGl0IHRvIFFP
YmplY3QncyBpbnRlcm5hbCBjaGlsZHJlbnQgbGlzdCBhbmQKKyAgICAgICAgLy8gZW5zdXJlcyBp
dCB3aWxsIGJlIGRlbGV0ZWQgd2hlbiBwYXJlbnQgUVdlYlBhZ2UgaXMgZGVsZXRlZC4gUmUtcGFy
ZW50LgorICAgICAgICBzZXRQYXJlbnQobmV3UGFnZSk7CisgICAgfQorfQorCisKKy8qIQogICBM
b2FkcyBcYSB1cmwgaW50byB0aGlzIGZyYW1lLgogCiAgIFxub3RlIFRoZSB2aWV3IHJlbWFpbnMg
dGhlIHNhbWUgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2ZWQgdG8gZGlzcGxheSB0aGUgbmV3
IFxhIHVybC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmggYi9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IDI1ZjZjOWIuLmJlNTc1NjkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaApA
QCAtMTE5LDYgKzExOSw3IEBAIHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICBRV2ViUGFnZSAqcGFn
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0UGFnZShRV2ViUGFnZSogbmV3UGFnZSk7CiAKICAgICB2
b2lkIGxvYWQoY29uc3QgUVVybCAmdXJsKTsKICAgICB2b2lkIGxvYWQoY29uc3QgUU5ldHdvcmtS
ZXF1ZXN0ICZyZXF1ZXN0LApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktp
dC9xdC9DaGFuZ2VMb2cKaW5kZXggMGVmNDE1Yi4uODUxYjI0OCAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZy
YW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0
aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNDM4MgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2Vi
RnJhbWU6OnNldFBhZ2UpOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjphZG9wdEZyYW1lKToKKyAgICAgICAgVGhlIFFX
ZWJGcmFtZSBjYWNoZXMgYSBRV2ViUGFnZSB3aGljaCBzaG91bGQgYmUgcmVwbGFjZWQgd2hlbiBG
cmFtZSBpcyByZS1wYXJlbnRlZC4KKyAgICAgICAgQWxzbywgdGhlIFFXZWJGcmFtZSBpcyBhIGNo
aWxkIChpbiBRVCB0ZXJtcykgb2YgUVdlYlBhZ2UgLSBzbyB1cGRhdGUgdGhhdCByZWxhdGlvbnNo
aXAgYXMgd2VsbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaDoKKwogMjAxMC0wMi0xMCAgRGllZ28gR29uemFsZXogIDxkaWVnby5nb256YWxlekBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IDc2MGUzN2UuLjkxMGRmYjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEwNjAsNiArMTA2MCwxNSBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgp
OwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmFkb3B0RnJhbWUoRnJhbWUqIGZyYW1l
KQoreworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFFX
ZWJGcmFtZSogd2ViRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQoZnJhbWUpKQorICAgICAg
ICB3ZWJGcmFtZS0+c2V0UGFnZShtX3dlYkZyYW1lLT5wYWdlKCkpOworfQorCiBPYmplY3RDb250
ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgX21pbWVUeXBlKQogewogLy8gICAgcURlYnVnKCk8PCIgKysr
KysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1lID0gIjw8X21p
bWVUeXBlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgKaW5kZXggMzJiOWNhYS4uYzMyOTZiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0xOTQsNiArMTk0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRo
LCBpbnQgbWFyZ2luSGVpZ2h0KSA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZG9wdEZyYW1lKEZy
YW1lKik7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVn
aW5XaWRnZXQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IGZlYjIyYTEuLjFjOTgwNTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZy
YW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0
aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFkb3B0RnJhbWUpOgorICAg
ICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5ldyB2aXJ0dWFsIG1ldGhvZC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDItMTAgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCBiOTI3YzcyLi4yN2NmODExIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzM3LDYgKzczNywxMSBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKEZyYW1lKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGYxZmI1
ZjcuLjQ1YWU4NjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywg
aW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRv
cHRGcmFtZShXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAw
NWVmYmQyLi5hOTVmZWZiIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5IFRp
dG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBi
ZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6YWRvcHRGcmFtZSk6CisgICAgICAgIEFkZGVkIGVtcHR5
IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTAtMDItMDQgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGFm
dGVyIGNoYW5nZXMgaW4gcjU0MzQ1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCA1YmI0ZGMxLi42OTc5ZThjIDEwMDY0NAotLS0gYS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAorKysgYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAtODQxLDYgKzg0
MSwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVGcmFt
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBjaGlsZEZyYW1lLnJl
bGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjphZG9wdEZyYW1lKEZyYW1l
KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBPYmplY3RDb250ZW50VHlwZSBGcmFt
ZUxvYWRlckNsaWVudFd4OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRleCAwYzI5OTQxLi5mODE4
NzZkIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
CkBAIC0yMDEsNiArMjAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFkb3B0RnJhbWUoRnJhbWUqKTsKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0lu
RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KTsK
ICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48600</attachid>
            <date>2010-02-11 18:10:48 -0800</date>
            <delta_ts>2010-02-11 18:56:26 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>36402</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li5iNDg4ZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KC4uLik7CisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldE5hbWUpOgorICAgICAgICBNYWtlIHRoaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLCB0
byBiZSBhYmxlIHRvIHJlYWNoIGl0IHZpYSBGcmFtZTo6bV9vd25lckVsZW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCwgZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudCgpLgorICAgICAgICBJdCBjb21wbGltZW50cyBjcmVhdGVGcmFtZSgpIGlu
IHRoYXQgYSBmcmFtZSB3aGljaCB3YXMgcmUtcGFyZW50ZWQKKyAgICAgICAgaW4gRE9NIGFuZCBw
b3RlbnRpYWxseSBjaGFuZ2VzIFBhZ2UsIHNob3VsZCBub3RpZnkgdGhlIFdlYktpdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiBhYm91dCBwb3RlbnRpYWwgb3duZXJzaGlwIGNoYW5nZS4KKyAgICAg
ICAgTWFueSBlbWJlZGRlcnMgYXNzdW1lIHRoYXQgUGFnZSBvd25zIGFsbCB0aGUgRnJhbWVzLCBv
ciBhdCBsZWFzdAorICAgICAgICBhbGwgRnJhbWVzIGFyZSBkZXN0cm95ZWQgYmVmb3JlICd0aGVp
cicgUGFnZSBpcyBkZXN0cm95ZWQuIE9idmlvdXNseSwgaWYgRnJhbWUKKyAgICAgICAgY2FuIGJl
IHRyYW5zZmVycmVkIHRvIGFub3RoZXIgUGFnZSwgdGhlIGVtYmVkZGVycyBzaG91bGQgYmUgbm90
aWZpZWQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQsIG1h
a2VzIGFjdHVhbCBhZGp1c3RtZW50cyBmb3IgRnJhbWUgLSByZXNldHMgdGhlIFBhZ2UsCisgICAg
ICAgIHVwZGF0ZXMgdGhlIGZyYW1lIHRyZWUgYW5kIGZyYW1lIG5hbWUsIGNhbGxzIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIHRvIHVwZGF0ZSBleHRlcm5hbCBvYmplY3RzIGFuZCByZWN1
cnNlcyBpbnRvIGNoaWxkcmVuLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIG9uIGNoaWxkIGZy
YW1lcy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMC0wMi0xMCAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
IGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4
IDM4OTA4NTAuLjUyZjc5NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwogICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlm
IChGcmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2Zy
YW1lTmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFt
ZSk7Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVu
VVJMKCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiAr
MTcxLDE0IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2Fs
bGJhY2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4p
LT5zZXROYW1lQW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1
cGRhdGVPblJlcGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92
YWxGcm9tVHJlZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisg
ICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KGRvY3VtZW50KCkp
OworfQorCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgp
CiB7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpA
QCAtMTc1LDYgKzE4Nyw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50
b0RvY3VtZW50KCkKICAgICAvLyBPdGhld2lzZSwgYSBzeW5jaHJvbm91cyBsb2FkIHRoYXQgZXhl
Y3V0ZWQgSmF2YVNjcmlwdCB3b3VsZCBzZWUgaW5jb3JyZWN0IAogICAgIC8vICgwKSB2YWx1ZXMg
Zm9yIHRoZSBmcmFtZSdzIHJlbmRlcmVyLWRlcGVuZGVudCBwcm9wZXJ0aWVzLCBsaWtlIHdpZHRo
LgogICAgIG1fc2hvdWxkT3BlblVSTEFmdGVyQXR0YWNoID0gdHJ1ZTsKKworICAgIGlmIChtX3Jl
bWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlKQorICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5n
KCk7CiB9CiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li43NzE3ZGYwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNjQsOCArNjQsMTEgQEAgcHJpdmF0
ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHdp
bGxSZW1vdmUoKTsKICAgICB2b2lkIGNoZWNrQXR0YWNoZWRUaW1lckZpcmVkKFRpbWVyPEhUTUxG
cmFtZUVsZW1lbnRCYXNlPiopOworICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZygpOwogCiAg
ICAgYm9vbCB2aWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NvdXJjZTsgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggNGE1NmU0NS4uZGNjNDk2NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKIAogICAgIHZp
cnR1YWwgdm9pZCB3aWxsUmVtb3ZlKCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5hbWUoKSB7fQog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5k
ZXggYzBiMDZkNS4uYTM4MjMwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI5Niw2ICsyOTYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKikgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
VHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCopIHsgcmV0dXJuOyB9CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IHJldHVybiAwOyB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRjMTIxZjQuLjlmZmEzY2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgQ2FjaGVkRnJhbWU7CiAgICAgY2xhc3MgQ29sb3I7CiAgICAgY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOworICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIERvY3VtZW50
TG9hZGVyOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRm9ybVN0YXRlOwpAQCAtMjE5
LDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVu
dCopID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGUyZjQyMWIuLjk2
YjcyYzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMTYyNyw2ICsxNjI3LDU1IEBAIHZvaWQgRnJhbWU6OmRpc2Nvbm5l
Y3RPd25lckVsZW1lbnQoKQogICAgIG1fb3duZXJFbGVtZW50ID0gMDsKIH0KIAorLy8gVGhlIGZy
YW1lIGlzIG1vdmVkIGluIERPTSwgcG90ZW50aWFsbHkgdG8gYW5vdGhlciBwYWdlLgordm9pZCBG
cmFtZTo6dHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCogbmV3RG9jdW1l
bnQpCit7CisgICAgQVNTRVJUKG5ld0RvY3VtZW50KTsKKyAgICBBU1NFUlQobV9vd25lckVsZW1l
bnQpOworICAgIEZyYW1lKiBuZXdQYXJlbnQgPSBuZXdEb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBi
b29sIGRpZFRyYW5zZmVyID0gZmFsc2U7CisKKyAgICAvLyBTd2l0Y2ggcGFnZS4KKyAgICBQYWdl
KiBuZXdQYWdlID0gbmV3UGFyZW50ID8gbmV3UGFyZW50LT5wYWdlKCkgOiAwOworICAgIGlmICht
X3BhZ2UgIT0gbmV3UGFnZSkgeworICAgICAgICBpZiAocGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZEZyYW1lKCkgPT0gdGhpcykKKyAgICAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZSgwKTsKKworICAgICAgICBpZiAobV9wYWdlKQorICAg
ICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7CisKKyAgICAgICAgbV9wYWdl
ID0gbmV3UGFnZTsKKworICAgICAgICBpZiAobmV3UGFnZSkKKyAgICAgICAgICAgIG5ld1BhZ2Ut
PmluY3JlbWVudEZyYW1lQ291bnQoKTsKKworICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7Cisg
ICAgfQorCisgICAgLy8gVXBkYXRlIHRoZSBmcmFtZSB0cmVlLgorICAgIEZyYW1lKiBvbGRQYXJl
bnQgPSB0cmVlKCktPnBhcmVudCgpOworICAgIGlmIChvbGRQYXJlbnQgIT0gbmV3UGFyZW50KSB7
CisgICAgICAgIGlmIChvbGRQYXJlbnQpCisgICAgICAgICAgICBvbGRQYXJlbnQtPnRyZWUoKS0+
cmVtb3ZlQ2hpbGQodGhpcyk7CisgICAgICAgIGlmIChuZXdQYXJlbnQpIHsKKyAgICAgICAgICAg
IG5ld1BhcmVudC0+dHJlZSgpLT5hcHBlbmRDaGlsZCh0aGlzKTsKKyAgICAgICAgICAgIG1fb3du
ZXJFbGVtZW50LT5zZXROYW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgZGlkVHJhbnNmZXIgPSB0
cnVlOworICAgIH0KKworICAgIC8vIEF2b2lkIHVubmVjZXNzYXJ5IGNhbGxzIHRvIGNsaWVudCBh
bmQgZnJhbWUgc3VidHJlZSBpZiB0aGUgZnJhbWUgZW5kZWQKKyAgICAvLyB1cCBvbiB0aGUgc2Ft
ZSBwYWdlIGFuZCB1bmRlciB0aGUgc2FtZSBwYXJlbnQgZnJhbWUuCisgICAgaWYgKGRpZFRyYW5z
ZmVyKSB7CisgICAgICAgIC8vIExldCBleHRlcm5hbCBjbGllbnRzIHVwZGF0ZSB0aGVtc2VsdmVz
LgorICAgICAgICBsb2FkZXIoKS0+Y2xpZW50KCktPmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3
RG9jdW1lbnQobmV3RG9jdW1lbnQpOworICAgIAorICAgICAgICAvLyBEbyB0aGUgc2FtZSBmb3Ig
YWxsIHRoZSBjaGlsZHJlbi4KKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgICAgIGNoaWxkLT50cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KGRvY3Vt
ZW50KCkpOworICAgIH0KK30KKwogU3RyaW5nIEZyYW1lOjpkb2N1bWVudFR5cGVTdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChEb2N1bWVudFR5cGUqIGRvY3R5cGUgPSBkb2N1bWVudCgpLT5kb2N0
eXBlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCmluZGV4IDMzYmI0MzUuLmNlN2E0NDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03Niw2ICs3Niw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgZGV0YWNoRnJvbVBhZ2UoKTsKKyAgICAgICAgdm9pZCB0cmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KERvY3VtZW50Kik7CisKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDIxN2ZkYTYuLmU2YzQwM2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZl
IGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMg
b24gdGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRldGFjaGVkRnJvbVBh
cmVudDMpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFRyYW5z
ZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICBTaW5jZSBDaHJvbWl1bSdzIFdl
YkZyYW1lQ2xpZW50IGlzIGRlc3Ryb3llZCBvbmNlIGEgd2luZG93IGlzIGNsb3NlZCwKKyAgICAg
ICAgaWYgRnJhbWUgbW92ZXMgYmV0d2VlbiBQYWdlcywgdGhlIGNsaWVudCBvZiBjb3JyZXNwb25k
aW5nIFdlYkZyYW1lCisgICAgICAgIHNob3VsZCBiZSByZXBsYWNlZCBhcyB3ZWxsLgorCisgICAg
ICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRDbGllbnQpOgorCiAy
MDEwLTAyLTEwICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaAppbmRleCA0MDc4MTUxLi43MjM2MTNhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCkBAIC0xOTcsNiArMTk3LDkgQEAgcHVibGljOgogICAgIC8vIFdBUk5JTkc6
IFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgdmVyeSBmcmVxdWVudGx5LgogICAgIHZpcnR1YWwg
dm9pZCBkaWRVcGRhdGVDdXJyZW50SGlzdG9yeUl0ZW0oV2ViRnJhbWUqKSB7IH0KIAorICAgIC8v
IFRoZSBjaGlsZCBmcmFtZSB3YXMgdHJhbnNmZXJyZWQgdG8gYSBuZXcgcGFnZSwgZHVlIHRvIERP
TSBvcGVyYXRpb24uCisgICAgLy8gSXQncyBwYXJlbnQgZnJhbWUsIGRvY3VtZW50IGFuZCBjb250
YWluaW5nIHZpZXcgaGFzIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hp
bGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViRnJhbWUqKSB7IH0KIAogICAgIC8vIExvdy1sZXZlbCBy
ZXNvdXJjZSBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5k
ZXggYjk4NDMwOC4uYzFlMTNkNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRJbXBsOjpkZXRhY2hlZEZyb21QYXJlbnQzKCkKICAgICAKICAgICAvLyBTdG9wIGNvbW11bmlj
YXRpbmcgd2l0aCB0aGUgV2ViRnJhbWVDbGllbnQgYXQgdGhpcyBwb2ludCBzaW5jZSB3ZSBhcmUg
bm8KICAgICAvLyBsb25nZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBQYWdlLgotICAgIG1fd2ViRnJh
bWUtPmRyb3BDbGllbnQoKTsKKyAgICBtX3dlYkZyYW1lLT5zZXRDbGllbnQoMCk7CiB9CiAKIC8v
IFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFzc29jaWF0aW5nIHRoZSB8aWRlbnRp
Zmllcnwgd2l0aCBhIGdpdmVuCkBAIC0xMzMyLDYgKzEzMzIsMjAgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVGcmFtZSgKICAgICByZXR1cm4gbV93ZWJG
cmFtZS0+Y3JlYXRlQ2hpbGRGcmFtZShmcmFtZVJlcXVlc3QsIG93bmVyRWxlbWVudCk7CiB9CiAK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQobV93ZWJGcmFtZS0+ZnJh
bWUoKS0+b3duZXJFbGVtZW50KCkpOworCisgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZU5ld1Bh
cmVudCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBp
ZiAoIXdlYkZyYW1lTmV3UGFyZW50IHx8ICF3ZWJGcmFtZU5ld1BhcmVudC0+Y2xpZW50KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFJlcGxhY2UgdGhlIGNsaWVudCBzaW5jZSB0aGUgb2xk
IGNsaWVudCBtYXkgYmUgZGVzdHJveWVkIHdoZW4gdGhlCisgICAgLy8gcHJldmlvdXMgcGFnZSBp
cyBjbG9zZWQuCisgICAgbV93ZWJGcmFtZS0+c2V0Q2xpZW50KHdlYkZyYW1lTmV3UGFyZW50LT5j
bGllbnQoKSk7CisgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZFRyYW5zZmVyQ2hpbGRGcmFt
ZVRvTmV3RG9jdW1lbnQod2ViRnJhbWVOZXdQYXJlbnQtPmRvY3VtZW50KCkpOworfQorCiBQYXNz
UmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVQbHVnaW4oCiAgICAg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgLy8gRklYTUU6IGhvdyBkbyB3ZSB1c2UgdGhpcz8KICAgICBI
VE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oCmluZGV4IDkwMTYwMGMuLjhjYTg3ZDggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTc0LDYgKzE3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
CiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Ny
b2xsaW5nLAogICAgICAgICBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6
OkRvY3VtZW50Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKAogICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwKICAgICAgICAgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAppbmRleCBjY2JhNmQ0Li40N2Y3M2FhIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAg
V2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0ZW5lciogZ2V0UGFzc3dvcmRMaXN0ZW5lcihXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50Kik7CiAKICAgICBXZWJGcmFtZUNsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lkIGRyb3BDbGllbnQoKSB7IG1fY2xp
ZW50ID0gMDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAgIHN0YXRpYyB2b2lkIHNlbGVjdFdvcmRBcm91bmRQ
b3NpdGlvbihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbik7CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggN2E0NDg4NC4uMTQyM2Y5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1p
dHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBt
b3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0Rv
Y3VtZW50KToKKyAgICAgICAgQWRkZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmly
dHVhbCBtZXRob2QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oOgorCiAyMDEwLTAyLTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggMWNjYzhhMS4u
MWE1ZGIyZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKQEAgLTQ5MSw2ICs0OTEsMTAgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JgogICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCopCit7
Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdl
dCogcGx1Z2luV2lkZ2V0KQogewogICAgIEFTU0VSVCghbV9wbHVnaW5WaWV3KTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBiMzY0
ODczLi4wYzBjYzk0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChX
ZWJDb3JlOjpEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+Jiwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktp
dC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggMmFhNGFkNy4uOTUyMmZjZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBh
IGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVw
ZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhh
aWt1OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQg
ZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMDktMTItMDYg
IE1heGltZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAppbmRleCAzYTg0YzRmLi42MmFlNmM4IDEwMDY0
NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlr
dS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UuY3BwCkBAIC03NDUsNiArNzQ1LDEwIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9h
ZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCopCit7Cit9CisKIE9iamVjdENvbnRl
bnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEhhaWt1LmgKaW5kZXggMmZmZGU4Zi4uZDI2NmViMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCkBAIC0yMjAsNiArMjIw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBLVVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBsb2FkTWFudWFsbHkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlYzc3ZTc3Li45MzQwYTk0IDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0
aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEg
bmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
VHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisKIDIwMTAtMDItMDkgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggMjc3NDc4My4uYTc5YmRkNyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg4LDYgKzE4OCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6
OkRvY3VtZW50Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5n
PiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdp
bldpZGdldCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQppbmRleCBlYWVjODA3Li5lNTgyNzQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEzNTIsNiArMTM1Miwx
MCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiAwOwogfQogCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERv
Y3VtZW50KikKK3sKK30KKwogT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQXBpL3F3ZWJmcmFtZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRleCAy
NWY2YzliLi4yZWM2ZjY0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKQEAgLTIxNyw2ICsyMTcsOCBAQCBRX1NJR05B
TFM6CiAgICAgdm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGJvb2wg
b2spOwogCisgICAgdm9pZCB3ZWJQYWdlQ2hhbmdlZCgpOworCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBRV2ViUGFnZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
ZnJhbWVfcC5oCmluZGV4IGVlOTc4YmUuLjc4ZmRhY2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKQEAgLTcz
LDYgKzczLDcgQEAgcHVibGljOgogICAgICAgICAsIG1hcmdpbkhlaWdodCgtMSkKICAgICAgICAg
e30KICAgICB2b2lkIGluaXQoUVdlYkZyYW1lKiBxZnJhbWUsIFFXZWJGcmFtZURhdGEqIGZyYW1l
RGF0YSk7CisgICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKiBuZXdQYWdlKSB7IHBhZ2UgPSBuZXdQ
YWdlOyB9CiAKICAgICBpbmxpbmUgUVdlYkZyYW1lICpwYXJlbnRGcmFtZSgpIHsgcmV0dXJuIHFv
YmplY3RfY2FzdDxRV2ViRnJhbWUqPihxLT5wYXJlbnQoKSk7IH0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMGVmNDE1Yi4uNDY3
ZmYwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdl
cywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogQXBpL3F3ZWJm
cmFtZV9wLmg6CisgICAgICAgIChRV2ViRnJhbWVQcml2YXRlOjpzZXRQYWdlKTogQWRkZWQuCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05l
d0RvY3VtZW50KToKKyAgICAgICAgVGhlIFFXZWJGcmFtZSBjYWNoZXMgYSBRV2ViUGFnZSB3aGlj
aCBzaG91bGQgYmUgcmVwbGFjZWQgd2hlbiBGcmFtZSBpcyByZS1wYXJlbnRlZC4KKyAgICAgICAg
QWxzbywgdGhlIFFXZWJGcmFtZSBpcyBhIGNoaWxkIChpbiBRVCB0ZXJtcykgb2YgUVdlYlBhZ2Ug
LSBzbyB1cGRhdGUgdGhhdCByZWxhdGlvbnNoaXAgYXMgd2VsbC4KKyAgICAgICAgRW1pdCBhIHNp
Z25hbCB0aGF0IFFXZWJGcmFtZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBRV2ViUGFnZS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMi0x
MCAgRGllZ28gR29uemFsZXogIDxkaWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDc2MGUzN2Uu
Ljc4ZTYxOTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dFF0LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBA
IC0xMDYwLDYgKzEwNjEsMzIgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRR
dDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4g
ZnJhbWVEYXRhLmZyYW1lLnJlbGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
K3sKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKFFXZWJGcmFtZSogd2ViRnJhbWVOZXdQYXJlbnQgPSBRV2ViRnJhbWVQcml2YXRl
OjpraXQoZG9jdW1lbnQtPmZyYW1lKCkpKSB7CisgICAgICAgIFFXZWJQYWdlKiBvbGRQYWdlID0g
bV93ZWJGcmFtZS0+cGFnZSgpOworICAgICAgICBRV2ViUGFnZSogbmV3UGFnZSA9IHdlYkZyYW1l
TmV3UGFyZW50LT5wYWdlKCk7CisKKyAgICAgICAgQVNTRVJUKG9sZFBhZ2UgJiYgbmV3UGFnZSk7
CisgICAgICAgIEFTU0VSVChvbGRQYWdlLT5tYWluRnJhbWUoKSAhPSBtX3dlYkZyYW1lKTsKKwor
ICAgICAgICBpZiAob2xkUGFnZSAhPSBuZXdQYWdlKSB7CisgICAgICAgICAgICBtX3dlYkZyYW1l
LT5kLT5zZXRQYWdlKG5ld1BhZ2UpOworICAgICAgICAgICAgLy8gVGhlIFFXZWJGcmFtZSBpcyBj
cmVhdGVkIGFzIGEgY2hpbGQgb2YgUVdlYlBhZ2UuIFRoYXQgYWRkcyBpdCB0byBRT2JqZWN0J3Mg
aW50ZXJuYWwgY2hpbGRyZW4gbGlzdCBhbmQKKyAgICAgICAgICAgIC8vIGVuc3VyZXMgaXQgd2ls
bCBiZSBkZWxldGVkIHdoZW4gcGFyZW50IFFXZWJQYWdlIGlzIGRlbGV0ZWQuIFJlLXBhcmVudC4K
KyAgICAgICAgICAgIG1fd2ViRnJhbWUtPnNldFBhcmVudChuZXdQYWdlKTsKKyAgICAgICAgICAg
IGVtaXQgbV9lYkZyYW1lLT53ZWJQYWdlQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorfQor
CiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgX21pbWVUeXBlKQogewogLy8gICAgcURl
YnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBt
aW1lID0gIjw8X21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgKaW5kZXggMzJiOWNhYS4uZWNkZjQ2MSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCkBAIC0xOTQsNiArMTk0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4g
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3VtZW50Kik7CiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IGZlYjIyYTEuLjlhNjA3MDggMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRy
eSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92
ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQp
OgorICAgICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5ldyB2aXJ0dWFsIG1l
dGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisKIDIwMTAtMDItMTAgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBv
cGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCBiOTI3YzcyLi5iOTQ3NDYyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNzM3LDYgKzczNywx
MCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVU
b05ld0RvY3VtZW50KERvY3VtZW50KikKK3sKK30KKwogUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlcikKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBmMWZiNWY3Li4xMWFhNGJiIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBib29s
IGxvYWRNYW51YWxseSk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdl
YkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0No
YW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMDVlZmJkMi4uYzEwNmNhNyAxMDA2
NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3Rp
bGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
V3g6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICBBZGRlZCBl
bXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5ldyB2aXJ0dWFsIG1ldGhvZC4KKworICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oOgorCiAyMDEwLTAyLTA0ICBLZXZp
biBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIEJ1aWxkIGZp
eCBhZnRlciBjaGFuZ2VzIGluIHI1NDM0NS4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKaW5kZXggNWJiNGRjMS4uNWI3ZjQ5YSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKKysrIGIv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKQEAgLTg0MSw2
ICs4NDEsMTAgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRXeDo6Y3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAgICByZXR1cm4gY2hpbGRGcmFt
ZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlBZG9wdEZyYW1l
KEZyYW1lKikKK3sKK30KKwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRXeDo6
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggMGMyOTk0MS4uODRiZmViNSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisrKyBiL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaApAQCAtMjAxLDYgKzIwMSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3VtZW50Kik7CiAgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwg
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
</data>
<flag name="commit-queue"
          id="31311"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48605</attachid>
            <date>2010-02-11 18:56:26 -0800</date>
            <delta_ts>2010-02-12 16:47:16 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>36924</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li5iNDg4ZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KC4uLik7CisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldE5hbWUpOgorICAgICAgICBNYWtlIHRoaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLCB0
byBiZSBhYmxlIHRvIHJlYWNoIGl0IHZpYSBGcmFtZTo6bV9vd25lckVsZW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCwgZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudCgpLgorICAgICAgICBJdCBjb21wbGltZW50cyBjcmVhdGVGcmFtZSgpIGlu
IHRoYXQgYSBmcmFtZSB3aGljaCB3YXMgcmUtcGFyZW50ZWQKKyAgICAgICAgaW4gRE9NIGFuZCBw
b3RlbnRpYWxseSBjaGFuZ2VzIFBhZ2UsIHNob3VsZCBub3RpZnkgdGhlIFdlYktpdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiBhYm91dCBwb3RlbnRpYWwgb3duZXJzaGlwIGNoYW5nZS4KKyAgICAg
ICAgTWFueSBlbWJlZGRlcnMgYXNzdW1lIHRoYXQgUGFnZSBvd25zIGFsbCB0aGUgRnJhbWVzLCBv
ciBhdCBsZWFzdAorICAgICAgICBhbGwgRnJhbWVzIGFyZSBkZXN0cm95ZWQgYmVmb3JlICd0aGVp
cicgUGFnZSBpcyBkZXN0cm95ZWQuIE9idmlvdXNseSwgaWYgRnJhbWUKKyAgICAgICAgY2FuIGJl
IHRyYW5zZmVycmVkIHRvIGFub3RoZXIgUGFnZSwgdGhlIGVtYmVkZGVycyBzaG91bGQgYmUgbm90
aWZpZWQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQsIG1h
a2VzIGFjdHVhbCBhZGp1c3RtZW50cyBmb3IgRnJhbWUgLSByZXNldHMgdGhlIFBhZ2UsCisgICAg
ICAgIHVwZGF0ZXMgdGhlIGZyYW1lIHRyZWUgYW5kIGZyYW1lIG5hbWUsIGNhbGxzIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIHRvIHVwZGF0ZSBleHRlcm5hbCBvYmplY3RzIGFuZCByZWN1
cnNlcyBpbnRvIGNoaWxkcmVuLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIG9uIGNoaWxkIGZy
YW1lcy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMC0wMi0xMCAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
IGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4
IDM4OTA4NTAuLjUyZjc5NzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwogICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlm
IChGcmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2Zy
YW1lTmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFt
ZSk7Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVu
VVJMKCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiAr
MTcxLDE0IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2Fs
bGJhY2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4p
LT5zZXROYW1lQW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1
cGRhdGVPblJlcGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92
YWxGcm9tVHJlZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisg
ICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KGRvY3VtZW50KCkp
OworfQorCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCgp
CiB7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpA
QCAtMTc1LDYgKzE4Nyw5IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50
b0RvY3VtZW50KCkKICAgICAvLyBPdGhld2lzZSwgYSBzeW5jaHJvbm91cyBsb2FkIHRoYXQgZXhl
Y3V0ZWQgSmF2YVNjcmlwdCB3b3VsZCBzZWUgaW5jb3JyZWN0IAogICAgIC8vICgwKSB2YWx1ZXMg
Zm9yIHRoZSBmcmFtZSdzIHJlbmRlcmVyLWRlcGVuZGVudCBwcm9wZXJ0aWVzLCBsaWtlIHdpZHRo
LgogICAgIG1fc2hvdWxkT3BlblVSTEFmdGVyQXR0YWNoID0gdHJ1ZTsKKworICAgIGlmIChtX3Jl
bWFpbnNBbGl2ZU9uUmVtb3ZhbEZyb21UcmVlKQorICAgICAgICB1cGRhdGVPblJlcGFyZW50aW5n
KCk7CiB9CiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmggYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAppbmRleCBlYTkzYWU3Li43NzE3ZGYwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaApAQCAtNjQsOCArNjQsMTEgQEAgcHJpdmF0
ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmFtZSgpOworCiAgICAgdmlydHVhbCB2b2lkIHdp
bGxSZW1vdmUoKTsKICAgICB2b2lkIGNoZWNrQXR0YWNoZWRUaW1lckZpcmVkKFRpbWVyPEhUTUxG
cmFtZUVsZW1lbnRCYXNlPiopOworICAgIHZvaWQgdXBkYXRlT25SZXBhcmVudGluZygpOwogCiAg
ICAgYm9vbCB2aWV3U291cmNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1NvdXJjZTsgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmggYi9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKaW5kZXggNGE1NmU0NS4uNWJmYjU3NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtNTksNiArNTksNyBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGcmFtZTsKIAorICAgIHZpcnR1YWwg
dm9pZCBzZXROYW1lKCkge30KICAgICB2aXJ0dWFsIGJvb2wgaXNGcmFtZU93bmVyRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3Vz
YWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RnJhbWU7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAppbmRleCBjMGIwNmQ1Li5hMzgyMzBlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qKSB7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3Vt
ZW50KikgeyByZXR1cm47IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
LCBib29sKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGMxMjFm
NC4uOWZmYTNjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC00OCw2ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYWNoZWRGcmFtZTsKICAgICBjbGFz
cyBDb2xvcjsKICAgICBjbGFzcyBET01XcmFwcGVyV29ybGQ7CisgICAgY2xhc3MgRG9jdW1lbnQ7
CiAgICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFz
cyBGb3JtU3RhdGU7CkBAIC0yMTksNiArMjIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVU
b05ld0RvY3VtZW50KERvY3VtZW50KikgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpID0gMDsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggZTJmNDIxYi4uOTZiNzJjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xNjI3LDYgKzE2MjcsNTUgQEAg
dm9pZCBGcmFtZTo6ZGlzY29ubmVjdE93bmVyRWxlbWVudCgpCiAgICAgbV9vd25lckVsZW1lbnQg
PSAwOwogfQogCisvLyBUaGUgZnJhbWUgaXMgbW92ZWQgaW4gRE9NLCBwb3RlbnRpYWxseSB0byBh
bm90aGVyIHBhZ2UuCit2b2lkIEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBuZXdEb2N1bWVudCkKK3sKKyAgICBBU1NFUlQobmV3RG9jdW1lbnQpOworICAg
IEFTU0VSVChtX293bmVyRWxlbWVudCk7CisgICAgRnJhbWUqIG5ld1BhcmVudCA9IG5ld0RvY3Vt
ZW50LT5mcmFtZSgpOworICAgIGJvb2wgZGlkVHJhbnNmZXIgPSBmYWxzZTsKKworICAgIC8vIFN3
aXRjaCBwYWdlLgorICAgIFBhZ2UqIG5ld1BhZ2UgPSBuZXdQYXJlbnQgPyBuZXdQYXJlbnQtPnBh
Z2UoKSA6IDA7CisgICAgaWYgKG1fcGFnZSAhPSBuZXdQYWdlKSB7CisgICAgICAgIGlmIChwYWdl
KCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkRnJhbWUoKSA9PSB0aGlzKQorICAgICAgICAg
ICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKDApOworCisgICAg
ICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICBtX3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291bnQo
KTsKKworICAgICAgICBtX3BhZ2UgPSBuZXdQYWdlOworCisgICAgICAgIGlmIChuZXdQYWdlKQor
ICAgICAgICAgICAgbmV3UGFnZS0+aW5jcmVtZW50RnJhbWVDb3VudCgpOworCisgICAgICAgIGRp
ZFRyYW5zZmVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRyZWUu
CisgICAgRnJhbWUqIG9sZFBhcmVudCA9IHRyZWUoKS0+cGFyZW50KCk7CisgICAgaWYgKG9sZFBh
cmVudCAhPSBuZXdQYXJlbnQpIHsKKyAgICAgICAgaWYgKG9sZFBhcmVudCkKKyAgICAgICAgICAg
IG9sZFBhcmVudC0+dHJlZSgpLT5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgaWYgKG5ld1Bh
cmVudCkgeworICAgICAgICAgICAgbmV3UGFyZW50LT50cmVlKCktPmFwcGVuZENoaWxkKHRoaXMp
OworICAgICAgICAgICAgbV9vd25lckVsZW1lbnQtPnNldE5hbWUoKTsKKyAgICAgICAgfQorICAg
ICAgICBkaWRUcmFuc2ZlciA9IHRydWU7CisgICAgfQorCisgICAgLy8gQXZvaWQgdW5uZWNlc3Nh
cnkgY2FsbHMgdG8gY2xpZW50IGFuZCBmcmFtZSBzdWJ0cmVlIGlmIHRoZSBmcmFtZSBlbmRlZAor
ICAgIC8vIHVwIG9uIHRoZSBzYW1lIHBhZ2UgYW5kIHVuZGVyIHRoZSBzYW1lIHBhcmVudCBmcmFt
ZS4KKyAgICBpZiAoZGlkVHJhbnNmZXIpIHsKKyAgICAgICAgLy8gTGV0IGV4dGVybmFsIGNsaWVu
dHMgdXBkYXRlIHRoZW1zZWx2ZXMuCisgICAgICAgIGxvYWRlcigpLT5jbGllbnQoKS0+ZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChuZXdEb2N1bWVudCk7CisgICAgCisgICAgICAg
IC8vIERvIHRoZSBzYW1lIGZvciBhbGwgdGhlIGNoaWxkcmVuLgorICAgICAgICBmb3IgKEZyYW1l
KiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJl
ZSgpLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgY2hpbGQtPnRyYW5zZmVyQ2hpbGRGcmFt
ZVRvTmV3RG9jdW1lbnQoZG9jdW1lbnQoKSk7CisgICAgfQorfQorCiBTdHJpbmcgRnJhbWU6OmRv
Y3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50VHlwZSogZG9jdHlw
ZSA9IGRvY3VtZW50KCktPmRvY3R5cGUoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzNiYjQzNS4uY2U3YTQ0NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAg
LTc2LDYgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2UqIHBhZ2Uo
KSBjb25zdDsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOworICAgICAgICB2b2lkIHRy
YW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqKTsKKwogICAgICAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQg
cGFnZURlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjE3ZmRhNi4uZTZjNDAzZSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWlj
aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdl
cywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAg
IFNpbmNlIENocm9taXVtJ3MgV2ViRnJhbWVDbGllbnQgaXMgZGVzdHJveWVkIG9uY2UgYSB3aW5k
b3cgaXMgY2xvc2VkLAorICAgICAgICBpZiBGcmFtZSBtb3ZlcyBiZXR3ZWVuIFBhZ2VzLCB0aGUg
Y2xpZW50IG9mIGNvcnJlc3BvbmRpbmcgV2ViRnJhbWUKKyAgICAgICAgc2hvdWxkIGJlIHJlcGxh
Y2VkIGFzIHdlbGwuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OnNldENsaWVudCk6CisKIDIwMTAtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDQwNzgxNTEuLjM5MThlNTcgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgV2ViRnJhbWVDbGllbnRfaAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
V2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVk
ZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgpAQCAtMTk3
LDYgKzE5OCw5IEBAIHB1YmxpYzoKICAgICAvLyBXQVJOSU5HOiBUaGlzIG1ldGhvZCBtYXkgYmUg
Y2FsbGVkIHZlcnkgZnJlcXVlbnRseS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQ3VycmVu
dEhpc3RvcnlJdGVtKFdlYkZyYW1lKikgeyB9CiAKKyAgICAvLyBUaGUgY2hpbGQgZnJhbWUgd2Fz
IHRyYW5zZmVycmVkIHRvIGEgbmV3IHBhZ2UsIGR1ZSB0byBET00gb3BlcmF0aW9uLgorICAgIC8v
IEl0J3MgcGFyZW50IGZyYW1lLCBkb2N1bWVudCBhbmQgY29udGFpbmluZyB2aWV3IGhhcyBjaGFu
Z2VkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50
KFdlYkRvY3VtZW50KSB7IH0KIAogICAgIC8vIExvdy1sZXZlbCByZXNvdXJjZSBub3RpZmljYXRp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggYjk4NDMwOC4uZmVjNDJh
OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApA
QCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0V4dHJhcy5oIgogI2luY2x1ZGUgIldl
YkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkZvcm1FbGVtZW50LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKQEAg
LTIzNSw3ICsyMzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGV0YWNoZWRGcm9t
UGFyZW50MygpCiAgICAgCiAgICAgLy8gU3RvcCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIFdlYkZy
YW1lQ2xpZW50IGF0IHRoaXMgcG9pbnQgc2luY2Ugd2UgYXJlIG5vCiAgICAgLy8gbG9uZ2VyIGFz
c29jaWF0ZWQgd2l0aCB0aGUgUGFnZS4KLSAgICBtX3dlYkZyYW1lLT5kcm9wQ2xpZW50KCk7Cisg
ICAgbV93ZWJGcmFtZS0+c2V0Q2xpZW50KDApOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIHJl
c3BvbnNpYmxlIGZvciBhc3NvY2lhdGluZyB0aGUgfGlkZW50aWZpZXJ8IHdpdGggYSBnaXZlbgpA
QCAtMTMzMiw2ICsxMzMzLDIwIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6Y3JlYXRlRnJhbWUoCiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNyZWF0ZUNoaWxkRnJh
bWUoZnJhbWVSZXF1ZXN0LCBvd25lckVsZW1lbnQpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgQVNTRVJUKG1fd2ViRnJhbWUtPmZyYW1lKCktPm93bmVyRWxlbWVudCgp
KTsKKworICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWVOZXdQYXJlbnQgPSBXZWJGcmFtZUltcGw6
OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgaWYgKCF3ZWJGcmFtZU5ld1BhcmVu
dCB8fCAhd2ViRnJhbWVOZXdQYXJlbnQtPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBSZXBsYWNlIHRoZSBjbGllbnQgc2luY2UgdGhlIG9sZCBjbGllbnQgbWF5IGJlIGRlc3Ry
b3llZCB3aGVuIHRoZQorICAgIC8vIHByZXZpb3VzIHBhZ2UgaXMgY2xvc2VkLgorICAgIG1fd2Vi
RnJhbWUtPnNldENsaWVudCh3ZWJGcmFtZU5ld1BhcmVudC0+Y2xpZW50KCkpOworICAgIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT5kaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KHdlYkZy
YW1lTmV3UGFyZW50LT5kb2N1bWVudCgpKTsKK30KKwogUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6Y3JlYXRlUGx1Z2luKAogICAgIGNvbnN0IEludFNpemUmIHNpemUs
IC8vIEZJWE1FOiBob3cgZG8gd2UgdXNlIHRoaXM/CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRl
eCA5MDE2MDBjLi44Y2E4N2Q4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmgKQEAgLTE3NCw2ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywKICAgICAgICAgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCopOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbigKICAgICAgICAg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmgKaW5kZXggY2NiYTZkNC4uNDdmNzNhYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCkBAIC0yMjEsNyArMjIxLDcgQEAgcHVibGljOgogICAgIFdlYlBhc3N3b3JkQXV0b2NvbXBs
ZXRlTGlzdGVuZXIqIGdldFBhc3N3b3JkTGlzdGVuZXIoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dCopOwogCiAgICAgV2ViRnJhbWVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9Ci0gICAgdm9pZCBkcm9wQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICB2b2lk
IHNldENsaWVudChXZWJGcmFtZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RXb3JkQXJvdW5kUG9zaXRpb24oV2ViQ29yZTo6RnJh
bWUqLCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24pOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDdhNDQ4ODQuLjE0MjNmOWQg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywg
aXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIEFk
ZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wMi0w
OSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDFjY2M4YTEuLjFhNWRiMmQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC00
OTEsNiArNDkxLDEwIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gY2hpbGRG
cmFtZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVy
Q2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqKQoreworfQorCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKIHsK
ICAgICBBU1NFUlQoIW1fcGx1Z2luVmlldyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKaW5kZXggYjM2NDg3My4uMGMwY2M5NCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAt
MTEzLDYgKzExMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywg
aW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqKTsK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2lu
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+Jiwg
Y29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYsIGJvb2wpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmlu
ZGV4IDJhYTRhZDcuLjk1MjJmY2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTEw
ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50
IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkVHJhbnNmZXJDaGls
ZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9u
IG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDA5LTEyLTA2ICBNYXhpbWUgU2ltb24gIDxzaW1v
bi5tYXhpbWVAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRp
ZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHAKaW5kZXggM2E4NGM0Zi4uNjJhZTZjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcApAQCAtNzQ1LDYg
Kzc0NSwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpjcmVh
dGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cgogICAgIHJldHVybiAwOwogfQogCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQqKQoreworfQorCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmggYi9XZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCmluZGV4IDJmZmRl
OGYuLmQyNjZlYjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50SGFpa3UuaApAQCAtMjIwLDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1
bWVudChEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9hZE1h
bnVhbGx5KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggZWM3N2U3Ny4uOTM0MGE5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
MC0wMi0xMCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUg
ZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBv
bGQgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0MzgyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5ldyB2aXJ0dWFsIG1ldGhvZC4K
KworICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRv
TmV3RG9jdW1lbnQpOgorCiAyMDEwLTAyLTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDI3NzQ3
ODMuLmE3OWJkZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpL
VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1l
T3duZXJFbGVtZW50KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCopOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4m
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZWFl
YzgwNy4uZTU4Mjc0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzUyLDYgKzEzNTIsMTAgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW4KICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCopCit7Cit9CisKIE9i
amVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
aCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggMjVmNmM5Yi4uMmVjNmY2NCAxMDA2
NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5oCkBAIC0yMTcsNiArMjE3LDggQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgbG9hZFN0
YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChib29sIG9rKTsKIAorICAgIHZvaWQgd2Vi
UGFnZUNoYW5nZWQoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CiAg
ICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAppbmRleCBlZTk3
OGJlLi43OGZkYWNjIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtYXJnaW5IZWlnaHQoLTEpCiAgICAgICAgIHt9CiAgICAgdm9pZCBpbml0KFFX
ZWJGcmFtZSogcWZyYW1lLCBRV2ViRnJhbWVEYXRhKiBmcmFtZURhdGEpOworICAgIHZvaWQgc2V0
UGFnZShRV2ViUGFnZSogbmV3UGFnZSkgeyBwYWdlID0gbmV3UGFnZTsgfQogCiAgICAgaW5saW5l
IFFXZWJGcmFtZSAqcGFyZW50RnJhbWUoKSB7IHJldHVybiBxb2JqZWN0X2Nhc3Q8UVdlYkZyYW1l
Kj4ocS0+cGFyZW50KCkpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDBlZjQxNWIuLjQ2N2ZmMDggMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZl
IGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMg
b24gdGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWVfcC5oOgorICAgICAgICAo
UVdlYkZyYW1lUHJpdmF0ZTo6c2V0UGFnZSk6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAg
IFRoZSBRV2ViRnJhbWUgY2FjaGVzIGEgUVdlYlBhZ2Ugd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2Vk
IHdoZW4gRnJhbWUgaXMgcmUtcGFyZW50ZWQuCisgICAgICAgIEFsc28sIHRoZSBRV2ViRnJhbWUg
aXMgYSBjaGlsZCAoaW4gUVQgdGVybXMpIG9mIFFXZWJQYWdlIC0gc28gdXBkYXRlIHRoYXQgcmVs
YXRpb25zaGlwIGFzIHdlbGwuCisgICAgICAgIEVtaXQgYSBzaWduYWwgdGhhdCBRV2ViRnJhbWUg
bW92ZWQgdG8gYSBkaWZmZXJlbnQgUVdlYlBhZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTAtMDItMTAgIERpZWdvIEdvbnphbGV6ICA8
ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCA3NjBlMzdlLi4wNzg0MGQzIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRm9ybVN0YXRlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgpAQCAtMTA2MCw2ICsxMDYxLDMy
IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGZyYW1lRGF0YS5mcmFtZS5y
ZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkVHJhbnNmZXJDaGls
ZEZyYW1lVG9OZXdEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKGRv
Y3VtZW50KTsKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChRV2ViRnJh
bWUqIHdlYkZyYW1lTmV3UGFyZW50ID0gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KGRvY3VtZW50LT5m
cmFtZSgpKSkgeworICAgICAgICBRV2ViUGFnZSogb2xkUGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2Uo
KTsKKyAgICAgICAgUVdlYlBhZ2UqIG5ld1BhZ2UgPSB3ZWJGcmFtZU5ld1BhcmVudC0+cGFnZSgp
OworCisgICAgICAgIEFTU0VSVChvbGRQYWdlICYmIG5ld1BhZ2UpOworICAgICAgICBBU1NFUlQo
b2xkUGFnZS0+bWFpbkZyYW1lKCkgIT0gbV93ZWJGcmFtZSk7CisKKyAgICAgICAgaWYgKG9sZFBh
Z2UgIT0gbmV3UGFnZSkgeworICAgICAgICAgICAgbV93ZWJGcmFtZS0+ZC0+c2V0UGFnZShuZXdQ
YWdlKTsKKyAgICAgICAgICAgIC8vIFRoZSBRV2ViRnJhbWUgaXMgY3JlYXRlZCBhcyBhIGNoaWxk
IG9mIFFXZWJQYWdlLiBUaGF0IGFkZHMgaXQgdG8gUU9iamVjdCdzIGludGVybmFsIGNoaWxkcmVu
IGxpc3QgYW5kCisgICAgICAgICAgICAvLyBlbnN1cmVzIGl0IHdpbGwgYmUgZGVsZXRlZCB3aGVu
IHBhcmVudCBRV2ViUGFnZSBpcyBkZWxldGVkLiBSZS1wYXJlbnQuCisgICAgICAgICAgICBtX3dl
YkZyYW1lLT5zZXRQYXJlbnQobmV3UGFnZSk7CisgICAgICAgICAgICBlbWl0IG1fd2ViRnJhbWUt
PndlYlBhZ2VDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIE9iamVjdENvbnRlbnRU
eXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBfbWltZVR5cGUpCiB7CiAvLyAgICBxRGVidWcoKTw8IiArKysrKysr
KysrKysrKysrIHVybCBpcyAiPDx1cmwucHJldHR5VVJMKCk8PCIsIG1pbWUgPSAiPDxfbWltZVR5
cGU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaApp
bmRleCAzMmI5Y2FhLi5lY2RmNDYxIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTE5NCw2ICsxOTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpIDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRG
cmFtZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERh
dGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmViMjJhMS4uOWE2MDcw
OCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNo
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2Vz
LCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIEFkZGVk
IGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wMi0xMCAg
SmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1n
aXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IGI5MjdjNzIuLmI5NDc0NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03MzcsNiArNzM3LDEwIEBAIFBhc3NSZWZQdHI8
RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqKQoreworfQorCiBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGYxZmI1ZjcuLjEx
YWE0YmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVy
bCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U3RyaW5nPiYsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0
L3d4L0NoYW5nZUxvZwppbmRleCAwNWVmYmQyLi5jMTA2Y2E3IDEwMDY0NAotLS0gYS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMC0wMi0xMCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJh
bWUgZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRo
ZSBvbGQgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM0MzgyCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkVHJhbnNmZXJD
aGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0
aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4Lmg6CisKIDIwMTAtMDItMDQgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIGNoYW5nZXMg
aW4gcjU0MzQ1LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHAgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmNwcAppbmRleCA1YmI0ZGMxLi5hZWY3N2ZiIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcApAQCAtODQxLDYgKzg0MSwxMCBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFd4OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KikKK3sKK30KKwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnRXeDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggMGMyOTk0MS4uODRiZmViNSAxMDA2
NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisr
KyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaApAQCAtMjAx
LDYgKzIwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KERvY3VtZW50Kik7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1h
bnVhbGx5KSA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVnaW5X
aWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
</data>
<flag name="review"
          id="31317"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="31318"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48680</attachid>
            <date>2010-02-12 16:47:16 -0800</date>
            <delta_ts>2010-02-12 17:46:29 -0800</delta_ts>
            <desc>Updated according to comments.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35973</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li5iNDg4ZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KC4uLik7CisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldE5hbWUpOgorICAgICAgICBNYWtlIHRoaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLCB0
byBiZSBhYmxlIHRvIHJlYWNoIGl0IHZpYSBGcmFtZTo6bV9vd25lckVsZW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCwgZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudCgpLgorICAgICAgICBJdCBjb21wbGltZW50cyBjcmVhdGVGcmFtZSgpIGlu
IHRoYXQgYSBmcmFtZSB3aGljaCB3YXMgcmUtcGFyZW50ZWQKKyAgICAgICAgaW4gRE9NIGFuZCBw
b3RlbnRpYWxseSBjaGFuZ2VzIFBhZ2UsIHNob3VsZCBub3RpZnkgdGhlIFdlYktpdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiBhYm91dCBwb3RlbnRpYWwgb3duZXJzaGlwIGNoYW5nZS4KKyAgICAg
ICAgTWFueSBlbWJlZGRlcnMgYXNzdW1lIHRoYXQgUGFnZSBvd25zIGFsbCB0aGUgRnJhbWVzLCBv
ciBhdCBsZWFzdAorICAgICAgICBhbGwgRnJhbWVzIGFyZSBkZXN0cm95ZWQgYmVmb3JlICd0aGVp
cicgUGFnZSBpcyBkZXN0cm95ZWQuIE9idmlvdXNseSwgaWYgRnJhbWUKKyAgICAgICAgY2FuIGJl
IHRyYW5zZmVycmVkIHRvIGFub3RoZXIgUGFnZSwgdGhlIGVtYmVkZGVycyBzaG91bGQgYmUgbm90
aWZpZWQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQsIG1h
a2VzIGFjdHVhbCBhZGp1c3RtZW50cyBmb3IgRnJhbWUgLSByZXNldHMgdGhlIFBhZ2UsCisgICAg
ICAgIHVwZGF0ZXMgdGhlIGZyYW1lIHRyZWUgYW5kIGZyYW1lIG5hbWUsIGNhbGxzIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIHRvIHVwZGF0ZSBleHRlcm5hbCBvYmplY3RzIGFuZCByZWN1
cnNlcyBpbnRvIGNoaWxkcmVuLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIG9uIGNoaWxkIGZy
YW1lcy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMC0wMi0xMCAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
IGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4
IDM4OTA4NTAuLjlkODRiNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwogICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlm
IChGcmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2Zy
YW1lTmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFt
ZSk7Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVu
VVJMKCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiAr
MTcxLDE0IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2Fs
bGJhY2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4p
LT5zZXROYW1lQW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1
cGRhdGVPblJlcGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92
YWxGcm9tVHJlZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisg
ICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7Cit9CisKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkBAIC0xNzUsNiAr
MTg3LDkgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KQogICAgIC8vIE90aGV3aXNlLCBhIHN5bmNocm9ub3VzIGxvYWQgdGhhdCBleGVjdXRlZCBKYXZh
U2NyaXB0IHdvdWxkIHNlZSBpbmNvcnJlY3QgCiAgICAgLy8gKDApIHZhbHVlcyBmb3IgdGhlIGZy
YW1lJ3MgcmVuZGVyZXItZGVwZW5kZW50IHByb3BlcnRpZXMsIGxpa2Ugd2lkdGguCiAgICAgbV9z
aG91bGRPcGVuVVJMQWZ0ZXJBdHRhY2ggPSB0cnVlOworCisgICAgaWYgKG1fcmVtYWluc0FsaXZl
T25SZW1vdmFsRnJvbVRyZWUpCisgICAgICAgIHVwZGF0ZU9uUmVwYXJlbnRpbmcoKTsKIH0KIAog
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGVhOTNhZTcuLjc3MTdkZjAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC02NCw4ICs2NCwxMSBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgdm9pZCBzZXROYW1lKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgp
OwogICAgIHZvaWQgY2hlY2tBdHRhY2hlZFRpbWVyRmlyZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVu
dEJhc2U+Kik7CisgICAgdm9pZCB1cGRhdGVPblJlcGFyZW50aW5nKCk7CiAKICAgICBib29sIHZp
ZXdTb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U291cmNlOyB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA0YTU2ZTQ1Li41YmZiNTc1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCisgICAgdmlydHVhbCB2b2lkIHNldE5h
bWUoKSB7fQogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IGMwYjA2ZDUuLjYyODdjM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0y
OTYsNiArMjk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiopIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKSB7IHJldHVybjsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4gMDsgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YzEyMWY0Li4yM2QxM2JjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIxOSw2ICsyMTksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVy
Q2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCBlMmY0MjFiLi40YTA1ODkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTE2MjcsNiArMTYyNyw1NCBA
QCB2b2lkIEZyYW1lOjpkaXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICBtX293bmVyRWxlbWVu
dCA9IDA7CiB9CiAKKy8vIFRoZSBmcmFtZSBpcyBtb3ZlZCBpbiBET00sIHBvdGVudGlhbGx5IHRv
IGFub3RoZXIgcGFnZS4KK3ZvaWQgRnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1l
bnQoKQoreworICAgIEFTU0VSVChtX293bmVyRWxlbWVudCk7CisgICAgRnJhbWUqIG5ld1BhcmVu
dCA9IG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGJvb2wgZGlkVHJh
bnNmZXIgPSBmYWxzZTsKKworICAgIC8vIFN3aXRjaCBwYWdlLgorICAgIFBhZ2UqIG5ld1BhZ2Ug
PSBuZXdQYXJlbnQgPyBuZXdQYXJlbnQtPnBhZ2UoKSA6IDA7CisgICAgaWYgKG1fcGFnZSAhPSBu
ZXdQYWdlKSB7CisgICAgICAgIGlmIChwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
RnJhbWUoKSA9PSB0aGlzKQorICAgICAgICAgICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
c2V0Rm9jdXNlZEZyYW1lKDApOworCisgICAgICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICBt
X3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291bnQoKTsKKworICAgICAgICBtX3BhZ2UgPSBuZXdQYWdl
OworCisgICAgICAgIGlmIChuZXdQYWdlKQorICAgICAgICAgICAgbmV3UGFnZS0+aW5jcmVtZW50
RnJhbWVDb3VudCgpOworCisgICAgICAgIGRpZFRyYW5zZmVyID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRyZWUuCisgICAgRnJhbWUqIG9sZFBhcmVudCA9IHRyZWUo
KS0+cGFyZW50KCk7CisgICAgaWYgKG9sZFBhcmVudCAhPSBuZXdQYXJlbnQpIHsKKyAgICAgICAg
aWYgKG9sZFBhcmVudCkKKyAgICAgICAgICAgIG9sZFBhcmVudC0+dHJlZSgpLT5yZW1vdmVDaGls
ZCh0aGlzKTsKKyAgICAgICAgaWYgKG5ld1BhcmVudCkgeworICAgICAgICAgICAgbmV3UGFyZW50
LT50cmVlKCktPmFwcGVuZENoaWxkKHRoaXMpOworICAgICAgICAgICAgbV9vd25lckVsZW1lbnQt
PnNldE5hbWUoKTsKKyAgICAgICAgfQorICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7CisgICAg
fQorCisgICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgY2FsbHMgdG8gY2xpZW50IGFuZCBmcmFtZSBz
dWJ0cmVlIGlmIHRoZSBmcmFtZSBlbmRlZAorICAgIC8vIHVwIG9uIHRoZSBzYW1lIHBhZ2UgYW5k
IHVuZGVyIHRoZSBzYW1lIHBhcmVudCBmcmFtZS4KKyAgICBpZiAoZGlkVHJhbnNmZXIpIHsKKyAg
ICAgICAgLy8gTGV0IGV4dGVybmFsIGNsaWVudHMgdXBkYXRlIHRoZW1zZWx2ZXMuCisgICAgICAg
IGxvYWRlcigpLT5jbGllbnQoKS0+ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgp
OworICAgIAorICAgICAgICAvLyBEbyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBjaGlsZHJlbi4KKyAg
ICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkLT50
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7CisgICAgfQorfQorCiBTdHJpbmcgRnJh
bWU6OmRvY3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50VHlwZSog
ZG9jdHlwZSA9IGRvY3VtZW50KCktPmRvY3R5cGUoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzNiYjQzNS4uMjZkMWVmYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTc2LDYgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOworICAgICAgICB2
b2lkIHRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKKwogICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcGFn
ZURlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjE3ZmRhNi4uZTZjNDAzZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywg
aXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIFNp
bmNlIENocm9taXVtJ3MgV2ViRnJhbWVDbGllbnQgaXMgZGVzdHJveWVkIG9uY2UgYSB3aW5kb3cg
aXMgY2xvc2VkLAorICAgICAgICBpZiBGcmFtZSBtb3ZlcyBiZXR3ZWVuIFBhZ2VzLCB0aGUgY2xp
ZW50IG9mIGNvcnJlc3BvbmRpbmcgV2ViRnJhbWUKKyAgICAgICAgc2hvdWxkIGJlIHJlcGxhY2Vk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6
OnNldENsaWVudCk6CisKIDIwMTAtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDQwNzgxNTEuLmQ3OGY1NTcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTE5Nyw3ICsxOTcsNiBAQCBwdWJsaWM6
CiAgICAgLy8gV0FSTklORzogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCB2ZXJ5IGZyZXF1ZW50
bHkuCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUN1cnJlbnRIaXN0b3J5SXRlbShXZWJGcmFt
ZSopIHsgfQogCi0KICAgICAvLyBMb3ctbGV2ZWwgcmVzb3VyY2Ugbm90aWZpY2F0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEFuIGlkZW50aWZpZXIg
d2FzIGFzc2lnbmVkIHRvIHRoZSBzcGVjaWZpZWQgcmVxdWVzdC4gIFRoZSBjbGllbnQKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCBiOTg0MzA4
Li44NWM3YmNjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRl
dGFjaGVkRnJvbVBhcmVudDMoKQogICAgIAogICAgIC8vIFN0b3AgY29tbXVuaWNhdGluZyB3aXRo
IHRoZSBXZWJGcmFtZUNsaWVudCBhdCB0aGlzIHBvaW50IHNpbmNlIHdlIGFyZSBubwogICAgIC8v
IGxvbmdlciBhc3NvY2lhdGVkIHdpdGggdGhlIFBhZ2UuCi0gICAgbV93ZWJGcmFtZS0+ZHJvcENs
aWVudCgpOworICAgIG1fd2ViRnJhbWUtPnNldENsaWVudCgwKTsKIH0KIAogLy8gVGhpcyBmdW5j
dGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYXNzb2NpYXRpbmcgdGhlIHxpZGVudGlmaWVyfCB3aXRo
IGEgZ2l2ZW4KQEAgLTEzMzIsNiArMTMzMiwxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmNyZWF0ZUZyYW1lKAogICAgIHJldHVybiBtX3dlYkZyYW1lLT5jcmVh
dGVDaGlsZEZyYW1lKGZyYW1lUmVxdWVzdCwgb3duZXJFbGVtZW50KTsKIH0KIAordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQor
eworICAgIEFTU0VSVChtX3dlYkZyYW1lLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKSk7CisKKyAg
ICBXZWJGcmFtZSogbmV3UGFyZW50ID0gbV93ZWJGcmFtZS0+cGFyZW50KCk7CisgICAgaWYgKCFu
ZXdQYXJlbnQgfHwgIW5ld1BhcmVudC0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFJlcGxhY2UgdGhlIGNsaWVudCBzaW5jZSB0aGUgb2xkIGNsaWVudCBtYXkgYmUgZGVzdHJv
eWVkIHdoZW4gdGhlCisgICAgLy8gcHJldmlvdXMgcGFnZSBpcyBjbG9zZWQuCisgICAgbV93ZWJG
cmFtZS0+c2V0Q2xpZW50KG5ld1BhcmVudC0+Y2xpZW50KCkpOworfQorCiBQYXNzUmVmUHRyPFdp
ZGdldD4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVQbHVnaW4oCiAgICAgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgLy8gRklYTUU6IGhvdyBkbyB3ZSB1c2UgdGhpcz8KICAgICBIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oCmluZGV4IDkwMTYwMGMuLjhhMzkzOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMTc0LDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLAog
ICAgICAgICBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKAogICAgICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwKICAgICAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaApp
bmRleCBjY2JhNmQ0Li40N2Y3M2FhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAg
LTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgV2ViUGFzc3dvcmRBdXRvY29tcGxldGVMaXN0
ZW5lciogZ2V0UGFzc3dvcmRMaXN0ZW5lcihXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Kik7CiAK
ICAgICBXZWJGcmFtZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0K
LSAgICB2b2lkIGRyb3BDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIHZvaWQgc2V0Q2xp
ZW50KFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAg
IHN0YXRpYyB2b2lkIHNlbGVjdFdvcmRBcm91bmRQb3NpdGlvbihXZWJDb3JlOjpGcmFtZSosIFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdl
TG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggN2E0NDg4NC4uMTQyM2Y5ZCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
aGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGls
bCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQgZW1w
dHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDEwLTAyLTA5ICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKaW5kZXggMWNjYzhhMS4uYWNmOTQxMiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTQ5MSw2ICs0
OTEsMTAgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBjaGlsZEZyYW1lLnJl
bGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZy
YW1lVG9OZXdEb2N1bWVudCgpCit7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogewogICAgIEFTU0VSVCghbV9w
bHVnaW5WaWV3KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuaAppbmRleCBiMzY0ODczLi5kNWRiNmQwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC0xMTMsNiArMTEzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGls
ZEZyYW1lVG9OZXdEb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVj
dG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29y
ZTo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dl
YktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggMmFhNGFkNy4uOTUyMmZjZCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwg
ZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEhhaWt1OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRk
ZWQgZW1wdHkgaW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMDktMTIt
MDYgIE1heGltZSBTaW1vbiAgPHNpbW9uLm1heGltZUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAppbmRleCAzYTg0YzRmLi43N2M3Y2ZjIDEw
MDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRI
YWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuY3BwCkBAIC03NDUsNiArNzQ1LDEwIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50SGFpa3U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlkVHJh
bnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpCit7Cit9CisKIE9iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuaCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1
LmgKaW5kZXggMmZmZGU4Zi4uZGFkZGExOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAorKysgYi9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCkBAIC0yMjAsNiArMjIwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxk
RnJhbWVUb05ld0RvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBL
VVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBs
b2FkTWFudWFsbHkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBlYzc3ZTc3Li45MzQwYTk0IDEwMDY0NAotLS0gYS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlm
cmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24g
dGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzQzODIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0
aG9kLgorCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZy
YW1lVG9OZXdEb2N1bWVudCk6CisKIDIwMTAtMDItMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYg
LS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
Mjc3NDc4My4uOTg4YjhhNiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTg4LDYgKzE4OCw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5n
LCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdp
bihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBlYWVjODA3Li4wNGU2NzRm
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTEzNTIsNiArMTM1MiwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAg
IHJldHVybiAwOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNo
aWxkRnJhbWVUb05ld0RvY3VtZW50KCkKK3sKK30KKwogT2JqZWN0Q29udGVudFR5cGUgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5jcHAKaW5kZXggNGMxZjMxOC4uYjA3YTczZSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAt
MjgyLDYgKzI4MiwyMSBAQCB2b2lkIFFXZWJGcmFtZVByaXZhdGU6OmluaXQoUVdlYkZyYW1lICpx
ZnJhbWUsIFFXZWJGcmFtZURhdGEgKmZyYW1lRGF0YSkKICAgICBmcmFtZS0+aW5pdCgpOwogfQog
Cit2b2lkIFFXZWJGcmFtZVByaXZhdGU6OnNldFBhZ2UoUVdlYlBhZ2UqIG5ld1BhZ2UpCit7Cisg
ICAgaWYgKHBhZ2UgPT0gbmV3UGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIFFX
ZWJGcmFtZSBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgUVdlYlBhZ2Ugb3IgYSBwYXJlbnQgUVdl
YkZyYW1lLgorICAgIC8vIFRoYXQgYWRkcyBpdCB0byBRT2JqZWN0J3MgaW50ZXJuYWwgY2hpbGRy
ZW4gbGlzdCBhbmQgZW5zdXJlcyBpdCB3aWxsIGJlCisgICAgLy8gZGVsZXRlZCB3aGVuIHBhcmVu
dCBRV2ViUGFnZSBpcyBkZWxldGVkLiBSZXBhcmVudCBpZiBuZWVkZWQuCisgICAgaWYgKHEtPnBh
cmVudCgpID09IHFvYmplY3RfY2FzdDxRT2JqZWN0Kj4ocGFnZSkpCisgICAgICAgIHEtPnNldFBh
cmVudChuZXdQYWdlKTsKKworICAgIHBhZ2UgPSBuZXdQYWdlOworICAgIGVtaXQgcS0+cGFnZUNo
YW5nZWQoKTsKK30KKwogV2ViQ29yZTo6U2Nyb2xsYmFyKiBRV2ViRnJhbWVQcml2YXRlOjpob3Jp
em9udGFsU2Nyb2xsQmFyKCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1lLT52aWV3KCkpCmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuaAppbmRleCAyNWY2YzliLi40MzE1YTIwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3
ZWJmcmFtZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKQEAgLTIxNyw2ICsyMTcs
OCBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgbG9hZEZp
bmlzaGVkKGJvb2wgb2spOwogCisgICAgdm9pZCBwYWdlQ2hhbmdlZCgpOworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2
YXRlOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5oIGIvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWVfcC5oCmluZGV4IGVlOTc4YmUuLjdkNzk0NzQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9w
LmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgICAgICAsIG1hcmdpbkhlaWdodCgtMSkK
ICAgICAgICAge30KICAgICB2b2lkIGluaXQoUVdlYkZyYW1lKiBxZnJhbWUsIFFXZWJGcmFtZURh
dGEqIGZyYW1lRGF0YSk7CisgICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdlKik7CiAKICAgICBpbmxp
bmUgUVdlYkZyYW1lICpwYXJlbnRGcmFtZSgpIHsgcmV0dXJuIHFvYmplY3RfY2FzdDxRV2ViRnJh
bWUqPihxLT5wYXJlbnQoKSk7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMGVmNDE1Yi4uNDY3ZmYwOCAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxp
dmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5k
cyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZV9wLmg6CisgICAgICAg
IChRV2ViRnJhbWVQcml2YXRlOjpzZXRQYWdlKTogQWRkZWQuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAg
ICAgVGhlIFFXZWJGcmFtZSBjYWNoZXMgYSBRV2ViUGFnZSB3aGljaCBzaG91bGQgYmUgcmVwbGFj
ZWQgd2hlbiBGcmFtZSBpcyByZS1wYXJlbnRlZC4KKyAgICAgICAgQWxzbywgdGhlIFFXZWJGcmFt
ZSBpcyBhIGNoaWxkIChpbiBRVCB0ZXJtcykgb2YgUVdlYlBhZ2UgLSBzbyB1cGRhdGUgdGhhdCBy
ZWxhdGlvbnNoaXAgYXMgd2VsbC4KKyAgICAgICAgRW1pdCBhIHNpZ25hbCB0aGF0IFFXZWJGcmFt
ZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBRV2ViUGFnZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMi0xMCAgRGllZ28gR29uemFsZXog
IDxkaWVnby5nb256YWxlekBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDc2MGUzN2UuLjIyNWIxNzYgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysg
Yi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEw
NjAsNiArMTA2MCwyNCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmcmFt
ZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
ZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQoreworICAgIEFTU0VSVChtX2ZyYW1l
LT5vd25lckVsZW1lbnQoKSk7CisKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fd2ViRnJhbWUtPmQtPmZyYW1lLT50cmVl
KCktPnBhcmVudCgpOworICAgIEFTU0VSVChwYXJlbnRGcmFtZSk7CisKKyAgICBpZiAoUVdlYkZy
YW1lKiBwYXJlbnQgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQocGFyZW50RnJhbWUpKSB7CisgICAg
ICAgIG1fd2ViRnJhbWUtPmQtPnNldFBhZ2UocGFyZW50LT5wYWdlKCkpOworCisgICAgICAgIGlm
IChtX3dlYkZyYW1lLT5wYXJlbnQoKSAhPSBxb2JqZWN0X2Nhc3Q8UU9iamVjdCo+KHBhcmVudCkp
CisgICAgICAgICAgICBtX3dlYkZyYW1lLT5zZXRQYXJlbnQocGFyZW50KTsKKyAgICB9Cit9CisK
IE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBfbWltZVR5cGUpCiB7CiAvLyAgICBxRGVi
dWcoKTw8IiArKysrKysrKysrKysrKysrIHVybCBpcyAiPDx1cmwucHJldHR5VVJMKCk8PCIsIG1p
bWUgPSAiPDxfbWltZVR5cGU7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAppbmRleCAzMmI5Y2FhLi5hZGViMzFjIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKQEAgLTE5NCw2ICsxOTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQg
bWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZmViMjJhMS4u
OWE2MDcwOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5IFRpdG92ICA8
ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBiZXR3ZWVu
IHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAg
IEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwgbWV0aG9kLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0w
Mi0xMCAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVuY2lhQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGI5MjdjNzIuLjZhZTZjNWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03MzcsNiArNzM3LDEwIEBAIFBhc3NS
ZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1l
bnQoKQoreworfQorCiBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGYxZmI1ZjcuLmE1ZjJi
MWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJD
aGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAw
NWVmYmQyLi5jMTA2Y2E3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5IFRp
dG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3ZlZCBi
ZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVu
dCk6CisgICAgICAgIEFkZGVkIGVtcHR5IGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IHZpcnR1YWwg
bWV0aG9kLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4Lmg6
CisKIDIwMTAtMDItMDQgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+
CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIGNoYW5nZXMgaW4gcjU0MzQ1LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAgYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAppbmRleCA1YmI0ZGMx
Li42YWZkZDg4IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcApAQCAtODQxLDYgKzg0MSwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxv
YWRlckNsaWVudFd4OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZwog
ICAgIHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNs
aWVudFd4OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKK3sKK30KKwogT2Jq
ZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRXeDo6b2JqZWN0Q29udGVudFR5cGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgK
aW5kZXggMGMyOTk0MS4uNjIyMThmZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guaApAQCAtMjAxLDYgKzIwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJh
bWVUb05ld0RvY3VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAgICAgICAgIHZpcnR1YWwgUmVz
b3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsK
</data>
<flag name="commit-queue"
          id="31398"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48684</attachid>
            <date>2010-02-12 17:46:29 -0800</date>
            <delta_ts>2010-02-19 10:51:52 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>36005</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YjUzMjNjLi4xMDA5NWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDIt
MTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1l
bnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBh
Z2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4
MgorCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50
aW5nLW5ldy1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Jlc291cmNl
cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3Nj
cmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuanM6IEFkZGVkLgorCiAyMDEw
LTAyLTEwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIgYW5kIERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxNzJhNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2lmcmFtZS1yZXBhcmVudGlu
Zy1uZXctcGFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCB0aGUgdGltZXIgaW4gaWZyYW1lIGNvbnRpbnVlcyBmaXJpbmcgYWZ0ZXIgaWZyYW1l
IGlzIGFkb3B0ZWQgaW50byBhIG5ldyB3aW5kb3cgYW5kIHRoZSBvcmlnaW5hbCB3aW5kb3cgd2Fz
IGNsb3NlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyBMb2FkZWQgaWZyYW1lIGlu
IHdpbmRvdyAxLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDEKK1BBU1Mg
TG9hZGVkIHBhZ2UgMi4KK1BBU1MgUGFnZSAyIGFkb3B0ZWQgdGhlIGlmcmFtZS4KK1BBU1MgSWZy
YW1lIHRyYW5zZmVycmVkLgorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIGlzIDIK
K1BBU1Mgd2luZG93Mi5sb2NhdGlvbi5ocmVmIGlzIGlmcmFtZS5jb250ZW50V2luZG93LnBhcmVu
dC5sb2NhdGlvbi5ocmVmCitQQVNTIFBhZ2UgMSBpcyBjbG9zZWQuCitQQVNTIFJlY2VpdmVkIHRo
ZSB0aW1lciBiZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThhZTkyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvaWZyYW1lLXJlcGFyZW50aW5n
LW5ldy1wYWdlLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2Uu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5l
dy1wYWdlLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmUwMDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2lm
cmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS0xLmh0bWwKQEAgLTAsMCArMSw2IEBACis8aHRtbD4K
Kzxib2R5PgorUGFnZSAxPGJyPgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9ImlmcmFtZS1yZXBh
cmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJl
cGFyZW50aW5nLW5ldy1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjNmMjZkMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLTIuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRvcHRJZnJhbWUg
PSBmdW5jdGlvbihpZnJhbWUpCit7CisgICAgZG9jdW1lbnQuYWRvcHROb2RlKGlmcmFtZSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIG9wZW5lci50ZXN0UGFz
c2VkKCJQYWdlIDIgYWRvcHRlZCB0aGUgaWZyYW1lLiIpCit9Cis8L3NjcmlwdD4KKzxib2R5Pgor
UGFnZSAyPGJyPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXctcGFnZS1pZnJhbWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmct
bmV3LXBhZ2UtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTE3OWE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwx
OCBAQAorPGh0bWw+Cis8c2NyaXB0Pgord2luZG93LmNvdW50ZXIgPSAwOworCitmdW5jdGlvbiB0
aWNrKCkKK3sKKyAgICBpZiAod2luZG93LmZpbmlzaCkKKyAgICAgICAgZmluaXNoKCk7Cit9CisK
K2Z1bmN0aW9uIHN0YXJ0KCkKK3sKKyAgICB3aW5kb3cuc2V0SW50ZXJ2YWwodGljaywgNTApOwor
fQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRF
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTM2ZTBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0
bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NjcmlwdC10ZXN0cy9pZnJhbWUtcmVwYXJl
bnRpbmctbmV3LXBhZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zY3JpcHQtdGVzdHMv
aWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjdlMmQ3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9zY3JpcHQtdGVzdHMvaWZyYW1lLXJlcGFyZW50aW5nLW5ldy1wYWdlLmpzCkBAIC0wLDAg
KzEsNTUgQEAKK2Rlc2NyaXB0aW9uKAorIlRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHRpbWVy
IGluIGlmcmFtZSBjb250aW51ZXMgZmlyaW5nIGFmdGVyIGlmcmFtZSBpcyBhZG9wdGVkIGludG8g
YSBuZXcgd2luZG93IGFuZCB0aGUgb3JpZ2luYWwgd2luZG93IHdhcyBjbG9zZWQuIgorKTsKKwor
dmFyIHdpbmRvdzEsIGlmcmFtZSwgd2luZG93MjsKKworZnVuY3Rpb24gZmluaXNoKCkKK3sKKyAg
ICAvLyBUaW1lciBtYXkgY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVzIGJlZm9yZSBhY3R1YWwgc2h1
dGRvd24sIGdlbmVyYXRpbmcgYXJiaXRyYXJ5IG51bWJlciBvZiBsb2cgbGluZXMuCisgICAgLy8g
UmVzZXQgdGhlIGNhbGxiYWNrIHRvIGF2b2lkIHRoaXMuCisgICAgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZmluaXNoID0gbnVsbDsKKworICAgIHRlc3RQYXNzZWQoIlJlY2VpdmVkIHRoZSB0aW1lciBi
ZWF0IGZyb20gdGhlIGFkb3B0ZWQgaWZyYW1lIC0gZXhpdGluZy4iKQorICAgIHdpbmRvdzIuY2xv
c2UoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHBhZ2UxVW5sb2Fk
ZWQoKQoreworICAgIHRlc3RQYXNzZWQoIlBhZ2UgMSBpcyBjbG9zZWQuIik7CisgICAgLy8gR2l2
ZSB0aGUgaWZyYW1lIGEgZnVuY3Rpb24gdG8gY2FsbCBmcm9tIHRoZSB0aW1lci4KKyAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5maW5pc2ggPSBmaW5pc2g7Cit9CisKK2Z1bmN0aW9uIHRyYW5zZmVy
SWZyYW1lKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJMb2FkZWQgcGFnZSAyLiIpOworICAgIHdpbmRv
dzIuYWRvcHRJZnJhbWUoaWZyYW1lKTsKKyAgICB0ZXN0UGFzc2VkKCJJZnJhbWUgdHJhbnNmZXJy
ZWQuIik7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291bnRlcisrOworICAgIHNob3VsZEJl
KCJpZnJhbWUuY29udGVudFdpbmRvdy5jb3VudGVyIiwgIjIiKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93Mi5sb2NhdGlvbi5ocmVmIiwgImlmcmFtZS5jb250ZW50V2luZG93LnBhcmVudC5sb2NhdGlv
bi5ocmVmIik7CisgICAgd2luZG93MS5vbnVubG9hZCA9IHBhZ2UxVW5sb2FkZWQ7CisgICAgd2lu
ZG93MS5jbG9zZSgpOworfQorCitmdW5jdGlvbiB3aW5kb3cxTG9hZGVkKCkKK3sKKyAgICBpZnJh
bWUgPSB3aW5kb3cxLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUiKTsKKyAgICB0ZXN0
UGFzc2VkKCJMb2FkZWQgaWZyYW1lIGluIHdpbmRvdyAxLiIpOworICAgIGlmcmFtZS5jb250ZW50
V2luZG93LmNvdW50ZXIrKzsKKyAgICBzaG91bGRCZSgiaWZyYW1lLmNvbnRlbnRXaW5kb3cuY291
bnRlciIsICIxIik7CisgICAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJpZnJhbWUtcmVwYXJlbnRp
bmctbmV3LXBhZ2UtMi5odG1sIiwgIl9ibGFuayIpOworICAgIHdpbmRvdzIuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIHRyYW5zZmVySWZyYW1lLCBmYWxzZSk7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30K
K3dpbmRvdzEgPSB3aW5kb3cub3BlbigicmVzb3VyY2VzL2lmcmFtZS1yZXBhcmVudGluZy1uZXct
cGFnZS0xLmh0bWwiLCAiX2JsYW5rIik7Cit3aW5kb3cxLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCB3aW5kb3cxTG9hZGVkLCBmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1ZDY2MjQ3Li5iNDg4ZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0
b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJl
dHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICBU
ZXN0OiBmYXN0L2ZyYW1lcy9pZnJhbWUtcmVwYXJlbnRpbmctbmV3LXBhZ2UuaHRtbAorCisgICAg
ICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZSk6CisgICAgICAgIE1vdmUgdGhlIGNvZGUgc2V0
dGluZyB0aGUgZnJhbWUgbmFtZSBpbnRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXROYW1lQW5kT3BlblVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6dXBkYXRlT25SZXBhcmVudGluZyk6
CisgICAgICAgIENhbGxlZCBvbiB0aGUgZnJhbWUgdGhhdCB3YXMganVzdCByZS1wYXJlbnRlZCBh
bmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIERvY3VtZW50LgorICAgICAgICBTaW1wbHkgaW52b2tl
IEZyYW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KC4uLik7CisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGh0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnNldE5hbWUpOgorICAgICAgICBNYWtlIHRoaXMgYSB2aXJ0dWFsIGZ1bmN0aW9uLCB0
byBiZSBhYmxlIHRvIHJlYWNoIGl0IHZpYSBGcmFtZTo6bV9vd25lckVsZW1lbnQuCisKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjphZG9wdEZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCwgZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudCgpLgorICAgICAgICBJdCBjb21wbGltZW50cyBjcmVhdGVGcmFtZSgpIGlu
IHRoYXQgYSBmcmFtZSB3aGljaCB3YXMgcmUtcGFyZW50ZWQKKyAgICAgICAgaW4gRE9NIGFuZCBw
b3RlbnRpYWxseSBjaGFuZ2VzIFBhZ2UsIHNob3VsZCBub3RpZnkgdGhlIFdlYktpdAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiBhYm91dCBwb3RlbnRpYWwgb3duZXJzaGlwIGNoYW5nZS4KKyAgICAg
ICAgTWFueSBlbWJlZGRlcnMgYXNzdW1lIHRoYXQgUGFnZSBvd25zIGFsbCB0aGUgRnJhbWVzLCBv
ciBhdCBsZWFzdAorICAgICAgICBhbGwgRnJhbWVzIGFyZSBkZXN0cm95ZWQgYmVmb3JlICd0aGVp
cicgUGFnZSBpcyBkZXN0cm95ZWQuIE9idmlvdXNseSwgaWYgRnJhbWUKKyAgICAgICAgY2FuIGJl
IHRyYW5zZmVycmVkIHRvIGFub3RoZXIgUGFnZSwgdGhlIGVtYmVkZGVycyBzaG91bGQgYmUgbm90
aWZpZWQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjp0cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQsIG1h
a2VzIGFjdHVhbCBhZGp1c3RtZW50cyBmb3IgRnJhbWUgLSByZXNldHMgdGhlIFBhZ2UsCisgICAg
ICAgIHVwZGF0ZXMgdGhlIGZyYW1lIHRyZWUgYW5kIGZyYW1lIG5hbWUsIGNhbGxzIHRvIEZyYW1l
TG9hZGVyQ2xpZW50CisgICAgICAgIHRvIHVwZGF0ZSBleHRlcm5hbCBvYmplY3RzIGFuZCByZWN1
cnNlcyBpbnRvIGNoaWxkcmVuLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIG9uIGNoaWxkIGZy
YW1lcy4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMC0wMi0xMCAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
IGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCmluZGV4
IDM4OTA4NTAuLjlkODRiNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgSFRNTEZyYW1lT3duZXJF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQordm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6c2V0TmFtZSgpCiB7CiAgICAgbV9mcmFtZU5hbWUgPSBnZXRBdHRyaWJ1dGUobmFtZUF0dHIp
OwogICAgIGlmIChtX2ZyYW1lTmFtZS5pc051bGwoKSkKQEAgLTE1OCw3ICsxNTgsMTEgQEAgdm9p
ZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6c2V0TmFtZUFuZE9wZW5VUkwoKQogICAgIAogICAgIGlm
IChGcmFtZSogcGFyZW50RnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICBtX2Zy
YW1lTmFtZSA9IHBhcmVudEZyYW1lLT50cmVlKCktPnVuaXF1ZUNoaWxkTmFtZShtX2ZyYW1lTmFt
ZSk7Ci0gICAgCit9CisKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVu
VVJMKCkKK3sKKyAgICBzZXROYW1lKCk7CiAgICAgb3BlblVSTCgpOwogfQogCkBAIC0xNjcsNiAr
MTcxLDE0IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMQ2Fs
bGJhY2soTm9kZSogbikKICAgICBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4p
LT5zZXROYW1lQW5kT3BlblVSTCgpOwogfQogCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjp1
cGRhdGVPblJlcGFyZW50aW5nKCkKK3sKKyAgICBBU1NFUlQobV9yZW1haW5zQWxpdmVPblJlbW92
YWxGcm9tVHJlZSk7CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29udGVudEZyYW1lKCkpCisg
ICAgICAgIGZyYW1lLT50cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7Cit9CisKIHZv
aWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkBAIC0xNzUsNiAr
MTg3LDkgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KQogICAgIC8vIE90aGV3aXNlLCBhIHN5bmNocm9ub3VzIGxvYWQgdGhhdCBleGVjdXRlZCBKYXZh
U2NyaXB0IHdvdWxkIHNlZSBpbmNvcnJlY3QgCiAgICAgLy8gKDApIHZhbHVlcyBmb3IgdGhlIGZy
YW1lJ3MgcmVuZGVyZXItZGVwZW5kZW50IHByb3BlcnRpZXMsIGxpa2Ugd2lkdGguCiAgICAgbV9z
aG91bGRPcGVuVVJMQWZ0ZXJBdHRhY2ggPSB0cnVlOworCisgICAgaWYgKG1fcmVtYWluc0FsaXZl
T25SZW1vdmFsRnJvbVRyZWUpCisgICAgICAgIHVwZGF0ZU9uUmVwYXJlbnRpbmcoKTsKIH0KIAog
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGVhOTNhZTcuLjc3MTdkZjAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC02NCw4ICs2NCwxMSBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgdm9pZCBzZXROYW1lKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92ZSgp
OwogICAgIHZvaWQgY2hlY2tBdHRhY2hlZFRpbWVyRmlyZWQoVGltZXI8SFRNTEZyYW1lRWxlbWVu
dEJhc2U+Kik7CisgICAgdm9pZCB1cGRhdGVPblJlcGFyZW50aW5nKCk7CiAKICAgICBib29sIHZp
ZXdTb3VyY2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV92aWV3U291cmNlOyB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA0YTU2ZTQ1Li41YmZiNTc1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZyYW1lOwogCisgICAgdmlydHVhbCB2b2lkIHNldE5h
bWUoKSB7fQogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGcmFtZTsgfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IGMwYjA2ZDUuLjYyODdjM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0y
OTYsNiArMjk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiopIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKSB7IHJldHVybjsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyByZXR1cm4gMDsgfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0YzEyMWY0Li4yM2QxM2JjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIxOSw2ICsyMTksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVy
Q2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCBlMmY0MjFiLi40YTA1ODkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTE2MjcsNiArMTYyNyw1NCBA
QCB2b2lkIEZyYW1lOjpkaXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICBtX293bmVyRWxlbWVu
dCA9IDA7CiB9CiAKKy8vIFRoZSBmcmFtZSBpcyBtb3ZlZCBpbiBET00sIHBvdGVudGlhbGx5IHRv
IGFub3RoZXIgcGFnZS4KK3ZvaWQgRnJhbWU6OnRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1l
bnQoKQoreworICAgIEFTU0VSVChtX293bmVyRWxlbWVudCk7CisgICAgRnJhbWUqIG5ld1BhcmVu
dCA9IG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGJvb2wgZGlkVHJh
bnNmZXIgPSBmYWxzZTsKKworICAgIC8vIFN3aXRjaCBwYWdlLgorICAgIFBhZ2UqIG5ld1BhZ2Ug
PSBuZXdQYXJlbnQgPyBuZXdQYXJlbnQtPnBhZ2UoKSA6IDA7CisgICAgaWYgKG1fcGFnZSAhPSBu
ZXdQYWdlKSB7CisgICAgICAgIGlmIChwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
RnJhbWUoKSA9PSB0aGlzKQorICAgICAgICAgICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
c2V0Rm9jdXNlZEZyYW1lKDApOworCisgICAgICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICBt
X3BhZ2UtPmRlY3JlbWVudEZyYW1lQ291bnQoKTsKKworICAgICAgICBtX3BhZ2UgPSBuZXdQYWdl
OworCisgICAgICAgIGlmIChuZXdQYWdlKQorICAgICAgICAgICAgbmV3UGFnZS0+aW5jcmVtZW50
RnJhbWVDb3VudCgpOworCisgICAgICAgIGRpZFRyYW5zZmVyID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBVcGRhdGUgdGhlIGZyYW1lIHRyZWUuCisgICAgRnJhbWUqIG9sZFBhcmVudCA9IHRyZWUo
KS0+cGFyZW50KCk7CisgICAgaWYgKG9sZFBhcmVudCAhPSBuZXdQYXJlbnQpIHsKKyAgICAgICAg
aWYgKG9sZFBhcmVudCkKKyAgICAgICAgICAgIG9sZFBhcmVudC0+dHJlZSgpLT5yZW1vdmVDaGls
ZCh0aGlzKTsKKyAgICAgICAgaWYgKG5ld1BhcmVudCkgeworICAgICAgICAgICAgbmV3UGFyZW50
LT50cmVlKCktPmFwcGVuZENoaWxkKHRoaXMpOworICAgICAgICAgICAgbV9vd25lckVsZW1lbnQt
PnNldE5hbWUoKTsKKyAgICAgICAgfQorICAgICAgICBkaWRUcmFuc2ZlciA9IHRydWU7CisgICAg
fQorCisgICAgLy8gQXZvaWQgdW5uZWNlc3NhcnkgY2FsbHMgdG8gY2xpZW50IGFuZCBmcmFtZSBz
dWJ0cmVlIGlmIHRoZSBmcmFtZSBlbmRlZAorICAgIC8vIHVwIG9uIHRoZSBzYW1lIHBhZ2UgYW5k
IHVuZGVyIHRoZSBzYW1lIHBhcmVudCBmcmFtZS4KKyAgICBpZiAoZGlkVHJhbnNmZXIpIHsKKyAg
ICAgICAgLy8gTGV0IGV4dGVybmFsIGNsaWVudHMgdXBkYXRlIHRoZW1zZWx2ZXMuCisgICAgICAg
IGxvYWRlcigpLT5jbGllbnQoKS0+ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgp
OworICAgIAorICAgICAgICAvLyBEbyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBjaGlsZHJlbi4KKyAg
ICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkLT50
cmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7CisgICAgfQorfQorCiBTdHJpbmcgRnJh
bWU6OmRvY3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKERvY3VtZW50VHlwZSog
ZG9jdHlwZSA9IGRvY3VtZW50KCktPmRvY3R5cGUoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMzNiYjQzNS4uMjZkMWVmYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTc2LDYgKzc2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFnZSgpOworICAgICAgICB2
b2lkIHRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKKwogICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcGFn
ZURlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjE3ZmRhNi4uZTZjNDAzZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0d2VlbiBwYWdlcywg
aXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGV0YWNoZWRGcm9tUGFyZW50Myk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCk6CisgICAgICAgIFNp
bmNlIENocm9taXVtJ3MgV2ViRnJhbWVDbGllbnQgaXMgZGVzdHJveWVkIG9uY2UgYSB3aW5kb3cg
aXMgY2xvc2VkLAorICAgICAgICBpZiBGcmFtZSBtb3ZlcyBiZXR3ZWVuIFBhZ2VzLCB0aGUgY2xp
ZW50IG9mIGNvcnJlc3BvbmRpbmcgV2ViRnJhbWUKKyAgICAgICAgc2hvdWxkIGJlIHJlcGxhY2Vk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6
OnNldENsaWVudCk6CisKIDIwMTAtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IDQwNzgxNTEuLmQ3OGY1NTcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTE5Nyw3ICsxOTcsNiBAQCBwdWJsaWM6
CiAgICAgLy8gV0FSTklORzogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCB2ZXJ5IGZyZXF1ZW50
bHkuCiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUN1cnJlbnRIaXN0b3J5SXRlbShXZWJGcmFt
ZSopIHsgfQogCi0KICAgICAvLyBMb3ctbGV2ZWwgcmVzb3VyY2Ugbm90aWZpY2F0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIEFuIGlkZW50aWZpZXIg
d2FzIGFzc2lnbmVkIHRvIHRoZSBzcGVjaWZpZWQgcmVxdWVzdC4gIFRoZSBjbGllbnQKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCBiOTg0MzA4
Li44ZmIyNjdkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRl
dGFjaGVkRnJvbVBhcmVudDMoKQogICAgIAogICAgIC8vIFN0b3AgY29tbXVuaWNhdGluZyB3aXRo
IHRoZSBXZWJGcmFtZUNsaWVudCBhdCB0aGlzIHBvaW50IHNpbmNlIHdlIGFyZSBubwogICAgIC8v
IGxvbmdlciBhc3NvY2lhdGVkIHdpdGggdGhlIFBhZ2UuCi0gICAgbV93ZWJGcmFtZS0+ZHJvcENs
aWVudCgpOworICAgIG1fd2ViRnJhbWUtPnNldENsaWVudCgwKTsKIH0KIAogLy8gVGhpcyBmdW5j
dGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYXNzb2NpYXRpbmcgdGhlIHxpZGVudGlmaWVyfCB3aXRo
IGEgZ2l2ZW4KQEAgLTEzMzIsNiArMTMzMiwxOSBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmNyZWF0ZUZyYW1lKAogICAgIHJldHVybiBtX3dlYkZyYW1lLT5jcmVh
dGVDaGlsZEZyYW1lKGZyYW1lUmVxdWVzdCwgb3duZXJFbGVtZW50KTsKIH0KIAordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEltcGw6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQor
eworICAgIEFTU0VSVChtX3dlYkZyYW1lLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKSk7CisKKyAg
ICBXZWJGcmFtZUltcGwqIG5ld1BhcmVudCA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1f
d2ViRnJhbWUtPnBhcmVudCgpKTsKKyAgICBpZiAoIW5ld1BhcmVudCB8fCAhbmV3UGFyZW50LT5j
bGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmVwbGFjZSB0aGUgY2xpZW50IHNp
bmNlIHRoZSBvbGQgY2xpZW50IG1heSBiZSBkZXN0cm95ZWQgd2hlbiB0aGUKKyAgICAvLyBwcmV2
aW91cyBwYWdlIGlzIGNsb3NlZC4KKyAgICBtX3dlYkZyYW1lLT5zZXRDbGllbnQobmV3UGFyZW50
LT5jbGllbnQoKSk7Cit9CisKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmNyZWF0ZVBsdWdpbigKICAgICBjb25zdCBJbnRTaXplJiBzaXplLCAvLyBGSVhNRTogaG93
IGRvIHdlIHVzZSB0aGlzPwogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggOTAxNjAwYy4uOGEz
OTM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCkBA
IC0xNzQsNiArMTc0LDcgQEAgcHVibGljOgogICAgICAgICBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsCiAgICAgICAgIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFt
ZVRvTmV3RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVQbHVnaW4oCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLAogICAgICAgICBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmggYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IGNjYmE2ZDQuLjQ3ZjczYWEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMjIxLDcgKzIyMSw3IEBAIHB1YmxpYzoK
ICAgICBXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyKiBnZXRQYXNzd29yZExpc3RlbmVy
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqKTsKIAogICAgIFdlYkZyYW1lQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgZHJvcENsaWVudCgpIHsg
bV9jbGllbnQgPSAwOyB9CisgICAgdm9pZCBzZXRDbGllbnQoV2ViRnJhbWVDbGllbnQqIGNsaWVu
dCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgc3RhdGljIHZvaWQgc2VsZWN0V29yZEFy
b3VuZFBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uKTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCA3YTQ0ODg0Li4xNDIzZjlkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAyLTEw
ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZlIGlmcmFtZSBlbGVtZW50
IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMgb24gdGhlIG9sZCBwYWdl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQzODIK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRv
TmV3RG9jdW1lbnQpOgorICAgICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBvZiBhIG5l
dyB2aXJ0dWFsIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmg6CisKIDIwMTAtMDItMDkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAxY2Nj
OGExLi5hY2Y5NDEyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNDkxLDYgKzQ5MSwxMCBAQCBQYXNzUmVmUHRyPEZyYW1l
PiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmCiAgICAgcmV0dXJuIGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQogCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCkKK3sKK30K
Kwogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBw
bHVnaW5XaWRnZXQpCiB7CiAgICAgQVNTRVJUKCFtX3BsdWdpblZpZXcpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGIzNjQ4NzMu
LmQ1ZGI2ZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBh
bGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNv
bnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OlN0cmluZz4mLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
LCBib29sKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNv
cmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBi
YXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRl
eCAyYWE0YWQ3Li45NTIyZmNkIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMi0xMCAg
RG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBp
cyBtb3ZlZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OmRpZFRyYW5zZmVyQ2hpbGRG
cmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICBBZGRlZCBlbXB0eSBpbXBsZW1lbnRhdGlvbiBv
ZiBhIG5ldyB2aXJ0dWFsIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuaDoKKwogMjAwOS0xMi0wNiAgTWF4aW1lIFNpbW9uICA8c2ltb24u
bWF4aW1lQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuY3BwCmluZGV4IDNhODRjNGYuLjc3YzdjZmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAKQEAgLTc0NSw2ICs3
NDUsMTAgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6Y3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHIKICAgICByZXR1cm4gMDsKIH0KIAordm9p
ZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3Vt
ZW50KCkKK3sKK30KKwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAppbmRleCAyZmZkZThmLi5kYWRkYTE5
IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmgKQEAgLTIyMCw2ICsyMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvYWRNYW51YWxseSk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGVjNzdl
NzcuLjkzNDBhOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDItMTAgIERtaXRyeSBUaXRv
diAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiBhIGxpdmUgaWZyYW1lIGVsZW1lbnQgaXMgbW92ZWQgYmV0
d2VlbiBwYWdlcywgaXQgc3RpbGwgZGVwZW5kcyBvbiB0aGUgb2xkIHBhZ2UuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDM4MgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgQWRkZWQgZW1wdHkgaW1w
bGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKwogMjAx
MC0wMi0wOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyNzc0NzgzLi45ODhiOGE2IDEwMDY0NAot
LS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0x
ODgsNiArMTg4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1h
cmdpbkhlaWdodCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdHJpbmc+
JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTdHJpbmc+JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2lu
V2lkZ2V0KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCmluZGV4IGVhZWM4MDcuLjA0ZTY3NGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM1Miw2ICsxMzUyLDEw
IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQor
eworfQorCiBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCA0YzFmMzE4
Li5iMDdhNzNlIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIv
V2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0yODIsNiArMjgyLDIxIEBAIHZvaWQgUVdl
YkZyYW1lUHJpdmF0ZTo6aW5pdChRV2ViRnJhbWUgKnFmcmFtZSwgUVdlYkZyYW1lRGF0YSAqZnJh
bWVEYXRhKQogICAgIGZyYW1lLT5pbml0KCk7CiB9CiAKK3ZvaWQgUVdlYkZyYW1lUHJpdmF0ZTo6
c2V0UGFnZShRV2ViUGFnZSogbmV3UGFnZSkKK3sKKyAgICBpZiAocGFnZSA9PSBuZXdQYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgUVdlYkZyYW1lIGlzIGNyZWF0ZWQgYXMgYSBj
aGlsZCBvZiBRV2ViUGFnZSBvciBhIHBhcmVudCBRV2ViRnJhbWUuCisgICAgLy8gVGhhdCBhZGRz
IGl0IHRvIFFPYmplY3QncyBpbnRlcm5hbCBjaGlsZHJlbiBsaXN0IGFuZCBlbnN1cmVzIGl0IHdp
bGwgYmUKKyAgICAvLyBkZWxldGVkIHdoZW4gcGFyZW50IFFXZWJQYWdlIGlzIGRlbGV0ZWQuIFJl
cGFyZW50IGlmIG5lZWRlZC4KKyAgICBpZiAocS0+cGFyZW50KCkgPT0gcW9iamVjdF9jYXN0PFFP
YmplY3QqPihwYWdlKSkKKyAgICAgICAgcS0+c2V0UGFyZW50KG5ld1BhZ2UpOworCisgICAgcGFn
ZSA9IG5ld1BhZ2U7CisgICAgZW1pdCBxLT5wYWdlQ2hhbmdlZCgpOworfQorCiBXZWJDb3JlOjpT
Y3JvbGxiYXIqIFFXZWJGcmFtZVByaXZhdGU6Omhvcml6b250YWxTY3JvbGxCYXIoKSBjb25zdAog
ewogICAgIGlmICghZnJhbWUtPnZpZXcoKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCmluZGV4IDI1ZjZjOWIuLjQzMTVh
MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2ViZnJhbWUuaApAQCAtMjE3LDYgKzIxNyw4IEBAIFFfU0lHTkFMUzoKICAgICB2b2lk
IGxvYWRTdGFydGVkKCk7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoYm9vbCBvayk7CiAKKyAgICB2
b2lkIHBhZ2VDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdl
OwogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZVByaXZhdGU7CmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZV9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZV9wLmgKaW5kZXgg
ZWU5NzhiZS4uN2Q3OTQ3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWVfcC5o
CisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lX3AuaApAQCAtNzMsNiArNzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgICwgbWFyZ2luSGVpZ2h0KC0xKQogICAgICAgICB7fQogICAgIHZvaWQgaW5p
dChRV2ViRnJhbWUqIHFmcmFtZSwgUVdlYkZyYW1lRGF0YSogZnJhbWVEYXRhKTsKKyAgICB2b2lk
IHNldFBhZ2UoUVdlYlBhZ2UqKTsKIAogICAgIGlubGluZSBRV2ViRnJhbWUgKnBhcmVudEZyYW1l
KCkgeyByZXR1cm4gcW9iamVjdF9jYXN0PFFXZWJGcmFtZSo+KHEtPnBhcmVudCgpKTsgfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCAwZWY0MTViLi40NjdmZjA4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMi0xMCAgRG1pdHJ5
IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgbGl2ZSBpZnJhbWUgZWxlbWVudCBpcyBtb3Zl
ZCBiZXR3ZWVuIHBhZ2VzLCBpdCBzdGlsbCBkZXBlbmRzIG9uIHRoZSBvbGQgcGFnZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MzgyCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lX3AuaDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnNldFBh
Z2UpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFRyYW5zZmVy
Q2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICBUaGUgUVdlYkZyYW1lIGNhY2hlcyBh
IFFXZWJQYWdlIHdoaWNoIHNob3VsZCBiZSByZXBsYWNlZCB3aGVuIEZyYW1lIGlzIHJlLXBhcmVu
dGVkLgorICAgICAgICBBbHNvLCB0aGUgUVdlYkZyYW1lIGlzIGEgY2hpbGQgKGluIFFUIHRlcm1z
KSBvZiBRV2ViUGFnZSAtIHNvIHVwZGF0ZSB0aGF0IHJlbGF0aW9uc2hpcCBhcyB3ZWxsLgorICAg
ICAgICBFbWl0IGEgc2lnbmFsIHRoYXQgUVdlYkZyYW1lIG1vdmVkIHRvIGEgZGlmZmVyZW50IFFX
ZWJQYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
OgorCiAyMDEwLTAyLTEwICBEaWVnbyBHb256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAK
aW5kZXggNzYwZTM3ZS4uMjI1YjE3NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMTA2MCw2ICsxMDYwLDI0IEBAIFBhc3NSZWZQ
dHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGZyYW1lRGF0YS5mcmFtZS5yZWxlYXNlKCk7CiB9
CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdE
b2N1bWVudCgpCit7CisgICAgQVNTRVJUKG1fZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKKworICAg
IGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIHBhcmVudEZy
YW1lID0gbV93ZWJGcmFtZS0+ZC0+ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CisgICAgQVNTRVJU
KHBhcmVudEZyYW1lKTsKKworICAgIGlmIChRV2ViRnJhbWUqIHBhcmVudCA9IFFXZWJGcmFtZVBy
aXZhdGU6OmtpdChwYXJlbnRGcmFtZSkpIHsKKyAgICAgICAgbV93ZWJGcmFtZS0+ZC0+c2V0UGFn
ZShwYXJlbnQtPnBhZ2UoKSk7CisKKyAgICAgICAgaWYgKG1fd2ViRnJhbWUtPnBhcmVudCgpICE9
IHFvYmplY3RfY2FzdDxRT2JqZWN0Kj4ocGFyZW50KSkKKyAgICAgICAgICAgIG1fd2ViRnJhbWUt
PnNldFBhcmVudChwYXJlbnQpOworICAgIH0KK30KKwogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVM
b2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIF9taW1lVHlwZSkKIHsKIC8vICAgIHFEZWJ1ZygpPDwiICsrKysrKysrKysrKysrKysg
dXJsIGlzICI8PHVybC5wcmV0dHlVUkwoKTw8IiwgbWltZSA9ICI8PF9taW1lVHlwZTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDMyYjlj
YWEuLmFkZWIzMWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuaApAQCAtMTk0LDYgKzE5NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhl
aWdodCkgOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdE
b2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCog
cGx1Z2luV2lkZ2V0KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBmZWIyMmExLi45YTYwNzA4IDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBsaXZl
IGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRlcGVuZHMg
b24gdGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRUcmFuc2ZlckNo
aWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQgZW1wdHkgaW1wbGVtZW50YXRp
b24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEwLTAyLTEwICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYjkyN2M3Mi4uNmFlNmM1ZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTczNyw2ICs3MzcsMTAgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW4KICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudCgpCit7Cit9CisKIFBhc3NSZWZQdHI8
RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
bV93ZWJGcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggZjFmYjVmNy4uYTVmMmIxYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDYgKzExMiw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpTdHJpbmc+JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgYm9vbCBsb2Fk
TWFudWFsbHkpOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3Jl
OjpXaWRnZXQqIHBsdWdpbldpZGdldCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VM
b2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDA1ZWZiZDIuLmMxMDZjYTcgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDEwLTAyLTEwICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
YSBsaXZlIGlmcmFtZSBlbGVtZW50IGlzIG1vdmVkIGJldHdlZW4gcGFnZXMsIGl0IHN0aWxsIGRl
cGVuZHMgb24gdGhlIG9sZCBwYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzQzODIKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aWRUcmFuc2ZlckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KToKKyAgICAgICAgQWRkZWQgZW1wdHkg
aW1wbGVtZW50YXRpb24gb2YgYSBuZXcgdmlydHVhbCBtZXRob2QuCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0wMi0wNCAgS2V2aW4gT2xs
aXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0
ZXIgY2hhbmdlcyBpbiByNTQzNDUuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guY3BwCmluZGV4IDViYjRkYzEuLjZhZmRkODggMTAwNjQ0Ci0tLSBhL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCisrKyBiL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCkBAIC04NDEsNiArODQx
LDEwIEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V3g6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGNoaWxkRnJhbWUucmVs
ZWFzZSgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpZFRyYW5zZmVyQ2hpbGRG
cmFtZVRvTmV3RG9jdW1lbnQoKQoreworfQorCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRl
ckNsaWVudFd4OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAppbmRleCAwYzI5OTQxLi42MjIxOGZmIDEw
MDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgK
KysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCkBAIC0y
MDEsNiArMjAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKTsKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkp
IDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1
Z2luV2lkZ2V0KTsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>