<?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>96474</bug_id>
          
          <creation_ts>2012-09-12 00:07:19 -0700</creation_ts>
          <short_desc>Add status events on &lt;link rel=prerender&gt; elements.</short_desc>
          <delta_ts>2012-12-08 13:38:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Gavin Peters">gavinp</assigned_to>
          <cc>abarth</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>philn</cc>
    
    <cc>syoichi</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717978</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-09-12 00:07:19 -0700</bug_when>
    <thetext>Add PrerenderStatusEvent on &lt;link rel=prerender&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717979</commentid>
    <comment_count>1</comment_count>
      <attachid>163530</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-09-12 00:09:48 -0700</bug_when>
    <thetext>Created attachment 163530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717981</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-09-12 00:12:44 -0700</bug_when>
    <thetext>See https://chromiumcodereview.appspot.com/10918189 for the chromium side of this.

Adam, WDYT?

Because of the change to WebPrerenderingSupport, I&apos;ll have to stage this, but I wanted to upload this for review as a whole before I split it for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718530</commentid>
    <comment_count>3</comment_count>
      <attachid>163530</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 11:22:29 -0700</bug_when>
    <thetext>Comment on attachment 163530
Patch

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

&gt; Source/Platform/chromium/public/WebPrerender.h:69
&gt; +    WEBKIT_EXPORT void sendPrerenderStatusEvent(const WebString&amp;);

In principle, the platform layer shouldn&apos;t have any concept of events, which are a DOM concept.  Is this more of a notification from the platform to WebKit?  Perhaps it should be named in that style, e.g., didChangeStatus(const WebString&amp; description).

&gt; Source/WebCore/dom/PrerenderStatusEvent.cpp:32
&gt; +#include &quot;config.h&quot;

Should this entire file be behind an ENABLE(LINK_PRERENDER) flag?

&gt; Source/WebCore/dom/PrerenderStatusEvent.idl:34
&gt; +#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP

What&apos;s up with these ifdefs?

&gt; Source/WebCore/dom/PrerenderStatusEvent.idl:39
&gt; +  readonly attribute [TreatReturnedNullStringAs=Null, InitializedByEventConstructor] DOMString status;

bad indent

&gt; Source/WebCore/html/HTMLLinkElement.h:95
&gt; +    virtual void linkLoaded() OVERRIDE;
&gt; +    virtual void linkLoadingErrored() OVERRIDE;
&gt; +#if ENABLE(LINK_PRERENDER)    
&gt; +    virtual void linkPrerenderStatus(const String&amp;) OVERRIDE;

I wonder if we should rename these to be more in notification style (e.g., didChangeLinkPrerenderStatus)

&gt; Source/WebCore/loader/Prerenderer.cpp:71
&gt; -PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(const KURL&amp; url)
&gt; +PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(PrerenderClient* prerenderClient, const KURL&amp; url)

prerenderClient -&gt; client

&gt; Source/WebCore/platform/chromium/Prerender.cpp:48
&gt; +       

Looks like you&apos;ve got an extra line here.

&gt; Source/WebCore/platform/chromium/Prerender.h:82
&gt; +    PrerenderClient*const m_client;

We don&apos;t usually worry about the const-ness of clients</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718533</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 11:23:16 -0700</bug_when>
    <thetext>Where did we get with standards on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718535</commentid>
    <comment_count>5</comment_count>
      <attachid>163530</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 11:24:13 -0700</bug_when>
    <thetext>Comment on attachment 163530
Patch

It&apos;s a bit strange that the platform provides a string that&apos;s directly exposed to the web platform.  I would have expected there to be an enum or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746761</commentid>
    <comment_count>6</comment_count>
      <attachid>163530</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 16:44:18 -0700</bug_when>
    <thetext>Comment on attachment 163530
Patch

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

&gt; Source/WebCore/dom/PrerenderStatusEvent.idl:41
&gt; +        void initPrerenderStatusEvent(in [Optional=DefaultIsUndefined] DOMString typeArg,

These sorts of functions are old-fashioned these days.  We can just skip them in favor of just using the event constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748952</commentid>
    <comment_count>7</comment_count>
      <attachid>170230</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-10-23 13:56:51 -0700</bug_when>
    <thetext>Created attachment 170230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748954</commentid>
    <comment_count>8</comment_count>
      <attachid>163530</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-10-23 13:58:25 -0700</bug_when>
    <thetext>Comment on attachment 163530
Patch

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

&gt;&gt; Source/WebCore/dom/PrerenderStatusEvent.cpp:32
&gt;&gt; +#include &quot;config.h&quot;
&gt; 
&gt; Should this entire file be behind an ENABLE(LINK_PRERENDER) flag?

I deleted the file.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.h:95
&gt;&gt; +    virtual void linkPrerenderStatus(const String&amp;) OVERRIDE;
&gt; 
&gt; I wonder if we should rename these to be more in notification style (e.g., didChangeLinkPrerenderStatus)

Done.

&gt;&gt; Source/WebCore/loader/Prerenderer.cpp:71
&gt;&gt; +PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(PrerenderClient* prerenderClient, const KURL&amp; url)
&gt; 
&gt; prerenderClient -&gt; client

Oh hum. There&apos;s already a PrerendererClient, and this client is a PrerenderClient for the Prerender. If I name this automatic client, then what about the method client(), which gives the PrerendererClient?

&gt;&gt; Source/WebCore/platform/chromium/Prerender.h:82
&gt;&gt; +    PrerenderClient*const m_client;
&gt; 
&gt; We don&apos;t usually worry about the const-ness of clients

Now I don&apos;t, either!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748958</commentid>
    <comment_count>9</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-10-23 13:59:37 -0700</bug_when>
    <thetext>Adam,

This is a newer version patched up according to your suggestions.

How do you think about this approach, and the names I chose? I&apos;d like your opinion on them before I take this to a whatwg proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748959</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 13:59:56 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748960</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 14:00:16 -0700</bug_when>
    <thetext>Attachment 170230 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/loader/LinkLoader.h:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748966</commentid>
    <comment_count>12</comment_count>
      <attachid>170230</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-23 14:03:53 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

Attachment 170230 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14496809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748969</commentid>
    <comment_count>13</comment_count>
      <attachid>170230</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-23 14:05:50 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

Attachment 170230 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14490952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748981</commentid>
    <comment_count>14</comment_count>
      <attachid>170230</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-23 14:16:19 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

Attachment 170230 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14530078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748993</commentid>
    <comment_count>15</comment_count>
      <attachid>170230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-23 14:34:50 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

Attachment 170230 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14524134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749056</commentid>
    <comment_count>16</comment_count>
      <attachid>170230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-23 15:27:23 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

Attachment 170230 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14526132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749177</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-10-23 18:02:31 -0700</bug_when>
    <thetext>Just a note that EWS failures were expected: the change needs to be staged to land properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750413</commentid>
    <comment_count>18</comment_count>
      <attachid>170230</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-24 23:23:12 -0700</bug_when>
    <thetext>Comment on attachment 170230
Patch

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

This looks great.  We just need tests and a spec.

&gt; Source/Platform/ChangeLog:8
&gt; +        The new PrerenderStatusEvent is sent to link elements when prerenders are started by the embedder, and also sent when they are stopped. Pages using this feature can now serialize launching prerenders, and track timing performance.

Would you mind wrapping these lines to something sensible?  They&apos;re just a bit hard to read like this.

&gt; Source/Platform/chromium/public/WebPrerender.h:72
&gt; +    WEBKIT_EXPORT void didSendLoadForPrerender();
&gt; +    WEBKIT_EXPORT void didSendDOMContentLoadedForPrerender();

These are slightly odd concepts to have at the Platform layer because they&apos;re DOM concepts, but it&apos;s for the DOM of the prerender, so I guess that makes sense.

&gt; Source/WebCore/dom/EventNames.h:249
&gt; +    macro(webkitPrerenderStart) \
&gt; +    macro(webkitPrerenderStop) \
&gt; +    macro(webkitPrerenderLoad) \
&gt; +    macro(webkitPrerenderDOMContentLoaded)

These should be in all lower case.  webkitRegionLayoutUpdate is wrong.

&gt; Source/WebCore/html/HTMLLinkElement.cpp:380
&gt; +#if ENABLE(LINK_PRERENDER)
&gt; +void HTMLLinkElement::didStartLinkPrerender()
&gt; +{
&gt; +    dispatchEvent(Event::create(eventNames().webkitPrerenderStartEvent, false, false));
&gt; +}
&gt; +
&gt; +void HTMLLinkElement::didStopLinkPrerender()
&gt; +{
&gt; +    dispatchEvent(Event::create(eventNames().webkitPrerenderStopEvent, false, false));
&gt; +}
&gt; +
&gt; +void HTMLLinkElement::didSendLoadForLinkPrerender()
&gt; +{
&gt; +    dispatchEvent(Event::create(eventNames().webkitPrerenderLoadEvent, false, false));
&gt; +}
&gt; +
&gt; +void HTMLLinkElement::didSendDOMContentLoadedForLinkPrerender()
&gt; +{
&gt; +    dispatchEvent(Event::create(eventNames().webkitPrerenderDOMContentLoadedEvent, false, false));
&gt; +}
&gt; +#endif

Do we want to dispatch these asynchronously?  Will the calling code in the embedder realize that they can execute arbitrary JavaScript?  It&apos;s often better to do that with a clean stack.

&gt; Source/WebCore/loader/Prerenderer.cpp:71
&gt; -PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(const KURL&amp; url)
&gt; +PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(PrerenderClient* prerenderClient, const KURL&amp; url)

I would have just called this parameter &quot;client&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760685</commentid>
    <comment_count>19</comment_count>
      <attachid>170230</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-07 07:33:45 -0800</bug_when>
    <thetext>Comment on attachment 170230
Patch

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

Tests you say? And a spec? OK, but just this once... I&apos;ll advance this and upload it in parallel with sharing the spec on whatwg as you advised me in email.

&gt;&gt; Source/Platform/ChangeLog:8
&gt;&gt; +        The new PrerenderStatusEvent is sent to link elements when prerenders are started by the embedder, and also sent when they are stopped. Pages using this feature can now serialize launching prerenders, and track timing performance.
&gt; 
&gt; Would you mind wrapping these lines to something sensible?  They&apos;re just a bit hard to read like this.

Done. I get confused by the ad-hoc wrapping in ChangeLog, so rather than make something up, I just didn&apos;t wrap. I&apos;ll pick one and run with it on my next upload...

&gt;&gt; Source/Platform/chromium/public/WebPrerender.h:72
&gt;&gt; +    WEBKIT_EXPORT void didSendDOMContentLoadedForPrerender();
&gt; 
&gt; These are slightly odd concepts to have at the Platform layer because they&apos;re DOM concepts, but it&apos;s for the DOM of the prerender, so I guess that makes sense.

Tricky, yes. These are better names than before. I will try and think of better ones.

&gt;&gt; Source/WebCore/dom/EventNames.h:249
&gt;&gt; +    macro(webkitPrerenderDOMContentLoaded)
&gt; 
&gt; These should be in all lower case.  webkitRegionLayoutUpdate is wrong.

Done.

&gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:380
&gt;&gt; +#endif
&gt; 
&gt; Do we want to dispatch these asynchronously?  Will the calling code in the embedder realize that they can execute arbitrary JavaScript?  It&apos;s often better to do that with a clean stack.

In the Chromium browser, these are launched from an async event, so the embedder will not be affected either way, and debugging is a bit easier without the asynchronous launch. On that basis, I slightly favour not launching asynchronously, only by a hair since other embedders could benefit from protection. Given that, what do you think?

&gt;&gt; Source/WebCore/loader/LinkLoader.h:53
&gt;&gt; +                 , public PrerenderClient {
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Oh foo.

&gt;&gt; Source/WebCore/loader/Prerenderer.cpp:71
&gt;&gt; +PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(PrerenderClient* prerenderClient, const KURL&amp; url)
&gt; 
&gt; I would have just called this parameter &quot;client&quot;

That doesn&apos;t compile without changing the call to Prerenderer::client() to explicitly scope the class method.

There&apos;s too many clients here; the Prerenderer has a client, and this client parameter is for the prerender.

Should I rename the Prerenderer::client() method? I thought that was the one that won the fight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760822</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 10:11:00 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 170230 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170230&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/html/HTMLLinkElement.cpp:380
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; Do we want to dispatch these asynchronously?  Will the calling code in the embedder realize that they can execute arbitrary JavaScript?  It&apos;s often better to do that with a clean stack.
&gt; 
&gt; In the Chromium browser, these are launched from an async event, so the embedder will not be affected either way, and debugging is a bit easier without the asynchronous launch. On that basis, I slightly favour not launching asynchronously, only by a hair since other embedders could benefit from protection. Given that, what do you think?

Ok, the way you have it probably fine.  That&apos;s how we handle notifications from the network stack.

&gt; &gt;&gt; Source/WebCore/loader/Prerenderer.cpp:71
&gt; &gt;&gt; +PassRefPtr&lt;PrerenderHandle&gt; Prerenderer::render(PrerenderClient* prerenderClient, const KURL&amp; url)
&gt; &gt; 
&gt; &gt; I would have just called this parameter &quot;client&quot;
&gt; 
&gt; That doesn&apos;t compile without changing the call to Prerenderer::client() to explicitly scope the class method.
&gt; 
&gt; There&apos;s too many clients here; the Prerenderer has a client, and this client parameter is for the prerender.
&gt; 
&gt; Should I rename the Prerenderer::client() method? I thought that was the one that won the fight.

The way you have it is probably fine.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761785</commentid>
    <comment_count>21</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 07:41:32 -0800</bug_when>
    <thetext>There&apos;s now a standards discussion started at http://wiki.whatwg.org/wiki/Link_prerender_events , and on the whatwg mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761908</commentid>
    <comment_count>22</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 10:14:56 -0800</bug_when>
    <thetext>I spent some time thinking about testing.

I am not sure there&apos;s a great story in layout tests here. The interface that sends these events is on WebKit::WebPrerender, part of Platform. I can definitely add thunks in DRTTestRunner for each of these four events, and they&apos;d hope over into the MockWebPrerenderingSupport in DRT.... But that seems like a lot to test this event creation.

Perhaps the right story is that the chrome browser_tests test this. The chrome CL (which is not as far along as this one) has tests at http://codereview.chromium.org/10918189/diff/1/chrome/browser/prerender/prerender_browsertest.cc which are full system tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761926</commentid>
    <comment_count>23</comment_count>
      <attachid>173064</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 10:24:38 -0800</bug_when>
    <thetext>Created attachment 173064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761927</commentid>
    <comment_count>24</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 10:25:21 -0800</bug_when>
    <thetext>And this latest upload cleans up the ChangeList, and explains away the lack of tests with a hand wave. How&apos;s this? I&apos;d like to get to work on staging it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761931</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 10:26:40 -0800</bug_when>
    <thetext>Attachment 173064 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebCore/loader/LinkLoader.h:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761940</commentid>
    <comment_count>26</comment_count>
      <attachid>173064</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-08 10:31:05 -0800</bug_when>
    <thetext>Comment on attachment 173064
Patch

Attachment 173064 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14760879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761946</commentid>
    <comment_count>27</comment_count>
      <attachid>173064</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-08 10:34:12 -0800</bug_when>
    <thetext>Comment on attachment 173064
Patch

Attachment 173064 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14771293</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761954</commentid>
    <comment_count>28</comment_count>
      <attachid>173064</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-08 10:39:58 -0800</bug_when>
    <thetext>Comment on attachment 173064
Patch

Attachment 173064 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14755975</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761969</commentid>
    <comment_count>29</comment_count>
      <attachid>170230</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 10:50:25 -0800</bug_when>
    <thetext>Comment on attachment 170230
Patch

I spoke too soon: this patch is failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761983</commentid>
    <comment_count>30</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-11-08 11:09:06 -0800</bug_when>
    <thetext>False alarm. After rebasing the chrome patches, I&apos;m passing the browser test now, although no try jobs until more remediation. See http://codereview.chromium.org/10918189/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762436</commentid>
    <comment_count>31</comment_count>
      <attachid>173064</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-08 18:56:52 -0800</bug_when>
    <thetext>Comment on attachment 173064
Patch

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

The general approach looks good.  We need some tests and for the patch to compile.  :)

&gt; Source/WebCore/platform/PrerenderClient.h:35
&gt; +#if ENABLE(LINK_PRERENDER)

If you like, you can move the ENABLE(LINK_PRERENDER) inside the class definition.  That way you can remove the ifdef in the LinkLoader parent class definition.  The compiler will optimize away the empty base class.

&gt; Source/WebCore/platform/chromium/Prerender.cpp:96
&gt; +    if (m_client)

Is m_client ever 0?  It looks like you initialize it in the constructor and never clear it.

&gt; Source/WebCore/platform/chromium/Prerender.h:85
&gt; +    PrerenderClient* m_client;

Is the lifetime of m_client always longer than that of this class?  This class is RefCounted, which makes me worry that it might outlive m_client...  In fact, it looks like the embedder can take a reference to Prerender via WebPrerender and keep it alive for an arbitrary length of time.

We probably need some way to 0 out this pointer when the PrerenderClient dies.  Maybe you have that already and I missed it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785030</commentid>
    <comment_count>32</comment_count>
      <attachid>178031</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-06 10:40:14 -0800</bug_when>
    <thetext>Created attachment 178031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785031</commentid>
    <comment_count>33</comment_count>
      <attachid>178031</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-06 10:41:56 -0800</bug_when>
    <thetext>Comment on attachment 178031
Patch

Adam, what do you think? I am much happier with this (lifetime is easier to understand). And I also added lots of unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785086</commentid>
    <comment_count>34</comment_count>
      <attachid>178031</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-06 11:32:48 -0800</bug_when>
    <thetext>Comment on attachment 178031
Patch

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

The bulk of this change is fine, but your unit tests are talking to WebCore directly.  We try to avoid that whenever possible.  Would you be willing to re-work you tests to use the WebKit API?

&gt; Source/WebCore/platform/PrerenderClient.h:39
&gt; +#if ENABLE(LINK_PRERENDER)

Usually we put these ifdefs around the whole header, but I guess this saves ifdefs elsewhere?

&gt; Source/WebKit/chromium/tests/PrerenderingTest.cpp:59
&gt; +    TestPrerendererClient(WebView* webView)

explicit

&gt; Source/WebKit/chromium/tests/PrerenderingTest.cpp:107
&gt; +WebView* staticWebViewForTest()
&gt; +{
&gt; +    static WebView* webView = 0;
&gt; +    if (!webView) {
&gt; +        webView = FrameTestHelpers::createWebViewAndLoad(&quot;about:blank&quot;);
&gt; +        webView-&gt;setFocus(true);
&gt; +    }
&gt; +    return webView;
&gt; +}

Please don&apos;t use a static WebView.  That can cause state leaks between tests.  If you copied this pattern from another test, can we remove this pattern from that test in a followup patch?

&gt; Source/WebKit/chromium/tests/PrerenderingTest.cpp:113
&gt; +TestPrerendererClient* staticPrerendererClientForTest()
&gt; +{
&gt; +    static TestPrerendererClient* prerendererClient = new TestPrerendererClient(staticWebViewForTest());
&gt; +    return prerendererClient;
&gt; +}

Please do not use statics.

&gt; Source/WebKit/chromium/tests/PrerenderingTest.cpp:322
&gt; +    RefPtr&lt;WebCore::PrerenderHandle&gt; handle = prerenderer()-&gt;render(&amp;client, toKURL(&quot;http://www.foo.com&quot;));

We shouldn&apos;t talk directly to WebCore in unit tests.  We should use the WebKit API to do all of our testing.

&gt; Source/WebKit/chromium/tests/PrerenderingTest.cpp:401
&gt; +    prerenderer()-&gt;suspend(WebCore::ActiveDOMObject::PageWillBeSuspended);

This isn&apos;t the right way to test this stuff.  You should test it via the API.  There won&apos;t be any way to test suspect today in Chromium because Chromium never calls suspend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786519</commentid>
    <comment_count>35</comment_count>
      <attachid>178357</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-08 09:06:58 -0800</bug_when>
    <thetext>Created attachment 178357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786520</commentid>
    <comment_count>36</comment_count>
      <attachid>178358</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-08 09:11:01 -0800</bug_when>
    <thetext>Created attachment 178358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786521</commentid>
    <comment_count>37</comment_count>
      <attachid>178358</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-08 09:13:00 -0800</bug_when>
    <thetext>Comment on attachment 178358
Patch

Thanks for all your reviews Adam. The new unit test is WebKit only, without referencing WebCore. Based on your earlier r+, I&apos;m cq+ing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786571</commentid>
    <comment_count>38</comment_count>
      <attachid>178358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 12:04:42 -0800</bug_when>
    <thetext>Comment on attachment 178358
Patch

Clearing flags on attachment: 178358

Committed r137045: &lt;http://trac.webkit.org/changeset/137045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786572</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 12:04:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786589</commentid>
    <comment_count>40</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 13:02:02 -0800</bug_when>
    <thetext>This patch broke EFL build:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/6825/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786595</commentid>
    <comment_count>41</comment_count>
      <attachid>178358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 13:07:24 -0800</bug_when>
    <thetext>Comment on attachment 178358
Patch

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

&gt; Source/WebCore/loader/LinkLoader.cpp:93
&gt; +void LinkLoader::didStartPrerender()

Looks like those should be protected by a #if ENABLE(LINK_PRERENDER)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786596</commentid>
    <comment_count>42</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2012-12-08 13:08:30 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 178358 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178358&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/LinkLoader.cpp:93
&gt; &gt; +void LinkLoader::didStartPrerender()
&gt; 
&gt; Looks like those should be protected by a #if ENABLE(LINK_PRERENDER)

Yes.

Want me to land a patch doing that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786607</commentid>
    <comment_count>43</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 13:38:11 -0800</bug_when>
    <thetext>Build for !ENABLE(LINK_PRERENDER) platforms was fixed by http://trac.webkit.org/changeset/137047</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163530</attachid>
            <date>2012-09-12 00:09:48 -0700</date>
            <delta_ts>2012-10-23 13:58:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20120912160921.patch</filename>
            <type>text/plain</type>
            <size>52778</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwNDlhNDAwNjk3OWZi
MjIyZTU2NzY3N2E4ZmE0MjQ3ZTJjZjNkNzg4Li41NDdjMGViNjc4NTYxZjU1N2VlZWI2ZmUxNDdh
NzBiMDA5YTY5NDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0xMiAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgUHJlcmVu
ZGVyU3RhdHVzRXZlbnQgb24gPGxpbmsgcmVsPXByZXJlbmRlcj4gZWxlbWVudHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgUHJlcmVuZGVy
U3RhdHVzRXZlbnQgaXMgc2VudCB0byBsaW5rIGVsZW1lbnRzIHdoZW4gcHJlcmVuZGVycyBhcmUg
c3RhcnRlZCBieSB0aGUgZW1iZWRkZXIsIGFuZCBhbHNvIHNlbnQgd2hlbiB0aGV5IGFyZSBzdG9w
cGVkLiBQYWdlcyB1c2luZyB0aGlzIGZlYXR1cmUgY2FuIG5vdyBzZXJpYWxpemUgbGF1bmNoaW5n
IHByZXJlbmRlcnMsIGFuZCB0cmFjayB0aW1pbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBj
aHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmg6CisgICAgICAgIChXZWJQcmVyZW5kZXIpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0Lmg6CisgICAg
ICAgIChXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KToKKwogMjAxMi0wOS0wNCAgS2VuaWNoaSBJc2hp
YmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBBdHRlbXB0
IHRvIGZpeCBidWlsZCBmYWlsdXJlIG9uIFdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3NzYxZDBmOTBlM2Q0
YzFiYzJmODQ3NDE2ZmQ1ZTg3Y2JiOTliOGYuLjBlNDgyYmNjY2UwNjAyMTI4MGZiMzJkODQzYWQw
MTlmOWUzOWQ4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wOS0xMiAgR2F2
aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgUHJlcmVuZGVy
U3RhdHVzRXZlbnQgb24gPGxpbmsgcmVsPXByZXJlbmRlcj4gZWxlbWVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgUHJlcmVuZGVyU3Rh
dHVzRXZlbnQgaXMgc2VudCB0byBsaW5rIGVsZW1lbnRzIHdoZW4gcHJlcmVuZGVycyBhcmUgc3Rh
cnRlZCBieSB0aGUgZW1iZWRkZXIsIGFuZCBhbHNvIHNlbnQgd2hlbiB0aGV5IGFyZSBzdG9wcGVk
LiBQYWdlcyB1c2luZyB0aGlzIGZlYXR1cmUgY2FuIG5vdyBzZXJpYWxpemUgbGF1bmNoaW5nIHBy
ZXJlbmRlcnMsIGFuZCB0cmFjayB0aW1pbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3ByZXJlbmRlci1zdGF0dXMtY29uc3RydWN0b3IuaHRt
bAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1l
cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46Cisg
ICAgICAgICogZG9tL1ByZXJlbmRlclN0YXR1c0V2ZW50LmNwcDogQ29waWVkIGZyb20gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXJTdGF0dXNFdmVu
dEluaXQ6OlByZXJlbmRlclN0YXR1c0V2ZW50SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmVy
ZW5kZXJTdGF0dXNFdmVudDo6flByZXJlbmRlclN0YXR1c0V2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXJlbmRlclN0YXR1c0V2ZW50Ojppbml0UHJlcmVuZGVyU3RhdHVzRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyU3RhdHVzRXZlbnQ6OlByZXJlbmRlclN0YXR1c0V2ZW50
KToKKyAgICAgICAgKiBkb20vUHJlcmVuZGVyU3RhdHVzRXZlbnQuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFByZXJlbmRlclN0YXR1c0V2ZW50SW5pdCk6CisgICAgICAgIChQcmVyZW5kZXJTdGF0
dXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXJTdGF0dXNFdmVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlclN0YXR1c0V2ZW50OjpzdGF0dXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyU3RhdHVzRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAqIGRvbS9QcmVyZW5kZXJTdGF0dXNFdmVudC5pZGw6IENvcGllZCBmcm9tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmNwcC4KKyAg
ICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6bGlua1ByZXJlbmRlclN0YXR1cyk6Cisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxMaW5rRWxlbWVu
dCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6c2VuZFByZXJlbmRlclN0YXR1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxv
YWRlci9MaW5rTG9hZGVyLmg6CisgICAgICAgIChMaW5rTG9hZGVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvTGlua0xvYWRlckNsaWVudC5oOgorICAgICAgICAoTGlua0xvYWRlckNsaWVudCk6CisgICAg
ICAgICogbG9hZGVyL1ByZXJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRl
cmVyOjpyZW5kZXIpOgorICAgICAgICAqIGxvYWRlci9QcmVyZW5kZXJlci5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChQcmVyZW5kZXJlcik6CisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChQcmVyZW5kZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJl
cmVuZGVyQ2xpZW50Ojp+UHJlcmVuZGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmVy
ZW5kZXJIYW5kbGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVySGFu
ZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJl
cmVuZGVyOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpjYW5jZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjphYmFuZG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
ZXJlbmRlcjo6c2VuZFByZXJlbmRlclN0YXR1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHJlcmVuZGVySGFuZGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVySGFu
ZGxlOjpQcmVyZW5kZXJIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViUHJlcmVuZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpzZW5k
UHJlcmVuZGVyU3RhdHVzRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wOS0wMyAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhcnQgMSBvZiByZW1vdmlu
ZyBQbGF0Zm9ybVN0cmluZy5oLCBtb3ZlIHJlbWFpbmluZyBmdW5jdGlvbnMgdG8gbmV3IGhvbWVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRl
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaAppbmRl
eCA1ZWQ4MDQ5MDBmYzZmYTBiNmNjODE4NTQ2NDdkY2I2OWEyMzI1YWM1Li43NzZlY2IwM2RkMGFh
MzlkOGQ5NGY3Njg4NWFmZmNlZDYwMGU3NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7CiAgICAgV0VCS0lU
X0VYUE9SVCBjb25zdCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwogCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNlbmRQcmVyZW5kZXJTdGF0dXNFdmVudChjb25zdCBXZWJTdHJpbmcmKTsK
KwogcHJpdmF0ZToKICAgICBXZWJQcmVyZW5kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaAppbmRleCBh
MjY3MjkxMWZhNTBhODMzNThkMmJmNGIwOTk2ZmQ1NDkzODA2YmEyLi5hMzViNjQzMjZiOWJkMjNl
YjZlNzdlYmJlYzMzOGUxZDZlMDRjNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaApAQCAtNDQsMTUgKzQ0
LDE1IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJQcmVyZW5kZXJpbmdT
dXBwb3J0KiBjdXJyZW50KCk7CiAKICAgICAvLyBBIHByZXJlbmRlciBsaW5rIGVsZW1lbnQgaXMg
YWRkZWQgd2hlbiBpdCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQuCi0gICAgdmlydHVhbCB2
b2lkIGFkZChjb25zdCBXZWJQcmVyZW5kZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZChX
ZWJQcmVyZW5kZXIqKSA9IDA7CiAKICAgICAvLyBBIHByZXJlbmRlciBpcyBjYW5jZWxlZCB3aGVu
IGl0IGlzIHJlbW92ZWQgZnJvbSBhIGRvY3VtZW50LgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwo
Y29uc3QgV2ViUHJlcmVuZGVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoV2ViUHJl
cmVuZGVyKikgPSAwOwogCiAgICAgLy8gQSBwcmVyZW5kZXIgaXMgYWJhbmRvbmVkIHdoZW4gaXQn
cyBuYXZpZ2F0ZWQgYXdheSBmcm9tIG9yIHN1c3BlbmRlZCBpbiB0aGUgcGFnZSBjYWNoZS4gVGhp
cwogICAgIC8vIGlzIGEgd2Vha2VyIHNpZ25hbCB0aGFuIGNhbmNlbCgpLCBzaW5jZSB0aGUgbGF1
bmNoZXIgaGFzbid0IGluZGljYXRlZCB0aGF0IHRoZSBwcmVyZW5kZXIgaXNuJ3QKICAgICAvLyB3
YW50ZWQsIGFuZCB3ZSBtYXkgZW5kIHVwIHVzaW5nIGl0IGFmdGVyLCBmb3IgaW5zdGFuY2UsIGEg
c2hvcnQgcmVkaXJlY3QgY2hhaW4uCi0gICAgdmlydHVhbCB2b2lkIGFiYW5kb24oY29uc3QgV2Vi
UHJlcmVuZGVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhYmFuZG9uKFdlYlByZXJlbmRlciop
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFdlYlByZXJlbmRlcmluZ1N1cHBvcnQoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGU5ZTJlYjdiNDgwNjIxZWY4ZjQ2NzU2NmUy
YzJiNjFmZjU3ZTVhODQuLjllZTEyYTE1OWVmNTc1MjE1ZTViYWU4YjRkYTJhYmY3NzdhYThkMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjg2Niw2ICsyODY2LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb25JdGVyYXRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUHJlcmVuZGVyU3Rh
dHVzRXZlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUHJlcmVuZGVyU3RhdHVzRXZlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwIFwKQEAgLTQ2ODUsNiArNDY4Nyw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmVyZW5kZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFu
ZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZVByaW9yaXR5LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
YzgzM2IwZmQ1NzMxM2QyZDEwNmRkM2VkYTVlNTYwMTViNTYwOGRiMS4uM2IzZjIxYjcyOTRjM2Iw
MzZkY2FiZTI3OGVkNDA5OTI3ZTg1ZjczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC00MzMsNiArNDMzLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1BvcFN0YXRlRXZlbnQuY3BwIFwKICAgICBkb20vUG9z
aXRpb24uY3BwIFwKICAgICBkb20vUG9zaXRpb25JdGVyYXRvci5jcHAgXAorICAgIGRvbS9QcmVy
ZW5kZXJTdGF0dXNFdmVudC5jcHAgXAogICAgIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3Bw
IFwKICAgICBkb20vUHJvZ3Jlc3NFdmVudC5jcHAgXAogICAgIGRvbS9Qcm9wZXJ0eU5vZGVMaXN0
LmNwcCBcCkBAIC0xNTc1LDYgKzE1NzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vUGFnZVRy
YW5zaXRpb25FdmVudC5oIFwKICAgICBkb20vUG9zaXRpb24uaCBcCiAgICAgZG9tL1Bvc2l0aW9u
SXRlcmF0b3IuaCBcCisgICAgZG9tL1ByZXJlbmRlclN0YXR1c0V2ZW50LmggXAogICAgIGRvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBcCiAgICAgZG9tL1Byb2dyZXNzRXZlbnQuaCBcCiAgICAg
ZG9tL1Byb3BlcnR5Tm9kZUxpc3QuaCBcCkBAIC0yMjUzLDYgKzIyNTUsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9UaW1lci5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCiAgICAg
cGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggXAorICAgIHBsYXRmb3JtL1ByZXJlbmRlckNs
aWVudC5oIFwKICAgICBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaCBcCiAgICAgcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5oIFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggM2UzNDc0MGY5NGQ0YWVlOTEyNGM5OThkZTA0Njk4ZTZhMDAxZDU4
OC4uZTg1ODE5YzY0ZjE5NThlZTcwYmM5YWJmMTAzODVkODBmOGE3Nzc0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMTAxNiw2ICsxMDE2LDcgQEAKICAgICAgICAgICAgICdkb20vT3ZlcmZsb3dFdmVu
dC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdkb20vUHJlcmVu
ZGVyU3RhdHVzRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1Byb2dyZXNzRXZlbnQuaWRsJywKICAgICAgICAg
ICAgICdkb20vUHJvcGVydHlOb2RlTGlzdC5pZGwnLApAQCAtMzI4Miw2ICszMjgzLDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1By
ZXJlbmRlckhhbmRsZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1J1
bkxvb3BUaW1lci5oJywKQEAgLTUzMTMsNiArNTMxNSw4IEBACiAgICAgICAgICAgICAnZG9tL1Bv
c2l0aW9uLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwJywKICAg
ICAgICAgICAgICdkb20vUG9zaXRpb25JdGVyYXRvci5oJywKKyAgICAgICAgICAgICdkb20vUHJl
cmVuZGVyU3RhdHVzRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdkb20vUHJlcmVuZGVyU3RhdHVz
RXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAnLAog
ICAgICAgICAgICAgJ2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCcsCiAgICAgICAgICAgICAn
ZG9tL1Byb2dyZXNzRXZlbnQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggOTg0MjJiZWMwYzRiYmQ1NWQ1ZmZmNTk2OTA4Yzc3YWM3MjE3
MzNlNi4uNDhlMDMwNGRkOTBmMWQyOTRiZjRiMDI4NDg5MGIyYWYyODI4YzM3NyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI4NjM5LDYgKzI4
NjM5LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXFByZXJlbmRlckNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5kZXJIYW5kbGUuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CkBAIC01MzI0Nyw2ICs1MzI1MSw2MiBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUHJlcmVuZGVyU3RhdHVzRXZl
bnQuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cUHJlcmVuZGVyU3RhdHVzRXZlbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQyNThmNzAzNGRmMThi
MjQyNzViYjNiN2FmNWM3NjMyODk4MDBmNmQuLjBmOTMxYTMzZjg0MDgzNjY4Y2U5NTQyMGM5ZTY4
Nzk0Yzg5Njc3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTM2OTQsNiArMzY5NCw5IEBACiAJCTk4NTZGOEQxMTU0OUU4NEYw
MEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJI
YW5kbGUuaCAqLzsgfTsKIAkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRy
aWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTg1QkI5NkIxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICovOyB9Owog
CQk5ODVCQjk2RTEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1QkI5NkMxM0E5NDA1ODAw
N0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuaCAqLzsgfTsKKwkJOTg2RUE4N0YxNUZGRjFGMjAw
OTg1RTVFIC8qIFByZXJlbmRlclN0YXR1c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4NkVBODdEMTVGRkYxRjIwMDk4NUU1RSAvKiBQcmVy
ZW5kZXJTdGF0dXNFdmVudC5jcHAgKi87IH07CisJCTk4NkVBODgwMTVGRkYxRjIwMDk4NUU1RSAv
KiBQcmVyZW5kZXJTdGF0dXNFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTg2RUE4N0UxNUZGRjFGMjAwOTg1RTVFIC8qIFByZXJlbmRlclN0YXR1
c0V2ZW50LmggKi87IH07CisJCTk4NkVBODgzMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4
NkVBODgyMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJDbGllbnQuaCAqLzsgfTsKIAkJOThD
RTQzMjYxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8q
IExpbmtMb2FkZXIuY3BwICovOyB9OwogCQk5OENFNDMyQTEyOUUwMEU1MDA1ODIxREMgLyogTGlu
a0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OThDRTQzMjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCAqLzsgfTsKIAkJOThFQjFG
OTUxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyog
Tm90SW1wbGVtZW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTA5MDIsNiArMTA5MDUsOSBAQAogCQk5ODU2RjhEMDE1NDlFODRGMDBCMDRG
M0EgLyogUHJlcmVuZGVySGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByZXJlbmRlckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5ODVCQjk2
QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rUmVsQXR0cmlidXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTg1QkI5NkMxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRy
aWJ1dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua1JlbEF0dHJpYnV0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5ODZFQTg3RDE1RkZGMUYyMDA5ODVF
NUUgLyogUHJlcmVuZGVyU3RhdHVzRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByZXJlbmRlclN0YXR1c0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTg2RUE4N0UxNUZGRjFGMjAwOTg1RTVFIC8qIFByZXJlbmRlclN0YXR1c0V2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVyZW5kZXJTdGF0dXNF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5ODZFQTg4MjE1RkZGMjkwMDA5
ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByZXJlbmRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OENF
NDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOThDRTQzMjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90SW1wbGVtZW50ZWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjcyLDcgKzE1Mjc4LDYgQEAKIAkJCQk0OUU5
MTJBNzBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5jcHAgKi8sCiAJCQkJNDlFOTEy
QTgwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuaCAqLywKIAkJCQkwRjU4MEZBRTE0
OTgwMEQ0MDBGQjVCRDggLyogQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8sCi0JCQkJOTg1NkY4RDAx
NTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oICovLAogCQkJCTQ5RTkxMkE5MEVG
QUM5MDYwMDlEMENBRiAvKiBUaW1pbmdGdW5jdGlvbi5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBh
bmltYXRpb247CkBAIC0yMDgxNCw2ICsyMDgxOSw4IEBACiAJCQkJMDY2OEUxODkwQUREOTYyNDAw
NDEyOEUwIC8qIFBvcHVwTWVudS5oICovLAogCQkJCUFCQzEyODc2MEIzM0FBNkQwMEM2OTNENSAv
KiBQb3B1cE1lbnVDbGllbnQuaCAqLywKIAkJCQlCQzNCRTEyQTBFOTgwOTJGMDA4MzU1ODggLyog
UG9wdXBNZW51U3R5bGUuaCAqLywKKwkJCQk5ODZFQTg4MjE1RkZGMjkwMDA5ODVFNUUgLyogUHJl
cmVuZGVyQ2xpZW50LmggKi8sCisJCQkJOTg1NkY4RDAxNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJl
bmRlckhhbmRsZS5oICovLAogCQkJCUU0RDY4Nzc4MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFi
bGVCdWZmZXIuaCAqLywKIAkJCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlv
cml0eS5oICovLAogCQkJCUE3MkVBM0JBMTU4NUNGNTUwMDRGQUEyNiAvKiBSZWZDb3VudGVkU3Vw
cGxlbWVudC5oICovLApAQCAtMjE3ODMsNiArMjE3OTAsOCBAQAogCQkJCUJFOTFGQzhCMDYxMzM2
NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICovLAogCQkJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5
OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLywKIAkJCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5
OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovLAorCQkJCTk4NkVBODdEMTVGRkYxRjIwMDk4NUU1
RSAvKiBQcmVyZW5kZXJTdGF0dXNFdmVudC5jcHAgKi8sCisJCQkJOTg2RUE4N0UxNUZGRjFGMjAw
OTg1RTVFIC8qIFByZXJlbmRlclN0YXR1c0V2ZW50LmggKi8sCiAJCQkJQThFQTdFQjUwQTE5NDVE
MDAwQThFRjVGIC8qIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJQThFQTdFQjQw
QTE5NDVEMDAwQThFRjVGIC8qIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAogCQkJCTkzRUVD
MUY1MDlDMjg3NzcwMEM1MTVEMSAvKiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsICovLApAQCAt
MjU0OTcsNiArMjU1MDYsOCBAQAogCQkJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NC
YXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEExNUVGMjVERjAwOEI3MTEw
IC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCRDZBRjhDMTVF
RjI2MDQwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTg2RUE4
ODAxNUZGRjFGMjAwOTg1RTVFIC8qIFByZXJlbmRlclN0YXR1c0V2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk5ODZFQTg4MzE1RkZGMjkwMDA5ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTI4NTg3LDYgKzI4NTk4LDcgQEAKIAkJCQk0RkIzOTBBRDE1RUY2MUYz
MDA3QUQ1MUYgLyogR2VuZXJhdGVkSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QTNB
OTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk4NkVBODdGMTVGRkYxRjIwMDk4NUU1RSAvKiBQcmVyZW5kZXJTdGF0
dXNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmlu
ZGV4IGZjYjU2OTU0MGI4MmJlYzY3OWIxYjVlY2Y3MWEyZWYyNjYzOTBlODEuLjYzMGQzNjg4ZTU4
NzM4ZGVmZmFmMmM2ZjFlY2E5Zjk2YWM4ZTFiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25l
LmNwcApAQCAtMTEyLDYgKzExMiw3IEBACiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5jcHAiCiAj
aW5jbHVkZSAiUG9zaXRpb24uY3BwIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuY3BwIgor
I2luY2x1ZGUgIlByZXJlbmRlclN0YXR1c0V2ZW50LmNwcCIKICNpbmNsdWRlICJQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuY3BwIgogI2luY2x1ZGUg
IlJhbmdlLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGRjOTY0NTAxNDYyOTEzMzZl
YjNlYWRmMTMzOWRlOGI0ZGVjMDRjMWMuLjlkMmZhMDNjOTExMDE0YmJiNGYxMGJhNzg0YzYwZDc2
ZGQxZWJjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjQzLDYgKzI0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8od2Via2l0ZGV2aWNlcHJveGltaXR5
KSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcnN0YXR1cykKIAogLy8gZW5kIG9m
IERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4
IDllOWUwYzg2MzA3YWQwMGVjODY3YThiYTY3NjQwZTBmYTA1MDBlNWUuLjI5MTcyMWU2OTQxY2Rk
NTQxODU5YmNmNzk0NDdkNDljYjQxNTgyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBA
IC00OSwzICs0OSw0IEBAIERldmljZVByb3hpbWl0eUV2ZW50IGNvbmRpdGlvbmFsPVBST1hJTUlU
WV9FVkVOVFMKIE9yaWVudGF0aW9uRXZlbnQgaW50ZXJmYWNlTmFtZT1FdmVudCwgY29uZGl0aW9u
YWw9T1JJRU5UQVRJT05fRVZFTlRTCiBNZWRpYUtleUV2ZW50IGNvbmRpdGlvbmFsPUVOQ1JZUFRF
RF9NRURJQQogVHJhY2tFdmVudCBjb25kaXRpb25hbD1WSURFT19UUkFDSworUHJlcmVuZGVyU3Rh
dHVzRXZlbnQgY29uZGl0aW9uYWw9TElOS19QUkVSRU5ERVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9QcmVyZW5kZXJTdGF0dXNFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJlcmVuZGVyU3RhdHVzRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjODNjZmZlNWQ4YmIzN2FjN2Q0
NTlkYWI2NmUzMjM5OTcwYTdhNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJlcmVuZGVyU3RhdHVzRXZlbnQuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlByZXJlbmRlclN0YXR1c0V2ZW50LmgiCisKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUHJlcmVuZGVyU3RhdHVz
RXZlbnRJbml0OjpQcmVyZW5kZXJTdGF0dXNFdmVudEluaXQoKQoreworfQorCitQcmVyZW5kZXJT
dGF0dXNFdmVudDo6flByZXJlbmRlclN0YXR1c0V2ZW50KCkKK3sKK30KKwordm9pZCBQcmVyZW5k
ZXJTdGF0dXNFdmVudDo6aW5pdFByZXJlbmRlclN0YXR1c0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdGF0dXMpCit7CisgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOworCisgICAgbV9zdGF0
dXMgPSBzdGF0dXM7Cit9CisKK1ByZXJlbmRlclN0YXR1c0V2ZW50OjpQcmVyZW5kZXJTdGF0dXNF
dmVudCgpCit7Cit9CisKK1ByZXJlbmRlclN0YXR1c0V2ZW50OjpQcmVyZW5kZXJTdGF0dXNFdmVu
dChjb25zdCBTdHJpbmcmIHN0YXR1cykKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRw
cmVyZW5kZXJzdGF0dXNFdmVudCwgZmFsc2UsIHRydWUpCisgICAgLCBtX3N0YXR1cyhzdGF0dXMp
Cit7Cit9CisKK1ByZXJlbmRlclN0YXR1c0V2ZW50OjpQcmVyZW5kZXJTdGF0dXNFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFByZXJlbmRlclN0YXR1c0V2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIpCisgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKKyAgICAsIG1fc3RhdHVz
KGluaXRpYWxpemVyLnN0YXR1cykKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ByZXJlbmRlclN0YXR1c0V2ZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJlcmVuZGVyU3RhdHVzRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2M2MWUz
ZmExYWUzMzk2N2NlZWIxYzRkZTE2ODZlNWI5NDQ4YjUyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ByZXJlbmRlclN0YXR1c0V2ZW50LmgKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLwor
CisjaWZuZGVmIFByZXJlbmRlclN0YXR1c0V2ZW50X2gKKyNkZWZpbmUgUHJlcmVuZGVyU3RhdHVz
RXZlbnRfaAorCisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Ry
dWN0IFByZXJlbmRlclN0YXR1c0V2ZW50SW5pdCA6IHB1YmxpYyBFdmVudEluaXQgeworICAgIFBy
ZXJlbmRlclN0YXR1c0V2ZW50SW5pdCgpOworCisgICAgU3RyaW5nIHN0YXR1czsKK307CisKK2Ns
YXNzIFByZXJlbmRlclN0YXR1c0V2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5QcmVyZW5kZXJTdGF0dXNFdmVudCgpOworICAgIAorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFByZXJlbmRlclN0YXR1c0V2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVudCk7CisgICAgfQorCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UHJlcmVuZGVyU3RhdHVzRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0
YXR1cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJlcmVuZGVyU3RhdHVz
RXZlbnQoc3RhdHVzKSk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJlcmVuZGVy
U3RhdHVzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFByZXJl
bmRlclN0YXR1c0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFByZXJlbmRlclN0YXR1c0V2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7Cisg
ICAgfQorICAgIAorICAgIGNvbnN0IFN0cmluZyYgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0dXM7IH0KKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1l
KCkgY29uc3QgeyByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclByZXJlbmRlclN0YXR1
c0V2ZW50OyB9CisKKyAgICB2b2lkIGluaXRQcmVyZW5kZXJTdGF0dXNFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RhdHVzKTsKKworcHJpdmF0ZToKKyAgICBQcmVyZW5kZXJTdGF0dXNFdmVu
dCgpOworICAgIGV4cGxpY2l0IFByZXJlbmRlclN0YXR1c0V2ZW50KGNvbnN0IFN0cmluZyYgc3Rh
dHVzKTsKKyAgICBQcmVyZW5kZXJTdGF0dXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFByZXJlbmRlclN0YXR1c0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOworCisgICAgU3Ry
aW5nIG1fc3RhdHVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKExJTktfUFJFUkVOREVSKQorCisjZW5kaWYgLy8gUHJlcmVuZGVyU3RhdHVzRXZlbnRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ByZXJlbmRlclN0YXR1c0V2ZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QcmVyZW5kZXJTdGF0dXNFdmVudC5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGFjYzc2YWMyNmQyMmQwYzZhYWUwNTJlYzM4MTkyYmM4NjAyM2JlMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QcmVyZW5kZXJTdGF0dXNFdmVudC5pZGwKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICoKKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworI2lmICFkZWZpbmVkKExBTkdVQUdFX0NQ
UCkgfHwgIUxBTkdVQUdFX0NQUAorICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbnN0cnVjdG9y
VGVtcGxhdGU9RXZlbnQsCisgICAgICAgIENvbmRpdGlvbmFsPUxJTktfUFJFUkVOREVSLAorICAg
IF0gUHJlcmVuZGVyU3RhdHVzRXZlbnQgOiBFdmVudCB7CisgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
VHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1
Y3Rvcl0gRE9NU3RyaW5nIHN0YXR1czsKKworICAgICAgICB2b2lkIGluaXRQcmVyZW5kZXJTdGF0
dXNFdmVudChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgdHlwZUFy
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gYm9vbGVhbiBjYW5CdWJibGVBcmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIGJv
b2xlYW4gY2FuY2VsYWJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHN0YXR1c0FyZyk7
CisgICAgfTsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKaW5kZXggMmE3MzJkMDdhNzQ2Nzg0NjUxZjllMjk5ZTJiOGRlNmMwMzc1OGMzZS4uM2M1OWFh
YjRhNTM1ODU4YjBlYzVkZGI2NzlmNDMzMDk1YjQ5MzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIk1lZGlhTGlz
dC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUHJlcmVuZGVyU3RhdHVzRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVu
dExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtMzUzLDYgKzM1NCwxMyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6bGlua0xv
YWRpbmdFcnJvcmVkKCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCisjaWYgRU5BQkxFKExJTktfUFJF
UkVOREVSKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmxpbmtQcmVyZW5kZXJTdGF0dXMoY29uc3Qg
U3RyaW5nJiBzdGF0dXMpCit7CisgICAgZGlzcGF0Y2hFdmVudChQcmVyZW5kZXJTdGF0dXNFdmVu
dDo6Y3JlYXRlKHN0YXR1cykpOworfQorI2VuZGlmCisKIGJvb2wgSFRNTExpbmtFbGVtZW50Ojpz
aGVldExvYWRlZCgpCiB7CiAgICAgaWYgKCFzdHlsZVNoZWV0SXNMb2FkaW5nKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDBiNmM2Yzk5N2YyOGFlMzQxMjUzNjM4
M2UwYzAxMDQwOGQ1ZmZkMWEuLmVkZWI5M2I0NDNhNTUyZTViYzUzNGI0YmI4M2U2Y2YyODQxYjlk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtODksOCArODksMTEg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0
aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBz
dGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGVk
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkaW5nRXJyb3JlZCgpOworICAgIHZpcnR1YWwg
dm9pZCBsaW5rTG9hZGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkaW5n
RXJyb3JlZCgpIE9WRVJSSURFOworI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikgICAgCisgICAg
dmlydHVhbCB2b2lkIGxpbmtQcmVyZW5kZXJTdGF0dXMoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
CisjZW5kaWYKIAogICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc2Fi
bGVkU3RhdGUgPT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZTsgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGFmMjVhODY4MDNjNDA3NDc5
YzEwMjY3YWYyNjY3ZWEwMmFlNWQyZjMuLjEyZGE3YjJkNTM2NmQ4ZTRjNTQ3MjA5MTlmZmI5MjE3
YzI5YTQxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTg5LDYgKzg5
LDExIEBAIHZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQogICAgIG1fY2FjaGVkTGlua1Jlc291cmNlID0gMDsKIH0KIAordm9pZCBMaW5rTG9h
ZGVyOjpzZW5kUHJlcmVuZGVyU3RhdHVzRXZlbnQoY29uc3QgU3RyaW5nJiBzdGF0dXMpCit7Cisg
ICAgbV9jbGllbnQtPmxpbmtQcmVyZW5kZXJTdGF0dXMoc3RhdHVzKTsKK30KKwogYm9vbCBMaW5r
TG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNv
bnN0IFN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBzaXplcywgY29uc3QgS1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQogewpAQCAtMTM0
LDcgKzEzOSw3IEBAIGJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJp
YnV0ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIHR5CiAjaWYgRU5BQkxFKExJTktfUFJF
UkVOREVSKQogICAgIGlmIChyZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVyZW5kZXIpIHsKICAgICAg
ICAgQVNTRVJUKCFtX3ByZXJlbmRlckhhbmRsZSk7Ci0gICAgICAgIG1fcHJlcmVuZGVySGFuZGxl
ID0gZG9jdW1lbnQtPnByZXJlbmRlcmVyKCktPnJlbmRlcihocmVmKTsKKyAgICAgICAgbV9wcmVy
ZW5kZXJIYW5kbGUgPSBkb2N1bWVudC0+cHJlcmVuZGVyZXIoKS0+cmVuZGVyKHRoaXMsIGhyZWYp
OwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmgKaW5kZXggYTFhNjNmMDNmZWRlOTZmMTQ2MmM3NDYwODA0ZTUzMzViZDQxYjYzMi4uMTU3
MmQyMjM4MjQzYzZjMTE4NjNhMWFhNmZiOWQwNTdhYjYxZDRkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkxp
bmtMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJQcmVyZW5kZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDcsNyArNDgsNyBAQCBj
bGFzcyBQcmVyZW5kZXJIYW5kbGU7CiAjZW5kaWYKIAogLy8gVGhlIExpbmtMb2FkZXIgY2FuIGxv
YWQgbGluayByZWwgdHlwZXMgaWNvbiwgZG5zLXByZWZldGNoLCBzdWJyZXNvdXJjZSwgcHJlZmV0
Y2ggYW5kIHByZXJlbmRlci4KLWNsYXNzIExpbmtMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQgeworY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCwgcHVibGljIFByZXJlbmRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGlua0xv
YWRlcihMaW5rTG9hZGVyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TGlua0xvYWRlcigpOwpAQCAt
NTUsNiArNTYsMTEgQEAgcHVibGljOgogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICAK
KyNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCisgICAgLy8gZnJvbSBQcmVyZW5kZXJDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgc2VuZFByZXJlbmRlclN0YXR1c0V2ZW50KGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworI2VuZGlmCisKICAgICB2b2lkIHJlbGVhc2VkKCk7CiAgICAgYm9vbCBsb2Fk
TGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyQ2xpZW50LmgKaW5kZXggNDM1MGVlNzhjOTVhNzYzZjljYzVkNDVlNWE4
ZTE2MmE5YjFhNTA2My4uOThkNTRlYTVhZjNhMTRiZjM5YTExM2IwNjMwMTEzYjA3MTZjNzkxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oCkBAIC00Miw2ICs0Miwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkZWQoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGxpbmtMb2FkaW5nRXJyb3JlZCgpID0gMDsKICAgICAvLyBUaGVyZSBpcyBubyBu
b3RpZmljYXRpb24gZm9yIGNhbmNlbGxhdGlvbi4KKworI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRF
UikKKyAgICB2aXJ0dWFsIHZvaWQgbGlua1ByZXJlbmRlclN0YXR1cyhjb25zdCBTdHJpbmcmKSA9
IDA7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cmVyZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCmlu
ZGV4IDg3YmFjNzc4Y2E5OTNkNTQ2NThiZDdiZjdkNmU2ODUyMjMyYWY1M2YuLjUyYTVmOWI2MjFm
ZGViMTI3NThmYzdkZmIzYjA0NmVmMDU5ZTI0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QcmVyZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJl
bmRlcmVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBQcmVyZW5kZXJlcjo6flByZXJlbmRlcmVyKCkK
IHsKIH0KIAotUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlcmVyOjpyZW5kZXIo
Y29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlcmVy
OjpyZW5kZXIoUHJlcmVuZGVyQ2xpZW50KiBwcmVyZW5kZXJDbGllbnQsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICAvLyBQcmVyZW5kZXJzIGFyZSB1bmxpa2UgcmVxdWVzdHMgaW4gbW9zdCB3YXlz
IChmb3IgaW5zdGFuY2UsIHRoZXkgcGFzcyBkb3duIGZyYWdtZW50cywgYW5kIHRoZXkgZG9uJ3Qg
cmV0dXJuIGRhdGEpLAogICAgIC8vIGJ1dCB0aGV5IGRvIGhhdmUgcmVmZXJyZXJzLgpAQCAtNzks
NyArNzksNyBAQCBQYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVyZXI6OnJlbmRl
cihjb25zdCBLVVJMJiB1cmwpCiAKICAgICBjb25zdCBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0
eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihyZWZlcnJlclBvbGljeSwgdXJsLCBkb2N1
bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKIAotICAgIFJl
ZlB0cjxQcmVyZW5kZXJIYW5kbGU+IHByZXJlbmRlckhhbmRsZSA9IFByZXJlbmRlckhhbmRsZTo6
Y3JlYXRlKHVybCwgcmVmZXJyZXIsIHJlZmVycmVyUG9saWN5KTsKKyAgICBSZWZQdHI8UHJlcmVu
ZGVySGFuZGxlPiBwcmVyZW5kZXJIYW5kbGUgPSBQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZShwcmVy
ZW5kZXJDbGllbnQsIHVybCwgcmVmZXJyZXIsIHJlZmVycmVyUG9saWN5KTsKIAogICAgIGlmIChj
bGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPndpbGxBZGRQcmVyZW5kZXIocHJlcmVuZGVySGFu
ZGxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmgKaW5kZXggNjFjNmQ4Y2Q5
MzhiNTBhOWUyYjNiZDJmMTk5YTdhOTBmZmU4M2EyMS4uNWJmNDk3YWM3MDdlZmUxZDU2NzBlOTUw
YzAzOWM3NGNiN2NjZDA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJl
bmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CitjbGFz
cyBQcmVyZW5kZXJDbGllbnQ7CiBjbGFzcyBQcmVyZW5kZXJIYW5kbGU7CiBjbGFzcyBQcmVyZW5k
ZXJlckNsaWVudDsKIGNsYXNzIFBhZ2U7CkBAIC01NSw3ICs1Niw3IEBAIGNsYXNzIFByZXJlbmRl
cmVyIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UHJl
cmVuZGVyZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5kZXIoY29u
c3QgS1VSTCYpOworICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5kZXIoUHJlcmVu
ZGVyQ2xpZW50KiwgY29uc3QgS1VSTCYpOwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8UHJlcmVu
ZGVyZXI+IGNyZWF0ZShEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5k
ZXggMmUwNzExY2VjZWYwMmNlMWIzNWQ0YTFkOGM3YTQ1ZTUyZDk3OThiZS4uOGViY2U5OGU2ZmE5
NGE1MTM0YTkxOGY4ZTliODNjYmVhN2I1ODgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bApAQCAtNTU0LDYgKzU1NCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUg
W0NvbmRpdGlvbmFsPUlOUFVUX1NQRUVDSF0gU3BlZWNoSW5wdXRFdmVudENvbnN0cnVjdG9yIFNw
ZWVjaElucHV0RXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCR0xdIFdl
YkdMQ29udGV4dEV2ZW50Q29uc3RydWN0b3IgV2ViR0xDb250ZXh0RXZlbnQ7CiAgICAgICAgIGF0
dHJpYnV0ZSBbQ29uZGl0aW9uYWw9UFJPWElNSVRZX0VWRU5UU10gRGV2aWNlUHJveGltaXR5RXZl
bnRDb25zdHJ1Y3RvciBEZXZpY2VQcm94aW1pdHlFdmVudDsKKyAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1MSU5LX1BSRVJFTkRFUl0gUHJlcmVuZGVyU3RhdHVzRXZlbnRDb25zdHJ1Y3Rv
ciBQcmVyZW5kZXJTdGF0dXNFdmVudDsKIAogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRFeGNlcHRp
b25Db25zdHJ1Y3RvciBFdmVudEV4Y2VwdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmVyZW5kZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzdiODUwYmU2YTRmY2MzNzQzNWU4OTMxYzZi
ZjJjYjQ1ZWU1NTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJlcmVuZGVyQ2xpZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIFByZXJlbmRlckNs
aWVudF9oCisjZGVmaW5lIFByZXJlbmRlckNsaWVudF9oCisKKyNpZiBFTkFCTEUoTElOS19QUkVS
RU5ERVIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUHJlcmVuZGVyQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QcmVyZW5kZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzZW5kUHJlcmVuZGVyU3RhdHVzRXZlbnQoY29uc3QgU3RyaW5nJikgPSAwOworfTsK
KworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRl
ckhhbmRsZS5oCmluZGV4IDA0ZmRhZmNmNDBmNGVhZmU4NDBiMDhiZjk2MGU3MTQyM2RmNzJhN2Eu
LjJiMGM5NjJhMWJlZTM4NTU0ZTVmMTQ2MzM4MTM4NWU1Yzc2ODE2N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oCkBAIC00NCwxNyArNDQsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBLVVJMOwogY2xhc3MgUHJlcmVuZGVyOworY2xhc3MgUHJl
cmVuZGVyQ2xpZW50OwogCiBjbGFzcyBQcmVyZW5kZXJIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQcmVyZW5kZXJIYW5kbGU+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVyZW5kZXJI
YW5kbGUpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4g
Y3JlYXRlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGlj
eSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBjcmVhdGUoUHJlcmVu
ZGVyQ2xpZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVy
UG9saWN5KTsKICAgICB+UHJlcmVuZGVySGFuZGxlKCk7CiAKICAgICBQcmVyZW5kZXIqIHByZXJl
bmRlcigpOwogCi0gICAgLy8gRklYTUU6IG9uZSBkYXkgdGhlcmUgd2lsbCBiZSBldmVudHMgaGVy
ZSwgYW5kIHdlIHdpbGwgYmUgYSBQcmVyZW5kZXJDbGllbnQuCi0KICAgICAvLyBBIHByZXJlbmRl
ciBsaW5rIGVsZW1lbnQgaXMgYWRkZWQgd2hlbiBpdCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1l
bnQuCiAgICAgdm9pZCBhZGQoKTsKIApAQCAtNzUsNyArNzQsOCBAQCBwdWJsaWM6CiAgICAgUmVm
ZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBQcmVy
ZW5kZXJIYW5kbGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVy
UG9saWN5KTsKKyAgICBQcmVyZW5kZXJIYW5kbGUoUHJlcmVuZGVyQ2xpZW50KiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVyUG9saWN5KTsKKwogICAgIFJlZlB0
cjxQcmVyZW5kZXI+IG1fcHJlcmVuZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1ByZXJlbmRlci5jcHAKaW5kZXggNDMxYTdhYjU4ZWRmYmY3MDYxMzBkMmZi
OTMyMmY1ZTcxMjZiNWM4MS4uMzJmZDI5NDA3YmZmM2FkZTljMGI0ZWZkM2Q3ZjdiNWI2YmQ1MTVm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVy
ZW5kZXIuaCIKKyNpbmNsdWRlICJQcmVyZW5kZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgPHB1Ymxp
Yy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQcmVyZW5kZXIuaD4KQEAgLTQzLDgg
KzQ0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUHJlcmVuZGVyOjpQcmVyZW5kZXIo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBw
b2xpY3kpCi0gICAgOiBtX3VybCh1cmwpCitQcmVyZW5kZXI6OlByZXJlbmRlcihQcmVyZW5kZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBS
ZWZlcnJlclBvbGljeSBwb2xpY3kpCisgICAgICAgCisgICAgOiBtX2NsaWVudChjbGllbnQpCisg
ICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3JlZmVycmVyKHJlZmVycmVyKQogICAgICwgbV9yZWZl
cnJlclBvbGljeShwb2xpY3kpCiB7CkBAIC01OSwyNiArNjIsMjQgQEAgdm9pZCBQcmVyZW5kZXI6
OmFkZCgpCiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdl
YktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3VycmVudCgpOwogICAgIGlmICghcGxhdGZv
cm0pCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQcmVyZW5k
ZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFkZCh3ZWJQcmVyZW5kZXIpOworICAgIG1fd2ViUHJl
cmVuZGVyID0gYWRvcHRQdHIobmV3IFdlYktpdDo6V2ViUHJlcmVuZGVyKHRoaXMpKTsKKyAgICBw
bGF0Zm9ybS0+YWRkKG1fd2ViUHJlcmVuZGVyLmdldCgpKTsKIH0KIAogdm9pZCBQcmVyZW5kZXI6
OmNhbmNlbCgpCiB7CiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9y
bSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3VycmVudCgpOwotICAgIGlmICgh
cGxhdGZvcm0pCisgICAgaWYgKCFwbGF0Zm9ybSB8fCAhbV93ZWJQcmVyZW5kZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0g
ICAgcGxhdGZvcm0tPmNhbmNlbCh3ZWJQcmVyZW5kZXIpOworICAgIHBsYXRmb3JtLT5jYW5jZWwo
bV93ZWJQcmVyZW5kZXIuZ2V0KCkpOwogfQogCiB2b2lkIFByZXJlbmRlcjo6YWJhbmRvbigpCiB7
CiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6
V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3VycmVudCgpOwotICAgIGlmICghcGxhdGZvcm0pCisg
ICAgaWYgKCFwbGF0Zm9ybSB8fCAhbV93ZWJQcmVyZW5kZXIpCiAgICAgICAgIHJldHVybjsKLSAg
ICBXZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0t
PmFiYW5kb24od2ViUHJlcmVuZGVyKTsKKyAgICBwbGF0Zm9ybS0+YWJhbmRvbihtX3dlYlByZXJl
bmRlci5nZXQoKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVyOjpzdXNwZW5kKCkKQEAgLTkxLDYgKzky
LDEyIEBAIHZvaWQgUHJlcmVuZGVyOjpyZXN1bWUoKQogICAgIGFkZCgpOwogfQogCit2b2lkIFBy
ZXJlbmRlcjo6c2VuZFByZXJlbmRlclN0YXR1c0V2ZW50KGNvbnN0IFN0cmluZyYgc3RhdHVzKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRQcmVyZW5kZXJTdGF0
dXNFdmVudChzdGF0dXMpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTElOS19QUkVSRU5E
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCmluZGV4
IGNlNGNjYzdmYTY2M2EyMTQ4ZWY1MTEyNDRjMTM4NzM5NTFkM2IwMDguLmU0MzMwNjMwNWY5NGM3
NGVlNmQ2OTI1YjM3NjdjZGUyMzY5NWRhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1ByZXJlbmRlci5oCkBAIC00NCw4ICs0NCwxNCBAQAogCiAjaWYgRU5BQkxFKExJ
TktfUFJFUkVOREVSKQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByZXJlbmRlcjsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQcmVyZW5kZXJDbGllbnQ7CisKIGNs
YXNzIFByZXJlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFByZXJlbmRlcj4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFByZXJlbmRlcik7CiBwdWJsaWM6CkBAIC01NCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAotICAgIFBy
ZXJlbmRlcihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xp
Y3kpOworICAgIFByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOwogICAgIH5QcmVyZW5kZXIoKTsKIAog
ICAgIHZvaWQgYWRkKCk7CkBAIC02OSw4ICs3NSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRh
ID0gZXh0cmFEYXRhOyB9CiAgICAgRXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4
dHJhRGF0YS5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgc2VuZFByZXJlbmRlclN0YXR1c0V2ZW50
KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgorICAgIFByZXJlbmRlckNsaWVudCpjb25zdCBt
X2NsaWVudDsKKworICAgIE93blB0cjxXZWJLaXQ6OldlYlByZXJlbmRlcj4gbV93ZWJQcmVyZW5k
ZXI7CisKICAgICBjb25zdCBLVVJMIG1fdXJsOwogICAgIGNvbnN0IFN0cmluZyBtX3JlZmVycmVy
OwogICAgIGNvbnN0IFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxlLmNwcAppbmRl
eCA5N2NlYzc5NzljZDc1M2ZhNGQwMmQ4MjdkNzExMzNlMzU5ODhhZWU2Li40MTgzMDM0YzE3ODM1
Njc5MTYyOGNhNDgxNDA3NzE0ODcxYmMxNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQ
cmVyZW5kZXJIYW5kbGU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIFJlZmVycmVyUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxl
PiBQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZShQcmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJIYW5kbGUodXJsLCByZWZlcnJl
ciwgcG9saWN5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJIYW5kbGUoY2xp
ZW50LCB1cmwsIHJlZmVycmVyLCBwb2xpY3kpKTsKIH0KIAotUHJlcmVuZGVySGFuZGxlOjpQcmVy
ZW5kZXJIYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZl
cnJlclBvbGljeSBwb2xpY3kpCi0gICAgOiBtX3ByZXJlbmRlcihhZG9wdFJlZihuZXcgUHJlcmVu
ZGVyKHVybCwgcmVmZXJyZXIsIHBvbGljeSkpKQorUHJlcmVuZGVySGFuZGxlOjpQcmVyZW5kZXJI
YW5kbGUoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQorICAgIDogbV9wcmVyZW5kZXIo
YWRvcHRSZWYobmV3IFByZXJlbmRlcihjbGllbnQsIHVybCwgcmVmZXJyZXIsIHBvbGljeSkpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlByZXJlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlByZXJlbmRlci5jcHAKaW5kZXggODMyN2ZiZDcwNmZjNDMwN2ZiY2EyZmZlMGY5
ZmFiODg0NGEwNjNjMC4uOWYzMGZjMmZjYmNjNGZlYThiMjU0YzlhODIxZWY0NGU4ZDkzMWIxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQ
cmVyZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViUHJlcmVuZGVyLmNwcApAQCAtOTcsNiArOTcsMTEgQEAgY29uc3QgV2ViUHJlcmVuZGVy
OjpFeHRyYURhdGEqIFdlYlByZXJlbmRlcjo6ZXh0cmFEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RXh0cmFEYXRhQ29udGFpbmVyKj4od2ViY29yZUV4dHJhRGF0YS5nZXQoKSkt
PmV4dHJhRGF0YSgpOwogfQogCit2b2lkIFdlYlByZXJlbmRlcjo6c2VuZFByZXJlbmRlclN0YXR1
c0V2ZW50KGNvbnN0IFdlYlN0cmluZyYgc3RhdHVzKQoreworICAgIG1fcHJpdmF0ZS0+c2VuZFBy
ZXJlbmRlclN0YXR1c0V2ZW50KHN0YXR1cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFRChMSU5LX1BSRVJFTkRFUikKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNTQ2NWFjZDA4MDVhZTRlMWViYWIxYjVj
MjI4NzYyYTVkNzBkNGEyLi4yZWY1NTczNGI3NTVkYTYxZDE3NjViMzRmZTBjMDcxMjI5ZDIzZTcz
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMDktMTIgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkIFByZXJlbmRlclN0YXR1c0V2ZW50IG9uIDxsaW5rIHJlbD1wcmVy
ZW5kZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50IGlzIHNlbnQgdG8gbGluayBlbGVt
ZW50cyB3aGVuIHByZXJlbmRlcnMgYXJlIHN0YXJ0ZWQgYnkgdGhlIGVtYmVkZGVyLCBhbmQgYWxz
byBzZW50IHdoZW4gdGhleSBhcmUgc3RvcHBlZC4gUGFnZXMgdXNpbmcgdGhpcyBmZWF0dXJlIGNh
biBub3cgc2VyaWFsaXplIGxhdW5jaGluZyBwcmVyZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5nIHBl
cmZvcm1hbmNlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlBy
ZXJlbmRlcmluZ1N1cHBvcnQuY3BwOgorICAgICAgICAoTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBv
cnQ6OmFkZCk6CisgICAgICAgIChNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y2FuY2VsKToK
KyAgICAgICAgKE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0OjphYmFuZG9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oOgor
ICAgICAgICAoTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQpOgorCiAyMDEyLTA5LTA0ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
LUFuZHJvaWRdIEluY2x1ZGUgZGV2aWNlIHNlcmlhbCBudW1iZXIgaW4gQ2hyb21pdW1BbmRyb2lk
RHJpdmVyIGxvZyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwCmluZGV4IGQ2NjdkODg2
NTAzNTU5Yzg0OWZjMjk2NzhkOGNkMWI0Y2YwOGIxMzYuLjk3NjZkY2U1ODgxYWI5YzIxMjZkNzdk
NGE2NGNkMWQ2Nzk3ZDM5MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAKQEAgLTQ1LDE0ICs0
NSwxNCBAQCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6fk1vY2tXZWJQcmVyZW5kZXJpbmdT
dXBwb3J0KCkKICAgICBzaHV0ZG93bigpOwogfQogCi12b2lkIE1vY2tXZWJQcmVyZW5kZXJpbmdT
dXBwb3J0OjphZGQoY29uc3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2NrV2ViUHJl
cmVuZGVyaW5nU3VwcG9ydDo6YWRkKFdlYktpdDo6V2ViUHJlcmVuZGVyKikKIHsKIH0KIAotdm9p
ZCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y2FuY2VsKGNvbnN0IFdlYktpdDo6V2ViUHJl
cmVuZGVyJikKK3ZvaWQgTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmNhbmNlbChXZWJLaXQ6
OldlYlByZXJlbmRlciopCiB7CiB9CiAKLXZvaWQgTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6
OmFiYW5kb24oY29uc3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2NrV2ViUHJlcmVu
ZGVyaW5nU3VwcG9ydDo6YWJhbmRvbihXZWJLaXQ6OldlYlByZXJlbmRlciopCiB7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5n
U3VwcG9ydC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRl
cmluZ1N1cHBvcnQuaAppbmRleCBiNWQ0YWY1M2Q4ZDg2Y2M4NDc3N2YxNmU1ZmMwMzgxOTc5ZmJm
M2JkLi45ZWU3YjExZWQ4NGQ5ZjkzMmNjNGI1MGRjZTdkOWZmMDcwNmY2NWRkIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9y
dC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0LmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1vY2tX
ZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhZGQoY29uc3Qg
V2ViS2l0OjpXZWJQcmVyZW5kZXImKSBPVkVSUklERTsKLSAgICB2b2lkIGNhbmNlbChjb25zdCBX
ZWJLaXQ6OldlYlByZXJlbmRlciYpIE9WRVJSSURFOwotICAgIHZvaWQgYWJhbmRvbihjb25zdCBX
ZWJLaXQ6OldlYlByZXJlbmRlciYpIE9WRVJSSURFOworICAgIHZvaWQgYWRkKFdlYktpdDo6V2Vi
UHJlcmVuZGVyKikgT1ZFUlJJREU7CisgICAgdm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJQcmVyZW5k
ZXIqKSBPVkVSUklERTsKKyAgICB2b2lkIGFiYW5kb24oV2ViS2l0OjpXZWJQcmVyZW5kZXIqKSBP
VkVSUklERTsKIH07CiAKICNlbmRpZiAvLyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydF9oCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDNkMjEzMWRiOWM2NWE0NTI1ZjRhZDIwYWM2ZWZiZGI4ZDhiMzE5ZC4uMzRkYzU4MTY2
NzIzODQzODc4N2Q3ZDM5ZDhjMTRmMjdiNTVjMTc0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTA5LTEyICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEFkZCBQcmVyZW5kZXJTdGF0dXNFdmVudCBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5l
dyBQcmVyZW5kZXJTdGF0dXNFdmVudCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMgd2hlbiBwcmVy
ZW5kZXJzIGFyZSBzdGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRo
ZXkgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6
ZSBsYXVuY2hpbmcgcHJlcmVuZGVycywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3JtYW5jZS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9wcmVyZW5kZXItc3RhdHVzLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvY29uc3Ry
dWN0b3JzL3ByZXJlbmRlci1zdGF0dXMtY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkOgor
CiAyMDEyLTA5LTA0ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbiB1cGRhdGUgYWZ0
ZXIgcjEyNzQ1NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY29uc3RydWN0
b3JzL3ByZXJlbmRlci1zdGF0dXMtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3ByZXJlbmRlci1zdGF0dXMtY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMjRhOWI2ODZiOWMyNTczZWE1MzAxNzZmNDM2ODU2
ZjgwY2IzMzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9jb25z
dHJ1Y3RvcnMvcHJlcmVuZGVyLXN0YXR1cy1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBQcmVyZW5kZXJT
dGF0dXNFdmVudCBET00gY2xhc3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVudCgnZXZlbnRUeXBlJykuYnViYmxlcyBpcyBmYWxz
ZQorUEFTUyBuZXcgUHJlcmVuZGVyU3RhdHVzRXZlbnQoJ2V2ZW50VHlwZScpLmNhbmNlbGFibGUg
aXMgZmFsc2UKK1BBU1MgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50KCdldmVudFR5cGUnLCB7IGJ1
YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkuYnViYmxlcyBpcyB0cnVlCitQQVNTIG5l
dyBQcmVyZW5kZXJTdGF0dXNFdmVudCgnZXZlbnRUeXBlJywgeyBidWJibGVzOiB0cnVlLCBjYW5j
ZWxhYmxlOiB0cnVlIH0pLmNhbmNlbGFibGUgaXMgdHJ1ZQorUEFTUyBuZXcgUHJlcmVuZGVyU3Rh
dHVzRXZlbnQoJ2V2ZW50VHlwZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9
KS5zdGF0dXMgaXMgbnVsbAorUEFTUyBuZXcgUHJlcmVuZGVyU3RhdHVzRXZlbnQoJ2V2ZW50VHlw
ZScsIHsgc3RhdHVzOiAnc3RyaW5nJyB9KS5zdGF0dXMgaXMgJ3N0cmluZycKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcHJlcmVuZGVyLXN0YXR1cy1jb25zdHJ1
Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3ByZXJlbmRl
ci1zdGF0dXMtY29uc3RydWN0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzkyOGQ1Nzk5NTgyZTFjZWYx
M2M0OTQwZmE2NmFkNWNkMzNiZmQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvY29uc3RydWN0b3JzL3ByZXJlbmRlci1zdGF0dXMtY29uc3RydWN0b3IuaHRtbApA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGNvbnN0
cnVjdG9yIGZvciB0aGUgUHJlcmVuZGVyU3RhdHVzRXZlbnQgRE9NIGNsYXNzLiIpOworCisvLyBO
byBpbml0aWFsaXplciBwYXNzZWQuCitzaG91bGRCZSgibmV3IFByZXJlbmRlclN0YXR1c0V2ZW50
KCdldmVudFR5cGUnKS5idWJibGVzIiwgImZhbHNlIik7CitzaG91bGRCZSgibmV3IFByZXJlbmRl
clN0YXR1c0V2ZW50KCdldmVudFR5cGUnKS5jYW5jZWxhYmxlIiwgImZhbHNlIik7CisKKy8vIEJ1
YmJsZXMgYW5kIGNhbmNlbGFibGUgdHJ1ZSwgc3RhdHVzIGlzIG1pc3NpbmcuCitzaG91bGRCZSgi
bmV3IFByZXJlbmRlclN0YXR1c0V2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNh
bmNlbGFibGU6IHRydWUgfSkuYnViYmxlcyIsICJ0cnVlIik7CitzaG91bGRCZSgibmV3IFByZXJl
bmRlclN0YXR1c0V2ZW50KCdldmVudFR5cGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6
IHRydWUgfSkuY2FuY2VsYWJsZSIsICJ0cnVlIik7CitzaG91bGRCZU51bGwoIm5ldyBQcmVyZW5k
ZXJTdGF0dXNFdmVudCgnZXZlbnRUeXBlJywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0
cnVlIH0pLnN0YXR1cyIpOworCisvLyBTdGF0dXMgaXMgYSBzdHJpbmcKK3Nob3VsZEJlKCJuZXcg
UHJlcmVuZGVyU3RhdHVzRXZlbnQoJ2V2ZW50VHlwZScsIHsgc3RhdHVzOiBcJ3N0cmluZ1wnIH0p
LnN0YXR1cyIsICInc3RyaW5nJyIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNWE2ZGZmN2Zi
YzUwNDA5OTZmYzgyYjFmNDE0NTEzZDcwZjVhMWI4Yi4uMzM5YWEyMWNiYjRhNjgxMDI2ZWUzMDMw
MzE3NGZmMDkwNGFjMWUyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTkwMCw2ICs5MDAsOSBAQCBCVUdXSzU4MjIyIDogZmFzdC9wcmVsb2FkZXIvc2Nh
bi1ib2R5LWZyb20taGVhZC1zY3JpcHQuaHRtbCA9IFBBU1MKIEJVR1dLNTgyMjIgOiBodHRwL3Rl
c3RzL21pbWUvdXBwZXJjYXNlLW1pbWUtdHlwZS5odG1sID0gVEVYVAogQlVHV0s1ODIyMiA6IGh0
dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwgPSBURVhUCiAKKy8vIEd0ayBkb2Vz
bid0IGltcGxlbWVudCBwcmVyZW5kZXJpbmcuCitCVUdXS0dUSyA6IGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9wcmVyZW5kZXItc3RhdHVzLWNvbnN0cnVjdG9yLmh0bWwgPSBURVhUCisKIC8vIFRo
ZSBtaWRkbGUgY2lyY2xlIG9uIGJvdGggcmVjdGFuZ2xlcyBpcyBtaXNzaW5nIGluIHRoZSBwaXhl
bCBvdXRwdXQuCiBCVUdXS0dUSyA6IHN2Zy9jdXN0b20vY2lyY3VsYXItbWFya2VyLXJlZmVyZW5j
ZS0yLnN2ZyA9IFRFWFQKIEJVR1dLR1RLIDogc3ZnL2N1c3RvbS9ub24tY2lyY3VsYXItbWFya2Vy
LXJlZmVyZW5jZS5zdmcgPSBURVhUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDBlOGVh
NDcyNGIxNTJlNzQ2YWZlNDMwNmY4MzJjNTczMmI4OTUxOWEuLmZkODM3Y2M3MDQ4MTI2NmRhYjAw
Njc2ZjczYzI0YTliYjkyMGVkMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xOTgs
NiArMTk4LDcgQEAgaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogIyBMaW5r
IHByZXJlbmRlciBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVyZW5k
ZXItaW5zZXJ0LWFmdGVyLXN0b3AuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZXJl
bmRlci1yZW1vdmUtYWZ0ZXItc3RvcC5odG1sCitmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcHJl
cmVuZGVyLXN0YXR1cy1jb25zdHJ1Y3Rvci5odG1sCiAKICMgRmlsZW5hbWVzIGFyZW4ndCBmaWx0
ZXJlZCBvdXQgZnJvbSBlZGl0IGRyYWdzIHlldCwgc2VlIGh0dHBzOi8vYnVncy53ZWtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4ODI2CiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1kcmFnLXRvLWVk
aXRhYmxlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDFjYzliZmU2OTcyYWJjNTkw
M2QxZWRhYjQ5ZjQ3NTIwMzhlZGQxNDguLmY4YjYwMWQ1OTM4YzU4NTEwZTVmMTA2ZTY5MDEyYzIy
NGRjMzY0NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTU0LDYgKzE1NCw3IEBAIGh0
dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKICMgRU5BQkxFKExJTktfUFJFUkVO
REVSKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVyZW5kZXItaW5z
ZXJ0LWFmdGVyLXN0b3AuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZXJlbmRlci1y
ZW1vdmUtYWZ0ZXItc3RvcC5odG1sCitmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcHJlcmVuZGVy
LXN0YXR1cy1jb25zdHJ1Y3Rvci5odG1sCiAKICMgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKSBp
cyBkaXNhYmxlZAogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9kZWZhdWx0LWNvbnRlbnQtdHlw
ZS1kYXNoYm9hcmQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBkZjY5Yjg4MjFm
NjBiNjczNjQ5NjU1OTMwMjExMmM5YTkyYjA2MWRkLi42NmIxMTIwY2UwMGQ2Yjg3YjBmODBlOTZm
NzBkNzQyMWFlNmE2YmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTA5MSw2ICsx
MDkxLDcgQEAgaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogIyBsaW5rIHBy
ZXJlbmRlciBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVyZW5kZXIt
aW5zZXJ0LWFmdGVyLXN0b3AuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZXJlbmRl
ci1yZW1vdmUtYWZ0ZXItc3RvcC5odG1sCitmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcHJlcmVu
ZGVyLXN0YXR1cy1jb25zdHJ1Y3Rvci5odG1sCiAKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VQcm9wZXJ0eSBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIFdJTiB5ZXQuCiBwcmludGluZy9wYWdl
LXJ1bGUtc2VsZWN0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bmNhaXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmlu
ZGV4IGYyMTBhM2UwYjU1NzZjZDZlMWJjMDZlYTUyOTAwNjk3N2EzNWQyNjEuLjFhYTRkMjMwMGY0
MjZhZTVmOGYzNGQ5MmIxNjE3MDRhMzg5NzQ3YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vU2tpcHBlZApAQCAtMTYxMyw2ICsxNjEzLDcgQEAgaHR0cC90ZXN0cy9taXNjL3ByZWZldGNo
LXB1cnBvc2UuaHRtbAogIyBFTkFCTEUoTElOS19QUkVSRU5ERVIpIGlzIGRpc2FibGVkLgogZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZXJlbmRlci1pbnNlcnQtYWZ0ZXItc3RvcC5odG1sCiBm
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlcmVuZGVyLXJlbW92ZS1hZnRlci1zdG9wLmh0bWwK
K2Zhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9wcmVyZW5kZXItc3RhdHVzLWNvbnN0cnVjdG9yLmh0
bWwKIAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1l
bnRlZCBmb3IgV0lOIHlldC4KIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170230</attachid>
            <date>2012-10-23 13:56:51 -0700</date>
            <delta_ts>2012-11-08 10:50:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20121023165527.patch</filename>
            <type>text/plain</type>
            <size>32722</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4ZGFlNWQ0OGI1NGRj
YWVmOTY5MzI3NzgxODAxYTQzMGNjZDE5OTIwLi5hNGFhMDc0ZGUxNGQ5MDRmNDFiNjRhMTU0Y2Fi
ZjczNTk3NzA3NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yMyAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgUHJlcmVu
ZGVyU3RhdHVzRXZlbnQgb24gPGxpbmsgcmVsPXByZXJlbmRlcj4gZWxlbWVudHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ3NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgUHJlcmVuZGVy
U3RhdHVzRXZlbnQgaXMgc2VudCB0byBsaW5rIGVsZW1lbnRzIHdoZW4gcHJlcmVuZGVycyBhcmUg
c3RhcnRlZCBieSB0aGUgZW1iZWRkZXIsIGFuZCBhbHNvIHNlbnQgd2hlbiB0aGV5IGFyZSBzdG9w
cGVkLiBQYWdlcyB1c2luZyB0aGlzIGZlYXR1cmUgY2FuIG5vdyBzZXJpYWxpemUgbGF1bmNoaW5n
IHByZXJlbmRlcnMsIGFuZCB0cmFjayB0aW1pbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBj
aHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmg6CisgICAgICAgIChXZWJQcmVyZW5kZXIpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0Lmg6CisgICAg
ICAgIChXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KToKKwogMjAxMi0xMC0yMiAgS2Vpc2hpIEhhdHRv
cmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgbW9udGhGb3JtYXRJbkxE
TUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBkMmZjMDkzZWVkZjlkNjBkNmIyN2Y0MjhmNDAzOTYyMDllZDcxYzgx
Li5lY2UyNjg5ODQ0YmM4NTkyYmQyYzI1YmIyNzYyZmY3ZjE1MmVjNGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMTItMTAtMjMgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgQWRkIFByZXJlbmRlclN0YXR1c0V2ZW50IG9uIDxsaW5rIHJlbD1w
cmVyZW5kZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50IGlzIHNlbnQgdG8gbGluayBl
bGVtZW50cyB3aGVuIHByZXJlbmRlcnMgYXJlIHN0YXJ0ZWQgYnkgdGhlIGVtYmVkZGVyLCBhbmQg
YWxzbyBzZW50IHdoZW4gdGhleSBhcmUgc3RvcHBlZC4gUGFnZXMgdXNpbmcgdGhpcyBmZWF0dXJl
IGNhbiBub3cgc2VyaWFsaXplIGxhdW5jaGluZyBwcmVyZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5n
IHBlcmZvcm1hbmNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRN
TExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjpkaWRTdGFydExpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9y
TGlua1ByZXJlbmRlcik6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTdG9wUHJlcmVu
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVu
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRET01Db250ZW50TG9h
ZGVkRm9yUHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5r
KToKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAoTGlua0xvYWRlcik6
CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKExpbmtMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9QcmVyZW5kZXJlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcmVyZW5kZXJlcjo6cmVuZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUHJlcmVuZGVy
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChQcmVyZW5kZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyQ2xpZW50Ojp+
UHJlcmVuZGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVySGFuZGxlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJl
cmVuZGVyOjpQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjphZGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UHJlcmVuZGVyOjphYmFuZG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU3Rh
cnRQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVy
ZW5kZXI6OmRpZFN0b3BQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpk
aWRTZW5kTG9hZEZvclByZXJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmRp
ZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9QcmVyZW5kZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFByZXJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUHJl
cmVuZGVySGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckhhbmRsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTdG9wUHJl
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclBy
ZXJlbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU2VuZERPTUNvbnRl
bnRMb2FkZWRGb3JQcmVyZW5kZXIpOgorCiAyMDEyLTEwLTIzICAnUGF2ZWwgRmVsZG1hbicgIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBraWNrIG91dCBu
b24tY2hyb21pdW0gZmlsZXMgZnJvbSBXZWJDb3JlLmd5cGkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaAppbmRleCA1ZWQ4MDQ5MDBmYzZmYTBiNmNj
ODE4NTQ2NDdkY2I2OWEyMzI1YWM1Li45NGIxNGMzOWNhY2M4ODY5YjkxMjBlMGY2MWEwMDBjNzQx
NzRkMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBy
ZXJlbmRlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVu
ZGVyLmgKQEAgLTY2LDYgKzY2LDExIEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSopOwogICAgIFdFQktJVF9FWFBPUlQgY29uc3QgRXh0cmFE
YXRhKiBleHRyYURhdGEoKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTdGFy
dFByZXJlbmRlcigpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTdG9wUHJlcmVuZGVyKCk7
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCk7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7
CisKIHByaXZhdGU6CiAgICAgV2ViUHJlcmVuZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgKaW5kZXgg
YTI2NzI5MTFmYTUwYTgzMzU4ZDJiZjRiMDk5NmZkNTQ5MzgwNmJhMi4uYTM1YjY0MzI2YjliZDIz
ZWI2ZTc3ZWJiZWMzMzhlMWQ2ZTA0YzRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgKQEAgLTQ0LDE1ICs0
NCwxNSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViUHJlcmVuZGVyaW5n
U3VwcG9ydCogY3VycmVudCgpOwogCiAgICAgLy8gQSBwcmVyZW5kZXIgbGluayBlbGVtZW50IGlz
IGFkZGVkIHdoZW4gaXQgaXMgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50LgotICAgIHZpcnR1YWwg
dm9pZCBhZGQoY29uc3QgV2ViUHJlcmVuZGVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGQo
V2ViUHJlcmVuZGVyKikgPSAwOwogCiAgICAgLy8gQSBwcmVyZW5kZXIgaXMgY2FuY2VsZWQgd2hl
biBpdCBpcyByZW1vdmVkIGZyb20gYSBkb2N1bWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
KGNvbnN0IFdlYlByZXJlbmRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKFdlYlBy
ZXJlbmRlciopID0gMDsKIAogICAgIC8vIEEgcHJlcmVuZGVyIGlzIGFiYW5kb25lZCB3aGVuIGl0
J3MgbmF2aWdhdGVkIGF3YXkgZnJvbSBvciBzdXNwZW5kZWQgaW4gdGhlIHBhZ2UgY2FjaGUuIFRo
aXMKICAgICAvLyBpcyBhIHdlYWtlciBzaWduYWwgdGhhbiBjYW5jZWwoKSwgc2luY2UgdGhlIGxh
dW5jaGVyIGhhc24ndCBpbmRpY2F0ZWQgdGhhdCB0aGUgcHJlcmVuZGVyIGlzbid0CiAgICAgLy8g
d2FudGVkLCBhbmQgd2UgbWF5IGVuZCB1cCB1c2luZyBpdCBhZnRlciwgZm9yIGluc3RhbmNlLCBh
IHNob3J0IHJlZGlyZWN0IGNoYWluLgotICAgIHZpcnR1YWwgdm9pZCBhYmFuZG9uKGNvbnN0IFdl
YlByZXJlbmRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJhbmRvbihXZWJQcmVyZW5kZXIq
KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3Yjg1YmE0ZmI0NzAwOTczYTQ5MDRjZTJj
MTQwYzQ4ZDE0Yjc4NDk0Li43MWEyMDU0ODk2NDU0NjE4ZThlNjAxMDI5OWM5MGM5NTM4NDQ0ZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ3NzksNiArNDc3OSw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xp
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVu
ZGVySGFuZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZVByaW9yaXR5LmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggZjJjNGQ2ZDg1MmY1Y2U1YjVlOWM1ZDM4MzQwMmFhMGVjZGM1OWIyYy4uYTFlYTFmZDNm
YjZmOTNmNzEyNTVjMmNiYjAyODRmNDA5NjFkYTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMjk0LDYg
KzIyOTQsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9UaW1lci5oIFwKICAgICBwbGF0
Zm9ybS9XaWRnZXQuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggXAorICAg
IHBsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5k
bGUuaCBcCiAgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIFwKICAgICBwbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTdkNGEyNzgyODRjYTE5OWQz
MGRiMGFmMjhkMDc0YmQ0ZDQ5NjczYy4uNjg0ZDY3YjBjYzFlZjRlN2ZkNmY3NjY1NGM5ZDdkMjcw
ZTEzMTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDUzNSw2ICs0NTM1LDcgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1ByZXJlbmRl
ckhhbmRsZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1JlZmVycmVyUG9saWN5LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1J1bkxvb3BU
aW1lci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggZGNlMjIyZDA0MTQ4MTllM2ZjOGQ4NTdkN2JmYjQwMTgxNDcwZmJmNC4uZTEyMmE5ZjQ4
NzQwMGZkNGNmNTk5ODk3MmM0OTNiNDI5NGQ5ZTEwZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI4NjM1LDYgKzI4NjM1LDEwIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFBy
ZXJlbmRlckNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5kZXJIYW5kbGUuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmMxNTg1NjZmYWNjNmIwY2M0N2M0ZDNiNTk0NzViNTczMTRmZGM5Yy4uMjFlYWM3N2Ey
MTJjNjBhMDljYjQxOWRiYzY2Mjc1ZTQxODlmNWYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzcyNyw2ICszNzI3LDcgQEAK
IAkJOTg1NkY4RDExNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1NkY4RDAxNTQ5RTg0RjAw
QjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oICovOyB9OwogCQk5ODVCQjk2RDEzQTk0MDU4MDA3
QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0
dHJpYnV0ZS5jcHAgKi87IH07CiAJCTk4NUJCOTZFMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVs
QXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5ODVCQjk2QzEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oICovOyB9Owor
CQk5ODZFQTg4MzE1RkZGMjkwMDA5ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODZFQTg4MjE1RkZGMjkwMDA5
ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50LmggKi87IH07CiAJCTk4Q0U0MzI2MTI5RTAwQkQwMDU4
MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk4Q0U0MzI1MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCAq
LzsgfTsKIAkJOThDRTQzMkExMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4Q0U0MzI5MTI5RTAwRTUw
MDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi87IH07CiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFF
QSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwOTc5
LDYgKzEwOTgwLDcgQEAKIAkJOTg1NkY4RDAxNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhh
bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVyZW5kZXJIYW5kbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTg1QkI5NkIxM0E5NDA1ODAwN0EwQjY5
IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGlua1JlbEF0dHJpYnV0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk4NUJCOTZDMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtSZWxBdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTg2RUE4ODIxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVyZW5kZXJDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURD
IC8qIExpbmtMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGlua0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5
RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExpbmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFG
OTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTM3MSw3ICsxNTM3Myw2IEBACiAJCQkJNDlFOTEyQTcwRUZBQzkwNjAwOUQwQ0FG
IC8qIEFuaW1hdGlvbkxpc3QuY3BwICovLAogCQkJCTQ5RTkxMkE4MEVGQUM5MDYwMDlEMENBRiAv
KiBBbmltYXRpb25MaXN0LmggKi8sCiAJCQkJMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFu
aW1hdGlvblV0aWxpdGllcy5oICovLAotCQkJCTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQ
cmVyZW5kZXJIYW5kbGUuaCAqLywKIAkJCQk0OUU5MTJBOTBFRkFDOTA2MDA5RDBDQUYgLyogVGlt
aW5nRnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1lID0gYW5pbWF0aW9uOwpAQCAtMjA5MTcs
NiArMjA5MTgsOCBAQAogCQkJCTA2NjhFMTg5MEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUu
aCAqLywKIAkJCQlBQkMxMjg3NjBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50Lmgg
Ki8sCiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggKi8s
CisJCQkJOTg2RUE4ODIxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oICovLAor
CQkJCTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLywKIAkJ
CQlFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi8sCiAJCQkJ
N0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLywKIAkJCQlBNzJF
QTNCQTE1ODVDRjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBsZW1lbnQuaCAqLywKQEAgLTI1
NjQ5LDYgKzI1NjUyLDcgQEAKIAkJCQk3RTVEN0E3NzE2MUQzRjhGMDA4OTZDMzQgLyogT0VTRWxl
bWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NkY2RkIxNjI3QTJDQTAwMDYy
MjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3MTI3
Q0IxNjM0MzhBRTAwRUQ2RjVBIC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk4NkVBODgzMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggN2EwNTUyYTRhNzBk
YTkzZDQyMDExN2ZkMjAyZTkyMDljM2I0NzIxYS4uMzhiZTcxYjc3MDE2MzlmOTZkNDVjMjlkOGQ2
NWM3YmI4OTJlMDk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yNDMsNiArMjQzLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8od2Via2l0ZGV2aWNlcHJv
eGltaXR5KSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdFByZXJlbmRlclN0YXJ0KSBcCisgICAg
bWFjcm8od2Via2l0UHJlcmVuZGVyU3RvcCkgXAorICAgIG1hY3JvKHdlYmtpdFByZXJlbmRlckxv
YWQpIFwKKyAgICBtYWNybyh3ZWJraXRQcmVyZW5kZXJET01Db250ZW50TG9hZGVkKQogCiAvLyBl
bmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCA3Yzk2YjE5YjEzODc4MTllMjAyZjU0ODllMmM2MjA5YjNmNDRi
NDMzLi5kMTIyYWFmYTY5ODdlNDc0NDM5NjFkZThiNGM3OWE0MDc4NmI3MTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKQEAgLTM1Niw2ICszNTcsMjggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6
OmxpbmtMb2FkaW5nRXJyb3JlZCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAorI2lmIEVOQUJMRShM
SU5LX1BSRVJFTkRFUikKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkaWRTdGFydExpbmtQcmVyZW5k
ZXIoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Vi
a2l0UHJlcmVuZGVyU3RhcnRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcigpCit7CisgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRQcmVyZW5kZXJTdG9wRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU2VuZExvYWRGb3JMaW5r
UHJlcmVuZGVyKCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLndlYmtpdFByZXJlbmRlckxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQg
SFRNTExpbmtFbGVtZW50OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQcmVyZW5kZXIo
KQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0
UHJlcmVuZGVyRE9NQ29udGVudExvYWRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKyNlbmRp
ZgorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAgIGlmICghc3R5
bGVTaGVldElzTG9hZGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApp
bmRleCAwYjZjNmM5OTdmMjhhZTM0MTI1MzYzODNlMGMwMTA0MDhkNWZmZDFhLi5lMTZmMTNkMWNl
NDczMDg2MTg0OWQyM2E2MGNmYjQ5ODRlZjg5NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmgKQEAgLTg5LDggKzg5LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9j
Y3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9h
ZGluZ0Vycm9yZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vycm9yZWQoKSBPVkVSUklERTsKKyNpZiBFTkFC
TEUoTElOS19QUkVSRU5ERVIpIAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExpbmtQcmVyZW5k
ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQcmVyZW5kZXIoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZExvYWRGb3JMaW5rUHJlcmVuZGVyKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yTGlu
a1ByZXJlbmRlcigpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICBib29sIGlzQWx0ZXJuYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVsQXR0cmlidXRl
Lm1faXNBbHRlcm5hdGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApp
bmRleCBlNTBiMzc5ZDk2YmVkYTczMjkyNTQ2NDIwZWFjZjk4YmE1NDNlMWI4Li40ZTk3Mjc1ZTE0
MzgyNmEyMDMyOTc5MmZhZjY4NGUyM2NiNWZhYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCkBAIC05MCw2ICs5MCwyNiBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9
IDA7CiB9CiAKK3ZvaWQgTGlua0xvYWRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIoKQoreworICAgIG1f
Y2xpZW50LT5kaWRTdGFydExpbmtQcmVyZW5kZXIoKTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpk
aWRTdG9wUHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkU3RvcExpbmtQcmVyZW5kZXIo
KTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcigpCit7Cisg
ICAgbV9jbGllbnQtPmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpOworfQorCit2b2lkIExp
bmtMb2FkZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBt
X2NsaWVudC0+ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVyKCk7Cit9CisK
IGJvb2wgTGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0
cmlidXRlLCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IEtVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkK
IHsKQEAgLTEzNSw3ICsxNTUsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExp
bmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB0eQogI2lmIEVOQUJM
RShMSU5LX1BSRVJFTkRFUikKICAgICBpZiAocmVsQXR0cmlidXRlLm1faXNMaW5rUHJlcmVuZGVy
KSB7CiAgICAgICAgIEFTU0VSVCghbV9wcmVyZW5kZXJIYW5kbGUpOwotICAgICAgICBtX3ByZXJl
bmRlckhhbmRsZSA9IGRvY3VtZW50LT5wcmVyZW5kZXJlcigpLT5yZW5kZXIoaHJlZik7CisgICAg
ICAgIG1fcHJlcmVuZGVySGFuZGxlID0gZG9jdW1lbnQtPnByZXJlbmRlcmVyKCktPnJlbmRlcih0
aGlzLCBocmVmKTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5oCmluZGV4IGExYTYzZjAzZmVkZTk2ZjE0NjJjNzQ2MDgwNGU1MzM1YmQ0
MWI2MzIuLmIwYzY5ZDI3ZmE4ZmViZjRmNDA5NDQyNzg1NGIyN2MwNzE4YWY4NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJMaW5rTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUHJlcmVuZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ3LDcg
KzQ4LDExIEBAIGNsYXNzIFByZXJlbmRlckhhbmRsZTsKICNlbmRpZgogCiAvLyBUaGUgTGlua0xv
YWRlciBjYW4gbG9hZCBsaW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291
cmNlLCBwcmVmZXRjaCBhbmQgcHJlcmVuZGVyLgotY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBMaW5rTG9hZGVyIDogcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50CisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorICAgICAgICAgICAgICAg
ICAsIHB1YmxpYyBQcmVyZW5kZXJDbGllbnQgeworI2VuZGlmCisKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBMaW5rTG9hZGVyKExpbmtMb2FkZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9h
ZGVyKCk7CkBAIC01NSw2ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbSBDYWNoZWRSZXNv
dXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSopOwogICAgIAorI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikKKyAgICAvLyBmcm9tIFByZXJl
bmRlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByZXJlbmRlcigpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkgT1ZFUlJJREU7Cisj
ZW5kaWYKKwogICAgIHZvaWQgcmVsZWFzZWQoKTsKICAgICBib29sIGxvYWRMaW5rKGNvbnN0IExp
bmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMs
IGNvbnN0IEtVUkwmLCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXJDbGllbnQuaAppbmRleCA0MzUwZWU3OGM5NWE3NjNmOWNjNWQ0NWU1YThlMTYyYTliMWE1MDYz
Li4xZTFkYjJiMjlhYWJjMDM1M2FiYWQxYjYwZjFhNzI3MDk2MTE1ZmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDEzIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGlu
a0xvYWRpbmdFcnJvcmVkKCkgPSAwOwogICAgIC8vIFRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBm
b3IgY2FuY2VsbGF0aW9uLgorCisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydExpbmtQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0b3BMaW5rUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kTG9hZEZv
ckxpbmtQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRET01Db250ZW50
TG9hZGVkRm9yTGlua1ByZXJlbmRlcigpID0gMDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QcmVyZW5kZXJlci5jcHAKaW5kZXggODdiYWM3NzhjYTk5M2Q1NDY1OGJkN2JmN2Q2
ZTY4NTIyMzJhZjUzZi4uNTJhNWY5YjYyMWZkZWIxMjc1OGZjN2RmYjNiMDQ2ZWYwNTllMjQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFBy
ZXJlbmRlcmVyOjp+UHJlcmVuZGVyZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFByZXJlbmRlckhh
bmRsZT4gUHJlcmVuZGVyZXI6OnJlbmRlcihjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPFBy
ZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVyZXI6OnJlbmRlcihQcmVyZW5kZXJDbGllbnQqIHByZXJl
bmRlckNsaWVudCwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFByZXJlbmRlcnMgYXJlIHVu
bGlrZSByZXF1ZXN0cyBpbiBtb3N0IHdheXMgKGZvciBpbnN0YW5jZSwgdGhleSBwYXNzIGRvd24g
ZnJhZ21lbnRzLCBhbmQgdGhleSBkb24ndCByZXR1cm4gZGF0YSksCiAgICAgLy8gYnV0IHRoZXkg
ZG8gaGF2ZSByZWZlcnJlcnMuCkBAIC03OSw3ICs3OSw3IEBAIFBhc3NSZWZQdHI8UHJlcmVuZGVy
SGFuZGxlPiBQcmVyZW5kZXJlcjo6cmVuZGVyKGNvbnN0IEtVUkwmIHVybCkKIAogICAgIGNvbnN0
IFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVy
KHJlZmVycmVyUG9saWN5LCB1cmwsIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCkpOwogCi0gICAgUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gcHJlcmVuZGVy
SGFuZGxlID0gUHJlcmVuZGVySGFuZGxlOjpjcmVhdGUodXJsLCByZWZlcnJlciwgcmVmZXJyZXJQ
b2xpY3kpOworICAgIFJlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IHByZXJlbmRlckhhbmRsZSA9IFBy
ZXJlbmRlckhhbmRsZTo6Y3JlYXRlKHByZXJlbmRlckNsaWVudCwgdXJsLCByZWZlcnJlciwgcmVm
ZXJyZXJQb2xpY3kpOwogCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+d2ls
bEFkZFByZXJlbmRlcihwcmVyZW5kZXJIYW5kbGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJl
cmVuZGVyZXIuaAppbmRleCA2MWM2ZDhjZDkzOGI1MGE5ZTJiM2JkMmYxOTlhN2E5MGZmZTgzYTIx
Li41YmY0OTdhYzcwN2VmZTFkNTY3MGU5NTBjMDM5Yzc0Y2I3Y2NkMDVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJlcmVuZGVyZXIuaApAQCAtNDYsNiArNDYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsKIGNsYXNzIFByZXJl
bmRlckhhbmRsZTsKIGNsYXNzIFByZXJlbmRlcmVyQ2xpZW50OwogY2xhc3MgUGFnZTsKQEAgLTU1
LDcgKzU2LDcgQEAgY2xhc3MgUHJlcmVuZGVyZXIgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QcmVyZW5kZXJlcigpOwogCi0gICAgUGFzc1JlZlB0cjxQ
cmVyZW5kZXJIYW5kbGU+IHJlbmRlcihjb25zdCBLVVJMJik7CisgICAgUGFzc1JlZlB0cjxQcmVy
ZW5kZXJIYW5kbGU+IHJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJik7CiAKICAg
ICBzdGF0aWMgUGFzc093blB0cjxQcmVyZW5kZXJlcj4gY3JlYXRlKERvY3VtZW50Kik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIzMjEw
MzY3OTE0MDA1YjQ3ZjA3MWQ4ODQzMjhiMTNmODliOWY4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8K
KworI2lmbmRlZiBQcmVyZW5kZXJDbGllbnRfaAorI2RlZmluZSBQcmVyZW5kZXJDbGllbnRfaAor
CisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFByZXJlbmRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UHJlcmVuZGVyQ2xp
ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpID0gMDsKK307CisKK30KKworI2VuZGlmCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAppbmRleCAw
NGZkYWZjZjQwZjRlYWZlODQwYjA4YmY5NjBlNzE0MjNkZjcyYTdhLi4yYjBjOTYyYTFiZWUzODU1
NGU1ZjE0NjMzODEzODVlNWM3NjgxNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVy
ZW5kZXJIYW5kbGUuaApAQCAtNDQsMTcgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgS1VSTDsKIGNsYXNzIFByZXJlbmRlcjsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsKIAog
Y2xhc3MgUHJlcmVuZGVySGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJlcmVuZGVySGFuZGxl
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlcmVuZGVySGFuZGxlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gY3JlYXRlKFByZXJlbmRlckNsaWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CiAgICAgflBy
ZXJlbmRlckhhbmRsZSgpOwogCiAgICAgUHJlcmVuZGVyKiBwcmVyZW5kZXIoKTsKIAotICAgIC8v
IEZJWE1FOiBvbmUgZGF5IHRoZXJlIHdpbGwgYmUgZXZlbnRzIGhlcmUsIGFuZCB3ZSB3aWxsIGJl
IGEgUHJlcmVuZGVyQ2xpZW50LgotCiAgICAgLy8gQSBwcmVyZW5kZXIgbGluayBlbGVtZW50IGlz
IGFkZGVkIHdoZW4gaXQgaXMgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50LgogICAgIHZvaWQgYWRk
KCk7CiAKQEAgLTc1LDcgKzc0LDggQEAgcHVibGljOgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUHJlcmVuZGVySGFuZGxlKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisgICAgUHJl
cmVuZGVySGFuZGxlKFByZXJlbmRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisKICAgICBSZWZQdHI8UHJlcmVuZGVyPiBtX3By
ZXJlbmRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1ByZXJlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVy
ZW5kZXIuY3BwCmluZGV4IDQzMWE3YWI1OGVkZmJmNzA2MTMwZDJmYjkzMjJmNWU3MTI2YjVjODEu
LjcxYTcxYWVjZTkxOGRjOWU3NTZlMTUxODMwZjgzOGNkMjg0Mzk0MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlcmVuZGVyLmgiCisjaW5jbHVk
ZSAiUHJlcmVuZGVyQ2xpZW50LmgiCiAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViUHJlcmVuZGVyLmg+CkBAIC00Myw4ICs0NCw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUHJlcmVuZGVyOjpQcmVyZW5kZXIoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCi0gICAgOiBtX3Vy
bCh1cmwpCitQcmVyZW5kZXI6OlByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xp
Y3kpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3Jl
ZmVycmVyKHJlZmVycmVyKQogICAgICwgbV9yZWZlcnJlclBvbGljeShwb2xpY3kpCiB7CkBAIC01
OSwyNiArNjEsMjQgQEAgdm9pZCBQcmVyZW5kZXI6OmFkZCgpCiAgICAgV2ViS2l0OjpXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9y
dDo6Y3VycmVudCgpOwogICAgIGlmICghcGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKLSAgICBX
ZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFk
ZCh3ZWJQcmVyZW5kZXIpOworICAgIG1fd2ViUHJlcmVuZGVyID0gYWRvcHRQdHIobmV3IFdlYktp
dDo6V2ViUHJlcmVuZGVyKHRoaXMpKTsKKyAgICBwbGF0Zm9ybS0+YWRkKG1fd2ViUHJlcmVuZGVy
LmdldCgpKTsKIH0KIAogdm9pZCBQcmVyZW5kZXI6OmNhbmNlbCgpCiB7CiAgICAgV2ViS2l0OjpX
ZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5n
U3VwcG9ydDo6Y3VycmVudCgpOwotICAgIGlmICghcGxhdGZvcm0pCisgICAgaWYgKCFwbGF0Zm9y
bSB8fCAhbV93ZWJQcmVyZW5kZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlBy
ZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmNhbmNlbCh3ZWJQcmVy
ZW5kZXIpOworICAgIHBsYXRmb3JtLT5jYW5jZWwobV93ZWJQcmVyZW5kZXIuZ2V0KCkpOwogfQog
CiB2b2lkIFByZXJlbmRlcjo6YWJhbmRvbigpCiB7CiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3Vy
cmVudCgpOwotICAgIGlmICghcGxhdGZvcm0pCisgICAgaWYgKCFwbGF0Zm9ybSB8fCAhbV93ZWJQ
cmVyZW5kZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQ
cmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFiYW5kb24od2ViUHJlcmVuZGVyKTsKKyAg
ICBwbGF0Zm9ybS0+YWJhbmRvbihtX3dlYlByZXJlbmRlci5nZXQoKSk7CiB9CiAKIHZvaWQgUHJl
cmVuZGVyOjpzdXNwZW5kKCkKQEAgLTkxLDYgKzkxLDMwIEBAIHZvaWQgUHJlcmVuZGVyOjpyZXN1
bWUoKQogICAgIGFkZCgpOwogfQogCit2b2lkIFByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIo
KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0UHJlcmVu
ZGVyKCk7Cit9CisKK3ZvaWQgUHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVuZGVyKCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTdG9wUHJlcmVuZGVyKCk7Cit9CisK
K3ZvaWQgUHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcigpCit7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKK30K
Kwordm9pZCBQcmVyZW5kZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTZW5kRE9NQ29udGVu
dExvYWRlZEZvclByZXJlbmRlcigpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTElOS19Q
UkVSRU5ERVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
cmVyZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5o
CmluZGV4IGNlNGNjYzdmYTY2M2EyMTQ4ZWY1MTEyNDRjMTM4NzM5NTFkM2IwMDguLjg1NzJhZTA2
YWQyNmRhYmM1MTFmZjM0MjYyY2I4OWRiYzI2ZDI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCkBAIC00NCw4ICs0NCwxNCBAQAogCiAjaWYgRU5B
QkxFKExJTktfUFJFUkVOREVSKQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByZXJl
bmRlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQcmVyZW5kZXJDbGllbnQ7
CisKIGNsYXNzIFByZXJlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFByZXJlbmRlcj4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXJlbmRlcik7CiBwdWJsaWM6CkBAIC01NCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAot
ICAgIFByZXJlbmRlcihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJy
ZXJQb2xpY3kpOworICAgIFByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOwogICAgIH5QcmVyZW5kZXIo
KTsKIAogICAgIHZvaWQgYWRkKCk7CkBAIC02OSw4ICs3NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0
cmFEYXRhID0gZXh0cmFEYXRhOyB9CiAgICAgRXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVy
biBtX2V4dHJhRGF0YS5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIo
KTsKKyAgICB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsKKyAgICB2b2lkIGRpZFNlbmRMb2FkRm9y
UHJlcmVuZGVyKCk7CisgICAgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRl
cigpOwogCiBwcml2YXRlOgorICAgIFByZXJlbmRlckNsaWVudCogbV9jbGllbnQ7CisKKyAgICBP
d25QdHI8V2ViS2l0OjpXZWJQcmVyZW5kZXI+IG1fd2ViUHJlcmVuZGVyOworCiAgICAgY29uc3Qg
S1VSTCBtX3VybDsKICAgICBjb25zdCBTdHJpbmcgbV9yZWZlcnJlcjsKICAgICBjb25zdCBSZWZl
cnJlclBvbGljeSBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHAKaW5kZXggOTdjZWM3OTc5Y2Q3NTNm
YTRkMDJkODI3ZDcxMTMzZTM1OTg4YWVlNi4uNDE4MzAzNGMxNzgzNTY3OTE2MjhjYTQ4MTQwNzcx
NDg3MWJjMTQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UHJlcmVuZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QcmVyZW5kZXJIYW5kbGUuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVySGFuZGxlOjpj
cmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBv
bGljeSBwb2xpY3kpCitQYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVySGFuZGxl
OjpjcmVhdGUoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUHJlcmVuZGVySGFuZGxlKHVybCwgcmVmZXJyZXIsIHBvbGljeSkpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUHJlcmVuZGVySGFuZGxlKGNsaWVudCwgdXJsLCByZWZlcnJl
ciwgcG9saWN5KSk7CiB9CiAKLVByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5
KQotICAgIDogbV9wcmVyZW5kZXIoYWRvcHRSZWYobmV3IFByZXJlbmRlcih1cmwsIHJlZmVycmVy
LCBwb2xpY3kpKSkKK1ByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKFByZXJlbmRlckNs
aWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJl
ZmVycmVyUG9saWN5IHBvbGljeSkKKyAgICA6IG1fcHJlcmVuZGVyKGFkb3B0UmVmKG5ldyBQcmVy
ZW5kZXIoY2xpZW50LCB1cmwsIHJlZmVycmVyLCBwb2xpY3kpKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5k
ZXIuY3BwCmluZGV4IDgzMjdmYmQ3MDZmYzQzMDdmYmNhMmZmZTBmOWZhYjg4NDRhMDYzYzAuLjVm
NmUyMTc4MDdhN2YzMmZjZWEyYzlhNzQxYzM5YTg4ZmY2NWU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUHJlcmVuZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5j
cHAKQEAgLTk3LDYgKzk3LDI2IEBAIGNvbnN0IFdlYlByZXJlbmRlcjo6RXh0cmFEYXRhKiBXZWJQ
cmVyZW5kZXI6OmV4dHJhRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4dHJh
RGF0YUNvbnRhaW5lcio+KHdlYmNvcmVFeHRyYURhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsKIH0K
IAordm9pZCBXZWJQcmVyZW5kZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZh
dGUtPmRpZFN0YXJ0UHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVuZGVyOjpkaWRTdG9w
UHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BQcmVyZW5kZXIoKTsKK30KKwor
dm9pZCBXZWJQcmVyZW5kZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBtX3By
aXZhdGUtPmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVuZGVy
OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9wcml2YXRl
LT5kaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRUQoTElOS19QUkVSRU5ERVIpCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmVlMmZmMDU5N2Qy
ZDIzNTU2ZjU0M2Y2ZDc4YjA4MTQ2ZTFmMzA2OC4uODljZTM1ZjZjZTg0NGVkMWMwMTRjYTNjMWYx
ZDA4ZTZjMWIzZGRiNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTIzICBHYXZpbiBQZXRlcnMgIDxnYXZp
bnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBQcmVyZW5kZXJTdGF0dXNFdmVudCBvbiA8
bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVudCBpcyBzZW50
IHRvIGxpbmsgZWxlbWVudHMgd2hlbiBwcmVyZW5kZXJzIGFyZSBzdGFydGVkIGJ5IHRoZSBlbWJl
ZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRoZXkgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRo
aXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6ZSBsYXVuY2hpbmcgcHJlcmVuZGVycywgYW5kIHRy
YWNrIHRpbWluZyBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmNwcDoKKyAgICAgICAgKE1vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0OjphZGQpOgorICAgICAgICAoTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBv
cnQ6OmNhbmNlbCk6CisgICAgICAgIChNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6YWJhbmRv
bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmlu
Z1N1cHBvcnQuaDoKKyAgICAgICAgKE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KToKKwogMjAx
Mi0xMC0yMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNv
bT4KIAogICAgICAgICBbV0syXSBbV1RSXSBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5u
ZXIucXVldWVGb3J3YXJkTmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwCmluZGV4IGQ2
NjdkODg2NTAzNTU5Yzg0OWZjMjk2NzhkOGNkMWI0Y2YwOGIxMzYuLjk3NjZkY2U1ODgxYWI5YzIx
MjZkNzdkNGE2NGNkMWQ2Nzk3ZDM5MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAKQEAgLTQ1
LDE0ICs0NSwxNCBAQCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6fk1vY2tXZWJQcmVyZW5k
ZXJpbmdTdXBwb3J0KCkKICAgICBzaHV0ZG93bigpOwogfQogCi12b2lkIE1vY2tXZWJQcmVyZW5k
ZXJpbmdTdXBwb3J0OjphZGQoY29uc3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2Nr
V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6YWRkKFdlYktpdDo6V2ViUHJlcmVuZGVyKikKIHsKIH0K
IAotdm9pZCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y2FuY2VsKGNvbnN0IFdlYktpdDo6
V2ViUHJlcmVuZGVyJikKK3ZvaWQgTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmNhbmNlbChX
ZWJLaXQ6OldlYlByZXJlbmRlciopCiB7CiB9CiAKLXZvaWQgTW9ja1dlYlByZXJlbmRlcmluZ1N1
cHBvcnQ6OmFiYW5kb24oY29uc3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2NrV2Vi
UHJlcmVuZGVyaW5nU3VwcG9ydDo6YWJhbmRvbihXZWJLaXQ6OldlYlByZXJlbmRlciopCiB7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVu
ZGVyaW5nU3VwcG9ydC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlBy
ZXJlbmRlcmluZ1N1cHBvcnQuaAppbmRleCBiNWQ0YWY1M2Q4ZDg2Y2M4NDc3N2YxNmU1ZmMwMzgx
OTc5ZmJmM2JkLi45ZWU3YjExZWQ4NGQ5ZjkzMmNjNGI1MGRjZTdkOWZmMDcwNmY2NWRkIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5n
U3VwcG9ydC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0LmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fk1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhZGQo
Y29uc3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKSBPVkVSUklERTsKLSAgICB2b2lkIGNhbmNlbChj
b25zdCBXZWJLaXQ6OldlYlByZXJlbmRlciYpIE9WRVJSSURFOwotICAgIHZvaWQgYWJhbmRvbihj
b25zdCBXZWJLaXQ6OldlYlByZXJlbmRlciYpIE9WRVJSSURFOworICAgIHZvaWQgYWRkKFdlYktp
dDo6V2ViUHJlcmVuZGVyKikgT1ZFUlJJREU7CisgICAgdm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJQ
cmVyZW5kZXIqKSBPVkVSUklERTsKKyAgICB2b2lkIGFiYW5kb24oV2ViS2l0OjpXZWJQcmVyZW5k
ZXIqKSBPVkVSUklERTsKIH07CiAKICNlbmRpZiAvLyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9y
dF9oCg==
</data>
<flag name="review"
          id="187637"
          type_id="1"
          status="-"
          setter="gavinp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173064</attachid>
            <date>2012-11-08 10:24:38 -0800</date>
            <delta_ts>2012-12-06 10:40:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20121108132246.patch</filename>
            <type>text/plain</type>
            <size>32929</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzYTNmODVhZGFmZTcy
MTA4Y2NiMGFmYzQ2OWUwYjBkNGVmMjg5Y2QzLi4wZWU0MjBmODJjNzg1MTViNDkxNjUxZjBkZjYw
YTBhNmE3ZjRkYTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMS0wOCAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3RhdHVz
IGV2ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNF
dmVudCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMgd2hlbgorICAgICAgICBwcmVyZW5kZXJzIGFy
ZSBzdGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRoZXkKKyAgICAg
ICAgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6
ZSBsYXVuY2hpbmcKKyAgICAgICAgcHJlcmVuZGVycywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3Jt
YW5jZS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaDoKKyAgICAg
ICAgKFdlYlByZXJlbmRlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRl
cmluZ1N1cHBvcnQuaDoKKyAgICAgICAgKFdlYlByZXJlbmRlcmluZ1N1cHBvcnQpOgorCiAyMDEy
LTExLTA3ICBZdXN1ZiBPenV5c2FsICA8eXVzdWZvQGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRk
IEFQSSBmb3IgdG91Y2hFdmVudEhhbmRsZXJSZWdpb24gdG8gV2ViTGF5ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxYTRhNDU4Nzk2MmM5NTc0ZDc0NWExZDI1MjIzZmNlNDIyMmUyODNhLi5mNjQ2ZjZjZDUzNTgx
NjE2MmFkNzE2N2JhZjQwMjdjMzYyZmYyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAK
KzIwMTItMTEtMDggIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkIHN0YXR1cyBldmVudHMgb24gPGxpbmsgcmVsPXByZXJlbmRlcj4gZWxlbWVudHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ3NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgUHJl
cmVuZGVyU3RhdHVzRXZlbnQgaXMgc2VudCB0byBsaW5rIGVsZW1lbnRzIHdoZW4KKyAgICAgICAg
cHJlcmVuZGVycyBhcmUgc3RhcnRlZCBieSB0aGUgZW1iZWRkZXIsIGFuZCBhbHNvIHNlbnQgd2hl
biB0aGV5CisgICAgICAgIGFyZSBzdG9wcGVkLiBQYWdlcyB1c2luZyB0aGlzIGZlYXR1cmUgY2Fu
IG5vdyBzZXJpYWxpemUgbGF1bmNoaW5nCisgICAgICAgIHByZXJlbmRlcnMsIGFuZCB0cmFjayB0
aW1pbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgTm8gc3BlY2lmaWMgdGVzdHMsIHNpbmNlIGxh
eW91dCB0ZXN0cyBoYXZlIGRpZmZpY3VsdHkgdG91Y2hpbmcgdGhlCisgICAgICAgIHBsYXRmb3Jt
IGludGVyZmFjZS4gVGhlcmUgYXJlIGNocm9tZSBicm93c2VyIHRlc3RzIHRoYXQgdGVzdCB0aGUK
KyAgICAgICAgbmV3IEFQSSBlbmQgdG8gZW5kIGluIGNocm9taXVtLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0V2
ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpkaWRTdGFydExpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yTGlua1By
ZXJlbmRlcik6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKEhU
TUxMaW5rRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTdG9wUHJlcmVuZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9y
UHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAg
ICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAoTGlua0xvYWRlcik6CisgICAg
ICAgICogbG9hZGVyL0xpbmtMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKExpbmtMb2FkZXJDbGll
bnQpOgorICAgICAgICAqIGxvYWRlci9QcmVyZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcmVyZW5kZXJlcjo6cmVuZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUHJlcmVuZGVyZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXJlbmRlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQcmVy
ZW5kZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyQ2xpZW50Ojp+UHJlcmVu
ZGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVySGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVy
OjpQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjphZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVu
ZGVyOjphYmFuZG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVy
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6
OmRpZFN0b3BQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTZW5k
TG9hZEZvclByZXJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmRpZFNlbmRE
T01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9QcmVyZW5kZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFByZXJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVy
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckhhbmRsZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVuZGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU2VuZERPTUNvbnRlbnRMb2Fk
ZWRGb3JQcmVyZW5kZXIpOgorCiAyMDEyLTExLTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMz
ODQxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVy
ZW5kZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmgK
aW5kZXggNWVkODA0OTAwZmM2ZmEwYjZjYzgxODU0NjQ3ZGNiNjlhMjMyNWFjNS4uOTRiMTRjMzlj
YWNjODg2OWI5MTIwZTBmNjFhMDAwYzc0MTc0ZDI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCkBAIC02Niw2ICs2NiwxMSBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKICAgICBX
RUJLSVRfRVhQT1JUIGNvbnN0IEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7CiAKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgZGlkU3RvcFByZXJlbmRlcigpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTZW5k
TG9hZEZvclByZXJlbmRlcigpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpOworCiBwcml2YXRlOgogICAgIFdlYlByZXJlbmRlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJl
bmRlcmluZ1N1cHBvcnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJl
cmVuZGVyaW5nU3VwcG9ydC5oCmluZGV4IGEyNjcyOTExZmE1MGE4MzM1OGQyYmY0YjA5OTZmZDU0
OTM4MDZiYTIuLmEzNWI2NDMyNmI5YmQyM2ViNmU3N2ViYmVjMzM4ZTFkNmUwNGM0YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVy
aW5nU3VwcG9ydC5oCkBAIC00NCwxNSArNDQsMTUgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYlByZXJlbmRlcmluZ1N1cHBvcnQqIGN1cnJlbnQoKTsKIAogICAgIC8vIEEg
cHJlcmVuZGVyIGxpbmsgZWxlbWVudCBpcyBhZGRlZCB3aGVuIGl0IGlzIGluc2VydGVkIGludG8g
YSBkb2N1bWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFdlYlByZXJlbmRlciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKFdlYlByZXJlbmRlciopID0gMDsKIAogICAgIC8vIEEg
cHJlcmVuZGVyIGlzIGNhbmNlbGVkIHdoZW4gaXQgaXMgcmVtb3ZlZCBmcm9tIGEgZG9jdW1lbnQu
Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbChjb25zdCBXZWJQcmVyZW5kZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbChXZWJQcmVyZW5kZXIqKSA9IDA7CiAKICAgICAvLyBBIHByZXJl
bmRlciBpcyBhYmFuZG9uZWQgd2hlbiBpdCdzIG5hdmlnYXRlZCBhd2F5IGZyb20gb3Igc3VzcGVu
ZGVkIGluIHRoZSBwYWdlIGNhY2hlLiBUaGlzCiAgICAgLy8gaXMgYSB3ZWFrZXIgc2lnbmFsIHRo
YW4gY2FuY2VsKCksIHNpbmNlIHRoZSBsYXVuY2hlciBoYXNuJ3QgaW5kaWNhdGVkIHRoYXQgdGhl
IHByZXJlbmRlciBpc24ndAogICAgIC8vIHdhbnRlZCwgYW5kIHdlIG1heSBlbmQgdXAgdXNpbmcg
aXQgYWZ0ZXIsIGZvciBpbnN0YW5jZSwgYSBzaG9ydCByZWRpcmVjdCBjaGFpbi4KLSAgICB2aXJ0
dWFsIHZvaWQgYWJhbmRvbihjb25zdCBXZWJQcmVyZW5kZXImKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFiYW5kb24oV2ViUHJlcmVuZGVyKikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJl
cmVuZGVyaW5nU3VwcG9ydCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
OGU0ODk5YTEzNDg4NjI5Njc2MTE3NTJjMGM4OWNhZGYwM2VhYWRjYS4uZjE0NWNmNWQ0ZWYxZWUy
YWJmODY5ODA2YmZjYjk4YmExNGNmNzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00Nzg2LDYgKzQ3ODYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qb3B1cE1lbnUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVy
Z2VQcmlvcml0eS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDlhMjljZWY1YmExOWUyYTg2Zjg3MmUyOGVl
MWFiN2NjODgyNDI1N2EuLmMwYjM4YmFmNmM3YWExZWVmY2U2MGEzNDU3NDc0YjBkYzJmZGJmNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMjMwMyw2ICsyMzAzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxh
dGZvcm0vVGltZXIuaCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmggXAogICAgIHBsYXRmb3JtL1Bs
YXRmb3JtU3RyYXRlZ2llcy5oIFwKKyAgICBwbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCBcCiAg
ICAgcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmggXAogICAgIHBsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuaCBcCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDllNzVjOGQ4YjljNWYxZTcwZTg0NGQ3MGMxMjRlMmRiMjczYTQyYmIuLmI3MTkyYTE5
MWU4OWQ2NTI2NjVkYjBmMzg4YjIwYjgxNjIwM2YzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1
MjQsNiArNDUyNCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vUHJlcmVuZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1B1cmdlYWJsZUJ1
ZmZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9SdW5Mb29wVGltZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDRjOTY2ZmViY2M3NTA4YjdlY2Y0NzVjYTBj
NTEyOTUxZDk3ODVhZDIuLmY3Zjk4NmE1YzExOGE5NzhjNDJiNmM0NGY3Yjc0NTYyZGI1ZmIyNjMg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0y
ODU5NSw2ICsyODU5NSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5kZXJDbGllbnQuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cUHJlcmVuZGVySGFu
ZGxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM2OWMyNmNiNmVjZmVlYzlmOTAzYjJiMWJk
YjVlNjM4OWNhNjgwNTQuLjU3MjBmMmI0ZGQwNGU3NjVhMTRmOGZlMDdmOTQ0MjYwZWFkNDViMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM3MzcsNiArMzczNyw3IEBACiAJCTk4NTZGOEQxMTU0OUU4NEYwMEIwNEYzQSAvKiBQ
cmVyZW5kZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLzsg
fTsKIAkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1QkI5NkIxM0E5
NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICovOyB9OwogCQk5ODVCQjk2RTEz
QTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1QkI5NkMxM0E5NDA1ODAwN0EwQjY5IC8qIExp
bmtSZWxBdHRyaWJ1dGUuaCAqLzsgfTsKKwkJOTg2RUE4ODMxNUZGRjI5MDAwOTg1RTVFIC8qIFBy
ZXJlbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTg2RUE4ODIxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oICovOyB9
OwogCQk5OENFNDMyNjEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OENFNDMyNTEyOUUwMEJEMDA1
ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi87IH07CiAJCTk4Q0U0MzJBMTI5RTAwRTUwMDU4MjFE
QyAvKiBMaW5rTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OENFNDMyOTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oICovOyB9Owog
CQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4RUIxRjk0MTMxM0ZFMDUwMEQw
RTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0xMTAwMiw2ICsxMTAwMyw3IEBACiAJCTk4NTZGOEQwMTU0OUU4
NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJlcmVuZGVySGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk4NUJCOTZCMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtSZWxBdHRyaWJ1dGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5ODVCQjk2QzEzQTk0MDU4MDA3QTBCNjkgLyogTGlu
a1JlbEF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rUmVs
QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk4NkVBODgyMTVGRkYy
OTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJlcmVuZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk4Q0U0MzI1MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OENFNDMyOTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5rTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1l
bnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MDEsNyArMTU0MDMsNiBAQAogCQkJ
CTQ5RTkxMkE3MEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmNwcCAqLywKIAkJCQk0
OUU5MTJBODBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oICovLAogCQkJCTBGNTgw
RkFFMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCAqLywKLQkJCQk5ODU2
RjhEMDE1NDlFODRGMDBCMDRGM0EgLyogUHJlcmVuZGVySGFuZGxlLmggKi8sCiAJCQkJNDlFOTEy
QTkwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IGFuaW1hdGlvbjsKQEAgLTIwOTQ0LDYgKzIwOTQ1LDggQEAKIAkJCQkwNjY4RTE4OTBBREQ5
NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggKi8sCiAJCQkJQUJDMTI4NzYwQjMzQUE2RDAwQzY5
M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oICovLAogCQkJCUJDM0JFMTJBMEU5ODA5MkYwMDgzNTU4
OCAvKiBQb3B1cE1lbnVTdHlsZS5oICovLAorCQkJCTk4NkVBODgyMTVGRkYyOTAwMDk4NUU1RSAv
KiBQcmVyZW5kZXJDbGllbnQuaCAqLywKKwkJCQk5ODU2RjhEMDE1NDlFODRGMDBCMDRGM0EgLyog
UHJlcmVuZGVySGFuZGxlLmggKi8sCiAJCQkJRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1
cmdlYWJsZUJ1ZmZlci5oICovLAogCQkJCTdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJn
ZVByaW9yaXR5LmggKi8sCiAJCQkJQTcyRUEzQkExNTg1Q0Y1NTAwNEZBQTI2IC8qIFJlZkNvdW50
ZWRTdXBwbGVtZW50LmggKi8sCkBAIC0yNTY4NCw2ICsyNTY4Nyw3IEBACiAJCQkJM0ZGRkY5QTkx
NTlEOUE1NTAwMjBCQkQ1IC8qIFdlYktpdENTU1ZpZXdwb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEMwMzE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTg2RUE4ODMxNUZGRjI5MDAw
OTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAppbmRleCA5ZWQ3YzdjMTk5MzNiOTljZTk3MDcxNDBkOGRkZGZjYmMxMDUyNGZlLi5h
ZjRhNmE2Y2FiN2JhNjA1YTRhNjRiMWVkYjUwZDc0YWI0OWQ2ZDIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKQEAgLTI0Niw2ICsyNDYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1h
Y3JvKGF1dG9jb21wbGV0ZSkgXAogICAgIG1hY3JvKGF1dG9jb21wbGV0ZWVycm9yKSBcCiAgICAg
XAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcnN0YXJ0KSBcCisgICAgbWFjcm8od2Via2l0cHJl
cmVuZGVyc3RvcCkgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcmxvYWQpIFwKKyAgICBtYWNy
byh3ZWJraXRwcmVyZW5kZXJkb21jb250ZW50bG9hZGVkKSBcCisgICAgXAogCiAvLyBlbmQgb2Yg
RE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCA3Yzk2YjE5YjEzODc4MTllMjAyZjU0ODllMmM2MjA5YjNmNDRiNDMzLi42
ZTMxNWZhOGM0OWJhNGM2NDc1ZTJlN2EwYTRmZDFjN2E3ZjUwZTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKQEAgLTM1Niw2ICszNTcsMjggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmxpbmtM
b2FkaW5nRXJyb3JlZCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAorI2lmIEVOQUJMRShMSU5LX1BS
RVJFTkRFUikKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkaWRTdGFydExpbmtQcmVyZW5kZXIoKQor
eworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cHJl
cmVuZGVyc3RhcnRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTExpbmtFbGVt
ZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcigpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwcmVyZW5kZXJzdG9wRXZlbnQsIGZhbHNlLCBmYWxz
ZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU2VuZExvYWRGb3JMaW5rUHJlcmVu
ZGVyKCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdHByZXJlbmRlcmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQcmVyZW5kZXIoKQorewor
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cHJlcmVu
ZGVyZG9tY29udGVudGxvYWRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKyNlbmRpZgorCiBi
b29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAgIGlmICghc3R5bGVTaGVl
dElzTG9hZGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCAw
YjZjNmM5OTdmMjhhZTM0MTI1MzYzODNlMGMwMTA0MDhkNWZmZDFhLi5lMTZmMTNkMWNlNDczMDg2
MTg0OWQyM2E2MGNmYjQ5ODRlZjg5NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKQEAgLTg5LDggKzg5LDE0IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3VycmVk
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vy
cm9yZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vycm9yZWQoKSBPVkVSUklERTsKKyNpZiBFTkFCTEUoTElO
S19QUkVSRU5ERVIpIAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExpbmtQcmVyZW5kZXIoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQcmVyZW5kZXIoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZExvYWRGb3JMaW5rUHJlcmVuZGVyKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yTGlua1ByZXJl
bmRlcigpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICBib29sIGlzQWx0ZXJuYXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVsQXR0cmlidXRlLm1faXNB
bHRlcm5hdGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBl
NTBiMzc5ZDk2YmVkYTczMjkyNTQ2NDIwZWFjZjk4YmE1NDNlMWI4Li40ZTk3Mjc1ZTE0MzgyNmEy
MDMyOTc5MmZhZjY4NGUyM2NiNWZhYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCkBAIC05MCw2ICs5MCwyNiBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBtX2NhY2hlZExpbmtSZXNvdXJjZSA9IDA7CiB9
CiAKK3ZvaWQgTGlua0xvYWRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIoKQoreworICAgIG1fY2xpZW50
LT5kaWRTdGFydExpbmtQcmVyZW5kZXIoKTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpkaWRTdG9w
UHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkU3RvcExpbmtQcmVyZW5kZXIoKTsKK30K
Kwordm9pZCBMaW5rTG9hZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcigpCit7CisgICAgbV9j
bGllbnQtPmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpOworfQorCit2b2lkIExpbmtMb2Fk
ZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVu
dC0+ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVyKCk7Cit9CisKIGJvb2wg
TGlua0xvYWRlcjo6bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYgcmVsQXR0cmlidXRl
LCBjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgc2l6ZXMsIGNvbnN0IEtVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKQEAg
LTEzNSw3ICsxNTUsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxB
dHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB0eQogI2lmIEVOQUJMRShMSU5L
X1BSRVJFTkRFUikKICAgICBpZiAocmVsQXR0cmlidXRlLm1faXNMaW5rUHJlcmVuZGVyKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9wcmVyZW5kZXJIYW5kbGUpOwotICAgICAgICBtX3ByZXJlbmRlckhh
bmRsZSA9IGRvY3VtZW50LT5wcmVyZW5kZXJlcigpLT5yZW5kZXIoaHJlZik7CisgICAgICAgIG1f
cHJlcmVuZGVySGFuZGxlID0gZG9jdW1lbnQtPnByZXJlbmRlcmVyKCktPnJlbmRlcih0aGlzLCBo
cmVmKTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5oCmluZGV4IGExYTYzZjAzZmVkZTk2ZjE0NjJjNzQ2MDgwNGU1MzM1YmQ0MWI2MzIu
LmIwYzY5ZDI3ZmE4ZmViZjRmNDA5NDQyNzg1NGIyN2MwNzE4YWY4NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJMaW5rTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUHJlcmVuZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ3LDcgKzQ4LDEx
IEBAIGNsYXNzIFByZXJlbmRlckhhbmRsZTsKICNlbmRpZgogCiAvLyBUaGUgTGlua0xvYWRlciBj
YW4gbG9hZCBsaW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNlLCBw
cmVmZXRjaCBhbmQgcHJlcmVuZGVyLgotY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7CitjbGFzcyBMaW5rTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50CisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorICAgICAgICAgICAgICAgICAsIHB1
YmxpYyBQcmVyZW5kZXJDbGllbnQgeworI2VuZGlmCisKIHB1YmxpYzoKICAgICBleHBsaWNpdCBM
aW5rTG9hZGVyKExpbmtMb2FkZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5MaW5rTG9hZGVyKCk7
CkBAIC01NSw2ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNs
aWVudAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwog
ICAgIAorI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikKKyAgICAvLyBmcm9tIFByZXJlbmRlckNs
aWVudAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByZXJlbmRlcigpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRTdG9wUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisjZW5kaWYK
KwogICAgIHZvaWQgcmVsZWFzZWQoKTsKICAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxB
dHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0
IEtVUkwmLCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXJDbGll
bnQuaAppbmRleCA0MzUwZWU3OGM5NWE3NjNmOWNjNWQ0NWU1YThlMTYyYTliMWE1MDYzLi4xZTFk
YjJiMjlhYWJjMDM1M2FiYWQxYjYwZjFhNzI3MDk2MTE1ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRp
bmdFcnJvcmVkKCkgPSAwOwogICAgIC8vIFRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBmb3IgY2Fu
Y2VsbGF0aW9uLgorCisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydExpbmtQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BM
aW5rUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kTG9hZEZvckxpbmtQ
cmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9hZGVk
Rm9yTGlua1ByZXJlbmRlcigpID0gMDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QcmVyZW5kZXJlci5jcHAKaW5kZXggODdiYWM3NzhjYTk5M2Q1NDY1OGJkN2JmN2Q2ZTY4NTIy
MzJhZjUzZi4uNTJhNWY5YjYyMWZkZWIxMjc1OGZjN2RmYjNiMDQ2ZWYwNTllMjQ1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFByZXJlbmRl
cmVyOjp+UHJlcmVuZGVyZXIoKQogewogfQogCi1QYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4g
UHJlcmVuZGVyZXI6OnJlbmRlcihjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPFByZXJlbmRl
ckhhbmRsZT4gUHJlcmVuZGVyZXI6OnJlbmRlcihQcmVyZW5kZXJDbGllbnQqIHByZXJlbmRlckNs
aWVudCwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIFByZXJlbmRlcnMgYXJlIHVubGlrZSBy
ZXF1ZXN0cyBpbiBtb3N0IHdheXMgKGZvciBpbnN0YW5jZSwgdGhleSBwYXNzIGRvd24gZnJhZ21l
bnRzLCBhbmQgdGhleSBkb24ndCByZXR1cm4gZGF0YSksCiAgICAgLy8gYnV0IHRoZXkgZG8gaGF2
ZSByZWZlcnJlcnMuCkBAIC03OSw3ICs3OSw3IEBAIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxl
PiBQcmVyZW5kZXJlcjo6cmVuZGVyKGNvbnN0IEtVUkwmIHVybCkKIAogICAgIGNvbnN0IFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKHJlZmVy
cmVyUG9saWN5LCB1cmwsIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5vdXRnb2luZ1Jl
ZmVycmVyKCkpOwogCi0gICAgUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gcHJlcmVuZGVySGFuZGxl
ID0gUHJlcmVuZGVySGFuZGxlOjpjcmVhdGUodXJsLCByZWZlcnJlciwgcmVmZXJyZXJQb2xpY3kp
OworICAgIFJlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IHByZXJlbmRlckhhbmRsZSA9IFByZXJlbmRl
ckhhbmRsZTo6Y3JlYXRlKHByZXJlbmRlckNsaWVudCwgdXJsLCByZWZlcnJlciwgcmVmZXJyZXJQ
b2xpY3kpOwogCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+d2lsbEFkZFBy
ZXJlbmRlcihwcmVyZW5kZXJIYW5kbGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1ByZXJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVy
ZXIuaAppbmRleCA2MWM2ZDhjZDkzOGI1MGE5ZTJiM2JkMmYxOTlhN2E5MGZmZTgzYTIxLi41YmY0
OTdhYzcwN2VmZTFkNTY3MGU5NTBjMDM5Yzc0Y2I3Y2NkMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJlcmVuZGVyZXIuaApAQCAtNDYsNiArNDYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsKIGNsYXNzIFByZXJlbmRlckhh
bmRsZTsKIGNsYXNzIFByZXJlbmRlcmVyQ2xpZW50OwogY2xhc3MgUGFnZTsKQEAgLTU1LDcgKzU2
LDcgQEAgY2xhc3MgUHJlcmVuZGVyZXIgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5QcmVyZW5kZXJlcigpOwogCi0gICAgUGFzc1JlZlB0cjxQcmVyZW5k
ZXJIYW5kbGU+IHJlbmRlcihjb25zdCBLVVJMJik7CisgICAgUGFzc1JlZlB0cjxQcmVyZW5kZXJI
YW5kbGU+IHJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJik7CiAKICAgICBzdGF0
aWMgUGFzc093blB0cjxQcmVyZW5kZXJlcj4gY3JlYXRlKERvY3VtZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIzMjEwMzY3OTE0
MDA1YjQ3ZjA3MWQ4ODQzMjhiMTNmODliOWY4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lm
bmRlZiBQcmVyZW5kZXJDbGllbnRfaAorI2RlZmluZSBQcmVyZW5kZXJDbGllbnRfaAorCisjaWYg
RU5BQkxFKExJTktfUFJFUkVOREVSKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBy
ZXJlbmRlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UHJlcmVuZGVyQ2xpZW50KCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmRMb2FkRm9yUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpID0gMDsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAppbmRleCAwNGZkYWZj
ZjQwZjRlYWZlODQwYjA4YmY5NjBlNzE0MjNkZjcyYTdhLi4yYjBjOTYyYTFiZWUzODU1NGU1ZjE0
NjMzODEzODVlNWM3NjgxNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmVyZW5kZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJI
YW5kbGUuaApAQCAtNDQsMTcgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
S1VSTDsKIGNsYXNzIFByZXJlbmRlcjsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsKIAogY2xhc3Mg
UHJlcmVuZGVySGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJlcmVuZGVySGFuZGxlPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlcmVuZGVySGFuZGxlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFByZXJlbmRlckhhbmRsZT4gY3JlYXRlKFByZXJlbmRlckNsaWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CiAgICAgflByZXJlbmRl
ckhhbmRsZSgpOwogCiAgICAgUHJlcmVuZGVyKiBwcmVyZW5kZXIoKTsKIAotICAgIC8vIEZJWE1F
OiBvbmUgZGF5IHRoZXJlIHdpbGwgYmUgZXZlbnRzIGhlcmUsIGFuZCB3ZSB3aWxsIGJlIGEgUHJl
cmVuZGVyQ2xpZW50LgotCiAgICAgLy8gQSBwcmVyZW5kZXIgbGluayBlbGVtZW50IGlzIGFkZGVk
IHdoZW4gaXQgaXMgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50LgogICAgIHZvaWQgYWRkKCk7CiAK
QEAgLTc1LDcgKzc0LDggQEAgcHVibGljOgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgUHJlcmVuZGVySGFuZGxlKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisgICAgUHJlcmVuZGVy
SGFuZGxlKFByZXJlbmRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBSZWZlcnJlclBvbGljeSk7CisKICAgICBSZWZQdHI8UHJlcmVuZGVyPiBtX3ByZXJlbmRl
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1By
ZXJlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIu
Y3BwCmluZGV4IDQzMWE3YWI1OGVkZmJmNzA2MTMwZDJmYjkzMjJmNWU3MTI2YjVjODEuLjcxYTcx
YWVjZTkxOGRjOWU3NTZlMTUxODMwZjgzOGNkMjg0Mzk0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlcmVuZGVyLmgiCisjaW5jbHVkZSAiUHJl
cmVuZGVyQ2xpZW50LmgiCiAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViUHJlcmVuZGVyLmg+CkBAIC00Myw4ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUHJlcmVuZGVyOjpQcmVyZW5kZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCi0gICAgOiBtX3VybCh1cmwp
CitQcmVyZW5kZXI6OlByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCisg
ICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3JlZmVycmVy
KHJlZmVycmVyKQogICAgICwgbV9yZWZlcnJlclBvbGljeShwb2xpY3kpCiB7CkBAIC01OSwyNiAr
NjEsMjQgQEAgdm9pZCBQcmVyZW5kZXI6OmFkZCgpCiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3Vy
cmVudCgpOwogICAgIGlmICghcGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6
OldlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFkZCh3ZWJQ
cmVyZW5kZXIpOworICAgIG1fd2ViUHJlcmVuZGVyID0gYWRvcHRQdHIobmV3IFdlYktpdDo6V2Vi
UHJlcmVuZGVyKHRoaXMpKTsKKyAgICBwbGF0Zm9ybS0+YWRkKG1fd2ViUHJlcmVuZGVyLmdldCgp
KTsKIH0KIAogdm9pZCBQcmVyZW5kZXI6OmNhbmNlbCgpCiB7CiAgICAgV2ViS2l0OjpXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9y
dDo6Y3VycmVudCgpOwotICAgIGlmICghcGxhdGZvcm0pCisgICAgaWYgKCFwbGF0Zm9ybSB8fCAh
bV93ZWJQcmVyZW5kZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRl
ciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmNhbmNlbCh3ZWJQcmVyZW5kZXIp
OworICAgIHBsYXRmb3JtLT5jYW5jZWwobV93ZWJQcmVyZW5kZXIuZ2V0KCkpOwogfQogCiB2b2lk
IFByZXJlbmRlcjo6YWJhbmRvbigpCiB7CiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBw
b3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3VycmVudCgp
OwotICAgIGlmICghcGxhdGZvcm0pCisgICAgaWYgKCFwbGF0Zm9ybSB8fCAhbV93ZWJQcmVyZW5k
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRlciB3ZWJQcmVyZW5k
ZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFiYW5kb24od2ViUHJlcmVuZGVyKTsKKyAgICBwbGF0
Zm9ybS0+YWJhbmRvbihtX3dlYlByZXJlbmRlci5nZXQoKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVy
OjpzdXNwZW5kKCkKQEAgLTkxLDYgKzkxLDMwIEBAIHZvaWQgUHJlcmVuZGVyOjpyZXN1bWUoKQog
ICAgIGFkZCgpOwogfQogCit2b2lkIFByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIoKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0UHJlcmVuZGVyKCk7
Cit9CisKK3ZvaWQgUHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVuZGVyKCkKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTdG9wUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQg
UHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKK30KKwordm9p
ZCBQcmVyZW5kZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTZW5kRE9NQ29udGVudExvYWRl
ZEZvclByZXJlbmRlcigpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTElOS19QUkVSRU5E
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCmluZGV4
IGNlNGNjYzdmYTY2M2EyMTQ4ZWY1MTEyNDRjMTM4NzM5NTFkM2IwMDguLjg1NzJhZTA2YWQyNmRh
YmM1MTFmZjM0MjYyY2I4OWRiYzI2ZDI3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1ByZXJlbmRlci5oCkBAIC00NCw4ICs0NCwxNCBAQAogCiAjaWYgRU5BQkxFKExJ
TktfUFJFUkVOREVSKQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlByZXJlbmRlcjsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQcmVyZW5kZXJDbGllbnQ7CisKIGNs
YXNzIFByZXJlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFByZXJlbmRlcj4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFByZXJlbmRlcik7CiBwdWJsaWM6CkBAIC01NCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAotICAgIFBy
ZXJlbmRlcihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xp
Y3kpOworICAgIFByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOwogICAgIH5QcmVyZW5kZXIoKTsKIAog
ICAgIHZvaWQgYWRkKCk7CkBAIC02OSw4ICs3NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRh
ID0gZXh0cmFEYXRhOyB9CiAgICAgRXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4
dHJhRGF0YS5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAg
ICB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsKKyAgICB2b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVu
ZGVyKCk7CisgICAgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOwog
CiBwcml2YXRlOgorICAgIFByZXJlbmRlckNsaWVudCogbV9jbGllbnQ7CisKKyAgICBPd25QdHI8
V2ViS2l0OjpXZWJQcmVyZW5kZXI+IG1fd2ViUHJlcmVuZGVyOworCiAgICAgY29uc3QgS1VSTCBt
X3VybDsKICAgICBjb25zdCBTdHJpbmcgbV9yZWZlcnJlcjsKICAgICBjb25zdCBSZWZlcnJlclBv
bGljeSBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHAKaW5kZXggOTdjZWM3OTc5Y2Q3NTNmYTRkMDJk
ODI3ZDcxMTMzZTM1OTg4YWVlNi4uNDE4MzAzNGMxNzgzNTY3OTE2MjhjYTQ4MTQwNzcxNDg3MWJj
MTQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVu
ZGVySGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVy
ZW5kZXJIYW5kbGUuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVySGFuZGxlOjpjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBw
b2xpY3kpCitQYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gUHJlcmVuZGVySGFuZGxlOjpjcmVh
dGUoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUHJlcmVuZGVySGFuZGxlKHVybCwgcmVmZXJyZXIsIHBvbGljeSkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUHJlcmVuZGVySGFuZGxlKGNsaWVudCwgdXJsLCByZWZlcnJlciwgcG9s
aWN5KSk7CiB9CiAKLVByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQotICAg
IDogbV9wcmVyZW5kZXIoYWRvcHRSZWYobmV3IFByZXJlbmRlcih1cmwsIHJlZmVycmVyLCBwb2xp
Y3kpKSkKK1ByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKFByZXJlbmRlckNsaWVudCog
Y2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVy
UG9saWN5IHBvbGljeSkKKyAgICA6IG1fcHJlcmVuZGVyKGFkb3B0UmVmKG5ldyBQcmVyZW5kZXIo
Y2xpZW50LCB1cmwsIHJlZmVycmVyLCBwb2xpY3kpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3Bw
CmluZGV4IDgzMjdmYmQ3MDZmYzQzMDdmYmNhMmZmZTBmOWZhYjg4NDRhMDYzYzAuLjVmNmUyMTc4
MDdhN2YzMmZjZWEyYzlhNzQxYzM5YTg4ZmY2NWU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUHJlcmVuZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAKQEAg
LTk3LDYgKzk3LDI2IEBAIGNvbnN0IFdlYlByZXJlbmRlcjo6RXh0cmFEYXRhKiBXZWJQcmVyZW5k
ZXI6OmV4dHJhRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4dHJhRGF0YUNv
bnRhaW5lcio+KHdlYmNvcmVFeHRyYURhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsKIH0KIAordm9p
ZCBXZWJQcmVyZW5kZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRp
ZFN0YXJ0UHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVu
ZGVyKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BQcmVyZW5kZXIoKTsKK30KKwordm9pZCBX
ZWJQcmVyZW5kZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZhdGUt
PmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVuZGVyOjpkaWRT
ZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9wcml2YXRlLT5kaWRT
ZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRUQoTElOS19QUkVSRU5ERVIpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzMwNGQwNTg0NGYxZDBlZDQ3
OTg3ODM2MmYzYzA0MWYyZGVlYjZlYS4uNDE5NzgwNDI0NjZhYzIxYzIyMWFmZjVhNDU3YWFhNzJi
NGM0MTA4NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTExLTA4ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5rIHJlbD1wcmVy
ZW5kZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50IGlzIHNlbnQgdG8gbGluayBlbGVt
ZW50cyB3aGVuCisgICAgICAgIHByZXJlbmRlcnMgYXJlIHN0YXJ0ZWQgYnkgdGhlIGVtYmVkZGVy
LCBhbmQgYWxzbyBzZW50IHdoZW4gdGhleQorICAgICAgICBhcmUgc3RvcHBlZC4gUGFnZXMgdXNp
bmcgdGhpcyBmZWF0dXJlIGNhbiBub3cgc2VyaWFsaXplIGxhdW5jaGluZworICAgICAgICBwcmVy
ZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5nIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwOgorICAgICAg
ICAoTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmFkZCk6CisgICAgICAgIChNb2NrV2ViUHJl
cmVuZGVyaW5nU3VwcG9ydDo6Y2FuY2VsKToKKyAgICAgICAgKE1vY2tXZWJQcmVyZW5kZXJpbmdT
dXBwb3J0OjphYmFuZG9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oOgorICAgICAgICAoTW9ja1dlYlByZXJlbmRlcmluZ1N1
cHBvcnQpOgorCiAyMDEyLTExLTA3ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBoYW5kbGUgY29uY3VycmVudCByZXF1
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlBy
ZXJlbmRlcmluZ1N1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwCmluZGV4IGQ2NjdkODg2NTAzNTU5Yzg0OWZjMjk2
NzhkOGNkMWI0Y2YwOGIxMzYuLjk3NjZkY2U1ODgxYWI5YzIxMjZkNzdkNGE2NGNkMWQ2Nzk3ZDM5
MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBNb2NrV2Vi
UHJlcmVuZGVyaW5nU3VwcG9ydDo6fk1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCkKICAgICBz
aHV0ZG93bigpOwogfQogCi12b2lkIE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0OjphZGQoY29u
c3QgV2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9y
dDo6YWRkKFdlYktpdDo6V2ViUHJlcmVuZGVyKikKIHsKIH0KIAotdm9pZCBNb2NrV2ViUHJlcmVu
ZGVyaW5nU3VwcG9ydDo6Y2FuY2VsKGNvbnN0IFdlYktpdDo6V2ViUHJlcmVuZGVyJikKK3ZvaWQg
TW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmNhbmNlbChXZWJLaXQ6OldlYlByZXJlbmRlciop
CiB7CiB9CiAKLXZvaWQgTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmFiYW5kb24oY29uc3Qg
V2ViS2l0OjpXZWJQcmVyZW5kZXImKQordm9pZCBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6
YWJhbmRvbihXZWJLaXQ6OldlYlByZXJlbmRlciopCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaApp
bmRleCBiNWQ0YWY1M2Q4ZDg2Y2M4NDc3N2YxNmU1ZmMwMzgxOTc5ZmJmM2JkLi45ZWU3YjExZWQ4
NGQ5ZjkzMmNjNGI1MGRjZTdkOWZmMDcwNmY2NWRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgKQEAg
LTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1vY2tXZWJQcmVyZW5kZXJpbmdT
dXBwb3J0KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhZGQoY29uc3QgV2ViS2l0OjpXZWJQcmVy
ZW5kZXImKSBPVkVSUklERTsKLSAgICB2b2lkIGNhbmNlbChjb25zdCBXZWJLaXQ6OldlYlByZXJl
bmRlciYpIE9WRVJSSURFOwotICAgIHZvaWQgYWJhbmRvbihjb25zdCBXZWJLaXQ6OldlYlByZXJl
bmRlciYpIE9WRVJSSURFOworICAgIHZvaWQgYWRkKFdlYktpdDo6V2ViUHJlcmVuZGVyKikgT1ZF
UlJJREU7CisgICAgdm9pZCBjYW5jZWwoV2ViS2l0OjpXZWJQcmVyZW5kZXIqKSBPVkVSUklERTsK
KyAgICB2b2lkIGFiYW5kb24oV2ViS2l0OjpXZWJQcmVyZW5kZXIqKSBPVkVSUklERTsKIH07CiAK
ICNlbmRpZiAvLyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178031</attachid>
            <date>2012-12-06 10:40:14 -0800</date>
            <delta_ts>2012-12-08 09:06:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20121206133737.patch</filename>
            <type>text/plain</type>
            <size>49565</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkMDZjMzMxZGQ2YmM2
OTE2MDMyNDk0ODcwMjM3ODMwYWU0MDRlODY0Li41NzZjZmU2MDY2NTUzNzdlYmQ0MGU2MjExMDUw
YjAxZGI3OGYwMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wNiAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3RhdHVz
IGV2ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgVGhlIG5l
dyBQcmVyZW5kZXJTdGF0dXNFdmVudCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMgd2hlbgorICAg
ICAgICBwcmVyZW5kZXJzIGFyZSBzdGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5kIGFsc28gc2Vu
dCB3aGVuIHRoZXkKKyAgICAgICAgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVy
ZSBjYW4gbm93IHNlcmlhbGl6ZSBsYXVuY2hpbmcKKyAgICAgICAgcHJlcmVuZGVycywgYW5kIHRy
YWNrIHRpbWluZyBwZXJmb3JtYW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpXZWJQcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmVyZW5kZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJQcmVyZW5kZXIpOgorCiAy
MDEyLTEyLTA0ICBHbGVubiBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgR3V0IFdlYlJlbmRlcmluZ1N0YXRzIHNpbmNlIHdlIG5vIGxvbmdlciB1c2UgaXRzIG1l
bWJlciB2YXJpYWJsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg0YjVkYmViYTU5ZDAzOWYwM2I3ZjBhODM3
NmNkNWNmMzc3NjdlMi4uOTMxZjZlMDU1NzcyYzdkZDE2ZmUyNjIyOTRhZDFiYWFhYWJhNjI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTA2ICBHYXZpbiBQZXRlcnMgIDxn
YXZpbnBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5r
IHJlbD1wcmVyZW5kZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50IGlzIHNlbnQgdG8g
bGluayBlbGVtZW50cyB3aGVuCisgICAgICAgIHByZXJlbmRlcnMgYXJlIHN0YXJ0ZWQgYnkgdGhl
IGVtYmVkZGVyLCBhbmQgYWxzbyBzZW50IHdoZW4gdGhleQorICAgICAgICBhcmUgc3RvcHBlZC4g
UGFnZXMgdXNpbmcgdGhpcyBmZWF0dXJlIGNhbiBub3cgc2VyaWFsaXplIGxhdW5jaGluZworICAg
ICAgICBwcmVyZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5nIHBlcmZvcm1hbmNlLgorCisgICAgICAg
IFRoaXMgaXMgdGVzdGVkIGluIGEgbmV3IFdlYktpdCBVbml0VGVzdC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxM
aW5rRWxlbWVudDo6ZGlkU3RhcnRMaW5rUHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxMaW5rRWxlbWVudDo6ZGlkU3RvcExpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjpkaWRTZW5kTG9hZEZvckxpbmtQcmVyZW5kZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQ
cmVyZW5kZXIpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MTGlua0VsZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6On5MaW5rTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmtMb2FkZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6ZGlkU3RvcFByZXJlbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6CisgICAgICAgICogbG9h
ZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKExpbmtMb2FkZXIpOgorICAgICAgICAqIGxvYWRl
ci9MaW5rTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChMaW5rTG9hZGVyQ2xpZW50KToKKyAgICAg
ICAgKiBsb2FkZXIvUHJlcmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVy
ZXI6OnJlbmRlcik6CisgICAgICAgICogbG9hZGVyL1ByZXJlbmRlcmVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFByZXJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmVy
ZW5kZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckNsaWVudDo6flByZXJlbmRlckNsaWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFByZXJlbmRlckhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vUHJlcmVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6UHJlcmVuZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjphZGQpOgorICAgICAgICAo
V2ViQ29yZTo6UHJlcmVuZGVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVy
OjphYmFuZG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVuZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJl
bmRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmg6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQcmVyZW5kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVy
ZW5kZXJIYW5kbGU6OlByZXJlbmRlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5k
ZXJIYW5kbGU6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByZXJlbmRlcjo6dG9QcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVyZW5kZXI6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU3Rh
cnRQcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVyZW5kZXI6OmRpZFN0b3BQcmVy
ZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVyZW5kZXI6OmRpZFNlbmRMb2FkRm9yUHJl
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTZW5kRE9NQ29udGVu
dExvYWRlZEZvclByZXJlbmRlcik6CisKIDIwMTItMTItMDQgIEZsb3JpbiBNYWxpdGEgIDxmbWFs
aXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTdGFsZSBTVkdVc2VFbGVtZW50IHJlZmVyZW5j
ZSBpbiBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBiODQwNmIwMDA4YTk1YmUyMDEzNmIxZjkxNTA3Y2ZkOTU0ZWMwMTkzLi5hNDBjNzll
NzUwNjk1YjllZDEyYzkwMGQ4MWY0YWIxMzZjNGZhOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTA2ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5rIHJlbD1w
cmVyZW5kZXI+IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50IGlzIHNlbnQgdG8gbGluayBl
bGVtZW50cyB3aGVuCisgICAgICAgIHByZXJlbmRlcnMgYXJlIHN0YXJ0ZWQgYnkgdGhlIGVtYmVk
ZGVyLCBhbmQgYWxzbyBzZW50IHdoZW4gdGhleQorICAgICAgICBhcmUgc3RvcHBlZC4gUGFnZXMg
dXNpbmcgdGhpcyBmZWF0dXJlIGNhbiBub3cgc2VyaWFsaXplIGxhdW5jaGluZworICAgICAgICBw
cmVyZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5nIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9QcmVyZW5k
ZXJpbmdUZXN0LmNwcDogQWRkZWQuCisKIDIwMTItMTItMDQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5v
cmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbGVkIERFUFMgKHcvTGludXggYnVp
bGQgZml4KS4gIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlByZXJlbmRlci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJQcmVyZW5kZXIuaAppbmRleCA1ZWQ4MDQ5MDBmYzZmYTBiNmNjODE4NTQ2NDdkY2I2OWEy
MzI1YWM1Li40YzA4YWYwOTczZTVlNTkwMjYyMTYxYWQyMjllZjI1ZDFmODIwZDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmgKQEAgLTU0LDEx
ICs1NCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQogICAg
IH07CiAKKyAgICBXZWJQcmVyZW5kZXIoKSB7IH0KKyAgICBXZWJQcmVyZW5kZXIoY29uc3QgV2Vi
UHJlcmVuZGVyJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9CisgICAgV2ViUHJlcmVuZGVyJiBv
cGVyYXRvcj0oY29uc3QgV2ViUHJlcmVuZGVyJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2ln
bihvdGhlcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KICAgICBleHBsaWNpdCBXZWJQcmVyZW5kZXIoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpQcmVyZW5kZXI+KTsKICAgICB+V2ViUHJlcmVuZGVyKCk7CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpQcmVyZW5kZXIqIHRvUHJlcmVuZGVyKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViUHJlcmVuZGVyJik7CisgICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzTnVsbCgpIGNvbnN0OworCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJVUkwgdXJsKCkg
Y29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICAg
ICBXRUJLSVRfRVhQT1JUIFdlYlJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7
CkBAIC02Niw5ICs3OSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4
dHJhRGF0YShFeHRyYURhdGEqKTsKICAgICBXRUJLSVRfRVhQT1JUIGNvbnN0IEV4dHJhRGF0YSog
ZXh0cmFEYXRhKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgV2ViUHJlcmVuZGVyKCk7CisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGRpZFN0YXJ0UHJlcmVuZGVyKCk7CisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU2Vu
ZExvYWRGb3JQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU2VuZERPTUNv
bnRlbnRMb2FkZWRGb3JQcmVyZW5kZXIoKTsKIAorcHJpdmF0ZToKICAgICBXZWJQcml2YXRlUHRy
PFdlYkNvcmU6OlByZXJlbmRlcj4gbV9wcml2YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggN2VlMzQ0YTgyZGNkYjM1MjRiNmRiMGMwMzRmNzEyYjdkOTA3OTIwNS4u
ZjU3MWU4MGVhMTA5ZGVkMjcxY2VlMWYyMWZmYmVjOTk3YTI0ZTMwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC01Nzg4LDYgKzU3ODgsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudUNsaWVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnUuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
cmVuZGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRs
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VQcmlvcml0eS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDM0
Y2Q2MzhkZWM4OWZjYTRkMGM4ZGY3MGRkZGI0Mjc5Mzg5ZDRlN2MuLmQ1OGJkOGE3Y2UyNWExN2M1
MTIwMDhjNjhjOWFhYzFiMGY1MzI5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjMyNiw2ICsyMzI2LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vVGltZXIuaCBcCiAgICAgcGxhdGZvcm0vV2lk
Z2V0LmggXAogICAgIHBsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oIFwKKyAgICBwbGF0Zm9y
bS9QcmVyZW5kZXJDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmggXAog
ICAgIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAgICAgcGx1Z2lucy9ET01NaW1lVHlw
ZUFycmF5LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQwODc2MTE1MDI5ZDgzNjI0NzViNTJmZWE2
NGQwZWVhYTY0ZDcyZGQuLjY0NmZjN2Y2MTk0NzIwOWJmZDIxZmI1YzUwZTJhZTA2NDZiY2Q3YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ1MDksNiArNDUwOSw3IEBACiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtVG91Y2hQb2ludC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUu
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9S
ZWZlcnJlclBvbGljeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9SdW5Mb29wVGltZXIuaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGE5
OTcwZTZlZjdmOGZjOTU5NGM1ZDExYjI1NWMxM2VhMjQ1ZTA5NWQuLmVhOGI4OTZjZWM3MjJmZmQ2
OTc3YzA3ODUwNmQ3ZDg2MTE2NzQ1ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yODc5OCw2ICsyODc5OCwxMCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5kZXJD
bGllbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cUHJlcmVuZGVySGFuZGxlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJk
ZTZjZjlmNTVjNDFlNzQxYWIzZWY0MmY3NDU4ZjQ5ZDY5NTI3NDcuLmQyZmJiMDVhZGViZDdmMWFi
N2NmMTEwNjY0ZjE1OTA5MTdkNjQ2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM3NjAsNiArMzc2MCw3IEBACiAJCTk4NTZG
OEQxMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAv
KiBQcmVyZW5kZXJIYW5kbGUuaCAqLzsgfTsKIAkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5IC8q
IExpbmtSZWxBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTg1QkI5NkIxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUu
Y3BwICovOyB9OwogCQk5ODVCQjk2RTEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1QkI5
NkMxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuaCAqLzsgfTsKKwkJOTg2RUE4
ODMxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg2RUE4ODIxNUZGRjI5MDAwOTg1RTVFIC8q
IFByZXJlbmRlckNsaWVudC5oICovOyB9OwogCQk5OENFNDMyNjEyOUUwMEJEMDA1ODIxREMgLyog
TGlua0xvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRlci5jcHAgKi87IH07CiAJ
CTk4Q0U0MzJBMTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OENFNDMyOTEyOUUwMEU1MDA1ODIxREMg
LyogTGlua0xvYWRlci5oICovOyB9OwogCQk5OEVCMUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90
SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk4RUIxRjk0MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTA3NCw2ICsxMTA3
NSw3IEBACiAJCTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlcmVuZGVySGFuZGxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4NUJCOTZCMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5r
UmVsQXR0cmlidXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExp
bmtSZWxBdHRyaWJ1dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5ODVCQjk2
QzEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5rUmVsQXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk4NkVBODgyMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlcmVuZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI1MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5r
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtMb2Fk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OENFNDMyOTEyOUUwMEU1MDA1
ODIxREMgLyogTGlua0xvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5rTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4RUIxRjk0MTMxM0ZF
MDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOb3RJbXBsZW1lbnRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTU1MTAsNyArMTU1MTIsNiBAQAogCQkJCTQ5RTkxMkE3MEVGQUM5MDYwMDlEMENBRiAvKiBBbmlt
YXRpb25MaXN0LmNwcCAqLywKIAkJCQk0OUU5MTJBODBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0
aW9uTGlzdC5oICovLAogCQkJCTBGNTgwRkFFMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25V
dGlsaXRpZXMuaCAqLywKLQkJCQk5ODU2RjhEMDE1NDlFODRGMDBCMDRGM0EgLyogUHJlcmVuZGVy
SGFuZGxlLmggKi8sCiAJCQkJNDlFOTEyQTkwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0
aW9uLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IGFuaW1hdGlvbjsKQEAgLTIxMTA0LDYgKzIxMTA1
LDggQEAKIAkJCQkwNjY4RTE4OTBBREQ5NjI0MDA0MTI4RTAgLyogUG9wdXBNZW51LmggKi8sCiAJ
CQkJQUJDMTI4NzYwQjMzQUE2RDAwQzY5M0Q1IC8qIFBvcHVwTWVudUNsaWVudC5oICovLAogCQkJ
CUJDM0JFMTJBMEU5ODA5MkYwMDgzNTU4OCAvKiBQb3B1cE1lbnVTdHlsZS5oICovLAorCQkJCTk4
NkVBODgyMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5kZXJDbGllbnQuaCAqLywKKwkJCQk5ODU2
RjhEMDE1NDlFODRGMDBCMDRGM0EgLyogUHJlcmVuZGVySGFuZGxlLmggKi8sCiAJCQkJRTRENjg3
NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oICovLAogCQkJCTdFMzNDRDAw
MTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8sCiAJCQkJQTcyRUEzQkExNTg1
Q0Y1NTAwNEZBQTI2IC8qIFJlZkNvdW50ZWRTdXBwbGVtZW50LmggKi8sCkBAIC0yNTg3NCw2ICsy
NTg3Nyw3IEBACiAJCQkJMzE3NDFBQUQxNjYzNjYwOTAwOEE1QjdFIC8qIFNpbXVsYXRlZENsaWNr
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVCOEI3QzkxNjUyQzUyMjAwMzZFRjU1IC8q
IEpTV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGNzJB
RjMxNjY2RURGQzAwMkEwMkJEIC8qIExheWVyUG9vbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTg2
RUE4ODMxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA3MjBmYjQxNGJjZGZhNjhmZWE4MmVkZTcwN2Fi
ZWVlNDA4Zjg5YTAyLi5kYzNlZmJlNzgzOWMxZGExZTU5ZjUyZGUwNjI1Mjg4N2I2NjAzNjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTI0Nyw2ICsyNDcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKGF1dG9jb21wbGV0ZSkgXAogICAgIG1hY3JvKGF1dG9jb21wbGV0
ZWVycm9yKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcnN0YXJ0KSBcCisgICAg
bWFjcm8od2Via2l0cHJlcmVuZGVyc3RvcCkgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcmxv
YWQpIFwKKyAgICBtYWNybyh3ZWJraXRwcmVyZW5kZXJkb21jb250ZW50bG9hZGVkKSBcCisgICAg
XAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA0OTFkNzMwYWNhYTVmM2FhZWViY2YzYmI4MWQz
NDFkOTNlZGFhMzBjLi5mODJlNjAyY2MwNTAwODg3NTYwNmM4ZWVhMmMzOGU4ODc0MGEzMDI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTM1Nyw2ICszNTgsMjggQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OmxpbmtMb2FkaW5nRXJyb3JlZCgpCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KIAorI2lm
IEVOQUJMRShMSU5LX1BSRVJFTkRFUikKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkaWRTdGFydExp
bmtQcmVyZW5kZXIoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0cHJlcmVuZGVyc3RhcnRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisKK3Zv
aWQgSFRNTExpbmtFbGVtZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcigpCit7CisgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwcmVyZW5kZXJzdG9wRXZl
bnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU2VuZExv
YWRGb3JMaW5rUHJlcmVuZGVyKCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdHByZXJlbmRlcmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9
CisKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQ
cmVyZW5kZXIoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKyNlbmRpZgorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAg
IGlmICghc3R5bGVTaGVldElzTG9hZGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAppbmRleCAyYzcxOGMwOGY5MzI3MGRlNTQzZDg3MWI0MDM2NmUxMjhiZTQ0OWFjLi4z
NzYyNGM0OWY5YTRmYjk3MTdkMGQ1ZTFiMzFlNzgwYTNkNWFmZWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTg5LDggKzg5LDE0IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9v
bCBlcnJvck9jY3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1No
ZWV0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCBsaW5rTG9hZGluZ0Vycm9yZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vycm9yZWQoKSBPVkVSUklERTsK
KyNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpIAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExp
bmtQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQcmVy
ZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZExvYWRGb3JMaW5rUHJl
cmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRET01Db250ZW50TG9h
ZGVkRm9yTGlua1ByZXJlbmRlcigpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICBib29sIGlzQWx0
ZXJuYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IFVuc2V0ICYmIG1fcmVs
QXR0cmlidXRlLm1faXNBbHRlcm5hdGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcAppbmRleCBlNTBiMzc5ZDk2YmVkYTczMjkyNTQ2NDIwZWFjZjk4YmE1NDNlMWI4Li5l
NWNhY2YxNGY0Yzc5NmZhMzQ5MzA4Yjg2YzMyOGY0Y2QzOWUxZTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC02Myw2ICs2MywxMCBAQCBMaW5rTG9hZGVyOjp+TGlua0xv
YWRlcigpCiB7CiAgICAgaWYgKG1fY2FjaGVkTGlua1Jlc291cmNlKQogICAgICAgICBtX2NhY2hl
ZExpbmtSZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworI2lmIEVOQUJMRShMSU5LX1BSRVJF
TkRFUikKKyAgICBpZiAobV9wcmVyZW5kZXJIYW5kbGUpCisgICAgICAgIG1fcHJlcmVuZGVySGFu
ZGxlLT5yZW1vdmVDbGllbnQodGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBMaW5rTG9hZGVyOjps
aW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRlcj4qIHRpbWVyKQpAQCAtOTAsNiArOTQs
MjYgQEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSAwOwogfQogCit2b2lkIExpbmtMb2Fk
ZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRMaW5rUHJl
cmVuZGVyKCk7Cit9CisKK3ZvaWQgTGlua0xvYWRlcjo6ZGlkU3RvcFByZXJlbmRlcigpCit7Cisg
ICAgbV9jbGllbnQtPmRpZFN0b3BMaW5rUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgTGlua0xvYWRl
cjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKQoreworICAgIG1fY2xpZW50LT5kaWRTZW5kTG9h
ZEZvckxpbmtQcmVyZW5kZXIoKTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9jbGllbnQtPmRpZFNlbmRET01Db250
ZW50TG9hZGVkRm9yTGlua1ByZXJlbmRlcigpOworfQorCiBib29sIExpbmtMb2FkZXI6OmxvYWRM
aW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25z
dCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CkBAIC0xMzUsNyArMTU5LDcgQEAg
Ym9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdHkKICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAgICAg
aWYgKHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZXJlbmRlcikgewogICAgICAgICBBU1NFUlQoIW1f
cHJlcmVuZGVySGFuZGxlKTsKLSAgICAgICAgbV9wcmVyZW5kZXJIYW5kbGUgPSBkb2N1bWVudC0+
cHJlcmVuZGVyZXIoKS0+cmVuZGVyKGhyZWYpOworICAgICAgICBtX3ByZXJlbmRlckhhbmRsZSA9
IGRvY3VtZW50LT5wcmVyZW5kZXJlcigpLT5yZW5kZXIodGhpcywgaHJlZik7CiAgICAgfQogI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBh
MWE2M2YwM2ZlZGU5NmYxNDYyYzc0NjA4MDRlNTMzNWJkNDFiNjMyLi40Yzg1M2RhZjRmMzFhMTc1
YTkxYTgxZjM3ZmZhYmFkZmY2N2NiYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTGlua0xvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIlByZXJlbmRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0OCw4IEBAIGNsYXNzIFByZXJlbmRl
ckhhbmRsZTsKICNlbmRpZgogCiAvLyBUaGUgTGlua0xvYWRlciBjYW4gbG9hZCBsaW5rIHJlbCB0
eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNlLCBwcmVmZXRjaCBhbmQgcHJlcmVu
ZGVyLgotY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7Citj
bGFzcyBMaW5rTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgUHJl
cmVuZGVyQ2xpZW50IHsKKwogcHVibGljOgogICAgIGV4cGxpY2l0IExpbmtMb2FkZXIoTGlua0xv
YWRlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkxpbmtMb2FkZXIoKTsKQEAgLTU1LDYgKzU3LDE0
IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgCisjaWYgRU5BQkxF
KExJTktfUFJFUkVOREVSKQorICAgIC8vIGZyb20gUHJlcmVuZGVyQ2xpZW50CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0UHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0b3BQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZExvYWRG
b3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRl
bnRMb2FkZWRGb3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdm9pZCByZWxl
YXNlZCgpOwogICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oCmluZGV4IDQzNTBl
ZTc4Yzk1YTc2M2Y5Y2M1ZDQ1ZTVhOGUxNjJhOWIxYTUwNjMuLjFlMWRiMmIyOWFhYmMwMzUzYWJh
ZDFiNjBmMWE3MjcwOTYxMTVmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXJD
bGllbnQuaApAQCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsaW5r
TG9hZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vycm9yZWQoKSA9IDA7
CiAgICAgLy8gVGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uIGZvciBjYW5jZWxsYXRpb24uCisKKyNp
ZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TGlua1By
ZXJlbmRlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQcmVyZW5kZXIoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVy
KCkgPSAwOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJlcmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNw
cAppbmRleCAxNjRmOWU5ODhkMWIxZDdhMGM2ZDA5NTE4MjBiNWYyNjY0NjhmYzA5Li5jMzcwYTZk
MjJmM2M5NGU3ZWJhMzMzZjJlOGI0MzZjNTlhNmJjNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cmVyZW5kZXJlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUHJlcmVuZGVyZXI6On5QcmVyZW5kZXJl
cigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5kZXJlcjo6cmVu
ZGVyKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5k
ZXJlcjo6cmVuZGVyKFByZXJlbmRlckNsaWVudCogcHJlcmVuZGVyQ2xpZW50LCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgLy8gUHJlcmVuZGVycyBhcmUgdW5saWtlIHJlcXVlc3RzIGluIG1vc3Qg
d2F5cyAoZm9yIGluc3RhbmNlLCB0aGV5IHBhc3MgZG93biBmcmFnbWVudHMsIGFuZCB0aGV5IGRv
bid0IHJldHVybiBkYXRhKSwKICAgICAvLyBidXQgdGhleSBkbyBoYXZlIHJlZmVycmVycy4KQEAg
LTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlcmVyOjpy
ZW5kZXIoY29uc3QgS1VSTCYgdXJsKQogCiAgICAgY29uc3QgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIocmVmZXJyZXJQb2xpY3ksIHVybCwg
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CiAKLSAg
ICBSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBwcmVyZW5kZXJIYW5kbGUgPSBQcmVyZW5kZXJIYW5k
bGU6OmNyZWF0ZSh1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSk7CisgICAgUmVmUHRyPFBy
ZXJlbmRlckhhbmRsZT4gcHJlcmVuZGVySGFuZGxlID0gUHJlcmVuZGVySGFuZGxlOjpjcmVhdGUo
cHJlcmVuZGVyQ2xpZW50LCB1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSk7CiAKICAgICBp
ZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT53aWxsQWRkUHJlcmVuZGVyKHByZXJlbmRl
ckhhbmRsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVu
ZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5oCmluZGV4IGQ5ZjAx
Mjg5ZGU4ZTIyMzc0YjBmM2E3YTZiODQ1YmIzZWE4MzYwOWYuLmQ4NWFhYzU1YTc0M2NlODU4OTMx
MDJkMTYxMWQ3OTJkNThiZDFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cmVyZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5oCkBA
IC00Niw2ICs0Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owor
Y2xhc3MgUHJlcmVuZGVyQ2xpZW50OwogY2xhc3MgUHJlcmVuZGVySGFuZGxlOwogY2xhc3MgUHJl
cmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBQYWdlOwpAQCAtNTUsMjMgKzU2LDI0IEBAIGNsYXNzIFBy
ZXJlbmRlcmVyIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UHJlcmVuZGVyZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5k
ZXIoY29uc3QgS1VSTCYpOworICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5kZXIo
UHJlcmVuZGVyQ2xpZW50KiwgY29uc3QgS1VSTCYpOwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8
UHJlcmVuZGVyZXI+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIC8vIEZyb20gQWN0
aXZlRE9NT2JqZWN0OgorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxQcmVyZW5kZXJIYW5kbGU+ID4gSGFuZGxlVmVjdG9yOwogICAgIHR5
cGVkZWYgVmVjdG9yPEtVUkw+IEtVUkxWZWN0b3I7CiAKICAgICBleHBsaWNpdCBQcmVyZW5kZXJl
cihEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJREU7Ci0KICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKTsKICAgICBQcmVyZW5kZXJlckNsaWVudCogY2xpZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFkNmUwMDNhY2RjMDBl
NTkxN2Y0NDgzNTI4ODcwZTMxNzY3NmU0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRl
ZiBQcmVyZW5kZXJDbGllbnRfaAorI2RlZmluZSBQcmVyZW5kZXJDbGllbnRfaAorCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUHJlcmVuZGVyQ2xpZW50IHsKKyNpZiBFTkFCTEUoTElO
S19QUkVSRU5ERVIpCitwdWJsaWM6CisgICAgdmlydHVhbCB+UHJlcmVuZGVyQ2xpZW50KCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRM
b2FkRm9yUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRE9NQ29udGVu
dExvYWRlZEZvclByZXJlbmRlcigpID0gMDsKKyNlbmRpZgorfTsKKworfQorCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAppbmRleCAwNGZkYWZjZjQw
ZjRlYWZlODQwYjA4YmY5NjBlNzE0MjNkZjcyYTdhLi40OWIyYmNiZjg0ZmJlMjkwMjY4ODA3MGEy
MzA1MjZkMjViMDlkZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVy
ZW5kZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJIYW5k
bGUuaApAQCAtNDQsMTYgKzQ0LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VS
TDsKIGNsYXNzIFByZXJlbmRlcjsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsKIAogY2xhc3MgUHJl
cmVuZGVySGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJlcmVuZGVySGFuZGxlPiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlcmVuZGVySGFuZGxlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFByZXJlbmRlckhhbmRsZT4gY3JlYXRlKFByZXJlbmRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CiAgICAgflByZXJlbmRlckhh
bmRsZSgpOwogCiAgICAgUHJlcmVuZGVyKiBwcmVyZW5kZXIoKTsKIAotICAgIC8vIEZJWE1FOiBv
bmUgZGF5IHRoZXJlIHdpbGwgYmUgZXZlbnRzIGhlcmUsIGFuZCB3ZSB3aWxsIGJlIGEgUHJlcmVu
ZGVyQ2xpZW50LgorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFByZXJlbmRlckNsaWVudCopOwogCiAg
ICAgLy8gQSBwcmVyZW5kZXIgbGluayBlbGVtZW50IGlzIGFkZGVkIHdoZW4gaXQgaXMgaW5zZXJ0
ZWQgaW50byBhIGRvY3VtZW50LgogICAgIHZvaWQgYWRkKCk7CkBAIC03NSw3ICs3Niw4IEBAIHB1
YmxpYzoKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIFByZXJlbmRlckhhbmRsZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgUmVmZXJyZXJQb2xpY3kpOworICAgIFByZXJlbmRlckhhbmRsZShQcmVyZW5kZXJDbGll
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kp
OworCiAgICAgUmVmUHRyPFByZXJlbmRlcj4gbV9wcmVyZW5kZXI7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmNwcAppbmRleCA0MzFhN2FiNThl
ZGZiZjcwNjEzMGQyZmI5MzIyZjVlNzEyNmI1YzgxLi45YTI4MmRkNzA1ODA2MTBmZjliNjFlNmM5
NTk2OWY4N2U3ODJhYTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QcmVyZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1ByZXJlbmRlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlByZXJlbmRlci5oIgorI2luY2x1ZGUgIlByZXJlbmRlckNsaWVudC5oIgogCiAj
aW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlByZXJlbmRl
ci5oPgpAQCAtNDMsOCArNDQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVByZXJlbmRl
cjo6UHJlcmVuZGVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVm
ZXJyZXJQb2xpY3kgcG9saWN5KQotICAgIDogbV91cmwodXJsKQorUHJlcmVuZGVyOjpQcmVyZW5k
ZXIoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQorICAgIDogbV9jbGllbnQoY2xpZW50
KQorICAgICwgbV91cmwodXJsKQogICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKICAgICAsIG1f
cmVmZXJyZXJQb2xpY3kocG9saWN5KQogewpAQCAtNTQsMTMgKzU2LDE4IEBAIFByZXJlbmRlcjo6
flByZXJlbmRlcigpCiB7CiB9CiAKK3ZvaWQgUHJlcmVuZGVyOjpyZW1vdmVDbGllbnQoUHJlcmVu
ZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKGNsaWVudCA9PSBtX2NsaWVudCk7Cisg
ICAgbV9jbGllbnQgPSAwOworfQorCiB2b2lkIFByZXJlbmRlcjo6YWRkKCkKIHsKICAgICBXZWJL
aXQ6OldlYlByZXJlbmRlcmluZ1N1cHBvcnQqIHBsYXRmb3JtID0gV2ViS2l0OjpXZWJQcmVyZW5k
ZXJpbmdTdXBwb3J0OjpjdXJyZW50KCk7CiAgICAgaWYgKCFwbGF0Zm9ybSkKICAgICAgICAgcmV0
dXJuOwotICAgIFdlYktpdDo6V2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlcih0aGlzKTsKLSAgICBw
bGF0Zm9ybS0+YWRkKHdlYlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmFkZChXZWJLaXQ6Oldl
YlByZXJlbmRlcih0aGlzKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVyOjpjYW5jZWwoKQpAQCAtNjgs
OCArNzUsNyBAQCB2b2lkIFByZXJlbmRlcjo6Y2FuY2VsKCkKICAgICBXZWJLaXQ6OldlYlByZXJl
bmRlcmluZ1N1cHBvcnQqIHBsYXRmb3JtID0gV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0
OjpjdXJyZW50KCk7CiAgICAgaWYgKCFwbGF0Zm9ybSkKICAgICAgICAgcmV0dXJuOwotICAgIFdl
YktpdDo6V2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlcih0aGlzKTsKLSAgICBwbGF0Zm9ybS0+Y2Fu
Y2VsKHdlYlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmNhbmNlbChXZWJLaXQ6OldlYlByZXJl
bmRlcih0aGlzKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVyOjphYmFuZG9uKCkKQEAgLTc3LDggKzgz
LDcgQEAgdm9pZCBQcmVyZW5kZXI6OmFiYW5kb24oKQogICAgIFdlYktpdDo6V2ViUHJlcmVuZGVy
aW5nU3VwcG9ydCogcGxhdGZvcm0gPSBXZWJLaXQ6OldlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmN1
cnJlbnQoKTsKICAgICBpZiAoIXBsYXRmb3JtKQogICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0
OjpXZWJQcmVyZW5kZXIgd2ViUHJlcmVuZGVyKHRoaXMpOwotICAgIHBsYXRmb3JtLT5hYmFuZG9u
KHdlYlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmFiYW5kb24oV2ViS2l0OjpXZWJQcmVyZW5k
ZXIodGhpcykpOwogfQogCiB2b2lkIFByZXJlbmRlcjo6c3VzcGVuZCgpCkBAIC05MSw2ICs5Niwz
MCBAQCB2b2lkIFByZXJlbmRlcjo6cmVzdW1lKCkKICAgICBhZGQoKTsKIH0KIAordm9pZCBQcmVy
ZW5kZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydFByZXJlbmRlcigpOworfQorCit2b2lkIFByZXJlbmRlcjo6ZGlk
U3RvcFByZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
ZGlkU3RvcFByZXJlbmRlcigpOworfQorCit2b2lkIFByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQ
cmVyZW5kZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFNl
bmRMb2FkRm9yUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgUHJlcmVuZGVyOjpkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JQcmVyZW5kZXIoKTsKK30KKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKExJTktfUFJFUkVOREVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuaAppbmRleCBjZTRjY2M3ZmE2NjNhMjE0OGVmNTExMjQ0
YzEzODczOTUxZDNiMDA4Li43YjYyNDlmOTViNTk4MGI5NTQwYjE4MGU5NDUyNWI0MWY4Y2IwYTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuaApAQCAt
NDQsOCArNDQsMTQgQEAKIAogI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikKIAorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJQcmVyZW5kZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgUHJlcmVuZGVyQ2xpZW50OworCiBjbGFzcyBQcmVyZW5kZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxQcmVyZW5kZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVyZW5kZXIp
OwogcHVibGljOgpAQCAtNTQsOSArNjAsMTEgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5F
eHRyYURhdGEoKSB7IH0KICAgICB9OwogCi0gICAgUHJlcmVuZGVyKGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisgICAgUHJlcmVuZGVyKFByZXJl
bmRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJl
clBvbGljeSk7CiAgICAgflByZXJlbmRlcigpOwogCisgICAgdm9pZCByZW1vdmVDbGllbnQoUHJl
cmVuZGVyQ2xpZW50Kik7CisKICAgICB2b2lkIGFkZCgpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAg
ICAgdm9pZCBhYmFuZG9uKCk7CkBAIC02OSw4ICs3NywxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFE
YXRhID0gZXh0cmFEYXRhOyB9CiAgICAgRXh0cmFEYXRhKiBleHRyYURhdGEoKSB7IHJldHVybiBt
X2V4dHJhRGF0YS5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKTsK
KyAgICB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsKKyAgICB2b2lkIGRpZFNlbmRMb2FkRm9yUHJl
cmVuZGVyKCk7CisgICAgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigp
OwogCiBwcml2YXRlOgorICAgIFByZXJlbmRlckNsaWVudCogbV9jbGllbnQ7CisKICAgICBjb25z
dCBLVVJMIG1fdXJsOwogICAgIGNvbnN0IFN0cmluZyBtX3JlZmVycmVyOwogICAgIGNvbnN0IFJl
ZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxlLmNwcAppbmRleCA5N2NlYzc5NzljZDc1
M2ZhNGQwMmQ4MjdkNzExMzNlMzU5ODhhZWU2Li40NTdhZjQyMjg2ZTczOWNkYWNjNTNhYjJmZTk0
ZWNhZGE3YjU5Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QcmVyZW5kZXJIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1ByZXJlbmRlckhhbmRsZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5kZXJIYW5kbGU6
OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVy
UG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5kZXJIYW5k
bGU6OmNyZWF0ZShQcmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJIYW5kbGUodXJsLCByZWZlcnJlciwgcG9saWN5KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJIYW5kbGUoY2xpZW50LCB1cmwsIHJlZmVy
cmVyLCBwb2xpY3kpKTsKIH0KIAotUHJlcmVuZGVySGFuZGxlOjpQcmVyZW5kZXJIYW5kbGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xp
Y3kpCi0gICAgOiBtX3ByZXJlbmRlcihhZG9wdFJlZihuZXcgUHJlcmVuZGVyKHVybCwgcmVmZXJy
ZXIsIHBvbGljeSkpKQorUHJlcmVuZGVySGFuZGxlOjpQcmVyZW5kZXJIYW5kbGUoUHJlcmVuZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
UmVmZXJyZXJQb2xpY3kgcG9saWN5KQorICAgIDogbV9wcmVyZW5kZXIoYWRvcHRSZWYobmV3IFBy
ZXJlbmRlcihjbGllbnQsIHVybCwgcmVmZXJyZXIsIHBvbGljeSkpKQogewogfQogCkBAIC02MSw2
ICs2MSwxMSBAQCBQcmVyZW5kZXIqIFByZXJlbmRlckhhbmRsZTo6cHJlcmVuZGVyKCkKICAgICBy
ZXR1cm4gbV9wcmVyZW5kZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgUHJlcmVuZGVySGFuZGxlOjpyZW1v
dmVDbGllbnQoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcHJlcmVuZGVyKCktPnJl
bW92ZUNsaWVudChjbGllbnQpOworfQorCiB2b2lkIFByZXJlbmRlckhhbmRsZTo6YWRkKCkKIHsK
ICAgICBwcmVyZW5kZXIoKS0+YWRkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAKaW5kZXggODMyN2ZiZDcw
NmZjNDMwN2ZiY2EyZmZlMGY5ZmFiODg0NGEwNjNjMC4uZTUxOTg4NzE0MTljM2NhMjYyNTU4YTJi
NmM4OTU5YzQ5OTVhYzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUHJlcmVuZGVyLmNwcApAQCAtNjksNiArNjksMjEgQEAg
V2ViUHJlcmVuZGVyOjp+V2ViUHJlcmVuZGVyKCkKICAgICBtX3ByaXZhdGUucmVzZXQoKTsKIH0K
IAorY29uc3QgV2ViQ29yZTo6UHJlcmVuZGVyKiBXZWJQcmVyZW5kZXI6OnRvUHJlcmVuZGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit2b2lkIFdlYlByZXJl
bmRlcjo6YXNzaWduKGNvbnN0IFdlYlByZXJlbmRlciYgb3RoZXIpCit7CisgICAgbV9wcml2YXRl
ID0gb3RoZXIubV9wcml2YXRlOworfQorCitib29sIFdlYlByZXJlbmRlcjo6aXNOdWxsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworfQorCiBXZWJVUkwgV2ViUHJl
cmVuZGVyOjp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBXZWJVUkwobV9wcml2YXRlLT51cmwo
KSk7CkBAIC05Nyw2ICsxMTIsMjYgQEAgY29uc3QgV2ViUHJlcmVuZGVyOjpFeHRyYURhdGEqIFdl
YlByZXJlbmRlcjo6ZXh0cmFEYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXh0
cmFEYXRhQ29udGFpbmVyKj4od2ViY29yZUV4dHJhRGF0YS5nZXQoKSktPmV4dHJhRGF0YSgpOwog
fQogCit2b2lkIFdlYlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIoKQoreworICAgIG1fcHJp
dmF0ZS0+ZGlkU3RhcnRQcmVyZW5kZXIoKTsKK30KKwordm9pZCBXZWJQcmVyZW5kZXI6OmRpZFN0
b3BQcmVyZW5kZXIoKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcFByZXJlbmRlcigpOworfQor
Cit2b2lkIFdlYlByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKQoreworICAgIG1f
cHJpdmF0ZS0+ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKK30KKwordm9pZCBXZWJQcmVyZW5k
ZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZh
dGUtPmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFRChMSU5LX1BSRVJFTkRFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBjYjE1M2VhYjBiOGYwYmU3YmM1NzdlZGQ2YzU3OGE0
NGJkMDE1NzE2Li42Nzg1ZDJmMmNlZTBhZDlkN2M5ZWViMDAyNWE2Nzk1ZGU3Y2I5MzEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MzAsNiArNzMwLDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpbmtIaWdobGlnaHRUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9Qb3B1cE1lbnVUZXN0LmNw
cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9QcmVyZW5kZXJpbmdU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9SZW5kZXJU
YWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAzYWQzZTIwZGFlMzQyOGIwYzI4OTc4ODNkNjkzMjYw
Zjg0MGUxMTA3Li4xYWVkYjkyZGNmZjZmZjExY2Q0ZGVhNjM5NGNkODU2Yzk3YjRhYTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTk4LDYgKzk4LDcgQEAKICAgICAgICAgICAg
ICd0ZXN0cy9QYWludEFnZ3JlZ2F0b3JUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUGxh
dGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9Qb3B1cENvbnRh
aW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvUmVnaW9uVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rz
L1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9SZW5kZXJUYWJs
ZVJvd1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
UHJlcmVuZGVyaW5nVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJl
bmRlcmluZ1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmMjRkNmE5ZDQyYjRlYzI3OTE5ZjE0MTE2ZmIy
ZjZmZTY4ZDNjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwCkBAIC0wLDAgKzEsNDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJQcmVyZW5kZXJlci5oIgorI2luY2x1
ZGUgIlByZXJlbmRlci5oIgorI2luY2x1ZGUgIlByZXJlbmRlckhhbmRsZS5oIgorI2luY2x1ZGUg
IlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJG
cmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJQcmVyZW5kZXJlckNsaWVudC5oIgorI2luY2x1ZGUg
IldlYlZpZXcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCIKKworI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlByZXJlbmRlci5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0Lmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKK3VzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKKworbmFtZXNwYWNl
IHsKKworY2xhc3MgVGVzdFByZXJlbmRlcmVyQ2xpZW50IDogcHVibGljIFdlYlByZXJlbmRlcmVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0UHJlcmVuZGVyZXJDbGllbnQoV2ViVmlldyogd2Vi
VmlldykKKyAgICB7CisgICAgICAgIHdlYlZpZXctPnNldFByZXJlbmRlcmVyQ2xpZW50KHRoaXMp
OworICAgIH0KKworICAgIHZpcnR1YWwgflRlc3RQcmVyZW5kZXJlckNsaWVudCgpIHsgfQorCisg
ICAgdm9pZCBzZXRFeHRyYURhdGFGb3JOZXh0UHJlcmVuZGVyKFdlYlByZXJlbmRlcjo6RXh0cmFE
YXRhKiBleHRyYURhdGEpCisgICAgeworICAgICAgICBBU1NFUlRfVFJVRSghbV9leHRyYURhdGEp
OworICAgICAgICBtX2V4dHJhRGF0YSA9IGFkb3B0UHRyKGV4dHJhRGF0YSk7CisgICAgfQorCisg
ICAgV2ViUHJlcmVuZGVyIHJlbGVhc2VXZWJQcmVyZW5kZXIoKQorICAgIHsKKyAgICAgICAgV2Vi
UHJlcmVuZGVyIHJldHZhbChtX3dlYlByZXJlbmRlcik7CisgICAgICAgIGNsZWFyKCk7CisgICAg
ICAgIHJldHVybiByZXR2YWw7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsK
KyAgICAgICAgbV93ZWJQcmVyZW5kZXIgPSBXZWJQcmVyZW5kZXIoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgLy8gRnJvbSBXZWJQcmVyZW5kZXJlckNsaWVudDoKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEFkZFByZXJlbmRlcihXZWJQcmVyZW5kZXIqIHByZXJlbmRlcikgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIHByZXJlbmRlci0+c2V0RXh0cmFEYXRhKG1fZXh0cmFEYXRhLmxlYWtQdHIoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUobV93ZWJQcmVyZW5kZXIuaXNOdWxsKCkpOworICAgICAg
ICBBU1NFUlRfRkFMU0UocHJlcmVuZGVyLT5pc051bGwoKSk7CisgICAgICAgIG1fd2ViUHJlcmVu
ZGVyID0gKnByZXJlbmRlcjsKKyAgICB9CisKKyAgICBPd25QdHI8V2ViUHJlcmVuZGVyOjpFeHRy
YURhdGE+IG1fZXh0cmFEYXRhOworICAgIFdlYlByZXJlbmRlciBtX3dlYlByZXJlbmRlcjsKK307
CisKK1dlYlZpZXcqIHN0YXRpY1dlYlZpZXdGb3JUZXN0KCkKK3sKKyAgICBzdGF0aWMgV2ViVmll
dyogd2ViVmlldyA9IDA7CisgICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIHdlYlZpZXcgPSBG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiKTsKKyAg
ICAgICAgd2ViVmlldy0+c2V0Rm9jdXModHJ1ZSk7CisgICAgfQorICAgIHJldHVybiB3ZWJWaWV3
OworfQorCitUZXN0UHJlcmVuZGVyZXJDbGllbnQqIHN0YXRpY1ByZXJlbmRlcmVyQ2xpZW50Rm9y
VGVzdCgpCit7CisgICAgc3RhdGljIFRlc3RQcmVyZW5kZXJlckNsaWVudCogcHJlcmVuZGVyZXJD
bGllbnQgPSBuZXcgVGVzdFByZXJlbmRlcmVyQ2xpZW50KHN0YXRpY1dlYlZpZXdGb3JUZXN0KCkp
OworICAgIHJldHVybiBwcmVyZW5kZXJlckNsaWVudDsKK30KKworY2xhc3MgVGVzdFByZXJlbmRl
cmluZ1N1cHBvcnQgOiBwdWJsaWMgV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCB7CitwdWJsaWM6Cisg
ICAgVGVzdFByZXJlbmRlcmluZ1N1cHBvcnQoKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZSh0
aGlzKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UZXN0UHJlcmVuZGVyaW5nU3VwcG9ydCgpCisg
ICAgeworICAgICAgICBzaHV0ZG93bigpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAg
IHsKKyAgICAgICAgbV9hZGRlZFByZXJlbmRlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9jYW5jZWxl
ZFByZXJlbmRlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9hYmFuZG9uZWRQcmVyZW5kZXJzLmNsZWFy
KCk7CisgICAgfQorCisgICAgc2l6ZV90IHRvdGFsQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYWRkZWRQcmVyZW5kZXJzLnNpemUoKSArIG1fY2FuY2VsZWRQcmVyZW5kZXJz
LnNpemUoKSArIG1fYWJhbmRvbmVkUHJlcmVuZGVycy5zaXplKCk7CisgICAgfQorICAgIAorICAg
IHNpemVfdCBhZGRDb3VudChjb25zdCBXZWJQcmVyZW5kZXImIHByZXJlbmRlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGQ6OmNvdW50X2lmKG1fYWRkZWRQcmVyZW5kZXJzLmJlZ2lu
KCksIG1fYWRkZWRQcmVyZW5kZXJzLmVuZCgpLCBzdGQ6OmJpbmQxc3QoV2ViUHJlcmVuZGVyRXF1
YWwoKSwgcHJlcmVuZGVyKSk7CisgICAgfQorCisgICAgc2l6ZV90IGNhbmNlbENvdW50KGNvbnN0
IFdlYlByZXJlbmRlciYgcHJlcmVuZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6Y291bnRfaWYobV9jYW5jZWxlZFByZXJlbmRlcnMuYmVnaW4oKSwgbV9jYW5jZWxlZFByZXJl
bmRlcnMuZW5kKCksIHN0ZDo6YmluZDFzdChXZWJQcmVyZW5kZXJFcXVhbCgpLCBwcmVyZW5kZXIp
KTsKKyAgICB9CisKKyAgICBzaXplX3QgYWJhbmRvbkNvdW50KGNvbnN0IFdlYlByZXJlbmRlciYg
cHJlcmVuZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y291bnRfaWYobV9h
YmFuZG9uZWRQcmVyZW5kZXJzLmJlZ2luKCksIG1fYWJhbmRvbmVkUHJlcmVuZGVycy5lbmQoKSwg
c3RkOjpiaW5kMXN0KFdlYlByZXJlbmRlckVxdWFsKCksIHByZXJlbmRlcikpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBjbGFzcyBXZWJQcmVyZW5kZXJFcXVhbCA6IHB1YmxpYyBzdGQ6OmJpbmFy
eV9mdW5jdGlvbjxXZWJQcmVyZW5kZXIsIFdlYlByZXJlbmRlciwgYm9vbD4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFdlYlByZXJlbmRlciYgZmlyc3QsIGNv
bnN0IFdlYlByZXJlbmRlciYgc2Vjb25kKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZmlyc3QudG9QcmVyZW5kZXIoKSA9PSBzZWNvbmQudG9QcmVyZW5kZXIoKTsKKyAgICAg
ICAgfQorICAgIH07CisKKyAgICAvLyBGcm9tIFdlYlByZXJlbmRlcmluZ1N1cHBvcnQ6CisgICAg
dmlydHVhbCB2b2lkIGFkZChjb25zdCBXZWJQcmVyZW5kZXImIHByZXJlbmRlcikgT1ZFUlJJREUK
KyAgICB7CisgICAgICAgIG1fYWRkZWRQcmVyZW5kZXJzLnB1c2hfYmFjayhwcmVyZW5kZXIpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoY29uc3QgV2ViUHJlcmVuZGVyJiBwcmVy
ZW5kZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2NhbmNlbGVkUHJlcmVuZGVycy5wdXNo
X2JhY2socHJlcmVuZGVyKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJhbmRvbihjb25z
dCBXZWJQcmVyZW5kZXImIHByZXJlbmRlcikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fYWJh
bmRvbmVkUHJlcmVuZGVycy5wdXNoX2JhY2socHJlcmVuZGVyKTsKKyAgICB9CisKKyAgICBzdGQ6
OnZlY3RvcjxXZWJQcmVyZW5kZXI+IG1fYWRkZWRQcmVyZW5kZXJzOworICAgIHN0ZDo6dmVjdG9y
PFdlYlByZXJlbmRlcj4gbV9jYW5jZWxlZFByZXJlbmRlcnM7CisgICAgc3RkOjp2ZWN0b3I8V2Vi
UHJlcmVuZGVyPiBtX2FiYW5kb25lZFByZXJlbmRlcnM7Cit9OworCitlbnVtIFByZXJlbmRlckV2
ZW50IHsKKyAgICBQcmVyZW5kZXJOb0V2ZW50LAorICAgIFByZXJlbmRlckRpZFN0YXJ0LAorICAg
IFByZXJlbmRlckRpZFN0b3AsCisgICAgUHJlcmVuZGVyRGlkU2VuZExvYWQsCisgICAgUHJlcmVu
ZGVyRGlkU2VuZERPTUNvbnRlbnRMb2FkZWQsCit9OworCitjbGFzcyBUZXN0UHJlcmVuZGVyQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OlByZXJlbmRlckNsaWVudCB7CitwdWJsaWM6CisKKyAgICBU
ZXN0UHJlcmVuZGVyQ2xpZW50KCkgOiBtX2xhc3RFdmVudChQcmVyZW5kZXJOb0V2ZW50KSB7IH0K
KyAgICB2aXJ0dWFsIH5UZXN0UHJlcmVuZGVyQ2xpZW50KCkgeyB9CisKKworICAgIFByZXJlbmRl
ckV2ZW50IHJlbGVhc2VMYXN0UHJlcmVuZGVyRXZlbnQoKQorICAgIHsKKyAgICAgICAgY29uc3Qg
UHJlcmVuZGVyRXZlbnQgcmV0dmFsID0gbV9sYXN0RXZlbnQ7CisgICAgICAgIG1fbGFzdEV2ZW50
ID0gUHJlcmVuZGVyTm9FdmVudDsKKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9CisKK3By
aXZhdGU6ICAgIAorICAgIHZvaWQgU2V0TGFzdFByZXJlbmRlckV2ZW50KFByZXJlbmRlckV2ZW50
IGV2ZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKG1fbGFzdEV2ZW50LCBQcmVyZW5kZXJO
b0V2ZW50KTsKKyAgICAgICAgbV9sYXN0RXZlbnQgPSBldmVudDsKKyAgICB9CisKKyAgICAvLyBG
cm9tIFdlYkNvcmU6OlByZXJlbmRlckNsaWVudDoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQ
cmVyZW5kZXIoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgU2V0TGFzdFByZXJlbmRlckV2ZW50
KFByZXJlbmRlckRpZFN0YXJ0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFBy
ZXJlbmRlcigpIE9WRVJSSURFCisgICAgeworICAgICAgICBTZXRMYXN0UHJlcmVuZGVyRXZlbnQo
UHJlcmVuZGVyRGlkU3RvcCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRMb2Fk
Rm9yUHJlcmVuZGVyKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIAorICAgICAgICBTZXRMYXN0
UHJlcmVuZGVyRXZlbnQoUHJlcmVuZGVyRGlkU2VuZExvYWQpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBTZXRMYXN0UHJlcmVuZGVyRXZlbnQoUHJlcmVuZGVyRGlkU2VuZERPTUNv
bnRlbnRMb2FkZWQpOworICAgIH0KKworICAgIFByZXJlbmRlckV2ZW50IG1fbGFzdEV2ZW50Owor
fTsKKworY2xhc3MgUHJlcmVuZGVyaW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1
YmxpYzoKKyAgICBQcmVyZW5kZXJpbmdUZXN0KCkKKyAgICB7CisgICAgICAgIC8vIEZvcmNlIHRo
ZSBwcmVyZW5kZXJlckNsaWVudCB0byBjb25zdHJ1Y3QgYW5kIGF0dGFjaC4KKyAgICAgICAgcHJl
cmVuZGVyZXJDbGllbnQoKTsKKyAgICB9CisKKyAgICB+UHJlcmVuZGVyaW5nVGVzdCgpCisgICAg
eworICAgICAgICBwcmVyZW5kZXJlcigpLT5zdG9wKCk7CisgICAgfQorICAgIAorICAgIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
RnJhbWVJbXBsKj4oc3RhdGljV2ViVmlld0ZvclRlc3QoKS0+bWFpbkZyYW1lKCkpLT5mcmFtZSgp
OworICAgIH0KKworICAgIFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCgpCisgICAgeworICAg
ICAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpQ
cmVyZW5kZXJlciogcHJlcmVuZGVyZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50
KCktPnByZXJlbmRlcmVyKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgfQor
CisgICAgVGVzdFByZXJlbmRlcmVyQ2xpZW50KiBwcmVyZW5kZXJlckNsaWVudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gc3RhdGljUHJlcmVuZGVyZXJDbGllbnRGb3JUZXN0KCk7CisgICAgfQor
CisgICAgVGVzdFByZXJlbmRlcmluZ1N1cHBvcnQqIHByZXJlbmRlcmluZ1N1cHBvcnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICZtX3ByZXJlbmRlcmluZ1N1cHBvcnQ7CisgICAgfQorCitwcml2
YXRlOgorICAgIFRlc3RQcmVyZW5kZXJpbmdTdXBwb3J0IG1fcHJlcmVuZGVyaW5nU3VwcG9ydDsK
K307CisKKworVEVTVF9GKFByZXJlbmRlcmluZ1Rlc3QsIFN0YXJ0UHJlcmVuZGVyKQoreworICAg
IFRlc3RQcmVyZW5kZXJDbGllbnQgY2xpZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpQcmVyZW5k
ZXJIYW5kbGU+IGhhbmRsZSA9IHByZXJlbmRlcmVyKCktPnJlbmRlcigmY2xpZW50LCB0b0tVUkwo
Imh0dHA6Ly93d3cuZm9vLmNvbSIpKTsKKyAgICBXZWJQcmVyZW5kZXIgd2ViUHJlcmVuZGVyID0g
cHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworCisgICAgd2ViUHJl
cmVuZGVyLmRpZFN0YXJ0UHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJp
bmdTdXBwb3J0KCktPmFkZENvdW50KHdlYlByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgxdSwg
cHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworICAgIEVYUEVDVF9FUShQcmVy
ZW5kZXJEaWRTdGFydCwgY2xpZW50LnJlbGVhc2VMYXN0UHJlcmVuZGVyRXZlbnQoKSk7Cit9CisK
K1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBDYW5jZWxQcmVyZW5kZXIpCit7CisgICAgVGVzdFBy
ZXJlbmRlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlByZXJlbmRlckhhbmRs
ZT4gaGFuZGxlID0gcHJlcmVuZGVyZXIoKS0+cmVuZGVyKCZjbGllbnQsIHRvS1VSTCgiaHR0cDov
L3d3dy5mb28uY29tIikpOworICAgIFdlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIgPSBwcmVyZW5k
ZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDF1LCBw
cmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KHdlYlByZXJlbmRlcikpOworICAgIEVYUEVD
VF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworCisgICAgd2Vi
UHJlcmVuZGVyLmRpZFN0YXJ0UHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKFByZXJlbmRlckRp
ZFN0YXJ0LCBjbGllbnQucmVsZWFzZUxhc3RQcmVyZW5kZXJFdmVudCgpKTsKKworICAgIGhhbmRs
ZS0+Y2FuY2VsKCk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmNh
bmNlbENvdW50KHdlYlByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgydSwgcHJlcmVuZGVyaW5n
U3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworICAgIHdlYlByZXJlbmRlci5kaWRTdG9wUHJlcmVu
ZGVyKCk7CisgICAgRVhQRUNUX0VRKFByZXJlbmRlckRpZFN0b3AsIGNsaWVudC5yZWxlYXNlTGFz
dFByZXJlbmRlckV2ZW50KCkpOworfQorCitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgQWJhbmRv
blByZXJlbmRlcikKK3sKKyAgICBUZXN0UHJlcmVuZGVyQ2xpZW50IGNsaWVudDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6UHJlcmVuZGVySGFuZGxlPiBoYW5kbGUgPSBwcmVyZW5kZXJlcigpLT5yZW5k
ZXIoJmNsaWVudCwgdG9LVVJMKCJodHRwOi8vd3d3LmZvby5jb20iKSk7CisgICAgV2ViUHJlcmVu
ZGVyIHdlYlByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5k
ZXIoKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQo
d2ViUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCkt
PnRvdGFsQ291bnQoKSk7CisKKyAgICB3ZWJQcmVyZW5kZXIuZGlkU3RhcnRQcmVyZW5kZXIoKTsK
KyAgICBFWFBFQ1RfRVEoUHJlcmVuZGVyRGlkU3RhcnQsIGNsaWVudC5yZWxlYXNlTGFzdFByZXJl
bmRlckV2ZW50KCkpOworCisgICAgaGFuZGxlLT5hYmFuZG9uKCk7CisgICAgRVhQRUNUX0VRKDF1
LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFiYW5kb25Db3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAg
ICBFWFBFQ1RfRVEoMnUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKKwor
ICAgIEVYUEVDVF9FUShQcmVyZW5kZXJOb0V2ZW50LCBjbGllbnQucmVsZWFzZUxhc3RQcmVyZW5k
ZXJFdmVudCgpKTsKK30KKworVEVTVF9GKFByZXJlbmRlcmluZ1Rlc3QsIERpZFNlbmRMb2FkRXZl
bnQpCit7CisgICAgVGVzdFByZXJlbmRlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlByZXJlbmRlckhhbmRsZT4gaGFuZGxlID0gcHJlcmVuZGVyZXIoKS0+cmVuZGVyKCZjbGll
bnQsIHRvS1VSTCgiaHR0cDovL3d3dy5mb28uY29tIikpOworICAgIFdlYlByZXJlbmRlciB3ZWJQ
cmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisK
KyAgICB3ZWJQcmVyZW5kZXIuZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQod2ViUHJlcmVuZGVyKSk7CisgICAgRVhQ
RUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291bnQoKSk7CisgICAgRVhQ
RUNUX0VRKFByZXJlbmRlckRpZFN0YXJ0LCBjbGllbnQucmVsZWFzZUxhc3RQcmVyZW5kZXJFdmVu
dCgpKTsKKworICAgIHdlYlByZXJlbmRlci5kaWRTZW5kTG9hZEZvclByZXJlbmRlcigpOworICAg
IEVYUEVDVF9FUShQcmVyZW5kZXJEaWRTZW5kTG9hZCwgY2xpZW50LnJlbGVhc2VMYXN0UHJlcmVu
ZGVyRXZlbnQoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRv
dGFsQ291bnQoKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBEaWRTZW5kRE9NQ29u
dGVudExvYWRlZCkKK3sKKyAgICBUZXN0UHJlcmVuZGVyQ2xpZW50IGNsaWVudDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6UHJlcmVuZGVySGFuZGxlPiBoYW5kbGUgPSBwcmVyZW5kZXJlcigpLT5yZW5k
ZXIoJmNsaWVudCwgdG9LVVJMKCJodHRwOi8vd3d3LmZvby5jb20iKSk7CisgICAgV2ViUHJlcmVu
ZGVyIHdlYlByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5k
ZXIoKTsKKworICAgIHdlYlByZXJlbmRlci5kaWRTdGFydFByZXJlbmRlcigpOworICAgIEVYUEVD
VF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsK
KyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsK
KyAgICBFWFBFQ1RfRVEoUHJlcmVuZGVyRGlkU3RhcnQsIGNsaWVudC5yZWxlYXNlTGFzdFByZXJl
bmRlckV2ZW50KCkpOworCisgICAgd2ViUHJlcmVuZGVyLmRpZFNlbmRET01Db250ZW50TG9hZGVk
Rm9yUHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKFByZXJlbmRlckRpZFNlbmRET01Db250ZW50
TG9hZGVkLCBjbGllbnQucmVsZWFzZUxhc3RQcmVyZW5kZXJFdmVudCgpKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKK30KKworVEVTVF9G
KFByZXJlbmRlcmluZ1Rlc3QsIFN0b3BQcmVyZW5kZXJlcikKK3sKKyAgICBUZXN0UHJlcmVuZGVy
Q2xpZW50IGZpcnN0Q2xpZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpQcmVyZW5kZXJIYW5kbGU+
IGZpcnN0SGFuZGxlID0gcHJlcmVuZGVyZXIoKS0+cmVuZGVyKCZmaXJzdENsaWVudCwgdG9LVVJM
KCJodHRwOi8vd3d3LmZvby5jb20iKSk7CisgICAgV2ViUHJlcmVuZGVyIGZpcnN0V2ViUHJlcmVu
ZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworCisgICAg
VGVzdFByZXJlbmRlckNsaWVudCBzZWNvbmRDbGllbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlBy
ZXJlbmRlckhhbmRsZT4gc2Vjb25kSGFuZGxlID0gcHJlcmVuZGVyZXIoKS0+cmVuZGVyKCZzZWNv
bmRDbGllbnQsIHRvS1VSTCgiaHR0cDovL3d3dy5mb28uY29tIikpOworICAgIFdlYlByZXJlbmRl
ciBzZWNvbmRXZWJQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJl
cmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENv
dW50KGZpcnN0V2ViUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdT
dXBwb3J0KCktPmFkZENvdW50KHNlY29uZFdlYlByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgy
dSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworCisgICAgcHJlcmVuZGVy
ZXIoKS0+c3RvcCgpOworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5h
YmFuZG9uQ291bnQoZmlyc3RXZWJQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJl
bmRlcmluZ1N1cHBvcnQoKS0+YWJhbmRvbkNvdW50KHNlY29uZFdlYlByZXJlbmRlcikpOworICAg
IEVYUEVDVF9FUSg0dSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworfQor
CitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgU3VzcGVuZEFuZFJlc3VtZVByZXJlbmRlcmVyKQor
eworICAgIFRlc3RQcmVyZW5kZXJDbGllbnQgZmlyc3RDbGllbnQ7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlByZXJlbmRlckhhbmRsZT4gZmlyc3RIYW5kbGUgPSBwcmVyZW5kZXJlcigpLT5yZW5kZXIo
JmZpcnN0Q2xpZW50LCB0b0tVUkwoImh0dHA6Ly93d3cuZm9vLmNvbSIpKTsKKyAgICBXZWJQcmVy
ZW5kZXIgZmlyc3RXZWJQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2Vi
UHJlcmVuZGVyKCk7CisKKyAgICBUZXN0UHJlcmVuZGVyQ2xpZW50IHNlY29uZENsaWVudDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6UHJlcmVuZGVySGFuZGxlPiBzZWNvbmRIYW5kbGUgPSBwcmVyZW5k
ZXJlcigpLT5yZW5kZXIoJnNlY29uZENsaWVudCwgdG9LVVJMKCJodHRwOi8vd3d3LmZvby5jb20i
KSk7CisgICAgV2ViUHJlcmVuZGVyIHNlY29uZFdlYlByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xp
ZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRl
cmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoZmlyc3RXZWJQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoc2Vjb25kV2ViUHJlcmVuZGVy
KSk7CisgICAgRVhQRUNUX0VRKDJ1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291bnQo
KSk7CisKKyAgICBwcmVyZW5kZXJlcigpLT5zdXNwZW5kKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVj
dDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdT
dXBwb3J0KCktPmFiYW5kb25Db3VudChmaXJzdFdlYlByZXJlbmRlcikpOworICAgIEVYUEVDVF9F
USgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hYmFuZG9uQ291bnQoc2Vjb25kV2ViUHJlcmVu
ZGVyKSk7CisgICAgRVhQRUNUX0VRKDR1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291
bnQoKSk7CisKKyAgICBwcmVyZW5kZXJlcigpLT5yZXN1bWUoKTsKKyAgICBFWFBFQ1RfRVEoMnUs
IHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoZmlyc3RXZWJQcmVyZW5kZXIpKTsKKyAg
ICBFWFBFQ1RfRVEoMnUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoc2Vjb25kV2Vi
UHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDZ1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRv
dGFsQ291bnQoKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBTaG9ydExpdmVkQ2xp
ZW50KQoreworICAgIE93blB0cjxUZXN0UHJlcmVuZGVyQ2xpZW50PiBjbGllbnQgPSBhZG9wdFB0
cihuZXcgVGVzdFByZXJlbmRlckNsaWVudCgpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UHJlcmVu
ZGVySGFuZGxlPiBoYW5kbGUgPSBwcmVyZW5kZXJlcigpLT5yZW5kZXIoY2xpZW50LmdldCgpLCB0
b0tVUkwoImh0dHA6Ly93d3cuZm9vLmNvbSIpKTsKKyAgICBXZWJQcmVyZW5kZXIgd2ViUHJlcmVu
ZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworCisgICAg
RVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KHdlYlByZXJlbmRl
cikpOworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50
KCkpOworCisgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGVzZSBzdGVwcyBkb24ndCBjcmFz
aC4KKyAgICBoYW5kbGUtPnJlbW92ZUNsaWVudChjbGllbnQuZ2V0KCkpOworICAgIGNsaWVudC5j
bGVhcigpOworICAgIHdlYlByZXJlbmRlci5kaWRTdGFydFByZXJlbmRlcigpOworfQorCitURVNU
X0YoUHJlcmVuZGVyaW5nVGVzdCwgRXh0cmFEYXRhKQoreworICAgIGNsYXNzIFRlc3RFeHRyYURh
dGEgOiBwdWJsaWMgV2ViUHJlcmVuZGVyOjpFeHRyYURhdGEgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgZXhwbGljaXQgVGVzdEV4dHJhRGF0YShib29sKiBhbGl2ZSkgOiBtX2FsaXZlKGFsaXZlKQor
ICAgICAgICB7CisgICAgICAgICAgICAqYWxpdmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB+VGVzdEV4dHJhRGF0YSgpIHsgKm1fYWxpdmUgPSBmYWxzZTsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgYm9vbCogbV9hbGl2ZTsKKyAgICB9OworCisgICAgYm9vbCBhbGl2
ZSA9IGZhbHNlOworICAgIHsKKyAgICAgICAgVGVzdFByZXJlbmRlckNsaWVudCBjbGllbnQ7Cisg
ICAgICAgIHByZXJlbmRlcmVyQ2xpZW50KCktPnNldEV4dHJhRGF0YUZvck5leHRQcmVyZW5kZXIo
bmV3IFRlc3RFeHRyYURhdGEoJmFsaXZlKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGFsaXZlKTsK
KworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UHJlcmVuZGVySGFuZGxlPiBoYW5kbGUgPSBwcmVy
ZW5kZXJlcigpLT5yZW5kZXIoJmNsaWVudCwgdG9LVVJMKCJodHRwOi8vd3d3LmZvby5jb20iKSk7
CisgICAgICAgIFdlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgp
LT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisgICAgICAgIHdlYlByZXJlbmRlci5kaWRTdGFydFBy
ZXJlbmRlcigpOworCisgICAgICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgp
LT5hZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAgICAgICAgRVhQRUNUX0VRKFByZXJlbmRlckRp
ZFN0YXJ0LCBjbGllbnQucmVsZWFzZUxhc3RQcmVyZW5kZXJFdmVudCgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoYWxpdmUpOworCisgICAgICAgIHByZXJlbmRlcmVyKCktPnN0b3AoKTsKKyAgICAg
ICAgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5jbGVhcigpOworICAgIH0KKyAgICBFWFBFQ1RfRkFM
U0UoYWxpdmUpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178357</attachid>
            <date>2012-12-08 09:06:58 -0800</date>
            <delta_ts>2012-12-08 09:10:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20121208120421.patch</filename>
            <type>text/plain</type>
            <size>55322</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MTRhNjU2N2RhNDVm
YzI1YTYwNWYxY2EwNGQzOWNkMWJmZWUzYTYzLi44Zjg1MWI3MGM3MmJmOTBkMDUwODExY2FmOGQ0
MjYxMzk5N2ViZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wOCAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3RhdHVz
IGV2ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNF
dmVudCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMgd2hlbgorICAgICAgICBwcmVyZW5kZXJzIGFy
ZSBzdGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRoZXkKKyAgICAg
ICAgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6
ZSBsYXVuY2hpbmcKKyAgICAgICAgcHJlcmVuZGVycywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3Jt
YW5jZS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpXZWJQcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmVyZW5kZXI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJQcmVyZW5kZXIpOgorCiAy
MDEyLTEyLTA2ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIHNldHRpbmcgZm9yIGxvdyBsYXRlbmN5IHJlbmRlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDBlM2U0YjlmODExNTk0MTNhZGNkYTQ2MGQxNjA1Y2I1NDIwNzIzODcu
Ljc1ZGJiZTI5MWRkZWFmOTExYTAxZWVhYmIyOTE2N2U3OGQxZTkxMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4NiBAQAorMjAxMi0xMi0wOCAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBBZGQgc3RhdHVzIGV2ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVy
PiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVudCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMg
d2hlbgorICAgICAgICBwcmVyZW5kZXJzIGFyZSBzdGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5k
IGFsc28gc2VudCB3aGVuIHRoZXkKKyAgICAgICAgYXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRo
aXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6ZSBsYXVuY2hpbmcKKyAgICAgICAgcHJlcmVuZGVy
cywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3JtYW5jZS4KKworICAgICAgICBUZXN0ZWQgaW4gYSBu
ZXcgV2ViS2l0VW5pdFRlc3QgZm9yIHRoZSBjaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0V2
ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpkaWRTdGFydExpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjpkaWRTdG9wTGlua1ByZXJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yTGlua1By
ZXJlbmRlcik6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKEhU
TUxMaW5rRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTdG9wUHJlcmVuZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9y
UHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OmxvYWRMaW5rKToKKyAg
ICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5oOgorICAgICAgICAoTGlua0xvYWRlcik6CisgICAg
ICAgICogbG9hZGVyL0xpbmtMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKExpbmtMb2FkZXJDbGll
bnQpOgorICAgICAgICAqIGxvYWRlci9QcmVyZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQcmVyZW5kZXJlcjo6cmVuZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUHJlcmVuZGVyZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXJlbmRlckNsaWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlckNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQcmVy
ZW5kZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyQ2xpZW50Ojp+UHJlcmVu
ZGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVySGFuZGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVy
OjpQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpyZW1vdmVDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmFkZCk6
CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcmVyZW5kZXI6OmFiYW5kb24pOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRT
dGFydFByZXJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmRpZFN0b3BQcmVy
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclByZXJl
bmRlcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVyZW5kZXI6OmRpZFNlbmRET01Db250ZW50TG9h
ZGVkRm9yUHJlcmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIu
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFByZXJl
bmRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckhhbmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlByZXJlbmRlckhhbmRsZTo6UHJlcmVuZGVySGFuZGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlByZXJlbmRlckhhbmRsZTo6flByZXJlbmRlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQcmVyZW5kZXJIYW5kbGU6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6dG9QcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjphc3NpZ24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVyZW5kZXI6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRl
cjo6ZGlkU3RhcnRQcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVyZW5kZXI6OmRp
ZFN0b3BQcmVyZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVyZW5kZXI6OmRpZFNlbmRM
b2FkRm9yUHJlcmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTZW5k
RE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcik6CisKIDIwMTItMTItMDYgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBhbHdheXMgdGhl
IG9yZGVyIGl0ZXJhdG9yIGZyb20gZGF0YSBtZW1iZXIgaW4gUmVuZGVyRmxleGlibGVCb3gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTYxZGE0M2RlYTE5NWVhODZkN2IyYjAxYzUwNzEx
NTNjN2UwNWY5Mi4uOWRmN2RjMzU2ZDdmOGI3NThlOGI4ODViZTFlYjgyOTA4ZDM3NjdmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMi0wOCAgR2F2
aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3RhdHVzIGV2
ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVu
dCBpcyBzZW50IHRvIGxpbmsgZWxlbWVudHMgd2hlbgorICAgICAgICBwcmVyZW5kZXJzIGFyZSBz
dGFydGVkIGJ5IHRoZSBlbWJlZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRoZXkKKyAgICAgICAg
YXJlIHN0b3BwZWQuIFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6ZSBs
YXVuY2hpbmcKKyAgICAgICAgcHJlcmVuZGVycywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3JtYW5j
ZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAg
ICAgICogdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2Fk
KToKKyAgICAgICAgKiB0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmg6CisgICAgICAgIChGcmFtZVRl
c3RIZWxwZXJzKToKKyAgICAgICAgKiB0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcDogQWRkZWQu
CisgICAgICAgICogdGVzdHMvZGF0YS9wcmVyZW5kZXIvbXVsdGlwbGVfcHJlcmVuZGVycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3ByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVy
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGwgY3Job21pdW0gdG8gcjE3MTcw
Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVu
ZGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCmlu
ZGV4IDVlZDgwNDkwMGZjNmZhMGI2Y2M4MTg1NDY0N2RjYjY5YTIzMjVhYzUuLjRjMDhhZjA5NzNl
NWU1OTAyNjIxNjFhZDIyOWVmMjVkMWY4MjBkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaApAQCAtNTQsMTEgKzU0LDI0IEBAIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAorICAgIFdlYlByZXJl
bmRlcigpIHsgfQorICAgIFdlYlByZXJlbmRlcihjb25zdCBXZWJQcmVyZW5kZXImIG90aGVyKSB7
IGFzc2lnbihvdGhlcik7IH0KKyAgICBXZWJQcmVyZW5kZXImIG9wZXJhdG9yPShjb25zdCBXZWJQ
cmVyZW5kZXImIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIGV4
cGxpY2l0IFdlYlByZXJlbmRlcihQYXNzUmVmUHRyPFdlYkNvcmU6OlByZXJlbmRlcj4pOwogICAg
IH5XZWJQcmVyZW5kZXIoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlByZXJlbmRlciogdG9QcmVy
ZW5kZXIoKSBjb25zdDsKICNlbmRpZgogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJQcmVyZW5kZXImKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29u
c3Q7CisKICAgICBXRUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKICAgICBXRUJLSVRf
RVhQT1JUIFdlYlN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2Vi
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKQEAgLTY2LDkgKzc5LDEyIEBA
IHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4dHJhRGF0YSop
OwogICAgIFdFQktJVF9FWFBPUlQgY29uc3QgRXh0cmFEYXRhKiBleHRyYURhdGEoKSBjb25zdDsK
IAotcHJpdmF0ZToKLSAgICBXZWJQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
ZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU3RvcFByZXJl
bmRlcigpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTZW5kTG9hZEZvclByZXJlbmRlcigp
OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJl
bmRlcigpOwogCitwcml2YXRlOgogICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UHJlcmVuZGVy
PiBtX3ByaXZhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiNzA0
NmNjYzRhZDUxNGY2NjM3MjE3ZDE0MTY5OGQyNzQ0NTA0YjFiLi45NzhmYzIzMjQwM2QxMjJhZjdj
ZjQzNzBjNDdkNDAzOGVmNGU0NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTU3OTksNiArNTc5OSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BvcHVwTWVudS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVT
dHlsZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QdXJnZVByaW9yaXR5LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNWI0Njg3YzQxNDA1YjgyNWY0NTVi
Y2Q5MGU0ZTk0MjEyZWE3ODgxMC4uYzBkOWU4MDliMzU4NzJlZjZiN2MxNTA2Nzg0ZWVkM2Q5YmI2
MjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMzMzLDYgKzIzMzMsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBwbGF0Zm9ybS9UaW1lci5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCiAgICAgcGxhdGZv
cm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggXAorICAgIHBsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5o
IFwKICAgICBwbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaCBcCiAgICAgcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5oIFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNGU3ZDNkYjk5MDM3ZWFjMGNhMmM1NTdmNjg4NTM2YzU3YWM0MjE5MS4uOTY2
OTc1ZWI0NTQ3NTQwNWY4YTM5YTFhMTA2MjQ5NDVjYWM0ODRiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzQ3Miw2ICszNDcyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNo
RXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUHVyZ2Vh
YmxlQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1J1bkxvb3BUaW1lci5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYWJjMDllYjg2MTYyMDcyNTVhNzg2
Mzk3YzVlNWJmNTBmNDRmY2UzZS4uNWRlMDc1NDEyNjlkNTVlNjNhODY0M2Y1MGFiMDc3OWZkMjQ2
NDg3MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI4NzQyLDYgKzI4NzQyLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXFByZXJlbmRlckNsaWVudC5oIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5k
ZXJIYW5kbGUuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2U2YjY2ZDVlZjFjNDM5ZTcxMTI3
ZWMxMzcwMjdhZTMxNGFlNTY2NS4uNzA5NWI0OGNkZTk0NGZlYTM2YjU1YWYyZmU2ZjAzZTkzYTFk
NTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzc2MCw2ICszNzYwLDcgQEAKIAkJOTg1NkY4RDExNTQ5RTg0RjAwQjA0RjNB
IC8qIFByZXJlbmRlckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTg1NkY4RDAxNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5o
ICovOyB9OwogCQk5ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2
QjEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi87IH07CiAJCTk4NUJC
OTZFMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QzEzQTk0MDU4MDA3QTBCNjkg
LyogTGlua1JlbEF0dHJpYnV0ZS5oICovOyB9OworCQk5ODZFQTg4MzE1RkZGMjkwMDA5ODVFNUUg
LyogUHJlcmVuZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5ODZFQTg4MjE1RkZGMjkwMDA5ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50Lmgg
Ki87IH07CiAJCTk4Q0U0MzI2MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4Q0U0MzI1MTI5RTAw
QkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCAqLzsgfTsKIAkJOThDRTQzMkExMjlFMDBFNTAw
NTgyMURDIC8qIExpbmtMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi87
IH07CiAJCTk4RUIxRjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThFQjFGOTQxMzEzRkUw
NTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMDgxLDYgKzExMDgyLDcgQEAKIAkJOTg1NkY4RDAx
NTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmVyZW5kZXJIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTg1QkI5NkIxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1JlbEF0dHJpYnV0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4NUJCOTZDMTNBOTQwNTgwMDdBMEI2OSAv
KiBMaW5rUmVsQXR0cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExp
bmtSZWxBdHRyaWJ1dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTg2RUE4ODIx
NUZGRjI5MDAwOTg1RTVFIC8qIFByZXJlbmRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmVyZW5kZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0xvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdElt
cGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVu
dGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTUyNCw3ICsxNTUyNiw2IEBA
CiAJCQkJNDlFOTEyQTcwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuY3BwICovLAog
CQkJCTQ5RTkxMkE4MEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmggKi8sCiAJCQkJ
MEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICovLAotCQkJ
CTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLywKIAkJCQk0
OUU5MTJBOTBFRkFDOTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gYW5pbWF0aW9uOwpAQCAtMjExMTgsNiArMjExMTksOCBAQAogCQkJCTA2NjhFMTg5
MEFERDk2MjQwMDQxMjhFMCAvKiBQb3B1cE1lbnUuaCAqLywKIAkJCQlBQkMxMjg3NjBCMzNBQTZE
MDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAw
ODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggKi8sCisJCQkJOTg2RUE4ODIxNUZGRjI5MDAwOTg1
RTVFIC8qIFByZXJlbmRlckNsaWVudC5oICovLAorCQkJCTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYz
QSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLywKIAkJCQlFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5Nzgg
LyogUHVyZ2VhYmxlQnVmZmVyLmggKi8sCiAJCQkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8q
IFB1cmdlUHJpb3JpdHkuaCAqLywKIAkJCQlBNzJFQTNCQTE1ODVDRjU1MDA0RkFBMjYgLyogUmVm
Q291bnRlZFN1cHBsZW1lbnQuaCAqLywKQEAgLTI1ODk2LDYgKzI1ODk5LDcgQEAKIAkJCQlENjY4
MTdGQjE2NkZFNkQ3MDBGQTA3QjQgLyogSFRNTFRlbXBsYXRlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDY0ODlEMjYxNjZGRkNGMTAwN0MwMzFCIC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFENTkxQkMxNjZDMkU2QzAwRTZCRjAyIC8qIFBsdWdJ
bk9yaWdpbkhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTk4NkVBODgzMTVGRkYyOTAwMDk4NUU1
RSAvKiBQcmVyZW5kZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKaW5kZXggNzIwZmI0MTRiY2RmYTY4ZmVhODJlZGU3MDdhYmVlZTQwOGY4OWEwMi4uZGMzZWZi
ZTc4MzljMWRhMWU1OWY1MmRlMDYyNTI4ODdiNjYwMzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCkBAIC0yNDcsNiArMjQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhh
dXRvY29tcGxldGUpIFwKICAgICBtYWNybyhhdXRvY29tcGxldGVlcnJvcikgXAogICAgIFwKKyAg
ICBtYWNybyh3ZWJraXRwcmVyZW5kZXJzdGFydCkgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRl
cnN0b3ApIFwKKyAgICBtYWNybyh3ZWJraXRwcmVyZW5kZXJsb2FkKSBcCisgICAgbWFjcm8od2Vi
a2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCkgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9F
VkVOVF9OQU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAKaW5kZXggNDkxZDczMGFjYWE1ZjNhYWVlYmNmM2JiODFkMzQxZDkzZWRhYTMwYy4uZjgyZTYw
MmNjMDUwMDg4NzU2MDZjOGVlYTJjMzhlODg3NDBhMzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCkBAIC0zNTcsNiArMzU4LDI4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZGlu
Z0Vycm9yZWQoKQogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKKyNpZiBFTkFCTEUoTElOS19QUkVSRU5E
RVIpCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU3RhcnRMaW5rUHJlcmVuZGVyKCkKK3sKKyAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHByZXJlbmRl
cnN0YXJ0RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6
ZGlkU3RvcExpbmtQcmVyZW5kZXIoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkud2Via2l0cHJlcmVuZGVyc3RvcEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
K30KKwordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigp
Cit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRw
cmVyZW5kZXJsb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxl
bWVudDo6ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVyKCkKK3sKKyAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHByZXJlbmRlcmRv
bWNvbnRlbnRsb2FkZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisjZW5kaWYKKwogYm9vbCBI
VE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsKICAgICBpZiAoIXN0eWxlU2hlZXRJc0xv
YWRpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMmM3MThj
MDhmOTMyNzBkZTU0M2Q4NzFiNDAzNjZlMTI4YmU0NDlhYy4uMzc2MjRjNDlmOWE0ZmI5NzE3ZDBk
NWUxYjMxZTc4MGEzZDVhZmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CkBAIC04OSw4ICs4OSwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2Fk
ZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGxpbmtMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRpbmdFcnJvcmVk
KCk7CisgICAgdmlydHVhbCB2b2lkIGxpbmtMb2FkZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgbGlua0xvYWRpbmdFcnJvcmVkKCkgT1ZFUlJJREU7CisjaWYgRU5BQkxFKExJTktfUFJF
UkVOREVSKSAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMaW5rUHJlcmVuZGVyKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMaW5rUHJlcmVuZGVyKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQcmVyZW5kZXIo
KSBPVkVSUklERTsKKyNlbmRpZgogCiAgICAgYm9vbCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3JlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJu
YXRlOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggZTUwYjM3
OWQ5NmJlZGE3MzI5MjU0NjQyMGVhY2Y5OGJhNTQzZTFiOC4uNGU5NzI3NWUxNDM4MjZhMjAzMjk3
OTJmYWY2ODRlMjNjYjVmYWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApA
QCAtOTAsNiArOTAsMjYgQEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSAwOwogfQogCit2
b2lkIExpbmtMb2FkZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlk
U3RhcnRMaW5rUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgTGlua0xvYWRlcjo6ZGlkU3RvcFByZXJl
bmRlcigpCit7CisgICAgbV9jbGllbnQtPmRpZFN0b3BMaW5rUHJlcmVuZGVyKCk7Cit9CisKK3Zv
aWQgTGlua0xvYWRlcjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKQoreworICAgIG1fY2xpZW50
LT5kaWRTZW5kTG9hZEZvckxpbmtQcmVyZW5kZXIoKTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpk
aWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9jbGllbnQtPmRp
ZFNlbmRET01Db250ZW50TG9hZGVkRm9yTGlua1ByZXJlbmRlcigpOworfQorCiBib29sIExpbmtM
b2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29u
c3QgU3RyaW5nJiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHNpemVzLCBjb25zdCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CkBAIC0xMzUs
NyArMTU1LDcgQEAgYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmli
dXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHkKICNpZiBFTkFCTEUoTElOS19QUkVS
RU5ERVIpCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZXJlbmRlcikgewogICAgICAg
ICBBU1NFUlQoIW1fcHJlcmVuZGVySGFuZGxlKTsKLSAgICAgICAgbV9wcmVyZW5kZXJIYW5kbGUg
PSBkb2N1bWVudC0+cHJlcmVuZGVyZXIoKS0+cmVuZGVyKGhyZWYpOworICAgICAgICBtX3ByZXJl
bmRlckhhbmRsZSA9IGRvY3VtZW50LT5wcmVyZW5kZXJlcigpLT5yZW5kZXIodGhpcywgaHJlZik7
CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2Fk
ZXIuaAppbmRleCBhMWE2M2YwM2ZlZGU5NmYxNDYyYzc0NjA4MDRlNTMzNWJkNDFiNjMyLi40Yzg1
M2RhZjRmMzFhMTc1YTkxYTgxZjM3ZmZhYmFkZmY2N2NiYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNs
aWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTGlu
a0xvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIlByZXJlbmRlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0OCw4IEBAIGNs
YXNzIFByZXJlbmRlckhhbmRsZTsKICNlbmRpZgogCiAvLyBUaGUgTGlua0xvYWRlciBjYW4gbG9h
ZCBsaW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNlLCBwcmVmZXRj
aCBhbmQgcHJlcmVuZGVyLgotY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CitjbGFzcyBMaW5rTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50
LCBwdWJsaWMgUHJlcmVuZGVyQ2xpZW50IHsKKwogcHVibGljOgogICAgIGV4cGxpY2l0IExpbmtM
b2FkZXIoTGlua0xvYWRlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkxpbmtMb2FkZXIoKTsKQEAg
LTU1LDYgKzU3LDE0IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAg
CisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQorICAgIC8vIGZyb20gUHJlcmVuZGVyQ2xpZW50
CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERPTUNvbnRlbnRMb2FkZWRGb3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyNlbmRpZgorCiAg
ICAgdm9pZCByZWxlYXNlZCgpOwogICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJp
YnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VS
TCYsIERvY3VtZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5o
CmluZGV4IDQzNTBlZTc4Yzk1YTc2M2Y5Y2M1ZDQ1ZTVhOGUxNjJhOWIxYTUwNjMuLjFlMWRiMmIy
OWFhYmMwMzUzYWJhZDFiNjBmMWE3MjcwOTYxMTVmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXJDbGllbnQuaApAQCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsaW5rTG9hZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vy
cm9yZWQoKSA9IDA7CiAgICAgLy8gVGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uIGZvciBjYW5jZWxs
YXRpb24uCisKKyNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0TGlua1ByZXJlbmRlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQ
cmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRMb2FkRm9yTGlua1ByZXJl
bmRlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JM
aW5rUHJlcmVuZGVyKCkgPSAwOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
ZXJlbmRlcmVyLmNwcAppbmRleCAxNjRmOWU5ODhkMWIxZDdhMGM2ZDA5NTE4MjBiNWYyNjY0Njhm
YzA5Li5jMzcwYTZkMjJmM2M5NGU3ZWJhMzMzZjJlOGI0MzZjNTlhNmJjNWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9QcmVyZW5kZXJlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUHJlcmVuZGVyZXI6
On5QcmVyZW5kZXJlcigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVy
ZW5kZXJlcjo6cmVuZGVyKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8UHJlcmVuZGVySGFu
ZGxlPiBQcmVyZW5kZXJlcjo6cmVuZGVyKFByZXJlbmRlckNsaWVudCogcHJlcmVuZGVyQ2xpZW50
LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gUHJlcmVuZGVycyBhcmUgdW5saWtlIHJlcXVl
c3RzIGluIG1vc3Qgd2F5cyAoZm9yIGluc3RhbmNlLCB0aGV5IHBhc3MgZG93biBmcmFnbWVudHMs
IGFuZCB0aGV5IGRvbid0IHJldHVybiBkYXRhKSwKICAgICAvLyBidXQgdGhleSBkbyBoYXZlIHJl
ZmVycmVycy4KQEAgLTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFBy
ZXJlbmRlcmVyOjpyZW5kZXIoY29uc3QgS1VSTCYgdXJsKQogCiAgICAgY29uc3QgU3RyaW5nIHJl
ZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIocmVmZXJyZXJQ
b2xpY3ksIHVybCwgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSk7CiAKLSAgICBSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBwcmVyZW5kZXJIYW5kbGUgPSBQ
cmVyZW5kZXJIYW5kbGU6OmNyZWF0ZSh1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSk7Cisg
ICAgUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gcHJlcmVuZGVySGFuZGxlID0gUHJlcmVuZGVySGFu
ZGxlOjpjcmVhdGUocHJlcmVuZGVyQ2xpZW50LCB1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGlj
eSk7CiAKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT53aWxsQWRkUHJlcmVu
ZGVyKHByZXJlbmRlckhhbmRsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJlcmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5o
CmluZGV4IGQ5ZjAxMjg5ZGU4ZTIyMzc0YjBmM2E3YTZiODQ1YmIzZWE4MzYwOWYuLmQ4NWFhYzU1
YTc0M2NlODU4OTMxMDJkMTYxMWQ3OTJkNThiZDFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9QcmVyZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVy
ZW5kZXJlci5oCkBAIC00Niw2ICs0Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OworY2xhc3MgUHJlcmVuZGVyQ2xpZW50OwogY2xhc3MgUHJlcmVuZGVySGFuZGxl
OwogY2xhc3MgUHJlcmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBQYWdlOwpAQCAtNTUsMjMgKzU2LDI0
IEBAIGNsYXNzIFByZXJlbmRlcmVyIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UHJlcmVuZGVyZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVy
SGFuZGxlPiByZW5kZXIoY29uc3QgS1VSTCYpOworICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFu
ZGxlPiByZW5kZXIoUHJlcmVuZGVyQ2xpZW50KiwgY29uc3QgS1VSTCYpOwogCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8UHJlcmVuZGVyZXI+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAg
IC8vIEZyb20gQWN0aXZlRE9NT2JqZWN0OgorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOworCiBwcml2YXRl
OgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQcmVyZW5kZXJIYW5kbGU+ID4gSGFuZGxlVmVj
dG9yOwogICAgIHR5cGVkZWYgVmVjdG9yPEtVUkw+IEtVUkxWZWN0b3I7CiAKICAgICBleHBsaWNp
dCBQcmVyZW5kZXJlcihEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJREU7Ci0KICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKTsKICAgICBQcmVyZW5kZXJlckNsaWVudCogY2xpZW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFk
NmUwMDNhY2RjMDBlNTkxN2Y0NDgzNTI4ODcwZTMxNzY3NmU0OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisg
Ki8KKworI2lmbmRlZiBQcmVyZW5kZXJDbGllbnRfaAorI2RlZmluZSBQcmVyZW5kZXJDbGllbnRf
aAorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUHJlcmVuZGVyQ2xpZW50IHsKKyNp
ZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCitwdWJsaWM6CisgICAgdmlydHVhbCB+UHJlcmVuZGVy
Q2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcmVyZW5kZXIoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpID0gMDsKKyNlbmRpZgorfTsKKworfQor
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVy
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAppbmRl
eCAwNGZkYWZjZjQwZjRlYWZlODQwYjA4YmY5NjBlNzE0MjNkZjcyYTdhLi5mNDhlMzIwN2U1NzFi
MGM2OTJiMGRjZjMwM2E0NjIxOTU4ZjQ2NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmVyZW5kZXJIYW5kbGUuaApAQCAtNDQsMTYgKzQ0LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgS1VSTDsKIGNsYXNzIFByZXJlbmRlcjsKK2NsYXNzIFByZXJlbmRlckNsaWVudDsK
IAogY2xhc3MgUHJlcmVuZGVySGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UHJlcmVuZGVySGFu
ZGxlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlcmVuZGVySGFuZGxlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IGNyZWF0ZShjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFByZXJlbmRlckhhbmRsZT4gY3JlYXRlKFByZXJlbmRlckNsaWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CiAgICAg
flByZXJlbmRlckhhbmRsZSgpOwogCiAgICAgUHJlcmVuZGVyKiBwcmVyZW5kZXIoKTsKIAotICAg
IC8vIEZJWE1FOiBvbmUgZGF5IHRoZXJlIHdpbGwgYmUgZXZlbnRzIGhlcmUsIGFuZCB3ZSB3aWxs
IGJlIGEgUHJlcmVuZGVyQ2xpZW50LgorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KCk7CiAKICAgICAv
LyBBIHByZXJlbmRlciBsaW5rIGVsZW1lbnQgaXMgYWRkZWQgd2hlbiBpdCBpcyBpbnNlcnRlZCBp
bnRvIGEgZG9jdW1lbnQuCiAgICAgdm9pZCBhZGQoKTsKQEAgLTc1LDcgKzc2LDggQEAgcHVibGlj
OgogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgUHJlcmVuZGVySGFuZGxlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBSZWZlcnJlclBvbGljeSk7CisgICAgUHJlcmVuZGVySGFuZGxlKFByZXJlbmRlckNsaWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisK
ICAgICBSZWZQdHI8UHJlcmVuZGVyPiBtX3ByZXJlbmRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwCmluZGV4IDQzMWE3YWI1OGVkZmJm
NzA2MTMwZDJmYjkzMjJmNWU3MTI2YjVjODEuLmQ4Mjc4NjdiNjVhNzIxZGI4YzJiNjdiMTM0MTlk
OWZjNDAxNWQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1ByZXJlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJl
cmVuZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJlcmVuZGVyLmgiCisjaW5jbHVkZSAiUHJlcmVuZGVyQ2xpZW50LmgiCiAKICNpbmNs
dWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUHJlcmVuZGVyLmg+
CkBAIC00Myw4ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUHJlcmVuZGVyOjpQ
cmVyZW5kZXIoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJl
clBvbGljeSBwb2xpY3kpCi0gICAgOiBtX3VybCh1cmwpCitQcmVyZW5kZXI6OlByZXJlbmRlcihQ
cmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisg
ICAgLCBtX3VybCh1cmwpCiAgICAgLCBtX3JlZmVycmVyKHJlZmVycmVyKQogICAgICwgbV9yZWZl
cnJlclBvbGljeShwb2xpY3kpCiB7CkBAIC01NCwxMyArNTYsMTcgQEAgUHJlcmVuZGVyOjp+UHJl
cmVuZGVyKCkKIHsKIH0KIAordm9pZCBQcmVyZW5kZXI6OnJlbW92ZUNsaWVudCgpCit7CisgICAg
bV9jbGllbnQgPSAwOworfQorCiB2b2lkIFByZXJlbmRlcjo6YWRkKCkKIHsKICAgICBXZWJLaXQ6
OldlYlByZXJlbmRlcmluZ1N1cHBvcnQqIHBsYXRmb3JtID0gV2ViS2l0OjpXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0OjpjdXJyZW50KCk7CiAgICAgaWYgKCFwbGF0Zm9ybSkKICAgICAgICAgcmV0dXJu
OwotICAgIFdlYktpdDo6V2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlcih0aGlzKTsKLSAgICBwbGF0
Zm9ybS0+YWRkKHdlYlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmFkZChXZWJLaXQ6OldlYlBy
ZXJlbmRlcih0aGlzKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVyOjpjYW5jZWwoKQpAQCAtNjgsOCAr
NzQsNyBAQCB2b2lkIFByZXJlbmRlcjo6Y2FuY2VsKCkKICAgICBXZWJLaXQ6OldlYlByZXJlbmRl
cmluZ1N1cHBvcnQqIHBsYXRmb3JtID0gV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0Ojpj
dXJyZW50KCk7CiAgICAgaWYgKCFwbGF0Zm9ybSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYktp
dDo6V2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlcih0aGlzKTsKLSAgICBwbGF0Zm9ybS0+Y2FuY2Vs
KHdlYlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmNhbmNlbChXZWJLaXQ6OldlYlByZXJlbmRl
cih0aGlzKSk7CiB9CiAKIHZvaWQgUHJlcmVuZGVyOjphYmFuZG9uKCkKQEAgLTc3LDggKzgyLDcg
QEAgdm9pZCBQcmVyZW5kZXI6OmFiYW5kb24oKQogICAgIFdlYktpdDo6V2ViUHJlcmVuZGVyaW5n
U3VwcG9ydCogcGxhdGZvcm0gPSBXZWJLaXQ6OldlYlByZXJlbmRlcmluZ1N1cHBvcnQ6OmN1cnJl
bnQoKTsKICAgICBpZiAoIXBsYXRmb3JtKQogICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0OjpX
ZWJQcmVyZW5kZXIgd2ViUHJlcmVuZGVyKHRoaXMpOwotICAgIHBsYXRmb3JtLT5hYmFuZG9uKHdl
YlByZXJlbmRlcik7CisgICAgcGxhdGZvcm0tPmFiYW5kb24oV2ViS2l0OjpXZWJQcmVyZW5kZXIo
dGhpcykpOwogfQogCiB2b2lkIFByZXJlbmRlcjo6c3VzcGVuZCgpCkBAIC05MSw2ICs5NSwzMCBA
QCB2b2lkIFByZXJlbmRlcjo6cmVzdW1lKCkKICAgICBhZGQoKTsKIH0KIAordm9pZCBQcmVyZW5k
ZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5kaWRTdGFydFByZXJlbmRlcigpOworfQorCit2b2lkIFByZXJlbmRlcjo6ZGlkU3Rv
cFByZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlk
U3RvcFByZXJlbmRlcigpOworfQorCit2b2lkIFByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQcmVy
ZW5kZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFNlbmRM
b2FkRm9yUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgUHJlcmVuZGVyOjpkaWRTZW5kRE9NQ29udGVu
dExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JQcmVyZW5kZXIoKTsKK30KKwogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKExJTktfUFJFUkVOREVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QcmVyZW5kZXIuaAppbmRleCBjZTRjY2M3ZmE2NjNhMjE0OGVmNTExMjQ0YzEz
ODczOTUxZDNiMDA4Li4wODhiYmY5YzM3NWJmZjQyZWU1NWRiZWE5OTY1NTNiNzJjZDUyNDc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuaApAQCAtNDQs
OCArNDQsMTQgQEAKIAogI2lmIEVOQUJMRShMSU5LX1BSRVJFTkRFUikKIAorbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJQcmVyZW5kZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgUHJlcmVuZGVyQ2xpZW50OworCiBjbGFzcyBQcmVyZW5kZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxQcmVyZW5kZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVyZW5kZXIpOwog
cHVibGljOgpAQCAtNTQsOSArNjAsMTEgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5FeHRy
YURhdGEoKSB7IH0KICAgICB9OwogCi0gICAgUHJlcmVuZGVyKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSk7CisgICAgUHJlcmVuZGVyKFByZXJlbmRl
ckNsaWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBv
bGljeSk7CiAgICAgflByZXJlbmRlcigpOwogCisgICAgdm9pZCByZW1vdmVDbGllbnQoKTsKKwog
ICAgIHZvaWQgYWRkKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKICAgICB2b2lkIGFiYW5kb24oKTsK
QEAgLTY5LDggKzc3LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RXh0cmFEYXRhKFBhc3NS
ZWZQdHI8RXh0cmFEYXRhPiBleHRyYURhdGEpIHsgbV9leHRyYURhdGEgPSBleHRyYURhdGE7IH0K
ICAgICBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIHsgcmV0dXJuIG1fZXh0cmFEYXRhLmdldCgpOyB9
CisgICAgCisgICAgdm9pZCBkaWRTdGFydFByZXJlbmRlcigpOworICAgIHZvaWQgZGlkU3RvcFBy
ZXJlbmRlcigpOworICAgIHZvaWQgZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKKyAgICB2b2lk
IGRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7CiAKIHByaXZhdGU6CisgICAg
UHJlcmVuZGVyQ2xpZW50KiBtX2NsaWVudDsKKwogICAgIGNvbnN0IEtVUkwgbV91cmw7CiAgICAg
Y29uc3QgU3RyaW5nIG1fcmVmZXJyZXI7CiAgICAgY29uc3QgUmVmZXJyZXJQb2xpY3kgbV9yZWZl
cnJlclBvbGljeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1ByZXJlbmRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
cmVyZW5kZXJIYW5kbGUuY3BwCmluZGV4IDk3Y2VjNzk3OWNkNzUzZmE0ZDAyZDgyN2Q3MTEzM2Uz
NTk4OGFlZTYuLmVmODM2ZDI1NjE1YTA5NzU1NjRkMjVkZGQ5Mjk4YzQ0MzM1OTk1ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxl
LmNwcApAQCAtNDIsMTggKzQyLDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlckhhbmRsZTo6Y3JlYXRlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQorUGFz
c1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlckhhbmRsZTo6Y3JlYXRlKFByZXJlbmRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IFJlZmVycmVyUG9saWN5IHBvbGljeSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByZXJl
bmRlckhhbmRsZSh1cmwsIHJlZmVycmVyLCBwb2xpY3kpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFByZXJlbmRlckhhbmRsZShjbGllbnQsIHVybCwgcmVmZXJyZXIsIHBvbGljeSkpOwogfQog
Ci1QcmVyZW5kZXJIYW5kbGU6OlByZXJlbmRlckhhbmRsZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIFJlZmVycmVyUG9saWN5IHBvbGljeSkKLSAgICA6IG1fcHJlcmVu
ZGVyKGFkb3B0UmVmKG5ldyBQcmVyZW5kZXIodXJsLCByZWZlcnJlciwgcG9saWN5KSkpCitQcmVy
ZW5kZXJIYW5kbGU6OlByZXJlbmRlckhhbmRsZShQcmVyZW5kZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGljeSBwb2xp
Y3kpCisgICAgOiBtX3ByZXJlbmRlcihhZG9wdFJlZihuZXcgUHJlcmVuZGVyKGNsaWVudCwgdXJs
LCByZWZlcnJlciwgcG9saWN5KSkpCiB7CiB9CiAKIFByZXJlbmRlckhhbmRsZTo6flByZXJlbmRl
ckhhbmRsZSgpCiB7CisgICAgbV9wcmVyZW5kZXItPnJlbW92ZUNsaWVudCgpOwogfQogCiBQcmVy
ZW5kZXIqIFByZXJlbmRlckhhbmRsZTo6cHJlcmVuZGVyKCkKQEAgLTYxLDYgKzYyLDExIEBAIFBy
ZXJlbmRlciogUHJlcmVuZGVySGFuZGxlOjpwcmVyZW5kZXIoKQogICAgIHJldHVybiBtX3ByZXJl
bmRlci5nZXQoKTsKIH0KIAordm9pZCBQcmVyZW5kZXJIYW5kbGU6OnJlbW92ZUNsaWVudCgpCit7
CisgICAgcHJlcmVuZGVyKCktPnJlbW92ZUNsaWVudCgpOworfQorCiB2b2lkIFByZXJlbmRlckhh
bmRsZTo6YWRkKCkKIHsKICAgICBwcmVyZW5kZXIoKS0+YWRkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAK
aW5kZXggODMyN2ZiZDcwNmZjNDMwN2ZiY2EyZmZlMGY5ZmFiODg0NGEwNjNjMC4uZTUxOTg4NzE0
MTljM2NhMjYyNTU4YTJiNmM4OTU5YzQ5OTVhYzFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViUHJlcmVuZGVyLmNwcApAQCAt
NjksNiArNjksMjEgQEAgV2ViUHJlcmVuZGVyOjp+V2ViUHJlcmVuZGVyKCkKICAgICBtX3ByaXZh
dGUucmVzZXQoKTsKIH0KIAorY29uc3QgV2ViQ29yZTo6UHJlcmVuZGVyKiBXZWJQcmVyZW5kZXI6
OnRvUHJlcmVuZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQor
Cit2b2lkIFdlYlByZXJlbmRlcjo6YXNzaWduKGNvbnN0IFdlYlByZXJlbmRlciYgb3RoZXIpCit7
CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCitib29sIFdlYlByZXJlbmRl
cjo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworfQor
CiBXZWJVUkwgV2ViUHJlcmVuZGVyOjp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBXZWJVUkwo
bV9wcml2YXRlLT51cmwoKSk7CkBAIC05Nyw2ICsxMTIsMjYgQEAgY29uc3QgV2ViUHJlcmVuZGVy
OjpFeHRyYURhdGEqIFdlYlByZXJlbmRlcjo6ZXh0cmFEYXRhKCkgY29uc3QKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RXh0cmFEYXRhQ29udGFpbmVyKj4od2ViY29yZUV4dHJhRGF0YS5nZXQoKSkt
PmV4dHJhRGF0YSgpOwogfQogCit2b2lkIFdlYlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVyZW5kZXIo
KQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RhcnRQcmVyZW5kZXIoKTsKK30KKwordm9pZCBXZWJQ
cmVyZW5kZXI6OmRpZFN0b3BQcmVyZW5kZXIoKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU3RvcFBy
ZXJlbmRlcigpOworfQorCit2b2lkIFdlYlByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5k
ZXIoKQoreworICAgIG1fcHJpdmF0ZS0+ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKK30KKwor
dm9pZCBXZWJQcmVyZW5kZXI6OmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCkK
K3sKKyAgICBtX3ByaXZhdGUtPmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFRChMSU5LX1BS
RVJFTkRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBjYjE1M2VhYjBiOGYwYmU3
YmM1NzdlZGQ2YzU3OGE0NGJkMDE1NzE2Li42Nzg1ZDJmMmNlZTBhZDlkN2M5ZWViMDAyNWE2Nzk1
ZGU3Y2I5MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC03MzAsNiArNzMwLDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpc3RlbmVyTGVha1Rl
c3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xpbmtIaWdo
bGlnaHRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9Q
b3B1cE1lbnVUZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9QcmVyZW5kZXJpbmdUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA0ZjNiNjdkOTYyMDUzOWI4
MDVmYWNkNTg4MjA5NzhiZTBjZjY1ZTRjLi4wMzY1ZGEzZGM4MTdkMDAxYmVjOTllN2E4NTI3NDdk
OWM0MmFiN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTk5LDYgKzk5LDcg
QEAKICAgICAgICAgICAgICd0ZXN0cy9QYWludEFnZ3JlZ2F0b3JUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9Qb3B1cENvbnRhaW5lclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9QcmVyZW5k
ZXJpbmdUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVnaW9uVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCmluZGV4IGMzZThiZjA4ZGRiZjZkOWM4MzM5
N2JmYjljMDhhOGYzNjU5NTc2MjcuLjYwYzM1OGQxMTRiYTJmNmE2MzVlODNhMmEzMWZjNjhhODNl
YTZjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0
SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RI
ZWxwZXJzLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgV2ViVmlld0NsaWVudCogZGVmYXVs
dFdlYlZpZXdDbGllbnQoKQogICAgIHJldHVybiAmY2xpZW50OwogfQogCi1XZWJWaWV3KiBjcmVh
dGVXZWJWaWV3QW5kTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBib29sIGVuYWJsZUphdmFz
Y3JpcHQsIFdlYkZyYW1lQ2xpZW50KiB3ZWJGcmFtZUNsaWVudCwgV2ViVmlld0NsaWVudCogd2Vi
Vmlld0NsaWVudCkKK1dlYlZpZXcqIGNyZWF0ZVdlYlZpZXcoYm9vbCBlbmFibGVKYXZhc2NyaXB0
LCBXZWJGcmFtZUNsaWVudCogd2ViRnJhbWVDbGllbnQsIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdD
bGllbnQpCiB7CiAgICAgaWYgKCF3ZWJGcmFtZUNsaWVudCkKICAgICAgICAgd2ViRnJhbWVDbGll
bnQgPSBkZWZhdWx0V2ViRnJhbWVDbGllbnQoKTsKQEAgLTgzLDYgKzgzLDEzIEBAIFdlYlZpZXcq
IGNyZWF0ZVdlYlZpZXdBbmRMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxl
SmF2YXNjcmlwdCwgV2ViCiAgICAgd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0RGV2aWNlU3VwcG9y
dHNNb3VzZShmYWxzZSk7CiAgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSh3ZWJGcmFt
ZUNsaWVudCk7CiAKKyAgICByZXR1cm4gd2ViVmlldzsKK30KKworV2ViVmlldyogY3JlYXRlV2Vi
Vmlld0FuZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2NyaXB0
LCBXZWJGcmFtZUNsaWVudCogd2ViRnJhbWVDbGllbnQsIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdD
bGllbnQpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXcoZW5hYmxlSmF2
YXNjcmlwdCwgd2ViRnJhbWVDbGllbnQsIHdlYlZpZXdDbGllbnQpOworCiAgICAgbG9hZEZyYW1l
KHdlYlZpZXctPm1haW5GcmFtZSgpLCB1cmwpOwogICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFz
eW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgKaW5kZXggYmZiNTdiNjdjZDI5MDEwZTg2N2NkMmJl
ODVmMTM0ZWZjZWI3ZDk0ZS4uMDYxZWQ5NmZkMGI0ZmYxOTQ3NGNkNGQxMTY4YWU0MTU2NDExM2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxw
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJz
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEZyYW1lVGVzdEhlbHBlcnMgewogCiB2b2lk
IGxvYWRGcmFtZShXZWJGcmFtZSosIGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpOwogCitXZWJWaWV3
KiBjcmVhdGVXZWJWaWV3KGJvb2wgZW5hYmxlSmF2YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNs
aWVudCogPSAwLCBXZWJWaWV3Q2xpZW50KiA9IDApOwogV2ViVmlldyogY3JlYXRlV2ViVmlld0Fu
ZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2NyaXB0ID0gZmFs
c2UsIFdlYkZyYW1lQ2xpZW50KiA9IDAsIFdlYlZpZXdDbGllbnQqID0gMCk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEZyYW1lVGVzdEhlbHBlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMTE5MGMxZDc1OTFkYmVlMTgw
ZGYwNzBmZmRhYWJiYmJlOTU3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1ByZXJlbmRlcmluZ1Rlc3QuY3BwCkBAIC0wLDAgKzEsNDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUg
IlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViQ2FjaGUuaCIKKyNpbmNsdWRlICJXZWJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5o
IgorI2luY2x1ZGUgIldlYk5vZGUuaCIKKyNpbmNsdWRlICJXZWJOb2RlTGlzdC5oIgorI2luY2x1
ZGUgIldlYlByZXJlbmRlcmVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU2NyaXB0U291cmNlLmgi
CisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKworI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUHJlcmVuZGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tVUkw7CisK
K25hbWVzcGFjZSB7CisKK1dlYlVSTCB0b1dlYlVSTChjb25zdCBjaGFyKiB1cmwpCit7CisgICAg
cmV0dXJuIFdlYlVSTCh0b0tVUkwodXJsKSk7Cit9CisKK2NsYXNzIFRlc3RQcmVyZW5kZXJlckNs
aWVudCA6IHB1YmxpYyBXZWJQcmVyZW5kZXJlckNsaWVudCB7CitwdWJsaWM6CisgICAgVGVzdFBy
ZXJlbmRlcmVyQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB+VGVzdFByZXJlbmRlcmVyQ2xpZW50
KCkgeyB9CisKKyAgICB2b2lkIHNldEV4dHJhRGF0YUZvck5leHRQcmVyZW5kZXIoV2ViUHJlcmVu
ZGVyOjpFeHRyYURhdGEqIGV4dHJhRGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9leHRy
YURhdGEpOworICAgICAgICBtX2V4dHJhRGF0YSA9IGFkb3B0UHRyKGV4dHJhRGF0YSk7CisgICAg
fQorCisgICAgV2ViUHJlcmVuZGVyIHJlbGVhc2VXZWJQcmVyZW5kZXIoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3dlYlByZXJlbmRlcnMuZW1wdHkoKSk7CisgICAgICAgIFdlYlByZXJlbmRl
ciByZXR2YWwobV93ZWJQcmVyZW5kZXJzLmZyb250KCkpOworICAgICAgICBtX3dlYlByZXJlbmRl
cnMucG9wX2Zyb250KCk7CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorICAgIAorICAg
IGJvb2wgZW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd2ViUHJlcmVuZGVy
cy5lbXB0eSgpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV93
ZWJQcmVyZW5kZXJzLmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEZyb20gV2Vi
UHJlcmVuZGVyZXJDbGllbnQ6CisgICAgdmlydHVhbCB2b2lkIHdpbGxBZGRQcmVyZW5kZXIoV2Vi
UHJlcmVuZGVyKiBwcmVyZW5kZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBwcmVyZW5kZXIt
PnNldEV4dHJhRGF0YShtX2V4dHJhRGF0YS5sZWFrUHRyKCkpOworCisgICAgICAgIEFTU0VSVCgh
cHJlcmVuZGVyLT5pc051bGwoKSk7CisgICAgICAgIG1fd2ViUHJlcmVuZGVycy5wdXNoX2JhY2so
KnByZXJlbmRlcik7CisgICAgfQorCisgICAgT3duUHRyPFdlYlByZXJlbmRlcjo6RXh0cmFEYXRh
PiBtX2V4dHJhRGF0YTsKKyAgICBzdGQ6Omxpc3Q8V2ViUHJlcmVuZGVyPiBtX3dlYlByZXJlbmRl
cnM7Cit9OworCitjbGFzcyBUZXN0UHJlcmVuZGVyaW5nU3VwcG9ydCA6IHB1YmxpYyBXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICBUZXN0UHJlcmVuZGVyaW5nU3VwcG9ydCgp
CisgICAgeworICAgICAgICBpbml0aWFsaXplKHRoaXMpOworICAgIH0KKworICAgIHZpcnR1YWwg
flRlc3RQcmVyZW5kZXJpbmdTdXBwb3J0KCkKKyAgICB7CisgICAgICAgIHNodXRkb3duKCk7Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX2FkZGVkUHJlcmVuZGVy
cy5jbGVhcigpOworICAgICAgICBtX2NhbmNlbGVkUHJlcmVuZGVycy5jbGVhcigpOworICAgICAg
ICBtX2FiYW5kb25lZFByZXJlbmRlcnMuY2xlYXIoKTsKKyAgICB9CisKKyAgICBzaXplX3QgdG90
YWxDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hZGRlZFByZXJlbmRlcnMu
c2l6ZSgpICsgbV9jYW5jZWxlZFByZXJlbmRlcnMuc2l6ZSgpICsgbV9hYmFuZG9uZWRQcmVyZW5k
ZXJzLnNpemUoKTsKKyAgICB9CisgICAgCisgICAgc2l6ZV90IGFkZENvdW50KGNvbnN0IFdlYlBy
ZXJlbmRlciYgcHJlcmVuZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y291
bnRfaWYobV9hZGRlZFByZXJlbmRlcnMuYmVnaW4oKSwgbV9hZGRlZFByZXJlbmRlcnMuZW5kKCks
IHN0ZDo6YmluZDFzdChXZWJQcmVyZW5kZXJFcXVhbCgpLCBwcmVyZW5kZXIpKTsKKyAgICB9CisK
KyAgICBzaXplX3QgY2FuY2VsQ291bnQoY29uc3QgV2ViUHJlcmVuZGVyJiBwcmVyZW5kZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpjb3VudF9pZihtX2NhbmNlbGVkUHJlcmVu
ZGVycy5iZWdpbigpLCBtX2NhbmNlbGVkUHJlcmVuZGVycy5lbmQoKSwgc3RkOjpiaW5kMXN0KFdl
YlByZXJlbmRlckVxdWFsKCksIHByZXJlbmRlcikpOworICAgIH0KKworICAgIHNpemVfdCBhYmFu
ZG9uQ291bnQoY29uc3QgV2ViUHJlcmVuZGVyJiBwcmVyZW5kZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gc3RkOjpjb3VudF9pZihtX2FiYW5kb25lZFByZXJlbmRlcnMuYmVnaW4oKSwg
bV9hYmFuZG9uZWRQcmVyZW5kZXJzLmVuZCgpLCBzdGQ6OmJpbmQxc3QoV2ViUHJlcmVuZGVyRXF1
YWwoKSwgcHJlcmVuZGVyKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGNsYXNzIFdlYlByZXJl
bmRlckVxdWFsIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPFdlYlByZXJlbmRlciwgV2Vi
UHJlcmVuZGVyLCBib29sPiB7CisgICAgcHVibGljOgorICAgICAgICBib29sIG9wZXJhdG9yKCko
Y29uc3QgV2ViUHJlcmVuZGVyJiBmaXJzdCwgY29uc3QgV2ViUHJlcmVuZGVyJiBzZWNvbmQpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdC50b1ByZXJlbmRlcigpID09
IHNlY29uZC50b1ByZXJlbmRlcigpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIEZyb20g
V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDoKKyAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFdlYlBy
ZXJlbmRlciYgcHJlcmVuZGVyKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgbV9hZGRlZFByZXJl
bmRlcnMucHVzaF9iYWNrKHByZXJlbmRlcik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNh
bmNlbChjb25zdCBXZWJQcmVyZW5kZXImIHByZXJlbmRlcikgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIG1fY2FuY2VsZWRQcmVyZW5kZXJzLnB1c2hfYmFjayhwcmVyZW5kZXIpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBhYmFuZG9uKGNvbnN0IFdlYlByZXJlbmRlciYgcHJlcmVuZGVyKSBP
VkVSUklERQorICAgIHsKKyAgICAgICAgbV9hYmFuZG9uZWRQcmVyZW5kZXJzLnB1c2hfYmFjayhw
cmVyZW5kZXIpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPFdlYlByZXJlbmRlcj4gbV9hZGRl
ZFByZXJlbmRlcnM7CisgICAgc3RkOjp2ZWN0b3I8V2ViUHJlcmVuZGVyPiBtX2NhbmNlbGVkUHJl
cmVuZGVyczsKKyAgICBzdGQ6OnZlY3RvcjxXZWJQcmVyZW5kZXI+IG1fYWJhbmRvbmVkUHJlcmVu
ZGVyczsKK307CisKK2NsYXNzIFByZXJlbmRlcmluZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitwdWJsaWM6CisgICAgUHJlcmVuZGVyaW5nVGVzdCgpIDogbV93ZWJWaWV3KDApCisgICAg
eworICAgIH0KKworICAgIH5QcmVyZW5kZXJpbmdUZXN0KCkKKyAgICB7CisgICAgICAgIHdlYmtp
dF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBpZiAobV93ZWJW
aWV3KQorICAgICAgICAgICAgY2xvc2UoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBpbml0aWFs
aXplKGNvbnN0IGNoYXIqIGJhc2VVUkwsIGNvbnN0IGNoYXIqIGZpbGVOYW1lKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0
ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkwpLCBXZWJT
dHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lKSk7CisgICAgICAgIGNvbnN0IGJvb2wgUnVuSmF2YXNj
cmlwdCA9IHRydWU7CisgICAgICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXcoUnVuSmF2YXNjcmlwdCk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0UHJlcmVuZGVy
ZXJDbGllbnQoJm1fcHJlcmVuZGVyZXJDbGllbnQpOworCisgICAgICAgIEZyYW1lVGVzdEhlbHBl
cnM6OmxvYWRGcmFtZShtX3dlYlZpZXctPm1haW5GcmFtZSgpLCBzdGQ6OnN0cmluZyhiYXNlVVJM
KSArIGZpbGVOYW1lKTsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3Vz
TW9ja2VkUmVxdWVzdHMoKTsKKyAgICB9CisKKyAgICB2b2lkIG5hdmlnYXRlQXdheSgpCisgICAg
eworICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3LT5tYWluRnJh
bWUoKSwgImFib3V0OmJsYW5rIik7CisgICAgICAgIC8vICAgICAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgfQorCisgICAgdm9pZCBjbG9zZSgpCisgICAg
eworICAgICAgICBBU1NFUlQobV93ZWJWaWV3KTsKKworICAgICAgICBtX3dlYlZpZXctPm1haW5G
cmFtZSgpLT5jb2xsZWN0R2FyYmFnZSgpOworCisgICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsK
KyAgICAgICAgbV93ZWJWaWV3ID0gMDsKKworICAgICAgICBXZWJDYWNoZTo6Y2xlYXIoKTsKKyAg
ICB9CisKKyAgICBXZWJFbGVtZW50IGNvbnNvbGUoKQorICAgIHsKKyAgICAgICAgV2ViRWxlbWVu
dCBjb25zb2xlID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50
QnlJZCgiY29uc29sZSIpOworICAgICAgICBBU1NFUlQoY29uc29sZS5ub2RlTmFtZSgpID09ICJV
TCIpOworICAgICAgICByZXR1cm4gY29uc29sZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25z
b2xlTGVuZ3RoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zb2xlKCkuY2hpbGROb2Rlcygp
Lmxlbmd0aCgpIC0gMTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBjb25zb2xlQXQodW5zaWdu
ZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb25zb2xlTGVuZ3RoKCkgPiBpKTsKKworICAg
ICAgICBXZWJOb2RlIGNvbnNvbGVMaXN0SXRlbSA9IGNvbnNvbGUoKS5jaGlsZE5vZGVzKCkuaXRl
bSgxICsgaSk7CisgICAgICAgIEFTU0VSVChjb25zb2xlTGlzdEl0ZW0ubm9kZU5hbWUoKSA9PSAi
TEkiKTsKKyAgICAgICAgQVNTRVJUKGNvbnNvbGVMaXN0SXRlbS5oYXNDaGlsZE5vZGVzKCkpOwor
CisgICAgICAgIFdlYk5vZGUgdGV4dE5vZGUgPSBjb25zb2xlTGlzdEl0ZW0uZmlyc3RDaGlsZCgp
OworICAgICAgICBBU1NFUlQodGV4dE5vZGUubm9kZU5hbWUoKSA9PSAiI3RleHQiKTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiB0ZXh0Tm9kZS5ub2RlVmFsdWUoKS51dGY4KCkuZGF0YSgpOwor
ICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChjb25zdCBjaGFyKiBjb2RlKQorICAgIHsK
KyAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRT
b3VyY2UoV2ViU3RyaW5nOjpmcm9tVVRGOChjb2RlKSkpOworICAgIH0KKworICAgIFRlc3RQcmVy
ZW5kZXJpbmdTdXBwb3J0KiBwcmVyZW5kZXJpbmdTdXBwb3J0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAmbV9wcmVyZW5kZXJpbmdTdXBwb3J0OworICAgIH0KKworICAgIFRlc3RQcmVyZW5kZXJl
ckNsaWVudCogcHJlcmVuZGVyZXJDbGllbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZtX3By
ZXJlbmRlcmVyQ2xpZW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUZXN0UHJlcmVuZGVyaW5n
U3VwcG9ydCBtX3ByZXJlbmRlcmluZ1N1cHBvcnQ7CisgICAgVGVzdFByZXJlbmRlcmVyQ2xpZW50
IG1fcHJlcmVuZGVyZXJDbGllbnQ7CisKKyAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Cit9OworCitU
RVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgU2luZ2xlUHJlcmVuZGVyKQoreworICAgIGluaXRpYWxp
emUoImh0dHA6Ly93d3cuZm9vLmNvbS8iLCAicHJlcmVuZGVyL3NpbmdsZV9wcmVyZW5kZXIuaHRt
bCIpOworCisgICAgV2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50
KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRkFMU0Uod2ViUHJlcmVuZGVy
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRVEodG9XZWJVUkwoImh0dHA6Ly9wcmVyZW5kZXIuY29t
LyIpLCB3ZWJQcmVyZW5kZXIudXJsKCkpOworCisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJp
bmdTdXBwb3J0KCktPmFkZENvdW50KHdlYlByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgxdSwg
cHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworCisgICAgd2ViUHJlcmVuZGVy
LmRpZFN0YXJ0UHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDF1LCBjb25zb2xlTGVuZ3RoKCkp
OworICAgIEVYUEVDVF9FUSgid2Via2l0cHJlcmVuZGVyc3RhcnQiLCBjb25zb2xlQXQoMCkpOwor
CisgICAgd2ViUHJlcmVuZGVyLmRpZFNlbmRET01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7
CisgICAgRVhQRUNUX0VRKDJ1LCBjb25zb2xlTGVuZ3RoKCkpOworICAgIEVYUEVDVF9FUSgid2Vi
a2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCIsIGNvbnNvbGVBdCgxKSk7CisKKyAgICB3ZWJQ
cmVyZW5kZXIuZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRVEoM3UsIGNv
bnNvbGVMZW5ndGgoKSk7CisgICAgRVhQRUNUX0VRKCJ3ZWJraXRwcmVyZW5kZXJsb2FkIiwgY29u
c29sZUF0KDIpKTsKKworICAgIHdlYlByZXJlbmRlci5kaWRTdG9wUHJlcmVuZGVyKCk7CisgICAg
RVhQRUNUX0VRKDR1LCBjb25zb2xlTGVuZ3RoKCkpOworICAgIEVYUEVDVF9FUSgid2Via2l0cHJl
cmVuZGVyc3RvcCIsIGNvbnNvbGVBdCgzKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0
LCBDYW5jZWxQcmVyZW5kZXIpCit7CisgICAgaW5pdGlhbGl6ZSgiaHR0cDovL3d3dy5mb28uY29t
LyIsICJwcmVyZW5kZXIvc2luZ2xlX3ByZXJlbmRlci5odG1sIik7CisKKyAgICBXZWJQcmVyZW5k
ZXIgd2ViUHJlcmVuZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRl
cigpOworICAgIEVYUEVDVF9GQUxTRSh3ZWJQcmVyZW5kZXIuaXNOdWxsKCkpOworCisgICAgRVhQ
RUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KHdlYlByZXJlbmRlcikp
OworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkp
OworCisgICAgZXhlY3V0ZVNjcmlwdCgicmVtb3ZlUHJlcmVuZGVyKCkiKTsKKyAgICAKKyAgICBF
WFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+Y2FuY2VsQ291bnQod2ViUHJlcmVu
ZGVyKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291
bnQoKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBBYmFuZG9uUHJlcmVuZGVyKQor
eworICAgIGluaXRpYWxpemUoImh0dHA6Ly93d3cuZm9vLmNvbS8iLCAicHJlcmVuZGVyL3Npbmds
ZV9wcmVyZW5kZXIuaHRtbCIpOworCisgICAgV2ViUHJlcmVuZGVyIHdlYlByZXJlbmRlciA9IHBy
ZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRkFM
U0Uod2ViUHJlcmVuZGVyLmlzTnVsbCgpKTsKKworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVy
aW5nU3VwcG9ydCgpLT5hZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKKworICAgIG5hdmlnYXRlQXdh
eSgpOworICAgIAorICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hYmFu
ZG9uQ291bnQod2ViUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBwcmVyZW5kZXJpbmdT
dXBwb3J0KCktPnRvdGFsQ291bnQoKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBF
eHRyYURhdGEpCit7CisgICAgY2xhc3MgVGVzdEV4dHJhRGF0YSA6IHB1YmxpYyBXZWJQcmVyZW5k
ZXI6OkV4dHJhRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBUZXN0RXh0cmFE
YXRhKGJvb2wqIGFsaXZlKSA6IG1fYWxpdmUoYWxpdmUpCisgICAgICAgIHsKKyAgICAgICAgICAg
ICphbGl2ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5UZXN0RXh0cmFE
YXRhKCkgeyAqbV9hbGl2ZSA9IGZhbHNlOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29s
KiBtX2FsaXZlOworICAgIH07CisKKyAgICBib29sIGFsaXZlID0gZmFsc2U7CisgICAgeworICAg
ICAgICBwcmVyZW5kZXJlckNsaWVudCgpLT5zZXRFeHRyYURhdGFGb3JOZXh0UHJlcmVuZGVyKG5l
dyBUZXN0RXh0cmFEYXRhKCZhbGl2ZSkpOworICAgICAgICBpbml0aWFsaXplKCJodHRwOi8vd3d3
LmZvby5jb20vIiwgInByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVyLmh0bWwiKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoYWxpdmUpOworCisgICAgICAgIFdlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIg
PSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisKKyAgICAgICAg
ZXhlY3V0ZVNjcmlwdCgicmVtb3ZlUHJlcmVuZGVyKCkiKTsKKyAgICAgICAgY2xvc2UoKTsKKyAg
ICAgICAgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5jbGVhcigpOworICAgIH0KKyAgICBFWFBFQ1Rf
RkFMU0UoYWxpdmUpOworfQorCitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgVHdvUHJlcmVuZGVy
cykKK3sKKyAgICBpbml0aWFsaXplKCJodHRwOi8vd3d3LmZvby5jb20vIiwgInByZXJlbmRlci9t
dWx0aXBsZV9wcmVyZW5kZXJzLmh0bWwiKTsKKyAgICAKKyAgICBXZWJQcmVyZW5kZXIgZmlyc3RQ
cmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGZpcnN0UHJlcmVuZGVyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRVEo
dG9XZWJVUkwoImh0dHA6Ly9maXJzdC1wcmVyZW5kZXIuY29tLyIpLCBmaXJzdFByZXJlbmRlci51
cmwoKSk7CisKKyAgICBXZWJQcmVyZW5kZXIgc2Vjb25kUHJlcmVuZGVyID0gcHJlcmVuZGVyZXJD
bGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworICAgIEVYUEVDVF9GQUxTRShmaXJzdFBy
ZXJlbmRlci5pc051bGwoKSk7CisgICAgRVhQRUNUX0VRKHRvV2ViVVJMKCJodHRwOi8vc2Vjb25k
LXByZXJlbmRlci5jb20vIiksIHNlY29uZFByZXJlbmRlci51cmwoKSk7CisKKyAgICBFWFBFQ1Rf
RVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoZmlyc3RQcmVyZW5kZXIpKTsK
KyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoc2Vjb25k
UHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRv
dGFsQ291bnQoKSk7CisKKyAgICBmaXJzdFByZXJlbmRlci5kaWRTdGFydFByZXJlbmRlcigpOwor
ICAgIEVYUEVDVF9FUSgxdSwgY29uc29sZUxlbmd0aCgpKTsKKyAgICBFWFBFQ1RfRVEoImZpcnN0
X3dlYmtpdHByZXJlbmRlcnN0YXJ0IiwgY29uc29sZUF0KDApKTsKKworICAgIHNlY29uZFByZXJl
bmRlci5kaWRTdGFydFByZXJlbmRlcigpOworICAgIEVYUEVDVF9FUSgydSwgY29uc29sZUxlbmd0
aCgpKTsKKyAgICBFWFBFQ1RfRVEoInNlY29uZF93ZWJraXRwcmVyZW5kZXJzdGFydCIsIGNvbnNv
bGVBdCgxKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBUd29QcmVyZW5kZXJzUmVt
b3ZpbmdGaXJzdFRoZW5OYXZpZ2F0aW5nKQoreworICAgIGluaXRpYWxpemUoImh0dHA6Ly93d3cu
Zm9vLmNvbS8iLCAicHJlcmVuZGVyL211bHRpcGxlX3ByZXJlbmRlcnMuaHRtbCIpOworICAgIAor
ICAgIFdlYlByZXJlbmRlciBmaXJzdFByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJl
bGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBXZWJQcmVyZW5kZXIgc2Vjb25kUHJlcmVuZGVyID0g
cHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworCisgICAgRVhQRUNU
X0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KGZpcnN0UHJlcmVuZGVyKSk7
CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KHNlY29u
ZFByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgydSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50
b3RhbENvdW50KCkpOworCisgICAgZXhlY3V0ZVNjcmlwdCgicmVtb3ZlRmlyc3RQcmVyZW5kZXIo
KSIpOworCisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmNhbmNlbENv
dW50KGZpcnN0UHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDN1LCBwcmVyZW5kZXJpbmdTdXBw
b3J0KCktPnRvdGFsQ291bnQoKSk7CisKKyAgICBuYXZpZ2F0ZUF3YXkoKTsKKworICAgIEVYUEVD
VF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hYmFuZG9uQ291bnQoc2Vjb25kUHJlcmVu
ZGVyKSk7CisKKyAgICAvLyBGSVhNRTogQWZ0ZXIgd2UgZml4IHByZXJlbmRlcnMgc3VjaCB0aGF0
IHRoZXkgZG9uJ3Qgc2VuZCByZWR1bmRhbnQgZXZlbnRzLCBhc3NlcnQgdGhhdCB0b3RhbENvdW50
KCkgPT0gNHUuCit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBUd29QcmVyZW5kZXJzQWRk
aW5nVGhpcmQpCit7CisgICAgaW5pdGlhbGl6ZSgiaHR0cDovL3d3dy5mb28uY29tLyIsICJwcmVy
ZW5kZXIvbXVsdGlwbGVfcHJlcmVuZGVycy5odG1sIik7CisgICAgCisgICAgV2ViUHJlcmVuZGVy
IGZpcnN0UHJlcmVuZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRl
cigpOworICAgIFdlYlByZXJlbmRlciBzZWNvbmRQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVu
dCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRl
cmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoZmlyc3RQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1RfRVEo
MXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWRkQ291bnQoc2Vjb25kUHJlcmVuZGVyKSk7Cisg
ICAgRVhQRUNUX0VRKDJ1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291bnQoKSk7CisK
KyAgICBleGVjdXRlU2NyaXB0KCJhZGRUaGlyZFByZXJlbmRlcigpIik7CisKKyAgICBXZWJQcmVy
ZW5kZXIgdGhpcmRQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJl
cmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENv
dW50KHRoaXJkUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDN1LCBwcmVyZW5kZXJpbmdTdXBw
b3J0KCktPnRvdGFsQ291bnQoKSk7Cit9CisKK1RFU1RfRihQcmVyZW5kZXJpbmdUZXN0LCBTaG9y
dExpdmVkQ2xpZW50KQoreworICAgIGluaXRpYWxpemUoImh0dHA6Ly93d3cuZm9vLmNvbS8iLCAi
cHJlcmVuZGVyL3NpbmdsZV9wcmVyZW5kZXIuaHRtbCIpOworCisgICAgV2ViUHJlcmVuZGVyIHdl
YlByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsK
KyAgICBFWFBFQ1RfRkFMU0Uod2ViUHJlcmVuZGVyLmlzTnVsbCgpKTsKKworICAgIEVYUEVDVF9F
USgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAg
ICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKKwor
ICAgIG5hdmlnYXRlQXdheSgpOworICAgIGNsb3NlKCk7CisKKyAgICAvLyBUaGlzIHRlc3QgcGFz
c2VzIGlmIHRoaXMgbmV4dCBsaW5lIGRvZXNuJ3QgY3Jhc2guCisgICAgd2ViUHJlcmVuZGVyLmRp
ZFN0YXJ0UHJlcmVuZGVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcHJlcmVuZGVyL211bHRpcGxlX3ByZXJlbmRl
cnMuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wcmVyZW5kZXIvbXVs
dGlwbGVfcHJlcmVuZGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYTcwODQ0MDQwMWUwYjNjZjNiYTNm
NThlOTY1ZWM3ODU1N2IzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvcHJlcmVuZGVyL211bHRpcGxlX3ByZXJlbmRlcnMuaHRtbApAQCAtMCww
ICsxLDY5IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgIGZ1bmN0aW9u
IGxvZyhtZXNzYWdlKQorICAgICAgeworICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgfQorCisgICAgPC9zY3JpcHQ+
CisKKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8dWwgaWQ9Y29uc29sZT4KKyAgICA8L3VsPgor
CisgICAgPGxpbmsgaWQ9ImZpcnN0UHJlcmVuZGVyIiByZWw9cHJlcmVuZGVyIGhyZWY9Imh0dHA6
Ly9maXJzdC1wcmVyZW5kZXIuY29tLyIvPgorICAgIDxsaW5rIGlkPSJzZWNvbmRQcmVyZW5kZXIi
IHJlbD1wcmVyZW5kZXIgaHJlZj0iaHR0cDovL3NlY29uZC1wcmVyZW5kZXIuY29tLyIvPgorCisg
ICAgPHAgaWQ9ImVtcHR5UGFyYWdyYXBoIj48L3A+CisKKyAgICA8c2NyaXB0PgorICAgICAgdmFy
IGZpcnN0UHJlcmVuZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0UHJlcmVuZGVy
Jyk7CisgICAgICB2YXIgc2Vjb25kUHJlcmVuZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3NlY29uZFByZXJlbmRlcicpOworCisgICAgICBmdW5jdGlvbiByZW1vdmVGaXJzdFByZXJlbmRl
cigpCisgICAgICB7CisgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmlyc3RQcmVyZW5kZXInKTsKKyAgICAgICAgICBsaW5rLnBhcmVudEVsZW1lbnQucmVtb3Zl
Q2hpbGQobGluayk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlbW92ZVNlY29uZFByZXJl
bmRlcigpCisgICAgICB7CisgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZmlyc3RQcmVyZW5kZXInKTsKKyAgICAgICAgICBsaW5rLnBhcmVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQobGluayk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlbW92ZVRoaXJkUHJl
cmVuZGVyKCkKKyAgICAgIHsKKyAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0aGlyZFByZXJlbmRlcicpOworICAgICAgICAgIGxpbmsucGFyZW50RWxlbWVudC5y
ZW1vdmVDaGlsZChsaW5rKTsKKyAgICAgIH0KKworICAgICAgZmlyc3RQcmVyZW5kZXIuYWRkRXZl
bnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyc3RhcnQnLCBmdW5jdGlvbigpIHsgbG9nKCJmaXJz
dF93ZWJraXRwcmVyZW5kZXJzdGFydCIpOyB9LCBmYWxzZSk7CisgICAgICBmaXJzdFByZXJlbmRl
ci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJzdG9wJywgZnVuY3Rpb24oKSB7IGxv
ZygiZmlyc3Rfd2Via2l0cHJlcmVuZGVyc3RvcCIpOyB9LCBmYWxzZSk7CisgICAgICBmaXJzdFBy
ZXJlbmRlci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJsb2FkJywgZnVuY3Rpb24o
KSB7IGxvZygiZmlyc3Rfd2Via2l0cHJlcmVuZGVybG9hZCIpOyB9LCBmYWxzZSk7CisgICAgICBm
aXJzdFByZXJlbmRlci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJkb21jb250ZW50
bG9hZGVkJywgZnVuY3Rpb24oKSB7IGxvZygiZmlyc3Rfd2Via2l0cHJlcmVuZGVyZG9tY29udGVu
dGxvYWRlZCIpOyB9LCBmYWxzZSk7CisKKyAgICAgIHNlY29uZFByZXJlbmRlci5hZGRFdmVudExp
c3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJzdGFydCcsIGZ1bmN0aW9uKCkgeyBsb2coInNlY29uZF93
ZWJraXRwcmVyZW5kZXJzdGFydCIpOyB9LCBmYWxzZSk7CisgICAgICBzZWNvbmRQcmVyZW5kZXIu
YWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyc3RvcCcsIGZ1bmN0aW9uKCkgeyBsb2co
InNlY29uZF93ZWJraXRwcmVyZW5kZXJzdG9wIik7IH0sIGZhbHNlKTsKKyAgICAgIHNlY29uZFBy
ZXJlbmRlci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJsb2FkJywgZnVuY3Rpb24o
KSB7IGxvZygic2Vjb25kX3dlYmtpdHByZXJlbmRlcmxvYWQiKTsgfSwgZmFsc2UpOworICAgICAg
c2Vjb25kUHJlcmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHByZXJlbmRlcmRvbWNvbnRl
bnRsb2FkZWQnLCBmdW5jdGlvbigpIHsgbG9nKCJzZWNvbmRfd2Via2l0cHJlcmVuZGVyZG9tY29u
dGVudGxvYWRlZCIpOyB9LCBmYWxzZSk7CisKKyAgICAgIGZ1bmN0aW9uIGFkZFRoaXJkUHJlcmVu
ZGVyKCkKKyAgICAgIHsKKyAgICAgICAgICB2YXIgZW1wdHlQYXJhZ3JhcGggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZW1wdHlQYXJhZ3JhcGgiKTsKKyAgICAgICAgICBlbXB0eVBhcmFncmFw
aC5pbm5lckhUTUwgPSAnPGxpbmsgaWQ9InRoaXJkUHJlcmVuZGVyIiByZWw9cHJlcmVuZGVyIGhy
ZWY9Imh0dHA6Ly90aGlyZC1wcmVyZXJlbmRlci5jb20vIi8+JzsKKyAgICAgICAgICB2YXIgdGhp
cmRQcmVyZW5kZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpcmRQcmVyZW5kZXInKTsK
KworICAgICAgICAgIHRoaXJkUHJlcmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHByZXJl
bmRlcnN0YXJ0JywgZnVuY3Rpb24oKSB7IGxvZygidGhpcmRfd2Via2l0cHJlcmVuZGVyc3RhcnQi
KTsgfSwgZmFsc2UpOworICAgICAgICAgIHRoaXJkUHJlcmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIo
J3dlYmtpdHByZXJlbmRlcnN0b3AnLCBmdW5jdGlvbigpIHsgbG9nKCJ0aGlyZF93ZWJraXRwcmVy
ZW5kZXJzdG9wIik7IH0sIGZhbHNlKTsKKyAgICAgICAgICB0aGlyZFByZXJlbmRlci5hZGRFdmVu
dExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJsb2FkJywgZnVuY3Rpb24oKSB7IGxvZygidGhpcmRf
d2Via2l0cHJlcmVuZGVybG9hZCIpOyB9LCBmYWxzZSk7CisgICAgICAgICAgdGhpcmRQcmVyZW5k
ZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCcsIGZ1
bmN0aW9uKCkgeyBsb2coInRoaXJkX3dlYmtpdHByZXJlbmRlcmRvbWNvbnRlbnRsb2FkZWQiKTsg
fSwgZmFsc2UpOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+CisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wcmVyZW5kZXIv
c2luZ2xlX3ByZXJlbmRlci5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L3ByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTAxMzBmZTRkM2Zl
NmJhNGQ1M2Y5NmQxNDVjZDQzYmFmOTZkZmE5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wcmVyZW5kZXIvc2luZ2xlX3ByZXJlbmRlci5odG1s
CkBAIC0wLDAgKzEsMzYgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAg
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICB7CisgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICB9CisKKyAgICA8
L3NjcmlwdD4KKworICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDx1bCBpZD1jb25zb2xlPgorICAg
IDwvdWw+CisKKyAgICA8bGluayBpZD0idGhlcHJlcmVuZGVyIiByZWw9cHJlcmVuZGVyIGhyZWY9
Imh0dHA6Ly9wcmVyZW5kZXIuY29tLyIvPgorCisgICAgPHNjcmlwdD4KKyAgICAgIHZhciBwcmVy
ZW5kZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlcHJlcmVuZGVyJyk7CisKKyAgICAg
IGZ1bmN0aW9uIHJlbW92ZVByZXJlbmRlcigpCisgICAgICB7CisgICAgICAgICAgdmFyIGxpbmsg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlcHJlcmVuZGVyJyk7CisgICAgICAgICAgbGlu
ay5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgfQorCisgICAgICBwcmVy
ZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyc3RhcnQnLCBmdW5jdGlvbigp
IHsgbG9nKCJ3ZWJraXRwcmVyZW5kZXJzdGFydCIpOyB9LCBmYWxzZSk7CisgICAgICBwcmVyZW5k
ZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyc3RvcCcsIGZ1bmN0aW9uKCkgeyBs
b2coIndlYmtpdHByZXJlbmRlcnN0b3AiKTsgfSwgZmFsc2UpOworICAgICAgcHJlcmVuZGVyLmFk
ZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdHByZXJlbmRlcmxvYWQnLCBmdW5jdGlvbigpIHsgbG9nKCJ3
ZWJraXRwcmVyZW5kZXJsb2FkIik7IH0sIGZhbHNlKTsKKyAgICAgIHByZXJlbmRlci5hZGRFdmVu
dExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJkb21jb250ZW50bG9hZGVkJywgZnVuY3Rpb24oKSB7
IGxvZygid2Via2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCIpOyB9LCBmYWxzZSk7CisgICAg
PC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178358</attachid>
            <date>2012-12-08 09:11:01 -0800</date>
            <delta_ts>2012-12-08 13:07:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96474-20121208120824.patch</filename>
            <type>text/plain</type>
            <size>55308</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4MTRhNjU2N2RhNDVm
YzI1YTYwNWYxY2EwNGQzOWNkMWJmZWUzYTYzLi5mMTcyNWYyOGNhN2NiOTY3NWJhNWY1YzFkYjJm
YTAzN2JmYWFiMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMi0wOCAg
R2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgc3RhdHVz
IGV2ZW50cyBvbiA8bGluayByZWw9cHJlcmVuZGVyPiBlbGVtZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUaGUgbmV3IFByZXJlbmRlclN0YXR1c0V2ZW50
IGlzIHNlbnQgdG8gbGluayBlbGVtZW50cyB3aGVuCisgICAgICAgIHByZXJlbmRlcnMgYXJlIHN0
YXJ0ZWQgYnkgdGhlIGVtYmVkZGVyLCBhbmQgYWxzbyBzZW50IHdoZW4gdGhleQorICAgICAgICBh
cmUgc3RvcHBlZC4gUGFnZXMgdXNpbmcgdGhpcyBmZWF0dXJlIGNhbiBub3cgc2VyaWFsaXplIGxh
dW5jaGluZworICAgICAgICBwcmVyZW5kZXJzLCBhbmQgdHJhY2sgdGltaW5nIHBlcmZvcm1hbmNl
LgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcmVyZW5kZXI6OldlYlByZXJlbmRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByZXJlbmRlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYlByZXJlbmRlcik6CisKIDIwMTIt
MTItMDYgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBJbnRyb2R1Y2Ugc2V0dGluZyBmb3IgbG93IGxhdGVuY3kgcmVuZGVyaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMGUzZTRiOWY4MTE1OTQxM2FkY2RhNDYwZDE2MDVjYjU0MjA3MjM4Ny4uYTRl
OGFiNGJmYmVkN2M0Yzg2MzQ3MDM3M2ZiMmEwZDA2MmNiOWU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDg2IEBACisyMDEyLTEyLTA4ICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEFkZCBzdGF0dXMgZXZlbnRzIG9uIDxsaW5rIHJlbD1wcmVyZW5kZXI+IGVs
ZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoZSBu
ZXcgUHJlcmVuZGVyU3RhdHVzRXZlbnQgaXMgc2VudCB0byBsaW5rIGVsZW1lbnRzIHdoZW4KKyAg
ICAgICAgcHJlcmVuZGVycyBhcmUgc3RhcnRlZCBieSB0aGUgZW1iZWRkZXIsIGFuZCBhbHNvIHNl
bnQgd2hlbiB0aGV5CisgICAgICAgIGFyZSBzdG9wcGVkLiBQYWdlcyB1c2luZyB0aGlzIGZlYXR1
cmUgY2FuIG5vdyBzZXJpYWxpemUgbGF1bmNoaW5nCisgICAgICAgIHByZXJlbmRlcnMsIGFuZCB0
cmFjayB0aW1pbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgVGVzdGVkIGluIGEgbmV3IFdlYktp
dFVuaXRUZXN0IGZvciB0aGUgY2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVz
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6ZGlkU3RhcnRMaW5rUHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxl
bWVudDo6ZGlkU3RvcExpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpkaWRTZW5kTG9hZEZvckxpbmtQcmVyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTExpbmtFbGVtZW50OjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQcmVyZW5kZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgIChIVE1MTGlua0Vs
ZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmtMb2FkZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6ZGlkU3RvcFByZXJlbmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTZW5kTG9hZEZvclByZXJlbmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rTG9hZGVyOjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaW5rTG9hZGVyOjpsb2FkTGluayk6CisgICAgICAgICog
bG9hZGVyL0xpbmtMb2FkZXIuaDoKKyAgICAgICAgKExpbmtMb2FkZXIpOgorICAgICAgICAqIGxv
YWRlci9MaW5rTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChMaW5rTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvUHJlcmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVu
ZGVyZXI6OnJlbmRlcik6CisgICAgICAgICogbG9hZGVyL1ByZXJlbmRlcmVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFByZXJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
cmVyZW5kZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXJDbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUHJlcmVuZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlckNsaWVudDo6flByZXJlbmRlckNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFByZXJlbmRlckhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vUHJlcmVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6UHJlcmVu
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6cmVtb3ZlQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjphZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVu
ZGVyOjphYmFuZG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU3RhcnRQcmVy
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTdG9wUHJlcmVuZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlByZXJlbmRlcjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJlcmVuZGVyOjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclBy
ZXJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQcmVyZW5kZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
cmVyZW5kZXJIYW5kbGU6OlByZXJlbmRlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmVy
ZW5kZXJIYW5kbGU6On5QcmVyZW5kZXJIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJlcmVu
ZGVySGFuZGxlOjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVyZW5kZXI6OnRvUHJlcmVuZGVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJlcmVuZGVyOjppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVyZW5kZXI6OmRpZFN0
YXJ0UHJlcmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTdG9wUHJl
cmVuZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlcmVuZGVyOjpkaWRTZW5kTG9hZEZvclBy
ZXJlbmRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXJlbmRlcjo6ZGlkU2VuZERPTUNvbnRl
bnRMb2FkZWRGb3JQcmVyZW5kZXIpOgorCiAyMDEyLTEyLTA2ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgYWx3YXlzIHRoZSBvcmRlciBp
dGVyYXRvciBmcm9tIGRhdGEgbWVtYmVyIGluIFJlbmRlckZsZXhpYmxlQm94CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGE2MWRhNDNkZWExOTVlYTg2ZDdiMmIwMWM1MDcxMTUzYzdlMDVm
OTIuLjU1YjVlYTNiZmZhNTFiNDM2M2IwYzZmODUwNTY1ZTE3MGU2NGQ5YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTItMDggIEdhdmluIFBldGVy
cyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN0YXR1cyBldmVudHMgb24g
PGxpbmsgcmVsPXByZXJlbmRlcj4gZWxlbWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCisKKyAgICAgICAgVGhlIG5ldyBQcmVyZW5kZXJTdGF0dXNFdmVudCBpcyBzZW50IHRv
IGxpbmsgZWxlbWVudHMgd2hlbgorICAgICAgICBwcmVyZW5kZXJzIGFyZSBzdGFydGVkIGJ5IHRo
ZSBlbWJlZGRlciwgYW5kIGFsc28gc2VudCB3aGVuIHRoZXkKKyAgICAgICAgYXJlIHN0b3BwZWQu
IFBhZ2VzIHVzaW5nIHRoaXMgZmVhdHVyZSBjYW4gbm93IHNlcmlhbGl6ZSBsYXVuY2hpbmcKKyAg
ICAgICAgcHJlcmVuZGVycywgYW5kIHRyYWNrIHRpbWluZyBwZXJmb3JtYW5jZS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMv
RnJhbWVUZXN0SGVscGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoRnJhbWVUZXN0SGVscGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKToKKyAgICAgICAg
KiB0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmg6CisgICAgICAgIChGcmFtZVRlc3RIZWxwZXJzKToK
KyAgICAgICAgKiB0ZXN0cy9QcmVyZW5kZXJpbmdUZXN0LmNwcDogQWRkZWQuCisgICAgICAgICog
dGVzdHMvZGF0YS9wcmVyZW5kZXIvbXVsdGlwbGVfcHJlcmVuZGVycy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9kYXRhL3ByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVyLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTEyLTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIHJvbGwgY3Job21pdW0gdG8gcjE3MTcwNy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCmluZGV4IDVlZDgwNDkw
MGZjNmZhMGI2Y2M4MTg1NDY0N2RjYjY5YTIzMjVhYzUuLjRjMDhhZjA5NzNlNWU1OTAyNjIxNjFh
ZDIyOWVmMjVkMWY4MjBkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUHJlcmVuZGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJQcmVyZW5kZXIuaApAQCAtNTQsMTEgKzU0LDI0IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAgICAgfTsKIAorICAgIFdlYlByZXJlbmRlcigpIHsgfQor
ICAgIFdlYlByZXJlbmRlcihjb25zdCBXZWJQcmVyZW5kZXImIG90aGVyKSB7IGFzc2lnbihvdGhl
cik7IH0KKyAgICBXZWJQcmVyZW5kZXImIG9wZXJhdG9yPShjb25zdCBXZWJQcmVyZW5kZXImIG90
aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIGV4cGxpY2l0IFdlYlBy
ZXJlbmRlcihQYXNzUmVmUHRyPFdlYkNvcmU6OlByZXJlbmRlcj4pOwogICAgIH5XZWJQcmVyZW5k
ZXIoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlByZXJlbmRlciogdG9QcmVyZW5kZXIoKSBjb25z
dDsKICNlbmRpZgogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJQcmVy
ZW5kZXImKTsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisKICAgICBX
RUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0
cmluZyByZWZlcnJlcigpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViUmVmZXJyZXJQb2xp
Y3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKQEAgLTY2LDkgKzc5LDEyIEBAIHB1YmxpYzoKICAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4dHJhRGF0YSopOwogICAgIFdFQktJ
VF9FWFBPUlQgY29uc3QgRXh0cmFEYXRhKiBleHRyYURhdGEoKSBjb25zdDsKIAotcHJpdmF0ZToK
LSAgICBXZWJQcmVyZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU3RhcnRQcmVy
ZW5kZXIoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU3RvcFByZXJlbmRlcigpOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBkaWRTZW5kTG9hZEZvclByZXJlbmRlcigpOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOwogCitw
cml2YXRlOgogICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UHJlcmVuZGVyPiBtX3ByaXZhdGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiNzA0NmNjYzRhZDUxNGY2
NjM3MjE3ZDE0MTY5OGQyNzQ0NTA0YjFiLi45NzhmYzIzMjQwM2QxMjJhZjdjZjQzNzBjNDdkNDAz
OGVmNGU0NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3OTksNiArNTc5
OSw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUG9wdXBNZW51Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVw
TWVudS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmVyZW5kZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1B1cmdlYWJsZUJ1ZmZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZVByaW9y
aXR5LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNWI0Njg3YzQxNDA1YjgyNWY0NTViY2Q5MGU0ZTk0MjEy
ZWE3ODgxMC4uYzBkOWU4MDliMzU4NzJlZjZiN2MxNTA2Nzg0ZWVkM2Q5YmI2MjM2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCkBAIC0yMzMzLDYgKzIzMzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9U
aW1lci5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1T
dHJhdGVnaWVzLmggXAorICAgIHBsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIFwKICAgICBwbGF0
Zm9ybS9QcmVyZW5kZXJIYW5kbGUuaCBcCiAgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5o
IFwKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
NGU3ZDNkYjk5MDM3ZWFjMGNhMmM1NTdmNjg4NTM2YzU3YWM0MjE5MS4uOTY2OTc1ZWI0NTQ3NTQw
NWY4YTM5YTFhMTA2MjQ5NDVjYWM0ODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzQ3Miw2ICsz
NDcyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QcmVy
ZW5kZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1J1bkxvb3BUaW1lci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYWJjMDllYjg2MTYyMDcyNTVhNzg2Mzk3YzVlNWJmNTBm
NDRmY2UzZS4uNWRlMDc1NDEyNjlkNTVlNjNhODY0M2Y1MGFiMDc3OWZkMjQ2NDg3MCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI4NzQyLDYg
KzI4NzQyLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXFByZXJlbmRlckNsaWVudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQcmVyZW5kZXJIYW5kbGUuaCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2U2YjY2ZDVlZjFjNDM5ZTcxMTI3ZWMxMzcwMjdhZTMx
NGFlNTY2NS4uNzA5NWI0OGNkZTk0NGZlYTM2YjU1YWYyZmU2ZjAzZTkzYTFkNTBmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mzc2MCw2ICszNzYwLDcgQEAKIAkJOTg1NkY4RDExNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRl
ckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTg1NkY4RDAxNTQ5RTg0RjAwQjA0RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oICovOyB9OwogCQk5
ODVCQjk2RDEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QjEzQTk0MDU4MDA3
QTBCNjkgLyogTGlua1JlbEF0dHJpYnV0ZS5jcHAgKi87IH07CiAJCTk4NUJCOTZFMTNBOTQwNTgw
MDdBMEI2OSAvKiBMaW5rUmVsQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5ODVCQjk2QzEzQTk0MDU4MDA3QTBCNjkgLyogTGlua1JlbEF0
dHJpYnV0ZS5oICovOyB9OworCQk5ODZFQTg4MzE1RkZGMjkwMDA5ODVFNUUgLyogUHJlcmVuZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
ODZFQTg4MjE1RkZGMjkwMDA5ODVFNUUgLyogUHJlcmVuZGVyQ2xpZW50LmggKi87IH07CiAJCTk4
Q0U0MzI2MTI5RTAwQkQwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk4Q0U0MzI1MTI5RTAwQkQwMDU4MjFEQyAv
KiBMaW5rTG9hZGVyLmNwcCAqLzsgfTsKIAkJOThDRTQzMkExMjlFMDBFNTAwNTgyMURDIC8qIExp
bmtMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi87IH07CiAJCTk4RUIx
Rjk1MTMxM0ZFMDUwMEQwRTFFQSAvKiBOb3RJbXBsZW1lbnRlZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8q
IE5vdEltcGxlbWVudGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTExMDgxLDYgKzExMDgyLDcgQEAKIAkJOTg1NkY4RDAxNTQ5RTg0RjAwQjA0
RjNBIC8qIFByZXJlbmRlckhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcmVyZW5kZXJIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTg1QkI5
NkIxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua1JlbEF0dHJpYnV0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk4NUJCOTZDMTNBOTQwNTgwMDdBMEI2OSAvKiBMaW5rUmVsQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtSZWxBdHRyaWJ1
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTg2RUE4ODIxNUZGRjI5MDAwOTg1
RTVFIC8qIFByZXJlbmRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcmVyZW5kZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQz
MjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTGlua0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5rTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEltcGxlbWVudGVkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTUyNCw3ICsxNTUyNiw2IEBACiAJCQkJNDlFOTEy
QTcwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbkxpc3QuY3BwICovLAogCQkJCTQ5RTkxMkE4
MEVGQUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb25MaXN0LmggKi8sCiAJCQkJMEY1ODBGQUUxNDk4
MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICovLAotCQkJCTk4NTZGOEQwMTU0
OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5kZXJIYW5kbGUuaCAqLywKIAkJCQk0OUU5MTJBOTBFRkFD
OTA2MDA5RDBDQUYgLyogVGltaW5nRnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1lID0gYW5p
bWF0aW9uOwpAQCAtMjExMTgsNiArMjExMTksOCBAQAogCQkJCTA2NjhFMTg5MEFERDk2MjQwMDQx
MjhFMCAvKiBQb3B1cE1lbnUuaCAqLywKIAkJCQlBQkMxMjg3NjBCMzNBQTZEMDBDNjkzRDUgLyog
UG9wdXBNZW51Q2xpZW50LmggKi8sCiAJCQkJQkMzQkUxMkEwRTk4MDkyRjAwODM1NTg4IC8qIFBv
cHVwTWVudVN0eWxlLmggKi8sCisJCQkJOTg2RUE4ODIxNUZGRjI5MDAwOTg1RTVFIC8qIFByZXJl
bmRlckNsaWVudC5oICovLAorCQkJCTk4NTZGOEQwMTU0OUU4NEYwMEIwNEYzQSAvKiBQcmVyZW5k
ZXJIYW5kbGUuaCAqLywKIAkJCQlFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxl
QnVmZmVyLmggKi8sCiAJCQkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3Jp
dHkuaCAqLywKIAkJCQlBNzJFQTNCQTE1ODVDRjU1MDA0RkFBMjYgLyogUmVmQ291bnRlZFN1cHBs
ZW1lbnQuaCAqLywKQEAgLTI1ODk2LDYgKzI1ODk5LDcgQEAKIAkJCQlENjY4MTdGQjE2NkZFNkQ3
MDBGQTA3QjQgLyogSFRNTFRlbXBsYXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDY0
ODlEMjYxNjZGRkNGMTAwN0MwMzFCIC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzFENTkxQkMxNjZDMkU2QzAwRTZCRjAyIC8qIFBsdWdJbk9yaWdpbkhhc2gu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk4NkVBODgzMTVGRkYyOTAwMDk4NUU1RSAvKiBQcmVyZW5k
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggNzIw
ZmI0MTRiY2RmYTY4ZmVhODJlZGU3MDdhYmVlZTQwOGY4OWEwMi4uZGMzZWZiZTc4MzljMWRhMWU1
OWY1MmRlMDYyNTI4ODdiNjYwMzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yNDcs
NiArMjQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhhdXRvY29tcGxldGUp
IFwKICAgICBtYWNybyhhdXRvY29tcGxldGVlcnJvcikgXAogICAgIFwKKyAgICBtYWNybyh3ZWJr
aXRwcmVyZW5kZXJzdGFydCkgXAorICAgIG1hY3JvKHdlYmtpdHByZXJlbmRlcnN0b3ApIFwKKyAg
ICBtYWNybyh3ZWJraXRwcmVyZW5kZXJsb2FkKSBcCisgICAgbWFjcm8od2Via2l0cHJlcmVuZGVy
ZG9tY29udGVudGxvYWRlZCkgXAorICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19G
T1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNDkx
ZDczMGFjYWE1ZjNhYWVlYmNmM2JiODFkMzQxZDkzZWRhYTMwYy4uZjgyZTYwMmNjMDUwMDg4NzU2
MDZjOGVlYTJjMzhlODg3NDBhMzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0zNTcs
NiArMzU4LDI4IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZGluZ0Vycm9yZWQoKQog
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7CiB9CiAKKyNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCit2b2lkIEhU
TUxMaW5rRWxlbWVudDo6ZGlkU3RhcnRMaW5rUHJlcmVuZGVyKCkKK3sKKyAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHByZXJlbmRlcnN0YXJ0RXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU3RvcExpbmtQ
cmVyZW5kZXIoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0cHJlcmVuZGVyc3RvcEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBI
VE1MTGlua0VsZW1lbnQ6OmRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpCit7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwcmVyZW5kZXJsb2Fk
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlkU2Vu
ZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVyKCkKK3sKKyAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHByZXJlbmRlcmRvbWNvbnRlbnRsb2Fk
ZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CisjZW5kaWYKKwogYm9vbCBIVE1MTGlua0VsZW1l
bnQ6OnNoZWV0TG9hZGVkKCkKIHsKICAgICBpZiAoIXN0eWxlU2hlZXRJc0xvYWRpbmcoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMmM3MThjMDhmOTMyNzBkZTU0
M2Q4NzFiNDAzNjZlMTI4YmU0NDlhYy4uMzc2MjRjNDlmOWE0ZmI5NzE3ZDBkNWUxYjMxZTc4MGEz
ZDVhZmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC04OSw4ICs4
OSwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFs
bENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGxpbmtM
b2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRpbmdFcnJvcmVkKCk7CisgICAgdmly
dHVhbCB2b2lkIGxpbmtMb2FkZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbGlua0xv
YWRpbmdFcnJvcmVkKCkgT1ZFUlJJREU7CisjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKSAKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMaW5rUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpZFN0b3BMaW5rUHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvckxpbmtQcmVyZW5kZXIoKSBPVkVSUklERTsK
KyNlbmRpZgogCiAgICAgYm9vbCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJs
ZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3JlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlOyB9CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggZTUwYjM3OWQ5NmJlZGE3MzI5
MjU0NjQyMGVhY2Y5OGJhNTQzZTFiOC4uNGU5NzI3NWUxNDM4MjZhMjAzMjk3OTJmYWY2ODRlMjNj
YjVmYWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtOTAsNiArOTAs
MjYgQEAgdm9pZCBMaW5rTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAgICAgbV9jYWNoZWRMaW5rUmVzb3VyY2UgPSAwOwogfQogCit2b2lkIExpbmtMb2Fk
ZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRMaW5rUHJl
cmVuZGVyKCk7Cit9CisKK3ZvaWQgTGlua0xvYWRlcjo6ZGlkU3RvcFByZXJlbmRlcigpCit7Cisg
ICAgbV9jbGllbnQtPmRpZFN0b3BMaW5rUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgTGlua0xvYWRl
cjo6ZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKQoreworICAgIG1fY2xpZW50LT5kaWRTZW5kTG9h
ZEZvckxpbmtQcmVyZW5kZXIoKTsKK30KKwordm9pZCBMaW5rTG9hZGVyOjpkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9jbGllbnQtPmRpZFNlbmRET01Db250
ZW50TG9hZGVkRm9yTGlua1ByZXJlbmRlcigpOworfQorCiBib29sIExpbmtMb2FkZXI6OmxvYWRM
aW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25z
dCBLVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CkBAIC0xMzUsNyArMTU1LDcgQEAg
Ym9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRy
aWJ1dGUsIGNvbnN0IFN0cmluZyYgdHkKICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAgICAg
aWYgKHJlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZXJlbmRlcikgewogICAgICAgICBBU1NFUlQoIW1f
cHJlcmVuZGVySGFuZGxlKTsKLSAgICAgICAgbV9wcmVyZW5kZXJIYW5kbGUgPSBkb2N1bWVudC0+
cHJlcmVuZGVyZXIoKS0+cmVuZGVyKGhyZWYpOworICAgICAgICBtX3ByZXJlbmRlckhhbmRsZSA9
IGRvY3VtZW50LT5wcmVyZW5kZXJlcigpLT5yZW5kZXIodGhpcywgaHJlZik7CiAgICAgfQogI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBh
MWE2M2YwM2ZlZGU5NmYxNDYyYzc0NjA4MDRlNTMzNWJkNDFiNjMyLi40Yzg1M2RhZjRmMzFhMTc1
YTkxYTgxZjM3ZmZhYmFkZmY2N2NiYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiTGlua0xvYWRlckNsaWVu
dC5oIgorI2luY2x1ZGUgIlByZXJlbmRlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0OCw4IEBAIGNsYXNzIFByZXJlbmRl
ckhhbmRsZTsKICNlbmRpZgogCiAvLyBUaGUgTGlua0xvYWRlciBjYW4gbG9hZCBsaW5rIHJlbCB0
eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNlLCBwcmVmZXRjaCBhbmQgcHJlcmVu
ZGVyLgotY2xhc3MgTGlua0xvYWRlciA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7Citj
bGFzcyBMaW5rTG9hZGVyIDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50LCBwdWJsaWMgUHJl
cmVuZGVyQ2xpZW50IHsKKwogcHVibGljOgogICAgIGV4cGxpY2l0IExpbmtMb2FkZXIoTGlua0xv
YWRlckNsaWVudCopOwogICAgIHZpcnR1YWwgfkxpbmtMb2FkZXIoKTsKQEAgLTU1LDYgKzU3LDE0
IEBAIHB1YmxpYzoKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAgICAgCisjaWYgRU5BQkxF
KExJTktfUFJFUkVOREVSKQorICAgIC8vIGZyb20gUHJlcmVuZGVyQ2xpZW50CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0UHJlcmVuZGVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0b3BQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZExvYWRG
b3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRl
bnRMb2FkZWRGb3JQcmVyZW5kZXIoKSBPVkVSUklERTsKKyNlbmRpZgorCiAgICAgdm9pZCByZWxl
YXNlZCgpOwogICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlckNsaWVudC5oCmluZGV4IDQzNTBl
ZTc4Yzk1YTc2M2Y5Y2M1ZDQ1ZTVhOGUxNjJhOWIxYTUwNjMuLjFlMWRiMmIyOWFhYmMwMzUzYWJh
ZDFiNjBmMWE3MjcwOTYxMTVmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXJD
bGllbnQuaApAQCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsaW5r
TG9hZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsaW5rTG9hZGluZ0Vycm9yZWQoKSA9IDA7
CiAgICAgLy8gVGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uIGZvciBjYW5jZWxsYXRpb24uCisKKyNp
ZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TGlua1By
ZXJlbmRlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExpbmtQcmVyZW5kZXIoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRMb2FkRm9yTGlua1ByZXJlbmRlcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JMaW5rUHJlcmVuZGVy
KCkgPSAwOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJlcmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByZXJlbmRlcmVyLmNw
cAppbmRleCAxNjRmOWU5ODhkMWIxZDdhMGM2ZDA5NTE4MjBiNWYyNjY0NjhmYzA5Li5jMzcwYTZk
MjJmM2M5NGU3ZWJhMzMzZjJlOGI0MzZjNTlhNmJjNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJlcmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cmVyZW5kZXJlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUHJlcmVuZGVyZXI6On5QcmVyZW5kZXJl
cigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5kZXJlcjo6cmVu
ZGVyKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBQcmVyZW5k
ZXJlcjo6cmVuZGVyKFByZXJlbmRlckNsaWVudCogcHJlcmVuZGVyQ2xpZW50LCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgLy8gUHJlcmVuZGVycyBhcmUgdW5saWtlIHJlcXVlc3RzIGluIG1vc3Qg
d2F5cyAoZm9yIGluc3RhbmNlLCB0aGV5IHBhc3MgZG93biBmcmFnbWVudHMsIGFuZCB0aGV5IGRv
bid0IHJldHVybiBkYXRhKSwKICAgICAvLyBidXQgdGhleSBkbyBoYXZlIHJlZmVycmVycy4KQEAg
LTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxQcmVyZW5kZXJIYW5kbGU+IFByZXJlbmRlcmVyOjpy
ZW5kZXIoY29uc3QgS1VSTCYgdXJsKQogCiAgICAgY29uc3QgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIocmVmZXJyZXJQb2xpY3ksIHVybCwg
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CiAKLSAg
ICBSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBwcmVyZW5kZXJIYW5kbGUgPSBQcmVyZW5kZXJIYW5k
bGU6OmNyZWF0ZSh1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSk7CisgICAgUmVmUHRyPFBy
ZXJlbmRlckhhbmRsZT4gcHJlcmVuZGVySGFuZGxlID0gUHJlcmVuZGVySGFuZGxlOjpjcmVhdGUo
cHJlcmVuZGVyQ2xpZW50LCB1cmwsIHJlZmVycmVyLCByZWZlcnJlclBvbGljeSk7CiAKICAgICBp
ZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT53aWxsQWRkUHJlcmVuZGVyKHByZXJlbmRl
ckhhbmRsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJlcmVu
ZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5oCmluZGV4IGQ5ZjAx
Mjg5ZGU4ZTIyMzc0YjBmM2E3YTZiODQ1YmIzZWE4MzYwOWYuLmQ4NWFhYzU1YTc0M2NlODU4OTMx
MDJkMTYxMWQ3OTJkNThiZDFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
cmVyZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QcmVyZW5kZXJlci5oCkBA
IC00Niw2ICs0Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owor
Y2xhc3MgUHJlcmVuZGVyQ2xpZW50OwogY2xhc3MgUHJlcmVuZGVySGFuZGxlOwogY2xhc3MgUHJl
cmVuZGVyZXJDbGllbnQ7CiBjbGFzcyBQYWdlOwpAQCAtNTUsMjMgKzU2LDI0IEBAIGNsYXNzIFBy
ZXJlbmRlcmVyIDogcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UHJlcmVuZGVyZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5k
ZXIoY29uc3QgS1VSTCYpOworICAgIFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiByZW5kZXIo
UHJlcmVuZGVyQ2xpZW50KiwgY29uc3QgS1VSTCYpOwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8
UHJlcmVuZGVyZXI+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIC8vIEZyb20gQWN0
aXZlRE9NT2JqZWN0OgorICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxQcmVyZW5kZXJIYW5kbGU+ID4gSGFuZGxlVmVjdG9yOwogICAgIHR5
cGVkZWYgVmVjdG9yPEtVUkw+IEtVUkxWZWN0b3I7CiAKICAgICBleHBsaWNpdCBQcmVyZW5kZXJl
cihEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJREU7Ci0KICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKTsKICAgICBQcmVyZW5kZXJlckNsaWVudCogY2xpZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJlcmVuZGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4ODJkZTU2ZWFlY2E1
YzU5OTJmNDcwYjE2MjdlODA1OGY1OGUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXJlbmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lmbmRl
ZiBQcmVyZW5kZXJDbGllbnRfaAorI2RlZmluZSBQcmVyZW5kZXJDbGllbnRfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFByZXJlbmRlckNsaWVudCB7CisjaWYgRU5BQkxFKExJTktf
UFJFUkVOREVSKQorcHVibGljOgorICAgIHZpcnR1YWwgflByZXJlbmRlckNsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTdG9wUHJlcmVuZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kTG9h
ZEZvclByZXJlbmRlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERPTUNvbnRlbnRM
b2FkZWRGb3JQcmVyZW5kZXIoKSA9IDA7CisjZW5kaWYKK307CisKK30KKworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXJlbmRlckhhbmRsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxlLmgKaW5kZXggMDRmZGFmY2Y0MGY0
ZWFmZTg0MGIwOGJmOTYwZTcxNDIzZGY3MmE3YS4uZjQ4ZTMyMDdlNTcxYjBjNjkyYjBkY2YzMDNh
NDYyMTk1OGY0NjQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVu
ZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJlcmVuZGVySGFuZGxl
LmgKQEAgLTQ0LDE2ICs0NCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7
CiBjbGFzcyBQcmVyZW5kZXI7CitjbGFzcyBQcmVyZW5kZXJDbGllbnQ7CiAKIGNsYXNzIFByZXJl
bmRlckhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFByZXJlbmRlckhhbmRsZT4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFByZXJlbmRlckhhbmRsZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8UHJlcmVuZGVySGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIFJlZmVycmVyUG9saWN5KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
cmVyZW5kZXJIYW5kbGU+IGNyZWF0ZShQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOwogICAgIH5QcmVyZW5kZXJIYW5k
bGUoKTsKIAogICAgIFByZXJlbmRlciogcHJlcmVuZGVyKCk7CiAKLSAgICAvLyBGSVhNRTogb25l
IGRheSB0aGVyZSB3aWxsIGJlIGV2ZW50cyBoZXJlLCBhbmQgd2Ugd2lsbCBiZSBhIFByZXJlbmRl
ckNsaWVudC4KKyAgICB2b2lkIHJlbW92ZUNsaWVudCgpOwogCiAgICAgLy8gQSBwcmVyZW5kZXIg
bGluayBlbGVtZW50IGlzIGFkZGVkIHdoZW4gaXQgaXMgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50
LgogICAgIHZvaWQgYWRkKCk7CkBAIC03NSw3ICs3Niw4IEBAIHB1YmxpYzoKICAgICBSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFByZXJlbmRl
ckhhbmRsZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xp
Y3kpOworICAgIFByZXJlbmRlckhhbmRsZShQcmVyZW5kZXJDbGllbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOworCiAgICAgUmVmUHRyPFBy
ZXJlbmRlcj4gbV9wcmVyZW5kZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUHJlcmVuZGVyLmNwcAppbmRleCA0MzFhN2FiNThlZGZiZjcwNjEzMGQyZmI5MzIy
ZjVlNzEyNmI1YzgxLi5kODI3ODY3YjY1YTcyMWRiOGMyYjY3YjEzNDE5ZDlmYzQwMTVkMDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlci5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZXJlbmRl
ci5oIgorI2luY2x1ZGUgIlByZXJlbmRlckNsaWVudC5oIgogCiAjaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlByZXJlbmRlci5oPgpAQCAtNDMsOCArNDQs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVByZXJlbmRlcjo6UHJlcmVuZGVyKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5
KQotICAgIDogbV91cmwodXJsKQorUHJlcmVuZGVyOjpQcmVyZW5kZXIoUHJlcmVuZGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJy
ZXJQb2xpY3kgcG9saWN5KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV91cmwodXJs
KQogICAgICwgbV9yZWZlcnJlcihyZWZlcnJlcikKICAgICAsIG1fcmVmZXJyZXJQb2xpY3kocG9s
aWN5KQogewpAQCAtNTQsMTMgKzU2LDE3IEBAIFByZXJlbmRlcjo6flByZXJlbmRlcigpCiB7CiB9
CiAKK3ZvaWQgUHJlcmVuZGVyOjpyZW1vdmVDbGllbnQoKQoreworICAgIG1fY2xpZW50ID0gMDsK
K30KKwogdm9pZCBQcmVyZW5kZXI6OmFkZCgpCiB7CiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0KiBwbGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3Vy
cmVudCgpOwogICAgIGlmICghcGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6
OldlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmFkZCh3ZWJQ
cmVyZW5kZXIpOworICAgIHBsYXRmb3JtLT5hZGQoV2ViS2l0OjpXZWJQcmVyZW5kZXIodGhpcykp
OwogfQogCiB2b2lkIFByZXJlbmRlcjo6Y2FuY2VsKCkKQEAgLTY4LDggKzc0LDcgQEAgdm9pZCBQ
cmVyZW5kZXI6OmNhbmNlbCgpCiAgICAgV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBw
bGF0Zm9ybSA9IFdlYktpdDo6V2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6Y3VycmVudCgpOwogICAg
IGlmICghcGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYlByZXJlbmRl
ciB3ZWJQcmVyZW5kZXIodGhpcyk7Ci0gICAgcGxhdGZvcm0tPmNhbmNlbCh3ZWJQcmVyZW5kZXIp
OworICAgIHBsYXRmb3JtLT5jYW5jZWwoV2ViS2l0OjpXZWJQcmVyZW5kZXIodGhpcykpOwogfQog
CiB2b2lkIFByZXJlbmRlcjo6YWJhbmRvbigpCkBAIC03Nyw4ICs4Miw3IEBAIHZvaWQgUHJlcmVu
ZGVyOjphYmFuZG9uKCkKICAgICBXZWJLaXQ6OldlYlByZXJlbmRlcmluZ1N1cHBvcnQqIHBsYXRm
b3JtID0gV2ViS2l0OjpXZWJQcmVyZW5kZXJpbmdTdXBwb3J0OjpjdXJyZW50KCk7CiAgICAgaWYg
KCFwbGF0Zm9ybSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYktpdDo6V2ViUHJlcmVuZGVyIHdl
YlByZXJlbmRlcih0aGlzKTsKLSAgICBwbGF0Zm9ybS0+YWJhbmRvbih3ZWJQcmVyZW5kZXIpOwor
ICAgIHBsYXRmb3JtLT5hYmFuZG9uKFdlYktpdDo6V2ViUHJlcmVuZGVyKHRoaXMpKTsKIH0KIAog
dm9pZCBQcmVyZW5kZXI6OnN1c3BlbmQoKQpAQCAtOTEsNiArOTUsMzAgQEAgdm9pZCBQcmVyZW5k
ZXI6OnJlc3VtZSgpCiAgICAgYWRkKCk7CiB9CiAKK3ZvaWQgUHJlcmVuZGVyOjpkaWRTdGFydFBy
ZXJlbmRlcigpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkU3Rh
cnRQcmVyZW5kZXIoKTsKK30KKwordm9pZCBQcmVyZW5kZXI6OmRpZFN0b3BQcmVyZW5kZXIoKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFN0b3BQcmVyZW5kZXIo
KTsKK30KKwordm9pZCBQcmVyZW5kZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTZW5kTG9hZEZvclByZXJlbmRl
cigpOworfQorCit2b2lkIFByZXJlbmRlcjo6ZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JQcmVy
ZW5kZXIoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFNlbmRE
T01Db250ZW50TG9hZGVkRm9yUHJlcmVuZGVyKCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShMSU5LX1BSRVJFTkRFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1ByZXJlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJl
cmVuZGVyLmgKaW5kZXggY2U0Y2NjN2ZhNjYzYTIxNDhlZjUxMTI0NGMxMzg3Mzk1MWQzYjAwOC4u
MDg4YmJmOWMzNzViZmY0MmVlNTVkYmVhOTk2NTUzYjcyY2Q1MjQ3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVyLmgKQEAgLTQ0LDggKzQ0LDE0IEBACiAK
ICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViUHJlcmVuZGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFByZXJlbmRl
ckNsaWVudDsKKwogY2xhc3MgUHJlcmVuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UHJlcmVuZGVy
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlcmVuZGVyKTsKIHB1YmxpYzoKQEAgLTU0
LDkgKzYwLDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9CiAg
ICAgfTsKIAotICAgIFByZXJlbmRlcihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgUmVmZXJyZXJQb2xpY3kpOworICAgIFByZXJlbmRlcihQcmVyZW5kZXJDbGllbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kpOwogICAgIH5Q
cmVyZW5kZXIoKTsKIAorICAgIHZvaWQgcmVtb3ZlQ2xpZW50KCk7CisKICAgICB2b2lkIGFkZCgp
OwogICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgdm9pZCBhYmFuZG9uKCk7CkBAIC02OSw4ICs3Nywx
NSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEV4dHJhRGF0YShQYXNzUmVmUHRyPEV4dHJhRGF0
YT4gZXh0cmFEYXRhKSB7IG1fZXh0cmFEYXRhID0gZXh0cmFEYXRhOyB9CiAgICAgRXh0cmFEYXRh
KiBleHRyYURhdGEoKSB7IHJldHVybiBtX2V4dHJhRGF0YS5nZXQoKTsgfQorICAgIAorICAgIHZv
aWQgZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAgICB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsKKyAg
ICB2b2lkIGRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCk7CisgICAgdm9pZCBkaWRTZW5kRE9NQ29u
dGVudExvYWRlZEZvclByZXJlbmRlcigpOwogCiBwcml2YXRlOgorICAgIFByZXJlbmRlckNsaWVu
dCogbV9jbGllbnQ7CisKICAgICBjb25zdCBLVVJMIG1fdXJsOwogICAgIGNvbnN0IFN0cmluZyBt
X3JlZmVycmVyOwogICAgIGNvbnN0IFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUHJlcmVuZGVySGFuZGxl
LmNwcAppbmRleCA5N2NlYzc5NzljZDc1M2ZhNGQwMmQ4MjdkNzExMzNlMzU5ODhhZWU2Li5lZjgz
NmQyNTYxNWEwOTc1NTY0ZDI1ZGRkOTI5OGM0NDMzNTk5NWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QcmVyZW5kZXJIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1ByZXJlbmRlckhhbmRsZS5jcHAKQEAgLTQyLDE4
ICs0MiwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8UHJlcmVuZGVy
SGFuZGxlPiBQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIFJlZmVycmVyUG9saWN5IHBvbGljeSkKK1Bhc3NSZWZQdHI8UHJlcmVu
ZGVySGFuZGxlPiBQcmVyZW5kZXJIYW5kbGU6OmNyZWF0ZShQcmVyZW5kZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZWZlcnJlclBvbGlj
eSBwb2xpY3kpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJIYW5kbGUodXJs
LCByZWZlcnJlciwgcG9saWN5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcmVyZW5kZXJI
YW5kbGUoY2xpZW50LCB1cmwsIHJlZmVycmVyLCBwb2xpY3kpKTsKIH0KIAotUHJlcmVuZGVySGFu
ZGxlOjpQcmVyZW5kZXJIYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBSZWZlcnJlclBvbGljeSBwb2xpY3kpCi0gICAgOiBtX3ByZXJlbmRlcihhZG9wdFJlZihu
ZXcgUHJlcmVuZGVyKHVybCwgcmVmZXJyZXIsIHBvbGljeSkpKQorUHJlcmVuZGVySGFuZGxlOjpQ
cmVyZW5kZXJIYW5kbGUoUHJlcmVuZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVmZXJyZXJQb2xpY3kgcG9saWN5KQorICAgIDogbV9w
cmVyZW5kZXIoYWRvcHRSZWYobmV3IFByZXJlbmRlcihjbGllbnQsIHVybCwgcmVmZXJyZXIsIHBv
bGljeSkpKQogewogfQogCiBQcmVyZW5kZXJIYW5kbGU6On5QcmVyZW5kZXJIYW5kbGUoKQogewor
ICAgIG1fcHJlcmVuZGVyLT5yZW1vdmVDbGllbnQoKTsKIH0KIAogUHJlcmVuZGVyKiBQcmVyZW5k
ZXJIYW5kbGU6OnByZXJlbmRlcigpCkBAIC02MSw2ICs2MiwxMSBAQCBQcmVyZW5kZXIqIFByZXJl
bmRlckhhbmRsZTo6cHJlcmVuZGVyKCkKICAgICByZXR1cm4gbV9wcmVyZW5kZXIuZ2V0KCk7CiB9
CiAKK3ZvaWQgUHJlcmVuZGVySGFuZGxlOjpyZW1vdmVDbGllbnQoKQoreworICAgIHByZXJlbmRl
cigpLT5yZW1vdmVDbGllbnQoKTsKK30KKwogdm9pZCBQcmVyZW5kZXJIYW5kbGU6OmFkZCgpCiB7
CiAgICAgcHJlcmVuZGVyKCktPmFkZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJQcmVyZW5kZXIuY3BwCmluZGV4IDgzMjdmYmQ3
MDZmYzQzMDdmYmNhMmZmZTBmOWZhYjg4NDRhMDYzYzAuLmU1MTk4ODcxNDE5YzNjYTI2MjU1OGEy
YjZjODk1OWM0OTk1YWMxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViUHJlcmVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlByZXJlbmRlci5jcHAKQEAgLTY5LDYgKzY5LDIxIEBA
IFdlYlByZXJlbmRlcjo6fldlYlByZXJlbmRlcigpCiAgICAgbV9wcml2YXRlLnJlc2V0KCk7CiB9
CiAKK2NvbnN0IFdlYkNvcmU6OlByZXJlbmRlciogV2ViUHJlcmVuZGVyOjp0b1ByZXJlbmRlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKwordm9pZCBXZWJQcmVy
ZW5kZXI6OmFzc2lnbihjb25zdCBXZWJQcmVyZW5kZXImIG90aGVyKQoreworICAgIG1fcHJpdmF0
ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKworYm9vbCBXZWJQcmVyZW5kZXI6OmlzTnVsbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsKK30KKwogV2ViVVJMIFdlYlBy
ZXJlbmRlcjo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gV2ViVVJMKG1fcHJpdmF0ZS0+dXJs
KCkpOwpAQCAtOTcsNiArMTEyLDI2IEBAIGNvbnN0IFdlYlByZXJlbmRlcjo6RXh0cmFEYXRhKiBX
ZWJQcmVyZW5kZXI6OmV4dHJhRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4
dHJhRGF0YUNvbnRhaW5lcio+KHdlYmNvcmVFeHRyYURhdGEuZ2V0KCkpLT5leHRyYURhdGEoKTsK
IH0KIAordm9pZCBXZWJQcmVyZW5kZXI6OmRpZFN0YXJ0UHJlcmVuZGVyKCkKK3sKKyAgICBtX3By
aXZhdGUtPmRpZFN0YXJ0UHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVuZGVyOjpkaWRT
dG9wUHJlcmVuZGVyKCkKK3sKKyAgICBtX3ByaXZhdGUtPmRpZFN0b3BQcmVyZW5kZXIoKTsKK30K
Kwordm9pZCBXZWJQcmVyZW5kZXI6OmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCkKK3sKKyAgICBt
X3ByaXZhdGUtPmRpZFNlbmRMb2FkRm9yUHJlcmVuZGVyKCk7Cit9CisKK3ZvaWQgV2ViUHJlcmVu
ZGVyOjpkaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpCit7CisgICAgbV9wcml2
YXRlLT5kaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRUQoTElOS19QUkVSRU5ERVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggY2IxNTNlYWIwYjhmMGJlN2JjNTc3ZWRkNmM1Nzhh
NDRiZDAxNTcxNi4uNjc4NWQyZjJjZWUwYWQ5ZDdjOWVlYjAwMjVhNjc5NWRlN2NiOTMxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNzMwLDYgKzczMCw3IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MaW5rSGlnaGxpZ2h0VGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5j
cHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUHJlcmVuZGVyaW5n
VGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVy
VGFibGVDZWxsVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dHMvUmVuZGVyVGFibGVSb3dUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNGYzYjY3ZDk2MjA1MzliODA1ZmFjZDU4ODIwOTc4
YmUwY2Y2NWU0Yy4uMDM2NWRhM2RjODE3ZDAwMWJlYzk5ZTdhODUyNzQ3ZDljNDJhYjdmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC05OSw2ICs5OSw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvUGFpbnRBZ2dyZWdhdG9yVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1Bs
YXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUG9wdXBDb250
YWluZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvUHJlcmVuZGVyaW5nVGVzdC5jcHAn
LAogICAgICAgICAgICAgJ3Rlc3RzL1JlZ2lvblRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFi
bGVSb3dUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFt
ZVRlc3RIZWxwZXJzLmNwcAppbmRleCBjM2U4YmYwOGRkYmY2ZDljODMzOTdiZmI5YzA4YThmMzY1
OTU3NjI3Li42MGMzNThkMTE0YmEyZjZhNjM1ZTgzYTJhMzFmYzY4YTgzZWE2YzRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgc3RhdGljIFdlYlZpZXdDbGllbnQqIGRlZmF1bHRXZWJWaWV3Q2xpZW50
KCkKICAgICByZXR1cm4gJmNsaWVudDsKIH0KIAotV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZExv
YWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2NyaXB0LCBXZWJGcmFt
ZUNsaWVudCogd2ViRnJhbWVDbGllbnQsIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdDbGllbnQpCitX
ZWJWaWV3KiBjcmVhdGVXZWJWaWV3KGJvb2wgZW5hYmxlSmF2YXNjcmlwdCwgV2ViRnJhbWVDbGll
bnQqIHdlYkZyYW1lQ2xpZW50LCBXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50KQogewogICAg
IGlmICghd2ViRnJhbWVDbGllbnQpCiAgICAgICAgIHdlYkZyYW1lQ2xpZW50ID0gZGVmYXVsdFdl
YkZyYW1lQ2xpZW50KCk7CkBAIC04Myw2ICs4MywxMyBAQCBXZWJWaWV3KiBjcmVhdGVXZWJWaWV3
QW5kTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBib29sIGVuYWJsZUphdmFzY3JpcHQsIFdl
YgogICAgIHdlYlZpZXctPnNldHRpbmdzKCktPnNldERldmljZVN1cHBvcnRzTW91c2UoZmFsc2Up
OwogICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUod2ViRnJhbWVDbGllbnQpOwogCisg
ICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1dlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRMb2FkKGNv
bnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNjcmlwdCwgV2ViRnJhbWVDbGll
bnQqIHdlYkZyYW1lQ2xpZW50LCBXZWJWaWV3Q2xpZW50KiB3ZWJWaWV3Q2xpZW50KQoreworICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3KGVuYWJsZUphdmFzY3JpcHQsIHdlYkZy
YW1lQ2xpZW50LCB3ZWJWaWV3Q2xpZW50KTsKKwogICAgIGxvYWRGcmFtZSh3ZWJWaWV3LT5tYWlu
RnJhbWUoKSwgdXJsKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2Nr
ZWRSZXF1ZXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVU
ZXN0SGVscGVycy5oCmluZGV4IGJmYjU3YjY3Y2QyOTAxMGU4NjdjZDJiZTg1ZjEzNGVmY2ViN2Q5
NGUuLjA2MWVkOTZmZDBiNGZmMTk0NzRjZDRkMTE2OGFlNDE1NjQxMTNiZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBGcmFtZVRlc3RIZWxwZXJzIHsKIAogdm9pZCBsb2FkRnJhbWUoV2Vi
RnJhbWUqLCBjb25zdCBzdGQ6OnN0cmluZyYgdXJsKTsKIAorV2ViVmlldyogY3JlYXRlV2ViVmll
dyhib29sIGVuYWJsZUphdmFzY3JpcHQgPSBmYWxzZSwgV2ViRnJhbWVDbGllbnQqID0gMCwgV2Vi
Vmlld0NsaWVudCogPSAwKTsKIFdlYlZpZXcqIGNyZWF0ZVdlYlZpZXdBbmRMb2FkKGNvbnN0IHN0
ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNjcmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNs
aWVudCogPSAwLCBXZWJWaWV3Q2xpZW50KiA9IDApOwogCiB9IC8vIG5hbWVzcGFjZSBGcmFtZVRl
c3RIZWxwZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1ByZXJl
bmRlcmluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QcmVyZW5kZXJp
bmdUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjExOTBjMWQ3NTkxZGJlZTE4MGRmMDcwZmZkYWFiYmJi
ZTk1N2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
cmVyZW5kZXJpbmdUZXN0LmNwcApAQCAtMCwwICsxLDQ0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVy
cy5oIgorI2luY2x1ZGUgIldlYkNhY2hlLmgiCisjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJX
ZWJOb2RlLmgiCisjaW5jbHVkZSAiV2ViTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJXZWJQcmVyZW5k
ZXJlckNsaWVudC5oIgorI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgorI2luY2x1ZGUgIldl
YlZpZXcuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisKKyNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgorI2luY2x1ZGUgPGxpc3Q+CisjaW5jbHVkZSA8cHVibGljL1dlYlByZXJlbmRlci5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0Lmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOworCituYW1lc3BhY2Ugewor
CitXZWJVUkwgdG9XZWJVUkwoY29uc3QgY2hhciogdXJsKQoreworICAgIHJldHVybiBXZWJVUkwo
dG9LVVJMKHVybCkpOworfQorCitjbGFzcyBUZXN0UHJlcmVuZGVyZXJDbGllbnQgOiBwdWJsaWMg
V2ViUHJlcmVuZGVyZXJDbGllbnQgeworcHVibGljOgorICAgIFRlc3RQcmVyZW5kZXJlckNsaWVu
dCgpIHsgfQorICAgIHZpcnR1YWwgflRlc3RQcmVyZW5kZXJlckNsaWVudCgpIHsgfQorCisgICAg
dm9pZCBzZXRFeHRyYURhdGFGb3JOZXh0UHJlcmVuZGVyKFdlYlByZXJlbmRlcjo6RXh0cmFEYXRh
KiBleHRyYURhdGEpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fZXh0cmFEYXRhKTsKKyAgICAg
ICAgbV9leHRyYURhdGEgPSBhZG9wdFB0cihleHRyYURhdGEpOworICAgIH0KKworICAgIFdlYlBy
ZXJlbmRlciByZWxlYXNlV2ViUHJlcmVuZGVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV93
ZWJQcmVyZW5kZXJzLmVtcHR5KCkpOworICAgICAgICBXZWJQcmVyZW5kZXIgcmV0dmFsKG1fd2Vi
UHJlcmVuZGVycy5mcm9udCgpKTsKKyAgICAgICAgbV93ZWJQcmVyZW5kZXJzLnBvcF9mcm9udCgp
OworICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKyAgICAKKyAgICBib29sIGVtcHR5KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dlYlByZXJlbmRlcnMuZW1wdHkoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fd2ViUHJlcmVuZGVycy5j
bGVhcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBGcm9tIFdlYlByZXJlbmRlcmVyQ2xp
ZW50OgorICAgIHZpcnR1YWwgdm9pZCB3aWxsQWRkUHJlcmVuZGVyKFdlYlByZXJlbmRlciogcHJl
cmVuZGVyKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcHJlcmVuZGVyLT5zZXRFeHRyYURhdGEo
bV9leHRyYURhdGEubGVha1B0cigpKTsKKworICAgICAgICBBU1NFUlQoIXByZXJlbmRlci0+aXNO
dWxsKCkpOworICAgICAgICBtX3dlYlByZXJlbmRlcnMucHVzaF9iYWNrKCpwcmVyZW5kZXIpOwor
ICAgIH0KKworICAgIE93blB0cjxXZWJQcmVyZW5kZXI6OkV4dHJhRGF0YT4gbV9leHRyYURhdGE7
CisgICAgc3RkOjpsaXN0PFdlYlByZXJlbmRlcj4gbV93ZWJQcmVyZW5kZXJzOworfTsKKworY2xh
c3MgVGVzdFByZXJlbmRlcmluZ1N1cHBvcnQgOiBwdWJsaWMgV2ViUHJlcmVuZGVyaW5nU3VwcG9y
dCB7CitwdWJsaWM6CisgICAgVGVzdFByZXJlbmRlcmluZ1N1cHBvcnQoKQorICAgIHsKKyAgICAg
ICAgaW5pdGlhbGl6ZSh0aGlzKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UZXN0UHJlcmVuZGVy
aW5nU3VwcG9ydCgpCisgICAgeworICAgICAgICBzaHV0ZG93bigpOworICAgIH0KKworICAgIHZv
aWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9hZGRlZFByZXJlbmRlcnMuY2xlYXIoKTsKKyAg
ICAgICAgbV9jYW5jZWxlZFByZXJlbmRlcnMuY2xlYXIoKTsKKyAgICAgICAgbV9hYmFuZG9uZWRQ
cmVyZW5kZXJzLmNsZWFyKCk7CisgICAgfQorCisgICAgc2l6ZV90IHRvdGFsQ291bnQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWRkZWRQcmVyZW5kZXJzLnNpemUoKSArIG1fY2Fu
Y2VsZWRQcmVyZW5kZXJzLnNpemUoKSArIG1fYWJhbmRvbmVkUHJlcmVuZGVycy5zaXplKCk7Cisg
ICAgfQorICAgIAorICAgIHNpemVfdCBhZGRDb3VudChjb25zdCBXZWJQcmVyZW5kZXImIHByZXJl
bmRlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OmNvdW50X2lmKG1fYWRkZWRQ
cmVyZW5kZXJzLmJlZ2luKCksIG1fYWRkZWRQcmVyZW5kZXJzLmVuZCgpLCBzdGQ6OmJpbmQxc3Qo
V2ViUHJlcmVuZGVyRXF1YWwoKSwgcHJlcmVuZGVyKSk7CisgICAgfQorCisgICAgc2l6ZV90IGNh
bmNlbENvdW50KGNvbnN0IFdlYlByZXJlbmRlciYgcHJlcmVuZGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6Y291bnRfaWYobV9jYW5jZWxlZFByZXJlbmRlcnMuYmVnaW4oKSwg
bV9jYW5jZWxlZFByZXJlbmRlcnMuZW5kKCksIHN0ZDo6YmluZDFzdChXZWJQcmVyZW5kZXJFcXVh
bCgpLCBwcmVyZW5kZXIpKTsKKyAgICB9CisKKyAgICBzaXplX3QgYWJhbmRvbkNvdW50KGNvbnN0
IFdlYlByZXJlbmRlciYgcHJlcmVuZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6Y291bnRfaWYobV9hYmFuZG9uZWRQcmVyZW5kZXJzLmJlZ2luKCksIG1fYWJhbmRvbmVkUHJl
cmVuZGVycy5lbmQoKSwgc3RkOjpiaW5kMXN0KFdlYlByZXJlbmRlckVxdWFsKCksIHByZXJlbmRl
cikpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBXZWJQcmVyZW5kZXJFcXVhbCA6IHB1
YmxpYyBzdGQ6OmJpbmFyeV9mdW5jdGlvbjxXZWJQcmVyZW5kZXIsIFdlYlByZXJlbmRlciwgYm9v
bD4geworICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFdlYlByZXJl
bmRlciYgZmlyc3QsIGNvbnN0IFdlYlByZXJlbmRlciYgc2Vjb25kKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZmlyc3QudG9QcmVyZW5kZXIoKSA9PSBzZWNvbmQudG9QcmVy
ZW5kZXIoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyBGcm9tIFdlYlByZXJlbmRlcmlu
Z1N1cHBvcnQ6CisgICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBXZWJQcmVyZW5kZXImIHByZXJl
bmRlcikgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fYWRkZWRQcmVyZW5kZXJzLnB1c2hfYmFj
ayhwcmVyZW5kZXIpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoY29uc3QgV2Vi
UHJlcmVuZGVyJiBwcmVyZW5kZXIpIE9WRVJSSURFCisgICAgeworICAgICAgICBtX2NhbmNlbGVk
UHJlcmVuZGVycy5wdXNoX2JhY2socHJlcmVuZGVyKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYWJhbmRvbihjb25zdCBXZWJQcmVyZW5kZXImIHByZXJlbmRlcikgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIG1fYWJhbmRvbmVkUHJlcmVuZGVycy5wdXNoX2JhY2socHJlcmVuZGVyKTsKKyAg
ICB9CisKKyAgICBzdGQ6OnZlY3RvcjxXZWJQcmVyZW5kZXI+IG1fYWRkZWRQcmVyZW5kZXJzOwor
ICAgIHN0ZDo6dmVjdG9yPFdlYlByZXJlbmRlcj4gbV9jYW5jZWxlZFByZXJlbmRlcnM7CisgICAg
c3RkOjp2ZWN0b3I8V2ViUHJlcmVuZGVyPiBtX2FiYW5kb25lZFByZXJlbmRlcnM7Cit9OworCitj
bGFzcyBQcmVyZW5kZXJpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgor
ICAgIFByZXJlbmRlcmluZ1Rlc3QoKSA6IG1fd2ViVmlldygwKQorICAgIHsKKyAgICB9CisKKyAg
ICB+UHJlcmVuZGVyaW5nVGVzdCgpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICAgICAgaWYgKG1fd2ViVmlldykKKyAgICAgICAg
ICAgIGNsb3NlKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBjaGFy
KiBiYXNlVVJMLCBjb25zdCBjaGFyKiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
bV93ZWJWaWV3KTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJv
bUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSwgV2ViU3RyaW5nOjpmcm9tVVRG
OChmaWxlTmFtZSkpOworICAgICAgICBjb25zdCBib29sIFJ1bkphdmFzY3JpcHQgPSB0cnVlOwor
ICAgICAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3KFJ1bkph
dmFzY3JpcHQpOworICAgICAgICBtX3dlYlZpZXctPnNldFByZXJlbmRlcmVyQ2xpZW50KCZtX3By
ZXJlbmRlcmVyQ2xpZW50KTsKKworICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUo
bV93ZWJWaWV3LT5tYWluRnJhbWUoKSwgc3RkOjpzdHJpbmcoYmFzZVVSTCkgKyBmaWxlTmFtZSk7
CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3Rz
KCk7CisgICAgfQorCisgICAgdm9pZCBuYXZpZ2F0ZUF3YXkoKQorICAgIHsKKyAgICAgICAgRnJh
bWVUZXN0SGVscGVyczo6bG9hZEZyYW1lKG1fd2ViVmlldy0+bWFpbkZyYW1lKCksICJhYm91dDpi
bGFuayIpOworICAgICAgICAvLyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdN
ZXNzYWdlcygpOworICAgIH0KKworICAgIHZvaWQgY2xvc2UoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fd2ViVmlldyk7CisKKyAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29sbGVj
dEdhcmJhZ2UoKTsKKworICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgICAgIG1fd2Vi
VmlldyA9IDA7CisKKyAgICAgICAgV2ViQ2FjaGU6OmNsZWFyKCk7CisgICAgfQorCisgICAgV2Vi
RWxlbWVudCBjb25zb2xlKCkKKyAgICB7CisgICAgICAgIFdlYkVsZW1lbnQgY29uc29sZSA9IG1f
d2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUi
KTsKKyAgICAgICAgQVNTRVJUKGNvbnNvbGUubm9kZU5hbWUoKSA9PSAiVUwiKTsKKyAgICAgICAg
cmV0dXJuIGNvbnNvbGU7CisgICAgfQorCisgICAgdW5zaWduZWQgY29uc29sZUxlbmd0aCgpCisg
ICAgeworICAgICAgICByZXR1cm4gY29uc29sZSgpLmNoaWxkTm9kZXMoKS5sZW5ndGgoKSAtIDE7
CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgY29uc29sZUF0KHVuc2lnbmVkIGkpCisgICAgewor
ICAgICAgICBBU1NFUlQoY29uc29sZUxlbmd0aCgpID4gaSk7CisKKyAgICAgICAgV2ViTm9kZSBj
b25zb2xlTGlzdEl0ZW0gPSBjb25zb2xlKCkuY2hpbGROb2RlcygpLml0ZW0oMSArIGkpOworICAg
ICAgICBBU1NFUlQoY29uc29sZUxpc3RJdGVtLm5vZGVOYW1lKCkgPT0gIkxJIik7CisgICAgICAg
IEFTU0VSVChjb25zb2xlTGlzdEl0ZW0uaGFzQ2hpbGROb2RlcygpKTsKKworICAgICAgICBXZWJO
b2RlIHRleHROb2RlID0gY29uc29sZUxpc3RJdGVtLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgQVNT
RVJUKHRleHROb2RlLm5vZGVOYW1lKCkgPT0gIiN0ZXh0Iik7CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gdGV4dE5vZGUubm9kZVZhbHVlKCkudXRmOCgpLmRhdGEoKTsKKyAgICB9CisKKyAgICB2
b2lkIGV4ZWN1dGVTY3JpcHQoY29uc3QgY2hhciogY29kZSkKKyAgICB7CisgICAgICAgIG1fd2Vi
Vmlldy0+bWFpbkZyYW1lKCktPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKFdlYlN0cmlu
Zzo6ZnJvbVVURjgoY29kZSkpKTsKKyAgICB9CisKKyAgICBUZXN0UHJlcmVuZGVyaW5nU3VwcG9y
dCogcHJlcmVuZGVyaW5nU3VwcG9ydCgpCisgICAgeworICAgICAgICByZXR1cm4gJm1fcHJlcmVu
ZGVyaW5nU3VwcG9ydDsKKyAgICB9CisKKyAgICBUZXN0UHJlcmVuZGVyZXJDbGllbnQqIHByZXJl
bmRlcmVyQ2xpZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiAmbV9wcmVyZW5kZXJlckNsaWVu
dDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVzdFByZXJlbmRlcmluZ1N1cHBvcnQgbV9wcmVy
ZW5kZXJpbmdTdXBwb3J0OworICAgIFRlc3RQcmVyZW5kZXJlckNsaWVudCBtX3ByZXJlbmRlcmVy
Q2xpZW50OworCisgICAgV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworVEVTVF9GKFByZXJlbmRl
cmluZ1Rlc3QsIFNpbmdsZVByZXJlbmRlcikKK3sKKyAgICBpbml0aWFsaXplKCJodHRwOi8vd3d3
LmZvby5jb20vIiwgInByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVyLmh0bWwiKTsKKworICAgIFdl
YlByZXJlbmRlciB3ZWJQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2Vi
UHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0ZBTFNFKHdlYlByZXJlbmRlci5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX0VRKHRvV2ViVVJMKCJodHRwOi8vcHJlcmVuZGVyLmNvbS8iKSwgd2ViUHJlcmVu
ZGVyLnVybCgpKTsKKworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5h
ZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1
cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKKworICAgIHdlYlByZXJlbmRlci5kaWRTdGFydFByZXJl
bmRlcigpOworICAgIEVYUEVDVF9FUSgxdSwgY29uc29sZUxlbmd0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoIndlYmtpdHByZXJlbmRlcnN0YXJ0IiwgY29uc29sZUF0KDApKTsKKworICAgIHdlYlByZXJl
bmRlci5kaWRTZW5kRE9NQ29udGVudExvYWRlZEZvclByZXJlbmRlcigpOworICAgIEVYUEVDVF9F
USgydSwgY29uc29sZUxlbmd0aCgpKTsKKyAgICBFWFBFQ1RfRVEoIndlYmtpdHByZXJlbmRlcmRv
bWNvbnRlbnRsb2FkZWQiLCBjb25zb2xlQXQoMSkpOworCisgICAgd2ViUHJlcmVuZGVyLmRpZFNl
bmRMb2FkRm9yUHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0VRKDN1LCBjb25zb2xlTGVuZ3RoKCkp
OworICAgIEVYUEVDVF9FUSgid2Via2l0cHJlcmVuZGVybG9hZCIsIGNvbnNvbGVBdCgyKSk7CisK
KyAgICB3ZWJQcmVyZW5kZXIuZGlkU3RvcFByZXJlbmRlcigpOworICAgIEVYUEVDVF9FUSg0dSwg
Y29uc29sZUxlbmd0aCgpKTsKKyAgICBFWFBFQ1RfRVEoIndlYmtpdHByZXJlbmRlcnN0b3AiLCBj
b25zb2xlQXQoMykpOworfQorCitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgQ2FuY2VsUHJlcmVu
ZGVyKQoreworICAgIGluaXRpYWxpemUoImh0dHA6Ly93d3cuZm9vLmNvbS8iLCAicHJlcmVuZGVy
L3NpbmdsZV9wcmVyZW5kZXIuaHRtbCIpOworCisgICAgV2ViUHJlcmVuZGVyIHdlYlByZXJlbmRl
ciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBFWFBF
Q1RfRkFMU0Uod2ViUHJlcmVuZGVyLmlzTnVsbCgpKTsKKworICAgIEVYUEVDVF9FUSgxdSwgcHJl
cmVuZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudCh3ZWJQcmVyZW5kZXIpKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsKKworICAgIGV4ZWN1
dGVTY3JpcHQoInJlbW92ZVByZXJlbmRlcigpIik7CisgICAgCisgICAgRVhQRUNUX0VRKDF1LCBw
cmVyZW5kZXJpbmdTdXBwb3J0KCktPmNhbmNlbENvdW50KHdlYlByZXJlbmRlcikpOworICAgIEVY
UEVDVF9FUSgydSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworfQorCitU
RVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgQWJhbmRvblByZXJlbmRlcikKK3sKKyAgICBpbml0aWFs
aXplKCJodHRwOi8vd3d3LmZvby5jb20vIiwgInByZXJlbmRlci9zaW5nbGVfcHJlcmVuZGVyLmh0
bWwiKTsKKworICAgIFdlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVu
dCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0ZBTFNFKHdlYlByZXJlbmRl
ci5pc051bGwoKSk7CisKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+
YWRkQ291bnQod2ViUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdT
dXBwb3J0KCktPnRvdGFsQ291bnQoKSk7CisKKyAgICBuYXZpZ2F0ZUF3YXkoKTsKKyAgICAKKyAg
ICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+YWJhbmRvbkNvdW50KHdlYlBy
ZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgydSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3Rh
bENvdW50KCkpOworfQorCitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgRXh0cmFEYXRhKQorewor
ICAgIGNsYXNzIFRlc3RFeHRyYURhdGEgOiBwdWJsaWMgV2ViUHJlcmVuZGVyOjpFeHRyYURhdGEg
eworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgVGVzdEV4dHJhRGF0YShib29sKiBhbGl2
ZSkgOiBtX2FsaXZlKGFsaXZlKQorICAgICAgICB7CisgICAgICAgICAgICAqYWxpdmUgPSB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VGVzdEV4dHJhRGF0YSgpIHsgKm1fYWxp
dmUgPSBmYWxzZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCogbV9hbGl2ZTsKKyAg
ICB9OworCisgICAgYm9vbCBhbGl2ZSA9IGZhbHNlOworICAgIHsKKyAgICAgICAgcHJlcmVuZGVy
ZXJDbGllbnQoKS0+c2V0RXh0cmFEYXRhRm9yTmV4dFByZXJlbmRlcihuZXcgVGVzdEV4dHJhRGF0
YSgmYWxpdmUpKTsKKyAgICAgICAgaW5pdGlhbGl6ZSgiaHR0cDovL3d3dy5mb28uY29tLyIsICJw
cmVyZW5kZXIvc2luZ2xlX3ByZXJlbmRlci5odG1sIik7CisgICAgICAgIEVYUEVDVF9UUlVFKGFs
aXZlKTsKKworICAgICAgICBXZWJQcmVyZW5kZXIgd2ViUHJlcmVuZGVyID0gcHJlcmVuZGVyZXJD
bGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworCisgICAgICAgIGV4ZWN1dGVTY3JpcHQo
InJlbW92ZVByZXJlbmRlcigpIik7CisgICAgICAgIGNsb3NlKCk7CisgICAgICAgIHByZXJlbmRl
cmluZ1N1cHBvcnQoKS0+Y2xlYXIoKTsKKyAgICB9CisgICAgRVhQRUNUX0ZBTFNFKGFsaXZlKTsK
K30KKworVEVTVF9GKFByZXJlbmRlcmluZ1Rlc3QsIFR3b1ByZXJlbmRlcnMpCit7CisgICAgaW5p
dGlhbGl6ZSgiaHR0cDovL3d3dy5mb28uY29tLyIsICJwcmVyZW5kZXIvbXVsdGlwbGVfcHJlcmVu
ZGVycy5odG1sIik7CisgICAgCisgICAgV2ViUHJlcmVuZGVyIGZpcnN0UHJlcmVuZGVyID0gcHJl
cmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworICAgIEVYUEVDVF9GQUxT
RShmaXJzdFByZXJlbmRlci5pc051bGwoKSk7CisgICAgRVhQRUNUX0VRKHRvV2ViVVJMKCJodHRw
Oi8vZmlyc3QtcHJlcmVuZGVyLmNvbS8iKSwgZmlyc3RQcmVyZW5kZXIudXJsKCkpOworCisgICAg
V2ViUHJlcmVuZGVyIHNlY29uZFByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVh
c2VXZWJQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRkFMU0UoZmlyc3RQcmVyZW5kZXIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9FUSh0b1dlYlVSTCgiaHR0cDovL3NlY29uZC1wcmVyZW5kZXIuY29t
LyIpLCBzZWNvbmRQcmVyZW5kZXIudXJsKCkpOworCisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5k
ZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KGZpcnN0UHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VR
KDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPmFkZENvdW50KHNlY29uZFByZXJlbmRlcikpOwor
ICAgIEVYUEVDVF9FUSgydSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOwor
CisgICAgZmlyc3RQcmVyZW5kZXIuZGlkU3RhcnRQcmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRVEo
MXUsIGNvbnNvbGVMZW5ndGgoKSk7CisgICAgRVhQRUNUX0VRKCJmaXJzdF93ZWJraXRwcmVyZW5k
ZXJzdGFydCIsIGNvbnNvbGVBdCgwKSk7CisKKyAgICBzZWNvbmRQcmVyZW5kZXIuZGlkU3RhcnRQ
cmVyZW5kZXIoKTsKKyAgICBFWFBFQ1RfRVEoMnUsIGNvbnNvbGVMZW5ndGgoKSk7CisgICAgRVhQ
RUNUX0VRKCJzZWNvbmRfd2Via2l0cHJlcmVuZGVyc3RhcnQiLCBjb25zb2xlQXQoMSkpOworfQor
CitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgVHdvUHJlcmVuZGVyc1JlbW92aW5nRmlyc3RUaGVu
TmF2aWdhdGluZykKK3sKKyAgICBpbml0aWFsaXplKCJodHRwOi8vd3d3LmZvby5jb20vIiwgInBy
ZXJlbmRlci9tdWx0aXBsZV9wcmVyZW5kZXJzLmh0bWwiKTsKKyAgICAKKyAgICBXZWJQcmVyZW5k
ZXIgZmlyc3RQcmVyZW5kZXIgPSBwcmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVu
ZGVyKCk7CisgICAgV2ViUHJlcmVuZGVyIHNlY29uZFByZXJlbmRlciA9IHByZXJlbmRlcmVyQ2xp
ZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKworICAgIEVYUEVDVF9FUSgxdSwgcHJlcmVu
ZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudChmaXJzdFByZXJlbmRlcikpOworICAgIEVYUEVDVF9F
USgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudChzZWNvbmRQcmVyZW5kZXIpKTsK
KyAgICBFWFBFQ1RfRVEoMnUsIHByZXJlbmRlcmluZ1N1cHBvcnQoKS0+dG90YWxDb3VudCgpKTsK
KworICAgIGV4ZWN1dGVTY3JpcHQoInJlbW92ZUZpcnN0UHJlcmVuZGVyKCkiKTsKKworICAgIEVY
UEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5jYW5jZWxDb3VudChmaXJzdFByZXJl
bmRlcikpOworICAgIEVYUEVDVF9FUSgzdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENv
dW50KCkpOworCisgICAgbmF2aWdhdGVBd2F5KCk7CisKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJl
bmRlcmluZ1N1cHBvcnQoKS0+YWJhbmRvbkNvdW50KHNlY29uZFByZXJlbmRlcikpOworCisgICAg
Ly8gRklYTUU6IEFmdGVyIHdlIGZpeCBwcmVyZW5kZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IHNl
bmQgcmVkdW5kYW50IGV2ZW50cywgYXNzZXJ0IHRoYXQgdG90YWxDb3VudCgpID09IDR1LgorfQor
CitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgVHdvUHJlcmVuZGVyc0FkZGluZ1RoaXJkKQorewor
ICAgIGluaXRpYWxpemUoImh0dHA6Ly93d3cuZm9vLmNvbS8iLCAicHJlcmVuZGVyL211bHRpcGxl
X3ByZXJlbmRlcnMuaHRtbCIpOworICAgIAorICAgIFdlYlByZXJlbmRlciBmaXJzdFByZXJlbmRl
ciA9IHByZXJlbmRlcmVyQ2xpZW50KCktPnJlbGVhc2VXZWJQcmVyZW5kZXIoKTsKKyAgICBXZWJQ
cmVyZW5kZXIgc2Vjb25kUHJlcmVuZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdl
YlByZXJlbmRlcigpOworCisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCkt
PmFkZENvdW50KGZpcnN0UHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDF1LCBwcmVyZW5kZXJp
bmdTdXBwb3J0KCktPmFkZENvdW50KHNlY29uZFByZXJlbmRlcikpOworICAgIEVYUEVDVF9FUSgy
dSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENvdW50KCkpOworCisgICAgZXhlY3V0ZVNj
cmlwdCgiYWRkVGhpcmRQcmVyZW5kZXIoKSIpOworCisgICAgV2ViUHJlcmVuZGVyIHRoaXJkUHJl
cmVuZGVyID0gcHJlcmVuZGVyZXJDbGllbnQoKS0+cmVsZWFzZVdlYlByZXJlbmRlcigpOworICAg
IEVYUEVDVF9FUSgxdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT5hZGRDb3VudCh0aGlyZFByZXJl
bmRlcikpOworICAgIEVYUEVDVF9FUSgzdSwgcHJlcmVuZGVyaW5nU3VwcG9ydCgpLT50b3RhbENv
dW50KCkpOworfQorCitURVNUX0YoUHJlcmVuZGVyaW5nVGVzdCwgU2hvcnRMaXZlZENsaWVudCkK
K3sKKyAgICBpbml0aWFsaXplKCJodHRwOi8vd3d3LmZvby5jb20vIiwgInByZXJlbmRlci9zaW5n
bGVfcHJlcmVuZGVyLmh0bWwiKTsKKworICAgIFdlYlByZXJlbmRlciB3ZWJQcmVyZW5kZXIgPSBw
cmVyZW5kZXJlckNsaWVudCgpLT5yZWxlYXNlV2ViUHJlcmVuZGVyKCk7CisgICAgRVhQRUNUX0ZB
TFNFKHdlYlByZXJlbmRlci5pc051bGwoKSk7CisKKyAgICBFWFBFQ1RfRVEoMXUsIHByZXJlbmRl
cmluZ1N1cHBvcnQoKS0+YWRkQ291bnQod2ViUHJlcmVuZGVyKSk7CisgICAgRVhQRUNUX0VRKDF1
LCBwcmVyZW5kZXJpbmdTdXBwb3J0KCktPnRvdGFsQ291bnQoKSk7CisKKyAgICBuYXZpZ2F0ZUF3
YXkoKTsKKyAgICBjbG9zZSgpOworCisgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGlzIG5l
eHQgbGluZSBkb2Vzbid0IGNyYXNoLgorICAgIHdlYlByZXJlbmRlci5kaWRTdGFydFByZXJlbmRl
cigpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL3ByZXJlbmRlci9tdWx0aXBsZV9wcmVyZW5kZXJzLmh0bWwgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcHJlcmVuZGVyL211bHRpcGxlX3ByZXJlbmRl
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYWE3MDg0NDA0MDFlMGIzY2YzYmEzZjU4ZTk2NWVjNzg1NTdi
MzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L3ByZXJlbmRlci9tdWx0aXBsZV9wcmVyZW5kZXJzLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPGh0
bWw+CisgIDxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICAgIHsKKyAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlKSk7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5h
cHBlbmRDaGlsZChpdGVtKTsKKyAgICAgIH0KKworICAgIDwvc2NyaXB0PgorCisgIDwvaGVhZD4K
KyAgPGJvZHk+CisgICAgPHVsIGlkPWNvbnNvbGU+CisgICAgPC91bD4KKworICAgIDxsaW5rIGlk
PSJmaXJzdFByZXJlbmRlciIgcmVsPXByZXJlbmRlciBocmVmPSJodHRwOi8vZmlyc3QtcHJlcmVu
ZGVyLmNvbS8iLz4KKyAgICA8bGluayBpZD0ic2Vjb25kUHJlcmVuZGVyIiByZWw9cHJlcmVuZGVy
IGhyZWY9Imh0dHA6Ly9zZWNvbmQtcHJlcmVuZGVyLmNvbS8iLz4KKworICAgIDxwIGlkPSJlbXB0
eVBhcmFncmFwaCI+PC9wPgorCisgICAgPHNjcmlwdD4KKyAgICAgIHZhciBmaXJzdFByZXJlbmRl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdFByZXJlbmRlcicpOworICAgICAgdmFy
IHNlY29uZFByZXJlbmRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWNvbmRQcmVyZW5k
ZXInKTsKKworICAgICAgZnVuY3Rpb24gcmVtb3ZlRmlyc3RQcmVyZW5kZXIoKQorICAgICAgewor
ICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0UHJlcmVu
ZGVyJyk7CisgICAgICAgICAgbGluay5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGxpbmspOwor
ICAgICAgfQorCisgICAgICBmdW5jdGlvbiByZW1vdmVTZWNvbmRQcmVyZW5kZXIoKQorICAgICAg
eworICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0UHJl
cmVuZGVyJyk7CisgICAgICAgICAgbGluay5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGxpbmsp
OworICAgICAgfQorCisgICAgICBmdW5jdGlvbiByZW1vdmVUaGlyZFByZXJlbmRlcigpCisgICAg
ICB7CisgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpcmRQ
cmVyZW5kZXInKTsKKyAgICAgICAgICBsaW5rLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobGlu
ayk7CisgICAgICB9CisKKyAgICAgIGZpcnN0UHJlcmVuZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3dl
YmtpdHByZXJlbmRlcnN0YXJ0JywgZnVuY3Rpb24oKSB7IGxvZygiZmlyc3Rfd2Via2l0cHJlcmVu
ZGVyc3RhcnQiKTsgfSwgZmFsc2UpOworICAgICAgZmlyc3RQcmVyZW5kZXIuYWRkRXZlbnRMaXN0
ZW5lcignd2Via2l0cHJlcmVuZGVyc3RvcCcsIGZ1bmN0aW9uKCkgeyBsb2coImZpcnN0X3dlYmtp
dHByZXJlbmRlcnN0b3AiKTsgfSwgZmFsc2UpOworICAgICAgZmlyc3RQcmVyZW5kZXIuYWRkRXZl
bnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVybG9hZCcsIGZ1bmN0aW9uKCkgeyBsb2coImZpcnN0
X3dlYmtpdHByZXJlbmRlcmxvYWQiKTsgfSwgZmFsc2UpOworICAgICAgZmlyc3RQcmVyZW5kZXIu
YWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCcsIGZ1bmN0
aW9uKCkgeyBsb2coImZpcnN0X3dlYmtpdHByZXJlbmRlcmRvbWNvbnRlbnRsb2FkZWQiKTsgfSwg
ZmFsc2UpOworCisgICAgICBzZWNvbmRQcmVyZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0
cHJlcmVuZGVyc3RhcnQnLCBmdW5jdGlvbigpIHsgbG9nKCJzZWNvbmRfd2Via2l0cHJlcmVuZGVy
c3RhcnQiKTsgfSwgZmFsc2UpOworICAgICAgc2Vjb25kUHJlcmVuZGVyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3dlYmtpdHByZXJlbmRlcnN0b3AnLCBmdW5jdGlvbigpIHsgbG9nKCJzZWNvbmRfd2Via2l0
cHJlcmVuZGVyc3RvcCIpOyB9LCBmYWxzZSk7CisgICAgICBzZWNvbmRQcmVyZW5kZXIuYWRkRXZl
bnRMaXN0ZW5lcignd2Via2l0cHJlcmVuZGVybG9hZCcsIGZ1bmN0aW9uKCkgeyBsb2coInNlY29u
ZF93ZWJraXRwcmVyZW5kZXJsb2FkIik7IH0sIGZhbHNlKTsKKyAgICAgIHNlY29uZFByZXJlbmRl
ci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJkb21jb250ZW50bG9hZGVkJywgZnVu
Y3Rpb24oKSB7IGxvZygic2Vjb25kX3dlYmtpdHByZXJlbmRlcmRvbWNvbnRlbnRsb2FkZWQiKTsg
fSwgZmFsc2UpOworCisgICAgICBmdW5jdGlvbiBhZGRUaGlyZFByZXJlbmRlcigpCisgICAgICB7
CisgICAgICAgICAgdmFyIGVtcHR5UGFyYWdyYXBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVtcHR5UGFyYWdyYXBoIik7CisgICAgICAgICAgZW1wdHlQYXJhZ3JhcGguaW5uZXJIVE1MID0g
JzxsaW5rIGlkPSJ0aGlyZFByZXJlbmRlciIgcmVsPXByZXJlbmRlciBocmVmPSJodHRwOi8vdGhp
cmQtcHJlcmVyZW5kZXIuY29tLyIvPic7CisgICAgICAgICAgdmFyIHRoaXJkUHJlcmVuZGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoaXJkUHJlcmVuZGVyJyk7CisKKyAgICAgICAgICB0
aGlyZFByZXJlbmRlci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5kZXJzdGFydCcsIGZ1
bmN0aW9uKCkgeyBsb2coInRoaXJkX3dlYmtpdHByZXJlbmRlcnN0YXJ0Iik7IH0sIGZhbHNlKTsK
KyAgICAgICAgICB0aGlyZFByZXJlbmRlci5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRwcmVyZW5k
ZXJzdG9wJywgZnVuY3Rpb24oKSB7IGxvZygidGhpcmRfd2Via2l0cHJlcmVuZGVyc3RvcCIpOyB9
LCBmYWxzZSk7CisgICAgICAgICAgdGhpcmRQcmVyZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Vi
a2l0cHJlcmVuZGVybG9hZCcsIGZ1bmN0aW9uKCkgeyBsb2coInRoaXJkX3dlYmtpdHByZXJlbmRl
cmxvYWQiKTsgfSwgZmFsc2UpOworICAgICAgICAgIHRoaXJkUHJlcmVuZGVyLmFkZEV2ZW50TGlz
dGVuZXIoJ3dlYmtpdHByZXJlbmRlcmRvbWNvbnRlbnRsb2FkZWQnLCBmdW5jdGlvbigpIHsgbG9n
KCJ0aGlyZF93ZWJraXRwcmVyZW5kZXJkb21jb250ZW50bG9hZGVkIik7IH0sIGZhbHNlKTsKKyAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcHJlcmVuZGVyL3NpbmdsZV9wcmVyZW5k
ZXIuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wcmVyZW5kZXIvc2lu
Z2xlX3ByZXJlbmRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMTMwZmU0ZDNmZTZiYTRkNTNmOTZkMTQ1
Y2Q0M2JhZjk2ZGZhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvcHJlcmVuZGVyL3NpbmdsZV9wcmVyZW5kZXIuaHRtbApAQCAtMCwwICsxLDM2
IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgIGZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQorICAgICAgeworICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKyAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgICAgfQorCisgICAgPC9zY3JpcHQ+CisKKyAg
PC9oZWFkPgorICA8Ym9keT4KKyAgICA8dWwgaWQ9Y29uc29sZT4KKyAgICA8L3VsPgorCisgICAg
PGxpbmsgaWQ9InRoZXByZXJlbmRlciIgcmVsPXByZXJlbmRlciBocmVmPSJodHRwOi8vcHJlcmVu
ZGVyLmNvbS8iLz4KKworICAgIDxzY3JpcHQ+CisgICAgICB2YXIgcHJlcmVuZGVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZXByZXJlbmRlcicpOworCisgICAgICBmdW5jdGlvbiByZW1v
dmVQcmVyZW5kZXIoKQorICAgICAgeworICAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RoZXByZXJlbmRlcicpOworICAgICAgICAgIGxpbmsucGFyZW50RWxlbWVu
dC5yZW1vdmVDaGlsZChsaW5rKTsKKyAgICAgIH0KKworICAgICAgcHJlcmVuZGVyLmFkZEV2ZW50
TGlzdGVuZXIoJ3dlYmtpdHByZXJlbmRlcnN0YXJ0JywgZnVuY3Rpb24oKSB7IGxvZygid2Via2l0
cHJlcmVuZGVyc3RhcnQiKTsgfSwgZmFsc2UpOworICAgICAgcHJlcmVuZGVyLmFkZEV2ZW50TGlz
dGVuZXIoJ3dlYmtpdHByZXJlbmRlcnN0b3AnLCBmdW5jdGlvbigpIHsgbG9nKCJ3ZWJraXRwcmVy
ZW5kZXJzdG9wIik7IH0sIGZhbHNlKTsKKyAgICAgIHByZXJlbmRlci5hZGRFdmVudExpc3RlbmVy
KCd3ZWJraXRwcmVyZW5kZXJsb2FkJywgZnVuY3Rpb24oKSB7IGxvZygid2Via2l0cHJlcmVuZGVy
bG9hZCIpOyB9LCBmYWxzZSk7CisgICAgICBwcmVyZW5kZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Vi
a2l0cHJlcmVuZGVyZG9tY29udGVudGxvYWRlZCcsIGZ1bmN0aW9uKCkgeyBsb2coIndlYmtpdHBy
ZXJlbmRlcmRvbWNvbnRlbnRsb2FkZWQiKTsgfSwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICA8
L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>