<?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>38995</bug_id>
          
          <creation_ts>2010-05-12 08:32:09 -0700</creation_ts>
          <short_desc>style element and link element for CSS stylesheet should emit load/error event when sheet loads/fails to load</short_desc>
          <delta_ts>2012-02-24 08:52:26 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78840</dependson>
          <blocked>76198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leon Clarke">leonclarke</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>android-webkit-unforking</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>eric</cc>
    
    <cc>gavinp</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jonnew</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>mathias</cc>
    
    <cc>menard</cc>
    
    <cc>ml</cc>
    
    <cc>niall.smart</cc>
    
    <cc>paulirish</cc>
    
    <cc>pnormand</cc>
    
    <cc>priyajeet.hora</cc>
    
    <cc>rik</cc>
    
    <cc>simon_kaegi</cc>
    
    <cc>spocke</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>224632</commentid>
    <comment_count>0</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-12 08:32:09 -0700</bug_when>
    <thetext>According to the HTML5 spec, link elements should support onload events. I&apos;m not aware of anyone in the real world who wants these, but I wanted them for rel=prefetch links, just so that prefetch links had some side-effect that could be tested in a layout test. I may as well get them working for css links at the same time. Since this is arguably separable from rel=prefetch, I&apos;m putting it in a separate bug.

Here&apos;s the prefetch bug https://bugs.webkit.org/show_bug.cgi?id=3652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224639</commentid>
    <comment_count>1</comment_count>
      <attachid>55851</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-12 08:36:16 -0700</bug_when>
    <thetext>Created attachment 55851
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224745</commentid>
    <comment_count>2</comment_count>
      <attachid>55851</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-12 11:22:29 -0700</bug_when>
    <thetext>Comment on attachment 55851
Proposed patch

The DOM test suite is something we imported from the W3C.

Is this new test from that source? If not, then the test should be written in the usual WebKit test idiom and put in the directory fast/dom/HTMLLinkElement instead of the directory dom/html/level2/html.

Does this feature work in other browsers? Do they pass this test? Is it from a particular specification?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225216</commentid>
    <comment_count>3</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-13 02:47:07 -0700</bug_when>
    <thetext>OK. I&apos;ll move the layout test.

This is taken from the HTML5 draft. I&apos;ve tested on Android and Safari so far; the feature works and the test passes. Since it&apos;s nowhere near anything platform dependent and it works on those 2 platforms, I see no reason to think it won&apos;t work on all other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225253</commentid>
    <comment_count>4</comment_count>
      <attachid>55967</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-13 06:18:15 -0700</bug_when>
    <thetext>Created attachment 55967
Re-done layout test in right place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226115</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-14 20:04:45 -0700</bug_when>
    <thetext>&gt; Does this feature work in other browsers? Do they pass this test?

I think the question was - does this work in IE, Firefox or Opera?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226117</commentid>
    <comment_count>6</comment_count>
      <attachid>55967</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-14 20:15:29 -0700</bug_when>
    <thetext>Comment on attachment 55967
Re-done layout test in right place

+void HTMLLinkElement::notifyFinished(CachedResource*)
+{
+    if (!m_timer.isActive())
+        m_timer.startOneShot(0);
+}

I doubt that a timer is needed here. HTML5 spec probably says to queue a task to dispatch an event, but that usually translates as &quot;dispatch the event immediately&quot; in browser code.

+    if (!m_loading) {
         c-&gt;setCSSStyleSheet(m_url, m_response.url(), m_decoder-&gt;encoding().name(), this);
+        c-&gt;notifyFinished(this);
+    }

I&apos;m not quite sure about the design here, but it seems that setCSSStyleSheet should go into notifyFinished() now. Please compare to what other CachedResource subclasses do.

r-, because I&apos;m fairly sure that adding a timer is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226722</commentid>
    <comment_count>7</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-17 03:47:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Does this feature work in other browsers? Do they pass this test?
&gt; 
&gt; I think the question was - does this work in IE, Firefox or Opera?

Sorry. I misunderstood.

It works in Opera but not in Firefox. I don&apos;t have access to a Windows machine right now to try IE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226771</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-17 08:32:40 -0700</bug_when>
    <thetext>Do you know if there is a reason why Firefox doesn&apos;t support this? Is there a bug at bugzilla.mozilla.org?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228304</commentid>
    <comment_count>9</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-20 04:03:00 -0700</bug_when>
    <thetext>I had a look and couldn&apos;t see any bugs in firefox. I rather suspect that not many people have found a use for this, so firefox haven&apos;t bothered. The reason I&apos;m implementing it on WebKit is a side-effect of something else, and I haven&apos;t seen any other bugs asking for this in WebKit.

In response to your review comments, not having a timer is a good idea; I was copying some inappropriate code that resulted in the timer. 

I kept changing my mind about whether it would be better to put the setCSSStlyeSheet call into notifyFinished. Obviously, it would to be done for the other subclasses of CachedResource that implement setCSSStyleSheet, in which case it would probably be best to introduce an intermediate class whose notifyFinished calls setCSSStyleSheet (since otherwise I&apos;m adding identical functions to 2 separate subclasses of the same class). Then presumably we should consider whether to do the same thing for setXSLStyleSheet and other functions in CachedResourceClient. At the end of all that, I would have added a couple of extra classes and refactored a load of code I wasn&apos;t intending to touch, and I&apos;m not certain it would have made anything any clearer. Therefore I&apos;m going to argue that it&apos;s best if this change keeps the calls to setCSSStyleSheet separate, and someone could consider the refactoring at a later date. It might also help if that someone had a deeper understanding of how all these classes are intended to fit together than I do currently.

So I&apos;ll upload another patch that gets rid of the timer. (and slightly tidies up the CachedCSSStyleSheet changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228305</commentid>
    <comment_count>10</comment_count>
      <attachid>56582</attachid>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-20 04:04:15 -0700</bug_when>
    <thetext>Created attachment 56582
Get rid of the timer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228416</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-20 09:36:26 -0700</bug_when>
    <thetext>See &lt;https://bugzilla.mozilla.org/show_bug.cgi?id=185236&gt;. Skimming over the comments, it seems that some of them may be interesting to us, as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228445</commentid>
    <comment_count>12</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-20 10:30:09 -0700</bug_when>
    <thetext>Yes, that is interesting. The comments about the need to wait until included subresources are loaded certainly seem to be valid, and thus my patch is not good enough.

I&apos;m also not sure what the correct thing to do is on the question of whether the event should come before or after the main document onload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229728</commentid>
    <comment_count>13</comment_count>
    <who name="Leon Clarke">leonclarke</who>
    <bug_when>2010-05-24 06:59:00 -0700</bug_when>
    <thetext>Given the issue with subresources, it&apos;s no longer the case that this issue can essentially be resolved with code that I wanted to submit anyway while fixing bug 3652. As a result, I&apos;ve removed the link between this and 3652. Having started this, I&apos;ll try and finish it but I might not get round to it immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237416</commentid>
    <comment_count>14</comment_count>
      <attachid>56582</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-12 19:05:22 -0700</bug_when>
    <thetext>Comment on attachment 56582
Get rid of the timer

Given the current state of this code, there is no need to add a new notifyFinished function. The code to dispatch the load event can go in HTMLLinkElement::setCSSStyleSheet.

review- because of the subresource issue mentioned in the bug discussion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423942</commentid>
    <comment_count>15</comment_count>
    <who name="Johan &quot;Spocke&quot; Sörlin">spocke</who>
    <bug_when>2011-06-20 14:19:25 -0700</bug_when>
    <thetext>Any chance that this will be added to the trunk in the near future since it&apos;s in the HTML5 spec and both IE and Opera supports it?

I&apos;ve seen a lot of hacks on the net for lazy loading stylesheets so it seems that it&apos;s something a lot of people want to do and I think this is a very important feature when it comes to web application development for example lazy loading a widget and doing custom layout using JS on the rendered contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477065</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Kaegi">simon_kaegi</who>
    <bug_when>2011-10-03 10:40:33 -0700</bug_when>
    <thetext>This is now fixed in Firefox &lt;https://bugzilla.mozilla.org/show_bug.cgi?id=185236&gt; 

Would be great to get a fix for WebKit too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534459</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-11 17:41:19 -0800</bug_when>
    <thetext>We might be able to piggie-back on the newer LinkLoader class to do this for us.  Nate wrote it for pre-fetch.

This bug it tickled by the IE Test Center samples:
http://samples.msdn.microsoft.com/ietestcenter/domevents/domevents_harness.htm?url=UIEvent.load.stylesheet.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558939</commentid>
    <comment_count>18</comment_count>
      <attachid>127527</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 22:55:18 -0800</bug_when>
    <thetext>Created attachment 127527
Patch and layout tests

I ran into the same issue as Gavin Peters, &lt;https://bugs.webkit.org/show_bug.cgi?id=51941#c45&gt;, with regards to the need for a one-shot timer to reliably dispatch load events. As Gavin remarked, such an approach is used in ImageLoader. I spent some time trying to debug this issue, but I was unable to diagnose the cause. If I have additional time tomorrow, I&apos;ll look to further debug this issue.

For completeness, error events seemed to be reliably dispatched regardless of whether they were dispatched from a one-shot timer. I chose to dispatch them using a one-shot timer (managed by EventSender) to be consistent with the approach used in LinkLoader.cpp. Subsequent patches will look to better integrate class LinkLoader with class LoadEventSender and a define a default constructor for class EventSender so that we don&apos;t have to explicitly specify an event type.

I&apos;m open to suggestions on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558945</commentid>
    <comment_count>19</comment_count>
      <attachid>127530</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 23:04:33 -0800</bug_when>
    <thetext>Created attachment 127530
Patch and layout tests

Remove extraneous whitespace, and change the declaration order of HTMLStyleElement::m_firedLoad and HTMLStyleElement::m_loadedSheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561140</commentid>
    <comment_count>20</comment_count>
      <attachid>127530</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 12:38:58 -0800</bug_when>
    <thetext>Comment on attachment 127530
Patch and layout tests

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

&gt; Source/WebCore/html/HTMLLinkElement.cpp:60
&gt; +typedef EventSender&lt;HTMLLinkElement&gt; LoadEventSender;
&gt; +static LoadEventSender&amp; loadEventSender()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(LoadEventSender, sharedLoadEventSender, (eventNames().loadEvent));
&gt; +    return sharedLoadEventSender;
&gt; +}

Woah, shared across all of WebKit.  Crazy.

&gt; Source/WebCore/html/HTMLLinkElement.h:66
&gt; +    void dispatchPendingEvent(EventSender&lt;HTMLLinkElement&gt;*);

Should we create a typedef for EventSender&lt;HTMLLinkElement&gt; like we did in the image case?

&gt; Source/WebCore/html/HTMLStyleElement.cpp:40
&gt; +typedef EventSender&lt;HTMLStyleElement&gt; LoadEventSender;

Ah, I see we do here.  It might be worth moving this to the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561141</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 12:39:26 -0800</bug_when>
    <thetext>This looks reasonable to me.  @japhet: Would you like to take a look as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561144</commentid>
    <comment_count>22</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-02-21 12:42:10 -0800</bug_when>
    <thetext>Any luck ditching the timer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561147</commentid>
    <comment_count>23</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-21 12:43:58 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Any luck ditching the timer?

I haven&apos;t had a chance to look into the timer issue. I&apos;ll take a look later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561152</commentid>
    <comment_count>24</comment_count>
      <attachid>127530</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-02-21 12:49:20 -0800</bug_when>
    <thetext>Comment on attachment 127530
Patch and layout tests

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

&gt; Source/WebCore/css/CSSStyleSheet.cpp:257
&gt; +    m_didLoadErrorOccur |= sheet-&gt;errorOccurred() || sheet-&gt;response().httpStatusCode() &gt; 400;

I think a &gt; 400 response should be a strict subset of errorOccurred() for style sheets (see shouldIgnoreHTTPStatusCodeErrors() in CachedResource and subclasses).

&gt; Source/WebCore/dom/Node.h:301
&gt;      virtual bool sheetLoaded() { return true; }
&gt; +    virtual void notifyLoadedSheetAndAllCriticalSubresources(bool /* error loading subresource */) { }
&gt;      virtual void startLoadingDynamicSheet() { ASSERT_NOT_REACHED(); }

It&apos;s a shame we have to declare these functions all the way down in Node :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561179</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-21 13:30:42 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 127530 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127530&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSheet.cpp:257
&gt; &gt; +    m_didLoadErrorOccur |= sheet-&gt;errorOccurred() || sheet-&gt;response().httpStatusCode() &gt; 400;
&gt; 
&gt; I think a &gt; 400 response should be a strict subset of errorOccurred() for style sheets (see shouldIgnoreHTTPStatusCodeErrors() in CachedResource and subclasses).

As discussed on IRC with Nate, it&apos;s sufficient to check CachedResource::errorOccurred() for style sheets by &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/loader/SubresourceLoader.cpp?rev=105226#L232&gt;, &lt;http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/CachedResource.h?rev=107672#L103&gt;, and by definition of CachedCSSStyleSheet (which extends CachedResource and doesn&apos;t override shouldIgnoreHTTPStatusCodeErrors()).

Therefore I&apos;ll change this line to read:

m_didLoadErrorOccur |= sheet-&gt;errorOccurred();

before landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562180</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-22 11:30:47 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Any luck ditching the timer?

Calling dispatchEvent() for a Load/Error event without the queue/timer approach does fire the Load/Error event. The issue is that we may still be constructing the DOM tree and DOM elements referenced (say, using document.getElementById()) within a &lt;link&gt;/&lt;style&gt;&apos;s onload/onerror handler may not be in the document at the time the event is fired. By using the queue/timer approach we can ensure (see remark (*)) that Load/Error events for non-programmatically inserted link/style elements are dispatched once the document has been built.

Additional remarks:

In the patch, we queue load/error events and dispatch these queued events in Document::implicitClose(). (See LoadEventSender in HTML{Link, Style}Element.cpp and the patch for bug #78840 for more details on the queue.) Notice the timer is in EventSender and is used to empty the queue. Disregarding programmatically inserted link/style elements (I look at this case in the next paragraph), the emptying of the queue in Document::implicitClose() ensures that pending Load/Error events are dispatched after the document has been built and hence a &lt;link&gt;/&lt;style&gt;&apos;s onload handler may reference an arbitrary DOM element.

When a link/style element is programmatically inserted into a document, the timer in EventSender ensures that any queued load/error is eventually dispatched.

The queue/timer approach seems reasonable. Notice this approach is used by ImageLoader. We may want to look to implement an approach similar to the one described in (*) for Load/BeforeLoad/Error events. I suggest we do this in a follow up patch.

(*) It&apos;s actually the use of a queue that ensures this property. That is, the timer isn&apos;t necessary. For programmatically inserted link/style elements we could dispatch the Load/Error event immediately. Otherwise, we queue Load/Error events until Document::implicitClose() is called to empty the queue. A side effect of this queue approach is that we ensure that Load/Error events for link/style elements are dispatched before the window Load event is dispatched as required by sections &quot;The link element&quot; and &quot;The style element&quot; in the HTML5 spec. (draft 05/25/2011).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562321</commentid>
    <comment_count>27</comment_count>
      <attachid>128275</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-22 13:24:17 -0800</bug_when>
    <thetext>Created attachment 128275
Patch and layout tests

Updated patch based on Adam Barth&apos;s and Nate Chapin&apos;s remarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562346</commentid>
    <comment_count>28</comment_count>
      <attachid>128275</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 13:44:53 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Attachment 128275 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11560603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562348</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-22 13:47:16 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 128275 [details])
&gt; Attachment 128275 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11560603

The patch doesn&apos;t build because it depends on the patch for #78840, which I haven&apos;t landed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562349</commentid>
    <comment_count>30</comment_count>
      <attachid>128275</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-22 13:50:33 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Attachment 128275 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11559603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562361</commentid>
    <comment_count>31</comment_count>
      <attachid>128275</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-22 13:58:45 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Attachment 128275 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11446027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562395</commentid>
    <comment_count>32</comment_count>
      <attachid>128275</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-02-22 14:30:58 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Attachment 128275 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11560617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562411</commentid>
    <comment_count>33</comment_count>
      <attachid>128275</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-22 14:50:24 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Attachment 128275 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11556631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563392</commentid>
    <comment_count>34</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-02-23 13:08:34 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (From update of attachment 128275 [details] [details])
&gt; &gt; Attachment 128275 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/11560603
&gt; 
&gt; The patch doesn&apos;t build because it depends on the patch for #78840, which I haven&apos;t landed yet.

LGTM, though I&apos;d prefer to wait for a second opinion before r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563424</commentid>
    <comment_count>35</comment_count>
      <attachid>128275</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-23 13:45:43 -0800</bug_when>
    <thetext>Comment on attachment 128275
Patch and layout tests

Looks good to me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564347</commentid>
    <comment_count>36</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-24 08:52:26 -0800</bug_when>
    <thetext>Committed r108809: &lt;http://trac.webkit.org/changeset/108809&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55851</attachid>
            <date>2010-05-12 08:36:16 -0700</date>
            <delta_ts>2010-05-13 06:18:15 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>onload.patch</filename>
            <type>text/plain</type>
            <size>8855</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTIzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUtMTIgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN1cHBvcnQgdGhlIG9ubG9hZCBldmVudCBvbiByZWw9Y3NzIGxpbmsgZWxlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTk1CisKKyAgICAg
ICAgVGVzdDogZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAuaHRtbAorCisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6dGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGF0YSk6CisKIDIwMTAtMDUtMTAgIFJvZHJpZ28gQmVs
ZW0gIDxyb2RyaWdvLmJlbGVtQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBDaHJpc3RpYW5zZW4gLCBTaW1vbiBIYXVzbWFubiBhbmQgR3VzdGF2byBOb3Jvbmhh
LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDU5MjIxKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2
LDcgQEAgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUQogICAgICwgbV9p
c0ljb24oZmFsc2UpCiAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAgICAgLCBtX2NyZWF0
ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCisgICAgLCBtX3RpbWVyKHRoaXMsICZIVE1MTGlu
a0VsZW1lbnQ6OnRpbWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGlua1RhZykp
OwogfQpAQCAtMTMwLDYgKzEzMSw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnUKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdGl0
bGVBdHRyICYmIG1fc2hlZXQpCiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShhdHRyLT52
YWx1ZSgpKTsKQEAgLTMyMyw2ICszMjYsMTcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OmlzTG9h
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQgKj4obV9z
aGVldC5nZXQoKSktPmlzTG9hZGluZygpOwogfQogCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGlmICghbV90aW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OnRpbWVyRmlyZWQoVGltZXI8SFRNTExpbmtFbGVtZW50PiopCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworfQorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAg
IGlmICghaXNMb2FkaW5nKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNBbHRlcm5hdGUoKSkgewpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gNTkyMjEpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCk7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgYm9vbCBpc0xv
YWRpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsKIApAQCAtODcs
NyArODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNhYmxlZFN0YXRlID09IDI7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSAxOyB9CiAgICAgYm9vbCBpc0ljb24oKSBj
b25zdCB7IHJldHVybiBtX2lzSWNvbjsgfQotICAgIAorCiAgICAgaW50IGRpc2FibGVkU3RhdGUo
KSB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGU7IH0KICAgICB2b2lkIHNldERpc2FibGVkU3RhdGUo
Ym9vbCBfZGlzYWJsZWQpOwogCkBAIC0xMDAsNiArMTAyLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAogcHJvdGVjdGVkOgorICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+Kik7CisKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiBtX3NoZWV0OwogICAgIEtVUkwgbV91cmw7CkBAIC0xMTIsNiArMTE2LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0ljb247CiAgICAgYm9vbCBtX2lzRE5TUHJlZmV0
Y2g7CiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsKKyAgICBUaW1lcjxIVE1MTGlua0VsZW1l
bnQ+IG1fdGltZXI7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gNTkyMjEpCisrKyBXZWJDb3JlL2xvYWRlci9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsMTAgQEAg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6fkNhY2hlZENTU1N0eWxlU2hlZQogCiB2b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYykKIHsKLSAg
ICBpZiAoIW1fbG9hZGluZykKKyAgICBpZiAoIW1fbG9hZGluZykgewogICAgICAgICBjLT5zZXRD
U1NTdHlsZVNoZWV0KG1fdXJsLCBtX3Jlc3BvbnNlLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5n
KCkubmFtZSgpLCB0aGlzKTsKKyAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAg
fQogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmFsbENsaWVudHNSZW1vdmVkKCkKQEAg
LTEwNCw2ICsxMDYsMTAgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkYXRhKFBhc3NSZWZQ
dAogICAgIGNoZWNrTm90aWZ5KCk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBp
dCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFw
IHRvIHJlZ2VuZXJhdGUuCiAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gU3RyaW5nKCk7CisKKyAg
ICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CisgICAgd2hpbGUgKENh
Y2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCisgICAgICAgIGMtPm5vdGlmeUZpbmlz
aGVkKHRoaXMpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU5MjM1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMTIgIExlb24gQ2xhcmtlICA8bGVv
bmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBvbmxvYWQgZXZlbnRzIG9uIHJlbD1jc3MgbGluayBl
ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODk5NQorCisgICAgICAgICogZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1M
TGlua0VsZW1lbnQxMC5jc3M6IEFkZGVkLgorICAgICAgICAoZGl2KToKKyAgICAgICAgKiBkb20v
aHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlua0VsZW1lbnQxMC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlua0VsZW1lbnQxMC5qczogQWRkZWQuCisgICAg
ICAgIChnZXRUYXJnZXRVUkkpOgorICAgICAgICAoZmluaXNoVGVzdCk6CisgICAgICAgIChsb2Fk
Q29tcGxldGUpOgorICAgICAgICAoY3NzQ29tcGxldGUpOgorICAgICAgICAoc3RhcnRUZXN0MTAp
OgorCiAyMDEwLTA1LTEwICB5YWVsIGFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMi9odG1sL0hUTUxMaW5rRWxlbWVudDEwLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlua0VsZW1lbnQxMC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIv
aHRtbC9IVE1MTGlua0VsZW1lbnQxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMiBAQAorVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDIvaHRtbC9IVE1MTGlua0VsZW1lbnQxMAorU3RhdHVzOglTdWNjZXNzCkluZGV4OiBMYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlua0VsZW1lbnQxMC5jc3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAu
Y3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRN
TExpbmtFbGVtZW50MTAuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitkaXYgeyBmb250
LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6IHJlZDsgfQpJbmRl
eDogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlu
a0VsZW1lbnQxMC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp
dGlvbmFsLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1U
eXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IENIQVJTRVQ9dXRmLTgiPgorPFRJVExFPk5JU1QgRE9N
IEhUTUwgVGVzdCAtIExJTks8L1RJVExFPgorPHNjcmlwdCBjaGFyc2V0PSdVVEYtOCcgdHlwZT0n
dGV4dC9qYXZhc2NyaXB0JyBzcmM9J3NlbGZodG1sLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgY2hh
cnNldD0nVVRGLTgnIHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdIVE1MTGlua0VsZW1lbnQx
MC5qcyc+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPnN0YXJ0VGVzdDEw
KCk7PC9zY3JpcHQ+PC9IRUFEPgorPExJTksgQ0hBUlNFVD0iTGF0aW4tMSIgSFJFRj0iSFRNTExp
bmtFbGVtZW50MTAuY3NzIiBIUkVGTEFORz0iZW4iIE1FRElBPSJzY3JlZW4iIFJFTD0ic3R5bGVz
aGVldCIgVFlQRT0idGV4dC9jc3MiIG9ubG9hZD0iY3NzQ29tcGxldGUoKSI+Cis8Qk9EWSBvbmxv
YWQ9ImxvYWRDb21wbGV0ZSgpIj4KKzxQPgorPEJSPgorPC9QPgorPC9CT0RZPgorPC9IVE1MPgor
CkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MTGlua0VsZW1lbnQx
MC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1M
TGlua0VsZW1lbnQxMC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMi9odG1sL0hUTUxMaW5rRWxlbWVudDEwLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUx
IEBACisKKworICAgLyoqCisgICAgKiAgR2V0cyBVUkkgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZXN0
LgorICAgICogIEByZXR1cm4gdXJpIGlkZW50aWZpZXIgb2YgdGVzdAorICAgICovCitmdW5jdGlv
biBnZXRUYXJnZXRVUkkoKSB7CisgICAgICByZXR1cm4gImh0dHA6Ly93d3cudzMub3JnLzIwMDEv
RE9NLVRlc3QtU3VpdGUvbGV2ZWwyL2h0bWwvSFRNTExpbmtFbGVtZW50MTAiOworICAgfQorCit2
YXIgZG9jc0xvYWRlZCA9IDA7Cit2YXIgbWFpbkxvYWRlZCA9IGZhbHNlOwordmFyIGNzc0xvYWRl
ZCA9IGZhbHNlOworCitmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgIGlmIChtYWluTG9hZGVk
ICYmIGNzc0xvYWRlZCkgeworICAgICAgICBzZXRSZXN1bHQobnVsbCwgbnVsbCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKCFjc3NMb2FkZWQpIHsKKyAgICAgICAgICAgIHNldFJlc3VsdCgi
ZmFpbCIsICJObyBjc3Mgb25sb2FkIGZpcmVkIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBzZXRSZXN1bHQoImZhaWwiLCAiQ3NzIGZpcmVkLCBidXQgbWF5YmUgdGhlIGRvY3VtZW50
IG9ubG9hZCBkaWRuJ3QiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsKKyAgICBtYWluTG9h
ZGVkID0gdHJ1ZTsKKyAgICBpZiAoKytkb2NzTG9hZGVkID09IDIpIHsKKyAgICAgICAgZmluaXNo
VGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gY3NzQ29tcGxldGUoKSB7CisgICAgY3NzTG9h
ZGVkID0gdHJ1ZTsKKyAgICBpZiAoKytkb2NzTG9hZGVkID09IDIpIHsKKyAgICAgICAgZmluaXNo
VGVzdCgpOworICAgIH0KK30KKworCisKK2Z1bmN0aW9uIHN0YXJ0VGVzdDEwKCkgeworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55967</attachid>
            <date>2010-05-13 06:18:15 -0700</date>
            <delta_ts>2010-05-20 04:04:15 -0700</delta_ts>
            <desc>Re-done layout test in right place</desc>
            <filename>onload1.patch</filename>
            <type>text/plain</type>
            <size>8020</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTM1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDUtMTMgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN1cHBvcnQgdGhlIG9ubG9hZCBldmVudCBvbiByZWw9Y3NzIGxpbmsgZWxlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTk1CisKKyAgICAg
ICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N0eWxlc2hlZXQtb25sb2FkLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRhdGEpOgorCiAyMDEwLTA1LTEzICBZb3NoaWtp
IEhheWFzaGkgIDx5aGF5YXNoaUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDU5MzU5
KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDcgQEAgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUQog
ICAgICwgbV9pc0ljb24oZmFsc2UpCiAgICAgLCBtX2lzRE5TUHJlZmV0Y2goZmFsc2UpCiAgICAg
LCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCisgICAgLCBtX3RpbWVyKHRoaXMs
ICZIVE1MTGlua0VsZW1lbnQ6OnRpbWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUo
bGlua1RhZykpOwogfQpAQCAtMTMwLDYgKzEzMSw4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxs
KCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAg
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gdGl0bGVBdHRyICYmIG1fc2hlZXQpCiAgICAgICAgICAgICBtX3NoZWV0LT5zZXRUaXRs
ZShhdHRyLT52YWx1ZSgpKTsKQEAgLTMyMyw2ICszMjYsMTcgQEAgYm9vbCBIVE1MTGlua0VsZW1l
bnQ6OmlzTG9hZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1N0eWxlU2hl
ZXQgKj4obV9zaGVldC5nZXQoKSktPmlzTG9hZGluZygpOwogfQogCit2b2lkIEhUTUxMaW5rRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIGlmICghbV90aW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnRpbWVyRmlyZWQoVGltZXI8SFRNTExpbmtFbGVtZW50PiopCit7
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworfQorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQo
KQogewogICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNBbHRlcm5h
dGUoKSkgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAkocmV2aXNpb24gNTkzNTkpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCk7
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsK
IApAQCAtODcsNyArODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rpc2FibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IDI7IH0KICAgICBib29sIGlzRW5hYmxlZFZpYVNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSAxOyB9CiAgICAgYm9vbCBp
c0ljb24oKSBjb25zdCB7IHJldHVybiBtX2lzSWNvbjsgfQotICAgIAorCiAgICAgaW50IGRpc2Fi
bGVkU3RhdGUoKSB7IHJldHVybiBtX2Rpc2FibGVkU3RhdGU7IH0KICAgICB2b2lkIHNldERpc2Fi
bGVkU3RhdGUoYm9vbCBfZGlzYWJsZWQpOwogCkBAIC0xMDAsNiArMTAyLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAogcHJvdGVjdGVkOgor
ICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+Kik7CisKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAg
IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OwogICAgIEtVUkwgbV91cmw7CkBAIC0xMTIs
NiArMTE2LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc0ljb247CiAgICAgYm9vbCBtX2lz
RE5TUHJlZmV0Y2g7CiAgICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsKKyAgICBUaW1lcjxIVE1M
TGlua0VsZW1lbnQ+IG1fdGltZXI7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gNTkzNTkpCisrKyBXZWJDb3Jl
L2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCAr
NTIsMTAgQEAgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6fkNhY2hlZENTU1N0eWxlU2hlZQogCiB2b2lk
IENhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCAq
YykKIHsKLSAgICBpZiAoIW1fbG9hZGluZykKKyAgICBpZiAoIW1fbG9hZGluZykgewogICAgICAg
ICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1fdXJsLCBtX3Jlc3BvbnNlLnVybCgpLCBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpLCB0aGlzKTsKKyAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhp
cyk7CisgICAgfQogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmFsbENsaWVudHNSZW1v
dmVkKCkKQEAgLTEwNCw2ICsxMDYsMTAgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpkYXRh
KFBhc3NSZWZQdAogICAgIGNoZWNrTm90aWZ5KCk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQg
dGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5k
IGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCiAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0gU3RyaW5n
KCk7CisKKyAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CisgICAg
d2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCisgICAgICAgIGMtPm5v
dGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNr
Tm90aWZ5KCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5MzU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMTMgIExlb24gQ2xh
cmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBvbmxvYWQgZXZlbnRzIG9uIHJlbD1z
dHlsZXNoZWV0IGxpbmsgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4OTk1CisKKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9zdHlsZXNoZWV0LW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LW9ubG9hZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC5jc3M6IEFkZGVkLgor
ICAgICAgICAoZGl2KToKKwogMjAxMC0wNS0xMyAgWW9zaGlraSBIYXlhc2hpICA8eWhheWFzaGlA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LW9ubG9hZC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3N0eWxlc2hlZXQtb25sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LW9ubG9hZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9h
ZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVudHMgd2l0aCByZWw9c3R5bGVz
aGVldC4KKworSWYgaXQgd29ya3MgeW91IHNob3VsZCBzZWUgYSBtZXNzYWdlIGJlbG93IHNheWlu
ZyB0aGUgdGVzdCBoYXMgcGFzc2VkLgorCitURVNUIFBBU1NFRC4gVGhlIHN0eWxlc2hlZXQgbGlu
ayBvbmxvYWQgaGFuZGxlciBoYXMgZmlyZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3N0eWxlc2hlZXQtb25sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N0eWxlc2hlZXQtb25sb2FkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5
bGVzaGVldC1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAg
ICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Up
KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gdGVz
dCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGRvbmUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxv
ZygiVEVTVCBQQVNTRUQuIFRoZSBzdHlsZXNoZWV0IGxpbmsgb25sb2FkIGhhbmRsZXIgaGFzIGZp
cmVkIik7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCTwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhh
dCBvbmxvYWQgZXZlbnRzIGNhbiBiZSBhdHRhY2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVs
PXN0eWxlc2hlZXQuPC9wPgorICAgICAgICA8cD5JZiBpdCB3b3JrcyB5b3Ugc2hvdWxkIHNlZSBh
IG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRoZSB0ZXN0IGhhcyBwYXNzZWQuPC9wPgorICAgICAgICA8
bGluayBocmVmPSJzdHlsZXNoZWV0LmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz
cyIgb25sb2FkPSJkb25lKCkiID4KKyAgICAgICAgPGhyPgorICAgICAgICA8cD48b2wgaWQ9ImNv
bnNvbGUiPjwvb2w+PC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LmNzcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC5jc3MJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVl
dC5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2RpdiB7IGZvbnQtZmFtaWx5OiBBcmlh
bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjogcmVkOyB9Cg==
</data>
<flag name="review"
          id="40289"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="40290"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56582</attachid>
            <date>2010-05-20 04:04:15 -0700</date>
            <delta_ts>2012-02-16 22:55:18 -0800</delta_ts>
            <desc>Get rid of the timer</desc>
            <filename>onload2.patch</filename>
            <type>text/plain</type>
            <size>6913</size>
            <attacher name="Leon Clarke">leonclarke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTc2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMTkgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN1cHBvcnQgdGhlIG9ubG9hZCBldmVudCBvbiByZWw9Y3NzIGxpbmsgZWxlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTk1CisKKworICAg
ICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC1vbmxvYWQuaHRt
bAorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5oOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmRpZEFkZENsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisK
IDIwMTAtMDUtMTkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAkocmV2aXNpb24gNTk3NjIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw4IEBAIHZvaWQgSFRNTExpbmtFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+
aXNOdWxsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRy
KQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVs
b2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoYXR0ci0+
bmFtZSgpID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQogICAgICAgICAgICAgbV9zaGVldC0+c2V0
VGl0bGUoYXR0ci0+dmFsdWUoKSk7CkBAIC0zMTksNiArMzIxLDExIEBAIGJvb2wgSFRNTExpbmtF
bGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHls
ZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRpbmcoKTsKIH0KIAordm9pZCBIVE1MTGlu
a0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKK3sKKyAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNl
KSk7Cit9CisKIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiB7CiAgICAgaWYg
KCFpc0xvYWRpbmcoKSAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVybmF0ZSgpKSB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5oCShyZXZpc2lvbiA1OTc2MikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNl
dENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwog
CkBAIC05Niw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGlzYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2Rpc2FibGVkU3RhdGUgPT0gRGlzYWJsZWQ7IH0KICAgICBib29sIGlzRW5hYmxl
ZFZpYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBFbmFibGVkVmlh
U2NyaXB0OyB9CiAgICAgYm9vbCBpc0ljb24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0
ZS5tX2lzSWNvbjsgfQotICAgIAorCiAgICAgdm9pZCBzZXREaXNhYmxlZFN0YXRlKGJvb2wgX2Rp
c2FibGVkKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lv
biA1OTc2MikKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw4ICs1MiwxMCBAQCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojp+Q2FjaGVk
Q1NTU3R5bGVTaGVlCiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50ICpjKQogewotICAgIGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYg
KCFpc0xvYWRpbmcoKSkgewogICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1fdXJsLCBtX3Jl
c3BvbnNlLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCB0aGlzKTsKKyAgICAg
ICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgfQogfQogCiB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmFsbENsaWVudHNSZW1vdmVkKCkKQEAgLTExMiw4ICsxMTQsMTAgQEAgdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpjaGVja05vdGlmeSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKLSAgICB3aGlsZSAoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3Lm5leHQoKSkKKyAgICB3aGlsZSAoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgKmMgPSB3Lm5leHQoKSkgewogICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1f
dXJsLCBtX3Jlc3BvbnNlLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCB0aGlz
KTsKKyAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQodGhpcyk7CisgICAgfQogfQogCiB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OmVycm9yKCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5NzYyKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTAtMDUtMTkgIExlb24gQ2xhcmtlICA8bGVvbmNsYXJrZUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBvbmxv
YWQgZXZlbnRzIG9uIHJlbD1zdHlsZXNoZWV0IGxpbmsgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4OTk1CisKKworICAgICAgICAqIGZh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LW9ubG9hZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9zdHlsZXNoZWV0LW9ubG9h
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVz
aGVldC5jc3M6IEFkZGVkLgorICAgICAgICAoZGl2KToKKwogMjAxMC0wNS0xOSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N0eWxlc2hlZXQtb25s
b2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvc3R5bGVzaGVldC1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3N0eWxlc2hlZXQtb25sb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRo
YXQgb25sb2FkIGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGluayBlbGVtZW50cyB3aXRoIHJl
bD1zdHlsZXNoZWV0LgorCitJZiBpdCB3b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVs
b3cgc2F5aW5nIHRoZSB0ZXN0IGhhcyBwYXNzZWQuCisKK1RFU1QgUEFTU0VELiBUaGUgc3R5bGVz
aGVldCBsaW5rIG9ubG9hZCBoYW5kbGVyIGhhcyBmaXJlZAorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC1vbmxvYWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC1vbmxv
YWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9zdHlsZXNoZWV0LW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBA
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorICAgICAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSkpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5j
dGlvbiBkb25lKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2coIlRFU1QgUEFT
U0VELiBUaGUgc3R5bGVzaGVldCBsaW5rIG9ubG9hZCBoYW5kbGVyIGhhcyBmaXJlZCIpOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKwk8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHk+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRzIGNhbiBiZSBh
dHRhY2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXN0eWxlc2hlZXQuPC9wPgorICAgICAg
ICA8cD5JZiBpdCB3b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRo
ZSB0ZXN0IGhhcyBwYXNzZWQuPC9wPgorICAgICAgICA8bGluayBocmVmPSJzdHlsZXNoZWV0LmNz
cyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgb25sb2FkPSJkb25lKCkiID4KKyAg
ICAgICAgPGhyPgorICAgICAgICA8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9zdHlsZXNoZWV0LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvc3R5bGVzaGVldC5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvc3R5bGVzaGVldC5jc3MJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK2RpdiB7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm
OyBjb2xvcjogcmVkOyB9Cg==
</data>
<flag name="review"
          id="41037"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="41038"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127527</attachid>
            <date>2012-02-16 22:55:18 -0800</date>
            <delta_ts>2012-02-16 23:04:33 -0800</delta_ts>
            <desc>Patch and layout tests</desc>
            <filename>Bug38995_2.patch</filename>
            <type>text/plain</type>
            <size>55748</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDEyLTAyLTE2ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBsaW5rIGVsZW1lbnQgZm9yIENT
