<?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>102356</bug_id>
          
          <creation_ts>2012-11-15 02:05:03 -0800</creation_ts>
          <short_desc>leak: AudioContext objects are leaking.</short_desc>
          <delta_ts>2012-12-30 21:28:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>767837</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-15 02:05:03 -0800</bug_when>
    <thetext>According to spec an AudioContext will not be garbage collected. It will live until the document goes away.
It is not true at the moment. It keeps alive even after navigation.

As a result it is leaking 
- HRTFDatabase instance ~36mb;
- if it is an offline audio context then it also leaking offline render thread;
and other relatively small objects.

I found two different reasons for such leak:
1) AudioContext deletes OfflineDestinationNode only if it has been initialized.
2) at uninitialization stage it shuts down audio thread in Destination node but the thread is a part of nodes deletion process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767846</commentid>
    <comment_count>1</comment_count>
      <attachid>174379</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-15 02:25:24 -0800</bug_when>
    <thetext>Created attachment 174379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768049</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-11-15 07:18:54 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=174379) [details]
&gt; Patch

You should be able to test this by using inspector protocol test harness to capture native memory snapshot and compare audio context footprint before and after navigation to see that the context was actually destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768272</commentid>
    <comment_count>3</comment_count>
      <attachid>174379</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 10:36:39 -0800</bug_when>
    <thetext>Comment on attachment 174379
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:199
&gt; +    ref();

There must be a way to solve this problem without calling ref() and deref() manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768383</commentid>
    <comment_count>4</comment_count>
      <attachid>174379</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-15 12:25:00 -0800</bug_when>
    <thetext>Comment on attachment 174379
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:199
&gt;&gt; +    ref();
&gt; 
&gt; There must be a way to solve this problem without calling ref() and deref() manually.

I chose this solution because I had found about 20 cases in WebCore where the same technic was used.

The simplest variant is to have RefPtr&lt;AudioContext&gt; m_self member inside AudioContext and release it instead of deref. I&apos;d say that it looks less understandable. I found only two places with the same trick. FileThread and DatabaseThread classes.
The other way is to have a Vector&lt;RefPtr&lt;AudioContext&gt; &gt; somewhere inside ScriptExecutionContext or Document. This variant adds another dependency .

What do you think about this solutions and do you know another class with the same lifetime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768396</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-15 12:43:20 -0800</bug_when>
    <thetext>&gt; I chose this solution because I had found about 20 cases in WebCore where the same technic was used.

Really?  I&apos;m curious where those are.  We&apos;ve been trying to avoid manually calling ref and deref for a while.

&gt; What do you think about this solutions and do you know another class with the same lifetime.

I haven&apos;t studied the issue in detail, but one approach is to have hasPendingActivity() return |true| in these cases and then the JavaScript garbage collector will keep this object alive (because it is an ActiveDOMObject).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769340</commentid>
    <comment_count>6</comment_count>
      <attachid>174704</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-16 09:11:29 -0800</bug_when>
    <thetext>Created attachment 174704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769343</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-16 09:14:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; I chose this solution because I had found about 20 cases in WebCore where the same technic was used.
&gt; 
&gt; Really?  I&apos;m curious where those are.  We&apos;ve been trying to avoid manually calling ref and deref for a while.
&gt; 
&gt; &gt; What do you think about this solutions and do you know another class with the same lifetime.
&gt; 
&gt; I haven&apos;t studied the issue in detail, but one approach is to have hasPendingActivity() return |true| in these cases and then the JavaScript garbage collector will keep this object alive (because it is an ActiveDOMObject).

done.

(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=174379) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; You should be able to test this by using inspector protocol test harness to capture native memory snapshot and compare audio context footprint before and after navigation to see that the context was actually destroyed.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769351</commentid>
    <comment_count>8</comment_count>
      <attachid>174704</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-16 09:22:46 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14872203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769355</commentid>
    <comment_count>9</comment_count>
      <attachid>174704</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-16 09:27:34 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14860309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769380</commentid>
    <comment_count>10</comment_count>
      <attachid>174704</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 09:50:28 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

The ActiveDOMObject integration looks good.  I wanted to mark this r+, but I wasn&apos;t sure about the audio-specific parts.  Thanks for iterating on the approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769402</commentid>
    <comment_count>11</comment_count>
      <attachid>174704</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-16 10:10:49 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14848887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769451</commentid>
    <comment_count>12</comment_count>
      <attachid>174704</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-16 10:55:18 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14872233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769696</commentid>
    <comment_count>13</comment_count>
      <attachid>174704</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-11-16 15:02:48 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

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

Thanks for doing this.  The audio parts seem ok.  For what it&apos;s worth, the AudioContext used to not leak and is something I definitely verified, but obviously code changes...  One change which may have been an issue is:
http://trac.webkit.org/changeset/133239

I have some minor style nits, and looks like the bots are unhappy, but looks good from the audio standpoint.  I&apos;ll leave it up to Adam as far as the details of the test.

