<?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>27927</bug_id>
          
          <creation_ts>2009-08-01 19:47:53 -0700</creation_ts>
          <short_desc>SharedWorkers should instantiate a thread and a SharedWorkerContext</short_desc>
          <delta_ts>2009-08-06 09:09:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27963</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136502</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-01 19:47:53 -0700</bug_when>
    <thetext>SharedWorkers need to create a worker thread and context per the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136573</commentid>
    <comment_count>1</comment_count>
      <attachid>33955</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-02 15:34:37 -0700</bug_when>
    <thetext>Created attachment 33955
proposed patch

In a future patch I will refactor some of the existing dedicated worker tests to cover shared workers also (I&apos;ve done a proof of concept for one of the worker files in this patch).

There are no V8 bindings yet, as Chromium does not support cross-process MessagePorts, and I wanted to keep this patch reasonably sized. I will add them in a future patch - in the meantime, Chromium will no longer compile with SHARED_WORKERS=true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137261</commentid>
    <comment_count>2</comment_count>
      <attachid>34118</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-05 00:01:40 -0700</bug_when>
    <thetext>Created attachment 34118
Patch addressing levin&apos;s comments

OK, this addresses the first batch of comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137263</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-05 00:17:30 -0700</bug_when>
    <thetext>Here were my initial comments that I had emailed Drew directly.  I&apos;ll paste his responses next:

I think you need to fix up the blk build file as well.

Ed. Note: Drew pointed out that the other worker files were not in there either.

&gt; diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
&gt; +	    &apos;bindings/js/JSSharedWorkerConstructor.cpp&apos;,
&gt; +            &apos;bindings/js/JSSharedWorkerConstructor.h&apos;,
&gt; +	    &apos;bindings/js/JSSharedWorkerContextCustom.cpp&apos;,
&gt; +	    &apos;bindings/js/JSSharedWorkerCustom.cpp&apos;,

TABs -- my eyes hurt.

&gt; diff --git a/WebCore/bindings/js/JSSharedWorkerConstructor.cpp b/WebCore/bindings/js/JSSharedWorkerConstructor.cpp
...
&gt; -    // FIXME: toJS() creates an object whose prototype is derived from lexicalGlobalScope, which is incorrect (Bug 27088)
&gt; -    return asObject(toJS(exec, worker.release()));
&gt; +    return asObject(toJS(exec, jsConstructor-&gt;globalObject(), worker.release()));

Do any of the  tests that you added cover this? (It seems subtle so it seems easy to break and not notice without a layout test.)




&gt; diff --git a/WebCore/workers/AbstractWorker.cpp b/WebCore/workers/AbstractWorker.cpp

&gt; +KURL AbstractWorker::resolveURL(const String&amp; url, ExceptionCode&amp; ec)
&gt; +{
&gt; +    if (url.isEmpty()) {
&gt; +        ec = SYNTAX_ERR;
&gt; +        return KURL();
&gt; +    }
&gt; +
&gt; +    // FIXME: This should use the dynamic global scope (bug #27887)
&gt; +    KURL scriptURL = scriptExecutionContext()-&gt;completeURL(url);
&gt; +    if (!scriptURL.isValid()) {
&gt; +        ec = SYNTAX_ERR;
&gt; +        return scriptURL;

I would prefer that in case of error it just &quot;return KURL();&quot; so that the url isn&apos;t used accidentally.  (It doesn&apos;t appear that the url is ever used in this case right now so this should be fine.)

&gt; +    }
&gt; +
&gt; +    if (!scriptExecutionContext()-&gt;securityOrigin()-&gt;canAccess(SecurityOrigin::create(scriptURL).get())) {
&gt; +        ec = SECURITY_ERR;

Same error comment about doing &quot;return KURL();&quot;  here.


&gt; diff --git a/WebCore/workers/AbstractWorker.h b/WebCore/workers/AbstractWorker.h
&gt;  #include &quot;EventListener.h&quot;
&gt;  #include &quot;EventTarget.h&quot;
&gt; +#include &quot;KURL.h&quot;

It looks like a forward declaraction would suffice here.


&gt; diff --git a/WebCore/workers/DedicatedWorkerContext.cpp b/WebCore/workers/DedicatedWorkerContext.cpp
&gt; +void DedicatedWorkerContext::logException(const String&amp; errorMessage, int lineNumber, const String&amp; sourceURL)
&gt;  {
&gt; +    thread()-&gt;workerObjectProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);

Doesn&apos;t postExceptionToWorkerObject actually do more than log the exception now?  (I think it postes an exception to the WorkerObject.)

&gt; diff --git a/WebCore/workers/SharedWorkerContext.cpp b/WebCore/workers/SharedWorkerContext.cpp
&gt; +void SharedWorkerContext::dispatchConnect(PassRefPtr&lt;MessagePort&gt; port)
&gt; +{
&gt; +    // Since close() stops the thread event loop, this should not ever get called while closing.
&gt; +    ASSERT(!isClosing());

&gt; +    // The connect event uses the MessageEvent interface, but has the name &quot;connect&quot;.

Why not just an Event?

&gt; +    RefPtr&lt;Event&gt; evt = MessageEvent::create(&quot;&quot;, &quot;&quot;, &quot;&quot;, 0, port);

Use event instead of evt.


&gt; diff --git a/WebCore/workers/SharedWorkerRepository.h b/WebCore/workers/SharedWorkerRepository.h

&gt; +    typedef int ExceptionCode;

This works but I would really just #include &quot;ExceptionCode.h&quot; instead of having the typedef here again as it makes changing this type more painful.

&gt; +        // Static factory for getting the browser-specific repository implementation.
&gt; +        static SharedWorkerRepository* instance();
Is this always non-0? If so, consider returning a SharedWorkerRepository&amp;.

&gt; +        ~SharedWorkerRepository() {}

Nice to add space { }


&gt; diff --git a/WebCore/workers/SharedWorkerRepositoryImpl.cpp b/WebCore/workers/SharedWorkerRepositoryImpl.cpp

&gt; +class SharedWorkerLoader : public RefCounted&lt;SharedWorkerLoader&gt;, public ActiveDOMObject, private WorkerScriptLoaderClient {
&gt; +public:
&gt; +    SharedWorkerLoader(PassRefPtr&lt;SharedWorker&gt;, PassOwnPtr&lt;MessagePortChannel&gt;, const String&amp;);
&gt; +    void load(const KURL&amp; url);

No need to param name &quot;url&quot; here.

&gt; diff --git a/WebCore/workers/SharedWorkerRepositoryImpl.h b/WebCore/workers/SharedWorkerRepositoryImpl.h

&gt; +#include &lt;wtf/Vector.h&gt;
&quot;&lt;wtf/Vector.h&gt;&quot; doesn&apos;t appear needed in here.

&gt; +    class SharedWorkerProxy;

SharedWorkerProxy doesn&apos;t appear needed in here.

&gt; +
&gt; +    // Platform-specific implementation of the SharedWorkerRepository singleton.
&gt; +    class SharedWorkerRepositoryImpl : public SharedWorkerRepository, Noncopyable {

Consider DefaultSharedWorkerRepository or PlatformSharedWorkerRepository or SingleProcessSharedWorkerRepository.
That last one is a bit long but I think also the most precise.

&gt; +        static SharedWorkerRepositoryImpl* instance();

Is it ever 0? If not,...

&gt; +}

&quot;} // namespace WebCore&quot;

&gt; +
&gt; +#endif // ENABLE(WORKERS)

Should be #endif // ENABLE(SHARED_WORKERS)


&gt; diff --git a/WebCore/workers/SharedWorkerThread.h b/WebCore/workers/SharedWorkerThread.h
&gt; +    protected:
&gt; +        virtual PassRefPtr&lt;WorkerContext&gt; createWorkerContext(const KURL&amp; url, const String&amp; userAgent);

&quot;url&quot; name not needed.

&gt; +#endif // ENABLE(WORKERS)

Should be #endif // ENABLE(SHARED_WORKERS)


&gt; diff --git a/WebCore/workers/Worker.cpp b/WebCore/workers/Worker.cpp

I think you can remove the &quot;#include &quot;SecurityOrigin.h&quot;&quot; from this file now.

&gt; diff --git a/WebCore/workers/WorkerContext.cpp b/WebCore/workers/WorkerContext.cpp
&gt; +void WorkerContext::reportException(const String&amp; errorMessage, int lineNumber, const String&amp; sourceURL)
...
&gt; +    if (!errorHandled)
&gt; +        logException(errorMessage, lineNumber, sourceURL);

This should be

      if (!errorHandled)
          thread()-&gt;workerObjectProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);

which actually fires the exception on the workerobject.

&gt; +}
&gt; +
&gt; +

Two returns?... Whitespace is money! :)

&gt;  } // namespace WebCore