UyBzdHlsZXNoZWV0IHNob3VsZCBlbWl0IGxvYWQgZXZlbnQgd2hlbiBzaGVldCBsb2FkcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQt
YW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWlt
cG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5r
LW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNoZWV0LXdpdGgtaW1wb3J0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5
LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2Fk
LWhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9w
cm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRk
LXN0eWxlLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlz
dGVudC1pbXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVu
dC9zdHlsZS1vbmVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxTdHlsZUVs
ZW1lbnQvc3R5bGUtb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLmh0bWwKKworICAgICAg
ICBJbXBsZW1lbnRzIHN1cHBvcnQgZm9yIGZpcmluZyBMb2FkIGFuZCBFcnJvciBldmVudHMgYXQg
SFRNTCBMaW5rIGFuZCBIVE1MIFN0eWxlIGVsZW1lbnRzIGFzIHBlcgorICAgICAgICB0aGUgSFRN
TDUgc3BlYy4gKGRyYWZ0IDA1LzI1LzIwMTEpIHNlY3Rpb24gIlRoZSBsaW5rIGVsZW1lbnQiIDxo
dHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50
PgorICAgICAgICBhbmQgIlRoZSBzdHlsZSBlbGVtZW50IiA8aHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDUvc2VtYW50aWNzLmh0bWwjdGhlLXN0eWxlLWVsZW1lbnQ+LCByZXNwZWN0aXZlbHkuCisK
KyAgICAgICAgKiBjc3MvQ1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJ
bXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KTogTW9kaWZpZWQgdG8gY2FsbCBDU1NTdHlsZVNo
ZWV0Ojpub3RpZnlMb2FkZWRTaGVldCgpCisgICAgICAgIGFmdGVyIHRoZSBzdHlsZSBzaGVldCBh
c3NvY2lhdGVkIHdpdGggdGhlIEBpbXBvcnQgcnVsZSBsb2FkZWQuCisgICAgICAgICogY3NzL0NT
U1N0eWxlU2hlZXQuY3BwOiBBZGRlZCBpbnN0YW5jZSB2YXJpYWJsZSBtX2RpZExvYWRFcnJvck9j
Y3VyIHRvIHRyYWNrIHdoZXRoZXIgYSBuZXR3b3JrIGVycm9yCisgICAgICAgIG9jY3VycmVkIHdo
aWxlIGxvYWRpbmcgYW55IEBpbXBvcnQgc3R5bGUgc2hlZXRzLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6Om5vdGlmeUxvYWRlZFNoZWV0KTogQWRkZWQ7IHVwZGF0ZSBtX2Rp
ZExvYWRFcnJvck9jY3VyIHRvIHJlZmxlY3QgaWYgYSBuZXR3b3JrCisgICAgICAgIGVycm9yIG9j
Y3VycmVkIHdoaWxlIGxvYWRpbmcgYSBzdHlsZSBzaGVldCBhc3NvY2lhdGVkIHdpdGggYW4gQGlt
cG9ydCBydWxlLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IENhbGwgSFRN
THtMaW5rRWxlbWVudCwgU3R5bGVFbGVtZW50fTo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygp
IHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGFsbCBwZW5kaW5nIExvYWQgZXZlbnRzIGZvciBsaW5r
IGFuZCBzdHlsZSBlbGVtZW50cyBhcmUgZGlzcGF0Y2hlZCBiZWZvcmUgd2UgZmlyZSB0aGUgTG9h
ZAorICAgICAgICBldmVudCBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgKiBkb20vTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1
YnJlc291cmNlcyk6IEFkZGVkOyBhcyBzdGF0ZWQgaW4gaXRzIG5hbWUsIHRoaXMgbWV0aG9kIGlz
CisgICAgICAgIGNhbGxlZCBvbmNlIGEgc3R5bGUgc2hlZXQgYW5kIGFsbCBpdHMgY3JpdGljYWwg
c3VicmVzb3VyY2VzIChAaW1wb3J0cykgaGF2ZSBsb2FkZWQuCisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjps
b2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1M
TGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp+SFRNTExp
bmtFbGVtZW50KTogTW9kaWZpZWQgdG8gY2FuY2VsIGFsbCBwZW5kaW5nIExvYWQgZXZlbnRzIG9u
IGRlc3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6IFJlZ2lzdGVyIGV2ZW50IGxpc3RlbmVycyBmb3IgTG9hZCBhbmQgRXJyb3IgZXZl
bnRzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZQorICAgICAgICBidWlsdCB3aXRoIGxpbmsgcHJl
ZmV0Y2ggc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NT
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMpOiBBZGRlZDsgY2FsbGVkIGZyb20gRG9jdW1lbnQ6OmltcGxpY2l0
Q2xvc2UoKSB0bworICAgICAgICBlbnN1cmUgdGhhdCBhbGwgcGVuZGluZyBMb2FkIGV2ZW50cyBm
b3IgbGluayBlbGVtZW50cyBoYXZlIGJlZW4gZGlzcGF0Y2hlZCBiZWZvcmUgd2UgZmlyZSB0aGUg
TG9hZCBldmVudAorICAgICAgICBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQpOiBBZGRlZDsgY2FsbGVkIGJ5IEV2
ZW50U2VuZGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpub3RpZnlMb2Fk
ZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKTogQWRkZWQuCisgICAgICAgICogaHRt
bC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTExp
bmtFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCk6IE1vZGlmaWVk
IHRvIGNhbmNlbCBhbGwgcGVuZGluZyBMb2FkIGV2ZW50cyBvbiBkZXN0cnVjdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogUmVnaXN0ZXIg
ZXZlbnQgbGlzdGVuZXJzIGZvciBMb2FkIGFuZCBFcnJvciBldmVudHMuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKTogQWRkZWQ7
IGNhbGxlZCBmcm9tIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkgdG8KKyAgICAgICAgZW5zdXJl
IHRoYXQgYWxsIHBlbmRpbmcgTG9hZCBldmVudHMgZm9yIGxpbmsgZWxlbWVudHMgaGF2ZSBiZWVu
IGRpc3BhdGNoZWQgYmVmb3JlIHdlIGZpcmUgdGhlIExvYWQgZXZlbnQKKyAgICAgICAgZm9yIHRo
ZSB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBl
bmRpbmdFdmVudCk6IEFkZGVkOyBjYWxsZWQgYnkgRXZlbnRTZW5kZXIuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3Vi
cmVzb3VyY2VzKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxTdHlsZUVsZW1lbnQpOgorCiAyMDEyLTAy
LTE2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
QW5vdGhlciBmaXggZm9yIHZpZXdwb3J0IHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1wb3J0UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAxMDgwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw4ICsxMDMsMTAgQEAgdm9pZCBD
U1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbgogCiAgICAgbV9sb2FkaW5nID0gZmFs
c2U7CiAKLSAgICBpZiAocGFyZW50KQorICAgIGlmIChwYXJlbnQpIHsKKyAgICAgICAgcGFyZW50
LT5ub3RpZnlMb2FkZWRTaGVldChzaGVldCk7CiAgICAgICAgIHBhcmVudC0+Y2hlY2tMb2FkZWQo
KTsKKyAgICB9CiB9CiAKIGJvb2wgQ1NTSW1wb3J0UnVsZTo6aXNMb2FkaW5nKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDEwODAzMykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1J1bGVM
aXN0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNjAsNiArNjEsNyBAQCBDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUqIHBhcmVuCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoZmFs
c2UpCiAgICAgLCBtX2lzVXNlclN0eWxlU2hlZXQoZmFsc2UpCiAgICAgLCBtX2hhc1N5bnRhY3Rp
Y2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQorICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxz
ZSkKIHsKICAgICBBU1NFUlQoaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChwYXJlbnRO
b2RlKSk7CiB9CkBAIC03MCw2ICs3Miw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Q1NTSW1wb3J0UnUKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKICAgICAsIG1fc3RyaWN0
UGFyc2luZyghb3duZXJSdWxlIHx8IG93bmVyUnVsZS0+dXNlU3RyaWN0UGFyc2luZygpKQogICAg
ICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKKyAgICAsIG1fZGlkTG9h
ZEVycm9yT2NjdXIoZmFsc2UpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBv
d25lclJ1bGUgPyBvd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CiAgICAgbV9pc1Vz
ZXJTdHlsZVNoZWV0ID0gcGFyZW50U2hlZXQgPyBwYXJlbnRTaGVldC0+aXNVc2VyU3R5bGVTaGVl
dCgpIDogZmFsc2U7CkBAIC0yMzcsNyArMjQwLDIxIEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tMb2FkZWQoKQogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwcm90ZWN0b3IodGhpcyk7CiAg
ICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpCiAg
ICAgICAgIHN0eWxlU2hlZXQtPmNoZWNrTG9hZGVkKCk7Ci0gICAgbV9sb2FkQ29tcGxldGVkID0g
b3duZXJOb2RlKCkgPyBvd25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CisKKyAgICBS
ZWZQdHI8Tm9kZT4gb3duZXIgPSBvd25lck5vZGUoKTsKKyAgICBpZiAoIW93bmVyKQorICAgICAg
ICBtX2xvYWRDb21wbGV0ZWQgPSB0cnVlOworICAgIGVsc2UgeworICAgICAgICBtX2xvYWRDb21w
bGV0ZWQgPSBvd25lci0+c2hlZXRMb2FkZWQoKTsKKyAgICAgICAgaWYgKG1fbG9hZENvbXBsZXRl
ZCkKKyAgICAgICAgICAgIG93bmVyLT5ub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3Vi
cmVzb3VyY2VzKG1fZGlkTG9hZEVycm9yT2NjdXIpOworICAgIH0KK30KKwordm9pZCBDU1NTdHls
ZVNoZWV0Ojpub3RpZnlMb2FkZWRTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVl
dCkKK3sKKyAgICBBU1NFUlQoc2hlZXQpOworICAgIG1fZGlkTG9hZEVycm9yT2NjdXIgfD0gc2hl
ZXQtPmVycm9yT2NjdXJyZWQoKSB8fCBzaGVldC0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID4gNDAwOwogfQogCiB2b2lkIENTU1N0eWxlU2hlZXQ6OnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVl
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDEwODAzMykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENTU05hbWVzcGFjZTsK
IGNsYXNzIENTU1BhcnNlcjsKIGNsYXNzIENTU1J1bGU7CitjbGFzcyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBEb2N1bWVudDsKIApAQCAt
MTE0LDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLnNpemUoKTsgfQogICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIHsgcmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkgPyBtX2NoaWxkcmVuLmF0KGluZGV4KS5nZXQo
KSA6IDA7IH0KIAorICAgIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5
bGVTaGVldCopOworCiBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoTm9kZSogb3duZXJOb2Rl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KTsKICAgICBDU1NTdHlsZVNoZWV0KENTU0ltcG9ydFJ1bGUqIG93bmVy
UnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCk7CkBAIC0xMjgsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3RyaWN0UGFyc2luZyA6IDE7CiAgICAgYm9vbCBtX2lzVXNlclN0eWxlU2hlZXQgOiAx
OwogICAgIGJvb2wgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIgOiAxOworICAgIGJv
b2wgbV9kaWRMb2FkRXJyb3JPY2N1ciA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMDgwMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjY5LDYgKzIyNjksOSBAQCB2
b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQ
ZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwogICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRp
bmdMb2FkRXZlbnRzKCk7CiAKKyAgICBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKTsKKyAgICBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnRzKCk7CisKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFRvIGFsaWduIHRoZSBIVE1MIGxvYWQg
ZXZlbnQgYW5kIHRoZSBTVkdMb2FkIGV2ZW50IGZvciB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1l
bnQsIGZpcmUgaXQgZnJvbQogICAgIC8vIGhlcmUsIGluc3RlYWQgb2YgZG9pbmcgaXQgZnJvbSBT
VkdFbGVtZW50OjpmaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiAoaWYgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD0iZmFsc2UiLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAxMDgwMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDcg
QEAgcHVibGljOgogCiAgICAgLy8gRm9yIDxsaW5rPiBhbmQgPHN0eWxlPiBlbGVtZW50cy4KICAg
ICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCAv
KiBlcnJvciBsb2FkaW5nIHN1YnJlc291cmNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
Ym9vbCBhdHRyaWJ1dGVTdHlsZURpcnR5KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhBdHRyaWJ1
dGVTdHlsZURpcnR5RmxhZyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKQEAgLTUxLDYgKzUyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAordHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0Vs
ZW1lbnQ+IExvYWRFdmVudFNlbmRlcjsKK3N0YXRpYyBMb2FkRXZlbnRTZW5kZXImIGxvYWRFdmVu
dFNlbmRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMb2FkRXZlbnRTZW5kZXIsIHNo
YXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKKyAgICByZXR1
cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOworfQorCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpI
VE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCkBAIC01OSw2ICs2Nyw4IEBAIGlu
bGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCgKICAgICAsIG1fbG9hZGluZyhm
YWxzZSkKICAgICAsIG1fY3JlYXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1f
aXNJblNoYWRvd1RyZWUoZmFsc2UpCisgICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAsIG1f
bG9hZGVkU2hlZXQoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTaGVldFR5cGUoTm9uZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShsaW5rVGFnKSk7CkBAIC04MSw2ICs5MSw4IEBAIEhUTUxMaW5r
RWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKKwor
ICAgIGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShib29sIGRpc2FibGVkKQpAQCAtMTQxLDEyICsx
NTMsMTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dAogICAgICAg
ICBzZXREaXNhYmxlZFN0YXRlKCFhdHRyLT5pc051bGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0jaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZXJy
b3JBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSNl
bmRpZgogICAgIGVsc2UgewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0ciAm
JiBtX3NoZWV0KQogICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7
CkBAIC0zMzAsNiArMzQwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hl
ZXQoYwogICAgIG1fc2hlZXQtPnNldE1lZGlhKG1lZGlhLmdldCgpKTsKIAogICAgIG1fbG9hZGlu
ZyA9IGZhbHNlOworICAgIG1fc2hlZXQtPm5vdGlmeUxvYWRlZFNoZWV0KHNoZWV0KTsKICAgICBt
X3NoZWV0LT5jaGVja0xvYWRlZCgpOwogfQogCkBAIC0zNjEsNiArMzcyLDI5IEBAIGJvb2wgSFRN
TExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCit7CisgICAgbG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMb2FkRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKQoreworICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZs
b2FkRXZlbnRTZW5kZXIoKSk7CisgICAgaWYgKG1fbG9hZGVkU2hlZXQpCisgICAgICAgIGxpbmtM
b2FkZWQoKTsKKyAgICBlbHNlCisgICAgICAgIGxpbmtMb2FkaW5nRXJyb3JlZCgpOworfQorCit2
b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJl
c291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpCit7CisgICAgaWYgKG1fZmlyZWRMb2FkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9sb2FkZWRTaGVldCA9ICFlcnJvck9jY3VycmVkOworICAgIGxv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIG1fZmlyZWRMb2Fk
ID0gdHJ1ZTsKK30KKwogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnN0YXJ0TG9hZGluZ0R5bmFtaWNT
aGVldCgpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXBsZSBibG9ja2luZyBzaGVl
dHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJldmlzaW9uIDEw
ODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SFRNTExpbmtFbGVtZW50OwogY2xhc3MgS1VSTDsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgRXZlbnRTZW5kZXI7CisKIGNsYXNzIEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxl
bWVudCwgcHVibGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQsIHB1YmxpYyBMaW5rTG9hZGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CkBAIC02MCw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0
cmluZyYpOwogICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCisgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+Kik7
CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsK
IApAQCAtNzMsNiArNzksNyBAQCBwcml2YXRlOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhy
ZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2Fj
aGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVz
b3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGlu
Z0R5bmFtaWNTaGVldCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkZWQoKTsKQEAgLTEx
OSw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wgbV9j
cmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5TaGFkb3dUcmVlOworICAgIGJvb2wgbV9m
aXJlZExvYWQ7CisgICAgYm9vbCBtX2xvYWRlZFNoZWV0OwogICAgIAogICAgIFBlbmRpbmdTaGVl
dFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4MDMzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBA
QAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlw
dGFibGVEb2N1bWVudFBhcnNlci5oIgpAQCAtMzUsMjEgKzM3LDMyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAordHlwZWRlZiBFdmVudFNlbmRl
cjxIVE1MU3R5bGVFbGVtZW50PiBMb2FkRXZlbnRTZW5kZXI7CitzdGF0aWMgTG9hZEV2ZW50U2Vu
ZGVyJiBsb2FkRXZlbnRTZW5kZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTG9hZEV2
ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50
KSk7CisgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKK30KKwogaW5saW5lIEhUTUxT
dHlsZUVsZW1lbnQ6OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU3R5bGVFbGVtZW50KGRvY3VtZW50LCBj
cmVhdGVkQnlQYXJzZXIpCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAsIG1faXNSZWdp
c3RlcmVkV2l0aFNjb3BpbmdOb2RlKGZhbHNlKQogI2VuZGlmCisgICAgLCBtX2ZpcmVkTG9hZChm
YWxzZSkKKyAgICAsIG1fbG9hZGVkU2hlZXQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoc3R5bGVUYWcpKTsKIH0KLQorICAgIAogSFRNTFN0eWxlRWxlbWVudDo6fkhUTUxTdHlsZUVs
ZW1lbnQoKQogewogICAgIC8vIER1cmluZyB0ZWFyLWRvd24sIHdpbGxSZW1vdmUgaXNuJ3QgY2Fs
bGVkLCBzbyBtX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSBtYXkgc3RpbGwgYmUgc2V0IGhl
cmUuCiAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbid0IEFTU0VSVCghbV9pc1JlZ2lzdGVyZWRXaXRo
U2NvcGluZ05vZGUpLgogICAgIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoZG9jdW1l
bnQoKSwgdGhpcyk7CisKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxIVE1MU3R5bGVFbGVtZW50PiBIVE1MU3R5bGVFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKQEAgLTYxLDYgKzc0LDEwIEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoQXQKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0
ciAmJiBtX3NoZWV0KQogICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShhdHRyLT52YWx1ZSgpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb25lcnJvckF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmVycm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cikpOwogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IHNjb3BlZEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT5pc051bGwoKSAmJiAhbV9pc1Jl
Z2lzdGVyZWRXaXRoU2NvcGluZ05vZGUgJiYgaW5Eb2N1bWVudCgpKQpAQCAtMjA1LDYgKzIyMiwy
OSBAQCBFbGVtZW50KiBIVE1MU3R5bGVFbGVtZW50OjpzY29waW5nRWxlbWVuCiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFNUWUxFX1NDT1BFRCkKIAordm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdMb2FkRXZlbnRzKCkKK3sKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBl
bmRpbmdFdmVudHMoKTsKK30KKwordm9pZCBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRp
bmdFdmVudChMb2FkRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQoreworICAgIEFTU0VSVF9VTlVT
RUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRTZW5kZXIoKSk7CisgICAg
aWYgKG1fbG9hZGVkU2hlZXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBlbHNlCisgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFs
c2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTFN0eWxlRWxlbWVudDo6bm90aWZ5TG9hZGVkU2hl
ZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpCit7CisgICAg
aWYgKG1fZmlyZWRMb2FkKQorICAgICAgICByZXR1cm47CisgICAgbV9sb2FkZWRTaGVldCA9ICFl
cnJvck9jY3VycmVkOworICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRo
aXMpOworICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKK30KKwogdm9pZCBIVE1MU3R5bGVFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNv
bnN0CiB7ICAgIAogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
dXJscyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAkocmV2aXNp
b24gMTA4MDMzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgSFRNTFN0eWxlRWxlbWVudDsKIGNsYXNzIFN0eWxlU2hlZXQ7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyOworCiBjbGFzcyBIVE1MU3R5bGVFbGVtZW50IDog
cHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIFN0eWxlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SFRNTFN0eWxlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKQEAgLTQ4LDYgKzUxLDkg
QEAgcHVibGljOgogICAgIGJvb2wgZGlzYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldERpc2Fi
bGVkKGJvb2wpOwogCisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxI
VE1MU3R5bGVFbGVtZW50PiopOworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKTsKKwogcHJpdmF0ZToKICAgICBIVE1MU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIApAQCAtNjQsNiArNzAs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0
dXJuIFN0eWxlRWxlbWVudDo6aXNMb2FkaW5nKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRM
b2FkZWQoKSB7IHJldHVybiBTdHlsZUVsZW1lbnQ6OnNoZWV0TG9hZGVkKGRvY3VtZW50KCkpOyB9
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNv
dXJjZXMoYm9vbCBlcnJvck9jY3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkgeyBTdHlsZUVsZW1lbnQ6OnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldChk
b2N1bWVudCgpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwpAQCAtNzUsNiArODIsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgdW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSgpOwogCiAgICAgYm9vbCBtX2lz
UmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZTsKKyAgICBib29sIG1fZmlyZWRMb2FkOworICAgIGJv
b2wgbV9sb2FkZWRTaGVldDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwODAzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDYxIEBACisyMDEyLTAyLTE2ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4K
KworICAgICAgICBsaW5rIGVsZW1lbnQgZm9yIENTUyBzdHlsZXNoZWV0IHNob3VsZCBlbWl0IGxv
YWQgZXZlbnQgd2hlbiBzaGVldCBsb2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
bGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWlt
cG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3Rl
bnQtaW1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1pbXBvcnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3IuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9y
ZS1wYWdlLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQt
c3R5bGVzaGVldC13aXRoLWltcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNoZWV0LXdpdGgtaW1wb3J0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9u
bG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmxvYWQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstb25sb2FkMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFu
ZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNh
bGx5LWFkZC1saW5rLXdpdGgtb25sb2FkLWhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGlu
ay13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRDb21wdXRlZENvbG9yT2ZFbGVtZW50QmVFcXVhbFRvUkdCU3RyaW5nKToK
KyAgICAgICAgKGNyZWF0ZUxpbmtFbGVtZW50V2l0aFN0eWxlc2hlZXQpOgorICAgICAgICAoY3Jl
YXRlU3R5bGVFbGVtZW50V2l0aFN0cmluZyk6CisgICAgICAgIChsb2cpOgorICAgICAgICAodGVz
dFBhc3NlZCk6CisgICAgICAgICh0ZXN0RmFpbGVkKToKKyAgICAgICAgKHRlc3RQYXNzZWRBbmRO
b3RpZnlEb25lKToKKyAgICAgICAgKHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKToKKyAgICAgICAg
KHRlc3RGaW5pc2hlZCk6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291
cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuY3Nz
OiBBZGRlZC4KKyAgICAgICAgKCN0ZXN0KToKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1pbXBvcnQuY3NzOiBBZGRlZC4KKyAgICAg
ICAgKCN0ZXN0KToKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2Vz
L3N0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzczogQWRkZWQuCisgICAgICAg
ICgjdGVzdCk6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9z
dHlsZXNoZWV0LmNzczogQWRkZWQuCisgICAgICAgICgjdGVzdCk6CisgICAgICAgICogZmFzdC9k
b20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJy
b3ItaGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxT
dHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRs
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9n
cmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9ubG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNh
bGx5LWFkZC1zdHlsZS13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13
aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgt
ZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLWJlZm9yZS1wYWdl
LWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5bGVF
bGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1v
bmxvYWQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxl
RWxlbWVudC9zdHlsZS1vbmxvYWQyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTE2ICBOb2VsIEdv
cmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIFtjaHJvbWl1bV0gUmViYXNlbGluZSBKUEVH
IGltYWdlIHJlc3VsdHMgYWZ0ZXIgcjEwNzM4OQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NTQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3ItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L2xpbmstb25lcnJvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
VGhpcyB0ZXN0cyB0aGF0IGFuIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBl
bGVtZW50IHdoZW4gaXQgZmFpbHMgdG8gbG9hZCBhIG5vbi1leGlzdGVudCBzdHlsZSBzaGVldC4g
VGhpcyB0ZXN0IFBBU1NFRCBpZiBzZWUgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhl
cndpc2UsIGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBFcnJvciBldmVudC4KKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0
LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJy
b3Itc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3Rl
bnQtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitzdHls
ZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuY3NzIGhhcyBNSU1F
IHR5cGUgdGV4dC9jc3MKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1Ro
aXMgdGVzdHMgdGhhdCBhbiBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxl
bWVudCB3aGVuIGl0cyBzdHlsZSBzaGVldCBmYWlscyB0byBsb2FkIGFuIEBpbXBvcnQnZWQgc3R5
bGUgc2hlZXQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBzdWNjZXNzZnVsbHkgbG9hZGVkIGFu
b3RoZXIgQGltcG9ydCdlZCBzdHlsZSBzaGVldCkuIFRoaXMgdGVzdCBQQVNTRUQgaWYgdGhlcmUg
YXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BB
U1MgRmlyZWQgRXJyb3IgZXZlbnQuCitQQVNTICN0ZXN0IGNvbG9yIHdhcyByZ2IoMCwgMCwgMjU1
KS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25l
cnJvci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9y
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVu
dC1pbXBvcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBwYXNzZWQoKQoreworICB0
ZXN0UGFzc2VkKCJGaXJlZCBFcnJvciBldmVudC4iKTsKKyAgc2hvdWxkQ29tcHV0ZWRDb2xvck9m
RWxlbWVudEJlRXF1YWxUb1JHQlN0cmluZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
LCAicmdiKDAsIDAsIDI1NSkiIC8qIGJsdWUgKi8pOyAvLyBpLmUuIHN0eWxlc2hlZXQuY3NzIHN1
Y2Nlc3NmdWxseSBsb2FkZWQKKyAgdGVzdEZpbmlzaGVkKCk7Cit9Cis8L3NjcmlwdD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1leGlzdGVu
dC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5jc3MiIG9ubG9hZD0idGVzdEZhaWxlZEFuZE5vdGlm
eURvbmUoJ0ZpcmVkIExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9yIGV2ZW50Licp
IiBvbmVycm9yPSJwYXNzZWQoKSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhh
dCBhbiBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCB3aGVuIGl0
cyBzdHlsZSBzaGVldCBmYWlscyB0byBsb2FkIGFuIEBpbXBvcnQnZWQgc3R5bGUgc2hlZXQgKHJl
Z2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBzdWNjZXNzZnVsbHkgbG9hZGVkIGFub3RoZXIgQGltcG9y
dCdlZCBzdHlsZSBzaGVldCkuIFRoaXMgdGVzdCBQQVNTRUQgaWYgdGhlcmUgYXJlIG9ubHkgUEFT
UyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPGgxIGlkPSJ0ZXN0
Ij48IS0tIFRlc3QgZWxlbWVudCAtLT48L2gxPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1pbXBvcnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK3N0eWxlc2hlZXQtd2l0aC1u
b24tZXhpc3RlbnQtaW1wb3J0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3Rz
IHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hl
biBpdHMgc3R5bGUgc2hlZXQgZmFpbHMgdG8gbG9hZCBhbiBAaW1wb3J0J2VkIHN0eWxlIHNoZWV0
LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cu
IE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVkIEVycm9yIGV2ZW50LgorUEFTUyAj
dGVzdCBjb2xvciB3YXMgcmdiKDI1NSwgMjU1LCAwKS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4
aXN0ZW50LWltcG9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1p
bXBvcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1pbXBvcnQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBwYXNzZWQoKQoreworICB0ZXN0UGFzc2Vk
KCJGaXJlZCBFcnJvciBldmVudC4iKTsKKyAgc2hvdWxkQ29tcHV0ZWRDb2xvck9mRWxlbWVudEJl
RXF1YWxUb1JHQlN0cmluZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCAicmdiKDI1
NSwgMjU1LCAwKSIgLyogeWVsbG93ICovKTsKKyAgdGVzdEZpbmlzaGVkKCk7Cit9Cis8L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0
aC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzcyIgb25sb2FkPSJ0ZXN0RmFpbGVkQW5kTm90aWZ5RG9u
ZSgnRmlyZWQgTG9hZCBldmVudC4gU2hvdWxkIGhhdmUgZmlyZWQgRXJyb3IgZXZlbnQuJykiIG9u
ZXJyb3I9InBhc3NlZCgpIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGFu
IEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IHdoZW4gaXRzIHN0
eWxlIHNoZWV0IGZhaWxzIHRvIGxvYWQgYW4gQGltcG9ydCdlZCBzdHlsZSBzaGVldC4gVGhpcyB0
ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1lc3NhZ2VzIGJlbG93LiBPdGhlcndp
c2UsIGl0IEZBSUxFRC48L3A+Cis8aDEgaWQ9InRlc3QiPjwhLS0gVGVzdCBlbGVtZW50IC0tPjwv
aDE+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3IuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVy
cm9yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmVycm9yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGlu
ay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9InJlc291cmNlcy9ub24tZXhpc3RlbnQtc3R5bGVzaGVldC5jc3MiIG9ubG9hZD0idGVzdEZh
aWxlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVy
cm9yIGV2ZW50LicpIiBvbmVycm9yPSJ0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgnRmlyZWQgRXJy
b3IgZXZlbnQuJykiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYW4gRXJy
b3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hlbiBpdCBmYWlscyB0
byBsb2FkIGEgbm9uLWV4aXN0ZW50IHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHNl
ZSB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4K
KzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkMi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25sb2FkMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1IEBACitzdHlsZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitU
aGlzIHRlc3RzIHRoYXQgd2UgZmlyZSB0d28gTG9hZCBldmVudHMgb24gYSBwYWdlIHdpdGggdHdv
IEhUTUwgTGluayBlbGVtZW50cyBhbmQgdGhhdCBib3RoIGV2ZW50cyBhcmUgZmlyZWQgYmVmb3Jl
IHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93IGlzIGRpc3BhdGNoZWQuIFRoaXMgdGVzdCBQ
QVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxF
RC4KKworUEFTUyBGaXJlZCAyIExvYWQgZXZlbnRzLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkMi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25s
b2FkMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRp
ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyA9
IDA7Cit2YXIgZXhwZWN0ZWROdW1iZXJPZkZpcmVkTG9hZEV2ZW50cyA9IDI7CisKK2Z1bmN0aW9u
IGNoZWNrSWZEb25lKGVsZW1lbnROYW1lKQoreworICArK251bWJlck9mRmlyZWRMb2FkRXZlbnRz
OworCisgIGlmIChudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyA8IGV4cGVjdGVkTnVtYmVyT2ZGaXJl
ZExvYWRFdmVudHMgJiYgZWxlbWVudE5hbWUgPT09ICdib2R5JykgeworICAgIGxvZygiRkFJTCBG
aXJlZCB3aW5kb3cgTG9hZCBldmVudCBiZWZvcmUgbGluayBMb2FkIGV2ZW50cy4iKTsKKyAgICB0
ZXN0RmluaXNoZWQoKTsKKyAgfQorICBpZiAobnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPT09IGV4
cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVudHMpIHsKKyAgICBsb2coIlBBU1MgRmlyZWQgIiAr
IG51bWJlck9mRmlyZWRMb2FkRXZlbnRzICsgIiBMb2FkIGV2ZW50cy4iKTsKKyAgICB0ZXN0Rmlu
aXNoZWQoKTsKKyAgfQorfQorPC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIgb25sb2FkPSJjaGVja0lmRG9uZSgnbGluazEnKSI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIg
b25sb2FkPSJjaGVja0lmRG9uZSgnbGluazInKSI+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImNo
ZWNrSWZEb25lKCdib2R5JykiPgorPHA+VGhpcyB0ZXN0cyB0aGF0IHdlIGZpcmUgdHdvIExvYWQg
ZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1MIExpbmsgZWxlbWVudHMgYW5kIHRoYXQgYm90
aCBldmVudHMgYXJlIGZpcmVkIGJlZm9yZSB0aGUgTG9hZCBldmVudCBmb3IgdGhlIHdpbmRvdyBp
cyBkaXNwYXRjaGVkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBi
ZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtYmVmb3Jl
LXBhZ2UtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorc3R5bGVzaGVldC5jc3MgaGFzIE1J
TUUgdHlwZSB0ZXh0L2NzcworVGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBmb3IgYW4gSFRN
TCBMaW5rIGVsZW1lbnQgY29tZXMgYmVmb3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93
LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3
aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgTG9hZCBldmVudCBhdCBsaW5rLgorUEFTUyBG
aXJlZCBMb2FkIGV2ZW50IGF0IGJvZHkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJl
Zm9yZS1wYWdlLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgordmFyIGV4cGVjdGVkTG9hZEV2ZW50VGFyZ2V0cyA9IFsibGluayIsICJib2R5
Il07CisKK2Z1bmN0aW9uIGRpZFJlY2VpdmVMb2FkRXZlbnQoZWxlbWVudE5hbWUpCit7CisgIHZh
ciBleHBlY3RlZFRhcmdldCA9IGV4cGVjdGVkTG9hZEV2ZW50VGFyZ2V0cy5zaGlmdCgpOworICBp
ZiAoZXhwZWN0ZWRUYXJnZXQgPT09IGVsZW1lbnROYW1lKQorICAgIHRlc3RQYXNzZWRBbmROb3Rp
ZnlEb25lKCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSArICIuIik7CisgIGVs
c2UgeworICAgIC8vIFdlIGRvbid0IGNhbGwgdGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoKSBvciB0
ZXN0RmluaXNoZWQoKSBiZWNhdXNlIHdlIHdhbnQgdG8gbG9nIGFkZGl0aW9uYWwgTG9hZCBldmVu
dHMgYXMgaXQKKyAgICAvLyBtYXkgaGVscCB0b3dhcmRzIGRlYnVnZ2luZyB0aGlzIHRlc3QgY2Fz
ZS4KKyAgICB0ZXN0RmFpbGVkKCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSAr
ICIsIGJ1dCBzaG91bGQgaGF2ZSBmaXJlZCBpdCBhdCAiICsgZXhwZWN0ZWRUYXJnZXQgKyAiLiIp
OworICB9Cit9Cis8L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3Vy
Y2VzL3N0eWxlc2hlZXQuY3NzIiBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZlbnQoJ2xpbmsnKSI+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZlbnQoJ2JvZHknKSI+Cis8
cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGZvciBhbiBIVE1MIExpbmsgZWxlbWVudCBj
b21lcyBiZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cuIFRoaXMgdGVzdCBQQVNT
RUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48
L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xp
bmstb25sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNSBAQAorc3R5bGVzaGVldC5jc3MgaGFzIE1JTUUgdHlwZSB0ZXh0L2Nzcwor
VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxl
bWVudCBvbmNlIGl0IGxvYWRzIGEgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91
IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKworUEFTUyBG
aXJlZCBMb2FkIGV2ZW50LgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWltcG9ydC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25s
b2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLXN0eWxlc2hl
ZXQtd2l0aC1pbXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAK
K3N0eWxlc2hlZXQtd2l0aC1pbXBvcnQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK3N0eWxl
c2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1RoaXMgdGVzdHMgdGhhdCBhIExvYWQg
ZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgb25jZSBhbGwgQGltcG9ydCdl
ZCBzdHlsZXNoZWV0cyBhcmUgbG9hZGVkIGJ5IGEgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNT
RUQgaWYgdGhlcmUgYXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBG
QUlMRUQuCisKK1BBU1MgRmlyZWQgTG9hZCBldmVudC4KK1BBU1MgI3Rlc3QgY29sb3Igd2FzIHJn
YigwLCAwLCAyNTUpLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWltcG9ydC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNo
ZWV0LXdpdGgtaW1wb3J0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWltcG9ydC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KCkKK3sKKyAgdGVzdFBhc3Nl
ZCgiRmlyZWQgTG9hZCBldmVudC4iKTsKKyAgc2hvdWxkQ29tcHV0ZWRDb2xvck9mRWxlbWVudEJl
RXF1YWxUb1JHQlN0cmluZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCAicmdiKDAs
IDAsIDI1NSkiIC8qIGJsdWUgKi8pOworICB0ZXN0RmluaXNoZWQoKTsKK30KKzwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVzaGVldC13aXRoLWlt
cG9ydC5jc3MiIG9ubG9hZD0iY2hlY2tSZXN1bHQoKSIgb25lcnJvcj0idGVzdEZhaWxlZCgnRmly
ZWQgRXJyb3IgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIExvYWQgZXZlbnQuJykiPgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGFu
IEhUTUwgTGluayBlbGVtZW50IG9uY2UgYWxsIEBpbXBvcnQnZWQgc3R5bGVzaGVldHMgYXJlIGxv
YWRlZCBieSBhIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5
IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4KKzxoMSBpZD0i
dGVzdCI+PCEtLSBUZXN0IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L2xpbmstb25sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlc2hlZXQuY3NzIiBv
bmxvYWQ9InRlc3RQYXNzZWRBbmROb3RpZnlEb25lKCdGaXJlZCBMb2FkIGV2ZW50LicpIiBvbmVy
cm9yPSJ0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSgnRmlyZWQgRXJyb3IgZXZlbnQuIFNob3VsZCBo
YXZlIGZpcmVkIExvYWQgZXZlbnQuJykiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Rz
IHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IG9uY2Ug
aXQgbG9hZHMgYSBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3
b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmVycm9yLWhh
bmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5k
bGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5k
bGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3Rz
IHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBpbnNlcnRl
ZCBIVE1MIExpbmsgZWxlbWVudCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBs
b2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3Ro
ZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgRXJyb3IgZXZlbnQuCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1s
aW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1v
bmVycm9yLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1o
YW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBh
IExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9ncmFtbWF0aWNhbGx5IGluc2VydGVkIEhUTUwg
TGluayBlbGVtZW50IHdob3NlIEBpbXBvcnQgc3R5bGUgc2hlZXQgZmFpbGVkIHRvIGxvYWQuIFRo
aXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2Us
IGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cit2YXIg
bGluayA9IGNyZWF0ZUxpbmtFbGVtZW50V2l0aFN0eWxlc2hlZXQoInJlc291cmNlcy9ub24tZXhp
c3RlbnQtc3R5bGVzaGVldC5jc3MiKTsKK2xpbmsub25sb2FkID0gZnVuY3Rpb24gKCkgeyB0ZXN0
RmFpbGVkQW5kTm90aWZ5RG9uZSgnRmlyZWQgTG9hZCBldmVudC4gU2hvdWxkIGhhdmUgZmlyZWQg
RXJyb3IgZXZlbnQuJykgfTsKK2xpbmsub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgdGVzdFBhc3Nl
ZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIEVycm9yIGV2ZW50LicpIH07Citkb2N1bWVudC5oZWFkLmFw
cGVuZENoaWxkKGxpbmspOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGlu
ay13aXRoLW9ubG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13
aXRoLW9ubG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdp
dGgtb25sb2FkLWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUg
QEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1RoaXMgdGVzdHMgdGhh
dCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9ncmFtbWF0aWNhbGx5IGluc2VydGVkIEhU
TUwgTGluayBlbGVtZW50IG9uY2UgaXQgbG9hZHMgaXRzIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3Qg
UEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlM
RUQuCisKK1BBU1MgRmlyZWQgTG9hZCBldmVudC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxvYWQt
aGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJl
ZCBhdCBhIHByb2dyYW1tYXRpY2FsbHkgaW5zZXJ0ZWQgSFRNTCBMaW5rIGVsZW1lbnQgb25jZSBp
dCBsb2FkcyBpdHMgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUg
d29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25z
b2xlIj48L3ByZT4KKzxzY3JpcHQ+Cit2YXIgbGluayA9IGNyZWF0ZUxpbmtFbGVtZW50V2l0aFN0
eWxlc2hlZXQoInJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIpOworbGluay5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7IHRlc3RQYXNzZWRBbmROb3RpZnlEb25lKCdGaXJlZCBMb2FkIGV2ZW50LicpIH07
CitsaW5rLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdG
aXJlZCBFcnJvciBldmVudC4gU2hvdWxkIGhhdmUgZmlyZWQgTG9hZCBldmVudC4nKSB9OworZG9j
dW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9s
aW5rLWxvYWQtdXRpbGl0aWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMv
bGluay1sb2FkLXV0aWxpdGllcy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZVJlc3BvbnNl
TUlNRVR5cGVzKCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQ29tcHV0ZWRDb2xvck9mRWxlbWVudEJlRXF1YWxUb1JHQlN0cmlu
ZyhlbGVtZW50LCBleHBlY3RlZENvbG9yKQoreworICB2YXIgZWxlbWVudE5hbWUgPSAiIyIgKyBl
bGVtZW50LmlkIHx8IGVsZW1lbnQudGFnTmFtZTsKKyAgdmFyIGFjdHVhbENvbG9yID0gd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuY29sb3I7CisgIGlmIChhY3R1YWxDb2xv
ciA9PT0gZXhwZWN0ZWRDb2xvcikKKyAgICBsb2coIlBBU1MgIiArIGVsZW1lbnROYW1lICsgIiBj
b2xvciB3YXMgIiArIGV4cGVjdGVkQ29sb3IgKyAiLiIpOworICBlbHNlCisgICAgbG9nKCJGQUlM
ICIgKyBlbGVtZW50TmFtZSArICIgY29sb3Igc2hvdWxkIGJlICIgKyBleHBlY3RlZENvbG9yICsg
Ii4gV2FzICIgKyBhY3R1YWxDb2xvciArICIuIik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUxpbmtF
bGVtZW50V2l0aFN0eWxlc2hlZXQoc3R5bGVzaGVldFVSTCkKK3sKKyAgdmFyIGxpbmsgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOwor
ICBsaW5rLmhyZWYgPSBzdHlsZXNoZWV0VVJMOworICByZXR1cm4gbGluazsKK30KKworZnVuY3Rp
b24gY3JlYXRlU3R5bGVFbGVtZW50V2l0aFN0cmluZyhzdHlsZXNoZWV0RGF0YSkKK3sKKyAgdmFy
IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgc3R5bGUudGV4dENv
bnRlbnQgPSBzdHlsZXNoZWV0RGF0YTsKKyAgcmV0dXJuIHN0eWxlOworfQorCitmdW5jdGlvbiBs
b2cobWVzc2FnZSkKK3sKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgIlxuIikpOworfQorCitm
dW5jdGlvbiB0ZXN0UGFzc2VkKG1lc3NhZ2UpCit7CisgIGxvZygiUEFTUyAiICsgbWVzc2FnZSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobWVzc2FnZSkKK3sKKyAgbG9nKCJGQUlMICIgKyBt
ZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGVzdFBhc3NlZEFuZE5vdGlmeURvbmUobWVzc2FnZSkK
K3sKKyAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgdGVzdEZpbmlzaGVkKCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKG1lc3NhZ2UpCit7CisgIHRlc3RGYWlsZWQobWVz
c2FnZSk7CisgIHRlc3RGaW5pc2hlZCgpOworfQorCitmdW5jdGlvbiB0ZXN0RmluaXNoZWQoKQor
eworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhp
c3RlbnQtaW1wb3J0LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4
aXN0ZW50LWltcG9ydC5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9u
LWV4aXN0ZW50LWltcG9ydC5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorQGltcG9y
dCAic3R5bGVzaGVldC5jc3MiOworQGltcG9ydCAibm9uLWV4aXN0ZW50LXN0eWxlc2hlZXQuY3Nz
IjsKKworI3Rlc3QgeyBjb2xvcjogeWVsbG93OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1pbXBvcnQuY3NzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJj
ZXMvc3R5bGVzaGVldC13aXRoLWltcG9ydC5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1pbXBv
cnQuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0BpbXBvcnQgInN0eWxlc2hlZXQu
Y3NzIjsKKworI3Rlc3QgeyBjb2xvcjogeWVsbG93OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3Rl
bnQtaW1wb3J0LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LmNz
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9y
ZXNvdXJjZXMvc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1pbXBvcnQuY3NzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMgQEAKK0BpbXBvcnQgIm5vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNz
cyI7CisKKyN0ZXN0IHsgY29sb3I6IHllbGxvdzsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hl
ZXQuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
I3Rlc3QgeyBjb2xvcjogYmx1ZSAhaW1wb3J0YW50OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25l
cnJvci1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25l
cnJvci1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1v
bmVycm9yLWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAK
K1RoaXMgdGVzdHMgdGhhdCBhbiBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhIHByb2dyYW1tYXRp
Y2FsbHkgaW5zZXJ0ZWQgSFRNTCBTdHlsZSBlbGVtZW50IHdob3NlIEBpbXBvcnQgc3R5bGUgc2hl
ZXQgZmFpbGVkIHRvIGxvYWQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQ
QVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBFcnJvciBldmVu
dC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFt
bWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxs
eS1hZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQt
c3R5bGUtd2l0aC1vbmVycm9yLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL0hU
TUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhbiBFcnJvciBldmVudCBpcyBm
aXJlZCBhdCBhIHByb2dyYW1tYXRpY2FsbHkgaW5zZXJ0ZWQgSFRNTCBTdHlsZSBlbGVtZW50IHdo
b3NlIEBpbXBvcnQgc3R5bGUgc2hlZXQgZmFpbGVkIHRvIGxvYWQuIFRoaXMgdGVzdCBQQVNTRUQg
aWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+
Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+Cit2YXIgc3R5bGUgPSBjcmVhdGVT
dHlsZUVsZW1lbnRXaXRoU3RyaW5nKCdAaW1wb3J0ICJyZXNvdXJjZXMvbm9uLWV4aXN0ZW50LXN0
eWxlc2hlZXQuY3NzIjsnKTsKK3N0eWxlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxl
ZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9y
IGV2ZW50LicpIH07CitzdHlsZS5vbmVycm9yID0gZnVuY3Rpb24gKCkgeyB0ZXN0UGFzc2VkQW5k
Tm90aWZ5RG9uZSgnRmlyZWQgRXJyb3IgZXZlbnQuJykgfTsKK2RvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoc3R5bGUpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxl
LXdpdGgtb25sb2FkLWhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUt
d2l0aC1vbmxvYWQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxl
LXdpdGgtb25sb2FkLWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9ncmFt
bWF0aWNhbGx5IGluc2VydGVkIEhUTUwgU3R5bGUgZWxlbWVudCBvbmNlIGl0IGxvYWRzIGl0cyBz
dHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVs
b3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVkIExvYWQgZXZlbnQuCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxs
eS1hZGQtc3R5bGUtd2l0aC1vbmxvYWQtaGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5
bGUtd2l0aC1vbmxvYWQtaGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRo
LW9ubG9hZC1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0VsZW1l
bnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGEgcHJv
Z3JhbW1hdGljYWxseSBpbnNlcnRlZCBIVE1MIFN0eWxlIGVsZW1lbnQgb25jZSBpdCBsb2FkcyBp
dHMgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNT
IGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzxzY3JpcHQ+Cit2YXIgc3R5bGUgPSBjcmVhdGVTdHlsZUVsZW1lbnRXaXRoU3RyaW5nKCIi
KTsKK3N0eWxlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgdGVzdFBhc3NlZEFuZE5vdGlmeURvbmUo
J0ZpcmVkIExvYWQgZXZlbnQuJykgfTsKK3N0eWxlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHRl
c3RGYWlsZWRBbmROb3RpZnlEb25lKCdGaXJlZCBFcnJvciBldmVudC4gU2hvdWxkIGhhdmUgZmly
ZWQgTG9hZCBldmVudC4nKSB9OworZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVs
ZW1lbnQvc3R5bGUtb25lcnJvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NSBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBT
dHlsZSBlbGVtZW50IHdob3NlIEBpbXBvcnQgc3R5bGUgc2hlZXQgZmFpbGVkIHRvIGxvYWQuIFRo
aXMgdGVzdCBQQVNTRUQgaWYgdGhlcmUgYXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3Ro
ZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRXJyb3IgZXZlbnQgZmlyZWQuCitQQVNTICN0ZXN0
IGNvbG9yIHdhcyByZ2IoMjU1LCAyNTUsIDApLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3Itd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4
aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5v
bi1leGlzdGVudC1pbXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQt
YW5kLW5vbi1leGlzdGVudC1pbXBvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYgQEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1RoaXMgdGVz
dHMgdGhhdCBhIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVudCB3
aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VE
IGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJ
TEVELgorCitQQVNTIEVycm9yIGV2ZW50IGZpcmVkLgorUEFTUyAjdGVzdCBjb2xvciB3YXMgcmdi
KDAsIDAsIDI1NSkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1l
bnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9z
dHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5
bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGNoZWNrUmVzdWx0KCkK
K3sKKyAgdGVzdFBhc3NlZCgiRXJyb3IgZXZlbnQgZmlyZWQuIik7CisgIHNob3VsZENvbXB1dGVk
Q29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiKSwgInJnYigwLCAwLCAyNTUpIiAvKiBibHVlICovKTsgLy8gaS5lLiBzdHlsZXNoZWV0
LmNzcyBzdWNjZXNzZnVsbHkgbG9hZGVkCisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+
Cis8c3R5bGUgb25sb2FkPSJ0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSgnTG9hZCBldmVudCBmaXJl
ZC4gU2hvdWxkIGhhdmUgZmlyZWQgRXJyb3IgZXZlbnQuJykiIG9uZXJyb3I9ImNoZWNrUmVzdWx0
KCkiPgorQGltcG9ydCAiLi4vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LmNz
cyI7CitAaW1wb3J0ICJyZXNvdXJjZXMvbm9uLWV4aXN0ZW50LXN0eWxlc2hlZXQuY3NzIjsKKyN0
ZXN0IHsgY29sb3I6IHllbGxvdzsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhp
cyB0ZXN0cyB0aGF0IGEgRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBTdHlsZSBlbGVt
ZW50IHdob3NlIEBpbXBvcnQgc3R5bGUgc2hlZXQgZmFpbGVkIHRvIGxvYWQuIFRoaXMgdGVzdCBQ
QVNTRUQgaWYgdGhlcmUgYXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBp
dCBGQUlMRUQuPC9wPgorPGgxIGlkPSJ0ZXN0Ij48IS0tIFRlc3QgZWxlbWVudCAtLT48L2gxPgor
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3IuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJy
b3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVs
ZW1lbnQvc3R5bGUtb25lcnJvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vSFRNTExpbmtF
bGVtZW50L3Jlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBwYXNzZWQoKQoreworICB0ZXN0UGFzc2VkKCJFcnJvciBldmVudCBmaXJl
ZC4iKTsKKyAgc2hvdWxkQ29tcHV0ZWRDb2xvck9mRWxlbWVudEJlRXF1YWxUb1JHQlN0cmluZyhk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCAicmdiKDI1NSwgMjU1LCAwKSIgLyogeWVs
bG93ICovKTsKKyAgdGVzdEZpbmlzaGVkKCk7Cit9Cis8L3NjcmlwdD4KKzxzdHlsZSBvbmxvYWQ9
InRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdMb2FkIGV2ZW50IGZpcmVkLiBTaG91bGQgaGF2ZSBm
aXJlZCBFcnJvciBldmVudC4nKSIgb25lcnJvcj0icGFzc2VkKCkiPgorQGltcG9ydCAicmVzb3Vy
Y2VzL25vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNzcyI7CisjdGVzdCB7IGNvbG9yOiB5ZWxsb3c7
IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIEVycm9y
IGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBAaW1wb3J0IHN0
eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBv
bmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4KKzxoMSBp
ZD0idGVzdCI+PCEtLSBUZXN0IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwv
cHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0
eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZDItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVu
dC9zdHlsZS1vbmxvYWQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBA
CitUaGlzIHRlc3RzIHRoYXQgd2UgZmlyZSB0d28gTG9hZCBldmVudHMgb24gYSBwYWdlIHdpdGgg
dHdvIEhUTUwgU3R5bGUgZWxlbWVudHMgYW5kIHRoYXQgYm90aCBldmVudHMgYXJlIGZpcmVkIGJl
Zm9yZSB0aGUgTG9hZCBldmVudCBmb3IgdGhlIHdpbmRvdyBpcyBkaXNwYXRjaGVkLiBUaGlzIHRl
c3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBG
QUlMRUQuCisKK1BBU1MgRmlyZWQgMiBMb2FkIGV2ZW50cy4KKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50
L3N0eWxlLW9ubG9hZDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL0hUTUxMaW5rRWxlbWVu
dC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
dmFyIG51bWJlck9mRmlyZWRMb2FkRXZlbnRzID0gMDsKK3ZhciBleHBlY3RlZE51bWJlck9mRmly
ZWRMb2FkRXZlbnRzID0gMjsKKworZnVuY3Rpb24gY2hlY2tJZkRvbmUoZWxlbWVudE5hbWUpCit7
CisgICsrbnVtYmVyT2ZGaXJlZExvYWRFdmVudHM7CisKKyAgaWYgKG51bWJlck9mRmlyZWRMb2Fk
RXZlbnRzIDwgZXhwZWN0ZWROdW1iZXJPZkZpcmVkTG9hZEV2ZW50cyAmJiBlbGVtZW50TmFtZSA9
PT0gJ2JvZHknKSB7CisgICAgbG9nKCJGQUlMIEZpcmVkIHdpbmRvdyBMb2FkIGV2ZW50IGJlZm9y
ZSBzdHlsZSBMb2FkIGV2ZW50cy4iKTsKKyAgICB0ZXN0RmluaXNoZWQoKTsKKyAgfQorICBpZiAo
bnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPT09IGV4cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVu
dHMpIHsKKyAgICBsb2coIlBBU1MgRmlyZWQgIiArIG51bWJlck9mRmlyZWRMb2FkRXZlbnRzICsg
IiBMb2FkIGV2ZW50cy4iKTsKKyAgICB0ZXN0RmluaXNoZWQoKTsKKyAgfQorfQorPC9zY3JpcHQ+
Cis8c3R5bGUgb25sb2FkPSJjaGVja0lmRG9uZSgnc3R5bGUxJykiPjwvc3R5bGU+Cis8c3R5bGUg
b25sb2FkPSJjaGVja0lmRG9uZSgnc3R5bGUyJykiPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9ImNoZWNrSWZEb25lKCdib2R5JykiPgorPHA+VGhpcyB0ZXN0cyB0aGF0IHdlIGZpcmUg
dHdvIExvYWQgZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1MIFN0eWxlIGVsZW1lbnRzIGFu
ZCB0aGF0IGJvdGggZXZlbnRzIGFyZSBmaXJlZCBiZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRo
ZSB3aW5kb3cgaXMgZGlzcGF0Y2hlZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3
b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxl
LW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLWJlZm9yZS1w
YWdlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoaXMg
dGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgZm9yIGFuIEhUTUwgU3R5bGUgZWxlbWVudCBjb21lcyBi
ZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cuIFRoaXMgdGVzdCBQQVNTRUQgaWYg
eW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKworUEFT
UyBGaXJlZCBMb2FkIGV2ZW50IGF0IHN0eWxlLgorUEFTUyBGaXJlZCBMb2FkIGV2ZW50IGF0IGJv
ZHkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUt
b25sb2FkLWJlZm9yZS1wYWdlLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50
L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK3ZhciBleHBlY3RlZExvYWRFdmVudFRhcmdldHMgPSBbInN0eWxlIiwg
ImJvZHkiXTsKKworZnVuY3Rpb24gZGlkUmVjZWl2ZUxvYWRFdmVudChlbGVtZW50TmFtZSkKK3sK
KyAgdmFyIGV4cGVjdGVkVGFyZ2V0ID0gZXhwZWN0ZWRMb2FkRXZlbnRUYXJnZXRzLnNoaWZ0KCk7
CisgIGlmIChleHBlY3RlZFRhcmdldCA9PT0gZWxlbWVudE5hbWUpCisgICAgdGVzdFBhc3NlZEFu
ZE5vdGlmeURvbmUoIkZpcmVkIExvYWQgZXZlbnQgYXQgIiArIGVsZW1lbnROYW1lICsgIi4iKTsK
KyAgZWxzZSB7CisgICAgLy8gV2UgZG9uJ3QgY2FsbCB0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSgp
IG9yIHRlc3RGaW5pc2hlZCgpIGJlY2F1c2Ugd2Ugd2FudCB0byBsb2cgYWRkaXRpb25hbCBMb2Fk
IGV2ZW50cyBhcyBpdAorICAgIC8vIG1heSBoZWxwIHRvd2FyZHMgZGVidWdnaW5nIHRoaXMgdGVz
dCBjYXNlLgorICAgIHRlc3RGYWlsZWQoIkZpcmVkIExvYWQgZXZlbnQgYXQgIiArIGVsZW1lbnRO
YW1lICsgIiwgYnV0IHNob3VsZCBoYXZlIGZpcmVkIGl0IGF0ICIgKyBleHBlY3RlZFRhcmdldCAr
ICIuIik7CisgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxlIG9ubG9hZD0iZGlkUmVjZWl2ZUxvYWRF
dmVudCgnc3R5bGUnKSI+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZGlkUmVjZWl2
ZUxvYWRFdmVudCgnYm9keScpIj4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgZm9y
IGFuIEhUTUwgU3R5bGUgZWxlbWVudCBjb21lcyBiZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRo
ZSB3aW5kb3cuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93
LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1l
bnQvc3R5bGUtb25sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9u
bG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0
cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgYWZ0
ZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRzLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhl
IHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgTG9h
ZCBldmVudC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9z
dHlsZS1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGUgb25sb2FkPSJ0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgn
RmlyZWQgTG9hZCBldmVudC4nKSIgb25lcnJvcj0idGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoJ0Zp
cmVkIEVycm9yIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBMb2FkIGV2ZW50LicpIj48L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZp
cmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVudCBhZnRlciBpdCBzdWNjZXNzZnVsbHkgbG9hZHMu
IFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndp
c2UsIGl0IEZBSUxFRC4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127530</attachid>
            <date>2012-02-16 23:04:33 -0800</date>
            <delta_ts>2012-02-22 13:24:17 -0800</delta_ts>
            <desc>Patch and layout tests</desc>
            <filename>Bug38995_2.patch</filename>
            <type>text/plain</type>
            <size>55740</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDEyLTAyLTE2ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBsaW5rIGVsZW1lbnQgZm9yIENT