&gt; LayoutTests/inspector-protocol/nmi-webaudio-leak-test.html:25
&gt; +	for (var index = 0; index &lt; typeNames.length; ++index) {

nit: indentation

&gt; LayoutTests/inspector-protocol/nmi-webaudio-leak-test.html:56
&gt; +	else

nit: indentation

&gt; LayoutTests/inspector-protocol/nmi-webaudio-leak-test.html:61
&gt; +    function iFrameNavigated(messageObject)  {

nit: extra space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769857</commentid>
    <comment_count>14</comment_count>
      <attachid>174704</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-16 19:34:56 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14861419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769867</commentid>
    <comment_count>15</comment_count>
      <attachid>174704</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 19:48:53 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14872366

New failing tests:
inspector-protocol/nmi-webaudio-leak-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769895</commentid>
    <comment_count>16</comment_count>
      <attachid>174704</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-16 22:09:51 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14876174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769931</commentid>
    <comment_count>17</comment_count>
      <attachid>174704</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-17 03:07:23 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14868505

New failing tests:
inspector-protocol/nmi-webaudio-leak-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769934</commentid>
    <comment_count>18</comment_count>
      <attachid>174704</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-17 04:08:49 -0800</bug_when>
    <thetext>Comment on attachment 174704
Patch

Attachment 174704 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14873449

New failing tests:
inspector-protocol/nmi-webaudio-leak-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770116</commentid>
    <comment_count>19</comment_count>
      <attachid>174846</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-18 06:18:23 -0800</bug_when>
    <thetext>Created attachment 174846
with guard #if ENABLE(WEB_AUDIO)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770137</commentid>
    <comment_count>20</comment_count>
      <attachid>174846</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-18 09:07:48 -0800</bug_when>
    <thetext>Comment on attachment 174846
with guard #if ENABLE(WEB_AUDIO)

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

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:317
&gt;      m_document = 0; // document is going away

There&apos;s a bug on file about m_document not being needed in this class because ActiveDOMObject already provides one.

&gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:319
&gt; +    // Usually ScriptExecutionController calls stop twice.

What is a ScriptExecutionController?  Grepping in WebCore doesn&apos;t find anything by that name.

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:260
&gt; +    // ScriptExecutionContext calls stop twice.
&gt; +    // We&apos;d like to schedule only one stop action for them.

Is that a bug with ScriptExecutionContext?  Should we file a but and investigate?

&gt; LayoutTests/inspector-protocol/nmi-webaudio-leak-test.html:3
&gt; +&lt;script type=&quot;text/javascript&quot; src=&quot;../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;

type=&quot;text/javascript&quot;  &lt;--- this isn&apos;t needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770176</commentid>
    <comment_count>21</comment_count>
      <attachid>174846</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 12:55:13 -0800</bug_when>
    <thetext>Comment on attachment 174846
with guard #if ENABLE(WEB_AUDIO)

Attachment 174846 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14879521

New failing tests:
inspector-protocol/nmi-webaudio-leak-test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770348</commentid>
    <comment_count>22</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-18 22:11:20 -0800</bug_when>
    <thetext>Committed r135111: &lt;http://trac.webkit.org/changeset/135111&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770355</commentid>
    <comment_count>23</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-18 22:17:26 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 174846 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174846&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:317
&gt; &gt;      m_document = 0; // document is going away
&gt; 
&gt; There&apos;s a bug on file about m_document not being needed in this class because ActiveDOMObject already provides one.

I&apos;ll do that in a separate patch.

&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.cpp:319
&gt; &gt; +    // Usually ScriptExecutionController calls stop twice.
&gt; 
&gt; What is a ScriptExecutionController?  Grepping in WebCore doesn&apos;t find anything by that name.

typo was fixed.

&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.h:260
&gt; &gt; +    // ScriptExecutionContext calls stop twice.
&gt; &gt; +    // We&apos;d like to schedule only one stop action for them.
&gt; 
&gt; Is that a bug with ScriptExecutionContext?  Should we file a but and investigate?

will do

&gt; 
&gt; &gt; LayoutTests/inspector-protocol/nmi-webaudio-leak-test.html:3
&gt; &gt; +&lt;script type=&quot;text/javascript&quot; src=&quot;../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; type=&quot;text/javascript&quot;  &lt;--- this isn&apos;t needed

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770572</commentid>
    <comment_count>24</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-19 04:01:38 -0800</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/Modules/webaudio/AudioContext.h:260
&gt; &gt; +    // ScriptExecutionContext calls stop twice.
&gt; &gt; +    // We&apos;d like to schedule only one stop action for them.
&gt; 
&gt; Is that a bug with ScriptExecutionContext?  Should we file a but and investigate?

It is calling twice from DocumentLoader::commitLoad with these call stacks.

#0  WebCore::AudioContext::stop () at ../../third_party/WebKit/Source/WebCore/Modules/webaudio/AudioContext.cpp:316
#1  WebCore::ScriptExecutionContext::stopActiveDOMObjects () at ../../third_party/WebKit/Source/WebCore/dom/ScriptExecutionContext.cpp:234
#2  WebCore::Document::detach () at ../../third_party/WebKit/Source/WebCore/dom/Document.cpp:2093
#3  WebCore::Document::prepareForDestruction () at ../../third_party/WebKit/Source/WebCore/dom/Document.cpp:2155
#4  WebCore::Frame::setView (view=...) at ../../third_party/WebKit/Source/WebCore/page/Frame.cpp:266
#5  WebCore::Frame::createView (viewportSize=..., backgroundColor=..., transparent=false, fixedLayoutSize=..., fixedVisibleContentRect=..., useFixedLayout=false, horizontalScrollbarMode=WebCore::ScrollbarAuto, horizontalLock=false, 
    verticalScrollbarMode=WebCore::ScrollbarAuto, verticalLock=false) at ../../third_party/WebKit/Source/WebCore/page/Frame.cpp:781
#6  WebKit::WebFrameImpl::createFrameView () at ../../third_party/WebKit/Source/WebKit/chromium/src/WebFrameImpl.cpp:2287
#7  WebKit::FrameLoaderClientImpl::makeDocumentView () at ../../third_party/WebKit/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:282
#8  WebKit::FrameLoaderClientImpl::transitionToCommittedForNewPage () at ../../third_party/WebKit/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1420
#9  WebCore::FrameLoader::transitionToCommitted (cachedPage=...) at ../../third_party/WebKit/Source/WebCore/loader/FrameLoader.cpp:1850
#10 WebCore::FrameLoader::commitProvisionalLoad () at ../../third_party/WebKit/Source/WebCore/loader/FrameLoader.cpp:1692
#11 WebCore::DocumentLoader::commitIfReady () at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:281
#12 WebCore::DocumentLoader::commitLoad (data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:313
#13 WebCore::DocumentLoader::receivedData (data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:387


#0  WebCore::AudioContext::stop () at ../../third_party/WebKit/Source/WebCore/Modules/webaudio/AudioContext.cpp:316
#1  WebCore::ScriptExecutionContext::stopActiveDOMObjects () at ../../third_party/WebKit/Source/WebCore/dom/ScriptExecutionContext.cpp:234
#2  WebCore::FrameLoader::clear (newDocument=0x7fffec30d000, clearWindowProperties=true, clearScriptObjects=true, clearFrameView=true) at ../../third_party/WebKit/Source/WebCore/loader/FrameLoader.cpp:560
#3  WebCore::DocumentWriter::begin (urlReference=..., dispatch=false, ownerDocument=0x0) at ../../third_party/WebKit/Source/WebCore/loader/DocumentWriter.cpp:134
#4  WebCore::DocumentLoader::commitData (bytes=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:328
#5  WebKit::WebFrameImpl::commitDocumentData (data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebKit/chromium/src/WebFrameImpl.cpp:1125
#6  WebKit::FrameLoaderClientImpl::committedLoad (loader=0x7fffeb864000, data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1136
#7  WebCore::DocumentLoader::commitLoad (data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:321
#8  WebCore::DocumentLoader::receivedData (data=0x7fffec2e2140 &quot;&lt;html&gt;\n&lt;/html&gt;\n\377&quot;) at ../../third_party/WebKit/Source/WebCore/loader/DocumentLoader.cpp:387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770645</commentid>
    <comment_count>25</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 05:36:50 -0800</bug_when>
    <thetext>Reverted r135111 for reason:

The patch caused crashes in several layout tests

Committed r135145: &lt;http://trac.webkit.org/changeset/135145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770647</commentid>
    <comment_count>26</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 05:38:05 -0800</bug_when>
    <thetext>Several tests hit an assertion in a Linux Debug build.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=webaudio%2Fbiquad-allpass.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=webaudio%2Fdistance-inverse.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=webaudio%2Faudionode-connect-order.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=webaudio%2Faudioparam-setTargetAtTime.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=webaudio%2Fdelaynode-max-nondefault-delay.html

...etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770698</commentid>
    <comment_count>27</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-19 06:54:23 -0800</bug_when>
    <thetext>Committed r135152: &lt;http://trac.webkit.org/changeset/135152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770703</commentid>
    <comment_count>28</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-19 06:58:09 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770704</commentid>
    <comment_count>29</comment_count>
      <attachid>174971</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-11-19 06:58:17 -0800</bug_when>
    <thetext>Created attachment 174971
relanded with RefPtr&lt;AudioContext&gt; guard in deleteMarkedNodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798139</commentid>
    <comment_count>30</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-29 08:21:01 -0800</bug_when>
    <thetext>*** Bug 86910 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798141</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-29 08:21:10 -0800</bug_when>
    <thetext>*** Bug 80681 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798238</commentid>
    <comment_count>32</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-30 09:47:21 -0800</bug_when>
    <thetext>Is this test specific to Chromium?
In a GTK build with WebAudio enabled the test times out. Memory.getProcessMemoryDistribution() returns an amount much lower than 15000000:  996. So it loops forever calling:

InspectorTest.sendCommand(&apos;Memory.getProcessMemoryDistribution&apos;, {}, waitForSharedAudioData);

again and again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798289</commentid>
    <comment_count>33</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-30 21:28:54 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Is this test specific to Chromium?
&gt; In a GTK build with WebAudio enabled the test times out. Memory.getProcessMemoryDistribution() returns an amount much lower than 15000000:  996. So it loops forever calling:
&gt; 
&gt; InspectorTest.sendCommand(&apos;Memory.getProcessMemoryDistribution&apos;, {}, waitForSharedAudioData);
&gt; 
&gt; again and again.

Ilya: in order to make this test more robust and portable I suggest adding a new Inspector counter tracking the number of live AudioContexts. See Source/WebCore/testing/Internals.idl, numberOfLiveNodes/Documents, and how they&apos;re implemented.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174379</attachid>
            <date>2012-11-15 02:25:24 -0800</date>
            <delta_ts>2012-11-16 09:11:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102356-20121115142321.patch</filename>
            <type>text/plain</type>
            <size>9985</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkMzNlOGQ2OGMzM2Uw
ZDgyNGZiZmQwZWYwMjE5MDE1MDcwMTkyMC4uYTUyMjkzYTg1NmE3MWRhOGRhY2VmZjlkNjljNDRk
ZDJhOTczZDY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTExLTE1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICB3ZWJhdWRpbzog
bGVhazogQXVkaW9Db250ZXh0IG9iamVjdHMgYXJlIGxlYWtpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIzNTYKKworICAgICAgICBBIGNsZWFu
LXVwIGNvZGUgd2FzIG1vdmVkIGZyb20gdW5pbml0aWFsaXplIHRvIGNsZWFyIG1ldGhvZC4KKyAg
ICAgICAgcmVmIGF0IGNvbnN0cnVjdENvbW1vbiBhbmQgZGVyZWYgYXQgY2xlYXIgbWFrZSBhIGd1
YXJhbnR5IHRoYXQgQXVkaW9Db250ZXh0IHdpbGwgZGllIG9ubHkgYWZ0ZXIgbmF2aWdhdGlvbi4K
KyAgICAgICAgbV9pc1N0b3BTY2hlZHVsZWQgZmlsdGVycyBvdXQgc2Vjb25kIEFjdGl2ZURPTU9i
amVjdDo6c3RvcCBjYWxsLgorICAgICAgICBtYXJrRm9yRGVsZXRpb24gYXBwZW5kcyBBdWRpb05v
ZGUgcG9pbnRlciB0byBtX25vZGVzVG9EZWxldGUgYXJyYXkgaWYgdGhlcmUgaXMgbm8gYWN0aXZl
IGF1ZGlvIHRocmVhZC4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
dW5pbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3RvcERpc3Bh
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChBdWRpb0NvbnRleHQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTItMTEt
MTQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogY29udGV4dCBtZW51IG9uIE9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQncyB2
YWx1ZXMgaXMgbWFza2VkIGJ5IHRoZSBzZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk0YmZiYjQ0MDE0ZDEwMzdmYTRl
OThlMDUwZTNmZDk4YzU5OTMxZTkuLjFkZDIwNTYzZDYzMWM2ZDMwMGMzYmY5NWM1YTkzZmE3ZDUy
ZGI3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTE0Myw2ICsxNDMsNyBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVk
aW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsCiAvLyBD
b25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9i
amVjdChkb2N1bWVudCwgdGhpcykKKyAgICAsIG1faXNTdG9wU2NoZWR1bGVkKGZhbHNlKQogICAg
ICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQo
ZmFsc2UpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQpAQCAtMTY5LDYgKzE3MCw3IEBAIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCkKIC8vIENvbnN0cnVj
dG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4dDo6
QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGRvY3VtZW50LCB0aGlzKQorICAgICwgbV9pc1N0b3BTY2hlZHVsZWQoZmFsc2Up
CiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZChmYWxzZSkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCkBAIC0xOTIsNiArMTk0LDkg
QEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKIAogdm9pZCBBdWRpb0NvbnRleHQ6OmNvbnN0cnVj
dENvbW1vbigpCiB7CisgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3Qg
ZGllIG9ubHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KKyAgICAvLyBMZXRzIGluY3JlYXNlIHJlZiBj
b3VudCBhbmQgZGVjcmVhc2UgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIHJlZigpOwogI2lmIFVT
RShHU1RSRUFNRVIpCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lcigpOwogI2VuZGlmCkBAIC0yMDcs
NiArMjEyLDggQEAgQXVkaW9Db250ZXh0Ojp+QXVkaW9Db250ZXh0KCkKICAgICBmcHJpbnRmKHN0
ZGVyciwgIiVwOiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CiAjZW5k
aWYKICAgICAvLyBBdWRpb05vZGVzIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlaXIgY29udGV4dCwg
c28gdGhlcmUgc2hvdWxkIGJlIG5vIHdheSB0byBiZSBpbiB0aGUgZGVzdHJ1Y3RvciBpZiB0aGVy
ZSBhcmUgc3RpbGwgQXVkaW9Ob2RlcyBhcm91bmQuCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6
ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7CiAgICAgQVNTRVJUKCFtX25vZGVz
VG9EZWxldGUuc2l6ZSgpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE5vZGVzLnNpemUoKSk7
CiAgICAgQVNTRVJUKCFtX2ZpbmlzaGVkTm9kZXMuc2l6ZSgpKTsKQEAgLTIzOCwzNSArMjQ1LDQ1
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAgICAgfQogfQogCi12b2lk
IEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3ZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVh
c2Ugb3VyIHJlZmVyZW5jZSB0byB0aGUgZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRl
eHQgd2lsbCBldmVyIGJlIGRlbGV0ZWQgc2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMg
YSByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQor
ICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS5jbGVhcigpOwogCi0gICAgaWYgKG1faXNJbml0aWFs
aXplZCkgewotICAgICAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRl
ZCBiZWZvcmUgd2UgZmluaXNoIHVuaW5pdGlhbGl6aW5nLgotICAgICAgICBSZWZQdHI8QXVkaW9D
b250ZXh0PiBwcm90ZWN0KHRoaXMpOworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2Jv
ZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2Vs
dmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9u
b2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKIAotICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCi0gICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmlu
aXRpYWxpemUoKTsKKyAgICAvLyBEZWNyZWFzZSBjb3VudGVyIHRoYXQgaGFzIGJlZW4gaW5jcmVh
c2VkIGluIGNvbnN0cnVjdENvbW1vbi4KKyAgICBkZXJlZigpOworfQogCi0gICAgICAgIC8vIERv
bid0IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBp
dCdzIGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCi0gICAgICAgIG1faXNB
dWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKK3ZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAgLy8gV2UgaGF2
ZSB0byByZWxlYXNlIG91ciByZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3Jl
IHRoZSBjb250ZXh0IHdpbGwgZXZlciBiZSBkZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBu
b2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0LgotICAgICAgICBtX2Rlc3RpbmF0
aW9uTm9kZS5jbGVhcigpOworICAgIGlmICghbV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIEFT
U0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKLSAgICAgICAgICAgIC0tc19oYXJkd2FyZUNv
bnRleHRDb3VudDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gR2V0IHJpZCBvZiB0
aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4KLSAgICAgICAgZGVyZWZVbmZp
bmlzaGVkU291cmNlTm9kZXMoKTsKKyAgICAvLyBUaGlzIHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlh
bGl6ZSgpOwogCi0gICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgLy8gRG9uJ3QgYWxs
b3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxy
ZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4KKyAgICBtX2lzQXVkaW9UaHJlYWRG
aW5pc2hlZCA9IHRydWU7CiAKLSAgICAgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAg
aWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250
ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAgICAgfQorCisg
ICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4K
KyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVk
ID0gZmFsc2U7CiB9CiAKIGJvb2wgQXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkgY29uc3QK
QEAgLTI4Myw3ICszMDAsNyBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNSdW5uYWJsZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpOwogfQogCi12b2lk
IEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCit2b2lk
IEF1ZGlvQ29udGV4dDo6c3RvcERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogewogICAgIEF1ZGlv
Q29udGV4dCogY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Db250ZXh0Kj4odXNlckRh
dGEpOwogICAgIEFTU0VSVChjb250ZXh0KTsKQEAgLTI5MSwxNyArMzA4LDIzIEBAIHZvaWQgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemVEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29udGV4dC0+dW5pbml0aWFsaXplKCk7CisgICAgY29udGV4dC0+Y2xl
YXIoKTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogewogICAgIG1fZG9jdW1lbnQg
PSAwOyAvLyBkb2N1bWVudCBpcyBnb2luZyBhd2F5CiAKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4
ZWN1dGlvbkNvbnRyb2xsZXIgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisK
ICAgICAvLyBEb24ndCBjYWxsIHVuaW5pdGlhbGl6ZSgpIGltbWVkaWF0ZWx5IGhlcmUgYmVjYXVz
ZSB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBpbiB0aGUgbWlkZGxlCiAgICAgLy8gb2Yg
ZGVhbGluZyB3aXRoIGFsbCBvZiBpdHMgQWN0aXZlRE9NT2JqZWN0cyBhdCB0aGlzIHBvaW50LiB1
bmluaXRpYWxpemUoKSBjYW4gZGUtcmVmZXJlbmNlIG90aGVyCiAgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0cyBzbyBsZXQncyBzY2hlZHVsZSB1bmluaXRpYWxpemUoKSB0byBiZSBjYWxsZWQgbGF0ZXIu
CiAgICAgLy8gRklYTUU6IHNlZSBpZiB0aGVyZSdzIGEgbW9yZSBkaXJlY3Qgd2F5IHRvIGhhbmRs
ZSB0aGlzIGlzc3VlLgotICAgIGNhbGxPbk1haW5UaHJlYWQodW5pbml0aWFsaXplRGlzcGF0Y2gs
IHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoc3RvcERpc3BhdGNoLCB0aGlzKTsKIH0KIAog
RG9jdW1lbnQqIEF1ZGlvQ29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdApAQCAtNzY3LDcgKzc5MCwx
MSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKQogdm9p
ZCBBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKGlzR3JhcGhPd25lcigpKTsKLSAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBw
ZW5kKG5vZGUpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBt
X25vZGVzVG9EZWxldGUuYXBwZW5kKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01h
cmtlZEZvckRlbGV0aW9uLmFwcGVuZChub2RlKTsKIAogICAgIC8vIFRoaXMgaXMgcHJvYmFibHkg
dGhlIGJlc3QgdGltZSBmb3IgdXMgdG8gcmVtb3ZlIHRoZSBub2RlIGZyb20gYXV0b21hdGljIHB1
bGwgbGlzdCwKICAgICAvLyBzaW5jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGdvbmUgYW5kIHdlIGhv
bGQgdGhlIGdyYXBoIGxvY2suIFRoZW4gd2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKQpAQCAt
Nzg1LDggKzgxMiw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigp
CiAKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4g
dGhyZWFkLiAgICAKICAgICBpZiAobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAh
bV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbltpXSk7CisgICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKICAgICAg
ICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAKICAgICAgICAgbV9pc0RlbGV0
aW9uU2NoZWR1bGVkID0gdHJ1ZTsKQEAgLTgzMiw3ICs4NTgsNyBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQogICAgICAgICAvLyBGaW5hbGx5LCBkZWxldGUgaXQuCiAg
ICAgICAgIGRlbGV0ZSBub2RlOwogICAgIH0KLSAgICAKKwogICAgIG1faXNEZWxldGlvblNjaGVk
dWxlZCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaAppbmRleCBhZTcwMzI4Y2I3ZWM5YjA3NGM4ZjU4ZDU4OTQ1MjFmMTdkZTI0
OWJiLi4wZDc2Yjg3NDdjMWVlZGZhOWQ4MDNhZTJlMjI5ODgyMzQ0MmE3YzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI1NSw3ICsy
NTUsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKICAgICB2b2lk
IHVuaW5pdGlhbGl6ZSgpOwotICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZURpc3BhdGNoKHZv
aWQqIHVzZXJEYXRhKTsKKworICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgY2FsbHMgc3Rv
cCB0d2ljZS4KKyAgICAvLyBXZSdkIGxpa2UgdG8gc2NoZWR1bGUgb25seSBvbmUgc3RvcCBhY3Rp
b24gZm9yIHRoZW0uCisgICAgYm9vbCBtX2lzU3RvcFNjaGVkdWxlZDsKKyAgICBzdGF0aWMgdm9p
ZCBzdG9wRGlzcGF0Y2godm9pZCogdXNlckRhdGEpOworICAgIHZvaWQgY2xlYXIoKTsKIAogICAg
IHZvaWQgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXJr
ZWROb2Rlc0Rpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4
IDAxYThjYTdiZGUxNDNmYzgxMjBmZjhlMTExYjRkOGYwMjUwODg3ZjUuLjBmZWQ1YjI2NWUyMTYz
Njk0OGIxNzM2MWY4NjhhMzE1N2FmNGY3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtOTEs
MTAgKzkxLDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKFN5bnRheEVycm9yLCAiRXJyb3IgY3JlYXRpbmcgQXVkaW9Db250ZXh0IiwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3
cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlvIGNvbnRleHQuCi0gICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBhdWRpb0NvbnRleHQuZ2V0KCkpOwot
ICAgIGF1ZGlvQ29udGV4dC0+cmVmKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIo
YXVkaW9Db250ZXh0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIAotICAgIHJldHVy
biBhcmdzLkhvbGRlcigpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174704</attachid>
            <date>2012-11-16 09:11:29 -0800</date>
            <delta_ts>2012-11-18 06:16:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102356-20121116210924.patch</filename>
            <type>text/plain</type>
            <size>19644</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4ZGVjMDMwZTJkMTNk
YTAzM2EyMDMyMTIwMmI5ZDY1YmVhZDEyNi4uYTZjZDQ5ZTA5YTgyY2E2NGNiNWJiYjdlYTFmN2Ix
YmUzODE1MzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICB3ZWJhdWRpbzog
bGVhazogQXVkaW9Db250ZXh0IG9iamVjdHMgYXJlIGxlYWtpbmcuIFRoZXkgcmV0YWluIDM2bWIg
b2Ygc2hhcmVkIGRhdGEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIGNsZWFuLXVwIGNvZGUgd2FzIG1vdmVkIGZyb20gdW5pbml0aWFsaXplIHRvIGNs
ZWFyIG1ldGhvZC4KKyAgICAgICAgQXVkaW9Db250ZXh0IG1hcmtzIGl0c2VsZiBhcyBoYXNQZW5k
aW5nQWN0aXZpdHkgaW4gbWV0aG9kIGNvbnN0cnVjdENvbW1vbiBhbmQgdW5tYXJrcyBpdHNlbGYg
aW4gbWV0aG9kIGNsZWFyLgorICAgICAgICBtX2lzU3RvcFNjaGVkdWxlZCBmaWx0ZXJzIG91dCBz
ZWNvbmQgQWN0aXZlRE9NT2JqZWN0OjpzdG9wIGNhbGwuCisgICAgICAgIG1hcmtGb3JEZWxldGlv
biBhcHBlbmRzIEF1ZGlvTm9kZSBwb2ludGVyIHRvIG1fbm9kZXNUb0RlbGV0ZSBhcnJheSBpZiB0
aGVyZSBpcyBubyBhY3RpdmUgYXVkaW8gdGhyZWFkLgorICAgICAgICBhZG9wdFJlZiB3YXMgYWRk
ZWQgaW4gY3JlYXRlT2ZmbGluZUNvbnRleHQgbWV0aG9kLgorCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKKworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
b25zdHJ1Y3RDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp+QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpzdG9wRGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWFya0ZvckRl
bGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVs
ZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2Rl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KEF1ZGlvQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250
ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NN
ZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAo
UGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIw
MTItMTEtMTYgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFVwZGF0ZWQgV2ViQ29yZS5neXBpIGFmdGVyIHIxMzQ5MzkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXgg
MTdhNDM5OTM4MzlmODE5Mzk5NjkyMmYyZmUxNTE0YjE5ZTc3NjJlYy4uMDZjNWJkNTViZTllZWM0
MzJlYzQzNWI1OTU4ODkwMTE5MmNhNjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFBhc3NSZWZQ
dHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3Vt
ZW50KiBkb2N1bWVudCwKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KG5ldyBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIG51bWJl
ck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CisgICAgUmVmUHRyPEF1
ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1l
bnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSkpOwogICAg
IGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4
dC5yZWxlYXNlKCk7CiB9CkBAIC0xNDMsNiArMTQzLDcgQEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRl
eHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50
LAogLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBB
dWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoZG9jdW1lbnQsIHRoaXMpCisgICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxz
ZSkKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkKGZhbHNlKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKQEAgLTE2OSw2ICsxNzAs
NyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQpCiAvLyBD
b25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0Nv
bnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCwgdGhpcykKKyAgICAsIG1faXNTdG9wU2NoZWR1bGVk
KGZhbHNlKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQpAQCAtMTkyLDYg
KzE5NCwxMCBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogCiB2b2lkIEF1ZGlvQ29udGV4dDo6
Y29uc3RydWN0Q29tbW9uKCkKIHsKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRl
eHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBp
dCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQg
aW4gY2xlYXIgbWV0aG9kLgorICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKwogI2lmIFVT
RShHU1RSRUFNRVIpCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lcigpOwogI2VuZGlmCkBAIC0yMDcs
NiArMjEzLDggQEAgQXVkaW9Db250ZXh0Ojp+QXVkaW9Db250ZXh0KCkKICAgICBmcHJpbnRmKHN0
ZGVyciwgIiVwOiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CiAjZW5k
aWYKICAgICAvLyBBdWRpb05vZGVzIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlaXIgY29udGV4dCwg
c28gdGhlcmUgc2hvdWxkIGJlIG5vIHdheSB0byBiZSBpbiB0aGUgZGVzdHJ1Y3RvciBpZiB0aGVy
ZSBhcmUgc3RpbGwgQXVkaW9Ob2RlcyBhcm91bmQuCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6
ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7CiAgICAgQVNTRVJUKCFtX25vZGVz
VG9EZWxldGUuc2l6ZSgpKTsKICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE5vZGVzLnNpemUoKSk7
CiAgICAgQVNTRVJUKCFtX2ZpbmlzaGVkTm9kZXMuc2l6ZSgpKTsKQEAgLTIzOCwzNSArMjQ2LDQ1
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAgICAgfQogfQogCi12b2lk
IEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3ZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVh
c2Ugb3VyIHJlZmVyZW5jZSB0byB0aGUgZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRl
eHQgd2lsbCBldmVyIGJlIGRlbGV0ZWQgc2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMg
YSByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQor
ICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS5jbGVhcigpOwogCi0gICAgaWYgKG1faXNJbml0aWFs
aXplZCkgewotICAgICAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRl
ZCBiZWZvcmUgd2UgZmluaXNoIHVuaW5pdGlhbGl6aW5nLgotICAgICAgICBSZWZQdHI8QXVkaW9D
b250ZXh0PiBwcm90ZWN0KHRoaXMpOworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2Jv
ZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2Vs
dmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9u
b2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKIAotICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCi0gICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmlu
aXRpYWxpemUoKTsKKyAgICAvLyBJdCB3YXMgc2V0IGluIGNvbnN0cnVjdENvbW1vbi4KKyAgICB1
bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKK30KIAotICAgICAgICAvLyBEb24ndCBhbGxvdyB0
aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5
IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgotICAgICAgICBtX2lzQXVkaW9UaHJlYWRG
aW5pc2hlZCA9IHRydWU7Cit2b2lkIEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFz
ZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4
dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBh
IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KLSAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUuY2xl
YXIoKTsKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc19oYXJk
d2FyZUNvbnRleHRDb3VudCk7Ci0gICAgICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMg
d2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCi0gICAgICAgIGRlcmVmVW5maW5pc2hlZFNvdXJj
ZU5vZGVzKCk7CisgICAgLy8gVGhpcyBzdG9wcyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVk
aW8gcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKIAot
ICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250
ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBl
eHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB0
cnVlOwogCi0gICAgICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaXNPZmZs
aW5lQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsK
KyAgICAgICAgLS1zX2hhcmR3YXJlQ29udGV4dENvdW50OwogICAgIH0KKworICAgIC8vIEdldCBy
aWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZV
bmZpbmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOwog
fQogCiBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CkBAIC0yODMsNyAr
MzAxLDcgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzUnVubmFibGUoKSBjb25zdAogICAgIHJldHVy
biBtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRl
eHQ6OnVuaW5pdGlhbGl6ZURpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQordm9pZCBBdWRpb0NvbnRl
eHQ6OnN0b3BEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKIHsKICAgICBBdWRpb0NvbnRleHQqIGNv
bnRleHQgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQ29udGV4dCo+KHVzZXJEYXRhKTsKICAgICBB
U1NFUlQoY29udGV4dCk7CkBAIC0yOTEsMTcgKzMwOSwyMyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6
dW5pbml0aWFsaXplRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNvbnRleHQtPnVuaW5pdGlhbGl6ZSgpOworICAgIGNvbnRleHQtPmNsZWFyKCk7CiB9CiAK
IHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKIHsKICAgICBtX2RvY3VtZW50ID0gMDsgLy8gZG9j
dW1lbnQgaXMgZ29pbmcgYXdheQogCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250
cm9sbGVyIGNhbGxzIHN0b3AgdHdpY2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCiAgICAgLy8gRG9u
J3QgY2FsbCB1bmluaXRpYWxpemUoKSBpbW1lZGlhdGVseSBoZXJlIGJlY2F1c2UgdGhlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaXMgaW4gdGhlIG1pZGRsZQogICAgIC8vIG9mIGRlYWxpbmcgd2l0
aCBhbGwgb2YgaXRzIEFjdGl2ZURPTU9iamVjdHMgYXQgdGhpcyBwb2ludC4gdW5pbml0aWFsaXpl
KCkgY2FuIGRlLXJlZmVyZW5jZSBvdGhlcgogICAgIC8vIEFjdGl2ZURPTU9iamVjdHMgc28gbGV0
J3Mgc2NoZWR1bGUgdW5pbml0aWFsaXplKCkgdG8gYmUgY2FsbGVkIGxhdGVyLgogICAgIC8vIEZJ
WE1FOiBzZWUgaWYgdGhlcmUncyBhIG1vcmUgZGlyZWN0IHdheSB0byBoYW5kbGUgdGhpcyBpc3N1
ZS4KLSAgICBjYWxsT25NYWluVGhyZWFkKHVuaW5pdGlhbGl6ZURpc3BhdGNoLCB0aGlzKTsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKHN0b3BEaXNwYXRjaCwgdGhpcyk7CiB9CiAKIERvY3VtZW50KiBB
dWRpb0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKQEAgLTc3MCw3ICs3OTQsMTEgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OmhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCkKIHZvaWQgQXVkaW9Db250
ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7Ci0gICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZChub2RlKTsK
KworICAgIGlmIChpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVs
ZXRlLmFwcGVuZChub2RlKTsKKyAgICBlbHNlCisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxl
dGlvbi5hcHBlbmQobm9kZSk7CiAKICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHRp
bWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3QsCiAg
ICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBncmFw
aCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKQEAgLTc4OCw4ICs4MTYs
NyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgLy8g
TWFrZSBzdXJlIHRvIGNhbGwgZGVsZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4gICAg
CiAgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlv
blNjaGVkdWxlZCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlc01h
cmtlZEZvckRlbGV0aW9uLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9ub2Rlc1RvRGVsZXRl
LmFwcGVuZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb25baV0pOworICAgICAgICBtX25vZGVzVG9E
ZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CiAgICAgICAgIG1fbm9kZXNN
YXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxl
ZCA9IHRydWU7CkBAIC04MzUsNyArODYyLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlbGV0ZU1h
cmtlZE5vZGVzKCkKICAgICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgogICAgICAgICBkZWxl
dGUgbm9kZTsKICAgICB9Ci0gICAgCisKICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxz
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKaW5kZXggOTc4MTFkNWI4MjQ4YjdhYjllYTZhMDFlMzMyNDUyMmI5YjQxYTNhNi4uZDUyMWYx
NjY0ODcyYzgzNWI2ZDUxZjc3MjMyZDBhYTBmNGEwZjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yNTUsNyArMjU1LDEyIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CiAgICAgdm9pZCB1bmluaXRpYWxp
emUoKTsKLSAgICBzdGF0aWMgdm9pZCB1bmluaXRpYWxpemVEaXNwYXRjaCh2b2lkKiB1c2VyRGF0
YSk7CisKKyAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisg
ICAgLy8gV2UnZCBsaWtlIHRvIHNjaGVkdWxlIG9ubHkgb25lIHN0b3AgYWN0aW9uIGZvciB0aGVt
LgorICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQ7CisgICAgc3RhdGljIHZvaWQgc3RvcERpc3Bh
dGNoKHZvaWQqIHVzZXJEYXRhKTsKKyAgICB2b2lkIGNsZWFyKCk7CiAKICAgICB2b2lkIHNjaGVk
dWxlTm9kZURlbGV0aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlTWFya2VkTm9kZXNEaXNw
YXRjaCh2b2lkKiB1c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCAwZjJiMDI5MzM1
ZmU0NjU3YTA0MDBiYjg0MmY4ZWRkNjlhMjg4ODI3Li5kYjQ2NTE2MmY1OGIwMzU0ZTZjZmUxZmY1
ZTAzNDg3MTI3NDc1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTkxLDEwICs5MSwxMCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5
bnRheEVycm9yLCAiRXJyb3IgY3JlYXRpbmcgQXVkaW9Db250ZXh0IiwgYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIAogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9i
amVjdCBmb3IgdGhlIGF1ZGlvIGNvbnRleHQuCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFw
cGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBhdWRpb0NvbnRleHQuZ2V0KCkpOwotICAgIGF1ZGlv
Q29udGV4dC0+cmVmKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKKyAgICBWOERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoYXVkaW9Db250
ZXh0LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIpOwogICAgIAotICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cAppbmRleCA3YjlkOTQwMTg4NzhkZWVjNzAxYWZkNWQ0NzZhYjZiNmFhMzk3MWQ2Li5jZDBkZTlk
ODdkYzZkOGZhYWU4MWY4MDFkNTBlNjNlYThiY2I3NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTUzNiw2ICs1MzYsOCBA
QCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9u
KEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIHJlcG9ydFJlbmRlclRyZWVJbmZvKG1lbW9y
eUluc3RydW1lbnRhdGlvbkNsaWVudCwgbV9wYWdlKTsKICAgICBjb2xsZWN0RG9tVHJlZUluZm8o
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBtX3BhZ2UpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxs
IHBhZ2VzPwogCisgICAgUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE1lbW9y
eVVzYWdlKCZtZW1vcnlJbnN0cnVtZW50YXRpb24pOworCiAgICAgUmVmUHRyPEluc3BlY3Rvck1l
bW9yeUJsb2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwog
ICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oY2hpbGRyZW4pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAKaW5kZXggYTQzZDNhOTkzYjY2MjE3YTEwMWQwYWMyMDMwNDQxYWRmNzY4NjFlNy4uM2ExMGVj
MTJmN2ExNDNlYTU3NTJhMTc4ZjQ2MTdjZjk1MDc3ZGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcApA
QCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZW1vcnlPYmplY3RUeXBlIFBsYXRmb3JtTWVt
b3J5VHlwZXM6OkltYWdlID0gIlBhZ2UuSW1hZ2UiOwpAQCAtMzksNCArNDEsOSBAQCBNZW1vcnlP
YmplY3RUeXBlIFBsYXRmb3JtTWVtb3J5VHlwZXM6OkxvYWRlciA9ICJQYWdlLkxvYWRlciI7CiBN
ZW1vcnlPYmplY3RUeXBlIFBsYXRmb3JtTWVtb3J5VHlwZXM6OkF1ZGlvID0gIlBhZ2UuQXVkaW8i
OwogTWVtb3J5T2JqZWN0VHlwZSBQbGF0Zm9ybU1lbW9yeVR5cGVzOjpBdWRpb1NoYXJlZERhdGEg
PSAiUGFnZS5BdWRpby5TaGFyZWREYXRhIjsKIAordm9pZCBQbGF0Zm9ybU1lbW9yeUluc3RydW1l
bnRhdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1l
bW9yeUluc3RydW1lbnRhdGlvbikKK3sKKyAgICBtZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFJv
b3RPYmplY3QoSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkZXIoKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IDg5OGI5NmRiYTM0N2YwNTc4OTMwMjM1NTZk
OWIzMTYyMDZkZmJiNGUuLjljZWI5MmVjNTM0NzIxZjU3ZTZiNjFiYTZjMGU1NzgyMTc1YzgyZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJ
bnN0cnVtZW50YXRpb24uaApAQCAtNDgsNiArNDgsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBN
ZW1vcnlPYmplY3RUeXBlIEF1ZGlvU2hhcmVkRGF0YTsKIH07CiAKK2NsYXNzIFBsYXRmb3JtTWVt
b3J5SW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbiopOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIWRlZmluZWQoUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50
YXRpb25faCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBmNjM0Yjg2OGQxZjdmNjgwYmFiMTdmYjllOTJhMzFmMjNjZjY5MWEz
Li5kOGZjZDlkNDk2YjBjN2JkZWY5MTJjMzA0Y2RiMDBiMjAzMGMwNTVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTItMTEtMTYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIHdlYmF1ZGlvOiBsZWFrOiBBdWRpb0NvbnRleHQgb2JqZWN0cyBhcmUg
bGVha2luZy4gVGhleSByZXRhaW4gMzZtYiBvZiBzaGFyZWQgZGF0YS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjM1NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgY2xlYW4tdXAgY29kZSB3YXMgbW92
ZWQgZnJvbSB1bmluaXRpYWxpemUgdG8gY2xlYXIgbWV0aG9kLgorICAgICAgICBBdWRpb0NvbnRl
eHQgbWFya3MgaXRzZWxmIGFzIGhhc1BlbmRpbmdBY3Rpdml0eSBpbiBtZXRob2QgY29uc3RydWN0
Q29tbW9uIGFuZCB1bm1hcmtzIGl0c2VsZiBpbiBtZXRob2QgY2xlYXIuCisgICAgICAgIG1faXNT
dG9wU2NoZWR1bGVkIGZpbHRlcnMgb3V0IHNlY29uZCBBY3RpdmVET01PYmplY3Q6OnN0b3AgY2Fs
bC4KKyAgICAgICAgbWFya0ZvckRlbGV0aW9uIGFwcGVuZHMgQXVkaW9Ob2RlIHBvaW50ZXIgdG8g
bV9ub2Rlc1RvRGVsZXRlIGFycmF5IGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBhdWRpbyB0aHJlYWQu
CisgICAgICAgIGFkb3B0UmVmIHdhcyBhZGRlZCBpbiBjcmVhdGVPZmZsaW5lQ29udGV4dCBtZXRo
b2QuCisKKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVz
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9ubWkt
d2ViYXVkaW8tbGVhay10ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE2ICBFcmlrIEFydmlk
c3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIERPTUV4Y2VwdGlvbiBu
YW1lOiBUeXBlTWlzbWF0Y2hFcnJvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZjZGNmNTY5NDZkMDgyODczZTFlMDZmYTA1Y2I4ZjUwOTY5OTEyNDEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1
ZGlvLWxlYWstdGVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlzIHRlc3QgaXMg
Y2hlY2tpbmcgdGhhdCBBdWRpb0NvbnRleHQgaXMgZGVsZXRpbmcgYWZ0ZXIgbmF2aWdhdGlvbi4g
SXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvdW50IEF1ZGlvQ29udGV4dCBvYmplY3RzIGRpcmVjdGx5
LiBCdXQgd2UgY291bGQgdXNlIE5hdGl2ZSBNZW1vcnkgU25hcHNob3Qgd2hpY2ggaGFzIGluZm9y
bWF0aW9uIGFib3V0IFBhZ2UuQXVkaW8uU2hhcmVkRGF0YS4gQWxsIHRoZSBzaGFyZWQgZGF0YSBh
cmUgcmV0YWluZWQgYnkgSFJURkRhdGFiYXNlTG9hZGVyIHJlZmNvdW50ZWQgc2luZ2xldG9uIGFu
ZCBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBpcyB2aXNpdGluZyBpdCB2aWEgcHVibGlj
IGdldHRlci4gCisKK0FjdGlvbjogV2FpdCBmb3IgUGFnZS5BdWRpbyBkYXRhCitQQVNTOiBNZW1v
cnkgc2l6ZSBmb3IgUGFnZS5BdWRpbyBtb3JlIHRoYW4gMTUwMDAwMDAKK0FjdGlvbjogTmF2aWdh
dGUgSUZyYW1lIHRvIHJlc291cmNlcy9ibGFuay5odG1sCitQQVNTOiBJRnJhbWUgd2FzIG5hdmln
YXRlZCB0byByZXNvdXJjZXMvYmxhbmsuaHRtbAorQWN0aW9uOiBSdW4gR0MgYW5kIGNoZWNrIFBh
Z2UuQXVkaW8gZGF0YSBzaXplCitQQVNTOiBObyBQYWdlLkF1ZGlvIGRhdGEgZm91bmQKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFr
LXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8t
bGVhay10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY3Mjg1N2JkMWY4ZmRhNWQyZTU2ZjA3MDZkYWM2
NjY4MzA4ZjljZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0T25seU9uY2UoKQoreworICAgIGlmICh3
aW5kb3cudGVzdEZpcnN0UnVuKQorICAgICAgICByZXR1cm47CisgICAgd2luZG93LnRlc3RGaXJz
dFJ1biA9IDE7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIG5hdmlnYXRlSUZyYW1l
KCkKK3sKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZSIp
OworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL2JsYW5rLmh0bWwiOworfQorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBzaXplRm9yVHlwZShlbnRyeSwgdHlwZU5hbWVzKQor
ICAgIHsKKwlmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdHlwZU5hbWVzLmxlbmd0aDsgKytp
bmRleCkgeworICAgICAgICAgICAgdmFyIHR5cGVOYW1lID0gdHlwZU5hbWVzW2luZGV4XTsKKyAg
ICAgICAgICAgIHZhciBmb3VuZCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGVudHJ5LmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxk
RW50cnkgPSBlbnRyeS5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRFbnRy
eS5uYW1lID09PSB0eXBlTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09
IHR5cGVOYW1lcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNo
aWxkRW50cnkuc2l6ZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkRW50cnkuY2hp
bGRyZW4pCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnkgPSBjaGlsZEVudHJ5OworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IC0xOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHZhciBw
aXZvdFNpemUgPSAxNTAwMDAwMDsKKworICAgIGZ1bmN0aW9uIG5vQXVkaW9TaGFyZWREYXRhKG1l
c3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgc2l6ZSA9IHNpemVGb3JUeXBlKG1lc3Nh
Z2VPYmplY3RbInJlc3VsdCJdWyJkaXN0cmlidXRpb24iXSwgWyJQYWdlIiwgIkF1ZGlvIl0pOwor
ICAgICAgICBpZiAoc2l6ZSA9PT0gLTEpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UEFTUzogTm8gUGFnZS5BdWRpbyBkYXRhIGZvdW5kIik7CisJZWxzZQorICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBzaXplICsgIiBieXRlcyBvZiBQYWdlLkF1ZGlvIGRh
dGEgd2FzIGZvdW5kIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gaUZyYW1lTmF2aWdhdGVkKG1lc3NhZ2VPYmplY3QpICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiBJRnJhbWUgd2FzIG5hdmlnYXRlZCB0byBy
ZXNvdXJjZXMvYmxhbmsuaHRtbCIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5k
KCdQcm9maWxlci5jb2xsZWN0R2FyYmFnZScsIHt9LCBmdW5jdGlvbigpIHsgfSApOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQWN0aW9uOiBSdW4gR0MgYW5kIGNoZWNrIFBhZ2UuQXVkaW8g
ZGF0YSBzaXplIik7CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQoJ01lbW9yeS5n
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uJywge30sIG5vQXVkaW9TaGFyZWREYXRhKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB3YWl0Rm9yU2hhcmVkQXVkaW9EYXRhKG1lc3NhZ2VPYmplY3Qp
IHsKKyAgICAgICAgdmFyIHNpemUgPSBzaXplRm9yVHlwZShtZXNzYWdlT2JqZWN0WyJyZXN1bHQi
XVsiZGlzdHJpYnV0aW9uIl0sIFsiUGFnZSIsICJBdWRpbyJdKTsKKyAgICAgICAgaWYgKHNpemUg
PT09IC0xKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogTm8gUGFnZS5B
dWRpbyBkYXRhIHdhcyBmb3VuZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNp
emUgPCBwaXZvdFNpemUpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCdN
ZW1vcnkuZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbicsIHt9LCB3YWl0Rm9yU2hhcmVkQXVk
aW9EYXRhKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
UEFTUzogTWVtb3J5IHNpemUgZm9yIFBhZ2UuQXVkaW8gbW9yZSB0aGFuICIgKyBwaXZvdFNpemUp
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCdQYWdlLmVuYWJsZScs
IHt9LCBmdW5jdGlvbigpIHsgfSApOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
QWN0aW9uOiBOYXZpZ2F0ZSBJRnJhbWUgdG8gcmVzb3VyY2VzL2JsYW5rLmh0bWwiKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJQYWdlLmZyYW1lTmF2aWdhdGVkIl0g
PSBpRnJhbWVOYXZpZ2F0ZWQ7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5k
KCdSdW50aW1lLmV2YWx1YXRlJywge2V4cHJlc3Npb246ICduYXZpZ2F0ZUlGcmFtZSgpJ30sIGZ1
bmN0aW9uKCkgeyB9ICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiIik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFjdGlvbjogV2FpdCBmb3IgUGFnZS5BdWRp
byBkYXRhIik7CisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnTWVtb3J5LmdldFByb2Nl
c3NNZW1vcnlEaXN0cmlidXRpb24nLCB7fSwgd2FpdEZvclNoYXJlZEF1ZGlvRGF0YSk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCkiPgorVGhpcyB0ZXN0IGlzIGNoZWNraW5nIHRoYXQgQXVkaW9Db250ZXh0IGlzIGRlbGV0aW5n
IGFmdGVyIG5hdmlnYXRpb24uCitJdCBpcyBub3QgcG9zc2libGUgdG8gY291bnQgQXVkaW9Db250
ZXh0IG9iamVjdHMgZGlyZWN0bHkuCitCdXQgd2UgY291bGQgdXNlIE5hdGl2ZSBNZW1vcnkgU25h
cHNob3Qgd2hpY2ggaGFzIGluZm9ybWF0aW9uIGFib3V0IFBhZ2UuQXVkaW8uU2hhcmVkRGF0YS4K
K0FsbCB0aGUgc2hhcmVkIGRhdGEgYXJlIHJldGFpbmVkIGJ5IEhSVEZEYXRhYmFzZUxvYWRlciBy
ZWZjb3VudGVkIHNpbmdsZXRvbgorYW5kIE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uIGlz
IHZpc2l0aW5nIGl0IHZpYSBwdWJsaWMgZ2V0dGVyLgorCis8aWZyYW1lIGlkPSJpZnJhbWUiIG9u
TG9hZD0icnVuVGVzdE9ubHlPbmNlKCkiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLWNvbnRleHQuaHRt
bCIgPgorPC9pZnJhbWU+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174846</attachid>
            <date>2012-11-18 06:18:23 -0800</date>
            <delta_ts>2012-11-18 12:55:13 -0800</delta_ts>
            <desc>with guard #if ENABLE(WEB_AUDIO)</desc>
            <filename>bug-102356-20121118181614.patch</filename>
            <type>text/plain</type>
            <size>24938</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFiNjQ0YTVkMDAxMTQ1
OGNkZjlkMTRhMTgxZTgxZDg4YWZlYjQ2Ni4uNjhlNmU4YmIxODI1MWIzZmM1NWIwYjlhNDRhYTdj
NzJiNjEzYzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTE2ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICB3ZWJhdWRpbzog
bGVhazogQXVkaW9Db250ZXh0IG9iamVjdHMgYXJlIGxlYWtpbmcuIFRoZXkgcmV0YWluIDM2bWIg
b2Ygc2hhcmVkIGRhdGEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIGNsZWFuLXVwIGNvZGUgd2FzIG1vdmVkIGZyb20gdW5pbml0aWFsaXplIHRvIGNs
ZWFyIG1ldGhvZC4KKyAgICAgICAgQXVkaW9Db250ZXh0IG1hcmtzIGl0c2VsZiBhcyBoYXNQZW5k
aW5nQWN0aXZpdHkgaW4gbWV0aG9kIGNvbnN0cnVjdENvbW1vbiBhbmQgdW5tYXJrcyBpdHNlbGYg
aW4gbWV0aG9kIGNsZWFyLgorICAgICAgICBtX2lzU3RvcFNjaGVkdWxlZCBmaWx0ZXJzIG91dCBz
ZWNvbmQgQWN0aXZlRE9NT2JqZWN0OjpzdG9wIGNhbGwuCisgICAgICAgIG1hcmtGb3JEZWxldGlv
biBhcHBlbmRzIEF1ZGlvTm9kZSBwb2ludGVyIHRvIG1fbm9kZXNUb0RlbGV0ZSBhcnJheSBpZiB0
aGVyZSBpcyBubyBhY3RpdmUgYXVkaW8gdGhyZWFkLgorICAgICAgICBhZG9wdFJlZiB3YXMgYWRk
ZWQgaW4gY3JlYXRlT2ZmbGluZUNvbnRleHQgbWV0aG9kLgorCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKKworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
b25zdHJ1Y3RDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp+QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpzdG9wRGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9D
b250ZXh0OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWFya0ZvckRl
bGV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVs
ZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2Rl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KEF1ZGlvQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250
ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NN
ZW1vcnlEaXN0cmlidXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAo
UGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIw
MTItMTEtMTcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXVsYXRl
ZCBtb3VzZSBldmVudHMgc2hvdWxkIHJldHVybiBhbiBhY2N1cmF0ZSBvZmZzZXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAxN2E0
Mzk5MzgzOWY4MTkzOTk2OTIyZjJmZTE1MTRiMTllNzc2MmVjLi4wNmM1YmQ1NWJlOWVlYzQzMmVj
NDM1YjU5NTg4OTAxMTkyY2E2NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgUGFzc1JlZlB0cjxB
dWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQq
IGRvY3VtZW50LAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8QXVkaW9D
b250ZXh0PiBhdWRpb0NvbnRleHQobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZD
aGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKTsKKyAgICBSZWZQdHI8QXVkaW9D
b250ZXh0PiBhdWRpb0NvbnRleHQoYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCwg
bnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKSk7CiAgICAgYXVk
aW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gYXVkaW9Db250ZXh0LnJl
bGVhc2UoKTsKIH0KQEAgLTE0Myw2ICsxNDMsNyBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4g
QXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsCiAv
LyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlv
Q29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChkb2N1bWVudCwgdGhpcykKKyAgICAsIG1faXNTdG9wU2NoZWR1bGVkKGZhbHNlKQog
ICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0F1ZGlvVGhyZWFkRmluaXNo
ZWQoZmFsc2UpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQpAQCAtMTY5LDYgKzE3MCw3IEBA
IEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCkKIC8vIENvbnN0
cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4
dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQWN0
aXZlRE9NT2JqZWN0KGRvY3VtZW50LCB0aGlzKQorICAgICwgbV9pc1N0b3BTY2hlZHVsZWQoZmFs
c2UpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2lzQXVkaW9UaHJlYWRG
aW5pc2hlZChmYWxzZSkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCkBAIC0xOTIsNiArMTk0
LDEwIEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50KiBkb2N1bWVudCwgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90CiAKIHZvaWQgQXVkaW9Db250ZXh0Ojpjb25z
dHJ1Y3RDb21tb24oKQogeworICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBt
dXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCisgICAgLy8gTGV0cyBtYXJrIGl0IGFz
IEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBj
bGVhciBtZXRob2QuCisgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworCiAjaWYgVVNFKEdT
VFJFQU1FUikKICAgICBpbml0aWFsaXplR1N0cmVhbWVyKCk7CiAjZW5kaWYKQEAgLTIwNyw2ICsy
MTMsOCBAQCBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKQogICAgIGZwcmludGYoc3RkZXJy
LCAiJXA6IEF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCgpXG4iLCB0aGlzKTsKICNlbmRpZgog
ICAgIC8vIEF1ZGlvTm9kZXMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVpciBjb250ZXh0LCBzbyB0
aGVyZSBzaG91bGQgYmUgbm8gd2F5IHRvIGJlIGluIHRoZSBkZXN0cnVjdG9yIGlmIHRoZXJlIGFy
ZSBzdGlsbCBBdWRpb05vZGVzIGFyb3VuZC4KKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7
CisgICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKICAgICBBU1NFUlQoIW1fbm9kZXNUb0Rl
bGV0ZS5zaXplKCkpOwogICAgIEFTU0VSVCghbV9yZWZlcmVuY2VkTm9kZXMuc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIW1fZmluaXNoZWROb2Rlcy5zaXplKCkpOwpAQCAtMjM4LDM1ICsyNDYsNDUgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXplKCkKICAgICB9CiB9CiAKLXZvaWQgQXVk
aW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQordm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBv
dXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3
aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJl
ZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAg
ICAgIG1fZGVzdGluYXRpb25Ob2RlLmNsZWFyKCk7CiAKLSAgICBpZiAobV9pc0luaXRpYWxpemVk
KSB7Ci0gICAgICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJl
Zm9yZSB3ZSBmaW5pc2ggdW5pbml0aWFsaXppbmcuCi0gICAgICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IHByb3RlY3QodGhpcyk7CisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9keSB3
aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2ZXMu
CisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICBtX25vZGVz
VG9EZWxldGUuYXBwZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hpbGUgKG1fbm9kZXNUb0RlbGV0
ZS5zaXplKCkpOwogCi0gICAgICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQg
YWxsIGF1ZGlvIHJlbmRlcmluZy4KLSAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlh
bGl6ZSgpOworICAgIC8vIEl0IHdhcyBzZXQgaW4gY29uc3RydWN0Q29tbW9uLgorICAgIHVuc2V0
UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworfQogCi0gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBj
b250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVl
biBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCi0gICAgICAgIG1faXNBdWRpb1RocmVhZEZpbmlz
aGVkID0gdHJ1ZTsKK3ZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICAgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91
ciByZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdp
bGwgZXZlciBiZSBkZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVm
ZXJlbmNlIHRvIHRoZSBjb250ZXh0LgotICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS5jbGVhcigp
OworICAgIGlmICghbV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChzX2hhcmR3YXJl
Q29udGV4dENvdW50KTsKLSAgICAgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGlj
aCBtYXkgc3RpbGwgYmUgcGxheWluZy4KLSAgICAgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKyAgICAvLyBUaGlzIHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyBy
ZW5kZXJpbmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlhbGl6ZSgpOwogCi0gICAg
ICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQg
dG8gaW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxp
Y2l0bHkgdW5pbml0aWFsaXplZC4KKyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7
CiAKLSAgICAgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFpc09mZmxpbmVD
b250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAg
ICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAgICAgfQorCisgICAgLy8gR2V0IHJpZCBv
ZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4KKyAgICBkZXJlZlVuZmlu
aXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVkID0gZmFsc2U7CiB9CiAK
IGJvb2wgQXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkgY29uc3QKQEAgLTI4Myw3ICszMDEs
NyBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNSdW5uYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpOwogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6
dW5pbml0aWFsaXplRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCit2b2lkIEF1ZGlvQ29udGV4dDo6
c3RvcERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogewogICAgIEF1ZGlvQ29udGV4dCogY29udGV4
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Db250ZXh0Kj4odXNlckRhdGEpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKQEAgLTI5MSwxNyArMzA5LDIzIEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmlu
aXRpYWxpemVEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Y29udGV4dC0+dW5pbml0aWFsaXplKCk7CisgICAgY29udGV4dC0+Y2xlYXIoKTsKIH0KIAogdm9p
ZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogewogICAgIG1fZG9jdW1lbnQgPSAwOyAvLyBkb2N1bWVu
dCBpcyBnb2luZyBhd2F5CiAKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1dGlvbkNvbnRyb2xs
ZXIgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKICAgICAvLyBEb24ndCBj
YWxsIHVuaW5pdGlhbGl6ZSgpIGltbWVkaWF0ZWx5IGhlcmUgYmVjYXVzZSB0aGUgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBpcyBpbiB0aGUgbWlkZGxlCiAgICAgLy8gb2YgZGVhbGluZyB3aXRoIGFs
bCBvZiBpdHMgQWN0aXZlRE9NT2JqZWN0cyBhdCB0aGlzIHBvaW50LiB1bmluaXRpYWxpemUoKSBj
YW4gZGUtcmVmZXJlbmNlIG90aGVyCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0cyBzbyBsZXQncyBz
Y2hlZHVsZSB1bmluaXRpYWxpemUoKSB0byBiZSBjYWxsZWQgbGF0ZXIuCiAgICAgLy8gRklYTUU6
IHNlZSBpZiB0aGVyZSdzIGEgbW9yZSBkaXJlY3Qgd2F5IHRvIGhhbmRsZSB0aGlzIGlzc3VlLgot
ICAgIGNhbGxPbk1haW5UaHJlYWQodW5pbml0aWFsaXplRGlzcGF0Y2gsIHRoaXMpOworICAgIGNh
bGxPbk1haW5UaHJlYWQoc3RvcERpc3BhdGNoLCB0aGlzKTsKIH0KIAogRG9jdW1lbnQqIEF1ZGlv
Q29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdApAQCAtNzcwLDcgKzc5NCwxMSBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKQogdm9pZCBBdWRpb0NvbnRleHQ6
Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKGlzR3JhcGhP
d25lcigpKTsKLSAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBwZW5kKG5vZGUpOworCisg
ICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBtX25vZGVzVG9EZWxldGUu
YXBwZW5kKG5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9u
LmFwcGVuZChub2RlKTsKIAogICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgdGhlIGJlc3QgdGltZSBm
b3IgdXMgdG8gcmVtb3ZlIHRoZSBub2RlIGZyb20gYXV0b21hdGljIHB1bGwgbGlzdCwKICAgICAv
LyBzaW5jZSBhbGwgY29ubmVjdGlvbnMgYXJlIGdvbmUgYW5kIHdlIGhvbGQgdGhlIGdyYXBoIGxv
Y2suIFRoZW4gd2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKQpAQCAtNzg4LDggKzgxNiw3IEBA
IHZvaWQgQXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCiAKICAgICAvLyBNYWtl
IHN1cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLiAgICAKICAg
ICBpZiAobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2No
ZWR1bGVkKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGVzTWFya2Vk
Rm9yRGVsZXRpb24uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBw
ZW5kKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbltpXSk7CisgICAgICAgIG1fbm9kZXNUb0RlbGV0
ZS5hcHBlbmQobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKICAgICAgICAgbV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uLmNsZWFyKCk7CiAKICAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0g
dHJ1ZTsKQEAgLTgzNSw3ICs4NjIsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2Vk
Tm9kZXMoKQogICAgICAgICAvLyBGaW5hbGx5LCBkZWxldGUgaXQuCiAgICAgICAgIGRlbGV0ZSBu
b2RlOwogICAgIH0KLSAgICAKKwogICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApp
bmRleCA5NzgxMWQ1YjgyNDhiN2FiOWVhNmEwMWUzMzI0NTIyYjliNDFhM2E2Li5kNTIxZjE2NjQ4
NzJjODM1YjZkNTFmNzcyMzJkMGFhMGY0YTBmNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI1NSw3ICsyNTUsMTIgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKICAgICB2b2lkIHVuaW5pdGlhbGl6ZSgp
OwotICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZURpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsK
KworICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICAv
LyBXZSdkIGxpa2UgdG8gc2NoZWR1bGUgb25seSBvbmUgc3RvcCBhY3Rpb24gZm9yIHRoZW0uCisg
ICAgYm9vbCBtX2lzU3RvcFNjaGVkdWxlZDsKKyAgICBzdGF0aWMgdm9pZCBzdG9wRGlzcGF0Y2go
dm9pZCogdXNlckRhdGEpOworICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVO
b2RlRGVsZXRpb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVNYXJrZWROb2Rlc0Rpc3BhdGNo
KHZvaWQqIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDBmMmIwMjkzMzVmZTQ2
NTdhMDQwMGJiODQyZjhlZGQ2OWEyODg4MjcuLmRiNDY1MTYyZjU4YjAzNTRlNmNmZTFmZjVlMDM0
ODcxMjc0NzUxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4
RXJyb3IsICJFcnJvciBjcmVhdGluZyBBdWRpb0NvbnRleHQiLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgCiAgICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0
IGZvciB0aGUgYXVkaW8gY29udGV4dC4KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
YXJncy5Ib2xkZXIoKSwgJmluZm8sIGF1ZGlvQ29udGV4dC5nZXQoKSk7Ci0gICAgYXVkaW9Db250
ZXh0LT5yZWYoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOworICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihhdWRpb0NvbnRleHQu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgCi0gICAgcmV0dXJuIGFyZ3MuSG9sZGVy
KCk7CisgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmlu
ZGV4IDdiOWQ5NDAxODg3OGRlZWM3MDFhZmQ1ZDQ3NmFiNmI2YWEzOTcxZDYuLmNkMGRlOWQ4N2Rj
NmQ4ZmFhZTgxZjgwMWQ1MGU2M2VhOGJjYjc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNTM2LDYgKzUzNiw4IEBAIHZv
aWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAgICAgcmVwb3J0UmVuZGVyVHJlZUluZm8obWVtb3J5SW5z
dHJ1bWVudGF0aW9uQ2xpZW50LCBtX3BhZ2UpOwogICAgIGNvbGxlY3REb21UcmVlSW5mbyhtZW1v
cnlJbnN0cnVtZW50YXRpb24sIG1fcGFnZSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFn
ZXM/CiAKKyAgICBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0TWVtb3J5VXNh
Z2UoJm1lbW9yeUluc3RydW1lbnRhdGlvbik7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5
QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nrczo6Y3JlYXRlKCk7CiAgICAg
YWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhjaGlsZHJlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBhNDNkM2E5OTNiNjYyMTdhMTAxZDBhYzIwMzA0NDFhZGY3Njg2MWU3Li4zMTEyYTJkZTI5
YTRkZDFiOTczOGNlNTQ3NmUwZGUzOWY4YzRiZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0z
MSw2ICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorI2luY2x1ZGUg
IkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TWVtb3J5T2JqZWN0VHlwZSBQbGF0Zm9ybU1lbW9yeVR5cGVzOjpJbWFnZSA9ICJQYWdlLkltYWdl
IjsKQEAgLTM5LDQgKzQzLDEzIEBAIE1lbW9yeU9iamVjdFR5cGUgUGxhdGZvcm1NZW1vcnlUeXBl
czo6TG9hZGVyID0gIlBhZ2UuTG9hZGVyIjsKIE1lbW9yeU9iamVjdFR5cGUgUGxhdGZvcm1NZW1v
cnlUeXBlczo6QXVkaW8gPSAiUGFnZS5BdWRpbyI7CiBNZW1vcnlPYmplY3RUeXBlIFBsYXRmb3Jt
TWVtb3J5VHlwZXM6OkF1ZGlvU2hhcmVkRGF0YSA9ICJQYWdlLkF1ZGlvLlNoYXJlZERhdGEiOwog
Cit2b2lkIFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZShX
VEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbiogbWVtb3J5SW5zdHJ1bWVudGF0aW9uKQoreworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSb290T2Jq
ZWN0KEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZGVyKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0obWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAppbmRleCA4OThiOTZkYmEzNDdmMDU3ODkzMDIzNTU2ZDliMzE2
MjA2ZGZiYjRlLi45Y2ViOTJlYzUzNDcyMWY1N2U2YjYxYmE2YzBlNTc4MjE3NWM4MmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTWVtb3J5
T2JqZWN0VHlwZSBBdWRpb1NoYXJlZERhdGE7CiB9OwogCitjbGFzcyBQbGF0Zm9ybU1lbW9yeUlu
c3RydW1lbnRhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb24qKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vICFkZWZpbmVkKFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9u
X2gpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGRkMTAzOTUxNjU4MTFhZWIxODgyYTA1NmYyN2NmMGM0ZTllMjU3Ny4uMjBl
ZmM5MGRlOTkxMGE2OGMwYThmNDMwYzk2NzAzZTI0OTUwYjg4NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTExLTE2ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICB3ZWJhdWRpbzogbGVhazogQXVkaW9Db250ZXh0IG9iamVjdHMgYXJlIGxlYWtp
bmcuIFRoZXkgcmV0YWluIDM2bWIgb2Ygc2hhcmVkIGRhdGEuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIzNTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGNsZWFuLXVwIGNvZGUgd2FzIG1vdmVkIGZy
b20gdW5pbml0aWFsaXplIHRvIGNsZWFyIG1ldGhvZC4KKyAgICAgICAgQXVkaW9Db250ZXh0IG1h
cmtzIGl0c2VsZiBhcyBoYXNQZW5kaW5nQWN0aXZpdHkgaW4gbWV0aG9kIGNvbnN0cnVjdENvbW1v
biBhbmQgdW5tYXJrcyBpdHNlbGYgaW4gbWV0aG9kIGNsZWFyLgorICAgICAgICBtX2lzU3RvcFNj
aGVkdWxlZCBmaWx0ZXJzIG91dCBzZWNvbmQgQWN0aXZlRE9NT2JqZWN0OjpzdG9wIGNhbGwuCisg
ICAgICAgIG1hcmtGb3JEZWxldGlvbiBhcHBlbmRzIEF1ZGlvTm9kZSBwb2ludGVyIHRvIG1fbm9k
ZXNUb0RlbGV0ZSBhcnJheSBpZiB0aGVyZSBpcyBubyBhY3RpdmUgYXVkaW8gdGhyZWFkLgorICAg
ICAgICBhZG9wdFJlZiB3YXMgYWRkZWQgaW4gY3JlYXRlT2ZmbGluZUNvbnRleHQgbWV0aG9kLgor
CisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1
ZGlvLWxlYWstdGVzdC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0xNyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzM2MzMpOiBBU1NFUlRJ
T04gRkFJTEVEOiBtX3dyYXBwZXIgfHwgIW1fanNGdW5jdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRl
c3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZGNmNTY5NDZkMDgyODczZTFlMDZmYTA1Y2I4
ZjUwOTY5OTEyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBA
CitUaGlzIHRlc3QgaXMgY2hlY2tpbmcgdGhhdCBBdWRpb0NvbnRleHQgaXMgZGVsZXRpbmcgYWZ0
ZXIgbmF2aWdhdGlvbi4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvdW50IEF1ZGlvQ29udGV4dCBv
YmplY3RzIGRpcmVjdGx5LiBCdXQgd2UgY291bGQgdXNlIE5hdGl2ZSBNZW1vcnkgU25hcHNob3Qg
d2hpY2ggaGFzIGluZm9ybWF0aW9uIGFib3V0IFBhZ2UuQXVkaW8uU2hhcmVkRGF0YS4gQWxsIHRo
ZSBzaGFyZWQgZGF0YSBhcmUgcmV0YWluZWQgYnkgSFJURkRhdGFiYXNlTG9hZGVyIHJlZmNvdW50
ZWQgc2luZ2xldG9uIGFuZCBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBpcyB2aXNpdGlu
ZyBpdCB2aWEgcHVibGljIGdldHRlci4gCisKK0FjdGlvbjogV2FpdCBmb3IgUGFnZS5BdWRpbyBk
YXRhCitQQVNTOiBNZW1vcnkgc2l6ZSBmb3IgUGFnZS5BdWRpbyBtb3JlIHRoYW4gMTUwMDAwMDAK
K0FjdGlvbjogTmF2aWdhdGUgSUZyYW1lIHRvIHJlc291cmNlcy9ibGFuay5odG1sCitQQVNTOiBJ
RnJhbWUgd2FzIG5hdmlnYXRlZCB0byByZXNvdXJjZXMvYmxhbmsuaHRtbAorQWN0aW9uOiBSdW4g
R0MgYW5kIGNoZWNrIFBhZ2UuQXVkaW8gZGF0YSBzaXplCitQQVNTOiBObyBQYWdlLkF1ZGlvIGRh
dGEgZm91bmQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25t
aS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZjNmJkMWM1ZTE0ZDYz
NjEzMjdlYWI0MjMzOWU2MmI5Mjk1M2E3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKQEAgLTAsMCAr
MSwxMDUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0T25seU9uY2Uo
KQoreworICAgIGlmICh3aW5kb3cudGVzdEZpcnN0UnVuKQorICAgICAgICByZXR1cm47CisgICAg
d2luZG93LnRlc3RGaXJzdFJ1biA9IDE7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IG5hdmlnYXRlSUZyYW1lKCkKK3sKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL2JsYW5rLmh0bWwi
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBzaXplRm9yVHlwZShlbnRy
eSwgdHlwZU5hbWVzKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8
IHR5cGVOYW1lcy5sZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIHZhciB0eXBlTmFtZSA9
IHR5cGVOYW1lc1tpbmRleF07CisgICAgICAgICAgICB2YXIgZm91bmQgPSAwOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyeS5jaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgICAgIHZhciBjaGlsZEVudHJ5ID0gZW50cnkuY2hpbGRyZW5baV07CisgICAgICAg
ICAgICAgICAgaWYgKGNoaWxkRW50cnkubmFtZSA9PT0gdHlwZU5hbWUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGluZGV4ID09PSB0eXBlTmFtZXMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjaGlsZEVudHJ5LnNpemU7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjaGlsZEVudHJ5LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xOworCisgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gY2hpbGRFbnRyeTsKKyAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWZvdW5kKQor
ICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAt
MTsKKyAgICB9CisKKyAgICB2YXIgcGl2b3RTaXplID0gMTUwMDAwMDA7CisKKyAgICBmdW5jdGlv
biBub0F1ZGlvU2hhcmVkRGF0YShtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIHNp
emUgPSBzaXplRm9yVHlwZShtZXNzYWdlT2JqZWN0WyJyZXN1bHQiXVsiZGlzdHJpYnV0aW9uIl0s
IFsiUGFnZSIsICJBdWRpbyJdKTsKKyAgICAgICAgaWYgKHNpemUgPT09IC0xKQorICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IE5vIFBhZ2UuQXVkaW8gZGF0YSBmb3VuZCIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogIiArIHNp
emUgKyAiIGJ5dGVzIG9mIFBhZ2UuQXVkaW8gZGF0YSB3YXMgZm91bmQiKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpRnJhbWVO
YXZpZ2F0ZWQobWVzc2FnZU9iamVjdCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFT
UzogSUZyYW1lIHdhcyBuYXZpZ2F0ZWQgdG8gcmVzb3VyY2VzL2JsYW5rLmh0bWwiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnUHJvZmlsZXIuY29sbGVjdEdhcmJhZ2UnLCB7
fSwgZnVuY3Rpb24oKSB7IH0gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFjdGlvbjog
UnVuIEdDIGFuZCBjaGVjayBQYWdlLkF1ZGlvIGRhdGEgc2l6ZSIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnNlbmRDb21tYW5kKCdNZW1vcnkuZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbics
IHt9LCBub0F1ZGlvU2hhcmVkRGF0YSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2FpdEZvclNo
YXJlZEF1ZGlvRGF0YShtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgIHZhciBzaXplID0gc2l6ZUZv
clR5cGUobWVzc2FnZU9iamVjdFsicmVzdWx0Il1bImRpc3RyaWJ1dGlvbiJdLCBbIlBhZ2UiLCAi
QXVkaW8iXSk7CisgICAgICAgIGlmIChzaXplID09PSAtMSkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkZBSUw6IE5vIFBhZ2UuQXVkaW8gZGF0YSB3YXMgZm91bmQuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChzaXplIDwgcGl2b3RTaXplKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnTWVtb3J5LmdldFByb2Nlc3NNZW1vcnlEaXN0cmli
dXRpb24nLCB7fSwgd2FpdEZvclNoYXJlZEF1ZGlvRGF0YSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IE1lbW9yeSBzaXplIGZvciBQYWdlLkF1
ZGlvIG1vcmUgdGhhbiAiICsgcGl2b3RTaXplKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZW5kQ29tbWFuZCgnUGFnZS5lbmFibGUnLCB7fSwgZnVuY3Rpb24oKSB7IH0gKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFjdGlvbjogTmF2aWdhdGUgSUZyYW1lIHRvIHJl
c291cmNlcy9ibGFuay5odG1sIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFu
ZGxlclsiUGFnZS5mcmFtZU5hdmlnYXRlZCJdID0gaUZyYW1lTmF2aWdhdGVkOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtleHByZXNz
aW9uOiAnbmF2aWdhdGVJRnJhbWUoKSd9LCBmdW5jdGlvbigpIHsgfSApOworICAgICAgICB9Cisg
ICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworICAgIEluc3BlY3RvclRlc3QubG9n
KCJBY3Rpb246IFdhaXQgZm9yIFBhZ2UuQXVkaW8gZGF0YSIpOworICAgIEluc3BlY3RvclRlc3Qu
c2VuZENvbW1hbmQoJ01lbW9yeS5nZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uJywge30sIHdh
aXRGb3JTaGFyZWRBdWRpb0RhdGEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpIj4KK1RoaXMgdGVzdCBpcyBjaGVja2luZyB0
aGF0IEF1ZGlvQ29udGV4dCBpcyBkZWxldGluZyBhZnRlciBuYXZpZ2F0aW9uLgorSXQgaXMgbm90
IHBvc3NpYmxlIHRvIGNvdW50IEF1ZGlvQ29udGV4dCBvYmplY3RzIGRpcmVjdGx5LgorQnV0IHdl
IGNvdWxkIHVzZSBOYXRpdmUgTWVtb3J5IFNuYXBzaG90IHdoaWNoIGhhcyBpbmZvcm1hdGlvbiBh
Ym91dCBQYWdlLkF1ZGlvLlNoYXJlZERhdGEuCitBbGwgdGhlIHNoYXJlZCBkYXRhIGFyZSByZXRh
aW5lZCBieSBIUlRGRGF0YWJhc2VMb2FkZXIgcmVmY291bnRlZCBzaW5nbGV0b24KK2FuZCBOYXRp
dmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBpcyB2aXNpdGluZyBpdCB2aWEgcHVibGljIGdldHRl
ci4KKworPGlmcmFtZSBpZD0iaWZyYW1lIiBvbkxvYWQ9InJ1blRlc3RPbmx5T25jZSgpIiBzcmM9
InJlc291cmNlcy9hdWRpby1jb250ZXh0Lmh0bWwiID4KKzwvaWZyYW1lPgorCis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1hbmRyb2lk
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1hbmRyb2lk
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTAzMTJkNmMzMTBmYTBlMWNhNzA5MmNlYzZjOWEzZGZl
YzU5MjQwZC4uOWM3YTBlNmY3YWE3YmE1MDVlNTIwYTFkMWFiMDExODEyZDljOTQ3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tYW5kcm9pZC9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWFuZHJvaWQvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNTcsNiArNTcsOSBAQCBjcmJ1Zy5jb20vMTQ1MzM4IGh0dHAvdGVzdHMvbm90
aWZpY2F0aW9ucwogY3JidWcuY29tLzE0NTMzOCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1z
L2NvbG9yCiBjcmJ1Zy5jb20vMTQ1MzM4IHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNh
cHR1cmUtcHJldmlldy5odG1sICMgVXNlcyBtZWRpYXN0cmVhbQogY3JidWcuY29tLzE0NTMzOCB3
ZWJhdWRpbworY3JidWcuY29tLzE0NTMzOCBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlv
Lmh0bWwKK2NyYnVnLmNvbS8xNDUzMzggaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1s
ZWFrLXRlc3QuaHRtbAorCiAKICMgVGhpcyB0ZXN0IGlzIG9ubHkgZm9yIEdUSyB3aGljaCBpcyBu
b3QgYXBwbGljYWJsZSB0byBBbmRyb2lkLgogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC90
ZXh0L2Nocm9taXVtLWxpbnV4LWZvbnRjb25maWctcmVuZGVyc3R5bGUuaHRtbCBbIFdvbnRGaXgg
XQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGI0NmQ3NWE4MGE1NDAxYTJjMDljYjI3ZTcyODQ0ODNkZTg3OGY3MWEuLmVkYzZiNmE3ZWQzMDc1
MDU2Y2Y3N2VlODg4ZTE1YzZiMDNiZjY4M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
Zmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTMwMiwzICszMDIsNCBAQCB3ZWJraXQub3JnL2Iv
MTAyMjAxIGZhc3QvZG9tL1dpbmRvdy9vcGVuLXdpbmRvdy1taW4tc2l6ZS5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTAyMjAyIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGluZS10aW1l
ci1maXJlZC1mcm9tLWV2YWwtY2FsbC1zaXRlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Via2l0Lm9y
Zy9iLzEwMjIxNiBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLmh0bWwgWyBGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8xMDIyMTYgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1s
ZWFrLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBmMzQ3ODA3NmQxZWE5NzQwOTU4YTBkZTJlNWE0OTJiNGQwMzAwYjZj
Li5kOTIzNTIwYmRhYzk5NzgyM2ZlNzUwNDFlMjExMGI1MzNmNjUxZDhhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE0Miw2ICsxMTQyLDkgQEAgd2Vi
a2l0Lm9yZy9iLzg4MDgwIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrIFsgU2tpcCBdCiAKICMgUmVx
dWlyZXMgV0VCX0FVRElPIHN1cHBvcnQuCiB3ZWJraXQub3JnL2IvOTE3Mzggd2ViYXVkaW8gWyBT
a2lwIF0KK2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8uaHRtbAoraW5zcGVjdG9yLXBy
b3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbAorCiAKICMgUmVxdWlyZXMgTUVESUFf
U1RSRUFNIHN1cHBvcnQuCiB3ZWJraXQub3JnL2IvODc2NjIgZmFzdC9tZWRpYXN0cmVhbSBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4ZGQ4
ZTliMzEyNmFjYWFmNzk2YzM0YjFiOTcxZDY1NmUwYTJkMTc5Li45ODgyMmMxOGFkM2RkNjc1ZGI5
Mzc4Y2MwMGE5M2E0ODRhOTM0ZDhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMjg3LDYgKzI4Nyw5IEBAIHdlYmtpdC5vcmcvYi85OTAyNyBmYXN0L2Nz
cy9pbWFnZS1zZXQtc2V0dGluZy5odG1sIFsgU2tpcCBdCiAKICMgRm9yIG5vdywgV2ViIEF1ZGlv
IEFQSSBpcyBkaXNhYmxlZAogd2Via2l0Lm9yZy9iLzY3MTg3IHdlYmF1ZGlvIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvNjcxODcgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCit3
ZWJraXQub3JnL2IvNjcxODcgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRl
c3QuaHRtbAorCiAjIFRoZXNlIHRlc3RzIGluY2x1ZGUgcHJvcHJpZXRhcnkgY29kZWNzLgogd2Vi
a2l0Lm9yZy9iLzY3MTg3IHdlYmF1ZGlvL2NvZGVjLXRlc3RzCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTcxYWIzYjhjOGRlYjA2YzM3MDY3NDljYWVl
ZmJhNDI0ZjU0NzJlYi4uYzU2Y2ZjOWFiMTU2MmJhMDlhODVlZDQzYzVlMDM5ODE5ZDJkMGEyYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1MCw2ICs0
NTAsOCBAQCBjb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLW92ZXJmbG93LXNjcm9sbGVkLmh0bWwK
ICMgRm9yIG5vdywgV2ViIEF1ZGlvIHRlc3RzIGFyZSBkaXNhYmxlZAogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5MTQKIHdlYmF1ZGlvLworaW5zcGVjdG9yLXBy
b3RvY29sL25taS13ZWJhdWRpby5odG1sCitpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlv
LWxlYWstdGVzdC5odG1sCiAKICMgTWljcm9kYXRhIERPTSBBUEkgaXMgbm90IHlldCBlbmFibGVk
LgogZmFzdC9kb20vTWljcm9EYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCAwYzhlOTZkYzY0MmNiNjJkZDkxMjE3OGU2NjI2YzQyMGM4MWMwNGFlLi5hNTZj
YjZiN2FiNDIxZDMxMTlmODc1ZmJmZTMzMzQ1YTliOWNjOTNiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM5Nyw2ICszOTcsNyBAQCBmYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdW5zZXQuaHRtbAogIyBGb3Igbm93LCBXZWIg
QXVkaW8gQVBJIGlzIGRpc2FibGVkCiB3ZWJhdWRpby8KIHdlYmtpdC5vcmcvYi8xMDE3MjkgaW5z
cGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCit3ZWJraXQub3JnL2IvMTAxNzI5IGlu
c3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKIAogIyBbUXRdIEVu
YWJsZSBXZWJHTCBieSBkZWZhdWx0IGZvciBRdFdlYktpdAogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU5OTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggM2U3ZDE4MzExNjE3ZGY2MjE2NDk4NjgwYWFmMzY3ZDA0MTkwYmY0
OS4uMmZjYmExZTZkNzEwNjExOGE0NGVlZjVkYWJhNmQzMzlmOGVjN2E2ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NDIsNiArMTU0Miw4IEBAIGNz
czMvc2VsZWN0b3JzMwogCiAjIEZvciBub3csIFdlYiBBdWRpbyBBUEkgaXMgZGlzYWJsZWQKIHdl
YmF1ZGlvLworaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCitpbnNwZWN0b3It
cHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC5odG1sCiAKICMgVGhlIHdpbiBwb3J0IGhh
cyBubyBzdXBwb3J0IGZvciA8dHJhY2s+CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MzY2OApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggYTNjNGQzNTc0ODRiZTU3ZWQ4MGRjNWQ5MWQ5NWFhY2QzNTUwZDkw
OS4uNDM3ODI5N2M5NzJmMTJjMzNhYjYxNWM2YzhhOTBiODhiNzI4N2FlZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMDc1LDYgKzIw
NzUsOSBAQCBjc3MzL3NlbGVjdG9yczMKIAogIyBGb3Igbm93LCBXZWIgQXVkaW8gQVBJIGlzIGRp
c2FibGVkCiB3ZWJhdWRpby8KK2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8uaHRtbAor
aW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbAorCiAKICMgVGhl
IHdpbiBwb3J0IGhhcyBubyBzdXBwb3J0IGZvciA8dHJhY2s+CiAjIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY2OAo=
</data>
<flag name="review"
          id="190076"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="190080"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174971</attachid>
            <date>2012-11-19 06:58:17 -0800</date>
            <delta_ts>2012-11-19 06:58:17 -0800</delta_ts>
            <desc>relanded with RefPtr&lt;AudioContext&gt; guard in deleteMarkedNodes</desc>
            <filename>bug-102356-20121119185606.patch</filename>
            <type>text/plain</type>
            <size>27224</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE2YTAxM2VhMDMwMzEw
YzkxZWJjY2Y5NDExNjk5ZWRkODBkYmM1MS4uNzQzMGJjMjI0ZTY0ZGRmNGYyY2VjYzRjYjYzNDg3
ZTk0MzU1NDIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTExLTE5ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICB3ZWJhdWRpbzog
bGVhazogQXVkaW9Db250ZXh0IG9iamVjdHMgYXJlIGxlYWtpbmcuIFRoZXkgcmV0YWluIDM2bWIg
b2Ygc2hhcmVkIGRhdGEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDIzNTYKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAg
ICAgIEEgY2xlYW4tdXAgY29kZSB3YXMgbW92ZWQgZnJvbSB1bmluaXRpYWxpemUgdG8gY2xlYXIg
bWV0aG9kLgorICAgICAgICBBdWRpb0NvbnRleHQgbWFya3MgaXRzZWxmIGFzIGhhc1BlbmRpbmdB
Y3Rpdml0eSBpbiBtZXRob2QgY29uc3RydWN0Q29tbW9uIGFuZCB1bm1hcmtzIGl0c2VsZiBpbiBt
ZXRob2QgY2xlYXIuCisgICAgICAgIG1faXNTdG9wU2NoZWR1bGVkIGZpbHRlcnMgb3V0IHNlY29u
ZCBBY3RpdmVET01PYmplY3Q6OnN0b3AgY2FsbC4KKyAgICAgICAgbWFya0ZvckRlbGV0aW9uIGFw
cGVuZHMgQXVkaW9Ob2RlIHBvaW50ZXIgdG8gbV9ub2Rlc1RvRGVsZXRlIGFycmF5IGlmIHRoZXJl
IGlzIG5vIGFjdGl2ZSBhdWRpbyB0aHJlYWQuCisgICAgICAgIGFkb3B0UmVmIHdhcyBhZGRlZCBp
biBjcmVhdGVPZmZsaW5lQ29udGV4dCBtZXRob2QuCisgICAgICAgIEEgZ3VhcmQgd2FzIGFkZGVk
IGludG8gZGVsZXRlTWFya2VkTm9kZXMuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3Rv
Y29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
cmVhdGVPZmZsaW5lQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENv
bW1vbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN0b3BEaXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoQXVkaW9Db250
ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3Ry
aWJ1dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb246
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChQbGF0Zm9ybU1l
bW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMS0xOSAg
RXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBET01F
eGNlcHRpb24gbmFtZTogUXVvdGFFeGNlZWRlZEVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMTdhNDM5OTM4MzlmODE5Mzk5
NjkyMmYyZmUxNTE0YjE5ZTc3NjJlYy4uZTRmMDBiZTljMTA4ZDNiZThkZTI4NTIyODJjYWRkYWY4
MTU2ZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiBkb2N1bWVudCwKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gYXVkaW9D
b250ZXh0KG5ldyBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJl
ck9mRnJhbWVzLCBzYW1wbGVSYXRlKSk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gYXVkaW9D
b250ZXh0KGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1lbnQsIG51bWJlck9mQ2hhbm5l
bHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKSkpOwogICAgIGF1ZGlvQ29udGV4dC0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dC5yZWxlYXNlKCk7CiB9CkBA
IC0xNDMsNiArMTQzLDcgQEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LAogLy8gQ29uc3RydWN0b3Ig
Zm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1l
bnQsIHRoaXMpCisgICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKICAgICAsIG1faXNJbml0
aWFsaXplZChmYWxzZSkKICAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQogICAg
ICwgbV9kb2N1bWVudChkb2N1bWVudCkKQEAgLTE2OSw2ICsxNzAsNyBAQCBBdWRpb0NvbnRleHQ6
OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQpCiAvLyBDb25zdHJ1Y3RvciBmb3Igb2Zm
bGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4
dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChk
b2N1bWVudCwgdGhpcykKKyAgICAsIG1faXNTdG9wU2NoZWR1bGVkKGZhbHNlKQogICAgICwgbV9p
c0luaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQoZmFsc2Up
CiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQpAQCAtMTkyLDYgKzE5NCwxMCBAQCBBdWRpb0Nv
bnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdAogCiB2b2lkIEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkK
IHsKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBh
ZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmpl
Y3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgor
ICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKwogI2lmIFVTRShHU1RSRUFNRVIpCiAgICAg
aW5pdGlhbGl6ZUdTdHJlYW1lcigpOwogI2VuZGlmCkBAIC0yMDcsNiArMjEzLDggQEAgQXVkaW9D
b250ZXh0Ojp+QXVkaW9Db250ZXh0KCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBBdWRpb0Nv
bnRleHQ6On5BdWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CiAjZW5kaWYKICAgICAvLyBBdWRpb05v
ZGVzIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlaXIgY29udGV4dCwgc28gdGhlcmUgc2hvdWxkIGJl
IG5vIHdheSB0byBiZSBpbiB0aGUgZGVzdHJ1Y3RvciBpZiB0aGVyZSBhcmUgc3RpbGwgQXVkaW9O
b2RlcyBhcm91bmQuCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVCht
X2lzU3RvcFNjaGVkdWxlZCk7CiAgICAgQVNTRVJUKCFtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsK
ICAgICBBU1NFUlQoIW1fcmVmZXJlbmNlZE5vZGVzLnNpemUoKSk7CiAgICAgQVNTRVJUKCFtX2Zp
bmlzaGVkTm9kZXMuc2l6ZSgpKTsKQEAgLTIzOCwzNSArMjQ2LDQ1IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAgICAgfQogfQogCi12b2lkIEF1ZGlvQ29udGV4dDo6dW5p
bml0aWFsaXplKCkKK3ZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZSB0
byB0aGUgZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVyIGJlIGRl
bGV0ZWQgc2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhl
IGNvbnRleHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0
aW9uTm9kZS5jbGVhcigpOwogCi0gICAgaWYgKG1faXNJbml0aWFsaXplZCkgewotICAgICAgICAv
LyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgZmluaXNo
IHVuaW5pdGlhbGl6aW5nLgotICAgICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0KHRo
aXMpOworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBu
b2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAg
ICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVu
ZChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVs
ZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKIAot
ICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5k
ZXJpbmcuCi0gICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKyAgICAv
LyBJdCB3YXMgc2V0IGluIGNvbnN0cnVjdENvbW1vbi4KKyAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKK30KIAotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0
aWFsaXplIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1
bmluaXRpYWxpemVkLgotICAgICAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7Cit2
b2lkIEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRv
IHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVs
ZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUg
Y29udGV4dC4KLSAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUuY2xlYXIoKTsKKyAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghaXNPZmZsaW5l
Q29udGV4dCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRDb3VudCk7
Ci0gICAgICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJl
IHBsYXlpbmcuCi0gICAgICAgIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisgICAgLy8g
VGhpcyBzdG9wcyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAg
IG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKIAotICAgICAgICBkZWxldGVNYXJr
ZWROb2RlcygpOworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUg
YSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlh
bGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB0cnVlOwogCi0gICAgICAgIG1f
aXNJbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7Cisg
ICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKKyAgICAgICAgLS1zX2hhcmR3
YXJlQ29udGV4dENvdW50OwogICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMg
d2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOwogfQogCiBib29sIEF1ZGlvQ29u
dGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CkBAIC0yODMsNyArMzAxLDcgQEAgYm9vbCBBdWRp
b0NvbnRleHQ6OmlzUnVubmFibGUoKSBjb25zdAogICAgIHJldHVybiBtX2hydGZEYXRhYmFzZUxv
YWRlci0+aXNMb2FkZWQoKTsKIH0KIAotdm9pZCBBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZURp
c3BhdGNoKHZvaWQqIHVzZXJEYXRhKQordm9pZCBBdWRpb0NvbnRleHQ6OnN0b3BEaXNwYXRjaCh2
b2lkKiB1c2VyRGF0YSkKIHsKICAgICBBdWRpb0NvbnRleHQqIGNvbnRleHQgPSByZWludGVycHJl
dF9jYXN0PEF1ZGlvQ29udGV4dCo+KHVzZXJEYXRhKTsKICAgICBBU1NFUlQoY29udGV4dCk7CkBA
IC0yOTEsMTcgKzMwOSwyMyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplRGlzcGF0
Y2godm9pZCogdXNlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQtPnVuaW5p
dGlhbGl6ZSgpOworICAgIGNvbnRleHQtPmNsZWFyKCk7CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0
OjpzdG9wKCkKIHsKICAgICBtX2RvY3VtZW50ID0gMDsgLy8gZG9jdW1lbnQgaXMgZ29pbmcgYXdh
eQogCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdp
Y2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9p
c1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCiAgICAgLy8gRG9uJ3QgY2FsbCB1bmluaXRpYWxpemUo
KSBpbW1lZGlhdGVseSBoZXJlIGJlY2F1c2UgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMg
aW4gdGhlIG1pZGRsZQogICAgIC8vIG9mIGRlYWxpbmcgd2l0aCBhbGwgb2YgaXRzIEFjdGl2ZURP
TU9iamVjdHMgYXQgdGhpcyBwb2ludC4gdW5pbml0aWFsaXplKCkgY2FuIGRlLXJlZmVyZW5jZSBv
dGhlcgogICAgIC8vIEFjdGl2ZURPTU9iamVjdHMgc28gbGV0J3Mgc2NoZWR1bGUgdW5pbml0aWFs
aXplKCkgdG8gYmUgY2FsbGVkIGxhdGVyLgogICAgIC8vIEZJWE1FOiBzZWUgaWYgdGhlcmUncyBh
IG1vcmUgZGlyZWN0IHdheSB0byBoYW5kbGUgdGhpcyBpc3N1ZS4KLSAgICBjYWxsT25NYWluVGhy
ZWFkKHVuaW5pdGlhbGl6ZURpc3BhdGNoLCB0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKHN0
b3BEaXNwYXRjaCwgdGhpcyk7CiB9CiAKIERvY3VtZW50KiBBdWRpb0NvbnRleHQ6OmRvY3VtZW50
KCkgY29uc3QKQEAgLTc3MCw3ICs3OTQsMTEgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmhhbmRsZURl
ZmVycmVkRmluaXNoRGVyZWZzKCkKIHZvaWQgQXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24o
QXVkaW9Ob2RlKiBub2RlKQogewogICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7Ci0gICAgbV9u
b2Rlc01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZChub2RlKTsKKworICAgIGlmIChpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChub2RlKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQobm9kZSk7CiAK
ICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0
aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3QsCiAgICAgLy8gc2luY2UgYWxsIGNvbm5l
Y3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCkKQEAgLTc4OCw4ICs4MTYsNyBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVs
ZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4gICAgCiAgICAgaWYgKG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZChtX25vZGVzTWFya2Vk
Rm9yRGVsZXRpb25baV0pOworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKG1fbm9kZXNN
YXJrZWRGb3JEZWxldGlvbik7CiAgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVh
cigpOwogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CkBAIC04MTYsMjcg
Kzg0MywzMCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBBdXRvTG9ja2VyIGxvY2tlcih0aGlzKTsK
LSAgICAKLSAgICB3aGlsZSAoc2l6ZV90IG4gPSBtX25vZGVzVG9EZWxldGUuc2l6ZSgpKSB7Ci0g
ICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZVtuIC0gMV07Ci0gICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5yZW1vdmVMYXN0KCk7Ci0KLSAgICAgICAgLy8gQmVmb3JlIGRlbGV0
aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlT
dW1taW5nSnVuY3Rpb25zLgotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUt
Pm51bWJlck9mSW5wdXRzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZklucHV0czsgKytpKQotICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMucmVt
b3ZlKG5vZGUtPmlucHV0KGkpKTsKLQotICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5v
ZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVP
dXRwdXRzLgotICAgICAgICB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMgPSBub2RlLT5udW1iZXJP
Zk91dHB1dHMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0
cHV0czsgKytpKQotICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVtb3ZlKG5v
ZGUtPm91dHB1dChpKSk7Ci0KLSAgICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgotICAgICAg
ICBkZWxldGUgbm9kZTsKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVs
ZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisg
ICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdCh0aGlzKTsKKyAgICB7CisgICAgICAgIEF1
dG9Mb2NrZXIgbG9ja2VyKHRoaXMpOworCisgICAgICAgIHdoaWxlIChzaXplX3QgbiA9IG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9k
ZXNUb0RlbGV0ZVtuIC0gMV07CisgICAgICAgICAgICBtX25vZGVzVG9EZWxldGUucmVtb3ZlTGFz
dCgpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91
dCBhbnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAg
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsr
aSkKKyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+
aW5wdXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNs
ZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZP
dXRwdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZP
dXRwdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVt
b3ZlKG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBp
dC4KKyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxl
dGlvblNjaGVkdWxlZCA9IGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBtX2lzRGVsZXRpb25TY2hl
ZHVsZWQgPSBmYWxzZTsKIH0KIAogdm9pZCBBdWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rp
b25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggOTc4MTFkNWI4
MjQ4YjdhYjllYTZhMDFlMzMyNDUyMmI5YjQxYTNhNi4uZDUyMWYxNjY0ODcyYzgzNWI2ZDUxZjc3
MjMyZDBhYTBmNGEwZjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCkBAIC0yNTUsNyArMjU1LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGxhenlJbml0aWFsaXplKCk7CiAgICAgdm9pZCB1bmluaXRpYWxpemUoKTsKLSAgICBzdGF0aWMg
dm9pZCB1bmluaXRpYWxpemVEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CisKKyAgICAvLyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAgLy8gV2UnZCBsaWtlIHRv
IHNjaGVkdWxlIG9ubHkgb25lIHN0b3AgYWN0aW9uIGZvciB0aGVtLgorICAgIGJvb2wgbV9pc1N0
b3BTY2hlZHVsZWQ7CisgICAgc3RhdGljIHZvaWQgc3RvcERpc3BhdGNoKHZvaWQqIHVzZXJEYXRh
KTsKKyAgICB2b2lkIGNsZWFyKCk7CiAKICAgICB2b2lkIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7
CiAgICAgc3RhdGljIHZvaWQgZGVsZXRlTWFya2VkTm9kZXNEaXNwYXRjaCh2b2lkKiB1c2VyRGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRp
b0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCAwZjJiMDI5MzM1ZmU0NjU3YTA0MDBiYjg0MmY4
ZWRkNjlhMjg4ODI3Li5kYjQ2NTE2MmY1OGIwMzU0ZTZjZmUxZmY1ZTAzNDg3MTI3NDc1MWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRl
eHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1
ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiRXJyb3Ig
Y3JlYXRpbmcgQXVkaW9Db250ZXh0IiwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIAogICAgIC8v
IFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlv
IGNvbnRleHQuCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCks
ICZpbmZvLCBhdWRpb0NvbnRleHQuZ2V0KCkpOwotICAgIGF1ZGlvQ29udGV4dC0+cmVmKCk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICBW
OERPTVdyYXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIpOwogICAgIAotICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworICAgIHJldHVy
biB3cmFwcGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3YjlkOTQwMTg4
NzhkZWVjNzAxYWZkNWQ0NzZhYjZiNmFhMzk3MWQ2Li5jZDBkZTlkODdkYzZkOGZhYWU4MWY4MDFk
NTBlNjNlYThiY2I3NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTUzNiw2ICs1MzYsOCBAQCB2b2lkIEluc3BlY3Rvck1l
bW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVm
UHRyPElucwogICAgIHJlcG9ydFJlbmRlclRyZWVJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbkNs
aWVudCwgbV9wYWdlKTsKICAgICBjb2xsZWN0RG9tVHJlZUluZm8obWVtb3J5SW5zdHJ1bWVudGF0
aW9uLCBtX3BhZ2UpOyAvLyBGSVhNRTogY29sbGVjdCBmb3IgYWxsIHBhZ2VzPwogCisgICAgUGxh
dGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE1lbW9yeVVzYWdlKCZtZW1vcnlJbnN0
cnVtZW50YXRpb24pOworCiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRy
ZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwogICAgIGFkZFBsYXRmb3JtQ29t
cG9uZW50c0luZm8oY2hpbGRyZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTQzZDNhOTkz
YjY2MjE3YTEwMWQwYWMyMDMwNDQxYWRmNzY4NjFlNy4uMzExMmEyZGUyOWE0ZGQxYjk3MzhjZTU0
NzZlMGRlMzlmOGM0YmRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzEsNiArMzEsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgogCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VM
b2FkZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lbW9yeU9iamVjdFR5
cGUgUGxhdGZvcm1NZW1vcnlUeXBlczo6SW1hZ2UgPSAiUGFnZS5JbWFnZSI7CkBAIC0zOSw0ICs0
MywxMyBAQCBNZW1vcnlPYmplY3RUeXBlIFBsYXRmb3JtTWVtb3J5VHlwZXM6OkxvYWRlciA9ICJQ
YWdlLkxvYWRlciI7CiBNZW1vcnlPYmplY3RUeXBlIFBsYXRmb3JtTWVtb3J5VHlwZXM6OkF1ZGlv
ID0gIlBhZ2UuQXVkaW8iOwogTWVtb3J5T2JqZWN0VHlwZSBQbGF0Zm9ybU1lbW9yeVR5cGVzOjpB
dWRpb1NoYXJlZERhdGEgPSAiUGFnZS5BdWRpby5TaGFyZWREYXRhIjsKIAordm9pZCBQbGF0Zm9y
bU1lbW9yeUluc3RydW1lbnRhdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UoV1RGOjpNZW1vcnlJbnN0
cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbikKK3sKKyNpZiBFTkFCTEUoV0VCX0FV
RElPKQorICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkUm9vdE9iamVjdChIUlRGRGF0YWJh
c2VMb2FkZXI6OmxvYWRlcigpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1lbW9yeUluc3Ry
dW1lbnRhdGlvbik7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgKaW5kZXggODk4Yjk2ZGJhMzQ3ZjA1Nzg5MzAyMzU1NmQ5YjMxNjIwNmRmYmI0ZS4uOWNl
YjkyZWM1MzQ3MjFmNTdlNmI2MWJhNmMwZTU3ODIxNzVjODJlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBA
IC00OCw2ICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgQXVk
aW9TaGFyZWREYXRhOwogfTsKIAorY2xhc3MgUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24g
eworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKFdURjo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uKik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhZGVmaW5lZChQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYw
ZjliYzVhOTkzMGY4YjkwYWJmZmFjZTI1NDQ3Nzk4MDllZmM5ODkuLjM2ZjhmOTBmOTZhZGJmMmM1
NmUxYTFmMmFkMDBmZWVjMjQ0NTk5ZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMS0x
OSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgd2Vi
YXVkaW86IGxlYWs6IEF1ZGlvQ29udGV4dCBvYmplY3RzIGFyZSBsZWFraW5nLiBUaGV5IHJldGFp
biAzNm1iIG9mIHNoYXJlZCBkYXRhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAyMzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4K
KworICAgICAgICBBIGNsZWFuLXVwIGNvZGUgd2FzIG1vdmVkIGZyb20gdW5pbml0aWFsaXplIHRv
IGNsZWFyIG1ldGhvZC4KKyAgICAgICAgQXVkaW9Db250ZXh0IG1hcmtzIGl0c2VsZiBhcyBoYXNQ
ZW5kaW5nQWN0aXZpdHkgaW4gbWV0aG9kIGNvbnN0cnVjdENvbW1vbiBhbmQgdW5tYXJrcyBpdHNl
bGYgaW4gbWV0aG9kIGNsZWFyLgorICAgICAgICBtX2lzU3RvcFNjaGVkdWxlZCBmaWx0ZXJzIG91
dCBzZWNvbmQgQWN0aXZlRE9NT2JqZWN0OjpzdG9wIGNhbGwuCisgICAgICAgIG1hcmtGb3JEZWxl
dGlvbiBhcHBlbmRzIEF1ZGlvTm9kZSBwb2ludGVyIHRvIG1fbm9kZXNUb0RlbGV0ZSBhcnJheSBp
ZiB0aGVyZSBpcyBubyBhY3RpdmUgYXVkaW8gdGhyZWFkLgorICAgICAgICBhZG9wdFJlZiB3YXMg
YWRkZWQgaW4gY3JlYXRlT2ZmbGluZUNvbnRleHQgbWV0aG9kLgorICAgICAgICBBIGd1YXJkIHdh
cyBhZGRlZCBpbnRvIGRlbGV0ZU1hcmtlZE5vZGVzLgorCisgICAgICAgICogaW5zcGVjdG9yLXBy
b3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1hbmRyb2lkL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8v
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMS0xOSAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBET01FeGNlcHRpb24gbmFtZTogUXVvdGFFeGNl
ZWRlZEVycm9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbm1p
LXdlYmF1ZGlvLWxlYWstdGVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmNkY2Y1Njk0NmQwODI4NzNlMWUwNmZhMDVjYjhmNTA5Njk5MTI0MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1RoaXMgdGVzdCBpcyBjaGVja2luZyB0aGF0
IEF1ZGlvQ29udGV4dCBpcyBkZWxldGluZyBhZnRlciBuYXZpZ2F0aW9uLiBJdCBpcyBub3QgcG9z
c2libGUgdG8gY291bnQgQXVkaW9Db250ZXh0IG9iamVjdHMgZGlyZWN0bHkuIEJ1dCB3ZSBjb3Vs
ZCB1c2UgTmF0aXZlIE1lbW9yeSBTbmFwc2hvdCB3aGljaCBoYXMgaW5mb3JtYXRpb24gYWJvdXQg
UGFnZS5BdWRpby5TaGFyZWREYXRhLiBBbGwgdGhlIHNoYXJlZCBkYXRhIGFyZSByZXRhaW5lZCBi
eSBIUlRGRGF0YWJhc2VMb2FkZXIgcmVmY291bnRlZCBzaW5nbGV0b24gYW5kIE5hdGl2ZSBNZW1v
cnkgSW5zdHJ1bWVudGF0aW9uIGlzIHZpc2l0aW5nIGl0IHZpYSBwdWJsaWMgZ2V0dGVyLiAKKwor
QWN0aW9uOiBXYWl0IGZvciBQYWdlLkF1ZGlvIGRhdGEKK1BBU1M6IE1lbW9yeSBzaXplIGZvciBQ
YWdlLkF1ZGlvIG1vcmUgdGhhbiAxNTAwMDAwMAorQWN0aW9uOiBOYXZpZ2F0ZSBJRnJhbWUgdG8g
cmVzb3VyY2VzL2JsYW5rLmh0bWwKK1BBU1M6IElGcmFtZSB3YXMgbmF2aWdhdGVkIHRvIHJlc291
cmNlcy9ibGFuay5odG1sCitBY3Rpb246IFJ1biBHQyBhbmQgY2hlY2sgUGFnZS5BdWRpbyBkYXRh
IHNpemUKK1BBU1M6IE5vIFBhZ2UuQXVkaW8gZGF0YSBmb3VuZAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yM2FjY2M3NGNiOGY4NjE5NGM3OWVjNTM2ZjkxZTE5YWVkNjNmYjY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJh
dWRpby1sZWFrLXRlc3QuaHRtbApAQCAtMCwwICsxLDEwNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJv
dG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5UZXN0T25s
eU9uY2UoKQoreworICAgIGlmICh3aW5kb3cudGVzdEZpcnN0UnVuKQorICAgICAgICByZXR1cm47
CisgICAgd2luZG93LnRlc3RGaXJzdFJ1biA9IDE7CisKKyAgICBydW5UZXN0KCk7Cit9CisKK2Z1
bmN0aW9uIG5hdmlnYXRlSUZyYW1lKCkKK3sKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL2JsYW5r
Lmh0bWwiOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBzaXplRm9yVHlw
ZShlbnRyeSwgdHlwZU5hbWVzKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBp
bmRleCA8IHR5cGVOYW1lcy5sZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIHZhciB0eXBl
TmFtZSA9IHR5cGVOYW1lc1tpbmRleF07CisgICAgICAgICAgICB2YXIgZm91bmQgPSAwOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyeS5jaGlsZHJlbi5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgIHZhciBjaGlsZEVudHJ5ID0gZW50cnkuY2hpbGRyZW5baV07Cisg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkRW50cnkubmFtZSA9PT0gdHlwZU5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0eXBlTmFtZXMubGVuZ3RoIC0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZEVudHJ5LnNpemU7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjaGlsZEVudHJ5LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gY2hpbGRFbnRyeTsK
KyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWZv
dW5kKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiAtMTsKKyAgICB9CisKKyAgICB2YXIgcGl2b3RTaXplID0gMTUwMDAwMDA7CisKKyAgICBm
dW5jdGlvbiBub0F1ZGlvU2hhcmVkRGF0YShtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAg
dmFyIHNpemUgPSBzaXplRm9yVHlwZShtZXNzYWdlT2JqZWN0WyJyZXN1bHQiXVsiZGlzdHJpYnV0
aW9uIl0sIFsiUGFnZSIsICJBdWRpbyJdKTsKKyAgICAgICAgaWYgKHNpemUgPT09IC0xKQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IE5vIFBhZ2UuQXVkaW8gZGF0YSBmb3Vu
ZCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDog
IiArIHNpemUgKyAiIGJ5dGVzIG9mIFBhZ2UuQXVkaW8gZGF0YSB3YXMgZm91bmQiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBp
RnJhbWVOYXZpZ2F0ZWQobWVzc2FnZU9iamVjdCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiUEFTUzogSUZyYW1lIHdhcyBuYXZpZ2F0ZWQgdG8gcmVzb3VyY2VzL2JsYW5rLmh0bWwiKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnUHJvZmlsZXIuY29sbGVjdEdhcmJh
Z2UnLCB7fSwgZnVuY3Rpb24oKSB7IH0gKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFj
dGlvbjogUnVuIEdDIGFuZCBjaGVjayBQYWdlLkF1ZGlvIGRhdGEgc2l6ZSIpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCdNZW1vcnkuZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1
dGlvbicsIHt9LCBub0F1ZGlvU2hhcmVkRGF0YSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2Fp
dEZvclNoYXJlZEF1ZGlvRGF0YShtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgIHZhciBzaXplID0g
c2l6ZUZvclR5cGUobWVzc2FnZU9iamVjdFsicmVzdWx0Il1bImRpc3RyaWJ1dGlvbiJdLCBbIlBh
Z2UiLCAiQXVkaW8iXSk7CisgICAgICAgIGlmIChzaXplID09PSAtMSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IE5vIFBhZ2UuQXVkaW8gZGF0YSB3YXMgZm91bmQuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChzaXplIDwgcGl2b3RTaXplKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnTWVtb3J5LmdldFByb2Nlc3NNZW1vcnlE
aXN0cmlidXRpb24nLCB7fSwgd2FpdEZvclNoYXJlZEF1ZGlvRGF0YSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IE1lbW9yeSBzaXplIGZvciBQ
YWdlLkF1ZGlvIG1vcmUgdGhhbiAiICsgcGl2b3RTaXplKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCgnUGFnZS5lbmFibGUnLCB7fSwgZnVuY3Rpb24oKSB7IH0gKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFjdGlvbjogTmF2aWdhdGUgSUZyYW1l
IHRvIHJlc291cmNlcy9ibGFuay5odG1sIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
ZW50SGFuZGxlclsiUGFnZS5mcmFtZU5hdmlnYXRlZCJdID0gaUZyYW1lTmF2aWdhdGVkOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgnUnVudGltZS5ldmFsdWF0ZScsIHtl
eHByZXNzaW9uOiAnbmF2aWdhdGVJRnJhbWUoKSd9LCBmdW5jdGlvbigpIHsgfSApOworICAgICAg
ICB9CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5sb2coIiIpOworICAgIEluc3BlY3RvclRl
c3QubG9nKCJBY3Rpb246IFdhaXQgZm9yIFBhZ2UuQXVkaW8gZGF0YSIpOworICAgIEluc3BlY3Rv
clRlc3Quc2VuZENvbW1hbmQoJ01lbW9yeS5nZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uJywg
e30sIHdhaXRGb3JTaGFyZWRBdWRpb0RhdGEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpIj4KK1RoaXMgdGVzdCBpcyBjaGVj
a2luZyB0aGF0IEF1ZGlvQ29udGV4dCBpcyBkZWxldGluZyBhZnRlciBuYXZpZ2F0aW9uLgorSXQg
aXMgbm90IHBvc3NpYmxlIHRvIGNvdW50IEF1ZGlvQ29udGV4dCBvYmplY3RzIGRpcmVjdGx5Lgor
QnV0IHdlIGNvdWxkIHVzZSBOYXRpdmUgTWVtb3J5IFNuYXBzaG90IHdoaWNoIGhhcyBpbmZvcm1h
dGlvbiBhYm91dCBQYWdlLkF1ZGlvLlNoYXJlZERhdGEuCitBbGwgdGhlIHNoYXJlZCBkYXRhIGFy
ZSByZXRhaW5lZCBieSBIUlRGRGF0YWJhc2VMb2FkZXIgcmVmY291bnRlZCBzaW5nbGV0b24KK2Fu
ZCBOYXRpdmUgTWVtb3J5IEluc3RydW1lbnRhdGlvbiBpcyB2aXNpdGluZyBpdCB2aWEgcHVibGlj
IGdldHRlci4KKworPGlmcmFtZSBpZD0iaWZyYW1lIiBvbkxvYWQ9InJ1blRlc3RPbmx5T25jZSgp
IiBzcmM9InJlc291cmNlcy9hdWRpby1jb250ZXh0Lmh0bWwiID4KKzwvaWZyYW1lPgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1h
bmRyb2lkL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1h
bmRyb2lkL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTU3ZGVhZjY2YzY5ZWQzNDlmY2Y5NDQ3Yjkw
MDJmOTY1MjIyODM0ZS4uMWU3N2MzNDY4YjIxN2M2MWY0YjRlMDZhNTNhZTVlNzM4MGQxZWMwNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tYW5kcm9pZC9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWFuZHJvaWQvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNTcsNiArNTcsOSBAQCBjcmJ1Zy5jb20vMTQ1MzM4IGh0dHAvdGVz
dHMvbm90aWZpY2F0aW9ucwogY3JidWcuY29tLzE0NTMzOCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2NvbG9yCiBjcmJ1Zy5jb20vMTQ1MzM4IHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3Zp
ZGVvLWNhcHR1cmUtcHJldmlldy5odG1sICMgVXNlcyBtZWRpYXN0cmVhbQogY3JidWcuY29tLzE0
NTMzOCB3ZWJhdWRpbworY3JidWcuY29tLzE0NTMzOCBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdl
YmF1ZGlvLmh0bWwKK2NyYnVnLmNvbS8xNDUzMzggaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJh
dWRpby1sZWFrLXRlc3QuaHRtbAorCiAKICMgVGhpcyB0ZXN0IGlzIG9ubHkgZm9yIEdUSyB3aGlj
aCBpcyBub3QgYXBwbGljYWJsZSB0byBBbmRyb2lkLgogcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
ZmFzdC90ZXh0L2Nocm9taXVtLWxpbnV4LWZvbnRjb25maWctcmVuZGVyc3R5bGUuaHRtbCBbIFdv
bnRGaXggXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDBjYjRiM2U2M2ZmYzhlNTI0YjU4OGY5NWMyNDllZjFmOGVlZDE0MWMuLmMwYmE5NGNj
ZjQ3NjEzNmFmZWQwOWI5MmE3OGVmOTVjZjNmNDU2MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI5NywzICsyOTcsNCBAQCB3ZWJraXQu
b3JnL2IvMTAyMjAxIGZhc3QvZG9tL1dpbmRvdy9vcGVuLXdpbmRvdy1taW4tc2l6ZS5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAyMjAyIGluc3BlY3Rvci90aW1lbGluZS90aW1lbGlu
ZS10aW1lci1maXJlZC1mcm9tLWV2YWwtY2FsbC1zaXRlLmh0bWwgWyBGYWlsdXJlIF0KIAogd2Vi
a2l0Lm9yZy9iLzEwMjIxNiBpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDIyMTYgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJh
dWRpby1sZWFrLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAwMjcxMjAwMzlhYzVmN2UxMjNmZjZiYTA2NTEzMzZlYmY5
ODhkNjQyLi5hZGYxMGFmN2NkZDAzMzE2YzY1OTIyMTY4MGQ3Njg1YWFmYjk4NGU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE0Miw2ICsxMTQyLDkg
QEAgd2Via2l0Lm9yZy9iLzg4MDgwIGh0dHAvdGVzdHMvcG9pbnRlci1sb2NrIFsgU2tpcCBdCiAK
ICMgUmVxdWlyZXMgV0VCX0FVRElPIHN1cHBvcnQuCiB3ZWJraXQub3JnL2IvOTE3Mzggd2ViYXVk
aW8gWyBTa2lwIF0KK2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8uaHRtbAoraW5zcGVj
dG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbAorCiAKICMgUmVxdWlyZXMg
TUVESUFfU1RSRUFNIHN1cHBvcnQuCiB3ZWJraXQub3JnL2IvODc2NjIgZmFzdC9tZWRpYXN0cmVh
bSBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAxYTlmNTY5MjQ4NjUwZGUwZGQwOGJhYjBkMTIzNTExNTNkNWE4N2NhLi41N2ExMDMwZTA5YzI1
YmUxNzQ5NjI0OWIyMGQzYjAzMWJiNTI2ODg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjkwLDYgKzI5MCw5IEBAIHdlYmtpdC5vcmcvYi85OTAyNyBm
YXN0L2Nzcy9pbWFnZS1zZXQtc2V0dGluZy5odG1sIFsgU2tpcCBdCiAKICMgRm9yIG5vdywgV2Vi
IEF1ZGlvIEFQSSBpcyBkaXNhYmxlZAogd2Via2l0Lm9yZy9iLzY3MTg3IHdlYmF1ZGlvIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvNjcxODcgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5o
dG1sCit3ZWJraXQub3JnL2IvNjcxODcgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1s
ZWFrLXRlc3QuaHRtbAorCiAjIFRoZXNlIHRlc3RzIGluY2x1ZGUgcHJvcHJpZXRhcnkgY29kZWNz
Lgogd2Via2l0Lm9yZy9iLzY3MTg3IHdlYmF1ZGlvL2NvZGVjLXRlc3RzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjFlZmU5Y2ZkMzA1ZDc1NDUwOGE4
ODU2YTRlNzg2ZmQwOTk2NzZmNi4uMDQwMGRmYTYyMTJiMzhlODk3Yzc0YzczZDcyMGQ0OTg3MjIz
YjllMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ1
MCw2ICs0NTAsOCBAQCBjb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLW92ZXJmbG93LXNjcm9sbGVk
Lmh0bWwKICMgRm9yIG5vdywgV2ViIEF1ZGlvIHRlc3RzIGFyZSBkaXNhYmxlZAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5MTQKIHdlYmF1ZGlvLworaW5zcGVj
dG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCitpbnNwZWN0b3ItcHJvdG9jb2wvbm1pLXdl
YmF1ZGlvLWxlYWstdGVzdC5odG1sCiAKICMgTWljcm9kYXRhIERPTSBBUEkgaXMgbm90IHlldCBl
bmFibGVkLgogZmFzdC9kb20vTWljcm9EYXRhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA0ZTQ5MWIyZGQyZGVmMGYxZDAyMDhhNGM4MDBlMzM4ZjZiMDVkNzhk
Li42MjM3NGQ2MjEzZGU4YTA1ZDYxOTUyODZhODcwNmE2NjMxN2Q1YWJiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQwMyw2ICs0MDMsNyBAQCBmYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdW5zZXQuaHRtbAogIyBGb3Igbm93
LCBXZWIgQXVkaW8gQVBJIGlzIGRpc2FibGVkCiB3ZWJhdWRpby8KIHdlYmtpdC5vcmcvYi8xMDE3
MjkgaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCit3ZWJraXQub3JnL2IvMTAx
NzI5IGluc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8tbGVhay10ZXN0Lmh0bWwKIAogIyBb
UXRdIEVuYWJsZSBXZWJHTCBieSBkZWZhdWx0IGZvciBRdFdlYktpdAogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU5OTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZTAwYWYwOTA4ODAzMjg4OTYxMGEwYzdiYjA1MGUwZjhh
ZTMyODNlZC4uNzhhOTk2M2EzZjAyNDUwYmQ2MzZjNjljMWU3YTM1ODkyNWUzZmZmMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NDIsNiArMTU0Miw4
IEBAIGNzczMvc2VsZWN0b3JzMwogCiAjIEZvciBub3csIFdlYiBBdWRpbyBBUEkgaXMgZGlzYWJs
ZWQKIHdlYmF1ZGlvLworaW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby5odG1sCitpbnNw
ZWN0b3ItcHJvdG9jb2wvbm1pLXdlYmF1ZGlvLWxlYWstdGVzdC5odG1sCiAKICMgVGhlIHdpbiBw
b3J0IGhhcyBubyBzdXBwb3J0IGZvciA8dHJhY2s+CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzY2OApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTNjNGQzNTc0ODRiZTU3ZWQ4MGRjNWQ5MWQ5NWFhY2Qz
NTUwZDkwOS4uNDM3ODI5N2M5NzJmMTJjMzNhYjYxNWM2YzhhOTBiODhiNzI4N2FlZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMDc1
LDYgKzIwNzUsOSBAQCBjc3MzL3NlbGVjdG9yczMKIAogIyBGb3Igbm93LCBXZWIgQXVkaW8gQVBJ
IGlzIGRpc2FibGVkCiB3ZWJhdWRpby8KK2luc3BlY3Rvci1wcm90b2NvbC9ubWktd2ViYXVkaW8u
aHRtbAoraW5zcGVjdG9yLXByb3RvY29sL25taS13ZWJhdWRpby1sZWFrLXRlc3QuaHRtbAorCiAK
ICMgVGhlIHdpbiBwb3J0IGhhcyBubyBzdXBwb3J0IGZvciA8dHJhY2s+CiAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzY2OAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>