&gt; diff --git a/WebCore/workers/WorkerContext.h b/WebCore/workers/WorkerContext.h
&gt;  namespace WebCore {
&gt;  
&gt;      class ScheduledAction;
&gt; +    class SharedWorkerContext;
&gt; +    class DedicatedWorkerContext;
I don&apos;t think these need to be here (probably a left over from another change).  If they do belong here, then sort them :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137264</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-05 00:20:29 -0700</bug_when>
    <thetext>&gt; -    // FIXME: toJS() creates an object whose prototype is derived from lexicalGlobalScope, which is incorrect (Bug 27088)
&gt; -    return asObject(toJS(exec, worker.release()));
&gt; +    return asObject(toJS(exec, jsConstructor-&gt;globalObject(), worker.release()));

| Do any of the  tests that you added cover this? (It seems subtle so it seems easy to break and not notice without a layout test.)
| There is test code in the regular global constructor tests, although not enabled for SharedWorkers since they are disabled by default.

I haven&apos;t added more tests because the current behavior for both Workers and SharedWorkers is *still* broken (albeit in a different, subtle way) - I logged bug #27887 to track that issue (we need to do URL resolution with a different scope than we use to do the security checks). I figured I&apos;d add extensive tests at that time.
 

&gt; diff --git a/WebCore/workers/DedicatedWorkerContext.cpp b/WebCore/workers/DedicatedWorkerContext.cpp
&gt; +void DedicatedWorkerContext::logException(const String&amp; errorMessage, int lineNumber, const String&amp; sourceURL)
&gt;  {
&gt; +    thread()-&gt;workerObjectProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);

| Doesn&apos;t postExceptionToWorkerObject actually do more than log the exception now?  (I think it postes an exception to the WorkerObject.)

That is correct. I&apos;ve renamed logException to forwardException, as I&apos;m assuming that&apos;s what you&apos;re getting at here.
 

&gt; diff --git a/WebCore/workers/SharedWorkerContext.cpp b/WebCore/workers/SharedWorkerContext.cpp
&gt; +void SharedWorkerContext::dispatchConnect(PassRefPtr&lt;MessagePort&gt; port)
&gt; +{
&gt; +    // Since close() stops the thread event loop, this should not ever get called while closing.
&gt; +    ASSERT(!isClosing());

&gt; +    // The connect event uses the MessageEvent interface, but has the name &quot;connect&quot;.

| Why not just an Event?

Because that&apos;s what the spec says:
&quot;Create an event that uses the MessageEvent interface, with the name connect, &quot;
 

&gt; +    typedef int ExceptionCode;

| This works but I would really just #include &quot;ExceptionCode.h&quot; instead of having the typedef here again as it makes changing this type more painful.

OK, I&apos;ve changed this, but note that there are 39 instances of &quot;typedef int ExceptionCode;&quot; in header files, while only 12 instances of &quot;#include ExceptionCode.h&quot; - I was just following the more popular pattern.
 

&gt; +        // Static factory for getting the browser-specific repository implementation.
&gt; +        static SharedWorkerRepository* instance();

| Is this always non-0? If so, consider returning a SharedWorkerRepository&amp;.

instance() is going away in my next patch, so if it&apos;s OK I&apos;d like to leave it as-is.
 

&gt; +    // Platform-specific implementation of the SharedWorkerRepository singleton.
&gt; +    class SharedWorkerRepositoryImpl : public SharedWorkerRepository, Noncopyable {

| Consider DefaultSharedWorkerRepository or PlatformSharedWorkerRepository or SingleProcessSharedWorkerRepository.
| That last one is a bit long but I think also the most precise.

Good point. I&apos;d like to go with &quot;Default&quot; as a nice balance between length and precision (and also matches what we did with MessagePort).
 

&gt; +        static SharedWorkerRepositoryImpl* instance();

| Is it ever 0? If not,...

This is being refactored in my next patch so I&apos;d like to change it there instead, if that&apos;s OK.

...
| This should be
|     if (!errorHandled)
|          thread()-&gt;workerObjectProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);
| which actually fires the exception on the workerobject.


I think the code was correct, although I&apos;ve renamed logException -&gt; forwardException to make it clearer that the exception is still going to the parent context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137268</commentid>
    <comment_count>5</comment_count>
      <attachid>34118</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-05 00:46:31 -0700</bug_when>
    <thetext>Comment on attachment 34118
Patch addressing levin&apos;s comments

Just a few last things to fix up....

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Added disabled tests for SharedWorker minimal functionality.
&gt; +
&gt; +        Began refactoring of dedicated worker tests to allow sharing test cases between shared and dedicated worker (will continue in another patch).
&gt; +
&gt; +        SharedWorkers should instantiate a thread and a SharedWorkerContext
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=27927

The format du jour is to put these two lines after the Reviewed By line and then the description.


&gt; diff --git a/LayoutTests/fast/workers/shared-worker-gc.html-disabled b/LayoutTests/fast/workers/shared-worker-gc.html-disabled
&gt; +&lt;/html&gt;

I see an extra &lt;/html&gt; here but I think that you removed it in the next patch.

&gt; +++ b/LayoutTests/fast/workers/shared-worker-replace-global-constructor.html-disabled
&gt; +&lt;/html&gt;
I see an extra &lt;/html&gt; here but I think that you removed it in the next patch.


&gt; diff --git a/LayoutTests/fast/workers/shared-worker-simple.html-disabled b/LayoutTests/fast/workers/shared-worker-simple.html-disabled
&gt; +&lt;/html&gt;
Extra &lt;/html&gt; here but I think that you removed it in the next patch.


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2009-08-01  Drew Wilson  &lt;atwilson@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Created first working implementation of SharedWorkers (execution only, no sharing).
&gt; +        Added initial implementations of SharedWorkerThread and SharedWorkerContext.
&gt; +        No v8 bindings yet.
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=27927


The current preferred format is to put the bug title and then bg link right after the review by line.

prepare-ChangeLog --bug #

will do this for you.

&gt; diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp
&gt;  #if ENABLE(SHARED_WORKERS)
&gt;  #include &quot;JSSharedWorker.h&quot;
&gt; +#include &quot;JSSharedWorkerContext.h&quot;
&gt;  #include &quot;SharedWorker.h&quot;
&gt; +#include &quot;SharedWorkerContext.h&quot;
&gt;  #endif

Since you&apos;ve ifdef&apos;ed the headers, can you remove the ifdef&apos;s here (and then sort them appropriately)?  (Less ifdef cruft is nice.)

&gt; diff --git a/WebCore/bindings/js/WorkerScriptController.cpp b/WebCore/bindings/js/WorkerScriptController.cpp
&gt; +#if ENABLE(SHARED_WORKERS)
&gt; +#include &quot;JSSharedWorkerContext.h&quot;
&gt; +#endif

Since you&apos;ve ifdef&apos;ed the headers, can you remove the ifdef&apos;s here?

&gt; diff --git a/WebCore/bindings/v8/DOMObjectsInclude.h b/WebCore/bindings/v8/DOMObjectsInclude.h
&gt; index 32354b3..ddfd629 100644
&gt; --- a/WebCore/bindings/v8/DOMObjectsInclude.h
&gt; +++ b/WebCore/bindings/v8/DOMObjectsInclude.h
&gt; @@ -209,6 +209,7 @@
&gt;  #if ENABLE(SHARED_WORKERS)
&gt;  #include &quot;AbstractWorker.h&quot;
&gt;  #include &quot;SharedWorker.h&quot;
&gt; +#include &quot;SharedWorkerContext.h&quot;
&gt;  #endif // SHARED_WORKERS

Since you&apos;ve ifdef&apos;ed the headers, can you remove the ifdef&apos;s here?

&gt; diff --git a/WebCore/workers/DefaultSharedWorkerRepository.cpp b/WebCore/workers/DefaultSharedWorkerRepository.cpp

&gt; +void DefaultSharedWorkerRepository::workerScriptLoaded(const String&amp; name, const KURL&amp; url, const String&amp; userAgent, const String&amp; workerScript, PassOwnPtr&lt;MessagePortChannel&gt; port)
&gt; +{
&gt; +    // FIXME: Cache the proxy to allow sharing and to allow cleanup after the thread exits.
&gt; +    SharedWorkerProxy *proxy = new SharedWorkerProxy();

SharedWorkerProxy*  (* on the wrong side...You may be glad to know that there is a patch in a bug to check-webkit-style to catch but it is s\
till undergoing some fixes.)

Would you add a comment about what owns the SharedWorkerProxy (because it looks like it leaks in this code)?


&gt; +void SharedWorkerRepository::connect(PassRefPtr&lt;SharedWorker&gt; worker, PassOwnPtr&lt;MessagePortChannel&gt; port, const KURL&amp; url, const String&amp; name, ExceptionCode&amp;)
&gt; +{
&gt; +    // Create a loader to load/initialize the requested worker
Add &quot;.&quot;

&gt; +    RefPtr&lt;SharedWorkerLoader&gt; loader = adoptRef(new SharedWorkerLoader(worker, port.release(), name));

I think &quot;port&quot; alone should suffice here.


&gt; diff --git a/WebCore/workers/DefaultSharedWorkerRepository.h b/WebCore/workers/DefaultSharedWorkerRepository.h
&gt; +        // Invoked once the worker script has been loaded to fire up the worker thread.
&gt; +        void workerScriptLoaded(const String&amp; name, const KURL&amp; url, const String&amp; userAgent, const String&amp; workerScript, PassOwnPtr&lt;MessagePortChannel&gt;);

No need to param name &quot;url&quot; here.

&gt; diff --git a/WebCore/workers/SharedWorkerContext.idl b/WebCore/workers/SharedWorkerContext.idl
&gt; +    ] SharedWorkerContext : WorkerContext {
&gt; +
&gt; +        readonly attribute DOMString name;
&gt; +        attribute EventListener onconnect;

The typical format is to indent attribute to leave spaces for &quot;readonly&quot; when it isn&apos;t there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137327</commentid>
    <comment_count>6</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-05 10:09:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 34118 [details])
&gt; Just a few last things to fix up....
&gt; 
&gt; &gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Added disabled tests for SharedWorker minimal functionality.
&gt; &gt; +
&gt; &gt; +        Began refactoring of dedicated worker tests to allow sharing test cases between shared and dedicated worker (will continue in another patch).
&gt; &gt; +
&gt; &gt; +        SharedWorkers should instantiate a thread and a SharedWorkerContext
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=27927
&gt; 
&gt; The format du jour is to put these two lines after the Reviewed By line and
&gt; then the description.
&gt; 

Tragically, the git version of prepare-ChangeLogs still puts all of the commit descriptions above the bug summary. But I&apos;ll keep this in mind going forward.

&gt; 
&gt; &gt; diff --git a/LayoutTests/fast/workers/shared-worker-gc.html-disabled b/LayoutTests/fast/workers/shared-worker-gc.html-disabled
&gt; &gt; +&lt;/html&gt;
&gt; 
&gt; I see an extra &lt;/html&gt; here but I think that you removed it in the next patch.

Yes, inexplicably there are a ton of extra &lt;/html&gt; tags in the worker tests (yay, copy and paste). I&apos;m cleaning the others up as we go along, but I&apos;ll fix these up now since I&apos;m making a new patch anyway.

&gt;
&gt; 
&gt; &gt; diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp
&gt; &gt;  #if ENABLE(SHARED_WORKERS)
&gt; &gt;  #include &quot;JSSharedWorker.h&quot;
&gt; &gt; +#include &quot;JSSharedWorkerContext.h&quot;
&gt; &gt;  #include &quot;SharedWorker.h&quot;
&gt; &gt; +#include &quot;SharedWorkerContext.h&quot;
&gt; &gt;  #endif
&gt; 
&gt; Since you&apos;ve ifdef&apos;ed the headers, can you remove the ifdef&apos;s here (and then
&gt; sort them appropriately)?  (Less ifdef cruft is nice.)

Done. BTW, nobody else does this for any of the other ifdefs in that file (ENABLE_WORKERS, ENABLE_SVG, ENABLE_OFFLINE).


&gt; Would you add a comment about what owns the SharedWorkerProxy (because it looks
&gt; like it leaks in this code)?
&gt; 
It does leak. Hence the FIXME comment on line 146.

&gt; The typical format is to indent attribute to leave spaces for &quot;readonly&quot; when
&gt; it isn&apos;t there.
Awesome. I always wondered why there were seemingly random indentations for some of the attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137332</commentid>
    <comment_count>7</comment_count>
      <attachid>34144</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-05 10:23:56 -0700</bug_when>
    <thetext>Created attachment 34144
Hopefully final patch addressing remaining comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137338</commentid>
    <comment_count>8</comment_count>
      <attachid>34144</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-05 10:37:57 -0700</bug_when>
    <thetext>Comment on attachment 34144
Hopefully final patch addressing remaining comments

In WebCore/bindings/v8/DOMObjectsInclude.h, there is an empty ifdef.  Please fix this on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137356</commentid>
    <comment_count>9</comment_count>
      <attachid>34156</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-05 11:35:09 -0700</bug_when>
    <thetext>Created attachment 34156
Final patch ready for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137513</commentid>
    <comment_count>10</comment_count>
      <attachid>34156</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-08-05 22:05:26 -0700</bug_when>
    <thetext>Comment on attachment 34156
Final patch ready for landing

Removed commit-queue+. I think Drew wants to land this himself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137585</commentid>
    <comment_count>11</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-08-06 09:09:32 -0700</bug_when>
    <thetext>Committed as r46845</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33955</attachid>
            <date>2009-08-02 15:34:37 -0700</date>
            <delta_ts>2009-08-05 00:01:40 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>90509</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OGEwMWExLi44MzNmOGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDgt
MDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBkaXNhYmxlZCB0ZXN0cyBmb3Ig
U2hhcmVkV29ya2VyIG1pbmltYWwgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBCZWdhbiByZWZh
Y3RvcmluZyBvZiBkZWRpY2F0ZWQgd29ya2VyIHRlc3RzIHRvIGFsbG93IHNoYXJpbmcgdGVzdCBj
YXNlcyBiZXR3ZWVuIHNoYXJlZCBhbmQgZGVkaWNhdGVkIHdvcmtlciAod2lsbCBjb250aW51ZSBp
biBhbm90aGVyIHBhdGNoKS4KKworICAgICAgICBTaGFyZWRXb3JrZXJzIHNob3VsZCBpbnN0YW50
aWF0ZSBhIHRocmVhZCBhbmQgYSBTaGFyZWRXb3JrZXJDb250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzkyNworCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVwbGFjZS1n
bG9iYWwtY29uc3RydWN0b3IuanM6IE1vdmVkIGNvbW1vbiBjb2RlIGludG8gc2hhcmVkIC5qcyBm
aWxlLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1n
Yy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1sb2FkLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sOgorCiAy
MDA5LTA3LTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODg3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpz
CkBAIC0wLDAgKzEsMTkgQEAKK29uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZXZl
bnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGhhbmRsZU1lc3NhZ2Uo
ZXZ0LCBldmVudC5tZXNzYWdlUG9ydCk7IH07Cit9OworCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdl
KGV2ZW50LCBwb3J0KSB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gInBpbmciKQorICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJQQVNTOiBSZWNlaXZlZCBwaW5nIG1lc3NhZ2UiKTsKKyAgICBlbHNl
IGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiRE9O
RSIpOworICAgIGVsc2UgaWYgKC9ldmFsLisvLnRlc3QoZXZ0LmRhdGEpKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKGV2dC5kYXRhLnN1YnN0cig1KSArICI6
ICIgKyBldmFsKGV2dC5kYXRhLnN1YnN0cig1KSkpOworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZShldnQuZGF0YS5zdWJzdHIoNSkgKyAiOiAiICsg
ZXgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiRkFJTFVSRTogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc2NyaXB0LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2ZiNjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpAQCAtMCwwICsx
LDIxIEBACitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIGV2ZW50Lm1lc3NhZ2VQ
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQu
bWVzc2FnZVBvcnQpOyB9OworfTsKKworZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCwgcG9y
dCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJ1bmhhbmRsZWRFcnJvciIpIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGUgYW4gdW5oYW5kbGVkIGVycm9yLgorICAgICAgICBvbmVycm9yID0gbnVsbDsK
KyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBvcnQucG9zdE1l
c3NhZ2UoIlNVQ0NFU1M6IHVuaGFuZGxlZCBlcnJvciBnZW5lcmF0ZWQiKTsKKyAgICAgICAgfSwg
MTAwKTsKKyAgICAgICAgZ2VuZXJhdGVFcnJvcigpOyAgLy8gVW5kZWZpbmVkIGZ1bmN0aW9uIGNh
bGwKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImhhbmRsZWRFcnJvciIpIHsKKyAgICAg
ICAgb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5vKSB7CisgICAgICAgICAg
ICBwb3J0LnBvc3RNZXNzYWdlKCJTVUNDRVNTOiBlcnJvciBoYW5kbGVkIHZpYSBvbmVycm9yOiAi
ICsgbWVzc2FnZSk7CisgICAgICAgIH07CisgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8vIFVu
ZGVmaW5lZCBmdW5jdGlvbiBjYWxsCisgICAgfSBlbHNlIHsKKyAgICAgICAgcG9ydC5wb3N0TWVz
c2FnZSgiRkFJTDogR290IHVuZXhwZWN0ZWQgbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOworICAg
IH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGI1ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2Jh
bC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDI0IEBACisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOword29ya2VyLnBvc3RNZXNzYWdlKCJldmFs
IHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Cit3b3JrZXIucG9z
dE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQorICAgICAgICBs
b2coZXZ0LmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkRPTkUiKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZAppbmRleCA1NTQ3ZTZkLi5kZTdmYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTM4LDE0ICszOCwxNCBAQCB0cnkgewogfQogCiB0cnkgewotICAgIHZhciB3
b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOwor
ICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtl
ci1jb21tb24uanMiKTsKICAgICBsb2coIkZBSUw6IENvbnN0cnVjdG9yIHN1Y2NlZWRlZCB3aGVu
IG5vIG5hbWUgaXMgcGFzc2VkIik7CiB9IGNhdGNoIChleCkgewogICAgIGxvZygiUEFTUzogaW52
b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBh
biBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiB9CiAKIHRyeSB7Ci0gICAgdmFyIHdvcmtlciA9
IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9uLmpzIiwgIm5hbWUiKTsK
KyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3Jr
ZXItY29tbW9uLmpzIiwgIm5hbWUiKTsKICAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29u
c3RydWN0b3Igc3VjY2VlZGVkOiAiICsgd29ya2VyKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9n
KCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5YmE4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUZXN0IHNoYXJlZCB3b3JrZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiBTaG91bGQgcHJpbnQgIlBB
U1MiIGZvbGxvd2VkIGJ5ICJET05FIi4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdlCitE
T05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWdjLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1nYy5odG1sLWRpc2FibGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhi
MGU3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1nYy5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzkgQEAKKzxib2R5PgorPHA+VGVz
dCBzaGFyZWQgd29ya2VyIGdhcmJhZ2UgY29sbGVjdGlvbi4gU2hvdWxkIHByaW50ICJQQVNTIiBm
b2xsb3dlZCBieSAiRE9ORSIuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitmdW5jdGlvbiBnYygp
Cit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcign
cmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKK3dvcmtlci5wb3J0
Lm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7Cit3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgicGlu
ZyIpOword29ya2VyID0gMDsKK2djKCk7CisKK2Z1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQp
IHsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWMxYTFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbG9hZC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdv
cmtlciBvbmVycm9yIGZ1bmN0aW9uYWxpdHkuIFByaW50cyBtdWx0aXBsZSBTVUNDRVNTIGxpbmVz
LCB0aGVuIERPTkUgd2hlbiBjb21wbGV0ZS4KKworUEFTUzogUmVjZWl2ZWQgbG9hZCBlcnJvciBl
dmVudDogW29iamVjdCBFdmVudF0KK1BBU1M6IFJlY2VpdmVkIGVycm9yIGV2ZW50IGFmdGVyIHdv
cmtlciBHQydkOiBbb2JqZWN0IEV2ZW50XQorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3YzdjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxvYWQt
ZXJyb3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDUyIEBACis8Ym9keT4KKzxwPlRlc3QgU2hh
cmVkV29ya2VyIG9uZXJyb3IgZnVuY3Rpb25hbGl0eS4gUHJpbnRzIG11bHRpcGxlIFNVQ0NFU1Mg
bGluZXMsIHRoZW4gRE9ORSB3aGVuIGNvbXBsZXRlLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTaW1wbGVMb2FkRXJyb3IoKQoreworICAgIHZhciB3b3Jr
ZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJmaWxlX2RvZXNfbm90X2V4aXN0LmpzIiwgIm5hbWUiKTsK
KyAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coIlBBU1M6
IFJlY2VpdmVkIGxvYWQgZXJyb3IgZXZlbnQ6ICIgKyBldnQpOworICAgICAgICB0ZXN0TG9hZEVy
cm9yR0MoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RMb2FkRXJyb3JHQygpCit7CisgICAg
dmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoImZpbGVfZG9lc19ub3RfZXhpc3QuanMiLCAi
bmFtZSIpOworICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXJyb3I7CisgICAgd29ya2VyID0g
bnVsbDsKKyAgICBnYygpOworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5H
Q0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29s
bGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVj
dCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKKworZnVu
Y3Rpb24gaGFuZGxlRXJyb3IoZXZ0KSB7CisgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBlcnJvciBl
dmVudCBhZnRlciB3b3JrZXIgR0MnZDogIiArIGV2dCk7CisgICAgbG9nKCJET05FIik7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCit0ZXN0U2ltcGxlTG9hZEVycm9yKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI4NmE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGVzdCByZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0
LgorCitzZWxmLk1lc3NhZ2VFdmVudCA9ICdQQVNTJzsgTWVzc2FnZUV2ZW50OzogUEFTUworRE9O
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1y
ZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGZmNGI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVw
bGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDE3IEBACis8
Ym9keT4KKzxwPlRlc3QgcmVwbGFjaW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMgaW4gYSB3b3JrZXIg
Y29udGV4dC48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CisvLyBNYWtlIGEg
U2hhcmVkV29ya2VyIHRoYXQgaGFzIHRoZSBzYW1lIGV4dGVybmFsIGludGVyZmFjZSBhcyBhIERl
ZGljYXRlZFdvcmtlciwgdG8gdXNlIGluIHNoYXJlZCB0ZXN0IGNvZGUuCitmdW5jdGlvbiBjcmVh
dGVXb3JrZXIoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJj
ZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMnLCAnbmFtZScpOworICAgIHdvcmtlci5wb3J0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH07CisgICAg
d29ya2VyLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBv
c01lc3NhZ2UobXNnLCBwb3J0KTsgfTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0id29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzIj4KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjcwODEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVu
Y3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxv
d2VkIHdpdGggRE9ORS4KKworU1VDQ0VTUzogdW5oYW5kbGVkIGVycm9yIGdlbmVyYXRlZAorU1VD
Q0VTUzogZXJyb3IgaGFuZGxlZCB2aWEgb25lcnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IGdlbmVyYXRlRXJyb3IKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuaHRt
bC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA2ZTUzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
c2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw3MCBAQAorPGJvZHk+Cis8cD5U
ZXN0IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hv
dWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgICAgInRlc3RTY3Jp
cHRFcnJvclVuaGFuZGxlZCIsCisgICAgInRlc3RTY3JpcHRFcnJvckhhbmRsZWQiCitdOwordmFy
IHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAodGVz
dEluZGV4IDwgdGVzdENhc2VzLmxlbmd0aCkgeworICAgICAgICB0ZXN0SW5kZXgrKzsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHdpbmRvd1t0ZXN0Q2FzZXNbdGVzdEluZGV4IC0gMV1dKCk7
CisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IHVuZXhwZWN0
ZWQgZXhjZXB0aW9uICIgKyBleCk7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JVbmhh
bmRsZWQoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMv
c2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanMiLCAibmFtZSIpOworICAgIC8vIFNoYXJlZFdv
cmtlcnMgc2hvdWxkIG9ubHkgaW52b2tlIG9uZXJyb3IgZm9yIGxvYWRpbmcgZXJyb3JzLgorICAg
IHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiRkFJTDogb25l
cnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCBlcnJvciIpOworICAgIH07CisgICAgd29ya2VyLnBv
cnQucG9zdE1lc3NhZ2UoInVuaGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JIYW5kbGVk
KCkKK3sKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJl
ZC13b3JrZXItc2NyaXB0LWVycm9yLmpzIiwgIm5hbWUyIik7CisgICAgLy8gU2hhcmVkV29ya2Vy
cyBzaG91bGQgb25seSBpbnZva2Ugb25lcnJvciBmb3IgbG9hZGluZyBlcnJvcnMuCisgICAgd29y
a2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yIik7CisgICAgfTsKKyAgICB3b3JrZXIucG9ydC5w
b3N0TWVzc2FnZSgiaGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRU
ZXN0KCk7CisgICAgfQorfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLXNpbXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYxMGVjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAor
VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS4KKworUEFTUzogUmVj
ZWl2ZWQgcGluZyBtZXNzYWdlCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2ltcGxlLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE4ZTEzOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVk
CkBAIC0wLDAgKzEsMzMgQEAKKzxib2R5PgorPHA+VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBj
b25zdHJ1Y3Rpb24gY2FzZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIg
d29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigncmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9u
LmpzJywgJ25hbWUnKTsKKword29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKK3dvcmtl
ci5wb3J0LnBvc3RNZXNzYWdlKCJkb25lIik7CisKK3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChldmVudC5kYXRh
ID09ICJET05FIikKKyAgICAgICAgZG9uZSgpOworfTsKKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFs
LWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxh
Y2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwKaW5kZXggY2UxYTJiMi4uZjM4NjAxYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25z
dHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItcmVwbGFj
ZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbApAQCAtMiwyOSArMiwxMyBAQAogPHA+VGVzdCByZXBs
YWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0LjwvcD4KIDxkaXYg
aWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorZnVuY3Rp
b24gY3JlYXRlV29ya2VyKCkKIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgcmV0dXJuIG5ldyBXb3JrZXIo
J3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpzJyk7CiB9Cis8L3NjcmlwdD4KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0K
LXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOwot
d29ya2VyLnBvc3RNZXNzYWdlKCJldmFsIHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNz
YWdlRXZlbnQ7Iik7Ci13b3JrZXIucG9zdE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKLQotd29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIGlmICghL2Zvb1wvXC9iYXIvLnRl
c3QoZXZ0LmRhdGEpKQotICAgICAgICBsb2coZXZ0LmRhdGEpOwotICAgIGVsc2UgewotICAgICAg
ICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci5qcyI+CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY2MDkwYy4uZDUzZDZjNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMDktMDgtMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVh
dGVkIGZpcnN0IHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgU2hhcmVkV29ya2VycyAoZXhlY3V0
aW9uIG9ubHksIG5vIHNoYXJpbmcpLgorICAgICAgICBBZGRlZCBpbml0aWFsIGltcGxlbWVudGF0
aW9ucyBvZiBTaGFyZWRXb3JrZXJUaHJlYWQgYW5kIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAg
ICAgIE5vIHY4IGJpbmRpbmdzIHlldC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5MjcKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoK
KyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxl
cy4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgQWRk
ZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIHNoYXJlZCB3b3JrZXIgZmlsZXMuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgQWRkZWQgY29kZSB0byBjb252ZXJ0IGZyb20gRXZlbnRUYXJnZXQgdG8gY29y
cmVjdCBKUyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAg
ICBBZGRlZCBjb2RlIHRvIGNhc3QgZnJvbSBKUyBvYmplY3QgdG8gYXBwcm9wcmlhdGUgRXZlbnRU
YXJnZXQgaW1wbCBjbGFzcy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Ry
dWN0U2hhcmVkV29ya2VyKToKKyAgICAgICAgVHdlYWtlZCB0aGUgY29uc3RydWN0b3IgY29kZSB0
byBwYXNzIGluIHRoZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgbGlrZSBub3JtYWwgd29ya2Vycy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyQ29udGV4dDo6bWFyayk6Cisg
ICAgICAgIEN1c3RvbSBtYXJraW5nIG9mIHRoZSBvbmNvbm5lY3QgaGFuZGxlci4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJD
b250ZXh0KToKKyAgICAgICAgQWRkZWQgcHJvcGVyIGNvbnZlcnNpb24gdG8gdGhlIGNvcnJlY3Qg
V29ya2VyQ29udGV4dCBkZXJpdmVkIGNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICBVcGRhdGVkIFdvcmtlclNjcmlwdENvbnRyb2xsZXIgdG8gY3Jl
YXRlIHRoZSBjb3JyZWN0IHR5cGUgb2YgYmluZGluZyBvYmplY3QgKEpTU2hhcmVkV29ya2VyQ29u
dGV4dCB2cyBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQpCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFNoYXJl
ZFdvcmtlckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUu
aDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBiaW5kaW5ncyBmaWxlcy4KKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICBBZGRlZCBjb25uZWN0IGV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6
dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgQVBJIGZvciBjYXN0aW5nIHRv
IG5ldyBkZXJpdmVkIGNsYXNzIChTaGFyZWRXb3JrZXJDb250ZXh0KS4KKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKToKKyAgICAgICAgTW92
ZWQgY29kZSB0aGF0IHJlc29sdmVzL3ZhbGlkYXRlcyBVUkxzIHRvIGJhc2UgY2xhc3Mgc28gaXQg
Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRlZGljYXRlZC9zaGFyZWQgd29ya2Vycy4KKyAgICAgICAg
KiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRl
eHQ6OmxvZ0V4Y2VwdGlvbik6CisgICAgICAgIFJlZmFjdG9yZWQgZXhjZXB0aW9uIGhhbmRsaW5n
IGNvZGUgLSBtb3ZlZCBvbmVycm9yIGhhbmRsaW5nIHRvIGJhc2UgY2xhc3MuCisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojppc0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAq
IHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAgQ2hhbmdlZCBjb25zdHJ1Y3RvciB0byBmaXJlIHVw
IHdvcmtlciB0aHJlYWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OlNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6flNoYXJlZFdvcmtlckNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bG9nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICBQbGFjZWhvbGRlciBtZXRob2RzIHVudGlsIHdlIGFkZCBzdXBwb3J0IGZvciBzZW5kaW5nIGV4
Y2VwdGlvbnMvbWVzc2FnZXMgdG8gY29uc29sZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHQ6OmRpc3BhdGNoQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0Ojp0aHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdv
cmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6dG9T
aGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRl
eHQ6OnNldE9uY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0
OjpvbmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bmFt
ZSk6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisg
ICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6flNoYXJlZFdvcmtlclJlcG9zaXRv
cnkpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgY29yZSBzaW5nbGV0b24gY2xhc3MgdGhh
dCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVtZW50IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJQcm94eTo6c2V0VGhyZWFkKToKKyAgICAgICAgUHJveHkgb2JqZWN0IHVzZWQg
dG8gaGFuZGxlIHJlc291cmNlIGxvYWRpbmcgZm9yIGEgZ2l2ZW4gc2hhcmVkIHdvcmtlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQpOgorICAgICAgICBQbGFjZWhvbGRlciByb3V0aW5lcyB1bnRpbCB3ZSBpbXBsZW1l
bnQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpj
cmVhdGUpOgorICAgICAgICBDcmVhdGVzIGEgdGFzayB0byBmaXJlIG9mZiBhIGNvbm5lY3QgZXZl
bnQgb24gdGhlIHdvcmtlciB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJD
b25uZWN0VGFzazo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlckxvYWRlcjo6U2hhcmVkV29ya2VyTG9hZGVyKToKKyAgICAgICAgQWRkZWQg
aGVscGVyIG9iamVjdCB0byBsb2FkIHRoZSBpbml0aWFsIHNjcmlwdCBmb3IgdGhlIHdvcmtlci4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckxvYWRlcjo6bG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsOjppbnN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbDo6d29ya2VyU2NyaXB0TG9hZGVkKToKKyAg
ICAgICAgRmlyZXMgb2ZmIHRoZSB3b3JrZXIgdGhyZWFkIG9uY2UgdGhlIHNjcmlwdCBpcyBsb2Fk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsOjpTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0
b3J5SW1wbDo6flNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsKToKKyAgICAgICAgKiB3b3JrZXJz
L1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMv
U2hhcmVkV29ya2VyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWQ6OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJU
aHJlYWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJl
ZFdvcmtlclRocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4
Y2VwdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgQWRkZWQgQVBJcyB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgYSBnaXZlbiBjb250ZXh0Lgor
CiA9PT0gRW5kIG1lcmdlIG9mIG5pdHJvLWV4dHJlbWUgYnJhbmNoIDIwMDktMDctMzAgPT09CiAK
IDIwMDktMDUtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5j
cHAKaW5kZXggMTQ1NTA2MC4uMzk5ODAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTE3Niw2ICsxNzYs
NyBAQAogI2luY2x1ZGUgIkpTUkdCQ29sb3IuY3BwIgogI2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIK
ICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJD
b250ZXh0LmNwcCIKICNpbmNsdWRlICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTFJl
c3VsdFNldC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAyYzk0ZGYwLi5jYjQ4NTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDQs
NiArMjA0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAogICAgIFJl
Y3QgXAogICAgIFNoYXJlZFdvcmtlciBcCisgICAgU2hhcmVkV29ya2VyQ29udGV4dCBcCiAgICAg
U1FMRXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBcCiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCBhZGQzNWFhLi4wNDhjYjVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1Myw2ICsyNTMsNyBAQCBJ
RExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAog
CVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJD
b250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgXAogCVdlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9u
LmlkbCBcCkBAIC0zOTksNyArNDAwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20u
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwIFwK
QEAgLTIzODAsOSArMjM4MCwxNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIHdlYmNvcmVfYnVp
bHRfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgXAog
CVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIFwKLQlXZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyLmgKKwlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmggXAorCVdlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlckNvbnRleHQuaCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRv
cnkuaCBcCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmNwcCBc
CisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmggXAorCVdlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmgKIAogZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YjI2NDIxLi5hMzQzNWE4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5p
ZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwnLAog
ICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCcsCisgICAgICAgICAgICAnd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3Jr
ZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsJywKICAgICAg
ICAgICAgICd3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCcsCkBAIC01MTcsNiArNTE4LDEwIEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuaCcsCisJICAgICdiaW5kaW5ncy9qcy9KU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvci5oJywKKwkgICAgJ2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAnLAorCSAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCcsCkBA
IC0zMzIxLDYgKzMzMjYsMTMgQEAKICAgICAgICAgICAgICd3b3JrZXJzL0dlbmVyaWNXb3JrZXJU
YXNrLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJD
b250ZXh0LmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
JywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmNwcCcs
CisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbC5oJywKKyAg
ICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAnLAorICAgICAgICAgICAg
J3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29y
a2VyLmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXIuaCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
cHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0M2E5MWU4Li41NDI2Y2M0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0
MDksMTIgKzI0MDksMTcgQEAgY29udGFpbnMoREVGSU5FUywgU0hBUkVEX1dPUktFUlM9MSkgewog
ICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0x
CiAKICAgICBJRExfQklORElOR1MgKz0gXAotICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5p
ZGwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9T
aGFyZWRXb3JrZXJDb250ZXh0LmlkbAogCiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBcCi0gICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2Vy
LmNwcAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgXAorICAgICAgICB3b3JrZXJz
L1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5SW1wbC5jcHAgXAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5j
cHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZiNjhmZWMuLjQ3NGQ2N2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzkxNSw2ICs3OTE1LDU0IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQuY3Bw
Ig0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29s
DQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxFcnJvci5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjQxMDAsNiArMjQxNDgsMzQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
d29ya2Vyc1xTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyQ29udGV4
dC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cd29ya2Vyc1xTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXFNoYXJlZFdvcmtlclJl
cG9zaXRvcnlJbXBsLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGwuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtl
cnNcU2hhcmVkV29ya2VyVGhyZWFkLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyVGhyZWFkLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3Jr
ZXJzXFdvcmtlci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMjg3MzEsNiArMjg4MDcs
MTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2OTFkMmU3
Li5kYzNkZWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjg0LDYgKzY4NCwxNyBAQAogCQk0MUQwMTVDQjBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVu
dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLzsgfTsKIAkJNDFE
MDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdDMEZGOTM1Q0EwMDk1RURD
RSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgKi87IH07CiAJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURD
RSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmgg
Ki87IH07CisJCTQxRDE2OEU3MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2
OERGMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKKwkJ
NDFEMTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUwMTAyMjZFODkw
MDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggKi87IH07CisJCTQxRDE2OEU5MTAyMjZF
ODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTExMDIyNkU4OTAwOUJDODI3IC8q
IFNoYXJlZFdvcmtlckNvbnRleHQuaWRsICovOyB9OworCQk0MUQxNjhFQTEwMjI2RTg5MDA5QkM4
MjcgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTIxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuaCAqLzsgfTsKKwkJNDFEMTY4RUIxMDIyNkU4OTAwOUJDODI3IC8qIFNo
YXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUzMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5SW1wbC5jcHAgKi87IH07CisJCTQxRDE2OEVDMTAyMjZFODkwMDlCQzgyNyAv
KiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlclJlcG9zaXRvcnlJbXBsLmggKi87IH07CisJCTQxRDE2OEVEMTAyMjZFODkwMDlCQzgyNyAv
KiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5jcHAgKi87IH07CisJCTQxRDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3Jr
ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRDE2OEU2MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsK
KwkJNDFEMTY4RjAxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQx
NjhFRjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAq
LzsgfTsKKwkJNDFEMTY5MDUxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQx
NjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsK
KwkJNDFEMTY5MDYxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY5MDQxMDIz
OEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oICovOyB9OwogCQk0MUUxQjFE
MDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsg
fTsKIAkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0MwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLzsgfTsKQEAgLTU2NTcsNiArNTY2
OCwxNyBAQAogCQk0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNT
aGFyZWRXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
aGFyZWRXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwN0E3RDBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDFEMTY4REYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2hhcmVkV29ya2VyQ29udGV4dC5j
cHA7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUQxNjhFMDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2Vy
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaGFyZWRXb3JrZXJD
b250ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTExMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNoYXJlZFdvcmtlckNvbnRl
eHQuaWRsOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTIxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEUzMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbC5jcHA7IHBhdGggPSB3
b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDFEMTY4RTQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9z
aXRvcnlJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtl
clJlcG9zaXRvcnlJbXBsLmg7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEU1MTAyMjZFODkwMDlC
QzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2hhcmVkV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVk
V29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTYx
MDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTaGFyZWRXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEVG
MTAyMjZFQzQwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY5MDMxMDIzOEI2NjAw
OUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29y
a2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuY3BwOyBwYXRoID0gd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTFCMUNCMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5oOyBwYXRoID0gd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEFic3RyYWN0V29y
a2VyLmlkbDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTk0NCw2ICs5OTY2LDE0IEBACiAJCQkJNDFFMUIxQ0QwRkY1OTg2
OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8sCiAJCQkJNDFFMUIxQ0UwRkY1OTg2OTAw
NTc2QjNCIC8qIFNoYXJlZFdvcmtlci5oICovLAogCQkJCTQxRTFCMUNGMEZGNTk4NjkwMDU3NkIz
QiAvKiBTaGFyZWRXb3JrZXIuaWRsICovLAorCQkJCTQxRDE2OERGMTAyMjZFODkwMDlCQzgyNyAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLywKKwkJCQk0MUQxNjhFMDEwMjI2RTg5MDA5QkM4
MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5oICovLAorCQkJCTQxRDE2OEUxMTAyMjZFODkwMDlC
QzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCAqLywKKwkJCQk0MUQxNjhFMjEwMjI2RTg5
MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oICovLAorCQkJCTQxRDE2OEUzMTAy
MjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbC5jcHAgKi8sCisJCQkJ
NDFEMTY4RTQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmgg
Ki8sCisJCQkJNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5j
cHAgKi8sCisJCQkJNDFEMTY4RTYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVh
ZC5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovLAog
CQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywKIAkJCQkyRTQzNDYz
NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKQEAgLTEzNzAwLDYgKzEzNzMwLDcg
QEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0b20u
Y3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3RvbS5j
cHAgKi8sCisJCQkJNDFEMTY4RUYxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFG
MTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkw
QjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLApAQCAtMTQwNTMsNiArMTQwODQs
OCBAQAogCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmgg
Ki8sCiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAq
LywKIAkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLywK
KwkJCQk0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCAqLywKKwkJCQk0MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250
ZXh0LmggKi8sCiAJCQkJRTFDOEJFNUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNwcCAq
LywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJCQlF
MTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAgLTE3
MDYzLDYgKzE3MDk2LDExIEBACiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3Bl
Y3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMUU4OEY2MTAxQ0MzODQwMDBDNERG
NSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUyRDAw
MzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFE
MTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxRDE2OEVBMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQxNjhFQzEwMjI2RTg5MDA5QkM4MjcgLyogU2hh
cmVkV29ya2VyUmVwb3NpdG9yeUltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDE2OEVFMTAy
MjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQxRDE2OTA2MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMTcxNzcsNiArMTcyMTUsNyBAQAogCQkJCTQxNjJBNDUyMTAxMTQ1QUUw
MERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJ
CQkJMkVDRjdBRTMxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuaWRsIGluIFJlc291cmNl
cyAqLywKIAkJCQk3QTc0RUNCNzEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5p
ZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTQxRDE2OEU5MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTEwNSw2ICsxOTE0NCwx
MSBAQAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tlbmRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0REY1IC8q
IFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQTNENThFMTAxQzE1MkQwMDMx
NkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFE
MTY4RTcxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDFEMTY4RUIxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9z
aXRvcnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRDE2OEVEMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFEMTY4RjAx
MDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0MUQxNjkwNTEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJD
b250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5j
cHAKaW5kZXggYjc1Y2NjZi4uNmMzNmNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCkBAIC01OCw3ICs1OCw5IEBACiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAj
aW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJD
b250ZXh0LmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTEwNyw2ICsxMDks
OSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
ICAgICBpZiAoU2hhcmVkV29ya2VyKiBzaGFyZWRXb3JrZXIgPSB0YXJnZXQtPnRvU2hhcmVkV29y
a2VyKCkpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc2hhcmVkV29y
a2VyKTsKKworICAgIGlmIChTaGFyZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFy
Z2V0LT50b1NoYXJlZFdvcmtlckNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9i
YWxPYmplY3Qod29ya2VyQ29udGV4dCk7CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTQyLDYgKzE0Nyw3IEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICBDT05WRVJU
X1RPX0VWRU5UX1RBUkdFVChTaGFyZWRXb3JrZXIpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJH
RVQoU2hhcmVkV29ya2VyQ29udGV4dCkKICNlbmRpZgogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcAppbmRleCBh
MzEyMjI1Li5lMmYxMTM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRX
b3JrZXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDE1ICs0NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjb25zdCBDbGFzc0luZm8gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiU2hhcmVkV29ya2VyQ29uc3RydWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmpl
Y3QoSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKQorICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0
UHJvdG90eXBlKCkpLCBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIEpTU2hhcmVkV29ya2VyUHJvdG90eXBlOjpzZWxmKGV4ZWMs
IGdsb2JhbE9iamVjdCksIE5vbmUpOwogICAgIC8vIEhvc3QgZnVuY3Rpb25zIGhhdmUgYSBsZW5n
dGggcHJvcGVydHkgZGVzY3JpYmluZyB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGFyZ3VtZW50cy4K
ICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhl
YywgMiksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogfQogCi1zdGF0aWMgSlNPYmpl
Y3QqIGNvbnN0cnVjdFNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29u
c3QgQXJnTGlzdCYgYXJncykKK3N0YXRpYyBKU09iamVjdCogY29uc3RydWN0U2hhcmVkV29ya2Vy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQogeworICAgIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBz
dGF0aWNfY2FzdDxKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yKj4oY29uc3RydWN0b3IpOworCiAg
ICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
U3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogCkBAIC02MiwxMyArNjQsMTMg
QEAgc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RTaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIHVzZSBib3RoIHRoZSBkeW5hbWljIHNjb3BlIGFuZCB0aGUgbGV4aWNhbCBzY29wZSAoZHlu
YW1pYyBzY29wZSBmb3IgcmVzb2x2aW5nIHRoZSB3b3JrZXIgVVJMKQorICAgIERPTVdpbmRvdyog
d2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBs
KCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4g
d29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBl
Yyk7CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVh
dGUoc2NyaXB0VVJMLCBuYW1lLCB3aW5kb3ctPmRvY3VtZW50KCksIGVjKTsKICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgLy8gRklYTUU6IHRvSlMoKSBjcmVhdGVzIGFuIG9i
amVjdCB3aG9zZSBwcm90b3R5cGUgaXMgZGVyaXZlZCBmcm9tIGxleGljYWxHbG9iYWxTY29wZSwg
d2hpY2ggaXMgaW5jb3JyZWN0IChCdWcgMjcwODgpCi0gICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMo
ZXhlYywgd29ya2VyLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCB3b3JrZXIucmVsZWFzZSgpKSk7CiB9CiAK
IENvbnN0cnVjdFR5cGUgSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg2MjMxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
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
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1
ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjptYXJrKCkK
K3sKKyAgICBCYXNlOjptYXJrKCk7CisKKyAgICBtYXJrSWZOb3ROdWxsKGltcGwoKS0+b25jb25u
ZWN0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEJhc2UuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmNwcAppbmRleCA2MjJkYTcwLi4xZTRkZjQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU1dvcmtl
ckNvbnRleHRCYXNlLmgiCiAKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCIK
KyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJKU1dvcmtlckNv
bnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAKQEAgLTgzLDEwICs4NCwyNiBA
QCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KEpT
VmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCitKU1NoYXJlZFdvcmtlckNvbnRleHQqIHRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KEpTVmFs
dWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xh
c3NJbmZvKCk7CisgICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNTaGFyZWRXb3JrZXJDb250ZXh0Ojpz
X2luZm8pCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1NoYXJlZFdvcmtlckNvbnRleHQq
Pihhc09iamVjdCh2YWx1ZSkpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIEpTV29ya2Vy
Q29udGV4dCogdG9KU1dvcmtlckNvbnRleHQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICAvLyBXaGVu
IHdlIHN1cHBvcnQgc2hhcmVkIHdvcmtlcnMsIHdlJ2xsIGFkZCBjb2RlIHRvIHRlc3QgZm9yIFNo
YXJlZFdvcmtlckNvbnRleHQgdG9vLgotICAgIHJldHVybiB0b0pTRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCh2YWx1ZSk7CisgICAgSlNXb3JrZXJDb250ZXh0KiBjb250ZXh0ID0gdG9KU0RlZGljYXRl
ZFdvcmtlckNvbnRleHQodmFsdWUpOworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBp
ZiAoIWNvbnRleHQpCisgICAgICAgIGNvbnRleHQgPSB0b0pTU2hhcmVkV29ya2VyQ29udGV4dCh2
YWx1ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gY29udGV4dDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaAppbmRleCBm
N2FkMTdmLi5hOWE2ZTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEJhc2UuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJh
c2UuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIEpTU2hhcmVkV29ya2VyQ29udGV4
dDsKICAgICBjbGFzcyBKU1dvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsK
IApAQCAtNjEsNiArNjIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dCogdG9KU0RlZGljYXRlZFdvcmtlckNvbnRleHQoSlNDOjpKU1ZhbHVlKTsK
ICAgICBKU1dvcmtlckNvbnRleHQqIHRvSlNXb3JrZXJDb250ZXh0KEpTQzo6SlNWYWx1ZSk7CiAK
KyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgSlNTaGFyZWRXb3JrZXJDb250ZXh0KiB0
b0pTU2hhcmVkV29ya2VyQ29udGV4dChKU0M6OkpTVmFsdWUpOworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYmU2YTA5OC4uNzQ3
ZmIxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFBy
b3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaD4KQEAgLTQxLDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9Db21w
bGV0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIAorI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRleHQuaCIKKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MywxMiAr
NzgsMjIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBS
ZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwogICAgIFByb3Rl
Y3RlZFB0cjxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKHdvcmtl
ckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKIAotICAgIC8vIEZJWE1FOiBX
aGVuIHdlIGFkZCBTaGFyZWRXb3JrZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUgY29ycmVjdCB3cmFw
cGVyIGhlcmUuCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlw
ZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwotICAgIFByb3RlY3RlZFB0cjxKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBl
KGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKLSAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0
ZVN0cnVjdHVyZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKLQotICAgIG1fd29ya2VyQ29u
dGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNv
bnRleHQqPihtX3dvcmtlckNvbnRleHQpKTsKKyAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQoKSkgeworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkZWRp
Y2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3RvdHlwZSk7CisgICAg
ICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGlj
YXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1
cmUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVkQ29udGV4dFBy
b3RvdHlwZSk7CisKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9IG5ldyAobV9nbG9i
YWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3RydWN0dXJlLnJlbGVhc2Uo
KSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSk7CisjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3dvcmtl
ckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29u
dGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwor
ICAgICAgICBQcm90ZWN0ZWRQdHI8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFy
ZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29y
a2VyQ29udGV4dFByb3RvdHlwZShzaGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVh
c2UoKSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29y
a2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUpOworCisg
ICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkg
SlNTaGFyZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4
dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpOworI2VuZGlmCisgICAgfQogfQogCiBTY3JpcHRW
YWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KaW5kZXggODcyMmU0My4uNGZjMjI0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00MzQsNyArNDM0LDcgQEAgRU5ECiAgICAgLy8gY29u
dGV4dCBvZiB0aGUgRE9NV2luZG93IGFuZCBub3QgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxl
ci4KICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcih0eXBlLCB3aW5kb3cp
OwogRU5ECi0gICAgfSBlbHNpZiAoJGNsYXNzSW5kZXggZXEgIkRFRElDQVRFRFdPUktFUkNPTlRF
WFQiIG9yICRjbGFzc0luZGV4IGVxICJXT1JLRVJDT05URVhUIikgeworICAgIH0gZWxzaWYgKCRj
bGFzc0luZGV4IGVxICJERURJQ0FURURXT1JLRVJDT05URVhUIiBvciAkY2xhc3NJbmRleCBlcSAi
V09SS0VSQ09OVEVYVCIgb3IgJGNsYXNzSW5kZXggZXEgIlNIQVJFRFdPUktFUkNPTlRFWFQiKSB7
CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0g
PSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgcmV0dXJu
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKS0+R2V0Q29uc3RydWN0b3Io
dHlwZSk7CkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgICAgIHJldHVybiAicmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50TGlzdGVuZXJU
b1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlmICgkdHlwZSBlcSAiRGVkaWNhdGVk
V29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIldvcmtlckNvbnRleHQiKSB7CisgICAgaWYgKCR0
eXBlIGVxICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IiBvciAkdHlwZSBlcSAiV29ya2VyQ29udGV4
dCIgb3IgJHR5cGUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiKSB7CiAgICAgICAgICRpbXBsSW5j
bHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOwogICAgICAgICByZXR1
cm4gInJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRUb1Y4
T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NT2JqZWN0c0luY2x1ZGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1
ZGUuaAppbmRleCAzMjM1NGIzLi5kZGZkNjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmpl
Y3RzSW5jbHVkZS5oCkBAIC0yMDksNiArMjA5LDcgQEAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCiAjaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIu
aCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjZW5kaWYgLy8gU0hBUkVEX1dP
UktFUlMKIAogI2lmIEVOQUJMRShYUEFUSCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5MjcyYmE0Li45ZjhmNGE1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhjaGVja2luZykgXAogICAgIG1hY3JvKGNsaWNrKSBcCiAgICAgbWFjcm8oY2xvc2UpIFwK
KyAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwKICAgICBtYWNy
byhjb3B5KSBcCiAgICAgbWFjcm8oY3V0KSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggNDI2NjhlMy4u
N2JhMDU4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQCBTaGFyZWRXb3Jr
ZXIqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlcigpCiB7CiAgICAgcmV0dXJuIDA7CiB9CitT
aGFyZWRXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkK
K3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
aW5kZXggZjBjNzk0Zi4uMmVkZWRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CisgICAg
Y2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3Mg
WE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NCw2
ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VS
UykKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CisgICAg
ICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7
CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNw
cAppbmRleCA3Y2IyYzExLi4xYzkzZTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAK
QEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEzNCw2ICsxMzYsMjYgQEAgYm9vbCBBYnN0cmFjdFdvcmtlcjo6ZGlz
cGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW4K
ICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorS1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVS
TChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHVybC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gS1VS
TCgpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIGR5bmFtaWMg
Z2xvYmFsIHNjb3BlIChidWcgIzI3ODg3KQorICAgIEtVUkwgc2NyaXB0VVJMID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICghc2NyaXB0VVJMLmlz
VmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBzY3Jp
cHRVUkw7CisgICAgfQorCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNjcmlwdFVSTCku
Z2V0KCkpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgIH0KKyAgICByZXR1cm4g
c2NyaXB0VVJMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
IGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKaW5kZXggMjhjYzUwZC4uMGQxNzZk
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJBdG9taWNTdHJpbmdIYXNoLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC03MCw4ICs3MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFi
c3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAgICAgdmlydHVhbCB+
QWJzdHJhY3RXb3JrZXIoKTsKIAotICAgIHByaXZhdGU6CisgICAgcHJvdGVjdGVkOgorICAgICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBV
UkwgYW5kIGNoZWNrcyB0aGUgcmVzdWx0IGZvciB2YWxpZGl0eS4KKyAgICAgICAgS1VSTCByZXNv
bHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKKyAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBiL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAppbmRleCAyNGNmMTQ4Li5m
NWMyYzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCkBA
IC01MywxNCArNTMsOSBAQCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp+RGVkaWNhdGVkV29ya2Vy
Q29udGV4dCgpCiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkud29ya2VyQ29udGV4
dERlc3Ryb3llZCgpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpsb2dFeGNl
cHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCkKIHsKLSAgICBib29sIGVycm9ySGFuZGxlZCA9IGZhbHNlOwotICAg
IGlmIChvbmVycm9yKCkpCi0gICAgICAgIGVycm9ySGFuZGxlZCA9IG9uZXJyb3IoKS0+cmVwb3J0
RXJyb3IoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwotCi0gICAgaWYgKCFl
cnJvckhhbmRsZWQpCi0gICAgICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RF
eGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVS
TCk7CisgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdEV4Y2VwdGlvblRvV29y
a2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKIH0KIAogdm9p
ZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjphZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbiwgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oCmluZGV4IDA2ZjZjOWMuLmQ0ZWEwZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuaApAQCAtMzEsNiArMzEsOCBAQAogI2lmbmRlZiBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0X2gKICNkZWZpbmUgRGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCiAKKyNpZiBF
TkFCTEUoV09SS0VSUykKKwogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDYsMTMgKzQ4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgfQogICAgICAgICB2aXJ0dWFsIH5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCk7CiAKLSAgICAg
ICAgLy8gV29ya2VyVXRpbHMKKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgICAgICAvLyBPdmVycmlkZGVu
IHRvIGFsbG93IHVzIHRvIGNoZWNrIG91ciBwZW5kaW5nIGFjdGl2aXR5IGFmdGVyIGV4ZWN1dGlu
ZyBpbXBvcnRlZCBzY3JpcHQuCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNh
bGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgICAgICAv
LyBFdmVudFRhcmdldAogICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRv
RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CkBAIC03MCw0ICs3NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZW5k
aWYgLy8gRU5BQkxFKFdPUktFUlMpCisKICNlbmRpZiAvLyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggZTFkMzBkMy4uNTljZDJlOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTI3LDIwICsyNywzMSBAQAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJM
RShTSEFSRURfV09SS0VSUykKIAogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVk
ZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFy
ZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKK1NoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIDog
QWJzdHJhY3RXb3JrZXIoY29udGV4dCkKIHsKLSAgICAvLyBQbGFjZWhvbGRlciAtIHVsdGltYXRl
bHkgd2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRoZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LgorICAgIFJlZlB0cjxNZXNzYWdlQ2hhbm5lbD4gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3BvcnQgPSBjaGFubmVsLT5w
b3J0MSgpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZVBvcnQgPSBjaGFu
bmVsLT5wb3J0MigpLT5kaXNlbnRhbmdsZShlYyk7CisgICAgQVNTRVJUKCFlYyk7CisKKyAgICBL
VVJMIHNjcmlwdFVybCA9IHJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm47CisgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS0+Y29ubmVj
dCh0aGlzLCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VXJsLCBuYW1lLCBlYyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKaW5kZXgg
MzZjN2Q4NS4uMjRhYTAyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU4LDQgKzU5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKICNlbmRpZiAvLyBTaGFy
ZWRXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRl
eHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YzE3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
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
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1
ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hh
cmVkV29ya2VyQ29udGV4dDo6U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtlclRo
cmVhZCogdGhyZWFkKQorICAgIDogV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFk
KQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK1NoYXJlZFdvcmtlckNvbnRleHQ6On5TaGFy
ZWRXb3JrZXJDb250ZXh0KCkKK3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0Ojpsb2dF
eGNlcHRpb24oY29uc3QgU3RyaW5nJiwgaW50LCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJ
WE1FOiBmb3J3YXJkIHRvIGNvbnNvbGUgKGRvIG5vdCBuZWVkIHRvIHJlcG9ydCB0byBwYXJlbnQg
Y29udGV4dCkuCit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNz
YWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1F
OiBmb3J3YXJkIHRvIGNvbnNvbGUuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBT
aGFyZWRXb3JrZXJDb250ZXh0OjpkaXNwYXRjaENvbm5lY3QoUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dD4gcG9ydCkKK3sKKyAgICAvLyBTaW5jZSBjbG9zZSgpIHN0b3BzIHRoZSB0aHJlYWQgZXZlbnQg
bG9vcCwgdGhpcyBzaG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxlZCB3aGlsZSBjbG9zaW5nLgorICAg
IEFTU0VSVCghaXNDbG9zaW5nKCkpOworICAgIC8vIFRoZSBjb25uZWN0IGV2ZW50IHVzZXMgdGhl
IE1lc3NhZ2VFdmVudCBpbnRlcmZhY2UsIGJ1dCBoYXMgdGhlIG5hbWUgImNvbm5lY3QiLgorICAg
IFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoIiIsICIiLCAiIiwgMCwg
cG9ydCk7CisgICAgZXZ0LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFs
c2UsIGZhbHNlKTsKKworICAgIGlmIChtX29uY29ubmVjdExpc3RlbmVyLmdldCgpKSB7CisgICAg
ICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQo
dGhpcyk7CisgICAgICAgIG1fb25jb25uZWN0TGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQo
KSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGRpc3Bh
dGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCitTaGFy
ZWRXb3JrZXJUaHJlYWQqIFNoYXJlZFdvcmtlckNvbnRleHQ6OnRocmVhZCgpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdvcmtlclRocmVhZCo+KEJhc2U6OnRocmVhZCgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaCBi
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYjIyZWNkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVk
V29ya2VyQ29udGV4dF9oCisjZGVmaW5lIFNoYXJlZFdvcmtlckNvbnRleHRfaAorCisjaWYgRU5B
QkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CisKKyAgICBj
bGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0IDogcHVibGljIFdvcmtlckNvbnRleHQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0IEJhc2U7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlckNvbnRleHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtl
clRocmVhZCogdGhyZWFkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlZFdvcmtlckNvbnRleHQobmFtZSwgdXJsLCB1c2VyQWdlbnQsIHRocmVhZCkpOwor
ICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlckNvbnRleHQoKTsKKworICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgbG9nRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0
CisgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250
ZXh0KCkgeyByZXR1cm4gdGhpczsgfQorCisgICAgICAgIC8vIFNldHRlcnMvR2V0dGVycyBmb3Ig
YXR0cmlidXRlcyBpbiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbAorICAgICAgICB2b2lkIHNldE9u
Y29ubmVjdChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbmNv
bm5lY3RMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciog
b25jb25uZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vbmNvbm5lY3RMaXN0ZW5lci5nZXQoKTsgfQor
ICAgICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCisgICAgICAg
IHZvaWQgZGlzcGF0Y2hDb25uZWN0KFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKworICAgICAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOworICAgIHByaXZhdGU6CisgICAgICAgIFNo
YXJlZFdvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiwgU2hhcmVkV29ya2VyVGhyZWFkKik7CisgICAgICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBtX29uY29ubmVjdExpc3RlbmVyOworICAgICAgICBTdHJpbmcgbV9uYW1lOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09S
S0VSUykKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlckNvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlckNvbnRleHQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmI5ZmUwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
Q29udGV4dC5pZGwKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSB0aHJlYWRzIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTLAorICAgICAgICBDdXN0
b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAg
IElzV29ya2VyQ29udGV4dCwKKyAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCisgICAg
ICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBTaGFyZWRXb3JrZXJDb250ZXh0IDogV29ya2VyQ29u
dGV4dCB7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvbm5lY3Q7CisKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wZGZkYjcwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5X2gKKyNkZWZpbmUgU2hhcmVkV29ya2VyUmVwb3NpdG9yeV9oCisK
KyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOworICAgIGNsYXNz
IFNoYXJlZFdvcmtlcjsKKyAgICBjbGFzcyBTdHJpbmc7CisKKyAgICB0eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOworCisgICAgLy8gSW50ZXJmYWNlIHRvIGEgcmVwb3NpdG9yeSB3aGljaCBtYW5h
Z2VzIHJlZmVyZW5jZXMgdG8gdGhlIHNldCBvZiBhY3RpdmUgc2hhcmVkIHdvcmtlcnMuCisgICAg
Y2xhc3MgU2hhcmVkV29ya2VyUmVwb3NpdG9yeSB7CisgICAgcHVibGljOgorICAgICAgICAvLyBT
dGF0aWMgZmFjdG9yeSBmb3IgZ2V0dGluZyB0aGUgYnJvd3Nlci1zcGVjaWZpYyByZXBvc2l0b3J5
IGltcGxlbWVudGF0aW9uLgorICAgICAgICBzdGF0aWMgU2hhcmVkV29ya2VyUmVwb3NpdG9yeSog
aW5zdGFuY2UoKTsKKworICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFzc2VkIFNoYXJlZFdvcmtl
ciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQsIGNyZWF0aW5nIGEgbmV3
IHRocmVhZCBpZiBuZWNlc3NhcnkuCisgICAgICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNo
YXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgflNoYXJlZFdvcmtlclJlcG9zaXRvcnkoKSB7fQorICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2VuZGlm
IC8vIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJSZXBvc2l0b3J5SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWIxMWRjYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5SW1wbC5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5SW1wbC5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5o
IgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlw
dExvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZFdv
cmtlclByb3h5IDogcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKK3B1YmxpYzoKKyAgICB2b2lk
IHNldFRocmVhZChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhy
ZWFkID0gdGhyZWFkOyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQorICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgV29ya2VyTG9hZGVyUHJveHkgQVBJcyBieSBwcm94eWluZyB0byBhbiBhY3Rp
dmUgZG9jdW1lbnQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc1JlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgeyBub3RJbXBsZW1lbnRlZCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gbV90
aHJlYWQ7Cit9OworCitjbGFzcyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsPiBjaGFubmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFy
ZWRXb3JrZXJDb25uZWN0VGFzayhjaGFubmVsKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNo
YXJlZFdvcmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFu
bmVsKQorICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVsKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29u
dGV4dCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQ
b3J0OjpjcmVhdGUoKnNjcmlwdENvbnRleHQpOworICAgICAgICBwb3J0LT5lbnRhbmdsZShtX2No
YW5uZWwucmVsZWFzZSgpKTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdENvbnRleHQtPmlzV29ya2Vy
Q29udGV4dCgpKTsKKyAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRp
Y19jYXN0PFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKHdv
cmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAgd29ya2VyQ29u
dGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3BhdGNoQ29ubmVjdChwb3J0KTsKKyAg
ICB9CisKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7Cit9OworCitj
bGFzcyBTaGFyZWRXb3JrZXJMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJM
b2FkZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgU2hhcmVkV29ya2VyTG9hZGVyKFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYgdXJsKTsKKworICAgIC8vIFdvcmtlclNjcmlw
dExvYWRlckNsaWVudCBjYWxsYmFjaworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZCgp
OworCitwcml2YXRlOgorICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOworICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fcG9ydDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IE93blB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0TG9hZGVyOworfTsKKworU2hhcmVk
V29ya2VyTG9hZGVyOjpTaGFyZWRXb3JrZXJMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+
IHdvcmtlciwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdGhpcykKKyAgICAsIG1fd29ya2VyKHdvcmtlcikKKyAgICAsIG1fcG9ydChwb3J0
KQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyTG9hZGVyOjps
b2FkKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBNYXJrIHRoaXMgb2JqZWN0IGFzIGFjdGl2
ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBsb2FkLgorICAgIEFTU0VSVCghaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpOworICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigp
OworICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCB1cmwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKKworICAgIC8v
IFN0YXkgYWxpdmUgdW50aWwgdGhlIGxvYWQgZmluaXNoZXMuCisgICAgc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
KQoreworICAgIC8vIEhhbmQgb2ZmIHRoZSBqdXN0LWxvYWRlZCBjb2RlIHRvIHRoZSByZXBvc2l0
b3J5IHRvIHN0YXJ0IHVwIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgIGlmIChtX3NjcmlwdExvYWRl
ci0+ZmFpbGVkKCkpCisgICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7
CisgICAgZWxzZQorICAgICAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbDo6aW5zdGFuY2Uo
KS0+d29ya2VyU2NyaXB0TG9hZGVkKG1fbmFtZSwgbV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBt
X3NjcmlwdExvYWRlci0+c2NyaXB0KCksIG1fcG9ydC5yZWxlYXNlKCkpOworCisgICAgLy8gVGhp
cyBmcmVlcyB0aGlzIG9iamVjdCAtIG11c3QgYmUgdGhlIGxhc3QgYWN0aW9uIGluIHRoaXMgZnVu
Y3Rpb24uCisgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisKK1NoYXJlZFdvcmtl
clJlcG9zaXRvcnkqIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCkKK3sKKyAgICBy
ZXR1cm4gU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGw6Omluc3RhbmNlKCk7Cit9CisKK1NoYXJl
ZFdvcmtlclJlcG9zaXRvcnlJbXBsKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1wbDo6aW5zdGFu
Y2UoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5SW1wbCosIGluc3RhbmNlID0gbmV3IFNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsKTsK
KyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeUlt
cGw6OndvcmtlclNjcmlwdExvYWRlZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgd29ya2VyU2NyaXB0LCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCkKK3sKKyAgICAvLyBGSVhNRTogQ2Fj
aGUgdGhlIHByb3h5IHRvIGFsbG93IHNoYXJpbmcgYW5kIHRvIGFsbG93IGNsZWFudXAgYWZ0ZXIg
dGhlIHRocmVhZCBleGl0cy4KKyAgICBTaGFyZWRXb3JrZXJQcm94eSAqcHJveHkgPSBuZXcgU2hh
cmVkV29ya2VyUHJveHkoKTsKKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiB0aHJlYWQg
PSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShuYW1lLCB1cmwsIHVzZXJBZ2VudCwgd29ya2Vy
U2NyaXB0LCAqcHJveHkpOworICAgIHByb3h5LT5zZXRUaHJlYWQodGhyZWFkKTsKKyAgICB0aHJl
YWQtPnN0YXJ0KCk7CisgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soU2hhcmVkV29ya2Vy
Q29ubmVjdFRhc2s6OmNyZWF0ZShwb3J0KSk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6Y29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIC8vIENyZWF0ZSBhIGxvYWRlciB0byBsb2Fk
L2luaXRpYWxpemUgdGhlIHJlcXVlc3RlZCB3b3JrZXIKKyAgICBSZWZQdHI8U2hhcmVkV29ya2Vy
TG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyTG9hZGVyKHdvcmtlciwg
cG9ydC5yZWxlYXNlKCksIG5hbWUpKTsKKyAgICBsb2FkZXItPmxvYWQodXJsKTsKK30KKworU2hh
cmVkV29ya2VyUmVwb3NpdG9yeUltcGw6OlNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsKCkKK3sK
K30KKworU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGw6On5TaGFyZWRXb3JrZXJSZXBvc2l0b3J5
SW1wbCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5SW1wbC5oIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRv
cnlJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmODZjOAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5SW1w
bC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsX2gK
KyNkZWZpbmUgU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGxfaAorCisjaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgorCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBL
VVJMOworICAgIGNsYXNzIFNoYXJlZFdvcmtlclByb3h5OworCisgICAgLy8gUGxhdGZvcm0tc3Bl
Y2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkgc2luZ2xl
dG9uLgorICAgIGNsYXNzIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsIDogcHVibGljIFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnksIE5vbmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNo
YXJlZFdvcmtlclJlcG9zaXRvcnlJbXBsKCk7CisgICAgICAgIH5TaGFyZWRXb3JrZXJSZXBvc2l0
b3J5SW1wbCgpOworCisgICAgICAgIC8vIEludm9rZWQgb25jZSB0aGUgd29ya2VyIHNjcmlwdCBo
YXMgYmVlbiBsb2FkZWQgdG8gZmlyZSB1cCB0aGUgd29ya2VyIHRocmVhZC4KKyAgICAgICAgdm9p
ZCB3b3JrZXJTY3JpcHRMb2FkZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+KTsKKworICAgICAgICBzdGF0aWMgU2hhcmVkV29y
a2VyUmVwb3NpdG9yeUltcGwqIGluc3RhbmNlKCk7CisgICAgfTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShXT1JLRVJTKQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyUmVwb3NpdG9yeUltcGxfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAgYi9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40MGJiMmRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtl
clRocmVhZC5oIgorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBTaGFyZWRXb3Jr
ZXJUaHJlYWQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHNjcmlwdFVS
TCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVkV29ya2VyVGhyZWFkKG5hbWUsIHNjcmlwdFVSTCwgdXNlckFnZW50LCBzb3Vy
Y2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSkpOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNo
YXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5KQorICAgIDogV29ya2VyVGhyZWFkKHVybCwgdXNl
ckFnZW50LCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSkKKyAgICAsIG1fbmFtZShuYW1l
LmNvcHkoKSkKK3sKK30KKworU2hhcmVkV29ya2VyVGhyZWFkOjp+U2hhcmVkV29ya2VyVGhyZWFk
KCkKK3sKK30KKworUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBTaGFyZWRXb3JrZXJUaHJlYWQ6
OmNyZWF0ZVdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKK3sKKyAgICByZXR1cm4gU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKG1fbmFtZSwg
dXJsLCB1c2VyQWdlbnQsIHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhy
ZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzODc0MQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKyNpZm5kZWYgU2hhcmVkV29ya2VyVGhyZWFkX2gKKyNkZWZpbmUgU2hhcmVkV29ya2Vy
VGhyZWFkX2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5Jik7CisgICAgICAgIH5TaGFyZWRXb3JrZXJU
aHJlYWQoKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdv
cmtlckNvbnRleHQ+IGNyZWF0ZVdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXJU
aHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKwor
ICAgICAgICBTdHJpbmcgbV9uYW1lOworICAgIH07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFNoYXJlZFdvcmtlclRocmVh
ZF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwCmluZGV4IDkxODViYWUuLjg1OTgyMzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBA
IC01NCwyMSArNTQsOSBAQCBXb3JrZXI6Oldvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZQogICAgIDogQWJzdHJhY3RX
b3JrZXIoY29udGV4dCkKICAgICAsIG1fY29udGV4dFByb3h5KFdvcmtlckNvbnRleHRQcm94eTo6
Y3JlYXRlKHRoaXMpKQogewotICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEtVUkwgc2NyaXB0VVJM
ID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShzY3JpcHRVUkwpLmdldCgpKSkgewotICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKKyAgICBLVVJMIHNjcmlwdFVSTCA9IHJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcg
V29ya2VyU2NyaXB0TG9hZGVyKCk7CiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2lu
UmVkaXJlY3QsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGViODJhNWIu
LmQ4ZDc3NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAor
KysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTI2NCw2ICsyNjQsMTcg
QEAgdm9pZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGwKICAgICB9CiB9CiAKK3ZvaWQgV29ya2VyQ29udGV4
dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYm9vbCBlcnJvckhhbmRsZWQg
PSBmYWxzZTsKKyAgICBpZiAob25lcnJvcigpKQorICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVy
cm9yKCktPnJlcG9ydEVycm9yKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsK
KworICAgIGlmICghZXJyb3JIYW5kbGVkKQorICAgICAgICBsb2dFeGNlcHRpb24oZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5k
ZXggZjJhZmE0Mi4uNjIyNzg1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC00Miw2ICs0
Miw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTY2hlZHVsZWRBY3Rpb247
CisgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKKyAgICBjbGFzcyBEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0OwogICAgIGNsYXNzIFdvcmtlckxvY2F0aW9uOwogICAgIGNsYXNzIFdvcmtlck5h
dmlnYXRvcjsKICAgICBjbGFzcyBXb3JrZXJUaHJlYWQ7CkBAIC01NSw2ICs1Nyw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKIApAQCAt
OTgsNiArMTAzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogICAg
ICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50
TGlzdGVuZXJzOyB9CiAKKyAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBsb2dFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCiAgICAgICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6
Om1hcmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34118</attachid>
            <date>2009-08-05 00:01:40 -0700</date>
            <delta_ts>2009-08-05 10:23:56 -0700</delta_ts>
            <desc>Patch addressing levin&apos;s comments</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>93459</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OGEwMWExLi44MzNmOGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDgt
MDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBkaXNhYmxlZCB0ZXN0cyBmb3Ig
U2hhcmVkV29ya2VyIG1pbmltYWwgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBCZWdhbiByZWZh
Y3RvcmluZyBvZiBkZWRpY2F0ZWQgd29ya2VyIHRlc3RzIHRvIGFsbG93IHNoYXJpbmcgdGVzdCBj
YXNlcyBiZXR3ZWVuIHNoYXJlZCBhbmQgZGVkaWNhdGVkIHdvcmtlciAod2lsbCBjb250aW51ZSBp
biBhbm90aGVyIHBhdGNoKS4KKworICAgICAgICBTaGFyZWRXb3JrZXJzIHNob3VsZCBpbnN0YW50
aWF0ZSBhIHRocmVhZCBhbmQgYSBTaGFyZWRXb3JrZXJDb250ZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzkyNworCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVwbGFjZS1n
bG9iYWwtY29uc3RydWN0b3IuanM6IE1vdmVkIGNvbW1vbiBjb2RlIGludG8gc2hhcmVkIC5qcyBm
aWxlLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1n
Yy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1sb2FkLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sOgorCiAy
MDA5LTA3LTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODg3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpz
CkBAIC0wLDAgKzEsMTkgQEAKK29uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZXZl
bnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGhhbmRsZU1lc3NhZ2Uo
ZXZ0LCBldmVudC5tZXNzYWdlUG9ydCk7IH07Cit9OworCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdl
KGV2ZW50LCBwb3J0KSB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gInBpbmciKQorICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJQQVNTOiBSZWNlaXZlZCBwaW5nIG1lc3NhZ2UiKTsKKyAgICBlbHNl
IGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiRE9O
RSIpOworICAgIGVsc2UgaWYgKC9ldmFsLisvLnRlc3QoZXZ0LmRhdGEpKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKGV2dC5kYXRhLnN1YnN0cig1KSArICI6
ICIgKyBldmFsKGV2dC5kYXRhLnN1YnN0cig1KSkpOworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZShldnQuZGF0YS5zdWJzdHIoNSkgKyAiOiAiICsg
ZXgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiRkFJTFVSRTogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc2NyaXB0LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2ZiNjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpAQCAtMCwwICsx
LDIxIEBACitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIGV2ZW50Lm1lc3NhZ2VQ
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQu
bWVzc2FnZVBvcnQpOyB9OworfTsKKworZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCwgcG9y
dCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJ1bmhhbmRsZWRFcnJvciIpIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGUgYW4gdW5oYW5kbGVkIGVycm9yLgorICAgICAgICBvbmVycm9yID0gbnVsbDsK
KyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBvcnQucG9zdE1l
c3NhZ2UoIlNVQ0NFU1M6IHVuaGFuZGxlZCBlcnJvciBnZW5lcmF0ZWQiKTsKKyAgICAgICAgfSwg
MTAwKTsKKyAgICAgICAgZ2VuZXJhdGVFcnJvcigpOyAgLy8gVW5kZWZpbmVkIGZ1bmN0aW9uIGNh
bGwKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImhhbmRsZWRFcnJvciIpIHsKKyAgICAg
ICAgb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5vKSB7CisgICAgICAgICAg
ICBwb3J0LnBvc3RNZXNzYWdlKCJTVUNDRVNTOiBlcnJvciBoYW5kbGVkIHZpYSBvbmVycm9yOiAi
ICsgbWVzc2FnZSk7CisgICAgICAgIH07CisgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8vIFVu
ZGVmaW5lZCBmdW5jdGlvbiBjYWxsCisgICAgfSBlbHNlIHsKKyAgICAgICAgcG9ydC5wb3N0TWVz
c2FnZSgiRkFJTDogR290IHVuZXhwZWN0ZWQgbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOworICAg
IH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGI1ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2Jh
bC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDI0IEBACisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOword29ya2VyLnBvc3RNZXNzYWdlKCJldmFs
IHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Cit3b3JrZXIucG9z
dE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQorICAgICAgICBs
b2coZXZ0LmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkRPTkUiKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZAppbmRleCA1NTQ3ZTZkLi5kZTdmYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTM4LDE0ICszOCwxNCBAQCB0cnkgewogfQogCiB0cnkgewotICAgIHZhciB3
b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOwor
ICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtl
ci1jb21tb24uanMiKTsKICAgICBsb2coIkZBSUw6IENvbnN0cnVjdG9yIHN1Y2NlZWRlZCB3aGVu
IG5vIG5hbWUgaXMgcGFzc2VkIik7CiB9IGNhdGNoIChleCkgewogICAgIGxvZygiUEFTUzogaW52
b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBh
biBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiB9CiAKIHRyeSB7Ci0gICAgdmFyIHdvcmtlciA9
IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9uLmpzIiwgIm5hbWUiKTsK
KyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3Jr
ZXItY29tbW9uLmpzIiwgIm5hbWUiKTsKICAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29u
c3RydWN0b3Igc3VjY2VlZGVkOiAiICsgd29ya2VyKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9n
KCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5YmE4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUZXN0IHNoYXJlZCB3b3JrZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiBTaG91bGQgcHJpbnQgIlBB
U1MiIGZvbGxvd2VkIGJ5ICJET05FIi4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdlCitE
T05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWdjLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1nYy5odG1sLWRpc2FibGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhi
MGU3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1nYy5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzkgQEAKKzxib2R5PgorPHA+VGVz
dCBzaGFyZWQgd29ya2VyIGdhcmJhZ2UgY29sbGVjdGlvbi4gU2hvdWxkIHByaW50ICJQQVNTIiBm
b2xsb3dlZCBieSAiRE9ORSIuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitmdW5jdGlvbiBnYygp
Cit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcign
cmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKK3dvcmtlci5wb3J0
Lm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7Cit3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgicGlu
ZyIpOword29ya2VyID0gMDsKK2djKCk7CisKK2Z1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQp
IHsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWMxYTFk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbG9hZC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdv
cmtlciBvbmVycm9yIGZ1bmN0aW9uYWxpdHkuIFByaW50cyBtdWx0aXBsZSBTVUNDRVNTIGxpbmVz
LCB0aGVuIERPTkUgd2hlbiBjb21wbGV0ZS4KKworUEFTUzogUmVjZWl2ZWQgbG9hZCBlcnJvciBl
dmVudDogW29iamVjdCBFdmVudF0KK1BBU1M6IFJlY2VpdmVkIGVycm9yIGV2ZW50IGFmdGVyIHdv
cmtlciBHQydkOiBbb2JqZWN0IEV2ZW50XQorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlz
YWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3YzdjMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxvYWQt
ZXJyb3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDUyIEBACis8Ym9keT4KKzxwPlRlc3QgU2hh
cmVkV29ya2VyIG9uZXJyb3IgZnVuY3Rpb25hbGl0eS4gUHJpbnRzIG11bHRpcGxlIFNVQ0NFU1Mg
bGluZXMsIHRoZW4gRE9ORSB3aGVuIGNvbXBsZXRlLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RTaW1wbGVMb2FkRXJyb3IoKQoreworICAgIHZhciB3b3Jr
ZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJmaWxlX2RvZXNfbm90X2V4aXN0LmpzIiwgIm5hbWUiKTsK
KyAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coIlBBU1M6
IFJlY2VpdmVkIGxvYWQgZXJyb3IgZXZlbnQ6ICIgKyBldnQpOworICAgICAgICB0ZXN0TG9hZEVy
cm9yR0MoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RMb2FkRXJyb3JHQygpCit7CisgICAg
dmFyIHdvcmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoImZpbGVfZG9lc19ub3RfZXhpc3QuanMiLCAi
bmFtZSIpOworICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXJyb3I7CisgICAgd29ya2VyID0g
bnVsbDsKKyAgICBnYygpOworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5H
Q0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29s
bGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVj
dCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKKworZnVu
Y3Rpb24gaGFuZGxlRXJyb3IoZXZ0KSB7CisgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBlcnJvciBl
dmVudCBhZnRlciB3b3JrZXIgR0MnZDogIiArIGV2dCk7CisgICAgbG9nKCJET05FIik7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCit0ZXN0U2ltcGxlTG9hZEVycm9yKCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI4NmE2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGVzdCByZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0
LgorCitzZWxmLk1lc3NhZ2VFdmVudCA9ICdQQVNTJzsgTWVzc2FnZUV2ZW50OzogUEFTUworRE9O
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1y
ZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGZmNGI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVw
bGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDE3IEBACis8
Ym9keT4KKzxwPlRlc3QgcmVwbGFjaW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMgaW4gYSB3b3JrZXIg
Y29udGV4dC48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CisvLyBNYWtlIGEg
U2hhcmVkV29ya2VyIHRoYXQgaGFzIHRoZSBzYW1lIGV4dGVybmFsIGludGVyZmFjZSBhcyBhIERl
ZGljYXRlZFdvcmtlciwgdG8gdXNlIGluIHNoYXJlZCB0ZXN0IGNvZGUuCitmdW5jdGlvbiBjcmVh
dGVXb3JrZXIoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJj
ZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMnLCAnbmFtZScpOworICAgIHdvcmtlci5wb3J0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH07CisgICAg
d29ya2VyLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBv
c01lc3NhZ2UobXNnLCBwb3J0KTsgfTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0id29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzIj4KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZjcwODEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVu
Y3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxv
d2VkIHdpdGggRE9ORS4KKworU1VDQ0VTUzogdW5oYW5kbGVkIGVycm9yIGdlbmVyYXRlZAorU1VD
Q0VTUzogZXJyb3IgaGFuZGxlZCB2aWEgb25lcnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IGdlbmVyYXRlRXJyb3IKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuaHRt
bC1kaXNhYmxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA2ZTUzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
c2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQKQEAgLTAsMCArMSw3MCBAQAorPGJvZHk+Cis8cD5U
ZXN0IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hv
dWxkIHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgICAgInRlc3RTY3Jp
cHRFcnJvclVuaGFuZGxlZCIsCisgICAgInRlc3RTY3JpcHRFcnJvckhhbmRsZWQiCitdOwordmFy
IHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAodGVz
dEluZGV4IDwgdGVzdENhc2VzLmxlbmd0aCkgeworICAgICAgICB0ZXN0SW5kZXgrKzsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHdpbmRvd1t0ZXN0Q2FzZXNbdGVzdEluZGV4IC0gMV1dKCk7
CisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IHVuZXhwZWN0
ZWQgZXhjZXB0aW9uICIgKyBleCk7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JVbmhh
bmRsZWQoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMv
c2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuanMiLCAibmFtZSIpOworICAgIC8vIFNoYXJlZFdv
cmtlcnMgc2hvdWxkIG9ubHkgaW52b2tlIG9uZXJyb3IgZm9yIGxvYWRpbmcgZXJyb3JzLgorICAg
IHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiRkFJTDogb25l
cnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCBlcnJvciIpOworICAgIH07CisgICAgd29ya2VyLnBv
cnQucG9zdE1lc3NhZ2UoInVuaGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JIYW5kbGVk
KCkKK3sKKyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJl
ZC13b3JrZXItc2NyaXB0LWVycm9yLmpzIiwgIm5hbWUyIik7CisgICAgLy8gU2hhcmVkV29ya2Vy
cyBzaG91bGQgb25seSBpbnZva2Ugb25lcnJvciBmb3IgbG9hZGluZyBlcnJvcnMuCisgICAgd29y
a2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBvbmVycm9y
IGludm9rZWQgZm9yIGEgc2NyaXB0IGVycm9yIik7CisgICAgfTsKKyAgICB3b3JrZXIucG9ydC5w
b3N0TWVzc2FnZSgiaGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRU
ZXN0KCk7CisgICAgfQorfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLXNpbXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYxMGVjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAor
VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS4KKworUEFTUzogUmVj
ZWl2ZWQgcGluZyBtZXNzYWdlCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2ltcGxlLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE4ZTEzOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVk
CkBAIC0wLDAgKzEsMzMgQEAKKzxib2R5PgorPHA+VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBj
b25zdHJ1Y3Rpb24gY2FzZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIg
d29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigncmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9u
LmpzJywgJ25hbWUnKTsKKword29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKK3dvcmtl
ci5wb3J0LnBvc3RNZXNzYWdlKCJkb25lIik7CisKK3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChldmVudC5kYXRh
ID09ICJET05FIikKKyAgICAgICAgZG9uZSgpOworfTsKKworZnVuY3Rpb24gZG9uZSgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFs
LWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxh
Y2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwKaW5kZXggY2UxYTJiMi4uZjM4NjAxYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25z
dHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItcmVwbGFj
ZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbApAQCAtMiwyOSArMiwxMyBAQAogPHA+VGVzdCByZXBs
YWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0LjwvcD4KIDxkaXYg
aWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorZnVuY3Rp
b24gY3JlYXRlV29ya2VyKCkKIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7CisgICAgcmV0dXJuIG5ldyBXb3JrZXIo
J3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpzJyk7CiB9Cis8L3NjcmlwdD4KIAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0K
LXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOwot
d29ya2VyLnBvc3RNZXNzYWdlKCJldmFsIHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNz
YWdlRXZlbnQ7Iik7Ci13b3JrZXIucG9zdE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKLQotd29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIGlmICghL2Zvb1wvXC9iYXIvLnRl
c3QoZXZ0LmRhdGEpKQotICAgICAgICBsb2coZXZ0LmRhdGEpOwotICAgIGVsc2UgewotICAgICAg
ICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci5qcyI+CiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY2MDkwYy4uOTNlNTc4NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMDktMDgtMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVh
dGVkIGZpcnN0IHdvcmtpbmcgaW1wbGVtZW50YXRpb24gb2YgU2hhcmVkV29ya2VycyAoZXhlY3V0
aW9uIG9ubHksIG5vIHNoYXJpbmcpLgorICAgICAgICBBZGRlZCBpbml0aWFsIGltcGxlbWVudGF0
aW9ucyBvZiBTaGFyZWRXb3JrZXJUaHJlYWQgYW5kIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAg
ICAgIE5vIHY4IGJpbmRpbmdzIHlldC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5MjcKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoK
KyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxl
cy4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgQWRk
ZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIHNoYXJlZCB3b3JrZXIgZmlsZXMuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pT
KToKKyAgICAgICAgQWRkZWQgY29kZSB0byBjb252ZXJ0IGZyb20gRXZlbnRUYXJnZXQgdG8gY29y
cmVjdCBKUyBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAg
ICBBZGRlZCBjb2RlIHRvIGNhc3QgZnJvbSBKUyBvYmplY3QgdG8gYXBwcm9wcmlhdGUgRXZlbnRU
YXJnZXQgaW1wbCBjbGFzcy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Ry
dWN0U2hhcmVkV29ya2VyKToKKyAgICAgICAgVHdlYWtlZCB0aGUgY29uc3RydWN0b3IgY29kZSB0
byBwYXNzIGluIHRoZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgbGlrZSBub3JtYWwgd29ya2Vycy4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTU2hhcmVkV29ya2VyQ29udGV4dDo6bWFyayk6Cisg
ICAgICAgIEN1c3RvbSBtYXJraW5nIG9mIHRoZSBvbmNvbm5lY3QgaGFuZGxlci4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJD
b250ZXh0KToKKyAgICAgICAgQWRkZWQgcHJvcGVyIGNvbnZlcnNpb24gdG8gdGhlIGNvcnJlY3Qg
V29ya2VyQ29udGV4dCBkZXJpdmVkIGNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQpOgorICAgICAgICBVcGRhdGVkIFdvcmtlclNjcmlwdENvbnRyb2xsZXIgdG8gY3Jl
YXRlIHRoZSBjb3JyZWN0IHR5cGUgb2YgYmluZGluZyBvYmplY3QgKEpTU2hhcmVkV29ya2VyQ29u
dGV4dCB2cyBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQpCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFNoYXJl
ZFdvcmtlckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUu
aDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBiaW5kaW5ncyBmaWxlcy4KKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICBBZGRlZCBjb25uZWN0IGV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6
dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgQVBJIGZvciBjYXN0aW5nIHRv
IG5ldyBkZXJpdmVkIGNsYXNzIChTaGFyZWRXb3JrZXJDb250ZXh0KS4KKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKToKKyAgICAgICAgTW92
ZWQgY29kZSB0aGF0IHJlc29sdmVzL3ZhbGlkYXRlcyBVUkxzIHRvIGJhc2UgY2xhc3Mgc28gaXQg
Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRlZGljYXRlZC9zaGFyZWQgd29ya2Vycy4KKyAgICAgICAg
KiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRl
eHQ6OmxvZ0V4Y2VwdGlvbik6CisgICAgICAgIFJlZmFjdG9yZWQgZXhjZXB0aW9uIGhhbmRsaW5n
IGNvZGUgLSBtb3ZlZCBvbmVycm9yIGhhbmRsaW5nIHRvIGJhc2UgY2xhc3MuCisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojppc0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAq
IHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAgQ2hhbmdlZCBjb25zdHJ1Y3RvciB0byBmaXJlIHVw
IHdvcmtlciB0aHJlYWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OlNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6flNoYXJlZFdvcmtlckNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bG9nRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAgICAg
ICBQbGFjZWhvbGRlciBtZXRob2RzIHVudGlsIHdlIGFkZCBzdXBwb3J0IGZvciBzZW5kaW5nIGV4
Y2VwdGlvbnMvbWVzc2FnZXMgdG8gY29uc29sZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlckNvbnRleHQ6OmRpc3BhdGNoQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJDb250ZXh0Ojp0aHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdv
cmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6dG9T
aGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRl
eHQ6OnNldE9uY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0
OjpvbmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bmFt
ZSk6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisg
ICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6flNoYXJlZFdvcmtlclJlcG9zaXRv
cnkpOgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
OiBBZGRlZC4KKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgY29yZSBzaW5nbGV0b24gY2xhc3Mg
dGhhdCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVtZW50IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJQcm94eTo6c2V0VGhyZWFkKToKKyAgICAgICAgUHJveHkgb2JqZWN0IHVz
ZWQgdG8gaGFuZGxlIHJlc291cmNlIGxvYWRpbmcgZm9yIGEgZ2l2ZW4gc2hhcmVkIHdvcmtlci4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dv
cmtlckNvbnRleHQpOgorICAgICAgICBQbGFjZWhvbGRlciByb3V0aW5lcyB1bnRpbCB3ZSBpbXBs
ZW1lbnQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNr
OjpjcmVhdGUpOgorICAgICAgICBDcmVhdGVzIGEgdGFzayB0byBmaXJlIG9mZiBhIGNvbm5lY3Qg
ZXZlbnQgb24gdGhlIHdvcmtlciB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJDb25uZWN0VGFzazo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZFdvcmtlckxvYWRlcjo6U2hhcmVkV29ya2VyTG9hZGVyKToKKyAgICAgICAgQWRk
ZWQgaGVscGVyIG9iamVjdCB0byBsb2FkIHRoZSBpbml0aWFsIHNjcmlwdCBmb3IgdGhlIHdvcmtl
ci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckxvYWRlcjo6bG9hZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9h
ZGVkKToKKyAgICAgICAgRmlyZXMgb2ZmIHRoZSB3b3JrZXIgdGhyZWFkIG9uY2UgdGhlIHNjcmlw
dCBpcyBsb2FkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpj
b25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
OjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6fkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmg6IEFk
ZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oOiBBZGRlZC4KKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdv
cmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aXNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgQVBJcyB0byBkZXRlcm1pbmUgdGhlIHR5
cGUgb2YgYSBnaXZlbiBjb250ZXh0LgorCiA9PT0gRW5kIG1lcmdlIG9mIG5pdHJvLWV4dHJlbWUg
YnJhbmNoIDIwMDktMDctMzAgPT09CiAKIDIwMDktMDUtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dh
cmVuQGFwcGxlLmNvbT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMTQ1NTA2MC4uMzk5ODAxNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQAogI2luY2x1ZGUgIkpTUkdCQ29sb3IuY3BwIgog
I2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCisj
aW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCIKICNpbmNsdWRlICJKU1NRTEVycm9y
LmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1
bHRTZXRSb3dMaXN0LmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyYzk0ZGYwLi5jYjQ4NTNjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0yMDQsNiArMjA0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAg
UmFuZ2VFeGNlcHRpb24gXAogICAgIFJlY3QgXAogICAgIFNoYXJlZFdvcmtlciBcCisgICAgU2hh
cmVkV29ya2VyQ29udGV4dCBcCiAgICAgU1FMRXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBcCiAg
ICAgU1FMUmVzdWx0U2V0Um93TGlzdCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhZGQzNWFhLi40OTVlNWEyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI1Myw2ICsyNTMsNyBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAorCVdlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCBcCkBAIC0zOTksNyArNDAwLDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVy
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5o
IFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5
bGVTaGVldExpc3RDdXN0b20uY3BwIFwKQEAgLTIzODAsOSArMjM4MCwxNyBAQCB3ZWJjb3JlX2Nw
cGZsYWdzICs9IFwKIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1No
YXJlZFdvcmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5oIFwKIAlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCi0JV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oCisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgXAorCVdlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJl
YWQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgKIAogZW5kaWYK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA3YjI2NDIxLi4wYTliYzkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAg
ICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVk
V29ya2VyLmlkbCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0Lmlk
bCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmlkbCcsCkBAIC01MTcsNiArNTE4LDEwIEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNSR0JDb2xvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuaCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCcsCkBAIC0zMzE4
LDkgKzMzMjMsMTYgQEAKICAgICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwJywK
ICAgICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oJywKKyAgICAgICAg
ICAgICd3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCcsCisgICAgICAg
ICAgICAnd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oJywKICAgICAgICAg
ICAgICd3b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNrLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMv
U2hhcmVkV29ya2VyLmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcs
CisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmgnLAorICAgICAgICAgICAgJ3dvcmtl
cnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oJywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHAnLAorICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyVGhy
ZWFkLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmNwcCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9Xb3JrZXIuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCA0M2E5MWU4Li5lNDE0ZjUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI0MDksMTIgKzI0MDksMTcgQEAgY29udGFp
bnMoREVGSU5FUywgU0hBUkVEX1dPUktFUlM9MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZB
U0NSSVBUICs9IEVOQUJMRV9TSEFSRURfV09SS0VSUz0xCiAKICAgICBJRExfQklORElOR1MgKz0g
XAotICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKKyAgICAgICAgd29ya2Vycy9TaGFy
ZWRXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbAog
CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29u
c3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNw
cCBcCi0gICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorICAgICAgICB3b3JrZXJzL0Rl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBcCisgICAgICAgIHdvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcCBcCisgICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgXAor
ICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKIH0KIAogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IGZiNjhmZWMuLjYyYTI1YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNzkxNSw2ICs3OTE1LDU0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiIN
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJS
ZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJ
CQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkv
Pg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291
cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxFcnJvci5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQpAQCAtMjQwODgsNiArMjQxMzYsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xEZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
MjQxMDAsNiArMjQxNTYsMjYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNc
U2hhcmVkV29ya2VyQ29udGV4dC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3Jr
ZXJzXFNoYXJlZFdvcmtlclRocmVhZC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXFNoYXJlZFdvcmtlclRocmVhZC5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29y
a2Vyc1xXb3JrZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTI4NzMxLDYgKzI4ODA3
LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xKU1NoYXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkxZDJl
Ny4uM2RmMjM1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTY2NSw2ICs2NjUsOCBAQAogCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovOyB9OwogCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYz
RUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovOyB9OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYz
RUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07CisJCTQxNjdFQkY1MTAyOTYyQkEwMDNEMjUyQSAv
KiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEgLyogRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwICovOyB9OworCQk0MTY3RUJGNjEwMjk2MkJB
MDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjdFQkY0MTAyOTYyQkEwMDNEMjUy
QSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oICovOyB9OwogCQk0MTZFNzVCRTBF
REY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmggKi87IH07CiAJCTQxNkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3Jp
cHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87
IH07CiAJCTQxNkU3NUNCMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkw
QzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKQEAgLTY4NCw2ICs2ODYsMTUg
QEAKIAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVDNzEw
MDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi87IH07CiAJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1
RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3Jr
ZXIuY3BwICovOyB9OwogCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3Jr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3
QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oICovOyB9OworCQk0MUQxNjhF
NzEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxNjhERjEwMjI2RTg5MDA5QkM4
MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgKi87IH07CisJCTQxRDE2OEU4MTAyMjZFODkw
MDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxNjhFMDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVk
V29ya2VyQ29udGV4dC5oICovOyB9OworCQk0MUQxNjhFOTEwMjI2RTg5MDA5QkM4MjcgLyogU2hh
cmVkV29ya2VyQ29udGV4dC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDE2OEUxMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0LmlkbCAqLzsgfTsKKwkJNDFEMTY4RUExMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtl
clJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxRDE2OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmgg
Ki87IH07CisJCTQxRDE2OEVEMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4
RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi87IH07CisJCTQx
RDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEU2MTAyMjZFODkwMDlC
QzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLzsgfTsKKwkJNDFEMTY4RjAxMDIyNkVDNDAw
OUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxNjhFRjEwMjI2RUM0MDA5QkM4Mjcg
LyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJNDFEMTY5MDUxMDIz
OEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxNjkwMzEwMjM4QjY2MDA5QkM4Mjcg
LyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKKwkJNDFEMTY5MDYxMDIzOEI2NjAw
OUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY5MDQxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hh
cmVkV29ya2VyQ29udGV4dC5oICovOyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAq
LzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLzsgfTsKIAkJNDFFMUIxRDIwRkY1OTg2
OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3Ry
YWN0V29ya2VyLmlkbCAqLzsgfTsKQEAgLTU2MzgsNiArNTY0OSw4IEBACiAJCTQxNjJBNDUzMTAx
MTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTUxMDExNDY0
NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwOyBwYXRoID0gd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNjdFQkY0MTAy
OTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
OyBwYXRoID0gd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0
Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxT
dGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAz
NjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NjU3LDYgKzU2NzAsMTUgQEAKIAkJNDFEMDE1QzkwRjRCNUM3
MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDdBN0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVk
V29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OERGMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFNoYXJlZFdvcmtlckNvbnRleHQuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRX
b3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTAx
MDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29ya2VyQ29udGV4dC5oOyBwYXRoID0gd29ya2Vycy9T
aGFyZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2
OEUxMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2
OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaDsgcGF0aCA9
IHdvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUQxNjhFNTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlclRocmVh
ZC5jcHA7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEU2MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3Jr
ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29ya2Vy
VGhyZWFkLmg7IHBhdGggPSB3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MUQxNjhFRjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxRDE2OTAzMTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY5MDQxMDIz
OEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2Vy
LmNwcDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0
aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBBYnN0cmFjdFdvcmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NDAsMTAgKzk5
NjIsMTggQEAKIAkJCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
Y3BwICovLAogCQkJCTQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5o
ICovLAogCQkJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwg
Ki8sCisJCQkJNDE2N0VCRjMxMDI5NjJCQTAwM0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmNwcCAqLywKKwkJCQk0MTY3RUJGNDEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCAqLywKIAkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYx
QkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAqLywKIAkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZC
M0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0Ig
LyogU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJNDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNo
YXJlZFdvcmtlci5pZGwgKi8sCisJCQkJNDFEMTY4REYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJl
ZFdvcmtlckNvbnRleHQuY3BwICovLAorCQkJCTQxRDE2OEUwMTAyMjZFODkwMDlCQzgyNyAvKiBT
aGFyZWRXb3JrZXJDb250ZXh0LmggKi8sCisJCQkJNDFEMTY4RTExMDIyNkU4OTAwOUJDODI3IC8q
IFNoYXJlZFdvcmtlckNvbnRleHQuaWRsICovLAorCQkJCTQxRDE2OEUyMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggKi8sCisJCQkJNDFEMTY4RTUxMDIyNkU4OTAw
OUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgKi8sCisJCQkJNDFEMTY4RTYxMDIyNkU4
OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICovLAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFC
QSAvKiBXb3JrZXIuaCAqLywKIAkJCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2Vy
LmlkbCAqLywKQEAgLTEzNzAwLDYgKzEzNzMwLDcgQEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1
QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAw
NjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0b20uY3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1
RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3RvbS5jcHAgKi8sCisJCQkJNDFEMTY4RUYxMDIyNkVD
NDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJNTFE
Q0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAg
Ki8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERBQTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0
b20uY3BwICovLApAQCAtMTQwNTMsNiArMTQwODQsOCBAQAogCQkJCTQxOEY4ODAzMEZGOTU3QUUw
MDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8sCiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAw
OTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLywKIAkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5
NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAqLywKKwkJCQk0MUQxNjkwMzEwMjM4QjY2MDA5QkM4
MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCAqLywKKwkJCQk0MUQxNjkwNDEwMjM4QjY2
MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggKi8sCiAJCQkJRTFDOEJFNUMwRThC
RDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNwcCAqLywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBB
NzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJCQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyog
SlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAgLTE3MDYzLDYgKzE3MDk2LDExIEBACiAJCQkJN0E3
NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBMUU4OEY2MTAxQ0MzODQwMDBDNERGNSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRo
cmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFEMTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNo
YXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRDE2OEVBMTAyMjZFODkw
MDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MUQxNjhFRTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk0MUQxNjkwNjEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTY3RUJGNjEwMjk2MkJBMDAzRDI1MkEgLyogRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTcxNzcsNiAr
MTcyMTUsNyBAQAogCQkJCTQxNjJBNDUyMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMkVDRjdBRTMxMDE2MkI1ODAwNDI3
REU3IC8qIEVycm9yRXZlbnQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQk3QTc0RUNCNzEwMTgz
OTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJ
CTQxRDE2OEU5MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xOTEwNSw2ICsxOTE0NCwxMSBAQAogCQkJCTdBNzRFQ0JEMTAxODM5
REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJhY2tlbmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxQTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFEMTY4RTcxMDIyNkU4OTAwOUJDODI3IC8q
IFNoYXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFEMTY4RUQxMDIy
NkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0MUQxNjhGMDEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxRDE2OTA1MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1No
YXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2N0VCRjUxMDI5NjJC
QTAwM0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKaW5kZXggYjc1Y2NjZi4uNmMz
NmNiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC01OCw3ICs1OCw5
IEBACiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAjaW5jbHVkZSAiSlNTaGFyZWRXb3Jr
ZXIuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFy
ZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjZW5kaWYKIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTEwNyw2ICsxMDksOSBAQCBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdl
dCogdGFyZwogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICBpZiAoU2hhcmVkV29ya2Vy
KiBzaGFyZWRXb3JrZXIgPSB0YXJnZXQtPnRvU2hhcmVkV29ya2VyKCkpCiAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc2hhcmVkV29ya2VyKTsKKworICAgIGlmIChTaGFy
ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtlckNv
bnRleHQoKSkKKyAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4
dCk7CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTQyLDYgKzE0Nyw3
IEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIAogI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChTaGFy
ZWRXb3JrZXIpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoU2hhcmVkV29ya2VyQ29udGV4
dCkKICNlbmRpZgogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcAppbmRleCBhMzEyMjI1Li5lMmYxMTM2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAK
QEAgLTQ1LDE1ICs0NSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBDbGFzc0luZm8g
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiU2hhcmVkV29ya2VyQ29uc3Ry
dWN0b3IiLCAwLCAwLCAwIH07CiAKIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OkpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQotICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNTaGFyZWRXb3JrZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KQorICAgIDogRE9NQ29uc3RydWN0b3JPYmplY3QoSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpLCBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUs
IEpTU2hhcmVkV29ya2VyUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCksIE5vbmUp
OwogICAgIC8vIEhvc3QgZnVuY3Rpb25zIGhhdmUgYSBsZW5ndGggcHJvcGVydHkgZGVzY3JpYmlu
ZyB0aGUgbnVtYmVyIG9mIGV4cGVjdGVkIGFyZ3VtZW50cy4KICAgICBwdXREaXJlY3QoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMiksIFJlYWRPbmx5fERvbnRE
ZWxldGV8RG9udEVudW0pOwogfQogCi1zdGF0aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNoYXJlZFdv
cmtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYgYXJncykKK3N0
YXRpYyBKU09iamVjdCogY29uc3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKj4oY29uc3RydWN0b3IpOworCiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwg
MikKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIpOwogCkBAIC02MiwxMyArNjQsMTMgQEAgc3RhdGljIEpTT2JqZWN0KiBj
b25zdHJ1Y3RTaGFyZWRXb3JrZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IEFy
Z0xpc3QKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHVzZSBib3RoIHRoZSBkeW5h
bWljIHNjb3BlIGFuZCB0aGUgbGV4aWNhbCBzY29wZSAoZHluYW1pYyBzY29wZSBmb3IgcmVzb2x2
aW5nIHRoZSB3b3JrZXIgVVJMKQorICAgIERPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRv
dyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2Vy
OjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCBjb250ZXh0LCBlYyk7CisgICAgUmVmUHRyPFNoYXJl
ZFdvcmtlcj4gd29ya2VyID0gU2hhcmVkV29ya2VyOjpjcmVhdGUoc2NyaXB0VVJMLCBuYW1lLCB3
aW5kb3ctPmRvY3VtZW50KCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
Ci0gICAgLy8gRklYTUU6IHRvSlMoKSBjcmVhdGVzIGFuIG9iamVjdCB3aG9zZSBwcm90b3R5cGUg
aXMgZGVyaXZlZCBmcm9tIGxleGljYWxHbG9iYWxTY29wZSwgd2hpY2ggaXMgaW5jb3JyZWN0IChC
dWcgMjcwODgpCi0gICAgcmV0dXJuIGFzT2JqZWN0KHRvSlMoZXhlYywgd29ya2VyLnJlbGVhc2Uo
KSkpOworICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCB3b3JrZXIucmVsZWFzZSgpKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25z
dHJ1Y3REYXRhKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MjMx
NGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
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
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29u
dGV4dC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgSlNTaGFyZWRXb3JrZXJDb250ZXh0OjptYXJrKCkKK3sKKyAgICBCYXNlOjptYXJrKCk7
CisKKyAgICBtYXJrSWZOb3ROdWxsKGltcGwoKS0+b25jb25uZWN0KCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAppbmRleCA2MjJkYTcwLi4x
ZTRkZjQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJh
c2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRCYXNlLmgiCiAKICNp
bmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJKU1NoYXJlZFdv
cmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCiAKQEAgLTgzLDEwICs4NCwyNiBAQCBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQqIHRvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0
dXJuIDA7CiB9CiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCitKU1NoYXJlZFdvcmtlckNv
bnRleHQqIHRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbyA9IGFzT2JqZWN0KHZhbHVlKS0+Y2xhc3NJbmZvKCk7CisgICAgaWYgKGNs
YXNzSW5mbyA9PSAmSlNTaGFyZWRXb3JrZXJDb250ZXh0OjpzX2luZm8pCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxKU1NoYXJlZFdvcmtlckNvbnRleHQqPihhc09iamVjdCh2YWx1ZSkpOwor
ICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIEpTV29ya2VyQ29udGV4dCogdG9KU1dvcmtlckNv
bnRleHQoSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICAvLyBXaGVuIHdlIHN1cHBvcnQgc2hhcmVkIHdv
cmtlcnMsIHdlJ2xsIGFkZCBjb2RlIHRvIHRlc3QgZm9yIFNoYXJlZFdvcmtlckNvbnRleHQgdG9v
LgotICAgIHJldHVybiB0b0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dCh2YWx1ZSk7CisgICAgSlNX
b3JrZXJDb250ZXh0KiBjb250ZXh0ID0gdG9KU0RlZGljYXRlZFdvcmtlckNvbnRleHQodmFsdWUp
OworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IGNvbnRleHQgPSB0b0pTU2hhcmVkV29ya2VyQ29udGV4dCh2YWx1ZSk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gY29udGV4dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmggYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaAppbmRleCBmN2FkMTdmLi5hOWE2ZTYzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaApAQCAtMzQsNiArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OworICAgIGNsYXNzIEpTU2hhcmVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBKU1dvcmtl
ckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyQ29udGV4dDsKIApAQCAtNjEsNiArNjIsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9KU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQoSlNDOjpKU1ZhbHVlKTsKICAgICBKU1dvcmtlckNvbnRleHQq
IHRvSlNXb3JrZXJDb250ZXh0KEpTQzo6SlNWYWx1ZSk7CiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dP
UktFUlMpCisgICAgSlNTaGFyZWRXb3JrZXJDb250ZXh0KiB0b0pTU2hhcmVkV29ya2VyQ29udGV4
dChKU0M6OkpTVmFsdWUpOworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggYmU2YTA5OC4uNzQ3ZmIxNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KQEAgLTQx
LDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0xvY2suaD4KIAorI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKyNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlckNvbnRleHQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MywxMiArNzgsMjIgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3Jr
ZXJDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkpOwogICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRl
eHRQcm90b3R5cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5n
ZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1
Y3R1cmUucmVsZWFzZSgpKTsKIAotICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFkZCBTaGFyZWRXb3Jr
ZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUgY29ycmVjdCB3cmFwcGVyIGhlcmUuCi0gICAgUmVmUHRy
PFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNh
dGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQ
cm90b3R5cGUpOwotICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90
b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRD
b250ZXh0UHJvdG90eXBlKTsKLQotICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1f
Z2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxl
YXNlKCksIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRl
eHQpKTsKKyAgICBpZiAobV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSkgeworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBl
U3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUod29ya2VyQ29udGV4dFByb3RvdHlwZSk7CisgICAgICAgIFByb3RlY3RlZFB0cjxKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90
eXBlKGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSk7CisKKyAgICAgICAg
bV93b3JrZXJDb250ZXh0V3JhcHBlciA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHQoc3RydWN0dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50
b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSk7CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3dvcmtlckNvbnRleHQtPmlzU2hhcmVkV29y
a2VyQ29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc2hhcmVkQ29udGV4dFBy
b3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOworICAgICAgICBQcm90ZWN0ZWRQdHI8
SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlID0g
bmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZShz
aGFyZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3Ry
dWN0dXJlKHNoYXJlZENvbnRleHRQcm90b3R5cGUpOworCisgICAgICAgIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0
KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250
ZXh0KCkpOworI2VuZGlmCisgICAgfQogfQogCiBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggODcyMmU0My4u
NGZjMjI0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC00MzQsNyArNDM0LDcgQEAgRU5ECiAgICAgLy8gY29udGV4dCBvZiB0aGUgRE9NV2luZG93
IGFuZCBub3QgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlci4KICAgICByZXR1cm4gVjhET01X
cmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcih0eXBlLCB3aW5kb3cpOwogRU5ECi0gICAgfSBlbHNpZiAo
JGNsYXNzSW5kZXggZXEgIkRFRElDQVRFRFdPUktFUkNPTlRFWFQiIG9yICRjbGFzc0luZGV4IGVx
ICJXT1JLRVJDT05URVhUIikgeworICAgIH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJERURJQ0FU
RURXT1JLRVJDT05URVhUIiBvciAkY2xhc3NJbmRleCBlcSAiV09SS0VSQ09OVEVYVCIgb3IgJGNs
YXNzSW5kZXggZXEgIlNIQVJFRFdPUktFUkNPTlRFWFQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eTo6cmV0cmlldmUoKS0+R2V0Q29uc3RydWN0b3IodHlwZSk7CkBAIC0yMDMyLDcgKzIw
MzIsNyBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAicmV0dXJu
IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KCR2YWx1ZSkiOwog
ICAgIH0KIAotICAgIGlmICgkdHlwZSBlcSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCIgb3IgJHR5
cGUgZXEgIldvcmtlckNvbnRleHQiKSB7CisgICAgaWYgKCR0eXBlIGVxICJEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0IiBvciAkdHlwZSBlcSAiV29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIlNoYXJl
ZFdvcmtlckNvbnRleHQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eS5oIn0gPSAxOwogICAgICAgICByZXR1cm4gInJldHVybiBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAppbmRleCAzMjM1NGIzLi5k
ZGZkNjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRl
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCkBAIC0yMDks
NiArMjA5LDcgQEAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAjaW5jbHVkZSAiQWJzdHJh
Y3RXb3JrZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRX
b3JrZXJDb250ZXh0LmgiCiAjZW5kaWYgLy8gU0hBUkVEX1dPUktFUlMKIAogI2lmIEVOQUJMRShY
UEFUSCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAppbmRleCA5MjcyYmE0Li45ZjhmNGE1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC00MCw2
ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhjaGVja2luZykgXAogICAg
IG1hY3JvKGNsaWNrKSBcCiAgICAgbWFjcm8oY2xvc2UpIFwKKyAgICBtYWNybyhjb25uZWN0KSBc
CiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwKICAgICBtYWNybyhjb3B5KSBcCiAgICAgbWFjcm8o
Y3V0KSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggNDI2NjhlMy4uN2JhMDU4NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQCBTaGFyZWRXb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1No
YXJlZFdvcmtlcigpCiB7CiAgICAgcmV0dXJuIDA7CiB9CitTaGFyZWRXb3JrZXJDb250ZXh0KiBF
dmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gMDsKK30K
ICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggZjBjNzk0Zi4uMmVkZWRk
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CisgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29u
dGV4dDsKICAgICBjbGFzcyBXb3JrZXI7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAg
Y2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CkBAIC03NCw2ICs3NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICAgICAgICAgdmlydHVhbCBT
aGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2VyKCk7CisgICAgICAgIHZpcnR1YWwgU2hhcmVkV29y
a2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJDb250ZXh0KCk7CiAjZW5kaWYKIAogICAgICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
IGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcAppbmRleCA3Y2IyYzExLi4yMzcx
ZTlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNCw2
ICsxMzYsMjcgQEAgYm9vbCBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gaGFuZGxlZDsK
IH0KIAorS1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhlIGR5bmFtaWMgZ2xvYmFsIHNjb3BlIChidWcgIzI3
ODg3KQorICAgIEtVUkwgc2NyaXB0VVJMID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21w
bGV0ZVVSTCh1cmwpOworICAgIGlmICghc2NyaXB0VVJMLmlzVmFsaWQoKSkgeworICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgfQorCisgICAgaWYg
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNjcmlwdFVSTCkuZ2V0KCkpKSB7CisgICAgICAgIGVjID0g
U0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIH0KKyAgICByZXR1cm4g
c2NyaXB0VVJMOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
IGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKaW5kZXggMjhjYzUwZC4uYTg4MjU0
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKKysrIGIvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKQEAgLTQzLDYgKzQzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogCiAgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRh
cmdldCB7CkBAIC03MCw4ICs3MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFi
c3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAgICAgdmlydHVhbCB+
QWJzdHJhY3RXb3JrZXIoKTsKIAotICAgIHByaXZhdGU6CisgICAgcHJvdGVjdGVkOgorICAgICAg
ICAvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBV
UkwgYW5kIGNoZWNrcyB0aGUgcmVzdWx0IGZvciB2YWxpZGl0eS4KKyAgICAgICAgS1VSTCByZXNv
bHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKKyAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBiL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcAppbmRleCAyNGNmMTQ4Li5h
ZTVjNTQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCkBA
IC01MywxNCArNTMsOSBAQCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp+RGVkaWNhdGVkV29ya2Vy
Q29udGV4dCgpCiAgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkud29ya2VyQ29udGV4
dERlc3Ryb3llZCgpOwogfQogCi12b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpmb3J3YXJk
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgYm9vbCBlcnJvckhhbmRsZWQgPSBmYWxzZTsK
LSAgICBpZiAob25lcnJvcigpKQotICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVycm9yKCktPnJl
cG9ydEVycm9yKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKLQotICAgIGlm
ICghZXJyb3JIYW5kbGVkKQotICAgICAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5w
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOworICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAK
IHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRp
b24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuaAppbmRleCAwNmY2YzljLi5lOTc0Y2VmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYgRGVkaWNh
dGVkV29ya2VyQ29udGV4dF9oCiAjZGVmaW5lIERlZGljYXRlZFdvcmtlckNvbnRleHRfaAogCisj
aWYgRU5BQkxFKFdPUktFUlMpCisKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDEzICs0OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogCi0g
ICAgICAgIC8vIFdvcmtlclV0aWxzCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgLy8gT3ZlcnJp
ZGRlbiB0byBhbGxvdyB1cyB0byBjaGVjayBvdXIgcGVuZGluZyBhY3Rpdml0eSBhZnRlciBleGVj
dXRpbmcgaW1wb3J0ZWQgc2NyaXB0LgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGlu
dCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dAotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24s
IE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwog
CisgICAgICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCiAg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQogICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTcw
LDQgKzc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKwogI2VuZGlmIC8vIERlZGljYXRlZFdvcmtl
ckNvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzOTk3YQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRl
ckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclBy
b3h5IDogcHVibGljIFdvcmtlckxvYWRlclByb3h5IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFRo
cmVhZChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFkID0g
dGhyZWFkOyB9CisKKyAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQorICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgV29ya2VyTG9hZGVyUHJveHkgQVBJcyBieSBwcm94eWluZyB0byBhbiBhY3RpdmUgZG9j
dW1lbnQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc1JlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gbV90aHJlYWQ7
Cit9OworCitjbGFzcyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
PiBjaGFubmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJDb25uZWN0VGFzayhjaGFubmVsKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNoYXJlZFdv
cmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQor
ICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVsKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkK
KyAgICB7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0Ojpj
cmVhdGUoKnNjcmlwdENvbnRleHQpOworICAgICAgICBwb3J0LT5lbnRhbmdsZShtX2NoYW5uZWwu
cmVsZWFzZSgpKTsKKyAgICAgICAgQVNTRVJUKHNjcmlwdENvbnRleHQtPmlzV29ya2VyQ29udGV4
dCgpKTsKKyAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0
PFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKHdvcmtlckNv
bnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAgd29ya2VyQ29udGV4dC0+
dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRpc3BhdGNoQ29ubmVjdChwb3J0KTsKKyAgICB9CisK
KyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBtX2NoYW5uZWw7Cit9OworCitjbGFzcyBT
aGFyZWRXb3JrZXJMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJMb2FkZXI+
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVu
dCB7CitwdWJsaWM6CisgICAgU2hhcmVkV29ya2VyTG9hZGVyKFBhc3NSZWZQdHI8U2hhcmVkV29y
a2VyPiwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGxvYWQoY29uc3QgS1VSTCYpOworCisgICAgLy8gV29ya2VyU2NyaXB0TG9hZGVyQ2xp
ZW50IGNhbGxiYWNrCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKCk7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4gbV93b3JrZXI7CisgICAgT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbD4gbV9wb3J0OworICAgIFN0cmluZyBtX25hbWU7CisgICAgT3duUHRyPFdv
cmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7Cit9OworCitTaGFyZWRXb3JrZXJMb2Fk
ZXI6OlNoYXJlZFdvcmtlckxvYWRlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0
aGlzKQorICAgICwgbV93b3JrZXIod29ya2VyKQorICAgICwgbV9wb3J0KHBvcnQpCisgICAgLCBt
X25hbWUobmFtZSkKK3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJMb2FkZXI6OmxvYWQoY29uc3Qg
S1VSTCYgdXJsKQoreworICAgIC8vIE1hcmsgdGhpcyBvYmplY3QgYXMgYWN0aXZlIGZvciB0aGUg
ZHVyYXRpb24gb2YgdGhlIGxvYWQuCisgICAgQVNTRVJUKCFoYXNQZW5kaW5nQWN0aXZpdHkoKSk7
CisgICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcgV29ya2VyU2NyaXB0TG9hZGVyKCk7CisgICAgbV9z
Y3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHVybCwgRGVueUNyb3NzT3JpZ2luUmVkaXJlY3QsIHRoaXMpOworCisgICAgLy8gU3RheSBhbGl2
ZSB1bnRpbCB0aGUgbG9hZCBmaW5pc2hlcy4KKyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyTG9hZGVyOjpub3RpZnlGaW5pc2hlZCgpCit7CisgICAg
Ly8gSGFuZCBvZmYgdGhlIGp1c3QtbG9hZGVkIGNvZGUgdG8gdGhlIHJlcG9zaXRvcnkgdG8gc3Rh
cnQgdXAgdGhlIHdvcmtlciB0aHJlYWQuCisgICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQo
KSkKKyAgICAgICAgbV93b3JrZXItPmRpc3BhdGNoTG9hZEVycm9yRXZlbnQoKTsKKyAgICBlbHNl
CisgICAgICAgIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpLT53b3Jr
ZXJTY3JpcHRMb2FkZWQobV9uYW1lLCBtX3NjcmlwdExvYWRlci0+dXJsKCksIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2NyaXB0
TG9hZGVyLT5zY3JpcHQoKSwgbV9wb3J0LnJlbGVhc2UoKSk7CisKKyAgICAvLyBUaGlzIGZyZWVz
IHRoaXMgb2JqZWN0IC0gbXVzdCBiZSB0aGUgbGFzdCBhY3Rpb24gaW4gdGhpcyBmdW5jdGlvbi4K
KyAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKK30KKworU2hhcmVkV29ya2VyUmVwb3Np
dG9yeSogU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKQoreworICAgIHJldHVybiBE
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKTsKK30KKworRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkqIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0
YW5jZSgpCit7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5KiwgaW5zdGFuY2UgPSBuZXcgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9z
aXRvcnkpOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KKwordm9pZCBEZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiB3b3Jr
ZXJTY3JpcHQsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0KQoreworICAgIC8v
IEZJWE1FOiBDYWNoZSB0aGUgcHJveHkgdG8gYWxsb3cgc2hhcmluZyBhbmQgdG8gYWxsb3cgY2xl
YW51cCBhZnRlciB0aGUgdGhyZWFkIGV4aXRzLgorICAgIFNoYXJlZFdvcmtlclByb3h5ICpwcm94
eSA9IG5ldyBTaGFyZWRXb3JrZXJQcm94eSgpOworICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJl
YWQ+IHRocmVhZCA9IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlKG5hbWUsIHVybCwgdXNlckFn
ZW50LCB3b3JrZXJTY3JpcHQsICpwcm94eSk7CisgICAgcHJveHktPnNldFRocmVhZCh0aHJlYWQp
OworICAgIHRocmVhZC0+c3RhcnQoKTsKKyAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhT
aGFyZWRXb3JrZXJDb25uZWN0VGFzazo6Y3JlYXRlKHBvcnQpKTsKK30KKwordm9pZCBTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIs
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgLy8gQ3JlYXRlIGEgbG9h
ZGVyIHRvIGxvYWQvaW5pdGlhbGl6ZSB0aGUgcmVxdWVzdGVkIHdvcmtlcgorICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJMb2Fk
ZXIod29ya2VyLCBwb3J0LnJlbGVhc2UoKSwgbmFtZSkpOworICAgIGxvYWRlci0+bG9hZCh1cmwp
OworfQorCitEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6RGVmYXVsdFNoYXJlZFdvcmtl
clJlcG9zaXRvcnkoKQoreworfQorCitEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6fkRl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9XZWJDb3JlL3dv
cmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4zYjZkYWIzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaAorI2RlZmluZSBEZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeV9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgS1VSTDsKKworICAgIC8v
IFBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5IHNpbmdsZXRvbi4KKyAgICBjbGFzcyBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eSA6IHB1YmxpYyBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LCBwdWJsaWMgTm9uY29weWFibGUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkoKTsKKyAg
ICAgICAgfkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7CisKKyAgICAgICAgLy8gSW52
b2tlZCBvbmNlIHRoZSB3b3JrZXIgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZCB0byBmaXJlIHVwIHRo
ZSB3b3JrZXIgdGhyZWFkLgorICAgICAgICB2b2lkIHdvcmtlclNjcmlwdExvYWRlZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IFN0cmluZyYgd29ya2VyU2NyaXB0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4p
OworCisgICAgICAgIHN0YXRpYyBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSogaW5zdGFu
Y2UoKTsKKyAgICB9OworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisj
ZW5kaWYgLy8gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyLmNwcAppbmRleCBlMWQzMGQzLi5hMDJhNzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNw
cApAQCAtMjcsMjAgKzI3LDMyIEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQog
CiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFy
ZWRXb3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKK1NoYXJlZFdvcmtl
cjo6U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIDog
QWJzdHJhY3RXb3JrZXIoY29udGV4dCkKIHsKLSAgICAvLyBQbGFjZWhvbGRlciAtIHVsdGltYXRl
bHkgd2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRoZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LgorICAgIFJlZlB0cjxNZXNzYWdlQ2hhbm5lbD4gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3BvcnQgPSBjaGFubmVsLT5w
b3J0MSgpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZVBvcnQgPSBjaGFu
bmVsLT5wb3J0MigpLT5kaXNlbnRhbmdsZShlYyk7CisgICAgQVNTRVJUKCFlYyk7CisKKyAgICBL
VVJMIHNjcmlwdFVybCA9IHJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm47CisgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS0+Y29ubmVj
dCh0aGlzLCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VXJsLCBuYW1lLCBlYyk7CiB9CiAK
IFNoYXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKaW5kZXgg
MzZjN2Q4NS4uMjRhYTAyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU4LDQgKzU5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKICNlbmRpZiAvLyBTaGFy
ZWRXb3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRl
eHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNTBkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
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
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1
ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hh
cmVkV29ya2VyQ29udGV4dDo6U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtlclRo
cmVhZCogdGhyZWFkKQorICAgIDogV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFk
KQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK1NoYXJlZFdvcmtlckNvbnRleHQ6On5TaGFy
ZWRXb3JrZXJDb250ZXh0KCkKK3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0Ojpmb3J3
YXJkRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYsIGludCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAv
LyBGSVhNRTogZm9yd2FyZCB0byBjb25zb2xlIChkbyBub3QgbmVlZCB0byByZXBvcnQgdG8gcGFy
ZW50IGNvbnRleHQpLgorfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2Uo
TWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBG
SVhNRTogZm9yd2FyZCB0byBjb25zb2xlLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyQ29udGV4dDo6ZGlzcGF0Y2hDb25uZWN0KFBhc3NSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IHBvcnQpCit7CisgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2
ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4K
KyAgICBBU1NFUlQoIWlzQ2xvc2luZygpKTsKKyAgICAvLyBUaGUgY29ubmVjdCBldmVudCB1c2Vz
IHRoZSBNZXNzYWdlRXZlbnQgaW50ZXJmYWNlLCBidXQgaGFzIHRoZSBuYW1lICJjb25uZWN0Ii4K
KyAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoIiIsICIiLCAi
IiwgMCwgcG9ydCk7CisgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2
ZW50LCBmYWxzZSwgZmFsc2UpOworCisgICAgaWYgKG1fb25jb25uZWN0TGlzdGVuZXIuZ2V0KCkp
IHsKKyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1
cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jb25uZWN0TGlzdGVuZXItPmhhbmRsZUV2
ZW50KGV2ZW50LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQo
IWVjKTsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkKiBTaGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJl
YWQoKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJUaHJlYWQqPihCYXNl
Ojp0aHJlYWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZTQxMzMKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCkBAIC0wLDAgKzEsNzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
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
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFNoYXJlZFdvcmtlckNvbnRleHRfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJDb250
ZXh0X2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2hhcmVkV29ya2Vy
VGhyZWFkOworCisgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dCA6IHB1YmxpYyBXb3JrZXJD
b250ZXh0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dCBCYXNl
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJDb250ZXh0KG5hbWUsIHVybCwgdXNlckFn
ZW50LCB0aHJlYWQpKTsKKyAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJD
b250ZXh0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzU2hhcmVkV29ya2VyQ29udGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwg
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAg
ICAgICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0
KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgLy8g
U2V0dGVycy9HZXR0ZXJzIGZvciBhdHRyaWJ1dGVzIGluIFNoYXJlZFdvcmtlckNvbnRleHQuaWRs
CisgICAgICAgIHZvaWQgc2V0T25jb25uZWN0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikgeyBtX29uY29ubmVjdExpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAg
ICAgICBFdmVudExpc3RlbmVyKiBvbmNvbm5lY3QoKSBjb25zdCB7IHJldHVybiBtX29uY29ubmVj
dExpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaENvbm5lY3QoUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4pOworCisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCk7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAg
ICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jb25uZWN0TGlzdGVuZXI7CisgICAgICAgIFN0
cmluZyBtX25hbWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyQ29udGV4
dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGwg
Yi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmZTA0NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRo
cmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9U0hBUkVEX1dP
UktFUlMsCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgRXh0ZW5kc0RPTUds
b2JhbE9iamVjdCwKKyAgICAgICAgSXNXb3JrZXJDb250ZXh0LAorICAgICAgICBHZW5lcmF0ZU5h
dGl2ZUNvbnZlcnRlciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIFNoYXJlZFdvcmtl
ckNvbnRleHQgOiBXb3JrZXJDb250ZXh0IHsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIG5hbWU7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29ubmVj
dDsKKworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMTEwN2EKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaAorI2RlZmluZSBTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5X2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgS1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CisgICAgY2xhc3MgU2hhcmVk
V29ya2VyOworICAgIGNsYXNzIFN0cmluZzsKKworICAgIC8vIEludGVyZmFjZSB0byBhIHJlcG9z
aXRvcnkgd2hpY2ggbWFuYWdlcyByZWZlcmVuY2VzIHRvIHRoZSBzZXQgb2YgYWN0aXZlIHNoYXJl
ZCB3b3JrZXJzLgorICAgIGNsYXNzIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgLy8gU3RhdGljIGZhY3RvcnkgZm9yIGdldHRpbmcgdGhlIGJyb3dzZXItc3Bl
Y2lmaWMgcmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgc3RhdGljIFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkqIGluc3RhbmNlKCk7CisKKyAgICAgICAgLy8gQ29ubmVjdHMgdGhlIHBh
c3NlZCBTaGFyZWRXb3JrZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCB3b3JrZXIgdGhyZWFk
LCBjcmVhdGluZyBhIG5ldyB0aHJlYWQgaWYgbmVjZXNzYXJ5LgorICAgICAgICB2b2lkIGNvbm5l
Y3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIH5TaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkgeyB9CisgICAg
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyUmVwb3NpdG9yeV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQwYmIyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyVGhyZWFkLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgi
CisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYgd29ya2VyTG9hZGVyUHJveHkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFy
ZWRXb3JrZXJUaHJlYWQobmFtZSwgc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIHdv
cmtlckxvYWRlclByb3h5KSk7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2Vy
VGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYg
d29ya2VyTG9hZGVyUHJveHkpCisgICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNv
dXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5KQorICAgICwgbV9uYW1lKG5hbWUuY29weSgpKQor
eworfQorCitTaGFyZWRXb3JrZXJUaHJlYWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQoKQoreworfQor
CitQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29y
a2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQorewor
ICAgIHJldHVybiBTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUobV9uYW1lLCB1cmwsIHVzZXJB
Z2VudCwgdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJUaHJlYWQuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTgzOGQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
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
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2lm
bmRlZiBTaGFyZWRXb3JrZXJUaHJlYWRfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJUaHJlYWRfaAor
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNoYXJlZFdvcmtlclRocmVhZCA6
IHB1YmxpYyBXb3JrZXJUaHJlYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKyAgICAgICAgflNoYXJlZFdvcmtlclRocmVhZCgpOwor
CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4
dD4gY3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKworICAgICAgICBTdHJpbmcgbV9uYW1lOwor
ICAgIH07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCisKKyNlbmRpZiAvLyBTaGFyZWRXb3JrZXJUaHJlYWRfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApp
bmRleCA5MTg1YmFlLi5hOTA2MTM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDEsNyArNDEsNiBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgogI2luY2x1ZGUg
IldvcmtlclNjcmlwdExvYWRlci5oIgpAQCAtNTQsMjEgKzUzLDkgQEAgV29ya2VyOjpXb3JrZXIo
Y29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUKICAgICA6IEFic3RyYWN0V29ya2VyKGNvbnRleHQpCiAgICAgLCBtX2NvbnRleHRQ
cm94eShXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZSh0aGlzKSkKIHsKLSAgICBpZiAodXJsLmlz
RW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBLVVJMIHNjcmlwdFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7Ci0g
ICAgaWYgKCFzY3JpcHRVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2NyaXB0VVJMKS5nZXQoKSkp
IHsKLSAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgS1VSTCBzY3JpcHRVUkwgPSByZXNv
bHZlVVJMKHVybCwgZWMpOworICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigpOwogICAgIG1fc2Ny
aXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBz
Y3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAppbmRleCBlYjgyYTViLi43MjI1ODhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCkBAIC0yNjQsNiArMjY0LDE2IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsCiAgICAg
fQogfQogCit2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQor
eworICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gZmFsc2U7CisgICAgaWYgKG9uZXJyb3IoKSkKKyAg
ICAgICAgZXJyb3JIYW5kbGVkID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcihlcnJvck1lc3NhZ2Us
IHNvdXJjZVVSTCwgbGluZU51bWJlcik7CisKKyAgICBpZiAoIWVycm9ySGFuZGxlZCkKKyAgICAg
ICAgZm9yd2FyZEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggZjJhZmE0Mi4uMWM0MGViMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oCkBAIC01NSw2ICs1NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVk
aWNhdGVkV29ya2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAgICAg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgS1VSTCBj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKIApAQCAtOTgsNiArMTAxLDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywg
TGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogICAgICAgICBFdmVudExpc3RlbmVy
c01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKKyAg
ICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJk
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFy
ZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkgaW4KICAg
ICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4K
</data>
<flag name="review"
          id="18282"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34144</attachid>
            <date>2009-08-05 10:23:56 -0700</date>
            <delta_ts>2009-08-05 11:35:09 -0700</delta_ts>
            <desc>Hopefully final patch addressing remaining comments</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>94092</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OGEwMWExLi43MjU5YjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDgt
MDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRXb3JrZXJzIHNob3VsZCBpbnN0
YW50aWF0ZSBhIHRocmVhZCBhbmQgYSBTaGFyZWRXb3JrZXJDb250ZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzkyNworCisgICAgICAgIEFkZGVk
IGRpc2FibGVkIHRlc3RzIGZvciBTaGFyZWRXb3JrZXIgbWluaW1hbCBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgIEJlZ2FuIHJlZmFjdG9yaW5nIG9mIGRlZGljYXRlZCB3b3JrZXIgdGVzdHMgdG8g
YWxsb3cgc2hhcmluZyB0ZXN0IGNhc2VzIGJldHdlZW4gc2hhcmVkIGFuZCBkZWRpY2F0ZWQgd29y
a2VyICh3aWxsIGNvbnRpbnVlIGluIGFub3RoZXIgcGF0Y2gpLgorCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVwbGFjZS1n
bG9iYWwtY29uc3RydWN0b3IuanM6IE1vdmVkIGNvbW1vbiBjb2RlIGludG8gc2hhcmVkIC5qcyBm
aWxlLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1n
Yy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1sb2FkLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sOgorCiAy
MDA5LTA3LTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODg3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpz
CkBAIC0wLDAgKzEsMTkgQEAKK29uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZXZl
bnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGhhbmRsZU1lc3NhZ2Uo
ZXZ0LCBldmVudC5tZXNzYWdlUG9ydCk7IH07Cit9OworCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdl
KGV2ZW50LCBwb3J0KSB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gInBpbmciKQorICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJQQVNTOiBSZWNlaXZlZCBwaW5nIG1lc3NhZ2UiKTsKKyAgICBlbHNl
IGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiRE9O
RSIpOworICAgIGVsc2UgaWYgKC9ldmFsLisvLnRlc3QoZXZ0LmRhdGEpKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKGV2dC5kYXRhLnN1YnN0cig1KSArICI6
ICIgKyBldmFsKGV2dC5kYXRhLnN1YnN0cig1KSkpOworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZShldnQuZGF0YS5zdWJzdHIoNSkgKyAiOiAiICsg
ZXgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiRkFJTFVSRTogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc2NyaXB0LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2ZiNjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpAQCAtMCwwICsx
LDIxIEBACitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIGV2ZW50Lm1lc3NhZ2VQ
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQu
bWVzc2FnZVBvcnQpOyB9OworfTsKKworZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCwgcG9y
dCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJ1bmhhbmRsZWRFcnJvciIpIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGUgYW4gdW5oYW5kbGVkIGVycm9yLgorICAgICAgICBvbmVycm9yID0gbnVsbDsK
KyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBvcnQucG9zdE1l
c3NhZ2UoIlNVQ0NFU1M6IHVuaGFuZGxlZCBlcnJvciBnZW5lcmF0ZWQiKTsKKyAgICAgICAgfSwg
MTAwKTsKKyAgICAgICAgZ2VuZXJhdGVFcnJvcigpOyAgLy8gVW5kZWZpbmVkIGZ1bmN0aW9uIGNh
bGwKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImhhbmRsZWRFcnJvciIpIHsKKyAgICAg
ICAgb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5vKSB7CisgICAgICAgICAg
ICBwb3J0LnBvc3RNZXNzYWdlKCJTVUNDRVNTOiBlcnJvciBoYW5kbGVkIHZpYSBvbmVycm9yOiAi
ICsgbWVzc2FnZSk7CisgICAgICAgIH07CisgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8vIFVu
ZGVmaW5lZCBmdW5jdGlvbiBjYWxsCisgICAgfSBlbHNlIHsKKyAgICAgICAgcG9ydC5wb3N0TWVz
c2FnZSgiRkFJTDogR290IHVuZXhwZWN0ZWQgbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOworICAg
IH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGI1ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2Jh
bC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDI0IEBACisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOword29ya2VyLnBvc3RNZXNzYWdlKCJldmFs
IHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Cit3b3JrZXIucG9z
dE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQorICAgICAgICBs
b2coZXZ0LmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkRPTkUiKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZAppbmRleCA1NTQ3ZTZkLi5kZTdmYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTM4LDE0ICszOCwxNCBAQCB0cnkgewogfQogCiB0cnkgewotICAgIHZhciB3
b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOwor
ICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtl
ci1jb21tb24uanMiKTsKICAgICBsb2coIkZBSUw6IENvbnN0cnVjdG9yIHN1Y2NlZWRlZCB3aGVu
IG5vIG5hbWUgaXMgcGFzc2VkIik7CiB9IGNhdGNoIChleCkgewogICAgIGxvZygiUEFTUzogaW52
b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBh
biBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiB9CiAKIHRyeSB7Ci0gICAgdmFyIHdvcmtlciA9
IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9uLmpzIiwgIm5hbWUiKTsK
KyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3Jr
ZXItY29tbW9uLmpzIiwgIm5hbWUiKTsKICAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29u
c3RydWN0b3Igc3VjY2VlZGVkOiAiICsgd29ya2VyKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9n
KCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5YmE4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUZXN0IHNoYXJlZCB3b3JrZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiBTaG91bGQgcHJpbnQgIlBB
U1MiIGZvbGxvd2VkIGJ5ICJET05FIi4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdlCitE
T05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWdjLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1nYy5odG1sLWRpc2FibGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhj
ZjAwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1nYy5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzggQEAKKzxib2R5PgorPHA+VGVz
dCBzaGFyZWQgd29ya2VyIGdhcmJhZ2UgY29sbGVjdGlvbi4gU2hvdWxkIHByaW50ICJQQVNTIiBm
b2xsb3dlZCBieSAiRE9ORSIuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitmdW5jdGlvbiBnYygp
Cit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcign
cmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKK3dvcmtlci5wb3J0
Lm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7Cit3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgicGlu
ZyIpOword29ya2VyID0gMDsKK2djKCk7CisKK2Z1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQp
IHsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWMxYTFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1l
cnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdvcmtlciBvbmVy
cm9yIGZ1bmN0aW9uYWxpdHkuIFByaW50cyBtdWx0aXBsZSBTVUNDRVNTIGxpbmVzLCB0aGVuIERP
TkUgd2hlbiBjb21wbGV0ZS4KKworUEFTUzogUmVjZWl2ZWQgbG9hZCBlcnJvciBldmVudDogW29i
amVjdCBFdmVudF0KK1BBU1M6IFJlY2VpdmVkIGVycm9yIGV2ZW50IGFmdGVyIHdvcmtlciBHQydk
OiBbb2JqZWN0IEV2ZW50XQorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3YzdjMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxvYWQtZXJyb3IuaHRt
bC1kaXNhYmxlZApAQCAtMCwwICsxLDUyIEBACis8Ym9keT4KKzxwPlRlc3QgU2hhcmVkV29ya2Vy
IG9uZXJyb3IgZnVuY3Rpb25hbGl0eS4gUHJpbnRzIG11bHRpcGxlIFNVQ0NFU1MgbGluZXMsIHRo
ZW4gRE9ORSB3aGVuIGNvbXBsZXRlLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTaW1wbGVMb2FkRXJyb3IoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcg
U2hhcmVkV29ya2VyKCJmaWxlX2RvZXNfbm90X2V4aXN0LmpzIiwgIm5hbWUiKTsKKyAgICB3b3Jr
ZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVk
IGxvYWQgZXJyb3IgZXZlbnQ6ICIgKyBldnQpOworICAgICAgICB0ZXN0TG9hZEVycm9yR0MoKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RMb2FkRXJyb3JHQygpCit7CisgICAgdmFyIHdvcmtl
ciA9IG5ldyBTaGFyZWRXb3JrZXIoImZpbGVfZG9lc19ub3RfZXhpc3QuanMiLCAibmFtZSIpOwor
ICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXJyb3I7CisgICAgd29ya2VyID0gbnVsbDsKKyAg
ICBnYygpOworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xs
ZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAo
RkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAg
ICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKKworZnVuY3Rpb24gaGFu
ZGxlRXJyb3IoZXZ0KSB7CisgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBlcnJvciBldmVudCBhZnRl
ciB3b3JrZXIgR0MnZDogIiArIGV2dCk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCit0ZXN0U2ltcGxlTG9hZEVycm9yKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJl
cGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI4NmE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFj
ZS1nbG9iYWwtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBy
ZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0LgorCitzZWxm
Lk1lc3NhZ2VFdmVudCA9ICdQQVNTJzsgTWVzc2FnZUV2ZW50OzogUEFTUworRE9ORQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWds
b2JhbC1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTU2NTAzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9i
YWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDE2IEBACis8Ym9keT4KKzxw
PlRlc3QgcmVwbGFjaW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMgaW4gYSB3b3JrZXIgY29udGV4dC48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CisvLyBNYWtlIGEgU2hhcmVkV29y
a2VyIHRoYXQgaGFzIHRoZSBzYW1lIGV4dGVybmFsIGludGVyZmFjZSBhcyBhIERlZGljYXRlZFdv
cmtlciwgdG8gdXNlIGluIHNoYXJlZCB0ZXN0IGNvZGUuCitmdW5jdGlvbiBjcmVhdGVXb3JrZXIo
KQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJjZXMvc2hhcmVk
LXdvcmtlci1jb21tb24uanMnLCAnbmFtZScpOworICAgIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH07CisgICAgd29ya2VyLnBv
c3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBvc01lc3NhZ2Uo
bXNnLCBwb3J0KTsgfTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0id29ya2VyLXJlcGxh
Y2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzIj4KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlw
dC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjcwODEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0
IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hvdWxk
IHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKwor
U1VDQ0VTUzogdW5oYW5kbGVkIGVycm9yIGdlbmVyYXRlZAorU1VDQ0VTUzogZXJyb3IgaGFuZGxl
ZCB2aWEgb25lcnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGdlbmVy
YXRlRXJyb3IKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3No
YXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuaHRtbC1kaXNhYmxlZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA2ZTUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTAsMCArMSw3MCBAQAorPGJvZHk+Cis8cD5UZXN0IFNoYXJlZFdvcmtlciBz
Y3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVz
IG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48L3A+Cis8ZGl2IGlkPXJlc3Vs
dD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgICAgInRlc3RTY3JpcHRFcnJvclVuaGFuZGxlZCIs
CisgICAgInRlc3RTY3JpcHRFcnJvckhhbmRsZWQiCitdOwordmFyIHRlc3RJbmRleCA9IDA7CisK
K2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdENhc2Vz
Lmxlbmd0aCkgeworICAgICAgICB0ZXN0SW5kZXgrKzsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHdpbmRvd1t0ZXN0Q2FzZXNbdGVzdEluZGV4IC0gMV1dKCk7CisgICAgICAgIH0gY2F0Y2gg
KGV4KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBl
eCk7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JVbmhhbmRsZWQoKQoreworICAgIHZh
ciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3Jp
cHQtZXJyb3IuanMiLCAibmFtZSIpOworICAgIC8vIFNoYXJlZFdvcmtlcnMgc2hvdWxkIG9ubHkg
aW52b2tlIG9uZXJyb3IgZm9yIGxvYWRpbmcgZXJyb3JzLgorICAgIHdvcmtlci5vbmVycm9yID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiRkFJTDogb25lcnJvciBpbnZva2VkIGZvciBh
IHNjcmlwdCBlcnJvciIpOworICAgIH07CisgICAgd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInVu
aGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0
KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JIYW5kbGVkKCkKK3sKKyAgICB2YXIgd29y
a2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzIiwgIm5hbWUyIik7CisgICAgLy8gU2hhcmVkV29ya2VycyBzaG91bGQgb25seSBpbnZv
a2Ugb25lcnJvciBmb3IgbG9hZGluZyBlcnJvcnMuCisgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5j
dGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IGVycm9yIik7CisgICAgfTsKKyAgICB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgiaGFuZGxl
ZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Cisg
ICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMGVjMTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1zaW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBzaW1wbGUgc2hhcmVk
IHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdl
CitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXNpbXBsZS5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItc2ltcGxlLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWNhZWYwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzIgQEAK
Kzxib2R5PgorPHA+VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJl
ZFdvcmtlcigncmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKKwor
d29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKK3dvcmtlci5wb3J0LnBvc3RNZXNzYWdl
KCJkb25lIik7CisKK3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikKKyAgICAg
ICAgZG9uZSgpOworfTsKKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwK
aW5kZXggY2UxYTJiMi4uZjM4NjAxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbApA
QCAtMiwyOSArMiwxMyBAQAogPHA+VGVzdCByZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBp
biBhIHdvcmtlciBjb250ZXh0LjwvcD4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4K
LWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorZnVuY3Rpb24gY3JlYXRlV29ya2VyKCkKIHsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7CisgICAgcmV0dXJuIG5ldyBXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpz
Jyk7CiB9Cis8L3NjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdy
ZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOwotd29ya2VyLnBvc3RNZXNzYWdlKCJldmFsIHNl
bGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Ci13b3JrZXIucG9zdE1l
c3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKLQotd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewotICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQotICAgICAgICBsb2co
ZXZ0LmRhdGEpOwotICAgIGVsc2UgewotICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyI+CiA8L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNGY2MDkwYy4uYjBkMWE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMDktMDgtMDEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGVkIGZpcnN0IHdvcmtpbmcgaW1wbGVtZW50
YXRpb24gb2YgU2hhcmVkV29ya2VycyAoZXhlY3V0aW9uIG9ubHksIG5vIHNoYXJpbmcpLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5MjcKKworICAg
ICAgICBBZGRlZCBpbml0aWFsIGltcGxlbWVudGF0aW9ucyBvZiBTaGFyZWRXb3JrZXJUaHJlYWQg
YW5kIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAgICAgIE5vIHY4IGJpbmRpbmdzIHlldC4KKwor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtl
ciBmaWxlcy4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBz
aGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBB
ZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVk
IHNoYXJlZCB3b3JrZXIgZmlsZXMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgQWRkZWQgY29kZSB0byBj
b252ZXJ0IGZyb20gRXZlbnRUYXJnZXQgdG8gY29ycmVjdCBKUyBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICBBZGRlZCBjb2RlIHRvIGNhc3QgZnJvbSBK
UyBvYmplY3QgdG8gYXBwcm9wcmlhdGUgRXZlbnRUYXJnZXQgaW1wbCBjbGFzcy4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0U2hhcmVkV29ya2VyKToKKyAgICAgICAg
VHdlYWtlZCB0aGUgY29uc3RydWN0b3IgY29kZSB0byBwYXNzIGluIHRoZSBsZXhpY2FsIGdsb2Jh
bCBvYmplY3QgbGlrZSBub3JtYWwgd29ya2Vycy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1No
YXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
U2hhcmVkV29ya2VyQ29udGV4dDo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJraW5nIG9mIHRo
ZSBvbmNvbm5lY3QgaGFuZGxlci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgcHJv
cGVyIGNvbnZlcnNpb24gdG8gdGhlIGNvcnJlY3QgV29ya2VyQ29udGV4dCBkZXJpdmVkIGNsYXNz
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICBVcGRhdGVk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXIgdG8gY3JlYXRlIHRoZSBjb3JyZWN0IHR5cGUgb2YgYmlu
ZGluZyBvYmplY3QgKEpTU2hhcmVkV29ya2VyQ29udGV4dCB2cyBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQpCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdv
cmtlciBiaW5kaW5ncyBmaWxlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAg
ICBBZGRlZCBjb25uZWN0IGV2ZW50LgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgQWRkZWQgQVBJIGZvciBjYXN0aW5nIHRvIG5ldyBkZXJpdmVkIGNsYXNzIChTaGFyZWRX
b3JrZXJDb250ZXh0KS4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiB3
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29y
a2VyOjpyZXNvbHZlVVJMKToKKyAgICAgICAgTW92ZWQgY29kZSB0aGF0IHJlc29sdmVzL3ZhbGlk
YXRlcyBVUkxzIHRvIGJhc2UgY2xhc3Mgc28gaXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRlZGlj
YXRlZC9zaGFyZWQgd29ya2Vycy4KKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OmxvZ0V4Y2VwdGlvbik6CisgICAgICAg
IFJlZmFjdG9yZWQgZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUgLSBtb3ZlZCBvbmVycm9yIGhhbmRs
aW5nIHRvIGJhc2UgY2xhc3MuCisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojppc0RlZGlj
YXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAg
Q2hhbmdlZCBjb25zdHJ1Y3RvciB0byBmaXJlIHVwIHdvcmtlciB0aHJlYWQuCisgICAgICAgICog
d29ya2Vycy9TaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNv
bnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6
OlNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29u
dGV4dDo6flNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyQ29udGV4dDo6bG9nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICBQbGFjZWhvbGRlciBtZXRob2RzIHVudGls
IHdlIGFkZCBzdXBwb3J0IGZvciBzZW5kaW5nIGV4Y2VwdGlvbnMvbWVzc2FnZXMgdG8gY29uc29s
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJlYWQpOgorICAg
ICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OnNldE9uY29ubmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0OjpvbmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bmFtZSk6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6flNoYXJlZFdvcmtlclJlcG9zaXRvcnkpOgorICAgICAgICAqIHdvcmtlcnMvRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgY29yZSBzaW5nbGV0b24gY2xhc3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVt
ZW50IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94eTo6c2V0VGhy
ZWFkKToKKyAgICAgICAgUHJveHkgb2JqZWN0IHVzZWQgdG8gaGFuZGxlIHJlc291cmNlIGxvYWRp
bmcgZm9yIGEgZ2l2ZW4gc2hhcmVkIHdvcmtlci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQpOgorICAgICAgICBQbGFj
ZWhvbGRlciByb3V0aW5lcyB1bnRpbCB3ZSBpbXBsZW1lbnQgbG9hZGluZy4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUpOgorICAgICAgICBDcmVhdGVz
IGEgdGFzayB0byBmaXJlIG9mZiBhIGNvbm5lY3QgZXZlbnQgb24gdGhlIHdvcmtlciB0aHJlYWQu
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6U2hhcmVkV29ya2Vy
Q29ubmVjdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckxvYWRlcjo6U2hh
cmVkV29ya2VyTG9hZGVyKToKKyAgICAgICAgQWRkZWQgaGVscGVyIG9iamVjdCB0byBsb2FkIHRo
ZSBpbml0aWFsIHNjcmlwdCBmb3IgdGhlIHdvcmtlci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclJlcG9z
aXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5OjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKToKKyAgICAgICAgRmlyZXMgb2ZmIHRo
ZSB3b3JrZXIgdGhyZWFkIG9uY2UgdGhlIHNjcmlwdCBpcyBsb2FkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
fkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWQ6
OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
VGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlclRocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2Vw
dGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dDo6aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
QWRkZWQgQVBJcyB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgYSBnaXZlbiBjb250ZXh0LgorCiA9
PT0gRW5kIG1lcmdlIG9mIG5pdHJvLWV4dHJlbWUgYnJhbmNoIDIwMDktMDctMzAgPT09CiAKIDIw
MDktMDUtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAK
aW5kZXggMTQ1NTA2MC4uMzk5ODAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTE3Niw2ICsxNzYsNyBA
QAogI2luY2x1ZGUgIkpTUkdCQ29sb3IuY3BwIgogI2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIKICNp
bmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb250
ZXh0LmNwcCIKICNpbmNsdWRlICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3Vs
dFNldC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCIKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCAyYzk0ZGYwLi5jYjQ4NTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDQsNiAr
MjA0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAogICAgIFJlY3Qg
XAogICAgIFNoYXJlZFdvcmtlciBcCisgICAgU2hhcmVkV29ya2VyQ29udGV4dCBcCiAgICAgU1FM
RXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBcCiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQppbmRleCBhZGQzNWFhLi40OTVlNWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1Myw2ICsyNTMsNyBAQCBJRExf
QklORElOR1MgKz0gXAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAogCVdl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250
ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlk
bCBcCkBAIC0zOTksNyArNDAwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwIFwKQEAg
LTIzODAsOSArMjM4MCwxNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIHdlYmNvcmVfYnVpbHRf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9y
LmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgXAorCVdl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgXAorCVdlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIFwKIAlXZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCi0JV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5o
CisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250
ZXh0LmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggXAorCVdl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyVGhyZWFkLmgKIAogZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YjI2NDIxLi4wYTliYzkzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwn
LAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCcsCisgICAgICAgICAgICAn
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsJywKICAg
ICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCcsCkBAIC01MTcsNiArNTE4LDEw
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcCcsCkBAIC0zMzE4LDkgKzMzMjMsMTYgQEAKICAgICAgICAgICAg
ICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL0RlZGlj
YXRlZFdvcmtlclRocmVhZC5oJywKKyAgICAgICAgICAgICd3b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9EZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0dlbmVyaWNXb3JrZXJU
YXNrLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJD
b250ZXh0LmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
JywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyLmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXIuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0M2E5MWU4Li5lNDE0ZjUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTI0MDksMTIgKzI0MDksMTcgQEAgY29udGFpbnMoREVGSU5FUywgU0hBUkVEX1dPUktFUlM9
MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TSEFSRURfV09S
S0VSUz0xCiAKICAgICBJRExfQklORElOR1MgKz0gXAotICAgICAgICB3b3JrZXJzL1NoYXJlZFdv
cmtlci5pZGwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKKyAgICAgICAgd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbAogCiAgICAgU09VUkNFUyArPSBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBcCi0gICAgICAgIHdvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcAorICAgICAgICB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcCBcCisgICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCisgICAgICAgIHdvcmtl
cnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgXAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtl
clRocmVhZC5jcHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZiNjhmZWMuLjYyYTI1YzUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzkxNSw2ICs3OTE1LDU0IEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNv
bnRleHQuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxF
cnJvci5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjQwODgsNiAr
MjQxMzYsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cd29ya2Vyc1xEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJz
XERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNr
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMjQxMDAsNiArMjQxNTYsMjYgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xT
aGFyZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyQ29udGV4dC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vy
c1xTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXFNoYXJlZFdvcmtlclRocmVhZC5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3
b3JrZXJzXFNoYXJlZFdvcmtlclRocmVhZC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xXb3JrZXIuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KQEAgLTI4NzMxLDYgKzI4ODA3LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1NoYXJl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkxZDJlNy4uM2RmMjM1MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2NSw2ICs2NjUsOCBAQAogCQk0MTYy
QTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUz
MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICov
OyB9OwogCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICov
OyB9OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07
CisJCTQxNjdFQkY1MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwICovOyB9OworCQk0MTY3RUJGNjEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNjdFQkY0MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5oICovOyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi87IH07CiAJCTQx
NkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkQwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQxNkU3NUNCMEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKQEAgLTY4NCw2ICs2ODYsMTUgQEAKIAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2
NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAg
Ki87IH07CiAJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3QzBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwICovOyB9OwogCQk0MUQwN0E3RjBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5oICovOyB9OworCQk0MUQxNjhFNzEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVk
V29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUQxNjhERjEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5j
cHAgKi87IH07CisJCTQxRDE2OEU4MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQx
NjhFMDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5oICovOyB9OworCQk0
MUQxNjhFOTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5pZGwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUxMTAyMjZF
ODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCAqLzsgfTsKKwkJNDFEMTY4RUEx
MDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUyMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggKi87IH07CisJCTQxRDE2OEVEMTAyMjZFODkw
MDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJl
ZFdvcmtlclRocmVhZC5jcHAgKi87IH07CisJCTQxRDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBT
aGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRDE2OEU2MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLzsgfTsKKwkJNDFEMTY4RjAxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxNjhFRjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCAqLzsgfTsKKwkJNDFEMTY5MDUxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29y
a2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCAqLzsgfTsKKwkJNDFEMTY5MDYxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MTY5MDQxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oICovOyB9Owog
CQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCAqLzsgfTsKIAkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFF
MUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLzsgfTsKQEAgLTU2
MzgsNiArNTY0OSw4IEBACiAJCTQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEg
LyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOyBwYXRo
ID0gd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNjdFQkY0MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oOyBwYXRoID0gd29ya2Vycy9EZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZF
NzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjU3LDYg
KzU2NzAsMTUgQEAKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8q
IEpTU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDdB
N0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRDE2OERGMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlckNvbnRl
eHQuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTAxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29y
a2VyQ29udGV4dC5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEUxMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTaGFyZWRXb3JrZXJD
b250ZXh0LmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQxNjhFNTEwMjI2RTg5MDA5
QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEU2
MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHBhdGggPSB3b3JrZXJzL1No
YXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQxNjhF
RjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OTAzMTAyMzhCNjYw
MDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY5MDQxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29y
a2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYXJlZFdv
cmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBYnN0cmFjdFdv
cmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NDAsMTAgKzk5NjIsMTggQEAKIAkJCQk0MUUxQjFDQTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNCMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAogCQkJCTQxRTFCMUNDMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCisJCQkJNDE2N0VCRjMxMDI5NjJCQTAw
M0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQk0MTY3
RUJGNDEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCAq
LywKIAkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAq
LywKIAkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywK
IAkJCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJ
NDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCisJCQkJNDFE
MTY4REYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwICovLAorCQkJ
CTQxRDE2OEUwMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggKi8sCisJ
CQkJNDFEMTY4RTExMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaWRsICov
LAorCQkJCTQxRDE2OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmggKi8sCisJCQkJNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVh
ZC5jcHAgKi8sCisJCQkJNDFEMTY4RTYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICov
LAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywKIAkJCQkyRTQz
NDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKQEAgLTEzNzAwLDYgKzEzNzMw
LDcgQEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgKi8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0
b20uY3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3Rv
bS5jcHAgKi8sCisJCQkJNDFEMTY4RUYxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAw
QzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERB
QTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLApAQCAtMTQwNTMsNiArMTQw
ODQsOCBAQAogCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2Vy
LmggKi8sCiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNw
cCAqLywKIAkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAq
LywKKwkJCQk0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0
LmNwcCAqLywKKwkJCQk0MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJD
b250ZXh0LmggKi8sCiAJCQkJRTFDOEJFNUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNw
cCAqLywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJ
CQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAg
LTE3MDYzLDYgKzE3MDk2LDExIEBACiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIElu
c3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMUU4OEY2MTAxQ0MzODQwMDBD
NERGNSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUy
RDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFEMTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxRDE2OEVBMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQxNjhFRTEwMjI2RTg5MDA5QkM4MjcgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQxNjkwNjEwMjM4QjY2
MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTY3RUJGNjEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMTcxNzcsNiArMTcyMTUsNyBAQAogCQkJCTQxNjJBNDUyMTAx
MTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMkVDRjdBRTMxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuaWRsIGluIFJl
c291cmNlcyAqLywKIAkJCQk3QTc0RUNCNzEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFj
a2VuZC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTQxRDE2OEU5MTAyMjZFODkwMDlCQzgyNyAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTEwNSw2ICsx
OTE0NCwxMSBAQAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJh
Y2tlbmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0
REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQTNENThFMTAxQzE1
MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFEMTY4RTcxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFEMTY4RUQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUQxNjhGMDEwMjI2RUM0MDA5QkM4Mjcg
LyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
RDE2OTA1MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE2N0VCRjUxMDI5NjJCQTAwM0QyNTJBIC8qIERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHAKaW5kZXggYjc1Y2NjZi4uYzM0ZTEwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCkBAIC0zMyw5ICszMywxMyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
KyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJKU1hNTEh0
dHBSZXF1ZXN0VXBsb2FkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgog
CkBAIC01NiwxMSArNjAsNiBAQAogI2luY2x1ZGUgIldvcmtlci5oIgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCi0jaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDcsNiArMTA2LDkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQq
IHRhcmcKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgaWYgKFNoYXJlZFdvcmtlciog
c2hhcmVkV29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHNoYXJlZFdvcmtlcik7CisKKyAgICBpZiAoU2hhcmVk
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXJDb250
ZXh0KCkpCisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQp
OwogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0Miw2ICsxNDQsNyBA
QCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAKICNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoU2hhcmVk
V29ya2VyKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFNoYXJlZFdvcmtlckNvbnRleHQp
CiAjZW5kaWYKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTMxMjIyNS4uZTJmMTEzNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCkBA
IC00NSwxNSArNDUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgQ2xhc3NJbmZvIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNoYXJlZFdvcmtlckNvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OwogCiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKLSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkK
KyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBK
U1NoYXJlZFdvcmtlclByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsK
ICAgICAvLyBIb3N0IGZ1bmN0aW9ucyBoYXZlIGEgbGVuZ3RoIHByb3BlcnR5IGRlc2NyaWJpbmcg
dGhlIG51bWJlciBvZiBleHBlY3RlZCBhcmd1bWVudHMuCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seXxEb250RGVs
ZXRlfERvbnRFbnVtKTsKIH0KIAotc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RTaGFyZWRXb3Jr
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitzdGF0
aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKKyAgICBKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3Rvcio+KGNvbnN0cnVjdG9yKTsKKwogICAgIGlmIChhcmdzLnNpemUoKSA8IDIp
CiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiKTsKIApAQCAtNjIsMTMgKzY0LDEzIEBAIHN0YXRpYyBKU09iamVjdCogY29u
c3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdM
aXN0CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1c2UgYm90aCB0aGUgZHluYW1p
YyBzY29wZSBhbmQgdGhlIGxleGljYWwgc2NvcGUgKGR5bmFtaWMgc2NvcGUgZm9yIHJlc29sdmlu
ZyB0aGUgd29ya2VyIFVSTCkKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3co
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6
Y3JlYXRlKHNjcmlwdFVSTCwgbmFtZSwgY29udGV4dCwgZWMpOworICAgIFJlZlB0cjxTaGFyZWRX
b3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHNjcmlwdFVSTCwgbmFtZSwgd2lu
ZG93LT5kb2N1bWVudCgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAot
ICAgIC8vIEZJWE1FOiB0b0pTKCkgY3JlYXRlcyBhbiBvYmplY3Qgd2hvc2UgcHJvdG90eXBlIGlz
IGRlcml2ZWQgZnJvbSBsZXhpY2FsR2xvYmFsU2NvcGUsIHdoaWNoIGlzIGluY29ycmVjdCAoQnVn
IDI3MDg4KQotICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkp
KTsKKyAgICByZXR1cm4gYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxP
YmplY3QoKSwgd29ya2VyLnJlbGVhc2UoKSkpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjIzMTRk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRl
eHQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOwor
CisgICAgbWFya0lmTm90TnVsbChpbXBsKCktPm9uY29ubmVjdCgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKaW5kZXggNjIyZGE3MC4uMWU0
ZGY0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0QmFzZS5oIgogCiAjaW5j
bHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgogCkBAIC04MywxMCArODQsMjYgQEAgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KiB0b0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVy
biAwOwogfQogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNTaGFyZWRXb3JrZXJDb250
ZXh0KiB0b0pTU2hhcmVkV29ya2VyQ29udGV4dChKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICgh
dmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8gPSBhc09iamVjdCh2YWx1ZSktPmNsYXNzSW5mbygpOworICAgIGlmIChjbGFz
c0luZm8gPT0gJkpTU2hhcmVkV29ya2VyQ29udGV4dDo6c19pbmZvKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3QodmFsdWUpKTsKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBKU1dvcmtlckNvbnRleHQqIHRvSlNXb3JrZXJDb250
ZXh0KEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgLy8gV2hlbiB3ZSBzdXBwb3J0IHNoYXJlZCB3b3Jr
ZXJzLCB3ZSdsbCBhZGQgY29kZSB0byB0ZXN0IGZvciBTaGFyZWRXb3JrZXJDb250ZXh0IHRvby4K
LSAgICByZXR1cm4gdG9KU0RlZGljYXRlZFdvcmtlckNvbnRleHQodmFsdWUpOworICAgIEpTV29y
a2VyQ29udGV4dCogY29udGV4dCA9IHRvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHZhbHVlKTsK
KyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBj
b250ZXh0ID0gdG9KU1NoYXJlZFdvcmtlckNvbnRleHQodmFsdWUpOworI2VuZGlmCisgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKaW5kZXggZjdhZDE3Zi4uYTlhNmU2MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dDsKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgSlNXb3JrZXJD
b250ZXh0OwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAKQEAgLTYxLDYgKzYyLDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KEpTQzo6SlNWYWx1ZSk7CiAgICAgSlNXb3JrZXJDb250ZXh0KiB0
b0pTV29ya2VyQ29udGV4dChKU0M6OkpTVmFsdWUpOwogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKQorICAgIEpTU2hhcmVkV29ya2VyQ29udGV4dCogdG9KU1NoYXJlZFdvcmtlckNvbnRleHQo
SlNDOjpKU1ZhbHVlKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IGJlNmEwOTguLjM1OTBkYWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzIsOCArMzIsMTAgQEAK
IAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+
CkBAIC03MywxMiArNzUsMjIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0KCkKICAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
OwogICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRl
eHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJv
dG90eXBlKHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKIAotICAg
IC8vIEZJWE1FOiBXaGVuIHdlIGFkZCBTaGFyZWRXb3JrZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUg
Y29ycmVjdCB3cmFwcGVyIGhlcmUuCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwotICAgIFByb3RlY3Rl
ZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQ
cm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgp
KTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKLQotICAg
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIHN0YXRpY19jYXN0PERlZGlj
YXRlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRleHQpKTsKKyAgICBpZiAobV93b3JrZXJD
b250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkgeworICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3Rv
dHlwZSk7CisgICAgICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90
b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZSk7CisKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9
IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3RydWN0
dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSk7CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChtX3dvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hh
cmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQ
cm90b3R5cGUpOworICAgICAgICBQcm90ZWN0ZWRQdHI8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJv
dG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkp
IEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZShzaGFyZWRDb250ZXh0UHJvdG90eXBlU3Ry
dWN0dXJlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9
IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90
b3R5cGUpOworCisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFs
RGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1f
d29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpOworI2VuZGlmCisgICAgfQog
fQogCiBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggODcyMmU0My4uNGZjMjI0ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00MzQsNyArNDM0LDcgQEAgRU5E
CiAgICAgLy8gY29udGV4dCBvZiB0aGUgRE9NV2luZG93IGFuZCBub3QgaW4gdGhlIGNvbnRleHQg
b2YgdGhlIGNhbGxlci4KICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcih0
eXBlLCB3aW5kb3cpOwogRU5ECi0gICAgfSBlbHNpZiAoJGNsYXNzSW5kZXggZXEgIkRFRElDQVRF
RFdPUktFUkNPTlRFWFQiIG9yICRjbGFzc0luZGV4IGVxICJXT1JLRVJDT05URVhUIikgeworICAg
IH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJERURJQ0FURURXT1JLRVJDT05URVhUIiBvciAkY2xh
c3NJbmRleCBlcSAiV09SS0VSQ09OVEVYVCIgb3IgJGNsYXNzSW5kZXggZXEgIlNIQVJFRFdPUktF
UkNPTlRFWFQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5oIn0gPSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CiAgICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKS0+R2V0
Q29uc3RydWN0b3IodHlwZSk7CkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBzdWIgUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAicmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2
ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlmICgkdHlwZSBl
cSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIldvcmtlckNvbnRleHQiKSB7
CisgICAgaWYgKCR0eXBlIGVxICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IiBvciAkdHlwZSBlcSAi
V29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiKSB7CiAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOwog
ICAgICAgICByZXR1cm4gInJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6Oldvcmtl
ckNvbnRleHRUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
T2JqZWN0c0luY2x1ZGUuaAppbmRleCAzMjM1NGIzLi42ZTg4NDk0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01PYmplY3RzSW5jbHVkZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIERPTU9i
amVjdHNJbmNsdWRlX2gKICNkZWZpbmUgRE9NT2JqZWN0c0luY2x1ZGVfaAogCisjaW5jbHVkZSAi
QWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJCYXJJbmZvLmgiCiAjaW5jbHVkZSAiQ2FudmFz
R3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCkBAIC0xMTYsNiArMTE3LDgg
QEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJTUUxUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgogI2luY2x1ZGUgIlNRTFJlc3Vs
dFNldFJvd0xpc3QuaCIKQEAgLTIwNyw4ICsyMTAsNiBAQAogI2VuZGlmIC8vIFdPUktFUlMKIAog
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSNpbmNsdWRlICJBYnN0cmFjdFdvcmtlci5oIgot
I2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgogI2VuZGlmIC8vIFNIQVJFRF9XT1JLRVJTCiAKICNp
ZiBFTkFCTEUoWFBBVEgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOTI3MmJhNC4uOWY4ZjRhNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oY2hlY2tp
bmcpIFwKICAgICBtYWNybyhjbGljaykgXAogICAgIG1hY3JvKGNsb3NlKSBcCisgICAgbWFjcm8o
Y29ubmVjdCkgXAogICAgIG1hY3JvKGNvbnRleHRtZW51KSBcCiAgICAgbWFjcm8oY29weSkgXAog
ICAgIG1hY3JvKGN1dCkgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDQyNjY4ZTMuLjdiYTA1ODQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKQEAgLTEwMCw2ICsxMDAsMTAgQEAgU2hhcmVkV29ya2VyKiBFdmVudFRh
cmdldDo6dG9TaGFyZWRXb3JrZXIoKQogewogICAgIHJldHVybiAwOwogfQorU2hhcmVkV29ya2Vy
Q29udGV4dCogRXZlbnRUYXJnZXQ6OnRvU2hhcmVkV29ya2VyQ29udGV4dCgpCit7CisgICAgcmV0
dXJuIDA7Cit9CiAjZW5kaWYKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGYwYzc5
NGYuLjJlZGVkZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOworICAgIGNsYXNzIFNoYXJl
ZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgV29ya2VyOwogICAgIGNsYXNzIFhNTEh0dHBSZXF1
ZXN0OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0VXBsb2FkOwpAQCAtNzQsNiArNzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgICAg
IHZpcnR1YWwgU2hhcmVkV29ya2VyKiB0b1NoYXJlZFdvcmtlcigpOworICAgICAgICB2aXJ0dWFs
IFNoYXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCiAK
ICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKaW5kZXggN2Ni
MmMxMS4uMjM3MWU5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC0zOCw2ICsz
OCw4IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMzQsNiArMTM2LDI3IEBAIGJvb2wgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoU2NyaXB0
RXJyb3JFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJu
IGhhbmRsZWQ7CiB9CiAKK0tVUkwgQWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7
CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICB9
CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBkeW5hbWljIGdsb2JhbCBzY29w
ZSAoYnVnICMyNzg4NykKKyAgICBLVVJMIHNjcmlwdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gS1VSTCgpOworICAgIH0K
KworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzY3JpcHRVUkwpLmdldCgpKSkgeworICAg
ICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHNjcmlwdFVSTDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmluZGV4IDI4Y2M1
MGQuLmE4ODI1NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5o
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC00Myw2ICs0Myw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIEtVUkw7CiAgICAgY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAogICAgIGNsYXNzIEFic3RyYWN0V29ya2VyIDogcHVibGlj
IFJlZkNvdW50ZWQ8QWJzdHJhY3RXb3JrZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgRXZlbnRUYXJnZXQgewpAQCAtNzAsOCArNzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBBYnN0cmFjdFdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgICAg
IHZpcnR1YWwgfkFic3RyYWN0V29ya2VyKCk7CiAKLSAgICBwcml2YXRlOgorICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgYSBVUkwgdG8gYW4g
YWJzb2x1dGUgVVJMIGFuZCBjaGVja3MgdGhlIHJlc3VsdCBmb3IgdmFsaWRpdHkuCisgICAgICAg
IEtVUkwgcmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpOwog
CisgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYo
KTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKaW5kZXgg
MjRjZjE0OC4uYWU1YzU0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcApAQCAtNTMsMTQgKzUzLDkgQEAgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6fkRlZGlj
YXRlZFdvcmtlckNvbnRleHQoKQogICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLndv
cmtlckNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6Zm9yd2FyZEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogewotICAgIGJvb2wgZXJyb3JIYW5kbGVk
ID0gZmFsc2U7Ci0gICAgaWYgKG9uZXJyb3IoKSkKLSAgICAgICAgZXJyb3JIYW5kbGVkID0gb25l
cnJvcigpLT5yZXBvcnRFcnJvcihlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7
Ci0KLSAgICBpZiAoIWVycm9ySGFuZGxlZCkKLSAgICAgICAgdGhyZWFkKCktPndvcmtlck9iamVj
dFByb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51
bWJlciwgc291cmNlVVJMKTsKKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwogfQogCiB2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZURlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKaW5kZXggMDZmNmM5Yy4uZTk3NGNlZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCkBAIC0zMSw2ICszMSw4IEBACiAjaWZu
ZGVmIERlZGljYXRlZFdvcmtlckNvbnRleHRfaAogI2RlZmluZSBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0X2gKIAorI2lmIEVOQUJMRShXT1JLRVJTKQorCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NiwxMyArNDgsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckNvbnRl
eHQoKTsKIAotICAgICAgICAvLyBXb3JrZXJVdGlscworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAg
IC8vIE92ZXJyaWRkZW4gdG8gYWxsb3cgdXMgdG8gY2hlY2sgb3VyIHBlbmRpbmcgYWN0aXZpdHkg
YWZ0ZXIgZXhlY3V0aW5nIGltcG9ydGVkIHNjcmlwdC4KICAgICAgICAgdmlydHVhbCB2b2lkIGlt
cG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2Fs
bGVyVVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlv
bihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURl
c3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yd2FyZEV4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKTsKKwogICAgICAgICAvLyBFdmVudFRhcmdldAogICAgICAgICB2aXJ0dWFsIERlZGljYXRl
ZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7
IH0KICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC03MCw0ICs3NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCisKICNlbmRpZiAvLyBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjljMDc1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCisj
aW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJv
eHkuaCIKKyNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFy
ZWRXb3JrZXJQcm94eSA6IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSB7CitwdWJsaWM6CisgICAg
dm9pZCBzZXRUaHJlYWQoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCkgeyBt
X3RocmVhZCA9IHRocmVhZDsgfQorCisgICAgLy8gV29ya2VyTG9hZGVyUHJveHkKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IFdvcmtlckxvYWRlclByb3h5IEFQSXMgYnkgcHJveHlpbmcgdG8gYW4g
YWN0aXZlIGRvY3VtZW50LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoUGFzc1Jl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiwgY29uc3QgU3RyaW5nJikgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9Citwcml2YXRlOgorICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+
IG1fdGhyZWFkOworfTsKKworY2xhc3MgU2hhcmVkV29ya2VyQ29ubmVjdFRhc2sgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s+IGNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkV29ya2VyQ29ubmVjdFRhc2soY2hhbm5lbCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
Y2hhbm5lbCkKKyAgICAgICAgOiBtX2NoYW5uZWwoY2hhbm5lbCkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQpCisgICAgeworICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNz
YWdlUG9ydDo6Y3JlYXRlKCpzY3JpcHRDb250ZXh0KTsKKyAgICAgICAgcG9ydC0+ZW50YW5nbGUo
bV9jaGFubmVsLnJlbGVhc2UoKSk7CisgICAgICAgIEFTU0VSVChzY3JpcHRDb250ZXh0LT5pc1dv
cmtlckNvbnRleHQoKSk7CisgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBz
dGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0Q29udGV4dCk7CisgICAgICAgIEFTU0VS
VCh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSk7CisgICAgICAgIHdvcmtl
ckNvbnRleHQtPnRvU2hhcmVkV29ya2VyQ29udGV4dCgpLT5kaXNwYXRjaENvbm5lY3QocG9ydCk7
CisgICAgfQorCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9jaGFubmVsOworfTsK
KworY2xhc3MgU2hhcmVkV29ya2VyTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29y
a2VyTG9hZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQgeworcHVibGljOgorICAgIFNoYXJlZFdvcmtlckxvYWRlcihQYXNzUmVmUHRy
PFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBsb2FkKGNvbnN0IEtVUkwmKTsKKworICAgIC8vIFdvcmtlclNjcmlw
dExvYWRlckNsaWVudCBjYWxsYmFjaworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZCgp
OworCitwcml2YXRlOgorICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IG1fd29ya2VyOworICAgIE93
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fcG9ydDsKKyAgICBTdHJpbmcgbV9uYW1lOworICAg
IE93blB0cjxXb3JrZXJTY3JpcHRMb2FkZXI+IG1fc2NyaXB0TG9hZGVyOworfTsKKworU2hhcmVk
V29ya2VyTG9hZGVyOjpTaGFyZWRXb3JrZXJMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+
IHdvcmtlciwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCh3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdGhpcykKKyAgICAsIG1fd29ya2VyKHdvcmtlcikKKyAgICAsIG1fcG9ydChwb3J0
KQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyTG9hZGVyOjps
b2FkKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBNYXJrIHRoaXMgb2JqZWN0IGFzIGFjdGl2
ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBsb2FkLgorICAgIEFTU0VSVCghaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpOworICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigp
OworICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCB1cmwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKKworICAgIC8v
IFN0YXkgYWxpdmUgdW50aWwgdGhlIGxvYWQgZmluaXNoZXMuCisgICAgc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOworfQorCit2b2lkIFNoYXJlZFdvcmtlckxvYWRlcjo6bm90aWZ5RmluaXNoZWQo
KQoreworICAgIC8vIEhhbmQgb2ZmIHRoZSBqdXN0LWxvYWRlZCBjb2RlIHRvIHRoZSByZXBvc2l0
b3J5IHRvIHN0YXJ0IHVwIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgIGlmIChtX3NjcmlwdExvYWRl
ci0+ZmFpbGVkKCkpCisgICAgICAgIG1fd29ya2VyLT5kaXNwYXRjaExvYWRFcnJvckV2ZW50KCk7
CisgICAgZWxzZQorICAgICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFu
Y2UoKS0+d29ya2VyU2NyaXB0TG9hZGVkKG1fbmFtZSwgbV9zY3JpcHRMb2FkZXItPnVybCgpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkp
LCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIG1fcG9ydC5yZWxlYXNlKCkpOworCisgICAgLy8g
VGhpcyBmcmVlcyB0aGlzIG9iamVjdCAtIG11c3QgYmUgdGhlIGxhc3QgYWN0aW9uIGluIHRoaXMg
ZnVuY3Rpb24uCisgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisKK1NoYXJlZFdv
cmtlclJlcG9zaXRvcnkqIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCkKK3sKKyAg
ICByZXR1cm4gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCk7Cit9CisK
K0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6aW5zdGFuY2UoKQoreworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhEZWZh
dWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSosIGluc3RhbmNlID0gbmV3IERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5KTsKKyAgICByZXR1cm4gaW5zdGFuY2U7Cit9CisKK3ZvaWQgRGVmYXVs
dFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OndvcmtlclNjcmlwdExvYWRlZChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0
cmluZyYgd29ya2VyU2NyaXB0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCkK
K3sKKyAgICAvLyBGSVhNRTogQ2FjaGUgdGhlIHByb3h5IHRvIGFsbG93IHNoYXJpbmcgYW5kIHRv
IGFsbG93IGNsZWFudXAgYWZ0ZXIgdGhlIHRocmVhZCBleGl0cy4KKyAgICBTaGFyZWRXb3JrZXJQ
cm94eSogcHJveHkgPSBuZXcgU2hhcmVkV29ya2VyUHJveHkoKTsKKyAgICBSZWZQdHI8U2hhcmVk
V29ya2VyVGhyZWFkPiB0aHJlYWQgPSBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZShuYW1lLCB1
cmwsIHVzZXJBZ2VudCwgd29ya2VyU2NyaXB0LCAqcHJveHkpOworICAgIHByb3h5LT5zZXRUaHJl
YWQodGhyZWFkKTsKKyAgICB0aHJlYWQtPnN0YXJ0KCk7CisgICAgdGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soU2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6OmNyZWF0ZShwb3J0KSk7Cit9CisKK3Zv
aWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
cj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKQoreworICAgIC8vIENy
ZWF0ZSBhIGxvYWRlciB0byBsb2FkL2luaXRpYWxpemUgdGhlIHJlcXVlc3RlZCB3b3JrZXIuCisg
ICAgUmVmUHRyPFNoYXJlZFdvcmtlckxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IFNoYXJl
ZFdvcmtlckxvYWRlcih3b3JrZXIsIHBvcnQsIG5hbWUpKTsKKyAgICBsb2FkZXItPmxvYWQodXJs
KTsKK30KKworRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OkRlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5KCkKK3sKK30KKworRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6On5E
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNzVkY2QwOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5X2gKKyNkZWZpbmUgRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnlfaAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5j
bHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIEtVUkw7CisKKyAgICAv
LyBQbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2hhcmVkV29ya2VyUmVw
b3NpdG9yeSBzaW5nbGV0b24uCisgICAgY2xhc3MgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkgOiBwdWJsaWMgU2hhcmVkV29ya2VyUmVwb3NpdG9yeSwgcHVibGljIE5vbmNvcHlhYmxlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7Cisg
ICAgICAgIH5EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSgpOworCisgICAgICAgIC8vIElu
dm9rZWQgb25jZSB0aGUgd29ya2VyIHNjcmlwdCBoYXMgYmVlbiBsb2FkZWQgdG8gZmlyZSB1cCB0
aGUgd29ya2VyIHRocmVhZC4KKyAgICAgICAgdm9pZCB3b3JrZXJTY3JpcHRMb2FkZWQoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IFN0cmluZyYgd29ya2VyU2NyaXB0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4pOwor
CisgICAgICAgIHN0YXRpYyBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeSogaW5zdGFuY2Uo
KTsKKyAgICB9OworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5k
aWYgLy8gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
LmNwcAppbmRleCBlMWQzMGQzLi5hMDJhNzIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApA
QCAtMjcsMjAgKzI3LDMyIEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
KwogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
TWVzc2FnZUNoYW5uZWwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRX
b3JrZXI6OlNoYXJlZFdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJikKK1NoYXJlZFdvcmtlcjo6
U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIDogQWJz
dHJhY3RXb3JrZXIoY29udGV4dCkKIHsKLSAgICAvLyBQbGFjZWhvbGRlciAtIHVsdGltYXRlbHkg
d2UnbGwgbG9vayB1cCB0aGUgd29ya2VyIGluIHRoZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lgor
ICAgIFJlZlB0cjxNZXNzYWdlQ2hhbm5lbD4gY2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3BvcnQgPSBjaGFubmVsLT5wb3J0
MSgpOworICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHJlbW90ZVBvcnQgPSBjaGFubmVs
LT5wb3J0MigpLT5kaXNlbnRhbmdsZShlYyk7CisgICAgQVNTRVJUKCFlYyk7CisKKyAgICBLVVJM
IHNjcmlwdFVybCA9IHJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm47CisgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS0+Y29ubmVjdCh0
aGlzLCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VXJsLCBuYW1lLCBlYyk7CiB9CiAKIFNo
YXJlZFdvcmtlcjo6flNoYXJlZFdvcmtlcigpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyLmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmgKaW5kZXggMzZj
N2Q4NS4uMjRhYTAyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5o
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisj
aWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4
LDQgKzU5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKICNlbmRpZiAvLyBTaGFyZWRX
b3JrZXJfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQu
Y3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNTBkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUg
IlNoYXJlZFdvcmtlckNvbnRleHQuaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlclRocmVhZC5oIgorI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2hhcmVk
V29ya2VyQ29udGV4dDo6U2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtlclRocmVh
ZCogdGhyZWFkKQorICAgIDogV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFkKQor
ICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK1NoYXJlZFdvcmtlckNvbnRleHQ6On5TaGFyZWRX
b3JrZXJDb250ZXh0KCkKK3sKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0Ojpmb3J3YXJk
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYsIGludCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBG
SVhNRTogZm9yd2FyZCB0byBjb25zb2xlIChkbyBub3QgbmVlZCB0byByZXBvcnQgdG8gcGFyZW50
IGNvbnRleHQpLgorfQorCit2b2lkIFNoYXJlZFdvcmtlckNvbnRleHQ6OmFkZE1lc3NhZ2UoTWVz
c2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhN
RTogZm9yd2FyZCB0byBjb25zb2xlLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
U2hhcmVkV29ya2VyQ29udGV4dDo6ZGlzcGF0Y2hDb25uZWN0KFBhc3NSZWZQdHI8TWVzc2FnZVBv
cnQ+IHBvcnQpCit7CisgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50
IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KKyAg
ICBBU1NFUlQoIWlzQ2xvc2luZygpKTsKKyAgICAvLyBUaGUgY29ubmVjdCBldmVudCB1c2VzIHRo
ZSBNZXNzYWdlRXZlbnQgaW50ZXJmYWNlLCBidXQgaGFzIHRoZSBuYW1lICJjb25uZWN0Ii4KKyAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoIiIsICIiLCAiIiwg
MCwgcG9ydCk7CisgICAgZXZlbnQtPmluaXRFdmVudChldmVudE5hbWVzKCkuY29ubmVjdEV2ZW50
LCBmYWxzZSwgZmFsc2UpOworCisgICAgaWYgKG1fb25jb25uZWN0TGlzdGVuZXIuZ2V0KCkpIHsK
KyAgICAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZlbnQtPnNldEN1cnJl
bnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25jb25uZWN0TGlzdGVuZXItPmhhbmRsZUV2ZW50
KGV2ZW50LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVj
KTsKK30KKworU2hhcmVkV29ya2VyVGhyZWFkKiBTaGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJlYWQo
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFyZWRXb3JrZXJUaHJlYWQqPihCYXNlOjp0
aHJlYWQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZTQxMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
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
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFNoYXJlZFdvcmtlckNvbnRleHRfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJDb250ZXh0
X2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2hhcmVkV29ya2VyVGhy
ZWFkOworCisgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dCA6IHB1YmxpYyBXb3JrZXJDb250
ZXh0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dCBCYXNlOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJDb250ZXh0KG5hbWUsIHVybCwgdXNlckFnZW50
LCB0aHJlYWQpKTsKKyAgICAgICAgfQorICAgICAgICB2aXJ0dWFsIH5TaGFyZWRXb3JrZXJDb250
ZXh0KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIGlzU2hhcmVkV29ya2VyQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0
b1NoYXJlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisKKyAgICAgICAgLy8gU2V0
dGVycy9HZXR0ZXJzIGZvciBhdHRyaWJ1dGVzIGluIFNoYXJlZFdvcmtlckNvbnRleHQuaWRsCisg
ICAgICAgIHZvaWQgc2V0T25jb25uZWN0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lcikgeyBtX29uY29ubmVjdExpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAg
ICBFdmVudExpc3RlbmVyKiBvbmNvbm5lY3QoKSBjb25zdCB7IHJldHVybiBtX29uY29ubmVjdExp
c3RlbmVyLmdldCgpOyB9CisgICAgICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaENvbm5lY3QoUGFzc1JlZlB0cjxNZXNzYWdl
UG9ydD4pOworCisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKCk7CisgICAgcHJp
dmF0ZToKKyAgICAgICAgU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25jb25uZWN0TGlzdGVuZXI7CisgICAgICAgIFN0cmlu
ZyBtX25hbWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyQ29udGV4dF9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGwgYi9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGU0NTBlMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVh
ZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9U0hBUkVEX1dPUktF
UlMsCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgRXh0ZW5kc0RPTUdsb2Jh
bE9iamVjdCwKKyAgICAgICAgSXNXb3JrZXJDb250ZXh0LAorICAgICAgICBHZW5lcmF0ZU5hdGl2
ZUNvbnZlcnRlciwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIFNoYXJlZFdvcmtlckNv
bnRleHQgOiBXb3JrZXJDb250ZXh0IHsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIG5hbWU7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Y29ubmVjdDsKKworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMTEwN2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaAorI2RlZmluZSBT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5X2gKKworI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CisgICAgY2xhc3Mg
U2hhcmVkV29ya2VyOworICAgIGNsYXNzIFN0cmluZzsKKworICAgIC8vIEludGVyZmFjZSB0byBh
IHJlcG9zaXRvcnkgd2hpY2ggbWFuYWdlcyByZWZlcmVuY2VzIHRvIHRoZSBzZXQgb2YgYWN0aXZl
IHNoYXJlZCB3b3JrZXJzLgorICAgIGNsYXNzIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkgeworICAg
IHB1YmxpYzoKKyAgICAgICAgLy8gU3RhdGljIGZhY3RvcnkgZm9yIGdldHRpbmcgdGhlIGJyb3dz
ZXItc3BlY2lmaWMgcmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgc3RhdGljIFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkqIGluc3RhbmNlKCk7CisKKyAgICAgICAgLy8gQ29ubmVjdHMg
dGhlIHBhc3NlZCBTaGFyZWRXb3JrZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCB3b3JrZXIg
dGhyZWFkLCBjcmVhdGluZyBhIG5ldyB0aHJlYWQgaWYgbmVjZXNzYXJ5LgorICAgICAgICB2b2lk
IGNvbm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIH5TaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkgeyB9
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQorCisjZW5kaWYgLy8gU2hhcmVkV29ya2VyUmVwb3NpdG9yeV9oCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjQwYmIyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyVGhy
ZWFkLmgiCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJM
b2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRXb3JrZXJUaHJlYWQobmFtZSwgc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNvdXJjZUNv
ZGUsIHdvcmtlckxvYWRlclByb3h5KSk7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVk
V29ya2VyVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYgd29ya2VyTG9hZGVyUHJveHkpCisgICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdl
bnQsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5KQorICAgICwgbV9uYW1lKG5hbWUuY29w
eSgpKQoreworfQorCitTaGFyZWRXb3JrZXJUaHJlYWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQoKQor
eworfQorCitQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IFNoYXJlZFdvcmtlclRocmVhZDo6Y3Jl
YXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQoreworICAgIHJldHVybiBTaGFyZWRXb3JrZXJDb250ZXh0OjpjcmVhdGUobV9uYW1lLCB1cmws
IHVzZXJBZ2VudCwgdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXJUaHJlYWQuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTgzOGQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworI2lmbmRlZiBTaGFyZWRXb3JrZXJUaHJlYWRfaAorI2RlZmluZSBTaGFyZWRXb3JrZXJUaHJl
YWRfaAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNoYXJlZFdvcmtlclRo
cmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKyAgICAgICAgflNoYXJlZFdvcmtlclRocmVh
ZCgpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2Vy
Q29udGV4dD4gY3JlYXRlV29ya2VyQ29udGV4dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmKTsKKworICAgICAgICBTdHJpbmcgbV9u
YW1lOworICAgIH07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAvLyBTaGFyZWRXb3JrZXJUaHJlYWRfaApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAppbmRleCA5MTg1YmFlLi5hOTA2MTM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNDEsNyArNDEs
NiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRQcm94eS5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgpAQCAtNTQsMjEgKzUzLDkgQEAgV29ya2VyOjpX
b3JrZXIoY29uc3QgU3RyaW5nJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUKICAgICA6IEFic3RyYWN0V29ya2VyKGNvbnRleHQpCiAgICAgLCBtX2Nv
bnRleHRQcm94eShXb3JrZXJDb250ZXh0UHJveHk6OmNyZWF0ZSh0aGlzKSkKIHsKLSAgICBpZiAo
dXJsLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBLVVJMIHNjcmlwdFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVy
bCk7Ci0gICAgaWYgKCFzY3JpcHRVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghY29udGV4dC0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2NyaXB0VVJMKS5n
ZXQoKSkpIHsKLSAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgS1VSTCBzY3JpcHRVUkwg
PSByZXNvbHZlVVJMKHVybCwgZWMpOworICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAogICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNjcmlwdExvYWRlcigpOwogICAg
IG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlZGlyZWN0LCB0aGlzKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcAppbmRleCBlYjgyYTViLi43MjI1ODhmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuY3BwCkBAIC0yNjQsNiArMjY0LDE2IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6aW1w
b3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxs
CiAgICAgfQogfQogCit2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKQoreworICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gZmFsc2U7CisgICAgaWYgKG9uZXJyb3Io
KSkKKyAgICAgICAgZXJyb3JIYW5kbGVkID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcihlcnJvck1l
c3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7CisKKyAgICBpZiAoIWVycm9ySGFuZGxlZCkK
KyAgICAgICAgZm9yd2FyZEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggZjJhZmE0Mi4uMWM0MGViMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC01NSw2ICs1NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3Jr
ZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGlzRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAgICAg
S1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKIApAQCAtOTgsNiArMTAxLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0
cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogICAgICAgICBFdmVudExp
c3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9
CiAKKyAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBm
b3J3YXJkRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKIAogICAgICAgICAvLyBUaGVzZSBtZXRo
b2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkg
aW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4K
</data>
<flag name="review"
          id="18306"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34156</attachid>
            <date>2009-08-05 11:35:09 -0700</date>
            <delta_ts>2009-08-05 22:05:26 -0700</delta_ts>
            <desc>Final patch ready for landing</desc>
            <filename>y</filename>
            <type>text/plain</type>
            <size>94169</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OGEwMWExLi43MjU5YjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDgt
MDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRXb3JrZXJzIHNob3VsZCBpbnN0
YW50aWF0ZSBhIHRocmVhZCBhbmQgYSBTaGFyZWRXb3JrZXJDb250ZXh0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzkyNworCisgICAgICAgIEFkZGVk
IGRpc2FibGVkIHRlc3RzIGZvciBTaGFyZWRXb3JrZXIgbWluaW1hbCBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgIEJlZ2FuIHJlZmFjdG9yaW5nIG9mIGRlZGljYXRlZCB3b3JrZXIgdGVzdHMgdG8g
YWxsb3cgc2hhcmluZyB0ZXN0IGNhc2VzIGJldHdlZW4gc2hhcmVkIGFuZCBkZWRpY2F0ZWQgd29y
a2VyICh3aWxsIGNvbnRpbnVlIGluIGFub3RoZXIgcGF0Y2gpLgorCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLWNvbW1vbi5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qczog
QWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItcmVwbGFjZS1n
bG9iYWwtY29uc3RydWN0b3IuanM6IE1vdmVkIGNvbW1vbiBjb2RlIGludG8gc2hhcmVkIC5qcyBm
aWxlLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0
bWwtZGlzYWJsZWQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1n
Yy5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1sb2FkLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwtZGlzYWJsZWQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sLWRpc2FibGVkOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1zaW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbC1kaXNhYmxlZDogQWRkZWQuCisgICAgICAgICog
ZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sOgorCiAy
MDA5LTA3LTMwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1jb21tb24uanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODg3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpz
CkBAIC0wLDAgKzEsMTkgQEAKK29uY29ubmVjdCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZXZl
bnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGhhbmRsZU1lc3NhZ2Uo
ZXZ0LCBldmVudC5tZXNzYWdlUG9ydCk7IH07Cit9OworCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdl
KGV2ZW50LCBwb3J0KSB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT0gInBpbmciKQorICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJQQVNTOiBSZWNlaXZlZCBwaW5nIG1lc3NhZ2UiKTsKKyAgICBlbHNl
IGlmIChldmVudC5kYXRhID09ICJkb25lIikKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiRE9O
RSIpOworICAgIGVsc2UgaWYgKC9ldmFsLisvLnRlc3QoZXZ0LmRhdGEpKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKGV2dC5kYXRhLnN1YnN0cig1KSArICI6
ICIgKyBldmFsKGV2dC5kYXRhLnN1YnN0cig1KSkpOworICAgICAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZShldnQuZGF0YS5zdWJzdHIoNSkgKyAiOiAiICsg
ZXgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiRkFJTFVSRTogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7Cit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3NoYXJlZC13
b3JrZXItc2NyaXB0LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42M2ZiNjUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLXNjcmlwdC1lcnJvci5qcwpAQCAtMCwwICsx
LDIxIEBACitvbmNvbm5lY3QgPSBmdW5jdGlvbihldmVudCkgeworICAgIGV2ZW50Lm1lc3NhZ2VQ
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBoYW5kbGVNZXNzYWdlKGV2dCwgZXZlbnQu
bWVzc2FnZVBvcnQpOyB9OworfTsKKworZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCwgcG9y
dCkgeworICAgIGlmIChldmVudC5kYXRhID09ICJ1bmhhbmRsZWRFcnJvciIpIHsKKyAgICAgICAg
Ly8gR2VuZXJhdGUgYW4gdW5oYW5kbGVkIGVycm9yLgorICAgICAgICBvbmVycm9yID0gbnVsbDsK
KyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHBvcnQucG9zdE1l
c3NhZ2UoIlNVQ0NFU1M6IHVuaGFuZGxlZCBlcnJvciBnZW5lcmF0ZWQiKTsKKyAgICAgICAgfSwg
MTAwKTsKKyAgICAgICAgZ2VuZXJhdGVFcnJvcigpOyAgLy8gVW5kZWZpbmVkIGZ1bmN0aW9uIGNh
bGwKKyAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0gImhhbmRsZWRFcnJvciIpIHsKKyAgICAg
ICAgb25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwgbGluZW5vKSB7CisgICAgICAgICAg
ICBwb3J0LnBvc3RNZXNzYWdlKCJTVUNDRVNTOiBlcnJvciBoYW5kbGVkIHZpYSBvbmVycm9yOiAi
ICsgbWVzc2FnZSk7CisgICAgICAgIH07CisgICAgICAgIGdlbmVyYXRlRXJyb3IoKTsgIC8vIFVu
ZGVmaW5lZCBmdW5jdGlvbiBjYWxsCisgICAgfSBlbHNlIHsKKyAgICAgICAgcG9ydC5wb3N0TWVz
c2FnZSgiRkFJTDogR290IHVuZXhwZWN0ZWQgbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOworICAg
IH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNGI1ZGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1yZXBsYWNlLWdsb2Jh
bC1jb25zdHJ1Y3Rvci5qcwpAQCAtMCwwICsxLDI0IEBACisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KCdyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOword29ya2VyLnBvc3RNZXNzYWdlKCJldmFs
IHNlbGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Cit3b3JrZXIucG9z
dE1lc3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQorICAgICAgICBs
b2coZXZ0LmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBsb2coIkRPTkUiKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbC1k
aXNhYmxlZAppbmRleCA1NTQ3ZTZkLi5kZTdmYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTM4LDE0ICszOCwxNCBAQCB0cnkgewogfQogCiB0cnkgewotICAgIHZhciB3
b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcyIpOwor
ICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtl
ci1jb21tb24uanMiKTsKICAgICBsb2coIkZBSUw6IENvbnN0cnVjdG9yIHN1Y2NlZWRlZCB3aGVu
IG5vIG5hbWUgaXMgcGFzc2VkIik7CiB9IGNhdGNoIChleCkgewogICAgIGxvZygiUEFTUzogaW52
b2tpbmcgU2hhcmVkV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmFtZSByZXN1bHRlZCBpbiBh
biBleGNlcHRpb24gKCIgKyBleCArICIpIik7CiB9CiAKIHRyeSB7Ci0gICAgdmFyIHdvcmtlciA9
IG5ldyBTaGFyZWRXb3JrZXIoInJlc291cmNlcy93b3JrZXItY29tbW9uLmpzIiwgIm5hbWUiKTsK
KyAgICB2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3Jr
ZXItY29tbW9uLmpzIiwgIm5hbWUiKTsKICAgICBsb2cgKCJQQVNTOiBTaGFyZWRXb3JrZXIgY29u
c3RydWN0b3Igc3VjY2VlZGVkOiAiICsgd29ya2VyKTsKIH0gY2F0Y2ggKGV4KSB7CiAgICAgbG9n
KCJGQUlMOiBpbnZva2luZyBTaGFyZWRXb3JrZXIgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uICgiICsgZXggKyAiKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjg5YmE4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitUZXN0IHNoYXJlZCB3b3JrZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLiBTaG91bGQgcHJpbnQgIlBB
U1MiIGZvbGxvd2VkIGJ5ICJET05FIi4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdlCitE
T05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWdjLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1nYy5odG1sLWRpc2FibGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhj
ZjAwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1nYy5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzggQEAKKzxib2R5PgorPHA+VGVz
dCBzaGFyZWQgd29ya2VyIGdhcmJhZ2UgY29sbGVjdGlvbi4gU2hvdWxkIHByaW50ICJQQVNTIiBm
b2xsb3dlZCBieSAiRE9ORSIuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitmdW5jdGlvbiBnYygp
Cit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJlZFdvcmtlcign
cmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKK3dvcmtlci5wb3J0
Lm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7Cit3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgicGlu
ZyIpOword29ya2VyID0gMDsKK2djKCk7CisKK2Z1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoZXZlbnQp
IHsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1lcnJvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWMxYTFkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1l
cnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0IFNoYXJlZFdvcmtlciBvbmVy
cm9yIGZ1bmN0aW9uYWxpdHkuIFByaW50cyBtdWx0aXBsZSBTVUNDRVNTIGxpbmVzLCB0aGVuIERP
TkUgd2hlbiBjb21wbGV0ZS4KKworUEFTUzogUmVjZWl2ZWQgbG9hZCBlcnJvciBldmVudDogW29i
amVjdCBFdmVudF0KK1BBU1M6IFJlY2VpdmVkIGVycm9yIGV2ZW50IGFmdGVyIHdvcmtlciBHQydk
OiBbb2JqZWN0IEV2ZW50XQorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwtZGlzYWJsZWQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY3YzdjMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxvYWQtZXJyb3IuaHRt
bC1kaXNhYmxlZApAQCAtMCwwICsxLDUyIEBACis8Ym9keT4KKzxwPlRlc3QgU2hhcmVkV29ya2Vy
IG9uZXJyb3IgZnVuY3Rpb25hbGl0eS4gUHJpbnRzIG11bHRpcGxlIFNVQ0NFU1MgbGluZXMsIHRo
ZW4gRE9ORSB3aGVuIGNvbXBsZXRlLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RTaW1wbGVMb2FkRXJyb3IoKQoreworICAgIHZhciB3b3JrZXIgPSBuZXcg
U2hhcmVkV29ya2VyKCJmaWxlX2RvZXNfbm90X2V4aXN0LmpzIiwgIm5hbWUiKTsKKyAgICB3b3Jr
ZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVk
IGxvYWQgZXJyb3IgZXZlbnQ6ICIgKyBldnQpOworICAgICAgICB0ZXN0TG9hZEVycm9yR0MoKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3RMb2FkRXJyb3JHQygpCit7CisgICAgdmFyIHdvcmtl
ciA9IG5ldyBTaGFyZWRXb3JrZXIoImZpbGVfZG9lc19ub3RfZXhpc3QuanMiLCAibmFtZSIpOwor
ICAgIHdvcmtlci5vbmVycm9yID0gaGFuZGxlRXJyb3I7CisgICAgd29ya2VyID0gbnVsbDsKKyAg
ICBnYygpOworfQorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xs
ZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAo
RkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAg
ICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKKworZnVuY3Rpb24gaGFu
ZGxlRXJyb3IoZXZ0KSB7CisgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBlcnJvciBldmVudCBhZnRl
ciB3b3JrZXIgR0MnZDogIiArIGV2dCk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCit0ZXN0U2ltcGxlTG9hZEVycm9yKCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJl
cGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI4NmE2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFj
ZS1nbG9iYWwtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBy
ZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBpbiBhIHdvcmtlciBjb250ZXh0LgorCitzZWxm
Lk1lc3NhZ2VFdmVudCA9ICdQQVNTJzsgTWVzc2FnZUV2ZW50OzogUEFTUworRE9ORQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWds
b2JhbC1jb25zdHJ1Y3Rvci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTU2NTAzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFjZS1nbG9i
YWwtY29uc3RydWN0b3IuaHRtbC1kaXNhYmxlZApAQCAtMCwwICsxLDE2IEBACis8Ym9keT4KKzxw
PlRlc3QgcmVwbGFjaW5nIGdsb2JhbCBjb25zdHJ1Y3RvcnMgaW4gYSB3b3JrZXIgY29udGV4dC48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CisvLyBNYWtlIGEgU2hhcmVkV29y
a2VyIHRoYXQgaGFzIHRoZSBzYW1lIGV4dGVybmFsIGludGVyZmFjZSBhcyBhIERlZGljYXRlZFdv
cmtlciwgdG8gdXNlIGluIHNoYXJlZCB0ZXN0IGNvZGUuCitmdW5jdGlvbiBjcmVhdGVXb3JrZXIo
KQoreworICAgIHZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdyZXNvdXJjZXMvc2hhcmVk
LXdvcmtlci1jb21tb24uanMnLCAnbmFtZScpOworICAgIHdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeyB3b3JrZXIub25tZXNzYWdlKGV2dCk7IH07CisgICAgd29ya2VyLnBv
c3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBvc01lc3NhZ2Uo
bXNnLCBwb3J0KTsgfTsKK30KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0id29ya2VyLXJlcGxh
Y2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmpzIj4KKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlw
dC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjcwODEzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUZXN0
IFNoYXJlZFdvcmtlciBzY3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hvdWxk
IHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS4KKwor
U1VDQ0VTUzogdW5oYW5kbGVkIGVycm9yIGdlbmVyYXRlZAorU1VDQ0VTUzogZXJyb3IgaGFuZGxl
ZCB2aWEgb25lcnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGdlbmVy
YXRlRXJyb3IKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3No
YXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuaHRtbC1kaXNhYmxlZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjA2ZTUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVycm9yLmh0bWwt
ZGlzYWJsZWQKQEAgLTAsMCArMSw3MCBAQAorPGJvZHk+Cis8cD5UZXN0IFNoYXJlZFdvcmtlciBz
Y3JpcHQgZXJyb3IgaGFuZGxpbmcgZnVuY3Rpb25hbGl0eS4gU2hvdWxkIHByaW50IGEgc2VyaWVz
IG9mIFBBU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48L3A+Cis8ZGl2IGlkPXJlc3Vs
dD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK3ZhciB0ZXN0Q2FzZXMgPSBbCisgICAgInRlc3RTY3JpcHRFcnJvclVuaGFuZGxlZCIs
CisgICAgInRlc3RTY3JpcHRFcnJvckhhbmRsZWQiCitdOwordmFyIHRlc3RJbmRleCA9IDA7CisK
K2Z1bmN0aW9uIHJ1bk5leHRUZXN0KCkKK3sKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdENhc2Vz
Lmxlbmd0aCkgeworICAgICAgICB0ZXN0SW5kZXgrKzsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHdpbmRvd1t0ZXN0Q2FzZXNbdGVzdEluZGV4IC0gMV1dKCk7CisgICAgICAgIH0gY2F0Y2gg
KGV4KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICIgKyBl
eCk7CisgICAgICAgICAgICBydW5OZXh0VGVzdCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JVbmhhbmRsZWQoKQoreworICAgIHZh
ciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1zY3Jp
cHQtZXJyb3IuanMiLCAibmFtZSIpOworICAgIC8vIFNoYXJlZFdvcmtlcnMgc2hvdWxkIG9ubHkg
aW52b2tlIG9uZXJyb3IgZm9yIGxvYWRpbmcgZXJyb3JzLgorICAgIHdvcmtlci5vbmVycm9yID0g
ZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiRkFJTDogb25lcnJvciBpbnZva2VkIGZvciBh
IHNjcmlwdCBlcnJvciIpOworICAgIH07CisgICAgd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInVu
aGFuZGxlZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0
KSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAg
fQorfQorCitmdW5jdGlvbiB0ZXN0U2NyaXB0RXJyb3JIYW5kbGVkKCkKK3sKKyAgICB2YXIgd29y
a2VyID0gbmV3IFNoYXJlZFdvcmtlcigicmVzb3VyY2VzL3NoYXJlZC13b3JrZXItc2NyaXB0LWVy
cm9yLmpzIiwgIm5hbWUyIik7CisgICAgLy8gU2hhcmVkV29ya2VycyBzaG91bGQgb25seSBpbnZv
a2Ugb25lcnJvciBmb3IgbG9hZGluZyBlcnJvcnMuCisgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5j
dGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJGQUlMOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IGVycm9yIik7CisgICAgfTsKKyAgICB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgiaGFuZGxl
ZEVycm9yIik7CisgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Cisg
ICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMGVjMTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1zaW1wbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdCBzaW1wbGUgc2hhcmVk
IHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS4KKworUEFTUzogUmVjZWl2ZWQgcGluZyBtZXNzYWdl
CitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLXNpbXBsZS5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItc2ltcGxlLmh0bWwtZGlzYWJsZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWNhZWYwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sLWRpc2FibGVkCkBAIC0wLDAgKzEsMzIgQEAK
Kzxib2R5PgorPHA+VGVzdCBzaW1wbGUgc2hhcmVkIHdvcmtlciBjb25zdHJ1Y3Rpb24gY2FzZS48
L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFNoYXJl
ZFdvcmtlcigncmVzb3VyY2VzL3NoYXJlZC13b3JrZXItY29tbW9uLmpzJywgJ25hbWUnKTsKKwor
d29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKK3dvcmtlci5wb3J0LnBvc3RNZXNzYWdl
KCJkb25lIik7CisKK3dvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikKKyAgICAg
ICAgZG9uZSgpOworfTsKKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2UtZ2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwK
aW5kZXggY2UxYTJiMi4uZjM4NjAxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItcmVwbGFjZS1nbG9iYWwtY29uc3RydWN0b3IuaHRtbApA
QCAtMiwyOSArMiwxMyBAQAogPHA+VGVzdCByZXBsYWNpbmcgZ2xvYmFsIGNvbnN0cnVjdG9ycyBp
biBhIHdvcmtlciBjb250ZXh0LjwvcD4KIDxkaXYgaWQ9cmVzdWx0PjwvZGl2PgogPHNjcmlwdD4K
LWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorZnVuY3Rpb24gY3JlYXRlV29ya2VyKCkKIHsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7CisgICAgcmV0dXJuIG5ldyBXb3JrZXIoJ3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpz
Jyk7CiB9Cis8L3NjcmlwdD4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdy
ZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcycpOwotd29ya2VyLnBvc3RNZXNzYWdlKCJldmFsIHNl
bGYuTWVzc2FnZUV2ZW50ID0gJ1BBU1MnOyBNZXNzYWdlRXZlbnQ7Iik7Ci13b3JrZXIucG9zdE1l
c3NhZ2UoImV2YWwgZm9vLy9iYXIiKTsKLQotd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewotICAgIGlmICghL2Zvb1wvXC9iYXIvLnRlc3QoZXZ0LmRhdGEpKQotICAgICAgICBsb2co
ZXZ0LmRhdGEpOwotICAgIGVsc2UgewotICAgICAgICBsb2coIkRPTkUiKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9Ci19Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5qcyI+CiA8L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNGY2MDkwYy4uYjBkMWE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMDktMDgtMDEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGVkIGZpcnN0IHdvcmtpbmcgaW1wbGVtZW50
YXRpb24gb2YgU2hhcmVkV29ya2VycyAoZXhlY3V0aW9uIG9ubHksIG5vIHNoYXJpbmcpLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5MjcKKworICAg
ICAgICBBZGRlZCBpbml0aWFsIGltcGxlbWVudGF0aW9ucyBvZiBTaGFyZWRXb3JrZXJUaHJlYWQg
YW5kIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAgICAgIE5vIHY4IGJpbmRpbmdzIHlldC4KKwor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtl
ciBmaWxlcy4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBBZGRlZCBz
aGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBB
ZGRlZCBzaGFyZWQgd29ya2VyIGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdvcmtlciBmaWxlcy4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVk
IHNoYXJlZCB3b3JrZXIgZmlsZXMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgQWRkZWQgY29kZSB0byBj
b252ZXJ0IGZyb20gRXZlbnRUYXJnZXQgdG8gY29ycmVjdCBKUyBjbGFzcy4KKyAgICAgICAgKFdl
YkNvcmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICBBZGRlZCBjb2RlIHRvIGNhc3QgZnJvbSBK
UyBvYmplY3QgdG8gYXBwcm9wcmlhdGUgRXZlbnRUYXJnZXQgaW1wbCBjbGFzcy4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OkpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0U2hhcmVkV29ya2VyKToKKyAgICAgICAg
VHdlYWtlZCB0aGUgY29uc3RydWN0b3IgY29kZSB0byBwYXNzIGluIHRoZSBsZXhpY2FsIGdsb2Jh
bCBvYmplY3QgbGlrZSBub3JtYWwgd29ya2Vycy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1No
YXJlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
U2hhcmVkV29ya2VyQ29udGV4dDo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJraW5nIG9mIHRo
ZSBvbmNvbm5lY3QgaGFuZGxlci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNTaGFyZWRXb3JrZXJDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlNXb3JrZXJDb250ZXh0KToKKyAgICAgICAgQWRkZWQgcHJv
cGVyIGNvbnZlcnNpb24gdG8gdGhlIGNvcnJlY3QgV29ya2VyQ29udGV4dCBkZXJpdmVkIGNsYXNz
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICBVcGRhdGVk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXIgdG8gY3JlYXRlIHRoZSBjb3JyZWN0IHR5cGUgb2YgYmlu
ZGluZyBvYmplY3QgKEpTU2hhcmVkV29ya2VyQ29udGV4dCB2cyBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQpCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFNoYXJlZFdvcmtlckNvbnRleHQuCisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaDoKKyAgICAgICAgQWRkZWQgc2hhcmVkIHdv
cmtlciBiaW5kaW5ncyBmaWxlcy4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAg
ICBBZGRlZCBjb25uZWN0IGV2ZW50LgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAg
ICAgICAgQWRkZWQgQVBJIGZvciBjYXN0aW5nIHRvIG5ldyBkZXJpdmVkIGNsYXNzIChTaGFyZWRX
b3JrZXJDb250ZXh0KS4KKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiB3
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0V29y
a2VyOjpyZXNvbHZlVVJMKToKKyAgICAgICAgTW92ZWQgY29kZSB0aGF0IHJlc29sdmVzL3ZhbGlk
YXRlcyBVUkxzIHRvIGJhc2UgY2xhc3Mgc28gaXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGRlZGlj
YXRlZC9zaGFyZWQgd29ya2Vycy4KKyAgICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmg6
CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OmxvZ0V4Y2VwdGlvbik6CisgICAgICAg
IFJlZmFjdG9yZWQgZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUgLSBtb3ZlZCBvbmVycm9yIGhhbmRs
aW5nIHRvIGJhc2UgY2xhc3MuCisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojppc0RlZGlj
YXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKToKKyAgICAgICAg
Q2hhbmdlZCBjb25zdHJ1Y3RvciB0byBmaXJlIHVwIHdvcmtlciB0aHJlYWQuCisgICAgICAgICog
d29ya2Vycy9TaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlckNv
bnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6
OlNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29u
dGV4dDo6flNoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29y
a2VyQ29udGV4dDo6bG9nRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtl
ckNvbnRleHQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICBQbGFjZWhvbGRlciBtZXRob2RzIHVudGls
IHdlIGFkZCBzdXBwb3J0IGZvciBzZW5kaW5nIGV4Y2VwdGlvbnMvbWVzc2FnZXMgdG8gY29uc29s
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0Ojp0aHJlYWQpOgorICAg
ICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6dG9TaGFyZWRXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbnRleHQ6OnNldE9uY29ubmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb250ZXh0OjpvbmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyQ29udGV4dDo6bmFtZSk6CisgICAgICAgICogd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6flNoYXJlZFdvcmtlclJlcG9zaXRvcnkpOgorICAgICAgICAqIHdvcmtlcnMvRGVm
YXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgY29yZSBzaW5nbGV0b24gY2xhc3MgdGhhdCB3aWxsIGJlIHVzZWQgdG8gaW1wbGVt
ZW50IHNoYXJpbmcuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJQcm94eTo6c2V0VGhy
ZWFkKToKKyAgICAgICAgUHJveHkgb2JqZWN0IHVzZWQgdG8gaGFuZGxlIHJlc291cmNlIGxvYWRp
bmcgZm9yIGEgZ2l2ZW4gc2hhcmVkIHdvcmtlci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclByb3h5Ojpwb3N0VGFza1RvTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdv
cmtlclByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQpOgorICAgICAgICBQbGFj
ZWhvbGRlciByb3V0aW5lcyB1bnRpbCB3ZSBpbXBsZW1lbnQgbG9hZGluZy4KKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUpOgorICAgICAgICBDcmVhdGVz
IGEgdGFzayB0byBmaXJlIG9mZiBhIGNvbm5lY3QgZXZlbnQgb24gdGhlIHdvcmtlciB0aHJlYWQu
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6U2hhcmVkV29ya2Vy
Q29ubmVjdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyQ29ubmVjdFRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckxvYWRlcjo6U2hh
cmVkV29ya2VyTG9hZGVyKToKKyAgICAgICAgQWRkZWQgaGVscGVyIG9iamVjdCB0byBsb2FkIHRo
ZSBpbml0aWFsIHNjcmlwdCBmb3IgdGhlIHdvcmtlci4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclJlcG9z
aXRvcnk6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5OjppbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29y
a2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0TG9hZGVkKToKKyAgICAgICAgRmlyZXMgb2ZmIHRo
ZSB3b3JrZXIgdGhyZWFkIG9uY2UgdGhlIHNjcmlwdCBpcyBsb2FkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
fkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KToKKyAgICAgICAgKiB3b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJUaHJlYWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJlYWQ6
OlNoYXJlZFdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXJUaHJl
YWQ6On5TaGFyZWRXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
VGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdv
cmtlclRocmVhZC5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXI6Oldvcmtlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2Vw
dGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJDb250ZXh0Ojppc1NoYXJlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dDo6aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
QWRkZWQgQVBJcyB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgYSBnaXZlbiBjb250ZXh0LgorCiA9
PT0gRW5kIG1lcmdlIG9mIG5pdHJvLWV4dHJlbWUgYnJhbmNoIDIwMDktMDctMzAgPT09CiAKIDIw
MDktMDUtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAK
aW5kZXggMTQ1NTA2MC4uMzk5ODAxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTE3Niw2ICsxNzYsNyBA
QAogI2luY2x1ZGUgIkpTUkdCQ29sb3IuY3BwIgogI2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIKICNp
bmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb250
ZXh0LmNwcCIKICNpbmNsdWRlICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3Vs
dFNldC5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCIKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCAyYzk0ZGYwLi5jYjQ4NTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDQsNiAr
MjA0LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgUmFuZ2VFeGNlcHRpb24gXAogICAgIFJlY3Qg
XAogICAgIFNoYXJlZFdvcmtlciBcCisgICAgU2hhcmVkV29ya2VyQ29udGV4dCBcCiAgICAgU1FM
RXJyb3IgXAogICAgIFNRTFJlc3VsdFNldCBcCiAgICAgU1FMUmVzdWx0U2V0Um93TGlzdCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQppbmRleCBhZGQzNWFhLi40OTVlNWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1Myw2ICsyNTMsNyBAQCBJRExf
QklORElOR1MgKz0gXAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAogCVdl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250
ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlk
bCBcCkBAIC0zOTksNyArNDAwLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5oIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3Jh
Z2VDdXN0b20uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwIFwKQEAg
LTIzODAsOSArMjM4MCwxNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIHdlYmNvcmVfYnVpbHRf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVj
dG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9y
LmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgXAorCVdl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgXAorCVdlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIFwKIAlXZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCi0JV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5o
CisJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyQ29udGV4dC5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250
ZXh0LmggXAorCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggXAorCVdl
YkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyVGhyZWFkLmgKIAogZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YjI2NDIxLi4wYTliYzkzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwn
LAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCcsCisgICAgICAgICAgICAn
d29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9X
b3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsJywKICAg
ICAgICAgICAgICd3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbCcsCkBAIC01MTcsNiArNTE4LDEw
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXIu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcCcsCkBAIC0zMzE4LDkgKzMzMjMsMTYgQEAKICAgICAgICAgICAg
ICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL0RlZGlj
YXRlZFdvcmtlclRocmVhZC5oJywKKyAgICAgICAgICAgICd3b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9EZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0dlbmVyaWNXb3JrZXJU
YXNrLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFy
ZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXJD
b250ZXh0LmgnLAorICAgICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
JywKKyAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAnLAorICAgICAg
ICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvV29ya2VyLmNwcCcsCiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXIuaCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0M2E5MWU4Li5lNDE0ZjUwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
QEAgLTI0MDksMTIgKzI0MDksMTcgQEAgY29udGFpbnMoREVGSU5FUywgU0hBUkVEX1dPUktFUlM9
MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TSEFSRURfV09S
S0VSUz0xCiAKICAgICBJRExfQklORElOR1MgKz0gXAotICAgICAgICB3b3JrZXJzL1NoYXJlZFdv
cmtlci5pZGwKKyAgICAgICAgd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKKyAgICAgICAgd29y
a2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmlkbAogCiAgICAgU09VUkNFUyArPSBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKKyAgICAgICAgYmlu
ZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBcCi0gICAgICAgIHdvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcAorICAgICAgICB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcCBcCisgICAgICAgIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBcCisgICAgICAgIHdvcmtl
cnMvU2hhcmVkV29ya2VyQ29udGV4dC5jcHAgXAorICAgICAgICB3b3JrZXJzL1NoYXJlZFdvcmtl
clRocmVhZC5jcHAKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZiNjhmZWMuLjYyYTI1YzUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzkxNSw2ICs3OTE1LDU0IEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNv
bnRleHQuY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
RGVidWd8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJ
CQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFt
ZT0iUmVsZWFzZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4N
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NoYXJlZFdvcmtlckNvbnRleHQu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxF
cnJvci5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjQwODgsNiAr
MjQxMzYsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cd29ya2Vyc1xEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJz
XERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNr
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMjQxMDAsNiArMjQxNTYsMjYgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xT
aGFyZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcU2hhcmVkV29ya2VyQ29udGV4dC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vy
c1xTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXFNoYXJlZFdvcmtlclRocmVhZC5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3
b3JrZXJzXFNoYXJlZFdvcmtlclRocmVhZC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xXb3JrZXIuY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KQEAgLTI4NzMxLDYgKzI4ODA3LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1NoYXJl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkxZDJlNy4uM2RmMjM1MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2NSw2ICs2NjUsOCBAQAogCQk0MTYy
QTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDUz
MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICov
OyB9OwogCQk0MTYyQTQ1NzEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICov
OyB9OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi87IH07
CisJCTQxNjdFQkY1MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwICovOyB9OworCQk0MTY3RUJGNjEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNjdFQkY0MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5oICovOyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi87IH07CiAJCTQx
NkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkQwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQxNkU3NUNCMEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKQEAgLTY4NCw2ICs2ODYsMTUgQEAKIAkJNDFEMDE1Q0IwRjRCNUM3MTAwNEE2
NjJGIC8qIENvbnRlbnRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxRDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAg
Ki87IH07CiAJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwN0E3QzBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwICovOyB9OwogCQk0MUQwN0E3RjBG
RjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDA3QTdEMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5oICovOyB9OworCQk0MUQxNjhFNzEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVk
V29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MUQxNjhERjEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5j
cHAgKi87IH07CisJCTQxRDE2OEU4MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQx
NjhFMDEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5oICovOyB9OworCQk0
MUQxNjhFOTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5pZGwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUxMTAyMjZF
ODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCAqLzsgfTsKKwkJNDFEMTY4RUEx
MDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDE2OEUyMTAyMjZFODkwMDlCQzgy
NyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggKi87IH07CisJCTQxRDE2OEVEMTAyMjZFODkw
MDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJl
ZFdvcmtlclRocmVhZC5jcHAgKi87IH07CisJCTQxRDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBT
aGFyZWRXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRDE2OEU2MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQu
aCAqLzsgfTsKKwkJNDFEMTY4RjAxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxNjhFRjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCAqLzsgfTsKKwkJNDFEMTY5MDUxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29y
a2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCAqLzsgfTsKKwkJNDFEMTY5MDYxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFE
MTY5MDQxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oICovOyB9Owog
CQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsgfTsKIAkJNDFFMUIxRDEwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3Jr
ZXIuaCAqLzsgfTsKIAkJNDFFMUIxRDIwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFF
MUIxQ0MwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLzsgfTsKQEAgLTU2
MzgsNiArNTY0OSw4IEBACiAJCTQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTY3RUJGMzEwMjk2MkJBMDAzRDI1MkEg
LyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwOyBwYXRo
ID0gd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNjdFQkY0MTAyOTYyQkEwMDNEMjUyQSAvKiBEZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oOyBwYXRoID0gd29ya2Vycy9EZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTZF
NzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENhbGxTdGFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjU3LDYg
KzU2NzAsMTUgQEAKIAkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8q
IEpTU2hhcmVkV29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2hhcmVkV29ya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMDdB
N0QwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxRDE2OERGMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlckNvbnRl
eHQuY3BwOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY4RTAxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdv
cmtlckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29y
a2VyQ29udGV4dC5oOyBwYXRoID0gd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEUxMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFy
ZWRXb3JrZXJDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTaGFyZWRXb3JrZXJD
b250ZXh0LmlkbDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyQ29udGV4dC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaDsgcGF0aCA9IHdvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQxNjhFNTEwMjI2RTg5MDA5
QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNoYXJlZFdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL1NoYXJl
ZFdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OEU2
MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU2hhcmVkV29ya2VyVGhyZWFkLmg7IHBhdGggPSB3b3JrZXJzL1No
YXJlZFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQxNjhF
RjEwMjI2RUM0MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDE2OTAzMTAyMzhCNjYw
MDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDFEMTY5MDQxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29y
a2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYXJlZFdv
cmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0EwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEFic3RyYWN0V29ya2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUUxQjFDQjBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQWJzdHJhY3RXb3JrZXIuaDsgcGF0aCA9IHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFMUIxQ0MwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBBYnN0cmFjdFdv
cmtlci5pZGw7IHBhdGggPSB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTk5NDAsMTAgKzk5NjIsMTggQEAKIAkJCQk0MUUxQjFDQTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNCMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAogCQkJCTQxRTFCMUNDMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCisJCQkJNDE2N0VCRjMxMDI5NjJCQTAw
M0QyNTJBIC8qIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCAqLywKKwkJCQk0MTY3
RUJGNDEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCAq
LywKIAkJCQkyRTQzNDYzMjBGNTQ2QTgyMDBCMEYxQkEgLyogR2VuZXJpY1dvcmtlclRhc2suaCAq
LywKIAkJCQk0MUUxQjFDRDBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmNwcCAqLywK
IAkJCQk0MUUxQjFDRTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmggKi8sCiAJCQkJ
NDFFMUIxQ0YwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgKi8sCisJCQkJNDFE
MTY4REYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwICovLAorCQkJ
CTQxRDE2OEUwMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggKi8sCisJ
CQkJNDFEMTY4RTExMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaWRsICov
LAorCQkJCTQxRDE2OEUyMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmggKi8sCisJCQkJNDFEMTY4RTUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVh
ZC5jcHAgKi8sCisJCQkJNDFEMTY4RTYxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRo
cmVhZC5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3BwICov
LAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywKIAkJCQkyRTQz
NDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKQEAgLTEzNzAwLDYgKzEzNzMw
LDcgQEAKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5j
cHAgKi8sCiAJCQkJQTlDNkU2NEEwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTUGx1Z2luQXJyYXlDdXN0
b20uY3BwICovLAogCQkJCUE5QzZFNjRCMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU1BsdWdpbkN1c3Rv
bS5jcHAgKi8sCisJCQkJNDFEMTY4RUYxMDIyNkVDNDAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEwQ0FDOUYxQzAwNDg4MzU4IC8qIEpT
U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMUFEMjMxNkQwQ0QyNjlFNzAw
QzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTUxRDBDNTE1MERB
QTkwQjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLApAQCAtMTQwNTMsNiArMTQw
ODQsOCBAQAogCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2Vy
LmggKi8sCiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNw
cCAqLywKIAkJCQk0MUQwN0E3RDBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCAq
LywKKwkJCQk0MUQxNjkwMzEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0
LmNwcCAqLywKKwkJCQk0MUQxNjkwNDEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJD
b250ZXh0LmggKi8sCiAJCQkJRTFDOEJFNUMwRThCRDE1QTAwNjRDQjdEIC8qIEpTV29ya2VyLmNw
cCAqLywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLywKIAkJ
CQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLywKQEAg
LTE3MDYzLDYgKzE3MDk2LDExIEBACiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIElu
c3BlY3RvckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMUU4OEY2MTAxQ0MzODQwMDBD
NERGNSAvKiBTY3JpcHRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUy
RDAwMzE2RDA3IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDFEMTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxRDE2OEVBMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQxNjhFRTEwMjI2RTg5MDA5QkM4MjcgLyog
U2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUQxNjkwNjEwMjM4QjY2
MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0
MTY3RUJGNjEwMjk2MkJBMDAzRDI1MkEgLyogRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMTcxNzcsNiArMTcyMTUsNyBAQAogCQkJCTQxNjJBNDUyMTAx
MTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMkVDRjdBRTMxMDE2MkI1ODAwNDI3REU3IC8qIEVycm9yRXZlbnQuaWRsIGluIFJl
c291cmNlcyAqLywKIAkJCQk3QTc0RUNCNzEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFj
a2VuZC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTQxRDE2OEU5MTAyMjZFODkwMDlCQzgyNyAv
KiBTaGFyZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTEwNSw2ICsx
OTE0NCwxMSBAQAogCQkJCTdBNzRFQ0JEMTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckJh
Y2tlbmRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ExRTg4RjUxMDFDQzM4NDAwMEM0
REY1IC8qIFNjcmlwdEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQTNENThFMTAxQzE1
MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNDFEMTY4RTcxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDFEMTY4RUQxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MUQxNjhGMDEwMjI2RUM0MDA5QkM4Mjcg
LyogSlNTaGFyZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQx
RDE2OTA1MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE2N0VCRjUxMDI5NjJCQTAwM0QyNTJBIC8qIERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHAKaW5kZXggYjc1Y2NjZi4uYzM0ZTEwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXQuY3BwCkBAIC0zMyw5ICszMywxMyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0
ZW5lci5oIgogI2luY2x1ZGUgIkpTTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJKU05vZGUuaCIK
KyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJKU1hNTEh0
dHBSZXF1ZXN0VXBsb2FkLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJT
aGFyZWRXb3JrZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFVwbG9hZC5oIgog
CkBAIC01NiwxMSArNjAsNiBAQAogI2luY2x1ZGUgIldvcmtlci5oIgogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCi0jaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuaCIKLSNpbmNs
dWRlICJTaGFyZWRXb3JrZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDcsNiArMTA2LDkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJnZXQq
IHRhcmcKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgaWYgKFNoYXJlZFdvcmtlciog
c2hhcmVkV29ya2VyID0gdGFyZ2V0LT50b1NoYXJlZFdvcmtlcigpKQogICAgICAgICByZXR1cm4g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHNoYXJlZFdvcmtlcik7CisKKyAgICBpZiAoU2hhcmVk
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9TaGFyZWRXb3JrZXJDb250
ZXh0KCkpCisgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0KHdvcmtlckNvbnRleHQp
OwogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE0Miw2ICsxNDQsNyBA
QCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAKICNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoU2hhcmVk
V29ya2VyKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFNoYXJlZFdvcmtlckNvbnRleHQp
CiAjZW5kaWYKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTMxMjIyNS4uZTJmMTEzNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwCkBA
IC00NSwxNSArNDUsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgQ2xhc3NJbmZvIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlNoYXJlZFdvcmtlckNvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OwogCiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKLSAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkK
KyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBK
U1NoYXJlZFdvcmtlclByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxPYmplY3QpLCBOb25lKTsK
ICAgICAvLyBIb3N0IGZ1bmN0aW9ucyBoYXZlIGEgbGVuZ3RoIHByb3BlcnR5IGRlc2NyaWJpbmcg
dGhlIG51bWJlciBvZiBleHBlY3RlZCBhcmd1bWVudHMuCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seXxEb250RGVs
ZXRlfERvbnRFbnVtKTsKIH0KIAotc3RhdGljIEpTT2JqZWN0KiBjb25zdHJ1Y3RTaGFyZWRXb3Jr
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitzdGF0
aWMgSlNPYmplY3QqIGNvbnN0cnVjdFNoYXJlZFdvcmtlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKKyAgICBKU1NoYXJlZFdv
cmtlckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3Rvcio+KGNvbnN0cnVjdG9yKTsKKwogICAgIGlmIChhcmdzLnNpemUoKSA8IDIp
CiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiKTsKIApAQCAtNjIsMTMgKzY0LDEzIEBAIHN0YXRpYyBKU09iamVjdCogY29u
c3RydWN0U2hhcmVkV29ya2VyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBBcmdM
aXN0CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB1c2UgYm90aCB0aGUgZHluYW1p
YyBzY29wZSBhbmQgdGhlIGxleGljYWwgc2NvcGUgKGR5bmFtaWMgc2NvcGUgZm9yIHJlc29sdmlu
ZyB0aGUgd29ya2VyIFVSTCkKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3co
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6
Y3JlYXRlKHNjcmlwdFVSTCwgbmFtZSwgY29udGV4dCwgZWMpOworICAgIFJlZlB0cjxTaGFyZWRX
b3JrZXI+IHdvcmtlciA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHNjcmlwdFVSTCwgbmFtZSwgd2lu
ZG93LT5kb2N1bWVudCgpLCBlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAot
ICAgIC8vIEZJWE1FOiB0b0pTKCkgY3JlYXRlcyBhbiBvYmplY3Qgd2hvc2UgcHJvdG90eXBlIGlz
IGRlcml2ZWQgZnJvbSBsZXhpY2FsR2xvYmFsU2NvcGUsIHdoaWNoIGlzIGluY29ycmVjdCAoQnVn
IDI3MDg4KQotICAgIHJldHVybiBhc09iamVjdCh0b0pTKGV4ZWMsIHdvcmtlci5yZWxlYXNlKCkp
KTsKKyAgICByZXR1cm4gYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxP
YmplY3QoKSwgd29ya2VyLnJlbGVhc2UoKSkpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTU2hhcmVk
V29ya2VyQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYgY29uc3Ry
dWN0RGF0YSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTaGFyZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjIzMTRk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJKU1NoYXJlZFdvcmtlckNvbnRl
eHQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
b2lkIEpTU2hhcmVkV29ya2VyQ29udGV4dDo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOwor
CisgICAgbWFya0lmTm90TnVsbChpbXBsKCktPm9uY29ubmVjdCgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKaW5kZXggNjIyZGE3MC4uMWU0
ZGY0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0QmFzZS5oIgogCiAjaW5j
bHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgogCkBAIC04MywxMCArODQsMjYgQEAgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KiB0b0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dChKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVy
biAwOwogfQogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorSlNTaGFyZWRXb3JrZXJDb250
ZXh0KiB0b0pTU2hhcmVkV29ya2VyQ29udGV4dChKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICgh
dmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8gPSBhc09iamVjdCh2YWx1ZSktPmNsYXNzSW5mbygpOworICAgIGlmIChjbGFz
c0luZm8gPT0gJkpTU2hhcmVkV29ya2VyQ29udGV4dDo6c19pbmZvKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNTaGFyZWRXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3QodmFsdWUpKTsKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBKU1dvcmtlckNvbnRleHQqIHRvSlNXb3JrZXJDb250
ZXh0KEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgLy8gV2hlbiB3ZSBzdXBwb3J0IHNoYXJlZCB3b3Jr
ZXJzLCB3ZSdsbCBhZGQgY29kZSB0byB0ZXN0IGZvciBTaGFyZWRXb3JrZXJDb250ZXh0IHRvby4K
LSAgICByZXR1cm4gdG9KU0RlZGljYXRlZFdvcmtlckNvbnRleHQodmFsdWUpOworICAgIEpTV29y
a2VyQ29udGV4dCogY29udGV4dCA9IHRvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHZhbHVlKTsK
KyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBj
b250ZXh0ID0gdG9KU1NoYXJlZFdvcmtlckNvbnRleHQodmFsdWUpOworI2VuZGlmCisgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKaW5kZXggZjdhZDE3Zi4uYTlhNmU2MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dDsKKyAgICBjbGFzcyBKU1NoYXJlZFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgSlNXb3JrZXJD
b250ZXh0OwogICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAKQEAgLTYxLDYgKzYyLDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KEpTQzo6SlNWYWx1ZSk7CiAgICAgSlNXb3JrZXJDb250ZXh0KiB0
b0pTV29ya2VyQ29udGV4dChKU0M6OkpTVmFsdWUpOwogCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKQorICAgIEpTU2hhcmVkV29ya2VyQ29udGV4dCogdG9KU1NoYXJlZFdvcmtlckNvbnRleHQo
SlNDOjpKU1ZhbHVlKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCmluZGV4IGJlNmEwOTguLjM1OTBkYWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzIsOCArMzIsMTAgQEAK
IAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIgorI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+
CkBAIC03MywxMiArNzUsMjIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0KCkKICAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJDb250ZXh0UHJvdG90eXBlU3RydWN0
dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
OwogICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+IHdvcmtlckNvbnRl
eHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJv
dG90eXBlKHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKIAotICAg
IC8vIEZJWE1FOiBXaGVuIHdlIGFkZCBTaGFyZWRXb3JrZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUg
Y29ycmVjdCB3cmFwcGVyIGhlcmUuCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOwotICAgIFByb3RlY3Rl
ZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQ
cm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgp
KTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKLQotICAg
IG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIHN0YXRpY19jYXN0PERlZGlj
YXRlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRleHQpKTsKKyAgICBpZiAobV93b3JrZXJD
b250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkgeworICAgICAgICBSZWZQdHI8U3Ry
dWN0dXJlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlU3RydWN0dXJlID0gSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUod29ya2VyQ29udGV4dFByb3Rv
dHlwZSk7CisgICAgICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90
b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3Ry
dWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVkaWNh
dGVkQ29udGV4dFByb3RvdHlwZSk7CisKKyAgICAgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlciA9
IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQoc3RydWN0
dXJlLnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQo
KSk7CisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChtX3dvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAg
UmVmUHRyPFN0cnVjdHVyZT4gc2hhcmVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2hh
cmVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQ
cm90b3R5cGUpOworICAgICAgICBQcm90ZWN0ZWRQdHI8SlNTaGFyZWRXb3JrZXJDb250ZXh0UHJv
dG90eXBlPiBzaGFyZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkp
IEpTU2hhcmVkV29ya2VyQ29udGV4dFByb3RvdHlwZShzaGFyZWRDb250ZXh0UHJvdG90eXBlU3Ry
dWN0dXJlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9
IEpTU2hhcmVkV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0dXJlKHNoYXJlZENvbnRleHRQcm90
b3R5cGUpOworCisgICAgICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFs
RGF0YS5nZXQoKSkgSlNTaGFyZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIG1f
d29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCkpOworI2VuZGlmCisgICAgfQog
fQogCiBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggODcyMmU0My4uNGZjMjI0ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00MzQsNyArNDM0LDcgQEAgRU5E
CiAgICAgLy8gY29udGV4dCBvZiB0aGUgRE9NV2luZG93IGFuZCBub3QgaW4gdGhlIGNvbnRleHQg
b2YgdGhlIGNhbGxlci4KICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpnZXRDb25zdHJ1Y3Rvcih0
eXBlLCB3aW5kb3cpOwogRU5ECi0gICAgfSBlbHNpZiAoJGNsYXNzSW5kZXggZXEgIkRFRElDQVRF
RFdPUktFUkNPTlRFWFQiIG9yICRjbGFzc0luZGV4IGVxICJXT1JLRVJDT05URVhUIikgeworICAg
IH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJERURJQ0FURURXT1JLRVJDT05URVhUIiBvciAkY2xh
c3NJbmRleCBlcSAiV09SS0VSQ09OVEVYVCIgb3IgJGNsYXNzSW5kZXggZXEgIlNIQVJFRFdPUktF
UkNPTlRFWFQiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5oIn0gPSAxOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
CiAgICAgcmV0dXJuIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6cmV0cmlldmUoKS0+R2V0
Q29uc3RydWN0b3IodHlwZSk7CkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBzdWIgUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAicmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2
ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlmICgkdHlwZSBl
cSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIldvcmtlckNvbnRleHQiKSB7
CisgICAgaWYgKCR0eXBlIGVxICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IiBvciAkdHlwZSBlcSAi
V29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiKSB7CiAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOwog
ICAgICAgICByZXR1cm4gInJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6Oldvcmtl
ckNvbnRleHRUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
T2JqZWN0c0luY2x1ZGUuaAppbmRleCAzMjM1NGIzLi5lMjFmMmZlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01PYmplY3RzSW5jbHVkZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIERPTU9i
amVjdHNJbmNsdWRlX2gKICNkZWZpbmUgRE9NT2JqZWN0c0luY2x1ZGVfaAogCisjaW5jbHVkZSAi
QWJzdHJhY3RXb3JrZXIuaCIKICNpbmNsdWRlICJCYXJJbmZvLmgiCiAjaW5jbHVkZSAiQ2FudmFz
R3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCkBAIC0xMTYsNiArMTE3LDgg
QEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtl
ci5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJTUUxUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgogI2luY2x1ZGUgIlNRTFJlc3Vs
dFNldFJvd0xpc3QuaCIKQEAgLTIwNiwxMSArMjA5LDYgQEAKICNpbmNsdWRlICJXb3JrZXJOYXZp
Z2F0b3IuaCIKICNlbmRpZiAvLyBXT1JLRVJTCiAKLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMp
Ci0jaW5jbHVkZSAiQWJzdHJhY3RXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIK
LSNlbmRpZiAvLyBTSEFSRURfV09SS0VSUwotCiAjaWYgRU5BQkxFKFhQQVRIKQogI2luY2x1ZGUg
IlhQYXRoRXZhbHVhdG9yLmgiCiAjZW5kaWYgLy8gWFBBVEgKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaCBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5MjcyYmE0
Li45ZjhmNGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBtYWNybyhjaGVja2luZykgXAogICAgIG1hY3JvKGNsaWNrKSBcCiAgICAgbWFjcm8o
Y2xvc2UpIFwKKyAgICBtYWNybyhjb25uZWN0KSBcCiAgICAgbWFjcm8oY29udGV4dG1lbnUpIFwK
ICAgICBtYWNybyhjb3B5KSBcCiAgICAgbWFjcm8oY3V0KSBcCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXgg
NDI2NjhlMy4uN2JhMDU4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMTAwLDYgKzEwMCwxMCBAQCBT
aGFyZWRXb3JrZXIqIEV2ZW50VGFyZ2V0Ojp0b1NoYXJlZFdvcmtlcigpCiB7CiAgICAgcmV0dXJu
IDA7CiB9CitTaGFyZWRXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9TaGFyZWRXb3JrZXJD
b250ZXh0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgogCiAjaWZuZGVmIE5ERUJVRwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKaW5kZXggZjBjNzk0Zi4uMmVkZWRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC00OCw2ICs0
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7
CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXI7CisgICAgY2xhc3MgU2hhcmVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBXb3JrZXI7CiAg
ICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7
CkBAIC03NCw2ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShTSEFS
RURfV09SS0VSUykKICAgICAgICAgdmlydHVhbCBTaGFyZWRXb3JrZXIqIHRvU2hhcmVkV29ya2Vy
KCk7CisgICAgICAgIHZpcnR1YWwgU2hhcmVkV29ya2VyQ29udGV4dCogdG9TaGFyZWRXb3JrZXJD
b250ZXh0KCk7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmNwcAppbmRleCA3Y2IyYzExLi4yMzcxZTlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNCw2ICsxMzYsMjcgQEAgYm9vbCBBYnN0cmFjdFdv
cmtlcjo6ZGlzcGF0Y2hTY3JpcHRFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW4KICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIAorS1VSTCBBYnN0cmFjdFdvcmtlcjo6
cmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm4gS1VSTCgpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgdGhl
IGR5bmFtaWMgZ2xvYmFsIHNjb3BlIChidWcgIzI3ODg3KQorICAgIEtVUkwgc2NyaXB0VVJMID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1cmwpOworICAgIGlmICghc2Ny
aXB0VVJMLmlzVmFsaWQoKSkgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgfQorCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNjcmlw
dFVSTCkuZ2V0KCkpKSB7CisgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1
cm4gS1VSTCgpOworICAgIH0KKyAgICByZXR1cm4gc2NyaXB0VVJMOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmgKaW5kZXggMjhjYzUwZC4uYTg4MjU0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmgKQEAgLTQzLDYgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3Mg
S1VSTDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgY2xhc3MgQWJz
dHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7CkBAIC03MCw4ICs3MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFic3RyYWN0V29ya2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKICAgICAgICAgdmlydHVhbCB+QWJzdHJhY3RXb3JrZXIoKTsKIAotICAgIHBy
aXZhdGU6CisgICAgcHJvdGVjdGVkOgorICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBj
b252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0aGUgcmVzdWx0IGZv
ciB2YWxpZGl0eS4KKyAgICAgICAgS1VSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJiBlYyk7CiAKKyAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcAppbmRleCAyNGNmMTQ4Li5hZTVjNTQ3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCkBAIC01MywxNCArNTMsOSBAQCBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Ojp+RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpCiAgICAgdGhyZWFkKCktPndv
cmtlck9iamVjdFByb3h5KCkud29ya2VyQ29udGV4dERlc3Ryb3llZCgpOwogfQogCi12b2lkIERl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQordm9pZCBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpmb3J3YXJkRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0g
ICAgYm9vbCBlcnJvckhhbmRsZWQgPSBmYWxzZTsKLSAgICBpZiAob25lcnJvcigpKQotICAgICAg
ICBlcnJvckhhbmRsZWQgPSBvbmVycm9yKCktPnJlcG9ydEVycm9yKGVycm9yTWVzc2FnZSwgc291
cmNlVVJMLCBsaW5lTnVtYmVyKTsKLQotICAgIGlmICghZXJyb3JIYW5kbGVkKQotICAgICAgICB0
aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qo
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworICAgIHRocmVhZCgpLT53b3Jr
ZXJPYmplY3RQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24gZGVzdGluYXRpb24sIE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaAppbmRleCAwNmY2Yzlj
Li5lOTc0Y2VmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAg
LTMxLDYgKzMxLDggQEAKICNpZm5kZWYgRGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCiAjZGVmaW5l
IERlZGljYXRlZFdvcmtlckNvbnRleHRfaAogCisjaWYgRU5BQkxFKFdPUktFUlMpCisKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDEzICs0
OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+
RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogCi0gICAgICAgIC8vIFdvcmtlclV0aWxzCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiB0byBhbGxvdyB1cyB0byBjaGVjayBv
dXIgcGVuZGluZyBhY3Rpdml0eSBhZnRlciBleGVjdXRpbmcgaW1wb3J0ZWQgc2NyaXB0LgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJs
cywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBmb3J3
YXJkRXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAg
ICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KCkgeyByZXR1cm4gdGhpczsgfQogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTcwLDQgKzc1LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKKwogI2VuZGlmIC8vIERlZGljYXRlZFdvcmtlckNvbnRleHRfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWMwNzUzNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTAsMCArMSwxNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
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
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNp
bmNsdWRlICJEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgorCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5oIgorI2luY2x1ZGUgIlNoYXJl
ZFdvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgorI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFNoYXJlZFdvcmtlclByb3h5IDogcHVibGljIFdvcmtlckxvYWRlclBy
b3h5IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldFRocmVhZChQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
clRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFkID0gdGhyZWFkOyB9CisKKyAgICAvLyBXb3JrZXJM
b2FkZXJQcm94eQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgV29ya2VyTG9hZGVyUHJveHkgQVBJ
cyBieSBwcm94eWluZyB0byBhbiBhY3RpdmUgZG9jdW1lbnQuCisgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrVG9Mb2FkZXIoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPikg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBj
b25zdCBTdHJpbmcmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRy
PFNoYXJlZFdvcmtlclRocmVhZD4gbV90aHJlYWQ7Cit9OworCitjbGFzcyBTaGFyZWRXb3JrZXJD
b25uZWN0VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRl
KFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhjaGFubmVsKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrKFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQorICAgICAgICA6IG1fY2hhbm5lbChjaGFubmVs
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxNZXNz
YWdlUG9ydD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoKnNjcmlwdENvbnRleHQpOworICAg
ICAgICBwb3J0LT5lbnRhbmdsZShtX2NoYW5uZWwucmVsZWFzZSgpKTsKKyAgICAgICAgQVNTRVJU
KHNjcmlwdENvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKKyAgICAgICAgV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250
ZXh0KTsKKyAgICAgICAgQVNTRVJUKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4
dCgpKTsKKyAgICAgICAgd29ya2VyQ29udGV4dC0+dG9TaGFyZWRXb3JrZXJDb250ZXh0KCktPmRp
c3BhdGNoQ29ubmVjdChwb3J0KTsKKyAgICB9CisKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiBtX2NoYW5uZWw7Cit9OworCitjbGFzcyBTaGFyZWRXb3JrZXJMb2FkZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxTaGFyZWRXb3JrZXJMb2FkZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBw
cml2YXRlIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgU2hhcmVkV29y
a2VyTG9hZGVyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYpOwor
CisgICAgLy8gV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IGNhbGxiYWNrCisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlZFdvcmtl
cj4gbV93b3JrZXI7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9wb3J0OworICAg
IFN0cmluZyBtX25hbWU7CisgICAgT3duUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRM
b2FkZXI7Cit9OworCitTaGFyZWRXb3JrZXJMb2FkZXI6OlNoYXJlZFdvcmtlckxvYWRlcihQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bD4gcG9ydCwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KHdvcmtl
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzKQorICAgICwgbV93b3JrZXIod29ya2Vy
KQorICAgICwgbV9wb3J0KHBvcnQpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKwordm9pZCBT
aGFyZWRXb3JrZXJMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQoreworICAgIC8vIE1hcmsg
dGhpcyBvYmplY3QgYXMgYWN0aXZlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGxvYWQuCisgICAg
QVNTRVJUKCFoYXNQZW5kaW5nQWN0aXZpdHkoKSk7CisgICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcg
V29ya2VyU2NyaXB0TG9hZGVyKCk7CisgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVybCwgRGVueUNyb3NzT3JpZ2luUmVkaXJl
Y3QsIHRoaXMpOworCisgICAgLy8gU3RheSBhbGl2ZSB1bnRpbCB0aGUgbG9hZCBmaW5pc2hlcy4K
KyAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Cit9CisKK3ZvaWQgU2hhcmVkV29ya2VyTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZCgpCit7CisgICAgLy8gSGFuZCBvZmYgdGhlIGp1c3QtbG9hZGVk
IGNvZGUgdG8gdGhlIHJlcG9zaXRvcnkgdG8gc3RhcnQgdXAgdGhlIHdvcmtlciB0aHJlYWQuCisg
ICAgaWYgKG1fc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkKKyAgICAgICAgbV93b3JrZXItPmRpc3Bh
dGNoTG9hZEVycm9yRXZlbnQoKTsKKyAgICBlbHNlCisgICAgICAgIERlZmF1bHRTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpLT53b3JrZXJTY3JpcHRMb2FkZWQobV9uYW1lLCBtX3Nj
cmlwdExvYWRlci0+dXJsKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1f
c2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgbV9wb3J0LnJl
bGVhc2UoKSk7CisKKyAgICAvLyBUaGlzIGZyZWVzIHRoaXMgb2JqZWN0IC0gbXVzdCBiZSB0aGUg
bGFzdCBhY3Rpb24gaW4gdGhpcyBmdW5jdGlvbi4KKyAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKK30KKworU2hhcmVkV29ya2VyUmVwb3NpdG9yeSogU2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6aW5zdGFuY2UoKQoreworICAgIHJldHVybiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6aW5zdGFuY2UoKTsKK30KKworRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkqIERlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpCit7CisgICAgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljKERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KiwgaW5zdGFuY2Ug
PSBuZXcgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKK30KKwordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6d29ya2VyU2NyaXB0
TG9hZGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiB3b3JrZXJTY3JpcHQsIFBhc3NPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsPiBwb3J0KQoreworICAgIC8vIEZJWE1FOiBDYWNoZSB0aGUgcHJveHkgdG8g
YWxsb3cgc2hhcmluZyBhbmQgdG8gYWxsb3cgY2xlYW51cCBhZnRlciB0aGUgdGhyZWFkIGV4aXRz
LgorICAgIFNoYXJlZFdvcmtlclByb3h5KiBwcm94eSA9IG5ldyBTaGFyZWRXb3JrZXJQcm94eSgp
OworICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCA9IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKG5hbWUsIHVybCwgdXNlckFnZW50LCB3b3JrZXJTY3JpcHQsICpwcm94eSk7
CisgICAgcHJveHktPnNldFRocmVhZCh0aHJlYWQpOworICAgIHRocmVhZC0+c3RhcnQoKTsKKyAg
ICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhTaGFyZWRXb3JrZXJDb25uZWN0VGFzazo6Y3Jl
YXRlKHBvcnQpKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KFBh
c3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiBwb3J0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYpCit7CisgICAgLy8gQ3JlYXRlIGEgbG9hZGVyIHRvIGxvYWQvaW5pdGlhbGl6ZSB0aGUg
cmVxdWVzdGVkIHdvcmtlci4KKyAgICBSZWZQdHI8U2hhcmVkV29ya2VyTG9hZGVyPiBsb2FkZXIg
PSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyTG9hZGVyKHdvcmtlciwgcG9ydCwgbmFtZSkpOwor
ICAgIGxvYWRlci0+bG9hZCh1cmwpOworfQorCitEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkoKQoreworfQorCitEZWZhdWx0U2hhcmVk
V29ya2VyUmVwb3NpdG9yeTo6fkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JL
RVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmggYi9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWRjZDA5Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaAor
I2RlZmluZSBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeV9oCisKKyNpZiBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpCisKKyNpbmNsdWRlICJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgiCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgS1VSTDsKKworICAgIC8vIFBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9m
IHRoZSBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5IHNpbmdsZXRvbi4KKyAgICBjbGFzcyBEZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeSA6IHB1YmxpYyBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LCBw
dWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkoKTsKKyAgICAgICAgfkRlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
KCk7CisKKyAgICAgICAgLy8gSW52b2tlZCBvbmNlIHRoZSB3b3JrZXIgc2NyaXB0IGhhcyBiZWVu
IGxvYWRlZCB0byBmaXJlIHVwIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAgICB2b2lkIHdvcmtl
clNjcmlwdExvYWRlZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiB3b3JrZXJTY3JpcHQsIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPik7CisKKyAgICAgICAgc3RhdGljIERlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5KiBpbnN0YW5jZSgpOworICAgIH07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hB
UkVEX1dPUktFUlMpCisKKyNlbmRpZiAvLyBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeV9o
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGUxZDMwZDMuLmEwMmE3MjIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0yNywyMCArMjcsMzIgQEAKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLworCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUo
U0hBUkVEX1dPUktFUlMpCiAKICNpbmNsdWRlICJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0LmgiCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNv
ZGUmKQorU2hhcmVkV29ya2VyOjpTaGFyZWRXb3JrZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgOiBBYnN0cmFjdFdvcmtlcihjb250ZXh0KQogewotICAgIC8vIFBsYWNl
aG9sZGVyIC0gdWx0aW1hdGVseSB3ZSdsbCBsb29rIHVwIHRoZSB3b3JrZXIgaW4gdGhlIFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuCisgICAgUmVmUHRyPE1lc3NhZ2VDaGFubmVsPiBjaGFubmVsID0g
TWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1f
cG9ydCA9IGNoYW5uZWwtPnBvcnQxKCk7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
cmVtb3RlUG9ydCA9IGNoYW5uZWwtPnBvcnQyKCktPmRpc2VudGFuZ2xlKGVjKTsKKyAgICBBU1NF
UlQoIWVjKTsKKworICAgIEtVUkwgc2NyaXB0VXJsID0gcmVzb2x2ZVVSTCh1cmwsIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKyAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpp
bnN0YW5jZSgpLT5jb25uZWN0KHRoaXMsIHJlbW90ZVBvcnQucmVsZWFzZSgpLCBzY3JpcHRVcmws
IG5hbWUsIGVjKTsKIH0KIAogU2hhcmVkV29ya2VyOjp+U2hhcmVkV29ya2VyKCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXIuaAppbmRleCAzNmM3ZDg1Li4yNGFhMDJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyLmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5o
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTgsNCArNTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykK
KwogI2VuZGlmIC8vIFNoYXJlZFdvcmtlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM1MGQ5NAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0LmNwcApA
QCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQorCisjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgorCisjaW5jbHVkZSAi
RE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2hhcmVkV29y
a2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTaGFyZWRXb3JrZXJDb250ZXh0OjpTaGFyZWRXb3JrZXJDb250ZXh0KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQpCisgICAgOiBXb3JrZXJDb250ZXh0KHVybCwg
dXNlckFnZW50LCB0aHJlYWQpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKworU2hhcmVkV29y
a2VyQ29udGV4dDo6flNoYXJlZFdvcmtlckNvbnRleHQoKQoreworfQorCit2b2lkIFNoYXJlZFdv
cmtlckNvbnRleHQ6OmZvcndhcmRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiwgaW50LCBjb25zdCBT
dHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBmb3J3YXJkIHRvIGNvbnNvbGUgKGRvIG5vdCBuZWVk
IHRvIHJlcG9ydCB0byBwYXJlbnQgY29udGV4dCkuCit9CisKK3ZvaWQgU2hhcmVkV29ya2VyQ29u
dGV4dDo6YWRkTWVzc2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCBjb25zdCBTdHJp
bmcmKQoreworICAgIC8vIEZJWE1FOiBmb3J3YXJkIHRvIGNvbnNvbGUuCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBTaGFyZWRXb3JrZXJDb250ZXh0OjpkaXNwYXRjaENvbm5lY3Qo
UGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydCkKK3sKKyAgICAvLyBTaW5jZSBjbG9zZSgpIHN0
b3BzIHRoZSB0aHJlYWQgZXZlbnQgbG9vcCwgdGhpcyBzaG91bGQgbm90IGV2ZXIgZ2V0IGNhbGxl
ZCB3aGlsZSBjbG9zaW5nLgorICAgIEFTU0VSVCghaXNDbG9zaW5nKCkpOworICAgIC8vIFRoZSBj
b25uZWN0IGV2ZW50IHVzZXMgdGhlIE1lc3NhZ2VFdmVudCBpbnRlcmZhY2UsIGJ1dCBoYXMgdGhl
IG5hbWUgImNvbm5lY3QiLgorICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZSgiIiwgIiIsICIiLCAwLCBwb3J0KTsKKyAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50
TmFtZXMoKS5jb25uZWN0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CisKKyAgICBpZiAobV9vbmNvbm5l
Y3RMaXN0ZW5lci5nZXQoKSkgeworICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOworICAg
ICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbmNvbm5lY3RM
aXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZlbnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwg
ZWMpOworICAgIEFTU0VSVCghZWMpOworfQorCitTaGFyZWRXb3JrZXJUaHJlYWQqIFNoYXJlZFdv
cmtlckNvbnRleHQ6OnRocmVhZCgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYXJlZFdv
cmtlclRocmVhZCo+KEJhc2U6OnRocmVhZCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlNDEz
MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0
LmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyQ29udGV4dF9oCisjZGVmaW5l
IFNoYXJlZFdvcmtlckNvbnRleHRfaAorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorCisj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQ7CisKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXJDb250ZXh0
IDogcHVibGljIFdvcmtlckNvbnRleHQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBX
b3JrZXJDb250ZXh0IEJhc2U7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
ckNvbnRleHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlckNvbnRleHQo
bmFtZSwgdXJsLCB1c2VyQWdlbnQsIHRocmVhZCkpOworICAgICAgICB9CisgICAgICAgIHZpcnR1
YWwgflNoYXJlZFdvcmtlckNvbnRleHQoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFy
ZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8vIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVz
c2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZm9yd2FyZEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKTsKKworICAgICAgICAvLyBFdmVudFRhcmdldAorICAgICAgICB2aXJ0dWFsIFNo
YXJlZFdvcmtlckNvbnRleHQqIHRvU2hhcmVkV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7
IH0KKworICAgICAgICAvLyBTZXR0ZXJzL0dldHRlcnMgZm9yIGF0dHJpYnV0ZXMgaW4gU2hhcmVk
V29ya2VyQ29udGV4dC5pZGwKKyAgICAgICAgdm9pZCBzZXRPbmNvbm5lY3QoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25jb25uZWN0TGlzdGVuZXIgPSBldmVu
dExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uY29ubmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fb25jb25uZWN0TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKworICAgICAgICB2b2lkIGRpc3BhdGNoQ29ubmVj
dChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0Pik7CisKKyAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFk
KiB0aHJlYWQoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBTaGFyZWRXb3JrZXJDb250ZXh0KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFNoYXJlZFdvcmtl
clRocmVhZCopOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbmNvbm5lY3RMaXN0
ZW5lcjsKKyAgICAgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAvLyBT
aGFyZWRXb3JrZXJDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJDb250ZXh0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ1MGUwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckNvbnRleHQuaWRsCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1TSEFSRURfV09SS0VSUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAg
ICAgICBFeHRlbmRzRE9NR2xvYmFsT2JqZWN0LAorICAgICAgICBJc1dvcmtlckNvbnRleHQsCisg
ICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAorICAgICAgICBOb1N0YXRpY1RhYmxlcwor
ICAgIF0gU2hhcmVkV29ya2VyQ29udGV4dCA6IFdvcmtlckNvbnRleHQgeworCisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0OworCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBiL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOWUxMTA3YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
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
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhcmVkV29ya2VyUmVw
b3NpdG9yeV9oCisjZGVmaW5lIFNoYXJlZFdvcmtlclJlcG9zaXRvcnlfaAorCisjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIE1lc3NhZ2VQb3J0
Q2hhbm5lbDsKKyAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CisgICAgY2xhc3MgU3RyaW5nOworCisg
ICAgLy8gSW50ZXJmYWNlIHRvIGEgcmVwb3NpdG9yeSB3aGljaCBtYW5hZ2VzIHJlZmVyZW5jZXMg
dG8gdGhlIHNldCBvZiBhY3RpdmUgc2hhcmVkIHdvcmtlcnMuCisgICAgY2xhc3MgU2hhcmVkV29y
a2VyUmVwb3NpdG9yeSB7CisgICAgcHVibGljOgorICAgICAgICAvLyBTdGF0aWMgZmFjdG9yeSBm
b3IgZ2V0dGluZyB0aGUgYnJvd3Nlci1zcGVjaWZpYyByZXBvc2l0b3J5IGltcGxlbWVudGF0aW9u
LgorICAgICAgICBzdGF0aWMgU2hhcmVkV29ya2VyUmVwb3NpdG9yeSogaW5zdGFuY2UoKTsKKwor
ICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFzc2VkIFNoYXJlZFdvcmtlciBvYmplY3Qgd2l0aCB0
aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQsIGNyZWF0aW5nIGEgbmV3IHRocmVhZCBpZiBuZWNl
c3NhcnkuCisgICAgICAgIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgflNoYXJlZFdv
cmtlclJlcG9zaXRvcnkoKSB7IH0KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNlbmRpZiAvLyBTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJU
aHJlYWQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBiYjJkZQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
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
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisKKyNpbmNs
dWRlICJTaGFyZWRXb3JrZXJUaHJlYWQuaCIKKworI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRo
cmVhZD4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlclRocmVhZChuYW1lLCBzY3JpcHRVUkws
IHVzZXJBZ2VudCwgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHkpKTsKK30KKworU2hhcmVk
V29ya2VyVGhyZWFkOjpTaGFyZWRXb3JrZXJUaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSkKKyAgICA6IFdvcmtl
clRocmVhZCh1cmwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHkpCisg
ICAgLCBtX25hbWUobmFtZS5jb3B5KCkpCit7Cit9CisKK1NoYXJlZFdvcmtlclRocmVhZDo6flNo
YXJlZFdvcmtlclRocmVhZCgpCit7Cit9CisKK1Bhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCit7CisgICAgcmV0dXJuIFNoYXJlZFdvcmtlckNvbnRleHQ6
OmNyZWF0ZShtX25hbWUsIHVybCwgdXNlckFnZW50LCB0aGlzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclRocmVhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjE1ODM4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
VGhyZWFkLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisjaWZuZGVmIFNoYXJlZFdvcmtlclRocmVhZF9oCisjZGVm
aW5lIFNoYXJlZFdvcmtlclRocmVhZF9oCisKKyNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCisK
KyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU2hhcmVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYpOworICAgICAg
ICB+U2hhcmVkV29ya2VyVGhyZWFkKCk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBjcmVhdGVXb3JrZXJDb250ZXh0KGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNoYXJlZFdvcmtl
clRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYpOwor
CisgICAgICAgIFN0cmluZyBtX25hbWU7CisgICAgfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKKworI2VuZGlmIC8vIFNoYXJlZFdv
cmtlclRocmVhZF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDkxODViYWUuLmE5MDYxMzQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCkBAIC01NCwy
MSArNTMsOSBAQCBXb3JrZXI6Oldvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZQogICAgIDogQWJzdHJhY3RXb3JrZXIo
Y29udGV4dCkKICAgICAsIG1fY29udGV4dFByb3h5KFdvcmtlckNvbnRleHRQcm94eTo6Y3JlYXRl
KHRoaXMpKQogewotICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEtVUkwgc2NyaXB0VVJMID0gY29u
dGV4dC0+Y29tcGxldGVVUkwodXJsKTsKLSAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShzY3JpcHRVUkwpLmdldCgpKSkgewotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
KyAgICBLVVJMIHNjcmlwdFVSTCA9IHJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9zY3JpcHRMb2FkZXIgPSBuZXcgV29ya2Vy
U2NyaXB0TG9hZGVyKCk7CiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVkaXJl
Y3QsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
IGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGViODJhNWIuLjcyMjU4
OGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTI2NCw2ICsyNjQsMTYgQEAgdm9p
ZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
LCBjb25zdCBTdHJpbmcmIGNhbGwKICAgICB9CiB9CiAKK3ZvaWQgV29ya2VyQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgYm9vbCBlcnJvckhhbmRsZWQgPSBmYWxz
ZTsKKyAgICBpZiAob25lcnJvcigpKQorICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVycm9yKCkt
PnJlcG9ydEVycm9yKGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKKworICAg
IGlmICghZXJyb3JIYW5kbGVkKQorICAgICAgICBmb3J3YXJkRXhjZXB0aW9uKGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBm
MmFmYTQyLi4xYzQwZWIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTU1LDYgKzU1LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1NoYXJlZFdvcmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKwogICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogCkBAIC05OCw2ICsxMDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5lcnNN
YXA7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3RlbmVycygpIHsgcmV0dXJu
IG1fZXZlbnRMaXN0ZW5lcnM7IH0KIAorICAgICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGZvcndhcmRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogCiAg
ICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dv
cmtlckNvbnRleHQ6Om1hcmsoKSBpbgogICAgICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwLgo=
</data>
<flag name="review"
          id="18317"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>