UyBzdHlsZXNoZWV0IHNob3VsZCBlbWl0IGxvYWQgZXZlbnQgd2hlbiBzaGVldCBsb2FkcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQt
YW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWlt
cG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5r
LW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNoZWV0LXdpdGgtaW1wb3J0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5
LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2Fk
LWhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9w
cm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRk
LXN0eWxlLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20v
SFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlz
dGVudC1pbXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVu
dC9zdHlsZS1vbmVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hUTUxTdHlsZUVs
ZW1lbnQvc3R5bGUtb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLmh0bWwKKworICAgICAg
ICBJbXBsZW1lbnRzIHN1cHBvcnQgZm9yIGZpcmluZyBMb2FkIGFuZCBFcnJvciBldmVudHMgYXQg
SFRNTCBMaW5rIGFuZCBIVE1MIFN0eWxlIGVsZW1lbnRzIGFzIHBlcgorICAgICAgICB0aGUgSFRN
TDUgc3BlYy4gKGRyYWZ0IDA1LzI1LzIwMTEpIHNlY3Rpb24gIlRoZSBsaW5rIGVsZW1lbnQiIDxo
dHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zZW1hbnRpY3MuaHRtbCN0aGUtbGluay1lbGVtZW50
PgorICAgICAgICBhbmQgIlRoZSBzdHlsZSBlbGVtZW50IiA8aHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDUvc2VtYW50aWNzLmh0bWwjdGhlLXN0eWxlLWVsZW1lbnQ+LCByZXNwZWN0aXZlbHkuCisK
KyAgICAgICAgKiBjc3MvQ1NTSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJ
bXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KTogTW9kaWZpZWQgdG8gY2FsbCBDU1NTdHlsZVNo
ZWV0Ojpub3RpZnlMb2FkZWRTaGVldCgpCisgICAgICAgIGFmdGVyIHRoZSBzdHlsZSBzaGVldCBh
c3NvY2lhdGVkIHdpdGggdGhlIEBpbXBvcnQgcnVsZSBsb2FkZWQuCisgICAgICAgICogY3NzL0NT
U1N0eWxlU2hlZXQuY3BwOiBBZGRlZCBpbnN0YW5jZSB2YXJpYWJsZSBtX2RpZExvYWRFcnJvck9j
Y3VyIHRvIHRyYWNrIHdoZXRoZXIgYSBuZXR3b3JrIGVycm9yCisgICAgICAgIG9jY3VycmVkIHdo
aWxlIGxvYWRpbmcgYW55IEBpbXBvcnQgc3R5bGUgc2hlZXRzLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Q1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjpjaGVja0xvYWRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6Om5vdGlmeUxvYWRlZFNoZWV0KTogQWRkZWQ7IHVwZGF0ZSBtX2Rp
ZExvYWRFcnJvck9jY3VyIHRvIHJlZmxlY3QgaWYgYSBuZXR3b3JrCisgICAgICAgIGVycm9yIG9j
Y3VycmVkIHdoaWxlIGxvYWRpbmcgYSBzdHlsZSBzaGVldCBhc3NvY2lhdGVkIHdpdGggYW4gQGlt
cG9ydCBydWxlLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRDbG9zZSk6IENhbGwgSFRN
THtMaW5rRWxlbWVudCwgU3R5bGVFbGVtZW50fTo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygp
IHRvCisgICAgICAgIGVuc3VyZSB0aGF0IGFsbCBwZW5kaW5nIExvYWQgZXZlbnRzIGZvciBsaW5r
IGFuZCBzdHlsZSBlbGVtZW50cyBhcmUgZGlzcGF0Y2hlZCBiZWZvcmUgd2UgZmlyZSB0aGUgTG9h
ZAorICAgICAgICBldmVudCBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgKiBkb20vTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1
YnJlc291cmNlcyk6IEFkZGVkOyBhcyBzdGF0ZWQgaW4gaXRzIG5hbWUsIHRoaXMgbWV0aG9kIGlz
CisgICAgICAgIGNhbGxlZCBvbmNlIGEgc3R5bGUgc2hlZXQgYW5kIGFsbCBpdHMgY3JpdGljYWwg
c3VicmVzb3VyY2VzIChAaW1wb3J0cykgaGF2ZSBsb2FkZWQuCisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjps
b2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpIVE1M
TGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp+SFRNTExp
bmtFbGVtZW50KTogTW9kaWZpZWQgdG8gY2FuY2VsIGFsbCBwZW5kaW5nIExvYWQgZXZlbnRzIG9u
IGRlc3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6IFJlZ2lzdGVyIGV2ZW50IGxpc3RlbmVycyBmb3IgTG9hZCBhbmQgRXJyb3IgZXZl
bnRzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZQorICAgICAgICBidWlsdCB3aXRoIGxpbmsgcHJl
ZmV0Y2ggc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0Q1NT
U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMpOiBBZGRlZDsgY2FsbGVkIGZyb20gRG9jdW1lbnQ6OmltcGxpY2l0
Q2xvc2UoKSB0bworICAgICAgICBlbnN1cmUgdGhhdCBhbGwgcGVuZGluZyBMb2FkIGV2ZW50cyBm
b3IgbGluayBlbGVtZW50cyBoYXZlIGJlZW4gZGlzcGF0Y2hlZCBiZWZvcmUgd2UgZmlyZSB0aGUg
TG9hZCBldmVudAorICAgICAgICBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQpOiBBZGRlZDsgY2FsbGVkIGJ5IEV2
ZW50U2VuZGVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpub3RpZnlMb2Fk
ZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKTogQWRkZWQuCisgICAgICAgICogaHRt
bC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTExp
bmtFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6SFRNTFN0eWxlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCk6IE1vZGlmaWVk
IHRvIGNhbmNlbCBhbGwgcGVuZGluZyBMb2FkIGV2ZW50cyBvbiBkZXN0cnVjdGlvbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogUmVnaXN0ZXIg
ZXZlbnQgbGlzdGVuZXJzIGZvciBMb2FkIGFuZCBFcnJvciBldmVudHMuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKTogQWRkZWQ7
IGNhbGxlZCBmcm9tIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkgdG8KKyAgICAgICAgZW5zdXJl
IHRoYXQgYWxsIHBlbmRpbmcgTG9hZCBldmVudHMgZm9yIGxpbmsgZWxlbWVudHMgaGF2ZSBiZWVu
IGRpc3BhdGNoZWQgYmVmb3JlIHdlIGZpcmUgdGhlIExvYWQgZXZlbnQKKyAgICAgICAgZm9yIHRo
ZSB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBl
bmRpbmdFdmVudCk6IEFkZGVkOyBjYWxsZWQgYnkgRXZlbnRTZW5kZXIuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3Vi
cmVzb3VyY2VzKTogQWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxTdHlsZUVsZW1lbnQpOgorCiAyMDEyLTAy
LTE2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
QW5vdGhlciBmaXggZm9yIHZpZXdwb3J0IHRlc3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1wb3J0UnVsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAxMDgwMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw4ICsxMDMsMTAgQEAgdm9pZCBD
U1NJbXBvcnRSdWxlOjpzZXRDU1NTdHlsZVNoZWV0KGNvbgogCiAgICAgbV9sb2FkaW5nID0gZmFs
c2U7CiAKLSAgICBpZiAocGFyZW50KQorICAgIGlmIChwYXJlbnQpIHsKKyAgICAgICAgcGFyZW50
LT5ub3RpZnlMb2FkZWRTaGVldChzaGVldCk7CiAgICAgICAgIHBhcmVudC0+Y2hlY2tMb2FkZWQo
KTsKKyAgICB9CiB9CiAKIGJvb2wgQ1NTSW1wb3J0UnVsZTo6aXNMb2FkaW5nKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDEwODAzMykKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1J1bGVM
aXN0LmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNjAsNiArNjEsNyBAQCBDU1NTdHlsZVNo
ZWV0OjpDU1NTdHlsZVNoZWV0KE5vZGUqIHBhcmVuCiAgICAgLCBtX3N0cmljdFBhcnNpbmcoZmFs
c2UpCiAgICAgLCBtX2lzVXNlclN0eWxlU2hlZXQoZmFsc2UpCiAgICAgLCBtX2hhc1N5bnRhY3Rp
Y2FsbHlWYWxpZENTU0hlYWRlcih0cnVlKQorICAgICwgbV9kaWRMb2FkRXJyb3JPY2N1cihmYWxz
ZSkKIHsKICAgICBBU1NFUlQoaXNBY2NlcHRhYmxlQ1NTU3R5bGVTaGVldFBhcmVudChwYXJlbnRO
b2RlKSk7CiB9CkBAIC03MCw2ICs3Miw3IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQo
Q1NTSW1wb3J0UnUKICAgICAsIG1fbG9hZENvbXBsZXRlZChmYWxzZSkKICAgICAsIG1fc3RyaWN0
UGFyc2luZyghb3duZXJSdWxlIHx8IG93bmVyUnVsZS0+dXNlU3RyaWN0UGFyc2luZygpKQogICAg
ICwgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKKyAgICAsIG1fZGlkTG9h
ZEVycm9yT2NjdXIoZmFsc2UpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBv
d25lclJ1bGUgPyBvd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CiAgICAgbV9pc1Vz
ZXJTdHlsZVNoZWV0ID0gcGFyZW50U2hlZXQgPyBwYXJlbnRTaGVldC0+aXNVc2VyU3R5bGVTaGVl
dCgpIDogZmFsc2U7CkBAIC0yMzcsNyArMjQwLDIxIEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tMb2FkZWQoKQogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBwcm90ZWN0b3IodGhpcyk7CiAg
ICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpCiAg
ICAgICAgIHN0eWxlU2hlZXQtPmNoZWNrTG9hZGVkKCk7Ci0gICAgbV9sb2FkQ29tcGxldGVkID0g
b3duZXJOb2RlKCkgPyBvd25lck5vZGUoKS0+c2hlZXRMb2FkZWQoKSA6IHRydWU7CisKKyAgICBS
ZWZQdHI8Tm9kZT4gb3duZXIgPSBvd25lck5vZGUoKTsKKyAgICBpZiAoIW93bmVyKQorICAgICAg
ICBtX2xvYWRDb21wbGV0ZWQgPSB0cnVlOworICAgIGVsc2UgeworICAgICAgICBtX2xvYWRDb21w
bGV0ZWQgPSBvd25lci0+c2hlZXRMb2FkZWQoKTsKKyAgICAgICAgaWYgKG1fbG9hZENvbXBsZXRl
ZCkKKyAgICAgICAgICAgIG93bmVyLT5ub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3Vi
cmVzb3VyY2VzKG1fZGlkTG9hZEVycm9yT2NjdXIpOworICAgIH0KK30KKwordm9pZCBDU1NTdHls
ZVNoZWV0Ojpub3RpZnlMb2FkZWRTaGVldChjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVl
dCkKK3sKKyAgICBBU1NFUlQoc2hlZXQpOworICAgIG1fZGlkTG9hZEVycm9yT2NjdXIgfD0gc2hl
ZXQtPmVycm9yT2NjdXJyZWQoKSB8fCBzaGVldC0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID4gNDAwOwogfQogCiB2b2lkIENTU1N0eWxlU2hlZXQ6OnN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVl
dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgJKHJldmlzaW9uIDEwODAzMykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENTU05hbWVzcGFjZTsK
IGNsYXNzIENTU1BhcnNlcjsKIGNsYXNzIENTU1J1bGU7CitjbGFzcyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBEb2N1bWVudDsKIApAQCAt
MTE0LDYgKzExNSw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2NoaWxkcmVuLnNpemUoKTsgfQogICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIHsgcmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkgPyBtX2NoaWxkcmVuLmF0KGluZGV4KS5nZXQo
KSA6IDA7IH0KIAorICAgIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5
bGVTaGVldCopOworCiBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoTm9kZSogb3duZXJOb2Rl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0KTsKICAgICBDU1NTdHlsZVNoZWV0KENTU0ltcG9ydFJ1bGUqIG93bmVy
UnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCk7CkBAIC0xMjgsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3RyaWN0UGFyc2luZyA6IDE7CiAgICAgYm9vbCBtX2lzVXNlclN0eWxlU2hlZXQgOiAx
OwogICAgIGJvb2wgbV9oYXNTeW50YWN0aWNhbGx5VmFsaWRDU1NIZWFkZXIgOiAxOworICAgIGJv
b2wgbV9kaWRMb2FkRXJyb3JPY2N1ciA6IDE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMDgwMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjY5LDYgKzIyNjksOSBAQCB2
b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQ
ZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygpOwogICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRp
bmdMb2FkRXZlbnRzKCk7CiAKKyAgICBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKTsKKyAgICBIVE1MU3R5bGVFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnRzKCk7CisKICNpZiBFTkFCTEUoU1ZHKQogICAgIC8vIFRvIGFsaWduIHRoZSBIVE1MIGxvYWQg
ZXZlbnQgYW5kIHRoZSBTVkdMb2FkIGV2ZW50IGZvciB0aGUgb3V0ZXJtb3N0IDxzdmc+IGVsZW1l
bnQsIGZpcmUgaXQgZnJvbQogICAgIC8vIGhlcmUsIGluc3RlYWQgb2YgZG9pbmcgaXQgZnJvbSBT
VkdFbGVtZW50OjpmaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiAoaWYgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD0iZmFsc2UiLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAxMDgwMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDcg
QEAgcHVibGljOgogCiAgICAgLy8gRm9yIDxsaW5rPiBhbmQgPHN0eWxlPiBlbGVtZW50cy4KICAg
ICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCAv
KiBlcnJvciBsb2FkaW5nIHN1YnJlc291cmNlICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
Ym9vbCBhdHRyaWJ1dGVTdHlsZURpcnR5KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhBdHRyaWJ1
dGVTdHlsZURpcnR5RmxhZyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKQEAgLTUxLDYgKzUyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAordHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0Vs
ZW1lbnQ+IExvYWRFdmVudFNlbmRlcjsKK3N0YXRpYyBMb2FkRXZlbnRTZW5kZXImIGxvYWRFdmVu
dFNlbmRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChMb2FkRXZlbnRTZW5kZXIsIHNo
YXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKKyAgICByZXR1
cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOworfQorCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpI
VE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCkBAIC01OSw2ICs2Nyw4IEBAIGlu
bGluZSBIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCgKICAgICAsIG1fbG9hZGluZyhm
YWxzZSkKICAgICAsIG1fY3JlYXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1f
aXNJblNoYWRvd1RyZWUoZmFsc2UpCisgICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAsIG1f
bG9hZGVkU2hlZXQoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdTaGVldFR5cGUoTm9uZSkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShsaW5rVGFnKSk7CkBAIC04MSw2ICs5MSw4IEBAIEhUTUxMaW5r
RWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKKwor
ICAgIGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwogfQogCiB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6c2V0RGlzYWJsZWRTdGF0ZShib29sIGRpc2FibGVkKQpAQCAtMTQxLDEyICsx
NTMsMTAgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dAogICAgICAg
ICBzZXREaXNhYmxlZFN0YXRlKCFhdHRyLT5pc051bGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0jaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZXJy
b3JBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSNl
bmRpZgogICAgIGVsc2UgewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0ciAm
JiBtX3NoZWV0KQogICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7
CkBAIC0zMzAsNiArMzQwLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hl
ZXQoYwogICAgIG1fc2hlZXQtPnNldE1lZGlhKG1lZGlhLmdldCgpKTsKIAogICAgIG1fbG9hZGlu
ZyA9IGZhbHNlOworICAgIG1fc2hlZXQtPm5vdGlmeUxvYWRlZFNoZWV0KHNoZWV0KTsKICAgICBt
X3NoZWV0LT5jaGVja0xvYWRlZCgpOwogfQogCkBAIC0zNjEsNiArMzcyLDI5IEBAIGJvb2wgSFRN
TExpbmtFbGVtZW50OjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCit7CisgICAgbG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMb2FkRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKQoreworICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09ICZs
b2FkRXZlbnRTZW5kZXIoKSk7CisgICAgaWYgKG1fbG9hZGVkU2hlZXQpCisgICAgICAgIGxpbmtM
b2FkZWQoKTsKKyAgICBlbHNlCisgICAgICAgIGxpbmtMb2FkaW5nRXJyb3JlZCgpOworfQorCit2
b2lkIEhUTUxMaW5rRWxlbWVudDo6bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJl
c291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpCit7CisgICAgaWYgKG1fZmlyZWRMb2FkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9sb2FkZWRTaGVldCA9ICFlcnJvck9jY3VycmVkOworICAgIGxv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIG1fZmlyZWRMb2Fk
ID0gdHJ1ZTsKK30KKwogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnN0YXJ0TG9hZGluZ0R5bmFtaWNT
aGVldCgpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXBsZSBibG9ja2luZyBzaGVl
dHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHJldmlzaW9uIDEw
ODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDggKzM3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
SFRNTExpbmtFbGVtZW50OwogY2xhc3MgS1VSTDsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xh
c3MgRXZlbnRTZW5kZXI7CisKIGNsYXNzIEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxl
bWVudCwgcHVibGljIENhY2hlZFN0eWxlU2hlZXRDbGllbnQsIHB1YmxpYyBMaW5rTG9hZGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MTGlua0VsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CkBAIC02MCw2ICs2Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0
cmluZyYpOwogICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCisgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+Kik7
CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsK
IApAQCAtNzMsNiArNzksNyBAQCBwcml2YXRlOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhy
ZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2Fj
aGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVz
b3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGlu
Z0R5bmFtaWNTaGVldCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkZWQoKTsKQEAgLTEx
OSw3ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wgbV9j
cmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5TaGFkb3dUcmVlOwotICAgIAorICAgIGJv
b2wgbV9maXJlZExvYWQ7CisgICAgYm9vbCBtX2xvYWRlZFNoZWV0OworCiAgICAgUGVuZGluZ1No
ZWV0VHlwZSBtX3BlbmRpbmdTaGVldFR5cGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDggQEAKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTM1LDkgKzM3LDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAordHlwZWRlZiBFdmVudFNl
bmRlcjxIVE1MU3R5bGVFbGVtZW50PiBMb2FkRXZlbnRTZW5kZXI7CitzdGF0aWMgTG9hZEV2ZW50
U2VuZGVyJiBsb2FkRXZlbnRTZW5kZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTG9h
ZEV2ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2
ZW50KSk7CisgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKK30KKwogaW5saW5lIEhU
TUxTdHlsZUVsZW1lbnQ6OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU3R5bGVFbGVtZW50KGRvY3VtZW50
LCBjcmVhdGVkQnlQYXJzZXIpCisgICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAsIG1fbG9h
ZGVkU2hlZXQoZmFsc2UpCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICAgICAsIG1faXNSZWdp
c3RlcmVkV2l0aFNjb3BpbmdOb2RlKGZhbHNlKQogI2VuZGlmCkBAIC01MCw2ICs2MSw4IEBAIEhU
TUxTdHlsZUVsZW1lbnQ6On5IVE1MU3R5bGVFbGVtZW50KCkKICAgICAvLyBEdXJpbmcgdGVhci1k
b3duLCB3aWxsUmVtb3ZlIGlzbid0IGNhbGxlZCwgc28gbV9pc1JlZ2lzdGVyZWRXaXRoU2NvcGlu
Z05vZGUgbWF5IHN0aWxsIGJlIHNldCBoZXJlLgogICAgIC8vIFRoZXJlZm9yZSB3ZSBjYW4ndCBB
U1NFUlQoIW1faXNSZWdpc3RlcmVkV2l0aFNjb3BpbmdOb2RlKS4KICAgICBTdHlsZUVsZW1lbnQ6
OmNsZWFyRG9jdW1lbnREYXRhKGRvY3VtZW50KCksIHRoaXMpOworCisgICAgbG9hZEV2ZW50U2Vu
ZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFN0eWxlRWxlbWVu
dD4gSFRNTFN0eWxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCkBAIC02MSw2ICs3NCwx
MCBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0CiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgbV9zaGVldC0+
c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9u
bG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Cisg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzY29wZWRBdHRyKSB7CiAgICAgICAgIGlmICgh
YXR0ci0+aXNOdWxsKCkgJiYgIW1faXNSZWdpc3RlcmVkV2l0aFNjb3BpbmdOb2RlICYmIGluRG9j
dW1lbnQoKSkKQEAgLTIwNSw2ICsyMjIsMjkgQEAgRWxlbWVudCogSFRNTFN0eWxlRWxlbWVudDo6
c2NvcGluZ0VsZW1lbgogfQogI2VuZGlmIC8vIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAKK3ZvaWQg
SFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCit7CisgICAgbG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Cit9CisKK3ZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTG9hZEV2ZW50U2VuZGVyKiBldmVudFNl
bmRlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAm
bG9hZEV2ZW50U2VuZGVyKCkpOworICAgIGlmIChtX2xvYWRlZFNoZWV0KQorICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxTdHls
ZUVsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9v
bCBlcnJvck9jY3VycmVkKQoreworICAgIGlmIChtX2ZpcmVkTG9hZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fbG9hZGVkU2hlZXQgPSAhZXJyb3JPY2N1cnJlZDsKKyAgICBsb2FkRXZlbnRTZW5k
ZXIoKS5kaXNwYXRjaEV2ZW50U29vbih0aGlzKTsKKyAgICBtX2ZpcmVkTG9hZCA9IHRydWU7Cit9
CisKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAogeyAgICAKICAgICBIVE1MRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3R5bGVFbGVtZW50LmgJKHJldmlzaW9uIDEwODAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN0eWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxTdHlsZUVsZW1lbnQ7CiBjbGFzcyBT
dHlsZVNoZWV0OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlcjsKKwog
Y2xhc3MgSFRNTFN0eWxlRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBTdHls
ZUVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CkBAIC00OCw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGRpc2FibGVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXREaXNhYmxlZChib29sKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnQoRXZlbnRTZW5kZXI8SFRNTFN0eWxlRWxlbWVudD4qKTsKKyAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisKIHByaXZhdGU6CiAgICAgSFRNTFN0
eWxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CiAKQEAgLTY0LDYgKzcwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBTdHlsZUVsZW1lbnQ6OmlzTG9hZGluZygpOyB9
CiAgICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkgeyByZXR1cm4gU3R5bGVFbGVtZW50Ojpz
aGVldExvYWRlZChkb2N1bWVudCgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRT
aGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgU3R5bGVFbGVtZW50Ojpz
dGFydExvYWRpbmdEeW5hbWljU2hlZXQoZG9jdW1lbnQoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsK
QEAgLTc0LDYgKzgxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyV2l0aFNjb3BpbmdO
b2RlKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCk7CiAKKyAgICBib29s
IG1fZmlyZWRMb2FkOworICAgIGJvb2wgbV9sb2FkZWRTaGVldDsKKwogICAgIGJvb2wgbV9pc1Jl
Z2lzdGVyZWRXaXRoU2NvcGluZ05vZGU7CiB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDgwMzMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MSBA
QAorMjAxMi0wMi0xNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgbGluayBlbGVtZW50IGZvciBDU1Mgc3R5bGVzaGVldCBzaG91bGQgZW1pdCBsb2FkIGV2ZW50
IHdoZW4gc2hlZXQgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25l
cnJvci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9y
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1z
dHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1s
b2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLXN0eWxlc2hl
ZXQtd2l0aC1pbXBvcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWltcG9ydC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2Fk
Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9saW5rLW9ubG9hZDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmVycm9yLWhhbmRsZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJv
Z3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQt
bGluay13aXRoLW9ubG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1v
bmxvYWQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQ29tcHV0ZWRDb2xvck9mRWxlbWVudEJlRXF1YWxUb1JHQlN0cmluZyk6CisgICAgICAg
IChjcmVhdGVMaW5rRWxlbWVudFdpdGhTdHlsZXNoZWV0KToKKyAgICAgICAgKGNyZWF0ZVN0eWxl
RWxlbWVudFdpdGhTdHJpbmcpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKHRlc3RQYXNzZWQp
OgorICAgICAgICAodGVzdEZhaWxlZCk6CisgICAgICAgICh0ZXN0UGFzc2VkQW5kTm90aWZ5RG9u
ZSk6CisgICAgICAgICh0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSk6CisgICAgICAgICh0ZXN0Rmlu
aXNoZWQpOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5
bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzczogQWRkZWQu
CisgICAgICAgICgjdGVzdCk6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jl
c291cmNlcy9zdHlsZXNoZWV0LXdpdGgtaW1wb3J0LmNzczogQWRkZWQuCisgICAgICAgICgjdGVz
dCk6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNo
ZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC5jc3M6IEFkZGVkLgorICAgICAgICAoI3Rlc3Qp
OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVl
dC5jc3M6IEFkZGVkLgorICAgICAgICAoI3Rlc3QpOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxT
dHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRs
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5bGVFbGVt
ZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGlj
YWxseS1hZGQtc3R5bGUtd2l0aC1vbmxvYWQtaGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQt
c3R5bGUtd2l0aC1vbmxvYWQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3Itd2l0aC1leGlz
dGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50
LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9z
dHlsZS1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQv
c3R5bGUtb25sb2FkMi5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0xNiAgTm9lbCBHb3Jkb24gIDxu
b2VsLmdvcmRvbkBnbWFpbC5jb20+CiBbY2hyb21pdW1dIFJlYmFzZWxpbmUgSlBFRyBpbWFnZSBy
ZXN1bHRzIGFmdGVyIHIxMDczODkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4NDU0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmVycm9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9u
ZXJyb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVz
dHMgdGhhdCBhbiBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCB3
aGVuIGl0IGZhaWxzIHRvIGxvYWQgYSBub24tZXhpc3RlbnQgc3R5bGUgc2hlZXQuIFRoaXMgdGVz
dCBQQVNTRUQgaWYgc2VlIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBp
dCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgRXJyb3IgZXZlbnQuCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4
aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLXN0eWxl
c2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9y
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorc3R5bGVzaGVldC13
aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzcyBoYXMgTUlNRSB0eXBlIHRl
eHQvY3NzCitzdHlsZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3Rz
IHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hl
biBpdHMgc3R5bGUgc2hlZXQgZmFpbHMgdG8gbG9hZCBhbiBAaW1wb3J0J2VkIHN0eWxlIHNoZWV0
IChyZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbm90aGVyIEBp
bXBvcnQnZWQgc3R5bGUgc2hlZXQpLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5
IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVk
IEVycm9yIGV2ZW50LgorUEFTUyAjdGVzdCBjb2xvciB3YXMgcmdiKDAsIDAsIDI1NSkuCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5
bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJv
ci1zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5r
LW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3Nl
ZCgiRmlyZWQgRXJyb3IgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRC
ZUVxdWFsVG9SR0JTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigw
LCAwLCAyNTUpIiAvKiBibHVlICovKTsgLy8gaS5lLiBzdHlsZXNoZWV0LmNzcyBzdWNjZXNzZnVs
bHkgbG9hZGVkCisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5v
bi1leGlzdGVudC1pbXBvcnQuY3NzIiBvbmxvYWQ9InRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdG
aXJlZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVudC4nKSIgb25lcnJv
cj0icGFzc2VkKCkiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYW4gRXJy
b3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hlbiBpdHMgc3R5bGUg
c2hlZXQgZmFpbHMgdG8gbG9hZCBhbiBAaW1wb3J0J2VkIHN0eWxlIHNoZWV0IChyZWdhcmRsZXNz
IG9mIHdoZXRoZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbm90aGVyIEBpbXBvcnQnZWQgc3R5
bGUgc2hlZXQpLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2Fn
ZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4KKzxoMSBpZD0idGVzdCI+PCEtLSBU
ZXN0IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25lcnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25lcnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitzdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0
ZW50LWltcG9ydC5jc3MgaGFzIE1JTUUgdHlwZSB0ZXh0L2NzcworVGhpcyB0ZXN0cyB0aGF0IGFu
IEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IHdoZW4gaXRzIHN0
eWxlIHNoZWV0IGZhaWxzIHRvIGxvYWQgYW4gQGltcG9ydCdlZCBzdHlsZSBzaGVldC4gVGhpcyB0
ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1lc3NhZ2VzIGJlbG93LiBPdGhlcndp
c2UsIGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBFcnJvciBldmVudC4KK1BBU1MgI3Rlc3QgY29s
b3Igd2FzIHJnYigyNTUsIDI1NSwgMCkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1p
bXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
bGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3NlZCgiRmlyZWQg
RXJyb3IgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9S
R0JTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigyNTUsIDI1NSwg
MCkiIC8qIHllbGxvdyAqLyk7CisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4
aXN0ZW50LWltcG9ydC5jc3MiIG9ubG9hZD0idGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoJ0ZpcmVk
IExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9yIGV2ZW50LicpIiBvbmVycm9yPSJw
YXNzZWQoKSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhbiBFcnJvciBl
dmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCB3aGVuIGl0cyBzdHlsZSBzaGVl
dCBmYWlscyB0byBsb2FkIGFuIEBpbXBvcnQnZWQgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNT
RUQgaWYgdGhlcmUgYXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBG
QUlMRUQuPC9wPgorPGgxIGlkPSJ0ZXN0Ij48IS0tIFRlc3QgZWxlbWVudCAtLT48L2gxPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xp
bmstb25lcnJvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvbm9uLWV4aXN0ZW50LXN0eWxlc2hlZXQuY3NzIiBvbmxvYWQ9InRlc3RGYWlsZWRBbmRO
b3RpZnlEb25lKCdGaXJlZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVu
dC4nKSIgb25lcnJvcj0idGVzdFBhc3NlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIEVycm9yIGV2ZW50
LicpIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGFuIEVycm9yIGV2ZW50
IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IHdoZW4gaXQgZmFpbHMgdG8gbG9hZCBh
IG5vbi1leGlzdGVudCBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiBzZWUgeW91IHNl
ZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlk
PSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstb25sb2FkMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNSBAQAorc3R5bGVzaGVldC5jc3MgaGFzIE1JTUUgdHlwZSB0ZXh0L2NzcworVGhpcyB0ZXN0
cyB0aGF0IHdlIGZpcmUgdHdvIExvYWQgZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1MIExp
bmsgZWxlbWVudHMgYW5kIHRoYXQgYm90aCBldmVudHMgYXJlIGZpcmVkIGJlZm9yZSB0aGUgTG9h
ZCBldmVudCBmb3IgdGhlIHdpbmRvdyBpcyBkaXNwYXRjaGVkLiBUaGlzIHRlc3QgUEFTU0VEIGlm
IHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BB
U1MgRmlyZWQgMiBMb2FkIGV2ZW50cy4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L2xpbmstb25sb2FkMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgbnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPSAwOwordmFy
IGV4cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPSAyOworCitmdW5jdGlvbiBjaGVja0lm
RG9uZShlbGVtZW50TmFtZSkKK3sKKyAgKytudW1iZXJPZkZpcmVkTG9hZEV2ZW50czsKKworICBp
ZiAobnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPCBleHBlY3RlZE51bWJlck9mRmlyZWRMb2FkRXZl
bnRzICYmIGVsZW1lbnROYW1lID09PSAnYm9keScpIHsKKyAgICBsb2coIkZBSUwgRmlyZWQgd2lu
ZG93IExvYWQgZXZlbnQgYmVmb3JlIGxpbmsgTG9hZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlz
aGVkKCk7CisgIH0KKyAgaWYgKG51bWJlck9mRmlyZWRMb2FkRXZlbnRzID09PSBleHBlY3RlZE51
bWJlck9mRmlyZWRMb2FkRXZlbnRzKSB7CisgICAgbG9nKCJQQVNTIEZpcmVkICIgKyBudW1iZXJP
ZkZpcmVkTG9hZEV2ZW50cyArICIgTG9hZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7
CisgIH0KK30KKzwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJj
ZXMvc3R5bGVzaGVldC5jc3MiIG9ubG9hZD0iY2hlY2tJZkRvbmUoJ2xpbmsxJykiPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiIG9ubG9hZD0i
Y2hlY2tJZkRvbmUoJ2xpbmsyJykiPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjaGVja0lmRG9u
ZSgnYm9keScpIj4KKzxwPlRoaXMgdGVzdHMgdGhhdCB3ZSBmaXJlIHR3byBMb2FkIGV2ZW50cyBv
biBhIHBhZ2Ugd2l0aCB0d28gSFRNTCBMaW5rIGVsZW1lbnRzIGFuZCB0aGF0IGJvdGggZXZlbnRz
IGFyZSBmaXJlZCBiZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cgaXMgZGlzcGF0
Y2hlZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90
aGVyd2lzZSwgaXQgRkFJTEVELgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdlLWxv
YWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUg
dGV4dC9jc3MKK1RoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgZm9yIGFuIEhUTUwgTGluayBl
bGVtZW50IGNvbWVzIGJlZm9yZSB0aGUgTG9hZCBldmVudCBmb3IgdGhlIHdpbmRvdy4gVGhpcyB0
ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQg
RkFJTEVELgorCitQQVNTIEZpcmVkIExvYWQgZXZlbnQgYXQgbGluay4KK1BBU1MgRmlyZWQgTG9h
ZCBldmVudCBhdCBib2R5LgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFn
ZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KK3ZhciBleHBlY3RlZExvYWRFdmVudFRhcmdldHMgPSBbImxpbmsiLCAiYm9keSJdOworCitm
dW5jdGlvbiBkaWRSZWNlaXZlTG9hZEV2ZW50KGVsZW1lbnROYW1lKQoreworICB2YXIgZXhwZWN0
ZWRUYXJnZXQgPSBleHBlY3RlZExvYWRFdmVudFRhcmdldHMuc2hpZnQoKTsKKyAgaWYgKGV4cGVj
dGVkVGFyZ2V0ID09PSBlbGVtZW50TmFtZSkKKyAgICB0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgi
RmlyZWQgTG9hZCBldmVudCBhdCAiICsgZWxlbWVudE5hbWUgKyAiLiIpOworICBlbHNlIHsKKyAg
ICAvLyBXZSBkb24ndCBjYWxsIHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCkgb3IgdGVzdEZpbmlz
aGVkKCkgYmVjYXVzZSB3ZSB3YW50IHRvIGxvZyBhZGRpdGlvbmFsIExvYWQgZXZlbnRzIGFzIGl0
CisgICAgLy8gbWF5IGhlbHAgdG93YXJkcyBkZWJ1Z2dpbmcgdGhpcyB0ZXN0IGNhc2UuCisgICAg
dGVzdEZhaWxlZCgiRmlyZWQgTG9hZCBldmVudCBhdCAiICsgZWxlbWVudE5hbWUgKyAiLCBidXQg
c2hvdWxkIGhhdmUgZmlyZWQgaXQgYXQgIiArIGV4cGVjdGVkVGFyZ2V0ICsgIi4iKTsKKyAgfQor
fQorPC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHls
ZXNoZWV0LmNzcyIgb25sb2FkPSJkaWRSZWNlaXZlTG9hZEV2ZW50KCdsaW5rJykiPgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJkaWRSZWNlaXZlTG9hZEV2ZW50KCdib2R5JykiPgorPHA+VGhpcyB0
ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBmb3IgYW4gSFRNTCBMaW5rIGVsZW1lbnQgY29tZXMgYmVm
b3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlv
dSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvbGluay1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUgQEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1RoaXMgdGVz
dHMgdGhhdCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgb25j
ZSBpdCBsb2FkcyBhIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhl
IHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgTG9h
ZCBldmVudC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xp
bmstb25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHls
ZXNoZWV0LXdpdGgtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNoZWV0LXdpdGgt
aW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitzdHlsZXNo
ZWV0LXdpdGgtaW1wb3J0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitzdHlsZXNoZWV0LmNz
cyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlz
IGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IG9uY2UgYWxsIEBpbXBvcnQnZWQgc3R5bGVz
aGVldHMgYXJlIGxvYWRlZCBieSBhIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRo
ZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgor
CitQQVNTIEZpcmVkIExvYWQgZXZlbnQuCitQQVNTICN0ZXN0IGNvbG9yIHdhcyByZ2IoMCwgMCwg
MjU1KS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRo
LWltcG9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstb25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBjaGVja1Jlc3VsdCgpCit7CisgIHRlc3RQYXNzZWQoIkZpcmVk
IExvYWQgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9S
R0JTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigwLCAwLCAyNTUp
IiAvKiBibHVlICovKTsKKyAgdGVzdEZpbmlzaGVkKCk7Cit9Cis8L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1pbXBvcnQuY3Nz
IiBvbmxvYWQ9ImNoZWNrUmVzdWx0KCkiIG9uZXJyb3I9InRlc3RGYWlsZWQoJ0ZpcmVkIEVycm9y
IGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBMb2FkIGV2ZW50LicpIj4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExp
bmsgZWxlbWVudCBvbmNlIGFsbCBAaW1wb3J0J2VkIHN0eWxlc2hlZXRzIGFyZSBsb2FkZWQgYnkg
YSBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1l
c3NhZ2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8aDEgaWQ9InRlc3QiPjwh
LS0gVGVzdCBlbGVtZW50IC0tPjwvaDE+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9s
aW5rLW9ubG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9saW5rLW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIgb25sb2FkPSJ0
ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgnRmlyZWQgTG9hZCBldmVudC4nKSIgb25lcnJvcj0idGVz
dEZhaWxlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIEVycm9yIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJl
ZCBMb2FkIGV2ZW50LicpIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEg
TG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCBvbmNlIGl0IGxvYWRz
IGEgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNT
IGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEg
TG9hZCBldmVudCBpcyBmaXJlZCBhdCBhIHByb2dyYW1tYXRpY2FsbHkgaW5zZXJ0ZWQgSFRNTCBM
aW5rIGVsZW1lbnQgd2hvc2UgQGltcG9ydCBzdHlsZSBzaGVldCBmYWlsZWQgdG8gbG9hZC4gVGhp
cyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwg
aXQgRkFJTEVELgorCitQQVNTIEZpcmVkIEVycm9yIGV2ZW50LgorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRo
LW9uZXJyb3ItaGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1o
YW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2
ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBpbnNlcnRlZCBIVE1MIExpbmsgZWxl
bWVudCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3Qg
UEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlM
RUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgordmFyIGxpbmsgPSBj
cmVhdGVMaW5rRWxlbWVudFdpdGhTdHlsZXNoZWV0KCJyZXNvdXJjZXMvbm9uLWV4aXN0ZW50LXN0
eWxlc2hlZXQuY3NzIik7CitsaW5rLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxlZEFu
ZE5vdGlmeURvbmUoJ0ZpcmVkIExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9yIGV2
ZW50LicpIH07CitsaW5rLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWRBbmROb3Rp
ZnlEb25lKCdGaXJlZCBFcnJvciBldmVudC4nKSB9OworZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGls
ZChsaW5rKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1v
bmxvYWQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxv
YWQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9ubG9h
ZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitzdHls
ZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQgYSBMb2Fk
IGV2ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBpbnNlcnRlZCBIVE1MIExpbmsg
ZWxlbWVudCBvbmNlIGl0IGxvYWRzIGl0cyBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBp
ZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQ
QVNTIEZpcmVkIExvYWQgZXZlbnQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2FkLWhhbmRsZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1h
dGljYWxseS1hZGQtbGluay13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYSBw
cm9ncmFtbWF0aWNhbGx5IGluc2VydGVkIEhUTUwgTGluayBlbGVtZW50IG9uY2UgaXQgbG9hZHMg
aXRzIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFT
UyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+Cis8c2NyaXB0PgordmFyIGxpbmsgPSBjcmVhdGVMaW5rRWxlbWVudFdpdGhTdHlsZXNoZWV0
KCJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiKTsKK2xpbmsub25sb2FkID0gZnVuY3Rpb24gKCkg
eyB0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgnRmlyZWQgTG9hZCBldmVudC4nKSB9OworbGluay5v
bmVycm9yID0gZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSgnRmlyZWQgRXJy
b3IgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIExvYWQgZXZlbnQuJykgfTsKK2RvY3VtZW50Lmhl
YWQuYXBwZW5kQ2hpbGQobGluayk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2Fk
LXV0aWxpdGllcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9h
ZC11dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBl
cygpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JTdHJpbmcoZWxlbWVu
dCwgZXhwZWN0ZWRDb2xvcikKK3sKKyAgdmFyIGVsZW1lbnROYW1lID0gIiMiICsgZWxlbWVudC5p
ZCB8fCBlbGVtZW50LnRhZ05hbWU7CisgIHZhciBhY3R1YWxDb2xvciA9IHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmNvbG9yOworICBpZiAoYWN0dWFsQ29sb3IgPT09IGV4
cGVjdGVkQ29sb3IpCisgICAgbG9nKCJQQVNTICIgKyBlbGVtZW50TmFtZSArICIgY29sb3Igd2Fz
ICIgKyBleHBlY3RlZENvbG9yICsgIi4iKTsKKyAgZWxzZQorICAgIGxvZygiRkFJTCAiICsgZWxl
bWVudE5hbWUgKyAiIGNvbG9yIHNob3VsZCBiZSAiICsgZXhwZWN0ZWRDb2xvciArICIuIFdhcyAi
ICsgYWN0dWFsQ29sb3IgKyAiLiIpOworfQorCitmdW5jdGlvbiBjcmVhdGVMaW5rRWxlbWVudFdp
dGhTdHlsZXNoZWV0KHN0eWxlc2hlZXRVUkwpCit7CisgIHZhciBsaW5rID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGluayIpOworICBsaW5rLnJlbCA9ICJzdHlsZXNoZWV0IjsKKyAgbGluay5o
cmVmID0gc3R5bGVzaGVldFVSTDsKKyAgcmV0dXJuIGxpbms7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZVN0eWxlRWxlbWVudFdpdGhTdHJpbmcoc3R5bGVzaGVldERhdGEpCit7CisgIHZhciBzdHlsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgIHN0eWxlLnRleHRDb250ZW50ID0g
c3R5bGVzaGVldERhdGE7CisgIHJldHVybiBzdHlsZTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKK30KKworZnVuY3Rpb24g
dGVzdFBhc3NlZChtZXNzYWdlKQoreworICBsb2coIlBBU1MgIiArIG1lc3NhZ2UpOworfQorCitm
dW5jdGlvbiB0ZXN0RmFpbGVkKG1lc3NhZ2UpCit7CisgIGxvZygiRkFJTCAiICsgbWVzc2FnZSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWRBbmROb3RpZnlEb25lKG1lc3NhZ2UpCit7CisgIHRl
c3RQYXNzZWQobWVzc2FnZSk7CisgIHRlc3RGaW5pc2hlZCgpOworfQorCitmdW5jdGlvbiB0ZXN0
RmFpbGVkQW5kTm90aWZ5RG9uZShtZXNzYWdlKQoreworICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOwor
ICB0ZXN0RmluaXNoZWQoKTsKK30KKworZnVuY3Rpb24gdGVzdEZpbmlzaGVkKCkKK3sKKyAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWlt
cG9ydC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1p
bXBvcnQuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVu
dC1pbXBvcnQuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0BpbXBvcnQgInN0eWxl
c2hlZXQuY3NzIjsKK0BpbXBvcnQgIm5vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNzcyI7CisKKyN0
ZXN0IHsgY29sb3I6IHllbGxvdzsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtaW1wb3J0LmNzcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxl
c2hlZXQtd2l0aC1pbXBvcnQuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtaW1wb3J0LmNzcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitAaW1wb3J0ICJzdHlsZXNoZWV0LmNzcyI7CisK
KyN0ZXN0IHsgY29sb3I6IHllbGxvdzsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9y
dC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC5jc3MJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2Vz
L3N0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzIEBACitAaW1wb3J0ICJub24tZXhpc3RlbnQtc3R5bGVzaGVldC5jc3MiOworCisj
dGVzdCB7IGNvbG9yOiB5ZWxsb3c7IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNv
dXJjZXMvc3R5bGVzaGVldC5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyN0ZXN0IHsg
Y29sb3I6IGJsdWUgIWltcG9ydGFudDsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFu
ZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFu
ZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25lcnJvci1o
YW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRl
c3RzIHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9ncmFtbWF0aWNhbGx5IGlu
c2VydGVkIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxl
ZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxv
dy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgRXJyb3IgZXZlbnQuCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxs
eS1hZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0
eWxlLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdp
dGgtb25lcnJvci1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0Vs
ZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQg
YSBwcm9ncmFtbWF0aWNhbGx5IGluc2VydGVkIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBAaW1w
b3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBz
ZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgordmFyIHN0eWxlID0gY3JlYXRlU3R5bGVFbGVt
ZW50V2l0aFN0cmluZygnQGltcG9ydCAicmVzb3VyY2VzL25vbi1leGlzdGVudC1zdHlsZXNoZWV0
LmNzcyI7Jyk7CitzdHlsZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHRlc3RGYWlsZWRBbmROb3Rp
ZnlEb25lKCdGaXJlZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVudC4n
KSB9Oworc3R5bGUub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgdGVzdFBhc3NlZEFuZE5vdGlmeURv
bmUoJ0ZpcmVkIEVycm9yIGV2ZW50LicpIH07Citkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0
eWxlKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9u
bG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25s
b2FkLWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9u
bG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitU
aGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxs
eSBpbnNlcnRlZCBIVE1MIFN0eWxlIGVsZW1lbnQgb25jZSBpdCBsb2FkcyBpdHMgc3R5bGUgc2hl
ZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhl
cndpc2UsIGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBMb2FkIGV2ZW50LgorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0
eWxlLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgt
b25sb2FkLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmxvYWQt
aGFuZGxlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vSFRNTExpbmtFbGVtZW50L3Jlc291
cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhIHByb2dyYW1tYXRp
Y2FsbHkgaW5zZXJ0ZWQgSFRNTCBTdHlsZSBlbGVtZW50IG9uY2UgaXQgbG9hZHMgaXRzIHN0eWxl
IHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4g
T3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2Ny
aXB0PgordmFyIHN0eWxlID0gY3JlYXRlU3R5bGVFbGVtZW50V2l0aFN0cmluZygiIik7CitzdHls
ZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWRBbmROb3RpZnlEb25lKCdGaXJlZCBM
b2FkIGV2ZW50LicpIH07CitzdHlsZS5vbmVycm9yID0gZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVk
QW5kTm90aWZ5RG9uZSgnRmlyZWQgRXJyb3IgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIExvYWQg
ZXZlbnQuJykgfTsKK2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVF
bGVtZW50L3N0eWxlLW9uZXJyb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0
eWxlLW9uZXJyb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1Ro
aXMgdGVzdHMgdGhhdCBhIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxl
bWVudCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3Qg
UEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwg
aXQgRkFJTEVELgorCitQQVNTIEVycm9yIGV2ZW50IGZpcmVkLgorUEFTUyAjdGVzdCBjb2xvciB3
YXMgcmdiKDI1NSwgMjU1LCAwKS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0
eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1p
bXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3Rl
bnQtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24t
ZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
CitzdHlsZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQg
YSBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgd2hvc2UgQGlt
cG9ydCBzdHlsZSBzaGVldCBmYWlsZWQgdG8gbG9hZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVy
ZSBhcmUgb25seSBQQVNTIG1lc3NhZ2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKwor
UEFTUyBFcnJvciBldmVudCBmaXJlZC4KK1BBU1MgI3Rlc3QgY29sb3Igd2FzIHJnYigwLCAwLCAy
NTUpLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxl
LW9uZXJyb3Itd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25l
cnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJy
b3Itd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBjaGVja1Jlc3VsdCgpCit7CisgIHRl
c3RQYXNzZWQoIkVycm9yIGV2ZW50IGZpcmVkLiIpOworICBzaG91bGRDb21wdXRlZENvbG9yT2ZF
bGVtZW50QmVFcXVhbFRvUkdCU3RyaW5nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iiks
ICJyZ2IoMCwgMCwgMjU1KSIgLyogYmx1ZSAqLyk7IC8vIGkuZS4gc3R5bGVzaGVldC5jc3Mgc3Vj
Y2Vzc2Z1bGx5IGxvYWRlZAorICB0ZXN0RmluaXNoZWQoKTsKK30KKzwvc2NyaXB0PgorPHN0eWxl
IG9ubG9hZD0idGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoJ0xvYWQgZXZlbnQgZmlyZWQuIFNob3Vs
ZCBoYXZlIGZpcmVkIEVycm9yIGV2ZW50LicpIiBvbmVycm9yPSJjaGVja1Jlc3VsdCgpIj4KK0Bp
bXBvcnQgIi4uL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworQGlt
cG9ydCAicmVzb3VyY2VzL25vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNzcyI7CisjdGVzdCB7IGNv
bG9yOiB5ZWxsb3c7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMg
dGhhdCBhIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9z
ZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlm
IHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVE
LjwvcD4KKzxoMSBpZD0idGVzdCI+PCEtLSBUZXN0IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0
eWxlLW9uZXJyb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL0hUTUxMaW5rRWxlbWVudC9y
ZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3NlZCgiRXJyb3IgZXZlbnQgZmlyZWQuIik7Cisg
IHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JTdHJpbmcoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigyNTUsIDI1NSwgMCkiIC8qIHllbGxvdyAqLyk7
CisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8c3R5bGUgb25sb2FkPSJ0ZXN0RmFp
bGVkQW5kTm90aWZ5RG9uZSgnTG9hZCBldmVudCBmaXJlZC4gU2hvdWxkIGhhdmUgZmlyZWQgRXJy
b3IgZXZlbnQuJykiIG9uZXJyb3I9InBhc3NlZCgpIj4KK0BpbXBvcnQgInJlc291cmNlcy9ub24t
ZXhpc3RlbnQtc3R5bGVzaGVldC5jc3MiOworI3Rlc3QgeyBjb2xvcjogeWVsbG93OyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBFcnJvciBldmVudCBp
cyBmaXJlZCBhdCBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgd2hvc2UgQGltcG9ydCBzdHlsZSBzaGVl
dCBmYWlsZWQgdG8gbG9hZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNT
IG1lc3NhZ2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8aDEgaWQ9InRlc3Qi
PjwhLS0gVGVzdCBlbGVtZW50IC0tPjwvaDE+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1l
bnQvc3R5bGUtb25sb2FkMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUt
b25sb2FkMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0
ZXN0cyB0aGF0IHdlIGZpcmUgdHdvIExvYWQgZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1M
IFN0eWxlIGVsZW1lbnRzIGFuZCB0aGF0IGJvdGggZXZlbnRzIGFyZSBmaXJlZCBiZWZvcmUgdGhl
IExvYWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cgaXMgZGlzcGF0Y2hlZC4gVGhpcyB0ZXN0IFBBU1NF
RCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgor
CitQQVNTIEZpcmVkIDIgTG9hZCBldmVudHMuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1v
bmxvYWQyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0VsZW1lbnQvcmVzb3Vy
Y2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBudW1i
ZXJPZkZpcmVkTG9hZEV2ZW50cyA9IDA7Cit2YXIgZXhwZWN0ZWROdW1iZXJPZkZpcmVkTG9hZEV2
ZW50cyA9IDI7CisKK2Z1bmN0aW9uIGNoZWNrSWZEb25lKGVsZW1lbnROYW1lKQoreworICArK251
bWJlck9mRmlyZWRMb2FkRXZlbnRzOworCisgIGlmIChudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyA8
IGV4cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgJiYgZWxlbWVudE5hbWUgPT09ICdib2R5
JykgeworICAgIGxvZygiRkFJTCBGaXJlZCB3aW5kb3cgTG9hZCBldmVudCBiZWZvcmUgc3R5bGUg
TG9hZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7CisgIH0KKyAgaWYgKG51bWJlck9m
RmlyZWRMb2FkRXZlbnRzID09PSBleHBlY3RlZE51bWJlck9mRmlyZWRMb2FkRXZlbnRzKSB7Cisg
ICAgbG9nKCJQQVNTIEZpcmVkICIgKyBudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyArICIgTG9hZCBl
dmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7CisgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxl
IG9ubG9hZD0iY2hlY2tJZkRvbmUoJ3N0eWxlMScpIj48L3N0eWxlPgorPHN0eWxlIG9ubG9hZD0i
Y2hlY2tJZkRvbmUoJ3N0eWxlMicpIj48L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJj
aGVja0lmRG9uZSgnYm9keScpIj4KKzxwPlRoaXMgdGVzdHMgdGhhdCB3ZSBmaXJlIHR3byBMb2Fk
IGV2ZW50cyBvbiBhIHBhZ2Ugd2l0aCB0d28gSFRNTCBTdHlsZSBlbGVtZW50cyBhbmQgdGhhdCBi
b3RoIGV2ZW50cyBhcmUgZmlyZWQgYmVmb3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93
IGlzIGRpc3BhdGNoZWQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNT
IGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxl
bWVudC9zdHlsZS1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQt
YmVmb3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRo
YXQgYSBMb2FkIGV2ZW50IGZvciBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgY29tZXMgYmVmb3JlIHRo
ZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUg
dGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQg
TG9hZCBldmVudCBhdCBzdHlsZS4KK1BBU1MgRmlyZWQgTG9hZCBldmVudCBhdCBib2R5LgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1i
ZWZvcmUtcGFnZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1v
bmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vSFRNTExp
bmtFbGVtZW50L3Jlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+Cit2YXIgZXhwZWN0ZWRMb2FkRXZlbnRUYXJnZXRzID0gWyJzdHlsZSIsICJib2R5Il07
CisKK2Z1bmN0aW9uIGRpZFJlY2VpdmVMb2FkRXZlbnQoZWxlbWVudE5hbWUpCit7CisgIHZhciBl
eHBlY3RlZFRhcmdldCA9IGV4cGVjdGVkTG9hZEV2ZW50VGFyZ2V0cy5zaGlmdCgpOworICBpZiAo
ZXhwZWN0ZWRUYXJnZXQgPT09IGVsZW1lbnROYW1lKQorICAgIHRlc3RQYXNzZWRBbmROb3RpZnlE
b25lKCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSArICIuIik7CisgIGVsc2Ug
eworICAgIC8vIFdlIGRvbid0IGNhbGwgdGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoKSBvciB0ZXN0
RmluaXNoZWQoKSBiZWNhdXNlIHdlIHdhbnQgdG8gbG9nIGFkZGl0aW9uYWwgTG9hZCBldmVudHMg
YXMgaXQKKyAgICAvLyBtYXkgaGVscCB0b3dhcmRzIGRlYnVnZ2luZyB0aGlzIHRlc3QgY2FzZS4K
KyAgICB0ZXN0RmFpbGVkKCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSArICIs
IGJ1dCBzaG91bGQgaGF2ZSBmaXJlZCBpdCBhdCAiICsgZXhwZWN0ZWRUYXJnZXQgKyAiLiIpOwor
ICB9Cit9Cis8L3NjcmlwdD4KKzxzdHlsZSBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZlbnQoJ3N0
eWxlJykiPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZl
bnQoJ2JvZHknKSI+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGZvciBhbiBIVE1M
IFN0eWxlIGVsZW1lbnQgY29tZXMgYmVmb3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93
LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3
aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxl
LW9ubG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBh
IExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBTdHlsZSBlbGVtZW50IGFmdGVyIGl0IHN1
Y2Nlc3NmdWxseSBsb2Fkcy4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBB
U1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVkIExvYWQgZXZlbnQu
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25s
b2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxl
bWVudC9zdHlsZS1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorPHN0eWxlIG9ubG9hZD0idGVzdFBhc3NlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIExv
YWQgZXZlbnQuJykiIG9uZXJyb3I9InRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdGaXJlZCBFcnJv
ciBldmVudC4gU2hvdWxkIGhhdmUgZmlyZWQgTG9hZCBldmVudC4nKSI+PC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBh
biBIVE1MIFN0eWxlIGVsZW1lbnQgYWZ0ZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRzLiBUaGlzIHRl
c3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBG
QUlMRUQuCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128275</attachid>
            <date>2012-02-22 13:24:17 -0800</date>
            <delta_ts>2012-02-23 13:45:42 -0800</delta_ts>
            <desc>Patch and layout tests</desc>
            <filename>Bug38995_3.patch</filename>
            <type>text/plain</type>
            <size>55851</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODUzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDEyLTAyLTIyICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzdHlsZSBlbGVtZW50IGFuZCBs
aW5rIGVsZW1lbnQgZm9yIENTUyBzdHlsZXNoZWV0IHNob3VsZCBlbWl0IGxvYWQvZXJyb3IgZXZl
bnQgd2hlbiBzaGVldCBsb2Fkcy9mYWlscyB0byBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
bGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWlt
cG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3IuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdl
LWxvYWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmVy
cm9yLWhhbmRsZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxvYWQtaGFuZGxlci5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRk
LXN0eWxlLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmxvYWQt
aGFuZGxlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0
eWxlLW9uZXJyb3Itd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3IuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQt
YmVmb3JlLXBhZ2UtbG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5bGVF
bGVtZW50L3N0eWxlLW9ubG9hZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MU3R5
bGVFbGVtZW50L3N0eWxlLW9ubG9hZDIuaHRtbAorCisgICAgICAgIEltcGxlbWVudHMgc3VwcG9y
dCBmb3IgZmlyaW5nIExvYWQgYW5kIEVycm9yIGV2ZW50cyBhdCBIVE1MIExpbmsgYW5kIEhUTUwg
U3R5bGUgZWxlbWVudHMgYXMgcGVyCisgICAgICAgIHRoZSBIVE1MNSBzcGVjLiAoZHJhZnQgMDUv
MjUvMjAxMSkgc2VjdGlvbiAiVGhlIGxpbmsgZWxlbWVudCIgPGh0dHA6Ly93d3cudzMub3JnL1RS
L2h0bWw1L3NlbWFudGljcy5odG1sI3RoZS1saW5rLWVsZW1lbnQ+CisgICAgICAgIGFuZCAiVGhl
IHN0eWxlIGVsZW1lbnQiIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zZW1hbnRpY3MuaHRt
bCN0aGUtc3R5bGUtZWxlbWVudD4sIHJlc3BlY3RpdmVseS4KKworICAgICAgICAqIGNzcy9DU1NJ
bXBvcnRSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltcG9ydFJ1bGU6OnNldENTU1N0
eWxlU2hlZXQpOiBNb2RpZmllZCB0byBjYWxsIENTU1N0eWxlU2hlZXQ6Om5vdGlmeUxvYWRlZFNo
ZWV0KCkKKyAgICAgICAgYWZ0ZXIgdGhlIHN0eWxlIHNoZWV0IGFzc29jaWF0ZWQgd2l0aCB0aGUg
QGltcG9ydCBydWxlIGxvYWRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6IEFk
ZGVkIGluc3RhbmNlIHZhcmlhYmxlIG1fZGlkTG9hZEVycm9yT2NjdXIgdG8gdHJhY2sgd2hldGhl
ciBhIG5ldHdvcmsgZXJyb3IKKyAgICAgICAgb2NjdXJyZWQgd2hpbGUgbG9hZGluZyBhbnkgQGlt
cG9ydCBzdHlsZSBzaGVldHMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNoZWNrTG9hZGVk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
bm90aWZ5TG9hZGVkU2hlZXQpOiBBZGRlZDsgdXBkYXRlIG1fZGlkTG9hZEVycm9yT2NjdXIgdG8g
cmVmbGVjdCBpZiBhIG5ldHdvcmsKKyAgICAgICAgZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGlu
ZyBhIHN0eWxlIHNoZWV0IGFzc29jaWF0ZWQgd2l0aCBhbiBAaW1wb3J0IHJ1bGUuCisgICAgICAg
ICogY3NzL0NTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NT
U3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjppbXBsaWNpdENsb3NlKTogQ2FsbCBIVE1Me0xpbmtFbGVtZW50LCBTdHls
ZUVsZW1lbnR9OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkgdG8KKyAgICAgICAgZW5zdXJl
IHRoYXQgYWxsIHBlbmRpbmcgTG9hZCBldmVudHMgZm9yIGxpbmsgYW5kIHN0eWxlIGVsZW1lbnRz
IGFyZSBkaXNwYXRjaGVkIGJlZm9yZSB3ZSBmaXJlIHRoZSBMb2FkCisgICAgICAgIGV2ZW50IGZv
ciB0aGUgd2luZG93LgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKTogQWRkZWQ7
IGFzIHN0YXRlZCBpbiBpdHMgbmFtZSwgdGhpcyBtZXRob2QgaXMKKyAgICAgICAgY2FsbGVkIG9u
Y2UgYSBzdHlsZSBzaGVldCBhbmQgYWxsIGl0cyBjcml0aWNhbCBzdWJyZXNvdXJjZXMgKEBpbXBv
cnRzKSBoYXZlIGxvYWRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQpOiBNb2RpZmll
ZCB0byBjYW5jZWwgYWxsIHBlbmRpbmcgTG9hZCBldmVudHMgb24gZGVzdHJ1Y3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogUmVnaXN0ZXIg
ZXZlbnQgbGlzdGVuZXJzIGZvciBMb2FkIGFuZCBFcnJvciBldmVudHMgcmVnYXJkbGVzcyBvZiB3
aGV0aGVyIHdlCisgICAgICAgIGJ1aWx0IHdpdGggbGluayBwcmVmZXRjaCBzdXBwb3J0LgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cyk6
IEFkZGVkOyBjYWxsZWQgZnJvbSBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpIHRvCisgICAgICAg
IGVuc3VyZSB0aGF0IGFsbCBwZW5kaW5nIExvYWQgZXZlbnRzIGZvciBsaW5rIGVsZW1lbnRzIGhh
dmUgYmVlbiBkaXNwYXRjaGVkIGJlZm9yZSB3ZSBmaXJlIHRoZSBMb2FkIGV2ZW50CisgICAgICAg
IGZvciB0aGUgd2luZG93LgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkaXNw
YXRjaFBlbmRpbmdFdmVudCk6IEFkZGVkOyBjYWxsZWQgYnkgRXZlbnRTZW5kZXIuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGlj
YWxTdWJyZXNvdXJjZXMpOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MTGlua0VsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkRXZl
bnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5
bGVFbGVtZW50OjpIVE1MU3R5bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHls
ZUVsZW1lbnQ6On5IVE1MU3R5bGVFbGVtZW50KTogTW9kaWZpZWQgdG8gY2FuY2VsIGFsbCBwZW5k
aW5nIExvYWQgZXZlbnRzIG9uIGRlc3RydWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0
eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBSZWdpc3RlciBldmVudCBsaXN0ZW5lcnMgZm9y
IExvYWQgYW5kIEVycm9yIGV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1l
bnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMpOiBBZGRlZDsgY2FsbGVkIGZyb20gRG9jdW1l
bnQ6OmltcGxpY2l0Q2xvc2UoKSB0bworICAgICAgICBlbnN1cmUgdGhhdCBhbGwgcGVuZGluZyBM
b2FkIGV2ZW50cyBmb3IgbGluayBlbGVtZW50cyBoYXZlIGJlZW4gZGlzcGF0Y2hlZCBiZWZvcmUg
d2UgZmlyZSB0aGUgTG9hZCBldmVudAorICAgICAgICBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KTogQWRkZWQ7
IGNhbGxlZCBieSBFdmVudFNlbmRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1l
bnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMpOiBBZGRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSFRNTFN0eWxlRWxlbWVudCk6CisKIDIwMTItMDItMjIgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyNjI2MzIpOiBwYWdlLWJy
ZWFrLWluc2lkZTogYXZvaWQgaXMgaWdub3JlZApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltcG9ydFJ1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbXBv
cnRSdWxlLmNwcAkocmV2aXNpb24gMTA4NDMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsOCArMTAzLDEwIEBAIHZvaWQgQ1NT
SW1wb3J0UnVsZTo6c2V0Q1NTU3R5bGVTaGVldChjb24KIAogICAgIG1fbG9hZGluZyA9IGZhbHNl
OwogCi0gICAgaWYgKHBhcmVudCkKKyAgICBpZiAocGFyZW50KSB7CisgICAgICAgIHBhcmVudC0+
bm90aWZ5TG9hZGVkU2hlZXQoc2hlZXQpOwogICAgICAgICBwYXJlbnQtPmNoZWNrTG9hZGVkKCk7
CisgICAgfQogfQogCiBib29sIENTU0ltcG9ydFJ1bGU6OmlzTG9hZGluZygpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAxMDg0MzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NSdWxlTGlz
dC5oIgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgorI2luY2x1ZGUgIkNhY2hlZENTU1N0eWxl
U2hlZXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTYwLDYgKzYxLDcgQEAgQ1NTU3R5bGVTaGVl
dDo6Q1NTU3R5bGVTaGVldChOb2RlKiBwYXJlbgogICAgICwgbV9zdHJpY3RQYXJzaW5nKGZhbHNl
KQogICAgICwgbV9pc1VzZXJTdHlsZVNoZWV0KGZhbHNlKQogICAgICwgbV9oYXNTeW50YWN0aWNh
bGx5VmFsaWRDU1NIZWFkZXIodHJ1ZSkKKyAgICAsIG1fZGlkTG9hZEVycm9yT2NjdXIoZmFsc2Up
CiB7CiAgICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQocGFyZW50Tm9k
ZSkpOwogfQpAQCAtNzAsNiArNzIsNyBAQCBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KENT
U0ltcG9ydFJ1CiAgICAgLCBtX2xvYWRDb21wbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3N0cmljdFBh
cnNpbmcoIW93bmVyUnVsZSB8fCBvd25lclJ1bGUtPnVzZVN0cmljdFBhcnNpbmcoKSkKICAgICAs
IG1faGFzU3ludGFjdGljYWxseVZhbGlkQ1NTSGVhZGVyKHRydWUpCisgICAgLCBtX2RpZExvYWRF
cnJvck9jY3VyKGZhbHNlKQogewogICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0ID0gb3du
ZXJSdWxlID8gb3duZXJSdWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkgOiAwOwogICAgIG1faXNVc2Vy
U3R5bGVTaGVldCA9IHBhcmVudFNoZWV0ID8gcGFyZW50U2hlZXQtPmlzVXNlclN0eWxlU2hlZXQo
KSA6IGZhbHNlOwpAQCAtMjM3LDcgKzI0MCwyMSBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6OmNoZWNr
TG9hZGVkKCkKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gcHJvdGVjdG9yKHRoaXMpOwogICAg
IGlmIChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpKQogICAg
ICAgICBzdHlsZVNoZWV0LT5jaGVja0xvYWRlZCgpOwotICAgIG1fbG9hZENvbXBsZXRlZCA9IG93
bmVyTm9kZSgpID8gb3duZXJOb2RlKCktPnNoZWV0TG9hZGVkKCkgOiB0cnVlOworCisgICAgUmVm
UHRyPE5vZGU+IG93bmVyID0gb3duZXJOb2RlKCk7CisgICAgaWYgKCFvd25lcikKKyAgICAgICAg
bV9sb2FkQ29tcGxldGVkID0gdHJ1ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9sb2FkQ29tcGxl
dGVkID0gb3duZXItPnNoZWV0TG9hZGVkKCk7CisgICAgICAgIGlmIChtX2xvYWRDb21wbGV0ZWQp
CisgICAgICAgICAgICBvd25lci0+bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJl
c291cmNlcyhtX2RpZExvYWRFcnJvck9jY3VyKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTU3R5bGVT
aGVldDo6bm90aWZ5TG9hZGVkU2hlZXQoY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQp
Cit7CisgICAgQVNTRVJUKHNoZWV0KTsKKyAgICBtX2RpZExvYWRFcnJvck9jY3VyIHw9IHNoZWV0
LT5lcnJvck9jY3VycmVkKCk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTaGVldDo6c3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAkocmV2aXNp
b24gMTA4NDMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ1NT
TmFtZXNwYWNlOwogY2xhc3MgQ1NTUGFyc2VyOwogY2xhc3MgQ1NTUnVsZTsKK2NsYXNzIENhY2hl
ZENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3Vt
ZW50OwogCkBAIC0xMTQsNiArMTE1LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW4uc2l6ZSgpOyB9CiAgICAgQ1NTUnVsZSogaXRlbSh1
bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1fY2hpbGRyZW4uYXQo
aW5kZXgpLmdldCgpIDogMDsgfQogCisgICAgdm9pZCBub3RpZnlMb2FkZWRTaGVldChjb25zdCBD
YWNoZWRDU1NTdHlsZVNoZWV0Kik7CisKIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldChOb2Rl
KiBvd25lck5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFs
VVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpOwogICAgIENTU1N0eWxlU2hlZXQoQ1NTSW1wb3J0
UnVsZSogb3duZXJSdWxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBm
aW5hbFVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKQEAgLTEyOCw2ICsxMzEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9zdHJpY3RQYXJzaW5nIDogMTsKICAgICBib29sIG1faXNVc2VyU3R5
bGVTaGVldCA6IDE7CiAgICAgYm9vbCBtX2hhc1N5bnRhY3RpY2FsbHlWYWxpZENTU0hlYWRlciA6
IDE7CisgICAgYm9vbCBtX2RpZExvYWRFcnJvck9jY3VyIDogMTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEwODQzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNzgsNiAr
MjI3OCw5IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIEltYWdlTG9hZGVy
OjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7CiAgICAgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKIAorICAgIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0
Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworICAgIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudHMoKTsKKwogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gVG8gYWxpZ24gdGhl
IEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNWR0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3Qg
PHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9tCiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2lu
ZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDEw
ODQzMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
Nyw2ICsyOTcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGb3IgPGxpbms+IGFuZCA8c3R5bGU+IGVs
ZW1lbnRzLgogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291
cmNlcyhib29sIC8qIGVycm9yIGxvYWRpbmcgc3VicmVzb3VyY2UgKi8pIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICBib29sIGF0dHJpYnV0ZVN0eWxlRGlydHkoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEF0dHJpYnV0ZVN0eWxlRGlydHlGbGFnKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAkocmV2aXNpb24gMTA4NDMzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlci5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtNTEsNiArNTIsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitzdGF0aWMgTGlua0V2ZW50U2Vu
ZGVyJiBsb2FkRXZlbnRTZW5kZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTGlua0V2
ZW50U2VuZGVyLCBzaGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50
KSk7CisgICAgcmV0dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKK30KKwogaW5saW5lIEhUTUxM
aW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fbGlua0xvYWRlcih0aGlzKQpAQCAtNTks
NiArNjYsOCBAQCBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoCiAgICAg
LCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJz
ZXIpCiAgICAgLCBtX2lzSW5TaGFkb3dUcmVlKGZhbHNlKQorICAgICwgbV9maXJlZExvYWQoZmFs
c2UpCisgICAgLCBtX2xvYWRlZFNoZWV0KGZhbHNlKQogICAgICwgbV9wZW5kaW5nU2hlZXRUeXBl
KE5vbmUpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUobGlua1RhZykpOwpAQCAtODEsNiArOTAs
OCBAQCBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQoKQogCiAgICAgaWYgKGluRG9j
dW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGUodGhpcyk7CisKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKIH0K
IAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3RhdGUoYm9vbCBkaXNhYmxlZCkK
QEAgLTE0MSwxMiArMTUyLDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHQKICAgICAgICAgc2V0RGlzYWJsZWRTdGF0ZSghYXR0ci0+aXNOdWxsKCkpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwotI2lmIEVOQUJMRShMSU5LX1BSRUZF
VENIKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQogICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBvbmVycm9yQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7Ci0jZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0
dHItPnZhbHVlKCkpOwpAQCAtMzMwLDYgKzMzOSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpz
ZXRDU1NTdHlsZVNoZWV0KGMKICAgICBtX3NoZWV0LT5zZXRNZWRpYShtZWRpYS5nZXQoKSk7CiAK
ICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBtX3NoZWV0LT5ub3RpZnlMb2FkZWRTaGVldChz
aGVldCk7CiAgICAgbV9zaGVldC0+Y2hlY2tMb2FkZWQoKTsKIH0KIApAQCAtMzYxLDYgKzM3MSwy
OSBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMo
KQoreworICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworfQor
Cit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2Vu
ZGVyKiBldmVudFNlbmRlcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVu
dFNlbmRlciA9PSAmbG9hZEV2ZW50U2VuZGVyKCkpOworICAgIGlmIChtX2xvYWRlZFNoZWV0KQor
ICAgICAgICBsaW5rTG9hZGVkKCk7CisgICAgZWxzZQorICAgICAgICBsaW5rTG9hZGluZ0Vycm9y
ZWQoKTsKK30KKwordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxs
Q3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3VycmVkKQoreworICAgIGlmIChtX2Zp
cmVkTG9hZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fbG9hZGVkU2hlZXQgPSAhZXJyb3JPY2N1
cnJlZDsKKyAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbih0aGlzKTsKKyAg
ICBtX2ZpcmVkTG9hZCA9IHRydWU7Cit9CisKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzdGFydExv
YWRpbmdEeW5hbWljU2hlZXQoKQogewogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbXVsdGlwbGUg
YmxvY2tpbmcgc2hlZXRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CShyZXZpc2lvbiAxMDg0MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEtVUkw7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyOwordHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlu
a0VsZW1lbnQ+IExpbmtFdmVudFNlbmRlcjsKKwogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkU3R5bGVTaGVldENsaWVudCwgcHVibGljIExp
bmtMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5r
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3Jl
YXRlZEJ5UGFyc2VyKTsKQEAgLTYwLDYgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6
ZXMoY29uc3QgU3RyaW5nJik7CiAgICAgRE9NU2V0dGFibGVUb2tlbkxpc3QqIHNpemVzKCkgY29u
c3Q7CiAKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciopOwor
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CiAK
QEAgLTczLDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xp
ZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hl
ZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291
cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdE
eW5hbWljU2hlZXQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGVkKCk7CkBAIC0xMTks
NyArMTI3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbG9hZGluZzsKICAgICBib29sIG1fY3Jl
YXRlZEJ5UGFyc2VyOwogICAgIGJvb2wgbV9pc0luU2hhZG93VHJlZTsKLSAgICAKKyAgICBib29s
IG1fZmlyZWRMb2FkOworICAgIGJvb2wgbV9sb2FkZWRTaGVldDsKKwogICAgIFBlbmRpbmdTaGVl
dFR5cGUgbV9wZW5kaW5nU2hlZXRUeXBlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDg0MzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4
IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCkBAIC0zNSw5ICszNywxNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3N0YXRpYyBTdHlsZUV2ZW50
U2VuZGVyJiBsb2FkRXZlbnRTZW5kZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3R5
bGVFdmVudFNlbmRlciwgc2hhcmVkTG9hZEV2ZW50U2VuZGVyLCAoZXZlbnROYW1lcygpLmxvYWRF
dmVudCkpOworICAgIHJldHVybiBzaGFyZWRMb2FkRXZlbnRTZW5kZXI7Cit9CisKIGlubGluZSBI
VE1MU3R5bGVFbGVtZW50OjpIVE1MU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBI
VE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIFN0eWxlRWxlbWVudChkb2N1bWVu
dCwgY3JlYXRlZEJ5UGFyc2VyKQorICAgICwgbV9maXJlZExvYWQoZmFsc2UpCisgICAgLCBtX2xv
YWRlZFNoZWV0KGZhbHNlKQogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgLCBtX2lzUmVn
aXN0ZXJlZFdpdGhTY29waW5nTm9kZShmYWxzZSkKICNlbmRpZgpAQCAtNTAsNiArNjAsOCBAQCBI
VE1MU3R5bGVFbGVtZW50Ojp+SFRNTFN0eWxlRWxlbWVudCgpCiAgICAgLy8gRHVyaW5nIHRlYXIt
ZG93biwgd2lsbFJlbW92ZSBpc24ndCBjYWxsZWQsIHNvIG1faXNSZWdpc3RlcmVkV2l0aFNjb3Bp
bmdOb2RlIG1heSBzdGlsbCBiZSBzZXQgaGVyZS4KICAgICAvLyBUaGVyZWZvcmUgd2UgY2FuJ3Qg
QVNTRVJUKCFtX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSkuCiAgICAgU3R5bGVFbGVtZW50
OjpjbGVhckRvY3VtZW50RGF0YShkb2N1bWVudCgpLCB0aGlzKTsKKworICAgIGxvYWRFdmVudFNl
bmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1l
bnQ+IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQpAQCAtNjEsNiArNzMs
MTAgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdAogewogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gdGl0bGVBdHRyICYmIG1fc2hlZXQpCiAgICAgICAgIG1fc2hlZXQt
PnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBv
bmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwor
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmVycm9yQXR0cikKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2NvcGVkQXR0cikgewogICAgICAgICBpZiAo
IWF0dHItPmlzTnVsbCgpICYmICFtX2lzUmVnaXN0ZXJlZFdpdGhTY29waW5nTm9kZSAmJiBpbkRv
Y3VtZW50KCkpCkBAIC0yMDUsNiArMjIxLDI5IEBAIEVsZW1lbnQqIEhUTUxTdHlsZUVsZW1lbnQ6
OnNjb3BpbmdFbGVtZW4KIH0KICNlbmRpZiAvLyBFTkFCTEUoU1RZTEVfU0NPUEVEKQogCit2b2lk
IEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKQoreworICAgIGxv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworfQorCit2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXIqIGV2ZW50
U2VuZGVyKQoreworICAgIEFTU0VSVF9VTlVTRUQoZXZlbnRTZW5kZXIsIGV2ZW50U2VuZGVyID09
ICZsb2FkRXZlbnRTZW5kZXIoKSk7CisgICAgaWYgKG1fbG9hZGVkU2hlZXQpCisgICAgICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhi
b29sIGVycm9yT2NjdXJyZWQpCit7CisgICAgaWYgKG1fZmlyZWRMb2FkKQorICAgICAgICByZXR1
cm47CisgICAgbV9sb2FkZWRTaGVldCA9ICFlcnJvck9jY3VycmVkOworICAgIGxvYWRFdmVudFNl
bmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsK
K30KKwogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CiB7ICAgIAogICAgIEhUTUxFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdHlsZUVsZW1lbnQuaAkocmV2aXNpb24gMTA4NDMzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTFN0eWxlRWxlbWVudDsKIGNsYXNz
IFN0eWxlU2hlZXQ7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyOwor
dHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MU3R5bGVFbGVtZW50PiBTdHlsZUV2ZW50U2VuZGVyOwor
CiBjbGFzcyBIVE1MU3R5bGVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIFN0
eWxlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFN0eWxlRWxl
bWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKQEAgLTQ4LDYgKzUyLDkgQEAgcHVibGljOgogICAgIGJvb2wgZGlzYWJsZWQo
KSBjb25zdDsKICAgICB2b2lkIHNldERpc2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBkaXNwYXRj
aFBlbmRpbmdFdmVudChTdHlsZUV2ZW50U2VuZGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hQZW5kaW5nTG9hZEV2ZW50cygpOworCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwog
CkBAIC02NCw2ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5n
KCkgY29uc3QgeyByZXR1cm4gU3R5bGVFbGVtZW50Ojppc0xvYWRpbmcoKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaGVldExvYWRlZCgpIHsgcmV0dXJuIFN0eWxlRWxlbWVudDo6c2hlZXRMb2FkZWQo
ZG9jdW1lbnQoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxD
cml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSB7IFN0eWxlRWxlbWVudDo6c3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KGRvY3VtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkBAIC03NCw2ICs4
Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlcldpdGhTY29waW5nTm9kZSgpOwogICAg
IHZvaWQgdW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSgpOwogCisgICAgYm9vbCBtX2ZpcmVkTG9h
ZDsKKyAgICBib29sIG1fbG9hZGVkU2hlZXQ7CisKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQog
ICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRXaXRoU2NvcGluZ05vZGU7CiAjZW5kaWYKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwODUzMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAyLTIyICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBzdHlsZSBlbGVtZW50IGFuZCBsaW5rIGVsZW1lbnQgZm9yIENT
UyBzdHlsZXNoZWV0IHNob3VsZCBlbWl0IGxvYWQvZXJyb3IgZXZlbnQgd2hlbiBzaGVldCBsb2Fk
cy9mYWlscyB0byBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0IGNhc2VzIHRvIGVuc3VyZSB3ZSBkaXNwYXRjaCBMb2FkL0Vycm9yIGV2
ZW50cyB0byBIVE1MIExpbmsgYW5kIEhUTUwgU3R5bGUgZWxlbWVudHMuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNo
ZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLXN0
eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLXN0eWxl
c2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1zdHlsZXNoZWV0LXdp
dGgtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25s
b2FkLWJlZm9yZS1wYWdlLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L2xpbmstb25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBv
cnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWltcG9ydC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkMi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9h
ZDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dy
YW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmVycm9yLWhhbmRsZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxs
eS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9u
bG9hZC1oYW5kbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxvYWQtaGFuZGxl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3Vy
Y2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQ29tcHV0
ZWRDb2xvck9mRWxlbWVudEJlRXF1YWxUb1JHQlN0cmluZyk6CisgICAgICAgIChjcmVhdGVMaW5r
RWxlbWVudFdpdGhTdHlsZXNoZWV0KToKKyAgICAgICAgKGNyZWF0ZVN0eWxlRWxlbWVudFdpdGhT
dHJpbmcpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKHRlc3RQYXNzZWQpOgorICAgICAgICAo
dGVzdEZhaWxlZCk6CisgICAgICAgICh0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSk6CisgICAgICAg
ICh0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSk6CisgICAgICAgICh0ZXN0RmluaXNoZWQpOgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC13aXRo
LWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzczogQWRkZWQuCisgICAgICAgICgj
dGVzdCk6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHls
ZXNoZWV0LXdpdGgtaW1wb3J0LmNzczogQWRkZWQuCisgICAgICAgICgjdGVzdCk6CisgICAgICAg
ICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9u
LWV4aXN0ZW50LWltcG9ydC5jc3M6IEFkZGVkLgorICAgICAgICAoI3Rlc3QpOgorICAgICAgICAq
IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3M6IEFkZGVk
LgorICAgICAgICAoI3Rlc3QpOgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQv
cHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRsZXItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1t
YXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5
bGUtd2l0aC1vbmxvYWQtaGFuZGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1v
bmxvYWQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5bGVF
bGVtZW50L3N0eWxlLW9uZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3Itd2l0aC1leGlzdGVudC1hbmQtbm9u
LWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhp
c3RlbnQtaW1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVs
ZW1lbnQvc3R5bGUtb25lcnJvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
U3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQt
YmVmb3JlLXBhZ2UtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MU3R5
bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2Fk
Mi5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0yMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI2MjYzMik6IHBhZ2UtYnJlYWstaW5zaWRlOiBh
dm9pZCBpcyBpZ25vcmVkCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmVycm9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJy
b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMg
dGhhdCBhbiBFcnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCB3aGVu
IGl0IGZhaWxzIHRvIGxvYWQgYSBub24tZXhpc3RlbnQgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQ
QVNTRUQgaWYgc2VlIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBG
QUlMRUQuCisKK1BBU1MgRmlyZWQgRXJyb3IgZXZlbnQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4aXN0
ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLXN0eWxlc2hl
ZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLXN0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorc3R5bGVzaGVldC13aXRo
LWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQv
Y3NzCitzdHlsZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRo
YXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hlbiBp
dHMgc3R5bGUgc2hlZXQgZmFpbHMgdG8gbG9hZCBhbiBAaW1wb3J0J2VkIHN0eWxlIHNoZWV0IChy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbm90aGVyIEBpbXBv
cnQnZWQgc3R5bGUgc2hlZXQpLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBB
U1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVkIEVy
cm9yIGV2ZW50LgorUEFTUyAjdGVzdCBjb2xvciB3YXMgcmdiKDAsIDAsIDI1NSkuCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVz
aGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci1z
dHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBvcnQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9u
ZXJyb3Itc3R5bGVzaGVldC13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3NlZCgi
RmlyZWQgRXJyb3IgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVx
dWFsVG9SR0JTdHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigwLCAw
LCAyNTUpIiAvKiBibHVlICovKTsgLy8gaS5lLiBzdHlsZXNoZWV0LmNzcyBzdWNjZXNzZnVsbHkg
bG9hZGVkCisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1l
eGlzdGVudC1pbXBvcnQuY3NzIiBvbmxvYWQ9InRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdGaXJl
ZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVudC4nKSIgb25lcnJvcj0i
cGFzc2VkKCkiPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYW4gRXJyb3Ig
ZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgd2hlbiBpdHMgc3R5bGUgc2hl
ZXQgZmFpbHMgdG8gbG9hZCBhbiBAaW1wb3J0J2VkIHN0eWxlIHNoZWV0IChyZWdhcmRsZXNzIG9m
IHdoZXRoZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbm90aGVyIEBpbXBvcnQnZWQgc3R5bGUg
c2hlZXQpLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMg
YmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwvcD4KKzxoMSBpZD0idGVzdCI+PCEtLSBUZXN0
IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25l
cnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25l
cnJvci1zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1v
bmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitzdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50
LWltcG9ydC5jc3MgaGFzIE1JTUUgdHlwZSB0ZXh0L2NzcworVGhpcyB0ZXN0cyB0aGF0IGFuIEVy
cm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IHdoZW4gaXRzIHN0eWxl
IHNoZWV0IGZhaWxzIHRvIGxvYWQgYW4gQGltcG9ydCdlZCBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0
IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1lc3NhZ2VzIGJlbG93LiBPdGhlcndpc2Us
IGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBFcnJvciBldmVudC4KK1BBU1MgI3Rlc3QgY29sb3Ig
d2FzIHJnYigyNTUsIDI1NSwgMCkuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9saW5rLW9uZXJyb3Itc3R5bGVzaGVldC13aXRoLW5vbi1leGlzdGVudC1pbXBv
cnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGlu
ay1vbmVycm9yLXN0eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3NlZCgiRmlyZWQgRXJy
b3IgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JT
dHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigyNTUsIDI1NSwgMCki
IC8qIHllbGxvdyAqLyk7CisgIHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0
ZW50LWltcG9ydC5jc3MiIG9ubG9hZD0idGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIExv
YWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9yIGV2ZW50LicpIiBvbmVycm9yPSJwYXNz
ZWQoKSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhbiBFcnJvciBldmVu
dCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCB3aGVuIGl0cyBzdHlsZSBzaGVldCBm
YWlscyB0byBsb2FkIGFuIEBpbXBvcnQnZWQgc3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQg
aWYgdGhlcmUgYXJlIG9ubHkgUEFTUyBtZXNzYWdlcyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlM
RUQuPC9wPgorPGgxIGlkPSJ0ZXN0Ij48IS0tIFRlc3QgZWxlbWVudCAtLT48L2gxPgorPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmVycm9yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25lcnJvci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25lcnJvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGls
aXRpZXMuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJj
ZXMvbm9uLWV4aXN0ZW50LXN0eWxlc2hlZXQuY3NzIiBvbmxvYWQ9InRlc3RGYWlsZWRBbmROb3Rp
ZnlEb25lKCdGaXJlZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVudC4n
KSIgb25lcnJvcj0idGVzdFBhc3NlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIEVycm9yIGV2ZW50Licp
Ij4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGFuIEVycm9yIGV2ZW50IGlz
IGZpcmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IHdoZW4gaXQgZmFpbHMgdG8gbG9hZCBhIG5v
bi1leGlzdGVudCBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiBzZWUgeW91IHNlZSB0
aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJj
b25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L2xpbmstb25sb2FkMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NSBAQAorc3R5bGVzaGVldC5jc3MgaGFzIE1JTUUgdHlwZSB0ZXh0L2NzcworVGhpcyB0ZXN0cyB0
aGF0IHdlIGZpcmUgdHdvIExvYWQgZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1MIExpbmsg
ZWxlbWVudHMgYW5kIHRoYXQgYm90aCBldmVudHMgYXJlIGZpcmVkIGJlZm9yZSB0aGUgTG9hZCBl
dmVudCBmb3IgdGhlIHdpbmRvdyBpcyBkaXNwYXRjaGVkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlv
dSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1Mg
RmlyZWQgMiBMb2FkIGV2ZW50cy4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstb25sb2FkMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZDIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+Cit2YXIgbnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPSAwOwordmFyIGV4
cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPSAyOworCitmdW5jdGlvbiBjaGVja0lmRG9u
ZShlbGVtZW50TmFtZSkKK3sKKyAgKytudW1iZXJPZkZpcmVkTG9hZEV2ZW50czsKKworICBpZiAo
bnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgPCBleHBlY3RlZE51bWJlck9mRmlyZWRMb2FkRXZlbnRz
ICYmIGVsZW1lbnROYW1lID09PSAnYm9keScpIHsKKyAgICBsb2coIkZBSUwgRmlyZWQgd2luZG93
IExvYWQgZXZlbnQgYmVmb3JlIGxpbmsgTG9hZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVk
KCk7CisgIH0KKyAgaWYgKG51bWJlck9mRmlyZWRMb2FkRXZlbnRzID09PSBleHBlY3RlZE51bWJl
ck9mRmlyZWRMb2FkRXZlbnRzKSB7CisgICAgbG9nKCJQQVNTIEZpcmVkICIgKyBudW1iZXJPZkZp
cmVkTG9hZEV2ZW50cyArICIgTG9hZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7Cisg
IH0KK30KKzwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMv
c3R5bGVzaGVldC5jc3MiIG9ubG9hZD0iY2hlY2tJZkRvbmUoJ2xpbmsxJykiPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiIG9ubG9hZD0iY2hl
Y2tJZkRvbmUoJ2xpbmsyJykiPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjaGVja0lmRG9uZSgn
Ym9keScpIj4KKzxwPlRoaXMgdGVzdHMgdGhhdCB3ZSBmaXJlIHR3byBMb2FkIGV2ZW50cyBvbiBh
IHBhZ2Ugd2l0aCB0d28gSFRNTCBMaW5rIGVsZW1lbnRzIGFuZCB0aGF0IGJvdGggZXZlbnRzIGFy
ZSBmaXJlZCBiZWZvcmUgdGhlIExvYWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cgaXMgZGlzcGF0Y2hl
ZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVy
d2lzZSwgaXQgRkFJTEVELgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxv
YWQtYmVmb3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstb25sb2FkLWJlZm9yZS1wYWdlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4
dC9jc3MKK1RoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgZm9yIGFuIEhUTUwgTGluayBlbGVt
ZW50IGNvbWVzIGJlZm9yZSB0aGUgTG9hZCBldmVudCBmb3IgdGhlIHdpbmRvdy4gVGhpcyB0ZXN0
IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJ
TEVELgorCitQQVNTIEZpcmVkIExvYWQgZXZlbnQgYXQgbGluay4KK1BBU1MgRmlyZWQgTG9hZCBl
dmVudCBhdCBib2R5LgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1iZWZvcmUtcGFnZS1s
b2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvbGluay1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3ZhciBleHBlY3RlZExvYWRFdmVudFRhcmdldHMgPSBbImxpbmsiLCAiYm9keSJdOworCitmdW5j
dGlvbiBkaWRSZWNlaXZlTG9hZEV2ZW50KGVsZW1lbnROYW1lKQoreworICB2YXIgZXhwZWN0ZWRU
YXJnZXQgPSBleHBlY3RlZExvYWRFdmVudFRhcmdldHMuc2hpZnQoKTsKKyAgaWYgKGV4cGVjdGVk
VGFyZ2V0ID09PSBlbGVtZW50TmFtZSkKKyAgICB0ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgiRmly
ZWQgTG9hZCBldmVudCBhdCAiICsgZWxlbWVudE5hbWUgKyAiLiIpOworICBlbHNlIHsKKyAgICAv
LyBXZSBkb24ndCBjYWxsIHRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCkgb3IgdGVzdEZpbmlzaGVk
KCkgYmVjYXVzZSB3ZSB3YW50IHRvIGxvZyBhZGRpdGlvbmFsIExvYWQgZXZlbnRzIGFzIGl0Cisg
ICAgLy8gbWF5IGhlbHAgdG93YXJkcyBkZWJ1Z2dpbmcgdGhpcyB0ZXN0IGNhc2UuCisgICAgdGVz
dEZhaWxlZCgiRmlyZWQgTG9hZCBldmVudCBhdCAiICsgZWxlbWVudE5hbWUgKyAiLCBidXQgc2hv
dWxkIGhhdmUgZmlyZWQgaXQgYXQgIiArIGV4cGVjdGVkVGFyZ2V0ICsgIi4iKTsKKyAgfQorfQor
PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNo
ZWV0LmNzcyIgb25sb2FkPSJkaWRSZWNlaXZlTG9hZEV2ZW50KCdsaW5rJykiPgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJkaWRSZWNlaXZlTG9hZEV2ZW50KCdib2R5JykiPgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGEgTG9hZCBldmVudCBmb3IgYW4gSFRNTCBMaW5rIGVsZW1lbnQgY29tZXMgYmVmb3Jl
IHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBz
ZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvbGluay1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUgQEAKK3N0eWxlc2hlZXQuY3NzIGhhcyBNSU1FIHR5cGUgdGV4dC9jc3MKK1RoaXMgdGVzdHMg
dGhhdCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBMaW5rIGVsZW1lbnQgb25jZSBp
dCBsb2FkcyBhIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdv
cmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgTG9hZCBl
dmVudC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmst
b25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNo
ZWV0LXdpdGgtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLW9ubG9hZC1zdHlsZXNoZWV0LXdpdGgtaW1w
b3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitzdHlsZXNoZWV0
LXdpdGgtaW1wb3J0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitzdHlsZXNoZWV0LmNzcyBo
YXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZp
cmVkIGF0IGFuIEhUTUwgTGluayBlbGVtZW50IG9uY2UgYWxsIEBpbXBvcnQnZWQgc3R5bGVzaGVl
dHMgYXJlIGxvYWRlZCBieSBhIHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRoZXJl
IGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQ
QVNTIEZpcmVkIExvYWQgZXZlbnQuCitQQVNTICN0ZXN0IGNvbG9yIHdhcyByZ2IoMCwgMCwgMjU1
KS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25s
b2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1vbmxvYWQtc3R5bGVzaGVldC13aXRoLWlt
cG9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L2xpbmstb25sb2FkLXN0eWxlc2hlZXQtd2l0aC1pbXBvcnQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBjaGVja1Jlc3VsdCgpCit7CisgIHRlc3RQYXNzZWQoIkZpcmVkIExv
YWQgZXZlbnQuIik7CisgIHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JT
dHJpbmcoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigwLCAwLCAyNTUpIiAv
KiBibHVlICovKTsKKyAgdGVzdEZpbmlzaGVkKCk7Cit9Cis8L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1pbXBvcnQuY3NzIiBv
bmxvYWQ9ImNoZWNrUmVzdWx0KCkiIG9uZXJyb3I9InRlc3RGYWlsZWQoJ0ZpcmVkIEVycm9yIGV2
ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBMb2FkIGV2ZW50LicpIj4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsg
ZWxlbWVudCBvbmNlIGFsbCBAaW1wb3J0J2VkIHN0eWxlc2hlZXRzIGFyZSBsb2FkZWQgYnkgYSBz
dHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1lc3Nh
Z2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8aDEgaWQ9InRlc3QiPjwhLS0g
VGVzdCBlbGVtZW50IC0tPjwvaDE+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5r
LW9ubG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9saW5rLW9ubG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9zdHlsZXNoZWV0LmNzcyIgb25sb2FkPSJ0ZXN0
UGFzc2VkQW5kTm90aWZ5RG9uZSgnRmlyZWQgTG9hZCBldmVudC4nKSIgb25lcnJvcj0idGVzdEZh
aWxlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIEVycm9yIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBM
b2FkIGV2ZW50LicpIj4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9h
ZCBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIExpbmsgZWxlbWVudCBvbmNlIGl0IGxvYWRzIGEg
c3R5bGUgc2hlZXQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJl
bG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5kbGVyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGEgTG9h
ZCBldmVudCBpcyBmaXJlZCBhdCBhIHByb2dyYW1tYXRpY2FsbHkgaW5zZXJ0ZWQgSFRNTCBMaW5r
IGVsZW1lbnQgd2hvc2UgQGltcG9ydCBzdHlsZSBzaGVldCBmYWlsZWQgdG8gbG9hZC4gVGhpcyB0
ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQg
RkFJTEVELgorCitQQVNTIEZpcmVkIEVycm9yIGV2ZW50LgorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9u
ZXJyb3ItaGFuZGxlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25lcnJvci1oYW5k
bGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9uZXJyb3ItaGFuZGxlci5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50
IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBpbnNlcnRlZCBIVE1MIExpbmsgZWxlbWVu
dCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFT
U0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQu
PC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgordmFyIGxpbmsgPSBjcmVh
dGVMaW5rRWxlbWVudFdpdGhTdHlsZXNoZWV0KCJyZXNvdXJjZXMvbm9uLWV4aXN0ZW50LXN0eWxl
c2hlZXQuY3NzIik7CitsaW5rLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxlZEFuZE5v
dGlmeURvbmUoJ0ZpcmVkIExvYWQgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIEVycm9yIGV2ZW50
LicpIH07CitsaW5rLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWRBbmROb3RpZnlE
b25lKCdGaXJlZCBFcnJvciBldmVudC4nKSB9OworZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChs
aW5rKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxv
YWQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLWxpbmstd2l0aC1vbmxvYWQt
aGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9ubG9hZC1o
YW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitzdHlsZXNo
ZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2
ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBpbnNlcnRlZCBIVE1MIExpbmsgZWxl
bWVudCBvbmNlIGl0IGxvYWRzIGl0cyBzdHlsZSBzaGVldC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5
b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNT
IEZpcmVkIExvYWQgZXZlbnQuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1saW5rLXdpdGgtb25sb2FkLWhhbmRsZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJv
Z3JhbW1hdGljYWxseS1hZGQtbGluay13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJvZ3JhbW1hdGlj
YWxseS1hZGQtbGluay13aXRoLW9ubG9hZC1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBhIExvYWQgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9n
cmFtbWF0aWNhbGx5IGluc2VydGVkIEhUTUwgTGluayBlbGVtZW50IG9uY2UgaXQgbG9hZHMgaXRz
IHN0eWxlIHNoZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBi
ZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8c2NyaXB0PgordmFyIGxpbmsgPSBjcmVhdGVMaW5rRWxlbWVudFdpdGhTdHlsZXNoZWV0KCJy
ZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiKTsKK2xpbmsub25sb2FkID0gZnVuY3Rpb24gKCkgeyB0
ZXN0UGFzc2VkQW5kTm90aWZ5RG9uZSgnRmlyZWQgTG9hZCBldmVudC4nKSB9OworbGluay5vbmVy
cm9yID0gZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVkQW5kTm90aWZ5RG9uZSgnRmlyZWQgRXJyb3Ig
ZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIExvYWQgZXZlbnQuJykgfTsKK2RvY3VtZW50LmhlYWQu
YXBwZW5kQ2hpbGQobGluayk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvbGluay1sb2FkLXV0
aWxpdGllcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11
dGlsaXRpZXMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygp
OworICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JTdHJpbmcoZWxlbWVudCwg
ZXhwZWN0ZWRDb2xvcikKK3sKKyAgdmFyIGVsZW1lbnROYW1lID0gIiMiICsgZWxlbWVudC5pZCB8
fCBlbGVtZW50LnRhZ05hbWU7CisgIHZhciBhY3R1YWxDb2xvciA9IHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGVsZW1lbnQsIG51bGwpLmNvbG9yOworICBpZiAoYWN0dWFsQ29sb3IgPT09IGV4cGVj
dGVkQ29sb3IpCisgICAgbG9nKCJQQVNTICIgKyBlbGVtZW50TmFtZSArICIgY29sb3Igd2FzICIg
KyBleHBlY3RlZENvbG9yICsgIi4iKTsKKyAgZWxzZQorICAgIGxvZygiRkFJTCAiICsgZWxlbWVu
dE5hbWUgKyAiIGNvbG9yIHNob3VsZCBiZSAiICsgZXhwZWN0ZWRDb2xvciArICIuIFdhcyAiICsg
YWN0dWFsQ29sb3IgKyAiLiIpOworfQorCitmdW5jdGlvbiBjcmVhdGVMaW5rRWxlbWVudFdpdGhT
dHlsZXNoZWV0KHN0eWxlc2hlZXRVUkwpCit7CisgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGluayIpOworICBsaW5rLnJlbCA9ICJzdHlsZXNoZWV0IjsKKyAgbGluay5ocmVm
ID0gc3R5bGVzaGVldFVSTDsKKyAgcmV0dXJuIGxpbms7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVN0
eWxlRWxlbWVudFdpdGhTdHJpbmcoc3R5bGVzaGVldERhdGEpCit7CisgIHZhciBzdHlsZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgIHN0eWxlLnRleHRDb250ZW50ID0gc3R5
bGVzaGVldERhdGE7CisgIHJldHVybiBzdHlsZTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
Cit7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICJcbiIpKTsKK30KKworZnVuY3Rpb24gdGVz
dFBhc3NlZChtZXNzYWdlKQoreworICBsb2coIlBBU1MgIiArIG1lc3NhZ2UpOworfQorCitmdW5j
dGlvbiB0ZXN0RmFpbGVkKG1lc3NhZ2UpCit7CisgIGxvZygiRkFJTCAiICsgbWVzc2FnZSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWRBbmROb3RpZnlEb25lKG1lc3NhZ2UpCit7CisgIHRlc3RQ
YXNzZWQobWVzc2FnZSk7CisgIHRlc3RGaW5pc2hlZCgpOworfQorCitmdW5jdGlvbiB0ZXN0RmFp
bGVkQW5kTm90aWZ5RG9uZShtZXNzYWdlKQoreworICB0ZXN0RmFpbGVkKG1lc3NhZ2UpOworICB0
ZXN0RmluaXNoZWQoKTsKK30KKworZnVuY3Rpb24gdGVzdEZpbmlzaGVkKCkKK3sKKyAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQv
cmVzb3VyY2VzL3N0eWxlc2hlZXQtd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9y
dC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBv
cnQuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1p
bXBvcnQuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0BpbXBvcnQgInN0eWxlc2hl
ZXQuY3NzIjsKK0BpbXBvcnQgIm5vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNzcyI7CisKKyN0ZXN0
IHsgY29sb3I6IHllbGxvdzsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtaW1wb3J0LmNzcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0eWxlc2hl
ZXQtd2l0aC1pbXBvcnQuY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtaW1wb3J0LmNzcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitAaW1wb3J0ICJzdHlsZXNoZWV0LmNzcyI7CisKKyN0
ZXN0IHsgY29sb3I6IHllbGxvdzsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC5j
c3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jl
c291cmNlcy9zdHlsZXNoZWV0LXdpdGgtbm9uLWV4aXN0ZW50LWltcG9ydC5jc3MJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL3N0
eWxlc2hlZXQtd2l0aC1ub24tZXhpc3RlbnQtaW1wb3J0LmNzcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzIEBACitAaW1wb3J0ICJub24tZXhpc3RlbnQtc3R5bGVzaGVldC5jc3MiOworCisjdGVz
dCB7IGNvbG9yOiB5ZWxsb3c7IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9zdHlsZXNoZWV0LmNzcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJj
ZXMvc3R5bGVzaGVldC5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyN0ZXN0IHsgY29s
b3I6IGJsdWUgIWltcG9ydGFudDsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0
eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFuZGxl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0
eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9uZXJyb3ItaGFuZGxl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
U3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25lcnJvci1oYW5k
bGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3Rz
IHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYSBwcm9ncmFtbWF0aWNhbGx5IGluc2Vy
dGVkIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0
byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4g
T3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgRXJyb3IgZXZlbnQuCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1h
ZGQtc3R5bGUtd2l0aC1vbmVycm9yLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxl
LXdpdGgtb25lcnJvci1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgt
b25lcnJvci1oYW5kbGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0VsZW1l
bnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYW4gRXJyb3IgZXZlbnQgaXMgZmlyZWQgYXQgYSBw
cm9ncmFtbWF0aWNhbGx5IGluc2VydGVkIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBAaW1wb3J0
IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUg
dGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0i
Y29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgordmFyIHN0eWxlID0gY3JlYXRlU3R5bGVFbGVtZW50
V2l0aFN0cmluZygnQGltcG9ydCAicmVzb3VyY2VzL25vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNz
cyI7Jyk7CitzdHlsZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHRlc3RGYWlsZWRBbmROb3RpZnlE
b25lKCdGaXJlZCBMb2FkIGV2ZW50LiBTaG91bGQgaGF2ZSBmaXJlZCBFcnJvciBldmVudC4nKSB9
Oworc3R5bGUub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgdGVzdFBhc3NlZEFuZE5vdGlmeURvbmUo
J0ZpcmVkIEVycm9yIGV2ZW50LicpIH07Citkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxl
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9ubG9h
ZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25sb2Fk
LWhhbmRsZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFN0eWxlRWxlbWVudC9wcm9ncmFtbWF0aWNhbGx5LWFkZC1zdHlsZS13aXRoLW9ubG9h
ZC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGlzIGZpcmVkIGF0IGEgcHJvZ3JhbW1hdGljYWxseSBp
bnNlcnRlZCBIVE1MIFN0eWxlIGVsZW1lbnQgb25jZSBpdCBsb2FkcyBpdHMgc3R5bGUgc2hlZXQu
IFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJlbG93LiBPdGhlcndp
c2UsIGl0IEZBSUxFRC4KKworUEFTUyBGaXJlZCBMb2FkIGV2ZW50LgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxl
LXdpdGgtb25sb2FkLWhhbmRsZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MU3R5bGVFbGVtZW50L3Byb2dyYW1tYXRpY2FsbHktYWRkLXN0eWxlLXdpdGgtb25s
b2FkLWhhbmRsZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTdHlsZUVsZW1lbnQvcHJvZ3JhbW1hdGljYWxseS1hZGQtc3R5bGUtd2l0aC1vbmxvYWQtaGFu
ZGxlci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vSFRNTExpbmtFbGVtZW50L3Jlc291cmNl
cy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhIHByb2dyYW1tYXRpY2Fs
bHkgaW5zZXJ0ZWQgSFRNTCBTdHlsZSBlbGVtZW50IG9uY2UgaXQgbG9hZHMgaXRzIHN0eWxlIHNo
ZWV0LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3Ro
ZXJ3aXNlLCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0
PgordmFyIHN0eWxlID0gY3JlYXRlU3R5bGVFbGVtZW50V2l0aFN0cmluZygiIik7CitzdHlsZS5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWRBbmROb3RpZnlEb25lKCdGaXJlZCBMb2Fk
IGV2ZW50LicpIH07CitzdHlsZS5vbmVycm9yID0gZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVkQW5k
Tm90aWZ5RG9uZSgnRmlyZWQgRXJyb3IgZXZlbnQuIFNob3VsZCBoYXZlIGZpcmVkIExvYWQgZXZl
bnQuJykgfTsKK2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVt
ZW50L3N0eWxlLW9uZXJyb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxl
LW9uZXJyb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoaXMg
dGVzdHMgdGhhdCBhIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVu
dCB3aG9zZSBAaW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFT
U0VEIGlmIHRoZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQg
RkFJTEVELgorCitQQVNTIEVycm9yIGV2ZW50IGZpcmVkLgorUEFTUyAjdGVzdCBjb2xvciB3YXMg
cmdiKDI1NSwgMjU1LCAwKS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxl
RWxlbWVudC9zdHlsZS1vbmVycm9yLXdpdGgtZXhpc3RlbnQtYW5kLW5vbi1leGlzdGVudC1pbXBv
cnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxT
dHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQt
aW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJvci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhp
c3RlbnQtaW1wb3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitz
dHlsZXNoZWV0LmNzcyBoYXMgTUlNRSB0eXBlIHRleHQvY3NzCitUaGlzIHRlc3RzIHRoYXQgYSBF
cnJvciBldmVudCBpcyBmaXJlZCBhdCBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgd2hvc2UgQGltcG9y
dCBzdHlsZSBzaGVldCBmYWlsZWQgdG8gbG9hZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVyZSBh
cmUgb25seSBQQVNTIG1lc3NhZ2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKworUEFT
UyBFcnJvciBldmVudCBmaXJlZC4KK1BBU1MgI3Rlc3QgY29sb3Igd2FzIHJnYigwLCAwLCAyNTUp
LgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9u
ZXJyb3Itd2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25lcnJv
ci13aXRoLWV4aXN0ZW50LWFuZC1ub24tZXhpc3RlbnQtaW1wb3J0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9uZXJyb3It
d2l0aC1leGlzdGVudC1hbmQtbm9uLWV4aXN0ZW50LWltcG9ydC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vSFRNTExpbmtFbGVtZW50L3Jlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBjaGVja1Jlc3VsdCgpCit7CisgIHRlc3RQ
YXNzZWQoIkVycm9yIGV2ZW50IGZpcmVkLiIpOworICBzaG91bGRDb21wdXRlZENvbG9yT2ZFbGVt
ZW50QmVFcXVhbFRvUkdCU3RyaW5nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IiksICJy
Z2IoMCwgMCwgMjU1KSIgLyogYmx1ZSAqLyk7IC8vIGkuZS4gc3R5bGVzaGVldC5jc3Mgc3VjY2Vz
c2Z1bGx5IGxvYWRlZAorICB0ZXN0RmluaXNoZWQoKTsKK30KKzwvc2NyaXB0PgorPHN0eWxlIG9u
bG9hZD0idGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoJ0xvYWQgZXZlbnQgZmlyZWQuIFNob3VsZCBo
YXZlIGZpcmVkIEVycm9yIGV2ZW50LicpIiBvbmVycm9yPSJjaGVja1Jlc3VsdCgpIj4KK0BpbXBv
cnQgIi4uL0hUTUxMaW5rRWxlbWVudC9yZXNvdXJjZXMvc3R5bGVzaGVldC5jc3MiOworQGltcG9y
dCAicmVzb3VyY2VzL25vbi1leGlzdGVudC1zdHlsZXNoZWV0LmNzcyI7CisjdGVzdCB7IGNvbG9y
OiB5ZWxsb3c7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhh
dCBhIEVycm9yIGV2ZW50IGlzIGZpcmVkIGF0IGFuIEhUTUwgU3R5bGUgZWxlbWVudCB3aG9zZSBA
aW1wb3J0IHN0eWxlIHNoZWV0IGZhaWxlZCB0byBsb2FkLiBUaGlzIHRlc3QgUEFTU0VEIGlmIHRo
ZXJlIGFyZSBvbmx5IFBBU1MgbWVzc2FnZXMgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELjwv
cD4KKzxoMSBpZD0idGVzdCI+PCEtLSBUZXN0IGVsZW1lbnQgLS0+PC9oMT4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmVycm9yLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxl
LW9uZXJyb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL0hUTUxMaW5rRWxlbWVudC9yZXNv
dXJjZXMvbGluay1sb2FkLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rp
b24gcGFzc2VkKCkKK3sKKyAgdGVzdFBhc3NlZCgiRXJyb3IgZXZlbnQgZmlyZWQuIik7CisgIHNo
b3VsZENvbXB1dGVkQ29sb3JPZkVsZW1lbnRCZUVxdWFsVG9SR0JTdHJpbmcoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QiKSwgInJnYigyNTUsIDI1NSwgMCkiIC8qIHllbGxvdyAqLyk7Cisg
IHRlc3RGaW5pc2hlZCgpOworfQorPC9zY3JpcHQ+Cis8c3R5bGUgb25sb2FkPSJ0ZXN0RmFpbGVk
QW5kTm90aWZ5RG9uZSgnTG9hZCBldmVudCBmaXJlZC4gU2hvdWxkIGhhdmUgZmlyZWQgRXJyb3Ig
ZXZlbnQuJykiIG9uZXJyb3I9InBhc3NlZCgpIj4KK0BpbXBvcnQgInJlc291cmNlcy9ub24tZXhp
c3RlbnQtc3R5bGVzaGVldC5jc3MiOworI3Rlc3QgeyBjb2xvcjogeWVsbG93OyB9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBFcnJvciBldmVudCBpcyBm
aXJlZCBhdCBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgd2hvc2UgQGltcG9ydCBzdHlsZSBzaGVldCBm
YWlsZWQgdG8gbG9hZC4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB0aGVyZSBhcmUgb25seSBQQVNTIG1l
c3NhZ2VzIGJlbG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC48L3A+Cis8aDEgaWQ9InRlc3QiPjwh
LS0gVGVzdCBlbGVtZW50IC0tPjwvaDE+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQv
c3R5bGUtb25sb2FkMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQyLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25s
b2FkMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0
cyB0aGF0IHdlIGZpcmUgdHdvIExvYWQgZXZlbnRzIG9uIGEgcGFnZSB3aXRoIHR3byBIVE1MIFN0
eWxlIGVsZW1lbnRzIGFuZCB0aGF0IGJvdGggZXZlbnRzIGFyZSBmaXJlZCBiZWZvcmUgdGhlIExv
YWQgZXZlbnQgZm9yIHRoZSB3aW5kb3cgaXMgZGlzcGF0Y2hlZC4gVGhpcyB0ZXN0IFBBU1NFRCBp
ZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1MgYmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQ
QVNTIEZpcmVkIDIgTG9hZCBldmVudHMuCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkMi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxv
YWQyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2Vz
L2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBudW1iZXJP
ZkZpcmVkTG9hZEV2ZW50cyA9IDA7Cit2YXIgZXhwZWN0ZWROdW1iZXJPZkZpcmVkTG9hZEV2ZW50
cyA9IDI7CisKK2Z1bmN0aW9uIGNoZWNrSWZEb25lKGVsZW1lbnROYW1lKQoreworICArK251bWJl
ck9mRmlyZWRMb2FkRXZlbnRzOworCisgIGlmIChudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyA8IGV4
cGVjdGVkTnVtYmVyT2ZGaXJlZExvYWRFdmVudHMgJiYgZWxlbWVudE5hbWUgPT09ICdib2R5Jykg
eworICAgIGxvZygiRkFJTCBGaXJlZCB3aW5kb3cgTG9hZCBldmVudCBiZWZvcmUgc3R5bGUgTG9h
ZCBldmVudHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7CisgIH0KKyAgaWYgKG51bWJlck9mRmly
ZWRMb2FkRXZlbnRzID09PSBleHBlY3RlZE51bWJlck9mRmlyZWRMb2FkRXZlbnRzKSB7CisgICAg
bG9nKCJQQVNTIEZpcmVkICIgKyBudW1iZXJPZkZpcmVkTG9hZEV2ZW50cyArICIgTG9hZCBldmVu
dHMuIik7CisgICAgdGVzdEZpbmlzaGVkKCk7CisgIH0KK30KKzwvc2NyaXB0PgorPHN0eWxlIG9u
bG9hZD0iY2hlY2tJZkRvbmUoJ3N0eWxlMScpIj48L3N0eWxlPgorPHN0eWxlIG9ubG9hZD0iY2hl
Y2tJZkRvbmUoJ3N0eWxlMicpIj48L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJjaGVj
a0lmRG9uZSgnYm9keScpIj4KKzxwPlRoaXMgdGVzdHMgdGhhdCB3ZSBmaXJlIHR3byBMb2FkIGV2
ZW50cyBvbiBhIHBhZ2Ugd2l0aCB0d28gSFRNTCBTdHlsZSBlbGVtZW50cyBhbmQgdGhhdCBib3Ro
IGV2ZW50cyBhcmUgZmlyZWQgYmVmb3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93IGlz
IGRpc3BhdGNoZWQuIFRoaXMgdGVzdCBQQVNTRUQgaWYgeW91IHNlZSB0aGUgd29yZCBQQVNTIGJl
bG93LiBPdGhlcndpc2UsIGl0IEZBSUxFRC4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVu
dC9zdHlsZS1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtYmVm
b3JlLXBhZ2UtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZvcmUtcGFnZS1sb2FkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3RzIHRoYXQg
YSBMb2FkIGV2ZW50IGZvciBhbiBIVE1MIFN0eWxlIGVsZW1lbnQgY29tZXMgYmVmb3JlIHRoZSBM
b2FkIGV2ZW50IGZvciB0aGUgd2luZG93LiBUaGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhl
IHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlMRUQuCisKK1BBU1MgRmlyZWQgTG9h
ZCBldmVudCBhdCBzdHlsZS4KK1BBU1MgRmlyZWQgTG9hZCBldmVudCBhdCBib2R5LgorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9ubG9hZC1iZWZv
cmUtcGFnZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxv
YWQtYmVmb3JlLXBhZ2UtbG9hZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vSFRNTExpbmtF
bGVtZW50L3Jlc291cmNlcy9saW5rLWxvYWQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+Cit2YXIgZXhwZWN0ZWRMb2FkRXZlbnRUYXJnZXRzID0gWyJzdHlsZSIsICJib2R5Il07CisK
K2Z1bmN0aW9uIGRpZFJlY2VpdmVMb2FkRXZlbnQoZWxlbWVudE5hbWUpCit7CisgIHZhciBleHBl
Y3RlZFRhcmdldCA9IGV4cGVjdGVkTG9hZEV2ZW50VGFyZ2V0cy5zaGlmdCgpOworICBpZiAoZXhw
ZWN0ZWRUYXJnZXQgPT09IGVsZW1lbnROYW1lKQorICAgIHRlc3RQYXNzZWRBbmROb3RpZnlEb25l
KCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSArICIuIik7CisgIGVsc2Ugewor
ICAgIC8vIFdlIGRvbid0IGNhbGwgdGVzdEZhaWxlZEFuZE5vdGlmeURvbmUoKSBvciB0ZXN0Rmlu
aXNoZWQoKSBiZWNhdXNlIHdlIHdhbnQgdG8gbG9nIGFkZGl0aW9uYWwgTG9hZCBldmVudHMgYXMg
aXQKKyAgICAvLyBtYXkgaGVscCB0b3dhcmRzIGRlYnVnZ2luZyB0aGlzIHRlc3QgY2FzZS4KKyAg
ICB0ZXN0RmFpbGVkKCJGaXJlZCBMb2FkIGV2ZW50IGF0ICIgKyBlbGVtZW50TmFtZSArICIsIGJ1
dCBzaG91bGQgaGF2ZSBmaXJlZCBpdCBhdCAiICsgZXhwZWN0ZWRUYXJnZXQgKyAiLiIpOworICB9
Cit9Cis8L3NjcmlwdD4KKzxzdHlsZSBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZlbnQoJ3N0eWxl
JykiPjwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRpZFJlY2VpdmVMb2FkRXZlbnQo
J2JvZHknKSI+Cis8cD5UaGlzIHRlc3RzIHRoYXQgYSBMb2FkIGV2ZW50IGZvciBhbiBIVE1MIFN0
eWxlIGVsZW1lbnQgY29tZXMgYmVmb3JlIHRoZSBMb2FkIGV2ZW50IGZvciB0aGUgd2luZG93LiBU
aGlzIHRlc3QgUEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNl
LCBpdCBGQUlMRUQuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L3N0eWxlLW9u
bG9hZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9zdHlsZS1vbmxvYWQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgdGhhdCBhIExv
YWQgZXZlbnQgaXMgZmlyZWQgYXQgYW4gSFRNTCBTdHlsZSBlbGVtZW50IGFmdGVyIGl0IHN1Y2Nl
c3NmdWxseSBsb2Fkcy4gVGhpcyB0ZXN0IFBBU1NFRCBpZiB5b3Ugc2VlIHRoZSB3b3JkIFBBU1Mg
YmVsb3cuIE90aGVyd2lzZSwgaXQgRkFJTEVELgorCitQQVNTIEZpcmVkIExvYWQgZXZlbnQuCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2Fk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVu
dC9zdHlsZS1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvc3R5bGUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9IVE1MTGlua0VsZW1lbnQvcmVzb3VyY2VzL2xpbmstbG9hZC11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgorPHN0eWxlIG9ubG9hZD0idGVzdFBhc3NlZEFuZE5vdGlmeURvbmUoJ0ZpcmVkIExvYWQg
ZXZlbnQuJykiIG9uZXJyb3I9InRlc3RGYWlsZWRBbmROb3RpZnlEb25lKCdGaXJlZCBFcnJvciBl
dmVudC4gU2hvdWxkIGhhdmUgZmlyZWQgTG9hZCBldmVudC4nKSI+PC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgTG9hZCBldmVudCBpcyBmaXJlZCBhdCBhbiBI
VE1MIFN0eWxlIGVsZW1lbnQgYWZ0ZXIgaXQgc3VjY2Vzc2Z1bGx5IGxvYWRzLiBUaGlzIHRlc3Qg
UEFTU0VEIGlmIHlvdSBzZWUgdGhlIHdvcmQgUEFTUyBiZWxvdy4gT3RoZXJ3aXNlLCBpdCBGQUlM
RUQuCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="130601"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="130611"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>