<?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>27420</bug_id>
          
          <creation_ts>2009-07-18 18:06:52 -0700</creation_ts>
          <short_desc>Refactor WorkerContext to move DedicatedWorker-specific APIs into DedicatedWorkerContext</short_desc>
          <delta_ts>2009-07-24 12:58:56 -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>27419</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>abarth</cc>
    
    <cc>dimich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132970</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-18 18:06:52 -0700</bug_when>
    <thetext>There are a set of APIs that are common to both DedicatedWorkerGlobalScope and SharedWorkerGlobalScope. We should keep those in WorkerContext, and refactor the DedicatedWorker-specific APIs (like onmessage/postMessage) into a derived class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132999</commentid>
    <comment_count>1</comment_count>
      <attachid>33048</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-19 09:07:37 -0700</bug_when>
    <thetext>Created attachment 33048
proposed patch

I&apos;d like someone with some experience with the JS bindings internals to take a look at WebCore/bindings/js/WorkerScriptController::initScript where I&apos;m setting up the prototype for the global context. I&apos;ll try to find someone on IRC on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133001</commentid>
    <comment_count>2</comment_count>
      <attachid>33048</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-19 11:38:59 -0700</bug_when>
    <thetext>Comment on attachment 33048
proposed patch

Just some quick style nits that I noticed when I briefly looked at this.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +       Refactor WorkerContext to move DedicatedWorker-specific APIs into DedicatedWorkerContext

Off by one space.


&gt; diff --git a/WebCore/bindings/js/JSEventTarget.cpp b/WebCore/bindings/js/JSEventTarget.cpp

&gt;  #if ENABLE(WORKERS)
&gt;  #include &quot;JSWorker.h&quot;
&gt; -#include &quot;JSWorkerContext.h&quot;
&gt; +#include &quot;JSDedicatedWorkerContext.h&quot;
&gt;  #include &quot;Worker.h&quot;
&gt; -#include &quot;WorkerContext.h&quot;
&gt; +#include &quot;DedicatedWorkerContext.h&quot;

Out of sort order.


&gt; diff --git a/WebCore/bindings/v8/V8Index.cpp b/WebCore/bindings/v8/V8Index.cpp
&gt; @@ -59,8 +59,8 @@
&gt; -#include &quot;V8CSSVariablesRule.h&quot;
&gt; -#include &quot;V8DataGridColumn.h&quot;
&gt; +#include &quot;V8CSSVariablesRule.h&quot;
&gt; +#include &quot;V8DataGridColumn.h&quot;

&gt; -#if ENABLE(DOM_STORAGE)
&gt; -#include &quot;V8Storage.h&quot;
&gt; -#include &quot;V8StorageEvent.h&quot;
&gt; +#if ENABLE(DOM_STORAGE)
&gt; +#include &quot;V8Storage.h&quot;
&gt; +#include &quot;V8StorageEvent.h&quot;
&gt;  #endif

It would be good to not have these unrelated changes in this patch.

&gt; diff --git a/WebCore/bindings/v8/V8Index.h b/WebCore/bindings/v8/V8Index.h

&gt; @@ -79,8 +80,8 @@ typedef v8::Persistent&lt;v8::FunctionTemplate&gt; (*FunctionTemplateFactory)();
&gt; -    V(COMMENT, Comment)                                                 \
&gt; -    V(DATAGRIDCOLUMN, DataGridColumn)                                   \
&gt; +    V(COMMENT, Comment)                                                 \
&gt; +    V(DATAGRIDCOLUMN, DataGridColumn)                                   \

&gt; -#endif
&gt; -
&gt; -#if ENABLE(DOM_STORAGE)
&gt; -#define DOM_OBJECT_STORAGE_TYPES(V)                                     \
&gt; -    V(STORAGE, Storage)                                                 \
&gt; -    V(STORAGEEVENT, StorageEvent)
&gt; -#else
&gt; -#define DOM_OBJECT_STORAGE_TYPES(V)
&gt; +#endif
&gt; +
&gt; +#if ENABLE(DOM_STORAGE)
&gt; +#define DOM_OBJECT_STORAGE_TYPES(V)                                     \
&gt; +    V(STORAGE, Storage)                                                 \
&gt; +    V(STORAGEEVENT, StorageEvent)
&gt; +#else
&gt; +#define DOM_OBJECT_STORAGE_TYPES(V)
&gt;  #endif

It would be good to not have these unrelated changes in this patch.





&gt; diff --git a/WebCore/dom/EventTarget.h b/WebCore/dom/EventTarget.h
&gt; @@ -48,7 +48,7 @@ namespace WebCore {
&gt;      class ScriptExecutionContext;
&gt;      class SharedWorker;
&gt;      class Worker;
&gt; -    class WorkerContext;
&gt; +    class DedicatedWorkerContext;

Out of sort order.


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

&gt; diff --git a/WebCore/workers/WorkerThread.cpp b/WebCore/workers/WorkerThread.cpp
&gt;  #include &quot;PlatformString.h&quot;
&gt;  #include &quot;ScriptSourceCode.h&quot;
&gt;  #include &quot;ScriptValue.h&quot;
&gt; -#include &quot;WorkerContext.h&quot;
&gt; +#include &quot;DedicatedWorkerContext.h&quot;
&gt;  #include &quot;WorkerObjectProxy.h&quot;

Out of sort order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133050</commentid>
    <comment_count>3</comment_count>
      <attachid>33068</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-19 17:47:25 -0700</bug_when>
    <thetext>Created attachment 33068
Patch addressing levin&apos;s comments

Per our IRC conversation, I&apos;m leaving the changes in this patch that remove the extraneous CRs from V8Index.cpp/h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133207</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-07-20 13:14:49 -0700</bug_when>
    <thetext>A note about v8-related changes. You might want to ask Mads Ager to take a look, since I feel a better v8 expert could be useful here :-)

It doesn&apos;t seem that V8ClassIndex::WORKERCONTEXT is removed from everywhere. I think it should be because this is an enum value that is embedded into a v8 wrapper as an id of its type. Lookups and type conversions use that as an enum entry into some switch statements and lookup tables. So if we now have V8ClassIndex::DEDICATEDWORKERCONTEXT, it should replace the old enum value everywhere. Later, you&apos;ll also have SHAREDWORKERCONTEXT.

For example, v8 version of WorkerContextExecutionProxy::retrieve() won&apos;t work since it won&apos;t be able to find a WORKERCONTEXT in a current v8 context... 

It might be easier (maybe) to add a virtual ScriptExecutionContext::IsDedicatedWorkerContext() (in addition to isDocument etc) and have a single type of the v8 wrapper but check and cast in runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133554</commentid>
    <comment_count>5</comment_count>
      <attachid>33068</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 12:23:06 -0700</bug_when>
    <thetext>Comment on attachment 33068
Patch addressing levin&apos;s comments

I&apos;m marking this obsolete to move it out of the review queue because I&apos;m fairly certain atwilson is doing some fixes to it.  Drew if I got this wrong please undo this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134334</commentid>
    <comment_count>6</comment_count>
      <attachid>33397</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-23 17:57:54 -0700</bug_when>
    <thetext>Created attachment 33397
Patch addressing dimich&apos;s comments

I fixed up a number of places where we were doing the wrong thing in the V8 bindings.

Note that V8ClassIndex::WORKERCONTEXT can&apos;t go away entirely, as it&apos;s still used by the generated code in V8WorkerContext.cpp, and also used for generating the template chain for derived classes like V8DedicatedWorkerContext.

Also, it is OK to do lookupDOMWrapper(V8ClassIndex::WORKERCONTEXT, global) in WorkerContextExecutionProxy::retrieve(), because lookupDOMWrapper walks up the prototype chain to determine the class. Likewise for calling convertToNativeObject(WORKERCONTEXT, global) - it still works no matter what type you pass in, derived or base. In fact, convertToNativeObject() mostly just uses the passed-in type for error checking, as it always ends up pulling a pointer to the impl object out of the same place in the wrapper regardless of type anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134398</commentid>
    <comment_count>7</comment_count>
      <attachid>33397</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-23 23:42:34 -0700</bug_when>
    <thetext>Comment on attachment 33397
Patch addressing dimich&apos;s comments

Ok.  One infinitesimal nit:

&gt; -    private:
&gt; +    protected:
&gt;          WorkerContext(const KURL&amp;, const String&amp;, WorkerThread*);
&gt; +        bool isClosing() { return m_closing; }
&gt; +    private:
&gt;  
&gt;          virtual void refScriptExecutionContext() { ref(); }
&gt;          virtual void derefScriptExecutionContext() { deref(); }

Please move the private to below the blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134600</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-07-24 10:49:40 -0700</bug_when>
    <thetext>Assigning to dimich@chromium.org for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134616</commentid>
    <comment_count>9</comment_count>
      <attachid>33459</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-24 12:02:08 -0700</bug_when>
    <thetext>Created attachment 33459
patch fixing build error from last night&apos;s codegen changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134637</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-07-24 12:58:56 -0700</bug_when>
    <thetext>Fixed per abarth&apos;s comment and landed: http://trac.webkit.org/changeset/46369</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33048</attachid>
            <date>2009-07-19 09:07:37 -0700</date>
            <delta_ts>2009-07-19 17:47:25 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>59469</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNiODE1NS4uZmI5MTczNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAwOS0wNy0xOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgUmVmYWN0b3IgV29ya2VyQ29udGV4dCB0byBtb3ZlIERlZGljYXRlZFdv
cmtlci1zcGVjaWZpYyBBUElzIGludG8gRGVkaWNhdGVkV29ya2VyQ29udGV4dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0MjAKKworICAgICAgICBO
byBuZXcgdGVzdHMgYXMgdGhlIGV4aXN0aW5nIHRlc3RzIGFscmVhZHkgcHJvdmlkZSBzdWZmaWNp
ZW50IGNvdmVyYWdlICh0aGlzIGlzIGp1c3QgYSByZWZhY3RvcmluZyB3aXRoIG5vIG5ldyBmdW5j
dGlvbmFsaXR5KS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgQWRk
ZWQgSlNEZXJpdmVkV29ya2VyQ29udGV4dC5jcHAKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2VyQ29udGV4dCBmaWxl
cworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgQWRkZWQgRGVyaXZlZFdvcmtlckNv
bnRleHQgZmlsZXMKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgQWRkZWQgRGVyaXZl
ZFdvcmtlckNvbnRleHQgZmlsZXMKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgQWRkZWQgRGVyaXZlZFdvcmtlckNvbnRleHQgZmlsZXMKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIERlcml2
ZWRXb3JrZXJDb250ZXh0IGZpbGVzCisgICAgICAgICogYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHQ6Om1hcmspOgorICAgICAgICBDdXN0b20gbWFyayBmdW5jdGlvbiBm
b3Igb25tZXNzYWdlIGV2ZW50IGhhbmRsZXIuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgU3VwcG9ydHMg
Y29udmVyc2lvbiB0byBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuCisgICAgICAgIChXZWJDb3Jl
Ojp0b0V2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjptYXJrKToKKyAg
ICAgICAgTW92ZWQgb25tZXNzYWdlIG1hcmsgaGFuZGxpbmcgaW50byBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICBBZGRlZCBhcHByb3ByaWF0ZSBjYXN0cyB0byBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0IGZvciBwb3N0TWVzc2FnZSgpLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgIE1hbnVhbGx5IHNldHMgdXAgdGhlIHByb3Rv
dHlwZSBjaGFpbiBmb3IgdGhlIHdvcmtlciBjb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICBDaGFuZ2VkIHNwZWNpYWwgY2FzZSBj
b2RlIGZvciBXb3JrZXJDb250ZXh0IHRvIGJlIHRyaWdnZXJlZCBieSBuZXcgSXNXb3JrZXJDb250
ZXh0IGF0dHJpYnV0ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5o
OgorICAgICAgICBBZGRlZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcDoKKyAgICAgICAgQWRkZWQgVjhEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcAorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKToKKyAg
ICAgICAgQWRkZWQgY29kZSB0byByZXNlcnZlIGV4dHJhIGZpZWxkcyBmb3IgVjhEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwOgorICAgICAg
ICBOb3cgaW5jbHVkZXMgVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gYWRkaXRpb24gdG8g
VjhXb3JrZXJDb250ZXh0LmgKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4Lmg6CisgICAg
ICAgIEFkZGVkIERlZGljYXRlZFdvcmtlckNvbnRleHQgYXMgYSBub24tbm9kZSB3cmFwcGVyIHR5
cGUuCisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdENv
bnRleHRJZk5lZWRlZCk6CisgICAgICAgIENyZWF0ZXMgRGVkaWNhdGVkV29ya2VyQ29udGV4dCBp
bnN0ZWFkIG9mIFdvcmtlckNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHk6OkV2ZW50VGFyZ2V0VG9WOE9iamVjdCk6CisgICAgICAgIFJldHVybnMg
RGVkaWNhdGVkV29ya2VyQ29udGV4dCBpbnN0ZWFkIG9mIFdvcmtlckNvbnRleHQuCisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIE1vdmVkIG9ubWVzc2FnZSBjb2RlIGZyb20gVjhXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfR0VUVEVSKToKKyAgICAgICAgKFdlYkNv
cmU6OkFDQ0VTU09SX1NFVFRFUik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIE1vdmVkIG9ubWVzc2FnZSBjb2RlIHRvIFY4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIE1vdmVkIERlZGlj
YXRlZFdvcmtlci1vbmx5IEFQSXMgZnJvbSBXb3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViQ29y
ZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6RGVkaWNhdGVkV29ya2VyQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp+RGVkaWNhdGVkV29ya2VyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpyZXBvcnRF
eGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6ZGlz
cGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aDogQWRkZWQuCisgICAgICAgIE1vdmVkIERlZGljYXRlZFdvcmtlci1vbmx5IEFQSXMgZnJvbSBX
b3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OnRvRGVk
aWNhdGVkV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6b25tZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6fldvcmtlckNvbnRleHQpOgorICAgICAg
ICBNb3ZlZCBjb2RlIHRoYXQgbm90aWZpZXMgcGFyZW50IHRoYXQgd29ya2VyIGlzIGNsb3Npbmcg
ZG93biBpbnRvIERlZGljYXRlZFdvcmtlckNvbnRleHQuCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojppc0Nsb3Npbmcp
OgorICAgICAgICBFeHBvc2VkIGNsb3NpbmcgZmxhZyBhcyBhbiBBUEkgc28gZGVyaXZlZCBjbGFz
c2VzIGNhbiBhY2Nlc3MgaXQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbDoK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICBD
YWxscyBpbnRvIERlZGljYXRlZFdvcmtlckNvbnRleHQgdG8gaGFuZGxlIG1lc3NhZ2UuCisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICBDcmVhdGVzIGEgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCB3aGVuIHRoZSB0aHJlYWQgc3RhcnRzIHVwLgorCiAyMDA5LTA3LTE4ICBKYW4gTWlj
aGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
IGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggNDIyY2ZkOS4uMjM3YTY4MCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJKU0RhdGFiYXNlLmNwcCIK
ICNpbmNsdWRlICJKU0RhdGFHcmlkQ29sdW1uLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29s
dW1uTGlzdC5jcHAiCisjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCIKICNp
bmNsdWRlICJKU0RvY3VtZW50LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnQuY3Bw
IgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBhYTI2
MzEyLi5iYzFiYjI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03OCw2ICs3OCw3IEBAIERPTV9DTEFT
U0VTID0gXAogICAgIENvdW50ZXIgXAogICAgIERhdGFHcmlkQ29sdW1uIFwKICAgICBEYXRhR3Jp
ZENvbHVtbkxpc3QgXAorICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQgXAogICAgIERPTUFwcGxp
Y2F0aW9uQ2FjaGUgXAogICAgIERPTUNvcmVFeGNlcHRpb24gXAogICAgIERPTUltcGxlbWVudGF0
aW9uIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDk1MzFhMTguLmI2MTMyMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUxLDYgKzI1MSw3
IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5pZGwgXAogCVdl
YkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bCBcCiAJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXApAQCAt
MjMxNCw2ICsyMzE1LDcgQEAgd2ViY29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAogCiB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3Rv
bS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmggXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgXApAQCAtMjMyNiw2ICsyMzI4LDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV29ya2VyTmF2aWdhdG9yLmgg
XAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgXAogCVdlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggXAog
CVdlYkNvcmUvd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oIFwKIAlXZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggODUwY2ViMS4u
YjQwN2QyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTMzMyw2ICszMzMsNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdab29t
QW5kUGFuLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21FdmVudC5pZGwnLAogICAgICAg
ICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsJywKKyAgICAgICAgICAgICd3b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJl
ZFdvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmlkbCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCcsCkBAIC00MzIsNiArNDMzLDcgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAnLApAQCAtNjAzLDYg
KzYwNSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
WFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERh
dGFiYXNlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVk
aWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhET01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAnLApAQCAtMzI3OCw2ICsz
MjgxLDggQEAKICAgICAgICAgICAgICdzdmcvU3luY2hyb25pemFibGVUeXBlV3JhcHBlci5oJywK
ICAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5oJywKKyAgICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICd3b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oJywK
ICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAnLAogICAgICAgICAgICAgJ3dv
cmtlcnMvU2hhcmVkV29ya2VyLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDk4NWI3YS4uNzQ3MWNjOCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNDE5LDYg
KzE0MTksNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0xKSB7CiAgICAgSURM
X0JJTkRJTkdTICs9IFwKICAgICAgICAgcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaWRsIFwKICAgICAg
ICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAorICAgICAgICB3b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuaWRsIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXIuaWRsIFwKICAgICAg
ICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyTG9j
YXRpb24uaWRsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3NjU5NzUz
Li4zMjJiNzdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTIwMDIs
NiArMjAwMiw1NCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIiDQorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRG9jdW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KQEAgLTIzOTAzLDYgKzIzOTUxLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3b3JrZXJzXERlZGljYXRlZFdvcmtlckNvbnRleHQuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcR2VuZXJpY1dvcmtl
clRhc2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yODIzNCw2ICsyODI5MCwxMCBAQAog
CQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YmluZGluZ3NcanNcSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU0RvY3VtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTI4
NjQ2LDEwICsyODcwNiw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dvcmtlckNvbnRleHRDdXN0b20uaCIN
Ci0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU1dvcmtlckN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI5OTYyZTAu
LjA1ZWRmZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC02NTIsNiArNjUyLDEyIEBACiAJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJl
ZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNv
bnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNDE1QjdDNTkwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hh
cmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3Rv
bS5jcHAgKi87IH07CiAJCTQxNUI3QzYzMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtl
ckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oICovOyB9OworCQk0MTYyQTQ1MDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAg
Ki87IH07CisJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovOyB9Owor
CQk0MTYyQTQ1MjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDRG
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCAqLzsgfTsKKwkJ
NDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYy
QTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCAqLzsgfTsKKwkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNw
cCAqLzsgfTsKKwkJNDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICov
OyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVCQzBFREY4
RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi87IH07CiAJCTQxNkU3NUJGMEVERjhG
RDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlw
dENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQxNkU3NUNCMEVERjkwQzcwMDM2MEUxRCAvKiBTY3Jp
cHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsK
QEAgLTU2MDQsNiArNTYxMCwxMiBAQAogCQk0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNT
aGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2hhcmVkV29y
a2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1QjdDNjIwRkY1
QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgcGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNjJBNDRFMTAx
MTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgcGF0aCA9IHdvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGw7IHBhdGgg
PSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2MkE0NTYx
MDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlw
dENhbGxTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxs
U3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1QkQwRURGOEZENzAw
MzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTg5MSw2ICs5OTAzLDkgQEAKIAkJMkU0MzQ2MzEwRjU0NkE2
ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcCAqLywKKwkJCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oICovLAorCQkJCTQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmlkbCAqLywKIAkJCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNCMEZGNTk4NjkwMDU3NkIzQiAv
KiBBYnN0cmFjdFdvcmtlci5oICovLAogCQkJCTQxRTFCMUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5pZGwgKi8sCkBAIC0xMzU4OSw2ICsxMzYwNCw3IEBACiAJCUJDNEVERUY3
MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJG
RiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCTFBOUVGNDU2MEExQjk1N0QwMDMzMkI2MyAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJCQkJOTNCQTU5QjEw
RjJBQTVGRTAwOEU4RTk5IC8qIEpTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTE0MDAx
LDYgKzE0MDE3LDggQEAKIAkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8qIFRocmVhZHMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNjJBNDU1MTAx
MTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovLAorCQkJCTQx
NjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLywK
IAkJCQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8s
CiAJCQkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuaCAqLywK
IAkJCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3BwICovLApA
QCAtMTcwMDEsNiArMTcwMTksOCBAQAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIwMDVCQTI2NyAvKiBW
YWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNUM3NzA5MzEwMEQzQ0E4MDA1QkEy
NjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNUM3NzBBNjEwMEQ0
MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE2
MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTcxMTIsNiArMTcxMzIsNyBAQAogCQkJCTQx
RTFCMUQyMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCTQxRTFCMUQ1MEZGNTk4NjkwMDU3NkIzQiAvKiBTaGFyZWRXb3JrZXIuaWRsIGlu
IFJlc291cmNlcyAqLywKIAkJCQkxNUM3NzA4QzEwMEQzQzZBMDA1QkEyNjcgLyogVmFsaWRpdHlT
dGF0ZS5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTQxNjJBNDUyMTAxMTQ1QUUwMERGRjNFRCAv
KiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTAzMSw2
ICsxOTA1Miw5IEBACiAJCQkJMTVDNzcwOEUxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpT
VmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUM3NzBBNTEwMEQ0MUNEMDA1
QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNjJBNDUw
MTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE2MkE0NTcxMDExNDY0NzAwREZG
M0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDVhNmEzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNvbnRleHRD
dXN0b20uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV09SS0VSUykKKworI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0OjptYXJrKCkKK3sKKyAgICBCYXNlOjptYXJrKCk7CisKKyAgICBt
YXJrSWZOb3ROdWxsKGltcGwoKS0+b25tZXNzYWdlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCmluZGV4IDg3NWU5MDQuLmQzY2Q2YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcApAQCAtNTEsOSArNTEsOSBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiAjaW5jbHVkZSAiSlNXb3JrZXIuaCIKLSNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKKyNp
bmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIK
LSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQqIHRhcmdl
dCkKICAgICBpZiAoV29ya2VyKiB3b3JrZXIgPSB0YXJnZXQtPnRvV29ya2VyKCkpCiAgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIHdvcmtlcik7CiAKLSAgICBpZiAoV29ya2VyQ29udGV4dCogd29y
a2VyQ29udGV4dCA9IHRhcmdldC0+dG9Xb3JrZXJDb250ZXh0KCkpCisgICAgaWYgKERlZGljYXRl
ZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2Vy
Q29udGV4dCgpKQogICAgICAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdCh3b3JrZXJDb250
ZXh0KTsKICNlbmRpZgogCkBAIC0xMzksNyArMTM5LDcgQEAgRXZlbnRUYXJnZXQqIHRvRXZlbnRU
YXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgQ09O
VkVSVF9UT19FVkVOVF9UQVJHRVQoV29ya2VyKQotICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VU
KFdvcmtlckNvbnRleHQpCisgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoRGVkaWNhdGVkV29y
a2VyQ29udGV4dCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDA2NDc1Zjku
LmI5OWIyODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6Om1hcmsoKQogICAg
IG1hcmtET01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxMb2NhdGlv
bigpKTsKICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlv
bmFsTmF2aWdhdG9yKCkpOwogCi0gICAgbWFya0lmTm90TnVsbChpbXBsKCktPm9ubWVzc2FnZSgp
KTsKIAogICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dDo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRM
aXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpMaXN0ZW5lclZlY3RvciBM
aXN0ZW5lclZlY3RvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IGJjZjEwN2IuLmZhZjQzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzEsMTAgKzMxLDkgQEAKICNpbmNs
dWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcu
aCIKLSNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJKU0RlZGljYXRlZFdv
cmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxp
bnRlcnByZXRlci9JbnRlcnByZXRlci5oPgpAQCAtNzEsMTEgKzcwLDE1IEBAIHZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgLy8gRXhwbGljaXRseSBwcm90ZWN0
IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAogICAg
IC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9iYWwg
b2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBvd24g
cHJvdG90eXBlLikKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBK
U1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7Ci0gICAg
UHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gcHJvdG90eXBlID0gbmV3ICht
X2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShwcm90b3R5cGVTdHJ1
Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJDb250ZXh0UHJv
dG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoanNOdWxsKCkpOworICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHRQcm90b3R5cGU+
IHdvcmtlckNvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlKHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFz
ZSgpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4
dDo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlwZSk7Ci0gICAgbV93b3JrZXJDb250ZXh0V3JhcHBl
ciA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHQoc3RydWN0dXJlLnJl
bGVhc2UoKSwgbV93b3JrZXJDb250ZXh0KTsKKyAgICAvLyBGSVhNRTogV2hlbiB3ZSBhZGQgU2hh
cmVkV29ya2VyQ29udGV4dCwgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgd3JhcHBlciBoZXJlLgorICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh3b3JrZXJD
b250ZXh0UHJvdG90eXBlKTsKKyAgICBQcm90ZWN0ZWRQdHI8SlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2JhbERh
dGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZShkZWRpY2F0ZWRDb250
ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUoZGVk
aWNhdGVkQ29udGV4dFByb3RvdHlwZSk7CisKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyID0g
bmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dChzdHJ1Y3R1
cmUucmVsZWFzZSgpLCBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4obV93b3Jr
ZXJDb250ZXh0KSk7CiB9CiAKIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBhNzI2YTRhLi4xMTVhNWNmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTY1MSw3
ICs2NTEsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
cHVibGljOlxuIik7CiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCk7XG4iKTsKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIp
IHsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtl
ckNvbnRleHQifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQqIG9w
ZXJhdG9yIG5ldyhzaXplX3QsIEpTQzo6SlNHbG9iYWxEYXRhKik7XG4iKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0
KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7CkBAIC05
MDEsNyArOTAxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0ZShzaXpl
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckNvbnRleHQiKSB7CisgICAgfSBlbHNpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6Om9wZXJh
dG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKVxuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmggYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKaW5kZXggZGE5YTJiZS4uZmNkNTgwYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaApAQCAtMTkzLDYgKzE5Myw3
IEBACiAjZW5kaWYgLy8gU1ZHCiAKICNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlICJEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAppbmRleCBjMjk0MWMzLi41Mzcz
OGM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5P
bmUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5j
cHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJiaW5kaW5ncy9WOERhdGFiYXNlLmNwcCIK
ICNpbmNsdWRlICJiaW5kaW5ncy9WOERhdGFHcmlkQ29sdW1uLmNwcCIKICNpbmNsdWRlICJiaW5k
aW5ncy9WOERhdGFHcmlkQ29sdW1uTGlzdC5jcHAiCisjaW5jbHVkZSAiYmluZGluZ3MvVjhEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOERvY3VtZW50LmNw
cCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOERvY3VtZW50RnJhZ21lbnQuY3BwIgogI2luY2x1ZGUg
ImJpbmRpbmdzL1Y4RG9jdW1lbnRUeXBlLmNwcCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAppbmRleCAxZWIwODNjLi5hOTVjMjBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCkBAIC0zOTAsNiArMzkwLDEzIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKFY4Q2xhc3NJbmRleDo6VjhXCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JL
RVJDT05URVhUOiB7CisgICAgICAgIC8vIFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQg
Zm9yIGtlZXBpbmcgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dFRlbXBsYXRlPiBpbnN0YW5jZVRlbXBsYXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0
ZSgpOworICAgICAgICBpbnN0YW5jZVRlbXBsYXRlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhD
dXN0b206OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OldPUktFUjogewogICAg
ICAgICAvLyBSZXNlcnZlIG9uZSBtb3JlIGludGVybmFsIGZpZWxkIGZvciBrZWVwaW5nIGV2ZW50
IGxpc3RlbmVycy4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFu
Y2VUZW1wbGF0ZSA9IGRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SW5kZXguY3BwCmluZGV4IGFmYTgxY2IuLjhiNjVlZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNw
cApAQCAtNTksOCArNTksOCBAQAogI2luY2x1ZGUgIlY4Q1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVk
ZSAiVjhDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiVjhDU1NWYXJpYWJsZXNEZWNsYXJhdGlv
bi5oIgotI2luY2x1ZGUgIlY4Q1NTVmFyaWFibGVzUnVsZS5oIg0KLSNpbmNsdWRlICJWOERhdGFH
cmlkQ29sdW1uLmgiDQorI2luY2x1ZGUgIlY4Q1NTVmFyaWFibGVzUnVsZS5oIgorI2luY2x1ZGUg
IlY4RGF0YUdyaWRDb2x1bW4uaCIKICNpbmNsdWRlICJWOERhdGFHcmlkQ29sdW1uTGlzdC5oIgog
I2luY2x1ZGUgIlY4RGF0YWJhc2UuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCkBAIC0yMDYs
OSArMjA2LDkgQEAKICNpbmNsdWRlICJWOFhTTFRQcm9jZXNzb3IuaCIKICNpbmNsdWRlICJWOFJH
QkNvbG9yLmgiCiAKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpDQotI2luY2x1ZGUgIlY4U3RvcmFn
ZS5oIg0KLSNpbmNsdWRlICJWOFN0b3JhZ2VFdmVudC5oIg0KKyNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCisjaW5jbHVkZSAiVjhTdG9yYWdlLmgiCisjaW5jbHVkZSAiVjhTdG9yYWdlRXZlbnQuaCIK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCkBAIC0zNzIsNiArMzcyLDcgQEAK
IAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKKyNp
bmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdvcmtlci5o
IgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4V29ya2VyTG9jYXRp
b24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXggNjU4YmRhZS4uNDE3NTZlMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEluZGV4LmgKQEAgLTU4LDYgKzU4LDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKIAogI2RlZmlu
ZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFYoQUJTVFJBQ1RXT1JLRVIsIEFic3RyYWN0V29ya2VyKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREVESUNBVEVEV09SS0VSQ09OVEVY
VCwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCkgICAgICAgICAgICAgICAgICAgXAogICAgIFYoV09S
S0VSQ09OVEVYVCwgV29ya2VyQ29udGV4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIFYoV09SS0VSTE9DQVRJT04sIFdvcmtlckxvY2F0aW9uKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoV09SS0VSTkFWSUdBVE9SLCBXb3JrZXJO
YXZpZ2F0b3IpCkBAIC03OSw4ICs4MCw4IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAgICAgVihBVFRS
LCBBdHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgVihDSEFSQUNURVJEQVRBLCBDaGFyYWN0ZXJEYXRhKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihDREFUQVNFQ1RJT04sIENEQVRBU2VjdGlv
bikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgVihDT01NRU5U
LCBDb21tZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcDQotICAgIFYoREFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICBWKENPTU1FTlQsIENvbW1lbnQpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBWKERBVEFHUklE
Q09MVU1OLCBEYXRhR3JpZENvbHVtbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWKERBVEFHUklEQ09MVU1OTElTVCwgRGF0YUdyaWRDb2x1bW5MaXN0KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPQ1VNRU5ULCBEb2N1bWVudCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKERPQ1VNRU5URlJB
R01FTlQsIERvY3VtZW50RnJhZ21lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTM4OSwxNCArMzkwLDE0IEBAIHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+ICgqRnVuY3Rpb25UZW1wbGF0ZUZhY3RvcnkpKCk7CiAgICAgVihTUUxUUkFOU0FD
VElPTiwgU1FMVHJhbnNhY3Rpb24pCiAjZWxzZQogI2RlZmluZSBET01fT0JKRUNUX0RBVEFCQVNF
X1RZUEVTKFYpCi0jZW5kaWYNCi0NCi0jaWYgRU5BQkxFKERPTV9TVE9SQUdFKQ0KLSNkZWZpbmUg
RE9NX09CSkVDVF9TVE9SQUdFX1RZUEVTKFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwNCi0gICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQotICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdl
RXZlbnQpDQotI2Vsc2UNCi0jZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKQ0KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorI2RlZmluZSBET01fT0JKRUNUX1NUT1JB
R0VfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYo
U1RPUkFHRSwgU3RvcmFnZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFYoU1RPUkFHRUVWRU5ULCBTdG9yYWdlRXZlbnQpCisjZWxzZQorI2Rl
ZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikKICNlbmRpZgogCiAjZGVmaW5lIERPTV9P
QkpFQ1RfVFlQRVMoVikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5jcHAKaW5kZXggNzgzZWViNS4uZDljNTM5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMzUsNiArMzUsNyBA
QAogCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKKyNpbmNsdWRl
ICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5o
IgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKQEAgLTE2
NSw3ICsxNjYsNyBAQCB2b2lkIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdENvbnRl
eHRJZk5lZWRlZCgpCiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBpbXBsaWNpdFByb3RvU3Ry
aW5nID0gdjg6OlN0cmluZzo6TmV3KCJfX3Byb3RvX18iKTsKIAogICAgIC8vIENyZWF0ZSBhIG5l
dyBKUyBvYmplY3QgYW5kIHVzZSBpdCBhcyB0aGUgcHJvdG90eXBlIGZvciB0aGUgc2hhZG93IGds
b2JhbCBvYmplY3QuCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRD
b25zdHJ1Y3RvciA9IEdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9
IEdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6REVESUNBVEVEV09SS0VSQ09OVEVYVCk7CiAg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzV29ya2VyQ29udGV4dCA9IFNhZmVBbGxvY2F0aW9u
OjpuZXdJbnN0YW5jZSh3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IpOwogICAgIC8vIEJhaWwgb3V0
IGlmIGFsbG9jYXRpb24gZmFpbGVkLgogICAgIGlmIChqc1dvcmtlckNvbnRleHQuSXNFbXB0eSgp
KSB7CkBAIC0yOTAsNyArMjkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eTo6RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGEKICAgICBpZiAo
IXRhcmdldCkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKLSAgICBXb3JrZXJDb250ZXh0
KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b1dvcmtlckNvbnRleHQoKTsKKyAgICBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b0RlZGljYXRlZFdvcmtl
ckNvbnRleHQoKTsKICAgICBpZiAod29ya2VyQ29udGV4dCkKICAgICAgICAgcmV0dXJuIFdvcmtl
ckNvbnRleHRUb1Y4T2JqZWN0KHdvcmtlckNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCmluZGV4IDVjZWM5MDIuLjZiZTQ5OGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC0xMTksNiAr
MTE5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtN
ZXNzYWdlUG9ydEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmll
bGRDb3VudCArIDI7CiAKICNpZiBFTkFCTEUoV09SS0VSUykKKyAgICAgICAgc3RhdGljIGNvbnN0
IGludCBrRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBr
RGVkaWNhdGVkV29ya2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBl
ckludGVybmFsRmllbGRDb3VudCArIDE7CisKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrV29y
a2VyUmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJJbnRlcm5hbEZpZWxkQ291bnQg
PSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogCkBAIC00NzcsMTEgKzQ4
MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQWJz
dHJhY3RXb3JrZXJBZGRFdmVudExpc3RlbmVyKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhB
YnN0cmFjdFdvcmtlclJlbW92ZUV2ZW50TGlzdGVuZXIpOwogCisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoRGVkaWNhdGVkV29ya2VyQ29udGV4dE9ubWVzc2FnZSk7CisKICAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJPbm1lc3NhZ2UpOwogICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnN0cnVjdG9yKTsKIAogICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SX0dFVFRFUihXb3JrZXJDb250ZXh0U2VsZik7Ci0gICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2VyQ29udGV4dE9ubWVzc2FnZSk7CiAgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dEltcG9ydFNjcmlwdHMpOwogICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRTZXRUaW1lb3V0KTsKICAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXb3JrZXJDb250ZXh0Q2xlYXJUaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxM2U0NWUKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
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
ZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5oIgorCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4
UHJveHkuaCIKKyNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQUNDRVNTT1JfR0VUVEVSKERlZGljYXRlZFdvcmtlckNvbnRl
eHRPbm1lc3NhZ2UpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRl
eHQub25tZXNzYWdlLl9nZXQiKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVkV29y
a2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhULCBpbmZvLkhv
bGRlcigpKTsKKyAgICBpZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAg
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyKj4od29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpOwor
ICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRM
aXN0ZW5lck9iamVjdCgpOworICAgICAgICByZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKERlZGljYXRlZFdv
cmtlckNvbnRleHRPbm1lc3NhZ2UpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdv
cmtlckNvbnRleHQub25tZXNzYWdlLl9zZXQiKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVk
aWNhdGVkV29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhU
LCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBvbGRM
aXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3Jr
ZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAg
ICAgICBpZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVy
T2JqZWN0KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVy
KCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVl
c3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5l
ci4KKyAgICAgICAgd29ya2VyQ29udGV4dC0+c2V0T25tZXNzYWdlKDApOworICAgIH0gZWxzZSB7
CisgICAgICAgIFJlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gd29ya2VyQ29udGV4
dC0+c2NyaXB0KCktPnByb3h5KCktPmZpbmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6OkxvY2Fs
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxp
c3RlbmVyKSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRM
aXN0ZW5lck9iamVjdCgpOworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
aW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3
b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2UobGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRl
SGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20u
Y3BwCmluZGV4IGNkMDhiNGQuLjM0MzVlMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTMsNDUgKzUzLDYgQEAg
QUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHRTZWxmKQogICAgIHJldHVybiBXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRUb1Y4T2JqZWN0KHdvcmtlckNvbnRleHQp
OwogfQogCi1BQ0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dE9ubWVzc2FnZSkKLXsKLSAgICBJ
TkNfU1RBVFMoTCJET00uV29ya2VyQ29udGV4dC5vbm1lc3NhZ2UuX2dldCIpOwotICAgIFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9i
amVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGluZm8uSG9s
ZGVyKCkpOwotICAgIGlmICh3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSkgewotICAgICAgICBW
OFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSk7Ci0g
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlzdGVuZXItPmdldExp
c3RlbmVyT2JqZWN0KCk7Ci0gICAgICAgIHJldHVybiB2OExpc3RlbmVyOwotICAgIH0KLSAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCi1BQ0NFU1NPUl9TRVRURVIoV29ya2VyQ29udGV4
dE9ubWVzc2FnZSkKLXsKLSAgICBJTkNfU1RBVFMoTCJET00uV29ya2VyQ29udGV4dC5vbm1lc3Nh
Z2UuX3NldCIpOwotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldP
UktFUkNPTlRFWFQsIGluZm8uSG9sZGVyKCkpOwotICAgIFY4V29ya2VyQ29udGV4dEV2ZW50TGlz
dGVuZXIqIG9sZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lcio+KHdvcmtlckNvbnRleHQtPm9ubWVzc2FnZSgpKTsKLSAgICBpZiAodmFsdWUtPklzTnVs
bCgpKSB7Ci0gICAgICAgIGlmICh3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSkgewotICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+
Z2V0TGlzdGVuZXJPYmplY3QoKTsKLSAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
aW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtXb3JrZXJDb250ZXh0UmVx
dWVzdENhY2hlSW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3Rl
bmVyLgotICAgICAgICB3b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2UoMCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB3b3JrZXJDb250
ZXh0LT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9j
YWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICBpZiAo
bGlzdGVuZXIpIHsKLSAgICAgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgewotICAgICAgICAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdl
dExpc3RlbmVyT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlSGlkZGVuRGVwZW5kZW5j
eShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRS
ZXF1ZXN0Q2FjaGVJbmRleCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdvcmtlckNv
bnRleHQtPnNldE9ubWVzc2FnZShsaXN0ZW5lcik7Ci0gICAgICAgICAgICBjcmVhdGVIaWRkZW5E
ZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRS
ZXF1ZXN0Q2FjaGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBi
b29sIHNpbmdsZVNob3QpCiB7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4
RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xhc3NJ
bmRleDo6V09SS0VSQ09OVEVYVCwgYXJncy5Ib2xkZXIoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXgg
NDM3ZjViYS4uNDI2NjhlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtODksNyArODksNyBAQCBXb3Jr
ZXIqIEV2ZW50VGFyZ2V0Ojp0b1dvcmtlcigpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVdvcmtlckNv
bnRleHQqIEV2ZW50VGFyZ2V0Ojp0b1dvcmtlckNvbnRleHQoKQorRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCogRXZlbnRUYXJnZXQ6OnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCA3M2EzMmUzLi40NGQxMGQyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFdvcmtl
cjsKLSAgICBjbGFzcyBXb3JrZXJDb250ZXh0OworICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNv
bnRleHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVl
c3RVcGxvYWQ7CiAKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigp
OwotICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpOworICAg
ICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZGFiODU4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RlZGljYXRlZFdvcmtlckNvbnRleHQ6
OkRlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCisgICAgOiBXb3JrZXJDb250ZXh0KHVybCwg
dXNlckFnZW50LCB0aHJlYWQpCit7Cit9CisKK0RlZGljYXRlZFdvcmtlckNvbnRleHQ6On5EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KCkKK3sKKyAgICAvLyBOb3RpZnkgcGFyZW50IHdvcmtlciB3ZSBh
cmUgZ29pbmcgYXdheS4KKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS53b3JrZXJD
b250ZXh0RGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFBy
b3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlVVJMKTsKK30KKwordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHBv
c3RNZXNzYWdlKG1lc3NhZ2UsIDAsIGVjKTsKK30KKwordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoaXNDbG9zaW5nKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2Vu
ZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbD4gY2hhbm5lbCA9IHBvcnQgPyBwb3J0LT5kaXNlbnRhbmdsZShlYykgOiAwOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuOworICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgp
LnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwgY2hhbm5lbC5yZWxlYXNlKCkpOwor
fQorCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQpCit7CisgICAgLy8g
U2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5v
dCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KKyAgICBBU1NFUlQoIWlzQ2xvc2luZygp
KTsKKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2Us
ICIiLCAiIiwgMCwgcG9ydCk7CisKKyAgICBpZiAobV9vbm1lc3NhZ2VMaXN0ZW5lci5nZXQoKSkg
eworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50
VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZUxpc3RlbmVyLT5oYW5kbGVFdmVudChl
dnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGIvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lMzdjMTNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
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
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0X2gKKyNkZWZpbmUgRGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCisK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQgOiBwdWJsaWMgV29ya2VyQ29udGV4dCB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29y
a2VyVGhyZWFkKiB0aHJlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRGVkaWNhdGVkV29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFkKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAg
ICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgICAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0K
KyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1l
c3NhZ2VMaXN0ZW5lci5nZXQoKTsgfQorCisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKGNv
bnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYs
IFdvcmtlclRocmVhZCopOworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3Nh
Z2VMaXN0ZW5lcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJlZTMz
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaWRsCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFkcyB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTLAorICAgICAgICBDdXN0b21NYXJrRnVuY3Rp
b24sCisgICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAgIElzV29ya2VyQ29u
dGV4dCwKKyAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCisgICAgICAgIE5vU3RhdGlj
VGFibGVzCisgICAgXSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IDogV29ya2VyQ29udGV4dCB7CisK
KyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlv
bmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3Nh
Z2U7CisKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNWZjYzA4
MC4uOTY1YzBhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMzYsNyArMzYsNyBA
QAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC02NSw4ICs2NSw2
IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyCiBXb3JrZXJDb250ZXh0Ojp+V29ya2VyQ29udGV4
dCgpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZC0+dGhyZWFkSUQo
KSk7Ci0KLSAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS53b3JrZXJDb250ZXh0RGVz
dHJveWVkKCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdvcmtlckNvbnRleHQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTYzLDIyICsxNjEsNiBAQCB2b2lkIFdv
cmtlckNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHBv
c3RNZXNzYWdlKG1lc3NhZ2UsIDAsIGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAobV9jbG9zaW5nKQotICAgICAgICByZXR1cm47Ci0gICAg
Ly8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8g
dGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5u
ZWwgPSBwb3J0ID8gcG9ydC0+ZGlzZW50YW5nbGUoZWMpIDogMDsKLSAgICBpZiAoZWMpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWwucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBX
b3JrZXJDb250ZXh0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7CiAg
ICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZp
bmQoZXZlbnRUeXBlKTsKQEAgLTI1NSwyMyArMjM3LDYgQEAgdm9pZCBXb3JrZXJDb250ZXh0Ojpj
bGVhckludGVydmFsKGludCB0aW1lb3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aW1lb3V0SWQpOwogfQogCi12b2lkIFdvcmtlckNvbnRl
eHQ6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8TWVz
c2FnZVBvcnQ+IHBvcnQpCi17Ci0gICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFk
IGV2ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2lu
Zy4KLSAgICBBU1NFUlQoIW1fY2xvc2luZyk7Ci0gICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLCAiIiwgIiIsIDAsIHBvcnQpOwotCi0gICAgaWYgKG1f
b25tZXNzYWdlTGlzdGVuZXIuZ2V0KCkpIHsKLSAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7
Ci0gICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKLSAgICAgICAgbV9vbm1lc3Nh
Z2VMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7Ci0gICAgfQotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBl
Yyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci19Ci0KIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkws
IGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAppbmRleCAxNmY0M2ZkLi42YTBiODdmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKQEAgLTQ4LDE3ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBXb3JrZXJDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD4sIHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCogdGhy
ZWFkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlckNv
bnRleHQodXJsLCB1c2VyQWdlbnQsIHRocmVhZCkpOwotICAgICAgICB9CiAKICAgICAgICAgdmly
dHVhbCB+V29ya2VyQ29udGV4dCgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlckNv
bnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBXb3JrZXJD
b250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9Ci0KICAgICAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CiAKICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
QEAgLTg5LDEyICs4Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbXBv
cnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxl
clVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgV29ya2VyTmF2
aWdhdG9yKiBuYXZpZ2F0b3IoKSBjb25zdDsKIAotICAgICAgICAvLyBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBNZXNz
YWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlTGlzdGVu
ZXIgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlTGlzdGVuZXIuZ2V0KCk7IH0KLQogICAgICAgICAv
LyBUaW1lcnMKICAgICAgICAgaW50IHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uKiwgaW50IHRp
bWVvdXQpOwogICAgICAgICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZW91dElkKTsKQEAgLTEx
MCw3ICs5OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogICAgICAg
ICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlz
dGVuZXJzOyB9CiAKLSAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwg
UGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4pOwogCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dvcmtlckNvbnRleHQ6Om1hcmsoKSBpbgogICAg
ICAgICAvLyBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwLgpAQCAtMTIwLDggKzEwNywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4
dD46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRlZDxXb3JrZXJDb250ZXh0Pjo6ZGVyZWY7
CiAKLSAgICBwcml2YXRlOgorICAgIHByb3RlY3RlZDoKICAgICAgICAgV29ya2VyQ29udGV4dChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgV29ya2VyVGhyZWFkKik7CisgICAgICAgIGJvb2wg
aXNDbG9zaW5nKCkgeyByZXR1cm4gbV9jbG9zaW5nOyB9CisgICAgcHJpdmF0ZToKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgcmVmKCk7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIHsgZGVyZWYo
KTsgfQpAQCAtMTQwLDcgKzEyOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3du
UHRyPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwogICAgICAgICBXb3JrZXJUaHJl
YWQqIG1fdGhyZWFkOwogCi0gICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29ubWVzc2Fn
ZUxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50TGlzdGVuZXJzOwog
CiAgICAgICAgIGJvb2wgbV9jbG9zaW5nOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCmluZGV4
IDcwOTQxMGEuLjJiZTIyZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKQEAgLTI4LDkg
KzI4LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENv
bmRpdGlvbmFsPVdPUktFUlMsCi0gICAgICAgIERlbGVnYXRpbmdHZXRPd25Qcm9wZXJ0eVNsb3Qs
CiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgRGVsZWdhdGluZ0dldE93blBy
b3BlcnR5U2xvdCwKICAgICAgICAgRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCwKKyAgICAgICAgSXNX
b3JrZXJDb250ZXh0LAogICAgICAgICBMZWdhY3lQYXJlbnQ9SlNXb3JrZXJDb250ZXh0QmFzZSwK
ICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIFdvcmtlckNvbnRleHQgewpAQCAtNDksMTIg
KzUwLDYgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICAvLyBEYXRhYmFzZSBvcGVuRGF0YWJh
c2UoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2ZXJzaW9uLCBpbiBET01TdHJpbmcg
ZGlzcGxheU5hbWUsIGluIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSk7CiAgICAgICAgIC8v
IERhdGFiYXNlU3luYyBvcGVuRGF0YWJhc2VTeW5jKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01T
dHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpOwogCi0KLSAgICAgICAgLy8gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09w
dGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKLSAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1l
c3NhZ2U7Ci0KICAgICAgICAgLy8gVGltZXJzCiAgICAgICAgIFtDdXN0b21dIGxvbmcgc2V0VGlt
ZW91dChpbiBUaW1lb3V0SGFuZGxlciBoYW5kbGVyLCBpbiBsb25nIHRpbWVvdXQpOwogICAgICAg
ICAvLyBbQ3VzdG9tXSBsb25nIHNldFRpbWVvdXQoaW4gRE9NU3RyaW5nIGNvZGUsIGluIGxvbmcg
dGltZW91dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBi
NmUxNjQyLi45YmFjMmM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKQEAgLTMxLDEzICszMSwxMyBAQAogCiAjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHku
aCIKIAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJET01X
aW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkdlbmVyaWNXb3JrZXJU
YXNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKHNjcmlwdENvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICAgICAgV29ya2VyQ29u
dGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0
KTsKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0
PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAgUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0OwogICAgICAgICBpZiAobV9jaGFubmVsKSB7CiAgICAgICAgICAg
ICBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqc2NyaXB0Q29udGV4dCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IDA3NDUyMjYuLmMzNWMwNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLSNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAKICNpbmNsdWRlIDx1dGlsaXR5
PgpAQCAtMTAxLDkgKzEwMSw5IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkK
IHsKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4
KTsKLSAgICAgICAgbV93b3JrZXJDb250ZXh0ID0gV29ya2VyQ29udGV4dDo6Y3JlYXRlKG1fc3Rh
cnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgdGhpcyk7
CisgICAgICAgIG1fd29ya2VyQ29udGV4dCA9IERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0
ZShtX3N0YXJ0dXBEYXRhLT5tX3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdlbnQs
IHRoaXMpOwogICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkgewotICAgICAgICAg
ICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQgYSBj
aGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LCAKKyAgICAg
ICAgICAgIC8vIFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFk
IGEgY2hhbmNlIHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRleHQgZGlkbid0IGV4aXN0IHlldCwKICAg
ICAgICAgICAgIC8vIGZvcmJpZEV4ZWN1dGlvbigpIGNvdWxkbid0IGJlIGNhbGxlZCBmcm9tIHN0
b3AoKS4KICAgICAgICAgICAgbV93b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0
aW9uKCk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33068</attachid>
            <date>2009-07-19 17:47:25 -0700</date>
            <delta_ts>2009-07-21 12:23:05 -0700</delta_ts>
            <desc>Patch addressing levin&apos;s comments</desc>
            <filename>z</filename>
            <type>text/plain</type>
            <size>59696</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWNiODE1NS4uYjA0MDEyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NyBAQAorMjAwOS0wNy0xOCAgRHJldyBXaWxzb24g
IDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZmFjdG9yIFdvcmtlckNvbnRleHQgdG8gbW92ZSBEZWRpY2F0ZWRX
b3JrZXItc3BlY2lmaWMgQVBJcyBpbnRvIERlZGljYXRlZFdvcmtlckNvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDIwCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGFzIHRoZSBleGlzdGluZyB0ZXN0cyBhbHJlYWR5IHByb3ZpZGUgc3VmZmlj
aWVudCBjb3ZlcmFnZSAodGhpcyBpcyBqdXN0IGEgcmVmYWN0b3Jpbmcgd2l0aCBubyBuZXcgZnVu
Y3Rpb25hbGl0eSkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgIEFk
ZGVkIEpTRGVyaXZlZFdvcmtlckNvbnRleHQuY3BwCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgQWRkZWQgRGVyaXZlZFdvcmtlckNvbnRleHQgZmlsZXMKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgQWRkZWQgRGVyaXZlZFdvcmtlckNvbnRleHQgZmls
ZXMKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJD
b250ZXh0IGZpbGVzCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgIEFkZGVkIERlcml2
ZWRXb3JrZXJDb250ZXh0IGZpbGVzCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJDb250ZXh0IGZpbGVzCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBEZXJp
dmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0OjptYXJrKToKKyAgICAgICAgQ3VzdG9tIG1hcmsgZnVuY3Rpb24g
Zm9yIG9ubWVzc2FnZSBldmVudCBoYW5kbGVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIFN1cHBvcnRz
IGNvbnZlcnNpb24gdG8gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViQ29y
ZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6bWFyayk6Cisg
ICAgICAgIE1vdmVkIG9ubWVzc2FnZSBtYXJrIGhhbmRsaW5nIGludG8gRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgQWRkZWQgYXBwcm9wcmlhdGUgY2FzdHMgdG8gRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCBmb3IgcG9zdE1lc3NhZ2UoKS4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICBNYW51YWxseSBzZXRzIHVwIHRoZSBwcm90
b3R5cGUgY2hhaW4gZm9yIHRoZSB3b3JrZXIgY29udGV4dC4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgQ2hhbmdlZCBzcGVjaWFsIGNhc2Ug
Y29kZSBmb3IgV29ya2VyQ29udGV4dCB0byBiZSB0cmlnZ2VyZWQgYnkgbmV3IElzV29ya2VyQ29u
dGV4dCBhdHRyaWJ1dGUuCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUu
aDoKKyAgICAgICAgQWRkZWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oCisgICAgICAgICogYmlu
ZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHA6CisgICAgICAgIEFkZGVkIFY4RGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZSk6Cisg
ICAgICAgIEFkZGVkIGNvZGUgdG8gcmVzZXJ2ZSBleHRyYSBmaWVsZHMgZm9yIFY4RGVkaWNhdGVk
V29ya2VyQ29udGV4dC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEluZGV4LmNwcDoKKyAgICAg
ICAgTm93IGluY2x1ZGVzIFY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIGFkZGl0aW9uIHRv
IFY4V29ya2VyQ29udGV4dC5oCisgICAgICAgICogYmluZGluZ3MvdjgvVjhJbmRleC5oOgorICAg
ICAgICBBZGRlZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGFzIGEgbm9uLW5vZGUgd3JhcHBlciB0
eXBlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRD
b250ZXh0SWZOZWVkZWQpOgorICAgICAgICBDcmVhdGVzIERlZGljYXRlZFdvcmtlckNvbnRleHQg
aW5zdGVhZCBvZiBXb3JrZXJDb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICBSZXR1cm5z
IERlZGljYXRlZFdvcmtlckNvbnRleHQgaW5zdGVhZCBvZiBXb3JrZXJDb250ZXh0LgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgY29kZSBmcm9tIFY4V29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09SX0dFVFRFUik6CisgICAgICAgIChXZWJD
b3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgY29kZSB0byBW
OERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b0RlZGljYXRlZFdvcmtl
ckNvbnRleHQpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHdvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICBNb3ZlZCBEZWRp
Y2F0ZWRXb3JrZXItb25seSBBUElzIGZyb20gV29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNv
cmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6fkRlZGljYXRlZFdvcmtlckNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cmVwb3J0
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OmRp
c3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Lmg6IEFkZGVkLgorICAgICAgICBNb3ZlZCBEZWRpY2F0ZWRXb3JrZXItb25seSBBUElzIGZyb20g
V29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp0b0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtl
ckNvbnRleHQ6Om9ubWVzc2FnZSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6On5Xb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgTW92ZWQgY29kZSB0aGF0IG5vdGlmaWVzIHBhcmVudCB0aGF0IHdvcmtlciBpcyBjbG9zaW5n
IGRvd24gaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aXNDbG9zaW5n
KToKKyAgICAgICAgRXhwb3NlZCBjbG9zaW5nIGZsYWcgYXMgYW4gQVBJIHNvIGRlcml2ZWQgY2xh
c3NlcyBjYW4gYWNjZXNzIGl0LgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAg
Q2FsbHMgaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IHRvIGhhbmRsZSBtZXNzYWdlLgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgQ3JlYXRlcyBhIERlZGljYXRlZFdvcmtl
ckNvbnRleHQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cyB1cC4KKwogMjAwOS0wNy0xOCAgSmFuIE1p
Y2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDQyMmNmZDkuLjIzN2E2ODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSlNEYXRhYmFzZS5jcHAi
CiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENv
bHVtbkxpc3QuY3BwIgorI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCiAj
aW5jbHVkZSAiSlNEb2N1bWVudC5jcHAiCiAjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50LmNw
cCIKICNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYWEy
NjMxMi4uYmMxYmIyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzgsNiArNzgsNyBAQCBET01fQ0xB
U1NFUyA9IFwKICAgICBDb3VudGVyIFwKICAgICBEYXRhR3JpZENvbHVtbiBcCiAgICAgRGF0YUdy
aWRDb2x1bW5MaXN0IFwKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IFwKICAgICBET01BcHBs
aWNhdGlvbkNhY2hlIFwKICAgICBET01Db3JlRXhjZXB0aW9uIFwKICAgICBET01JbXBsZW1lbnRh
dGlvbiBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCA5NTMxYTE4Li5iNjEzMjE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTI1MSw2ICsyNTEs
NyBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvcGx1Z2lucy9QbHVnaW4uaWRsIFwKIAlX
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuaWRsIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5p
ZGwgXAogCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsIFwKIAlXZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsIFwKQEAg
LTIzMTQsNiArMjMxNSw3IEBAIHdlYmNvcmVfYnVpbHRfbm9zb3VyY2VzICs9IFwKIAogd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1
c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5jcHAg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1Y3Rvci5oIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIFwKQEAgLTIzMjYsNiArMjMyOCw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5o
IFwKIAlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwIFwKIAlXZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaCBcCisJV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNv
bnRleHQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIFwK
IAlXZWJDb3JlL3dvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaCBcCiAJV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg1MGNlYjEu
LmI0MDdkMjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zMzMsNiArMzMzLDcgQEAKICAgICAgICAgICAgICdzdmcvU1ZHWm9v
bUFuZFBhbi5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9TVkdab29tRXZlbnQuaWRsJywKICAgICAg
ICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCcsCisgICAgICAgICAgICAnd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9TaGFy
ZWRXb3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dvcmtlci5pZGwnLAogICAgICAg
ICAgICAgJ3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwnLApAQCAtNDMyLDYgKzQzMyw3IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZENvbHVtbkxpc3RDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNvdXJjZS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmgnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwJywKQEAgLTYwMyw2
ICs2MDUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhE
YXRhYmFzZUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERl
ZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwJywKQEAgLTMyNzgsNiAr
MzI4MSw4IEBACiAgICAgICAgICAgICAnc3ZnL1N5bmNocm9uaXphYmxlVHlwZVdyYXBwZXIuaCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAnLAogICAgICAgICAgICAg
J3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCcsCisgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwJywKICAgICAgICAgICAgICd3
b3JrZXJzL1NoYXJlZFdvcmtlci5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDA5ODViN2EuLjc0NzFjYzggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTQxOSw2
ICsxNDE5LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9MSkgewogICAgIElE
TF9CSU5ESU5HUyArPSBcCiAgICAgICAgIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmlkbCBcCiAgICAg
ICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAgICAgICAgd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyLmlkbCBcCiAgICAg
ICAgIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogICAgICAgICB3b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmlkbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzY1OTc1
My4uMzIyYjc3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yMDAy
LDYgKzIwMDIsNTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0K
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQog
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0RvY3VtZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24NCkBAIC0yMzkwMyw2ICsyMzk1MSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXERlZGljYXRlZFdvcmtlckNvbnRl
eHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cd29ya2Vyc1xEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXEdlbmVyaWNXb3Jr
ZXJUYXNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMjgyMzQsNiArMjgyOTAsMTAgQEAK
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAiDQorCQkJCQk+
DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNEb2N1bWVudEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0y
ODY0NiwxMCArMjg3MDYsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0J
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmgi
DQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNXb3JrZXJDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiOTk2MmUw
Li4wNWVkZmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjUyLDYgKzY1MiwxMiBAQAogCQk0MTVCN0M1ODBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFy
ZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTVCN0M1NTBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJD
b25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTQxNUI3QzU5MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1No
YXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTVCN0M1NjBGRjU5OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDdXN0
b20uY3BwICovOyB9OwogCQk0MTVCN0M2MzBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0
b3IuaCAqLzsgfTsKKwkJNDE2MkE0NTAxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtl
ckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3Bw
ICovOyB9OworCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLzsgfTsK
KwkJNDE2MkE0NTIxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRs
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTYyQTQ0
RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi87IH07CisJ
CTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAgKi87IH07CisJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5j
cHAgKi87IH07CisJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCAq
LzsgfTsKIAkJNDE2RTc1QkUwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkMwRURG
OEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovOyB9OwogCQk0MTZFNzVCRjBFREY4
RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3Jp
cHRDYWxsU3RhY2suY3BwICovOyB9OwogCQk0MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07
CkBAIC01NjA0LDYgKzU2MTAsMTIgQEAKIAkJNDE1QjdDNTUwRkY1OThFNjAwNjc3MEY3IC8qIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdv
cmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUI3QzYyMEZG
NUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTYyQTQ0RTEw
MTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHBhdGggPSB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBwYXRo
ID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNjJBNDU2
MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUJDMEVERjhGRDcwMDM2MEUxRCAvKiBTY3Jp
cHRDYWxsU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2Fs
bFN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUJEMEVERjhGRDcw
MDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDYWxsRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4OTEsNiArOTkwMyw5IEBACiAJCTJFNDM0NjMxMEY1NDZB
NjgwMEIwRjFCQSAvKiB3b3JrZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgKi8sCisJCQkJNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRl
ZFdvcmtlckNvbnRleHQuaCAqLywKKwkJCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi8sCiAJCQkJNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNC
IC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLywKIAkJCQk0MUUxQjFDQjBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuaCAqLywKIAkJCQk0MUUxQjFDQzBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuaWRsICovLApAQCAtMTM1ODksNiArMTM2MDQsNyBAQAogCQlCQzRFREVG
NzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBC
RkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTlFRjQ1NjBBMUI5NTdEMDAzMzJCNjMg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwICovLAogCQkJCTkzQkE1OUIx
MEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0xNDAw
MSw2ICsxNDAxNyw4IEBACiAJCUUxQzhCRTRCMEU4QkQwRDEwMDY0Q0I3RCAvKiBUaHJlYWRzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTYyQTQ1NTEw
MTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLywKKwkJCQk0
MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8s
CiAJCQkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICov
LAogCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggKi8s
CiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCAqLywK
QEAgLTE3MDAxLDYgKzE3MDE5LDggQEAKIAkJCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyog
VmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVDNzcwOTMxMDBEM0NBODAwNUJB
MjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTVDNzcwQTYxMDBE
NDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQx
NjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3MTEyLDYgKzE3MTMyLDcgQEAKIAkJCQk0
MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsIGluIFJlc291cmNl
cyAqLywKIAkJCQk0MUUxQjFENTBGRjU5ODY5MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOEMxMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5
U3RhdGUuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQk0MTYyQTQ1MjEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTkwMzEs
NiArMTkwNTIsOSBAQAogCQkJCTE1Qzc3MDhFMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0
YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBK
U1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwQTUxMDBENDFDRDAw
NUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyQTQ1
MDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MTYyQTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERG
RjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ1YTZhMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAg
bWFya0lmTm90TnVsbChpbXBsKCktPm9ubWVzc2FnZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcAppbmRleCA4NzVlOTA0Li4wODE1NjcyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV09SS0VSUykKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXIuaCIKLSNp
bmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKLSNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
QEAgLTEwMiw3ICsxMDIsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBFdmVudFRh
cmdldCogdGFyZ2V0KQogICAgIGlmIChXb3JrZXIqIHdvcmtlciA9IHRhcmdldC0+dG9Xb3JrZXIo
KSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgd29ya2VyKTsKIAotICAgIGlmIChXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXh0ID0gdGFyZ2V0LT50b1dvcmtlckNvbnRleHQoKSkKKyAgICBp
ZiAoRGVkaWNhdGVkV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9EZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiB0b0pTRE9NR2xvYmFsT2JqZWN0
KHdvcmtlckNvbnRleHQpOwogI2VuZGlmCiAKQEAgLTEzOSw3ICsxMzksNyBAQCBFdmVudFRhcmdl
dCogdG9FdmVudFRhcmdldChKU0M6OkpTVmFsdWUgdmFsdWUpCiAKICNpZiBFTkFCTEUoV09SS0VS
UykKICAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChXb3JrZXIpCi0gICAgQ09OVkVSVF9UT19F
VkVOVF9UQVJHRVQoV29ya2VyQ29udGV4dCkKKyAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5k
ZXggMDY0NzVmOS4uYjk5YjI4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcApAQCAtNTgsNyArNTgsNiBAQCB2b2lkIEpTV29ya2VyQ29udGV4dDo6
bWFyaygpCiAgICAgbWFya0RPTU9iamVjdFdyYXBwZXIoZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRp
b25hbExvY2F0aW9uKCkpOwogICAgIG1hcmtET01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIGlt
cGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSk7CiAKLSAgICBtYXJrSWZOb3ROdWxsKGltcGwoKS0+
b25tZXNzYWdlKCkpOwogCiAgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpFdmVudExpc3RlbmVy
c01hcCBFdmVudExpc3RlbmVyc01hcDsKICAgICB0eXBlZGVmIFdvcmtlckNvbnRleHQ6Okxpc3Rl
bmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYmNmMTA3Yi4uZmFmNDMyMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMSwxMCArMzEs
OSBAQAogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIkpT
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNp
bmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgog
I2luY2x1ZGUgPGludGVycHJldGVyL0ludGVycHJldGVyLmg+CkBAIC03MSwxMSArNzAsMTUgQEAg
dm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICAvLyBFeHBsaWNp
dGx5IHByb3RlY3QgdGhlIGdsb2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29s
bGVjdGVkCiAgICAgLy8gd2hlbiB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2Ug
dGhlIGdsb2JhbCBvYmplY3QgaXMgZnVsbHkKICAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1h
cmsgaXRzIG93biBwcm90b3R5cGUuKQotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3RvdHlwZVN0
cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVs
bCgpKTsKLSAgICBQcm90ZWN0ZWRQdHI8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBwcm90b3R5
cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKHBy
b3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHdvcmtl
ckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7CisgICAgUHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4
dFByb3RvdHlwZT4gd29ya2VyQ29udGV4dFByb3RvdHlwZSA9IG5ldyAobV9nbG9iYWxEYXRhLmdl
dCgpKSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGUod29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVj
dHVyZS5yZWxlYXNlKCkpOwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNX
b3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKLSAgICBtX3dvcmtlckNv
bnRleHRXcmFwcGVyID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2VyQ29udGV4dChz
dHJ1Y3R1cmUucmVsZWFzZSgpLCBtX3dvcmtlckNvbnRleHQpOworICAgIC8vIEZJWE1FOiBXaGVu
IHdlIGFkZCBTaGFyZWRXb3JrZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUgY29ycmVjdCB3cmFwcGVy
IGhlcmUuCisgICAgUmVmUHRyPFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZSA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHdvcmtlckNvbnRleHRQcm90b3R5cGUpOworICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRQcm90b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRl
ZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0
cnVjdHVyZShkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlKTsKKworICAgIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KHN0cnVjdHVyZS5yZWxlYXNlKCksIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRl
eHQqPihtX3dvcmtlckNvbnRleHQpKTsKIH0KIAogU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGE3MjZhNGEu
LjExNWE1Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtNjUxLDcgKzY1MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90KTtcbiIpOwotICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3Jr
ZXJDb250ZXh0IikgeworICAgIH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IklzV29ya2VyQ29udGV4dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgSlNDOjpKU0dsb2JhbERhdGEqKTtcbiIpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
XG4iKTsKQEAgLTkwMSw3ICs5MDEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmFs
bG9jYXRlKHNpemUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
LSAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIpIHsKKyAgICB9
IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQi
fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQqICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZTo6b3BlcmF0b3IgbmV3KHNpemVfdCBzaXplLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdsb2JhbERhdGEtPmhlYXAuYWxsb2NhdGUoc2l6ZSk7
XG4iKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUu
aCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAppbmRleCBkYTlhMmJl
Li5mY2Q1ODBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNs
dWRlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCkBAIC0x
OTMsNiArMTkzLDcgQEAKICNlbmRpZiAvLyBTVkcKIAogI2lmIEVOQUJMRShXT1JLRVJTKQorI2lu
Y2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKICNp
bmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCmluZGV4IGMy
OTQxYzMuLjUzNzM4YzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNv
dXJjZXNBbGxJbk9uZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNl
c0FsbEluT25lLmNwcApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RGF0
YWJhc2UuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RGF0YUdyaWRDb2x1bW4uY3BwIgogI2lu
Y2x1ZGUgImJpbmRpbmdzL1Y4RGF0YUdyaWRDb2x1bW5MaXN0LmNwcCIKKyNpbmNsdWRlICJiaW5k
aW5ncy9WOERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4
RG9jdW1lbnQuY3BwIgogI2luY2x1ZGUgImJpbmRpbmdzL1Y4RG9jdW1lbnRGcmFnbWVudC5jcHAi
CiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEb2N1bWVudFR5cGUuY3BwIgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCmluZGV4IDFlYjA4M2MuLmE5NWMyMGMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTM5MCw2ICszOTAsMTMgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoVjhDbGFzc0luZGV4
OjpWOFcKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBWOENsYXNzSW5kZXg6OkRF
RElDQVRFRFdPUktFUkNPTlRFWFQ6IHsKKyAgICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRl
cm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0
YW5jZVRlbXBsYXRlKCk7CisgICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmll
bGRDb3VudChWOEN1c3RvbTo6a0RlZGljYXRlZFdvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291
bnQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFY4Q2xhc3NJbmRleDo6V09S
S0VSOiB7CiAgICAgICAgIC8vIFJlc2VydmUgb25lIG1vcmUgaW50ZXJuYWwgZmllbGQgZm9yIGtl
ZXBpbmcgZXZlbnQgbGlzdGVuZXJzLgogICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBpbnN0YW5jZVRlbXBsYXRlID0gZGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJbmRleC5jcHAKaW5kZXggYWZhODFjYi4uOGI2NWVlZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4SW5kZXguY3BwCkBAIC01OSw4ICs1OSw4IEBACiAjaW5jbHVkZSAiVjhDU1NWYWx1ZUxpc3Qu
aCIKICNpbmNsdWRlICJWOENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJWOENTU1ZhcmlhYmxl
c0RlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiVjhDU1NWYXJpYWJsZXNSdWxlLmgiDQotI2luY2x1
ZGUgIlY4RGF0YUdyaWRDb2x1bW4uaCINCisjaW5jbHVkZSAiVjhDU1NWYXJpYWJsZXNSdWxlLmgi
CisjaW5jbHVkZSAiVjhEYXRhR3JpZENvbHVtbi5oIgogI2luY2x1ZGUgIlY4RGF0YUdyaWRDb2x1
bW5MaXN0LmgiCiAjaW5jbHVkZSAiVjhEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlY4RG9jdW1lbnQu
aCIKQEAgLTIwNiw5ICsyMDYsOSBAQAogI2luY2x1ZGUgIlY4WFNMVFByb2Nlc3Nvci5oIgogI2lu
Y2x1ZGUgIlY4UkdCQ29sb3IuaCIKIAotI2lmIEVOQUJMRShET01fU1RPUkFHRSkNCi0jaW5jbHVk
ZSAiVjhTdG9yYWdlLmgiDQotI2luY2x1ZGUgIlY4U3RvcmFnZUV2ZW50LmgiDQorI2lmIEVOQUJM
RShET01fU1RPUkFHRSkKKyNpbmNsdWRlICJWOFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJWOFN0b3Jh
Z2VFdmVudC5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKQEAgLTM3Miw2
ICszNzIsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAjaW5jbHVkZSAiVjhBYnN0cmFjdFdv
cmtlci5oIgorI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IlY4V29ya2VyLmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiVjhX
b3JrZXJMb2NhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4
LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAppbmRleCA2NThiZGFlLi40MTc1NmUw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5kZXguaApAQCAtNTgsNiArNTgsNyBAQCB0eXBlZGVmIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkZ1bmN0aW9uVGVtcGxhdGVGYWN0b3J5KSgp
OwogCiAjZGVmaW5lIFdPUktFUl9OT05OT0RFX1dSQVBQRVJfVFlQRVMoVikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihBQlNUUkFDVFdPUktFUiwgQWJzdHJhY3RXb3Jr
ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVihERURJQ0FURURX
T1JLRVJDT05URVhULCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KSAgICAgICAgICAgICAgICAgICBc
CiAgICAgVihXT1JLRVJDT05URVhULCBXb3JrZXJDb250ZXh0KSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgVihXT1JLRVJMT0NBVElPTiwgV29ya2VyTG9jYXRpb24p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVihXT1JLRVJOQVZJR0FU
T1IsIFdvcmtlck5hdmlnYXRvcikKQEAgLTc5LDggKzgwLDggQEAgdHlwZWRlZiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsK
ICAgICBWKEFUVFIsIEF0dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICBWKENIQVJBQ1RFUkRBVEEsIENoYXJhY3RlckRhdGEpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWKENEQVRBU0VDVElPTiwg
Q0RBVEFTZWN0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBWKENPTU1FTlQsIENvbW1lbnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwNCi0gICAgVihEQVRBR1JJRENPTFVNTiwgRGF0YUdyaWRDb2x1bW4pICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgIFYoQ09NTUVOVCwgQ29tbWVu
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IFYoREFUQUdSSURDT0xVTU4sIERhdGFHcmlkQ29sdW1uKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFYoREFUQUdSSURDT0xVTU5MSVNULCBEYXRhR3JpZENvbHVtbkxp
c3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoRE9DVU1FTlQsIERvY3VtZW50
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYo
RE9DVU1FTlRGUkFHTUVOVCwgRG9jdW1lbnRGcmFnbWVudCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtMzg5LDE0ICszOTAsMTQgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKICAgICBW
KFNRTFRSQU5TQUNUSU9OLCBTUUxUcmFuc2FjdGlvbikKICNlbHNlCiAjZGVmaW5lIERPTV9PQkpF
Q1RfREFUQUJBU0VfVFlQRVMoVikKLSNlbmRpZg0KLQ0KLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0Up
DQotI2RlZmluZSBET01fT0JKRUNUX1NUT1JBR0VfVFlQRVMoVikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXA0KLSAgICBWKFNUT1JBR0UsIFN0b3JhZ2UpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCi0gICAgVihTVE9SQUdFRVZF
TlQsIFN0b3JhZ2VFdmVudCkNCi0jZWxzZQ0KLSNkZWZpbmUgRE9NX09CSkVDVF9TVE9SQUdFX1RZ
UEVTKFYpDQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisjZGVmaW5lIERPTV9P
QkpFQ1RfU1RPUkFHRV9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgVihTVE9SQUdFLCBTdG9yYWdlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgVihTVE9SQUdFRVZFTlQsIFN0b3JhZ2VFdmVudCkK
KyNlbHNlCisjZGVmaW5lIERPTV9PQkpFQ1RfU1RPUkFHRV9UWVBFUyhWKQogI2VuZGlmCiAKICNk
ZWZpbmUgRE9NX09CSkVDVF9UWVBFUyhWKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCA3ODNlZWI1Li5kOWM1MzljIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIK
IAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJET01Db3Jl
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlv
bi5oIgpAQCAtMTY1LDcgKzE2Niw3IEBAIHZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5
Ojppbml0Q29udGV4dElmTmVlZGVkKCkKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGltcGxp
Y2l0UHJvdG9TdHJpbmcgPSB2ODo6U3RyaW5nOjpOZXcoIl9fcHJvdG9fXyIpOwogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IEpTIG9iamVjdCBhbmQgdXNlIGl0IGFzIHRoZSBwcm90b3R5cGUgZm9yIHRo
ZSBzaGFkb3cgZ2xvYmFsIG9iamVjdC4KLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gd29y
a2VyQ29udGV4dENvbnN0cnVjdG9yID0gR2V0Q29uc3RydWN0b3IoVjhDbGFzc0luZGV4OjpXT1JL
RVJDT05URVhUKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gd29ya2VyQ29udGV4dENv
bnN0cnVjdG9yID0gR2V0Q29uc3RydWN0b3IoVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJD
T05URVhUKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4ganNXb3JrZXJDb250ZXh0ID0gU2Fm
ZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKHdvcmtlckNvbnRleHRDb25zdHJ1Y3Rvcik7CiAgICAg
Ly8gQmFpbCBvdXQgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCiAgICAgaWYgKGpzV29ya2VyQ29udGV4
dC5Jc0VtcHR5KCkpIHsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRU
YQogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIAotICAgIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvV29ya2VyQ29udGV4dCgpOwor
ICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVk
aWNhdGVkV29ya2VyQ29udGV4dCgpOwogICAgIGlmICh3b3JrZXJDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gV29ya2VyQ29udGV4dFRvVjhPYmplY3Qod29ya2VyQ29udGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5kZXggNWNlYzkwMi4uNmJl
NDk4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5k
aW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgK
QEAgLTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQga01lc3NhZ2VQb3J0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMjsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQorICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgg
PSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga0Rl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKwogICAgICAgICBzdGF0aWMgY29u
c3QgaW50IGtXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckludGVybmFs
RmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CiAKQEAg
LTQ3NywxMSArNDgwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIpOwogICAgICAgICBERUNMQVJF
X0NBTExCQUNLKEFic3RyYWN0V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAKKyAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihEZWRpY2F0ZWRXb3JrZXJDb250ZXh0T25tZXNzYWdl
KTsKKwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdvcmtlck9ubWVzc2FnZSk7
CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29uc3RydWN0b3IpOwogCiAgICAgICAg
IERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHRTZWxmKTsKLSAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJDb250ZXh0T25tZXNzYWdlKTsK
ICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0SW1wb3J0U2NyaXB0cyk7CiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dFNldFRpbWVvdXQpOwogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRDbGVhclRpbWVvdXQpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEzZTQ1
ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
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
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5LmgiCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisj
aW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBQ0NFU1NPUl9HRVRURVIoRGVkaWNhdGVk
V29ya2VyQ29udGV4dE9ubWVzc2FnZSkKK3sKKyAgICBJTkNfU1RBVFMoTCJET00uRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5vbm1lc3NhZ2UuX2dldCIpOworICAgIERlZGljYXRlZFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OkRFRElDQVRFRFdPUktFUkNPTlRF
WFQsIGluZm8uSG9sZGVyKCkpOworICAgIGlmICh3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSkg
eworICAgICAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250ZXh0LT5vbm1l
c3NhZ2UoKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OExpc3RlbmVyID0gbGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgIHJldHVybiB2OExpc3RlbmVyOwor
ICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCitBQ0NFU1NPUl9TRVRURVIo
RGVkaWNhdGVkV29ya2VyQ29udGV4dE9ubWVzc2FnZSkKK3sKKyAgICBJTkNfU1RBVFMoTCJET00u
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5vbm1lc3NhZ2UuX3NldCIpOworICAgIERlZGljYXRlZFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2
ZU9iamVjdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OkRFRElDQVRFRFdP
UktFUkNPTlRFWFQsIGluZm8uSG9sZGVyKCkpOworICAgIFY4V29ya2VyQ29udGV4dEV2ZW50TGlz
dGVuZXIqIG9sZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0
ZW5lcio+KHdvcmtlckNvbnRleHQtPm9ubWVzc2FnZSgpKTsKKyAgICBpZiAodmFsdWUtPklzTnVs
bCgpKSB7CisgICAgICAgIGlmICh3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSkgeworICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRMaXN0ZW5lci0+
Z2V0TGlzdGVuZXJPYmplY3QoKTsKKyAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3ko
aW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2xlYXIg
dGhlIGxpc3RlbmVyLgorICAgICAgICB3b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2UoMCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB3
b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5l
cih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpLCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICBpZiAobGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGlmIChvbGRMaXN0ZW5lcikgeworICAg
ICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlz
dGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgcmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a0RlZGlj
YXRlZFdvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHdvcmtlckNvbnRleHQtPnNldE9ubWVzc2FnZShsaXN0ZW5lcik7CisgICAgICAg
ICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIHZhbHVlLCBWOEN1c3Rv
bTo6a0RlZGljYXRlZFdvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
T1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggY2QwOGI0ZC4uMzQzNWUwMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC01Myw0
NSArNTMsNiBAQCBBQ0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpCiAgICAgcmV0dXJu
IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6V29ya2VyQ29udGV4dFRvVjhPYmplY3Qod29y
a2VyQ29udGV4dCk7CiB9CiAKLUFDQ0VTU09SX0dFVFRFUihXb3JrZXJDb250ZXh0T25tZXNzYWdl
KQotewotICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250ZXh0Lm9ubWVzc2FnZS5fZ2V0Iik7
Ci0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVY
VCwgaW5mby5Ib2xkZXIoKSk7Ci0gICAgaWYgKHdvcmtlckNvbnRleHQtPm9ubWVzc2FnZSgpKSB7
Ci0gICAgICAgIFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGlj
X2Nhc3Q8VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcio+KHdvcmtlckNvbnRleHQtPm9ubWVz
c2FnZSgpKTsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHY4TGlzdGVuZXIgPSBsaXN0
ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKLSAgICAgICAgcmV0dXJuIHY4TGlzdGVuZXI7Ci0g
ICAgfQotICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KLUFDQ0VTU09SX1NFVFRFUihX
b3JrZXJDb250ZXh0T25tZXNzYWdlKQotewotICAgIElOQ19TVEFUUyhMIkRPTS5Xb3JrZXJDb250
ZXh0Lm9ubWVzc2FnZS5fc2V0Iik7Ci0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xh
c3NJbmRleDo6V09SS0VSQ09OVEVYVCwgaW5mby5Ib2xkZXIoKSk7Ci0gICAgVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lciogb2xkTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOFdvcmtlckNvbnRl
eHRFdmVudExpc3RlbmVyKj4od29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpOwotICAgIGlmICh2
YWx1ZS0+SXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKHdvcmtlckNvbnRleHQtPm9ubWVzc2FnZSgp
KSB7Ci0gICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9s
ZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwotICAgICAgICAgICAgcmVtb3ZlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBvbGRWOExpc3RlbmVyLCBWOEN1c3RvbTo6a1dvcmtl
ckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDbGVh
ciB0aGUgbGlzdGVuZXIuCi0gICAgICAgIHdvcmtlckNvbnRleHQtPnNldE9ubWVzc2FnZSgwKTsK
LSAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5wcm94eSgpLT5maW5kT3JDcmVhdGVFdmVudExpc3Rl
bmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGZhbHNlLCBmYWxzZSk7Ci0g
ICAgICAgIGlmIChsaXN0ZW5lcikgewotICAgICAgICAgICAgaWYgKG9sZExpc3RlbmVyKSB7Ci0g
ICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9sZFY4TGlzdGVuZXIgPSBvbGRM
aXN0ZW5lci0+Z2V0TGlzdGVuZXJPYmplY3QoKTsKLSAgICAgICAgICAgICAgICByZW1vdmVIaWRk
ZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprV29y
a2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgd29ya2VyQ29udGV4dC0+c2V0T25tZXNzYWdlKGxpc3RlbmVyKTsKLSAgICAgICAgICAgIGNy
ZWF0ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgdmFsdWUsIFY4Q3VzdG9tOjprV29y
a2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIGJvb2wgc2luZ2xlU2hvdCkKIHsKICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4
dD4oVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhULCBhcmdzLkhvbGRlcigpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAppbmRleCA0MzdmNWJhLi40MjY2OGUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIFdvcmtlciogRXZlbnRUYXJnZXQ6OnRvV29ya2VyKCkKICAgICByZXR1cm4gMDsKIH0K
IAotV29ya2VyQ29udGV4dCogRXZlbnRUYXJnZXQ6OnRvV29ya2VyQ29udGV4dCgpCitEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkK
IHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IDczYTMyZTMuLmYwYzc5NGYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBYnN0cmFjdFdvcmtlcjsKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CisgICAgY2xhc3Mg
RGVkaWNhdGVkV29ya2VyQ29udGV4dDsKICAgICBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwog
ICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBFdmVudDsKQEAgLTQ4LDcgKzQ5LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgY2xhc3MgU2hhcmVkV29ya2VyOwogICAgIGNsYXNzIFdvcmtlcjsKLSAgICBjbGFzcyBXb3Jr
ZXJDb250ZXh0OwogICAgIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogICAgIGNsYXNzIFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkOwogCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgICAgICB2aXJ0dWFsIFdvcmtlciogdG9Xb3Jr
ZXIoKTsKLSAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKTsK
KyAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtl
ckNvbnRleHQoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRhYjg1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZUV2ZW50LmgiCisjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OjpEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQorICAgIDogV29ya2VyQ29udGV4dCh1
cmwsIHVzZXJBZ2VudCwgdGhyZWFkKQoreworfQorCitEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojp+
RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpCit7CisgICAgLy8gTm90aWZ5IHBhcmVudCB3b3JrZXIg
d2UgYXJlIGdvaW5nIGF3YXkuCisgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkud29y
a2VyQ29udGV4dERlc3Ryb3llZCgpOworfQorCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6
OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIHRocmVhZCgpLT53b3JrZXJPYmpl
Y3RQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2UsIGxpbmVO
dW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCAwLCBlYyk7Cit9CisKK3ZvaWQgRGVkaWNhdGVkV29ya2Vy
Q29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCog
cG9ydCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGlzQ2xvc2luZygpKQorICAgICAg
ICByZXR1cm47CisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9y
IHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgorICAgIE93blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IGNoYW5uZWwgPSBwb3J0ID8gcG9ydC0+ZGlzZW50YW5nbGUoZWMpIDogMDsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJv
eHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWwucmVsZWFzZSgp
KTsKK30KKwordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpkaXNwYXRjaE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0KQoreworICAg
IC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRocmVhZCBldmVudCBsb29wLCB0aGlzIHNob3Vs
ZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNsb3NpbmcuCisgICAgQVNTRVJUKCFpc0Nsb3Np
bmcoKSk7CisgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNz
YWdlLCAiIiwgIiIsIDAsIHBvcnQpOworCisgICAgaWYgKG1fb25tZXNzYWdlTGlzdGVuZXIuZ2V0
KCkpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3Vy
cmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vbm1lc3NhZ2VMaXN0ZW5lci0+aGFuZGxlRXZl
bnQoZXZ0LmdldCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBi
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3YzEzZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCisjZGVmaW5lIERlZGljYXRlZFdvcmtlckNvbnRleHRf
aAorCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IDogcHVibGljIFdvcmtlckNvbnRleHQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2Vy
Q29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IFdvcmtlclRocmVhZCogdGhyZWFkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERlZGljYXRlZFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHRocmVhZCkp
OworICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtlckNvbnRleHQoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOworCisg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgICAgIHZpcnR1YWwgRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCogdG9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQorICAgICAg
ICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAg
ICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlTGlzdGVuZXIgPSBldmVudExpc3RlbmVy
OyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b25tZXNzYWdlTGlzdGVuZXIuZ2V0KCk7IH0KKworICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2Fn
ZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0Pik7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmLCBXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25t
ZXNzYWdlTGlzdGVuZXI7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJi
ZWUzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V09SS0VSUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uLAorICAgICAgICBFeHRlbmRzRE9NR2xvYmFsT2JqZWN0LAorICAgICAgICBJc1dvcmtl
ckNvbnRleHQsCisgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAorICAgICAgICBOb1N0
YXRpY1RhYmxlcworICAgIF0gRGVkaWNhdGVkV29ya2VyQ29udGV4dCA6IFdvcmtlckNvbnRleHQg
eworCisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtP
cHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpCisgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25t
ZXNzYWdlOworCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDVm
Y2MwODAuLjk2NWMwYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAtNjUsOCAr
NjUsNiBAQCBXb3JrZXJDb250ZXh0OjpXb3JrZXJDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocgogV29ya2VyQ29udGV4dDo6fldvcmtlckNv
bnRleHQoKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWQtPnRocmVh
ZElEKCkpOwotCi0gICAgbV90aHJlYWQtPndvcmtlck9iamVjdFByb3h5KCkud29ya2VyQ29udGV4
dERlc3Ryb3llZCgpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXb3JrZXJDb250ZXh0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTE2MywyMiArMTYxLDYgQEAgdm9p
ZCBXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJp
bmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV29ya2VyQ29udGV4dDo6cG9z
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBwb3N0TWVzc2FnZShtZXNzYWdlLCAwLCBlYyk7Ci19Ci0KLXZvaWQgV29ya2VyQ29udGV4dDo6
cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBNZXNzYWdlUG9ydCogcG9ydCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKG1fY2xvc2luZykKLSAgICAgICAgcmV0dXJuOwot
ICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0
IHRvIHRoZSByZW1vdGUgY29udGV4dC4KLSAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBj
aGFubmVsID0gcG9ydCA/IHBvcnQtPmRpc2VudGFuZ2xlKGVjKSA6IDA7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm47Ci0gICAgbV90aHJlYWQtPndvcmtlck9iamVjdFByb3h5KCkucG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlLCBjaGFubmVsLnJlbGVhc2UoKSk7Ci19Ci0KIHZv
aWQgV29ya2VyQ29udGV4dDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQog
ewogICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVy
cy5maW5kKGV2ZW50VHlwZSk7CkBAIC0yNTUsMjMgKzIzNyw2IEBAIHZvaWQgV29ya2VyQ29udGV4
dDo6Y2xlYXJJbnRlcnZhbChpbnQgdGltZW91dElkKQogICAgIERPTVRpbWVyOjpyZW1vdmVCeUlk
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGltZW91dElkKTsKIH0KIAotdm9pZCBXb3JrZXJD
b250ZXh0OjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRy
PE1lc3NhZ2VQb3J0PiBwb3J0KQotewotICAgIC8vIFNpbmNlIGNsb3NlKCkgc3RvcHMgdGhlIHRo
cmVhZCBldmVudCBsb29wLCB0aGlzIHNob3VsZCBub3QgZXZlciBnZXQgY2FsbGVkIHdoaWxlIGNs
b3NpbmcuCi0gICAgQVNTRVJUKCFtX2Nsb3NpbmcpOwotICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0g
TWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZSwgIiIsICIiLCAwLCBwb3J0KTsKLQotICAgIGlm
IChtX29ubWVzc2FnZUxpc3RlbmVyLmdldCgpKSB7Ci0gICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRo
aXMpOwotICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7Ci0gICAgICAgIG1fb25t
ZXNzYWdlTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOwotICAgIH0KLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2Uo
KSwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotfQotCiB2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9y
dFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVy
VVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggMTZmNDNmZC4uNmEwYjg3ZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCkBAIC00OCwxNyArNDgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgV29ya2VyQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckNvbnRleHQ+
LCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWQq
IHRocmVhZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3Jr
ZXJDb250ZXh0KHVybCwgdXNlckFnZW50LCB0aHJlYWQpKTsKLSAgICAgICAgfQogCiAgICAgICAg
IHZpcnR1YWwgfldvcmtlckNvbnRleHQoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXb3Jr
ZXJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgV29y
a2VyQ29udGV4dCogdG9Xb3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQotCiAgICAgICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CkBAIC04OSwxMiArODMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBj
YWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIFdvcmtl
ck5hdmlnYXRvciogbmF2aWdhdG9yKCkgY29uc3Q7CiAKLSAgICAgICAgLy8gRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwg
TWVzc2FnZVBvcnQqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgICAgIHZvaWQgc2V0T25tZXNzYWdl
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29ubWVzc2FnZUxp
c3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgICAgICBFdmVudExpc3RlbmVyKiBvbm1lc3Nh
Z2UoKSBjb25zdCB7IHJldHVybiBtX29ubWVzc2FnZUxpc3RlbmVyLmdldCgpOyB9Ci0KICAgICAg
ICAgLy8gVGltZXJzCiAgICAgICAgIGludCBzZXRUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiosIGlu
dCB0aW1lb3V0KTsKICAgICAgICAgdm9pZCBjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCk7CkBA
IC0xMTAsNyArOTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKICAg
ICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVu
dExpc3RlbmVyczsgfQogCi0gICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2Rz
IGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkgaW4K
ICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4KQEAgLTEyMCw4ICsxMDcsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtlckNv
bnRleHQ+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OmRl
cmVmOwogCi0gICAgcHJpdmF0ZToKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdvcmtlckNvbnRl
eHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCopOworICAgICAgICBi
b29sIGlzQ2xvc2luZygpIHsgcmV0dXJuIG1fY2xvc2luZzsgfQorICAgIHByaXZhdGU6CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IGRl
cmVmKCk7IH0KQEAgLTE0MCw3ICsxMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IE93blB0cjxXb3JrZXJTY3JpcHRDb250cm9sbGVyPiBtX3NjcmlwdDsKICAgICAgICAgV29ya2Vy
VGhyZWFkKiBtX3RocmVhZDsKIAotICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1l
c3NhZ2VMaXN0ZW5lcjsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVy
czsKIAogICAgICAgICBib29sIG1fY2xvc2luZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbApp
bmRleCA3MDk0MTBhLi4yYmUyMmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC0y
OCw5ICsyOCwxMCBAQCBtb2R1bGUgdGhyZWFkcyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDb25kaXRpb25hbD1XT1JLRVJTLAotICAgICAgICBEZWxlZ2F0aW5nR2V0T3duUHJvcGVydHlT
bG90LAogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIERlbGVnYXRpbmdHZXRP
d25Qcm9wZXJ0eVNsb3QsCiAgICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAg
IElzV29ya2VyQ29udGV4dCwKICAgICAgICAgTGVnYWN5UGFyZW50PUpTV29ya2VyQ29udGV4dEJh
c2UsCiAgICAgICAgIE5vU3RhdGljVGFibGVzCiAgICAgXSBXb3JrZXJDb250ZXh0IHsKQEAgLTQ5
LDEyICs1MCw2IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgLy8gRGF0YWJhc2Ugb3BlbkRh
dGFiYXNlKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3Ry
aW5nIGRpc3BsYXlOYW1lLCBpbiB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgICAg
ICAvLyBEYXRhYmFzZVN5bmMgb3BlbkRhdGFiYXNlU3luYyhpbiBET01TdHJpbmcgbmFtZSwgaW4g
RE9NU3RyaW5nIHZlcnNpb24sIGluIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKTsKIAotCi0gICAgICAgIC8vIERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlCi0gICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGlu
IFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQpCi0gICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLSAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25tZXNzYWdlOwotCiAgICAgICAgIC8vIFRpbWVycwogICAgICAgICBbQ3VzdG9tXSBsb25nIHNl
dFRpbWVvdXQoaW4gVGltZW91dEhhbmRsZXIgaGFuZGxlciwgaW4gbG9uZyB0aW1lb3V0KTsKICAg
ICAgICAgLy8gW0N1c3RvbV0gbG9uZyBzZXRUaW1lb3V0KGluIERPTVN0cmluZyBjb2RlLCBpbiBs
b25nIHRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5k
ZXggYjZlMTY0Mi4uOWJhYzJjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCkBAIC0zMSwxMyArMzEsMTMgQEAKIAogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1By
b3h5LmgiCiAKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJHZW5lcmljV29y
a2VyVGFzay5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChzY3JpcHRDb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgICAgIFdvcmtl
ckNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0Q29u
dGV4dCk7CisgICAgICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIFJl
ZlB0cjxNZXNzYWdlUG9ydD4gcG9ydDsKICAgICAgICAgaWYgKG1fY2hhbm5lbCkgewogICAgICAg
ICAgICAgcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoKnNjcmlwdENvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAppbmRleCAwNzQ1MjI2Li41ZDU4ZWVhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzAsMTEgKzMwLDExIEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKIAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0
LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKIAogI2luY2x1ZGUgPHV0aWxpdHk+
CkBAIC0xMDEsOSArMTAxLDkgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQog
ewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgp
OwotICAgICAgICBtX3dvcmtlckNvbnRleHQgPSBXb3JrZXJDb250ZXh0OjpjcmVhdGUobV9zdGFy
dHVwRGF0YS0+bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCB0aGlzKTsK
KyAgICAgICAgbV93b3JrZXJDb250ZXh0ID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRl
KG1fc3RhcnR1cERhdGEtPm1fc2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwg
dGhpcyk7CiAgICAgICAgIGlmIChtX3J1bkxvb3AudGVybWluYXRlZCgpKSB7Ci0gICAgICAgICAg
ICAvLyBUaGUgd29ya2VyIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgdGhyZWFkIGhhZCBhIGNo
YW5jZSB0byBydW4uIFNpbmNlIHRoZSBjb250ZXh0IGRpZG4ndCBleGlzdCB5ZXQsIAorICAgICAg
ICAgICAgLy8gVGhlIHdvcmtlciB3YXMgdGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQg
YSBjaGFuY2UgdG8gcnVuLiBTaW5jZSB0aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LAogICAg
ICAgICAgICAgLy8gZm9yYmlkRXhlY3V0aW9uKCkgY291bGRuJ3QgYmUgY2FsbGVkIGZyb20gc3Rv
cCgpLgogICAgICAgICAgICBtX3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRp
b24oKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33397</attachid>
            <date>2009-07-23 17:57:54 -0700</date>
            <delta_ts>2009-07-24 12:02:53 -0700</delta_ts>
            <desc>Patch addressing dimich&apos;s comments</desc>
            <filename>y</filename>
            <type>text/plain</type>
            <size>64295</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmUwMzI4ZC4uMTk5Nzc4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMDktMDctMTggIERyZXcgV2lsc29u
ICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWZhY3RvciBXb3JrZXJDb250ZXh0IHRvIG1vdmUgRGVkaWNhdGVk
V29ya2VyLXNwZWNpZmljIEFQSXMgaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQyMAorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhcyB0aGUgZXhpc3RpbmcgdGVzdHMgYWxyZWFkeSBwcm92aWRlIHN1ZmZp
Y2llbnQgY292ZXJhZ2UgKHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHdpdGggbm8gbmV3IGZ1
bmN0aW9uYWxpdHkpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICBB
ZGRlZCBKU0Rlcml2ZWRXb3JrZXJDb250ZXh0LmNwcAorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJDb250ZXh0IGZpbGVzCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJDb250ZXh0IGZp
bGVzCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2Vy
Q29udGV4dCBmaWxlcworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICBBZGRlZCBEZXJp
dmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgRGVy
aXZlZFdvcmtlckNvbnRleHQgZmlsZXMKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGZ1bmN0aW9u
IGZvciBvbm1lc3NhZ2UgZXZlbnQgaGFuZGxlci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICBTdXBwb3J0
cyBjb252ZXJzaW9uIHRvIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmspOgor
ICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgbWFyayBoYW5kbGluZyBpbnRvIERlZGljYXRlZFdvcmtl
ckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIEFkZGVkIGFwcHJvcHJpYXRlIGNhc3RzIHRvIERlZGljYXRlZFdvcmtlckNv
bnRleHQgZm9yIHBvc3RNZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgTWFudWFsbHkgc2V0cyB1cCB0aGUgcHJv
dG90eXBlIGNoYWluIGZvciB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIENoYW5nZWQgc3BlY2lhbCBjYXNl
IGNvZGUgZm9yIFdvcmtlckNvbnRleHQgdG8gYmUgdHJpZ2dlcmVkIGJ5IG5ldyBJc1dvcmtlckNv
bnRleHQgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICBDaGFuZ2VkIGhhcmQtY29kZWQgdGVzdHMgZm9yIFdvcmtlckNvbnRl
eHQgdG8gc3VwcG9ydCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTU9iamVjdHNJbmNsdWRlLmg6CisgICAgICAgIEFkZGVkIERlZGljYXRlZFdvcmtlckNv
bnRleHQuaAorICAgICAgICAqIGJpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3Bw
OgorICAgICAgICBBZGRlZCBWOERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisgICAgICAgICog
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3Jh
cHBlcjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICBBZGRlZCBjb2RlIHRvIHJlc2VydmUgZXh0cmEg
ZmllbGRzIGZvciBWOERlZGljYXRlZFdvcmtlckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhJbmRleC5jcHA6CisgICAgICAgIE5vdyBpbmNsdWRlcyBWOERlZGljYXRlZFdvcmtlckNv
bnRleHQuaCBpbiBhZGRpdGlvbiB0byBWOFdvcmtlckNvbnRleHQuaAorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4SW5kZXguaDoKKyAgICAgICAgQWRkZWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dCBh
cyBhIG5vbi1ub2RlIHdyYXBwZXIgdHlwZS4KKyAgICAgICAgUmVtb3ZlZCBXT1JLRVJDT05URVhU
IGFzIGEgdmFsaWQgdGVtcGxhdGUgdHlwZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKToKKyAgICAgICAgQ3JlYXRlcyBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGluc3RlYWQgb2YgV29ya2VyQ29udGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6RXZlbnRUYXJnZXRUb1Y4T2Jq
ZWN0KToKKyAgICAgICAgUmV0dXJucyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGluc3RlYWQgb2Yg
V29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eTo6cmV0cmlldmUpOgorICAgICAgICBSZWZhY3RvcmVkIHRvIGRlYWwgd2l0aCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0
V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21C
aW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgY29kZSBm
cm9tIFY4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09S
X0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICBN
b3ZlZCBvbm1lc3NhZ2UgY29kZSB0byBWOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
VGFyZ2V0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5oOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICBNb3ZlZCBEZWRpY2F0ZWRXb3JrZXItb25seSBBUElzIGZyb20gV29ya2Vy
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGlj
YXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6fkRlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICBNb3ZlZCBEZWRpY2F0
ZWRXb3JrZXItb25seSBBUElzIGZyb20gV29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6
OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6Om9ubWVzc2FnZSk6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6
On5Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgTW92ZWQgY29kZSB0aGF0IG5vdGlmaWVzIHBhcmVu
dCB0aGF0IHdvcmtlciBpcyBjbG9zaW5nIGRvd24gaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29udGV4dDo6aXNDbG9zaW5nKToKKyAgICAgICAgRXhwb3NlZCBjbG9zaW5nIGZsYWcg
YXMgYW4gQVBJIHNvIGRlcml2ZWQgY2xhc3NlcyBjYW4gYWNjZXNzIGl0LgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgQ2FsbHMgaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IHRvIGhhbmRsZSBtZXNzYWdlLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAg
Q3JlYXRlcyBhIERlZGljYXRlZFdvcmtlckNvbnRleHQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cyB1
cC4KKwogMjAwOS0wNy0yMyAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCmluZGV4IDI3
ODg2MTYuLjE0NTUwNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisr
KyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVk
ZSAiSlNEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiSlNEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5j
bHVkZSAiSlNEYXRhR3JpZENvbHVtbkxpc3QuY3BwIgorI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5jcHAiCiAjaW5jbHVkZSAiSlNE
b2N1bWVudEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50VHlwZS5jcHAiCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggM2Y1M2NhYS4uMjk3Nzc4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNzgs
NiArNzgsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBDb3VudGVyIFwKICAgICBEYXRhR3JpZENv
bHVtbiBcCiAgICAgRGF0YUdyaWRDb2x1bW5MaXN0IFwKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0IFwKICAgICBET01BcHBsaWNhdGlvbkNhY2hlIFwKICAgICBET01Db3JlRXhjZXB0aW9uIFwK
ICAgICBET01JbXBsZW1lbnRhdGlvbiBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2NDgyZGQyLi40OTBiZGNhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTI1MSw2ICsyNTEsNyBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvcGx1Z2lu
cy9QbHVnaW4uaWRsIFwKIAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2luQXJyYXkuaWRsIFwKIAlXZWJD
b3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5pZGwgXAogCVdlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRs
IFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsIFwKQEAgLTIzMjksNiArMjMzMCw3IEBAIHdlYmNvcmVfYnVpbHRfbm9zb3Vy
Y2VzICs9IFwKIAogd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb25zdHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb25zdHJ1
Y3Rvci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIFwK
QEAgLTIzNDEsNiArMjM0Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wYWdl
L1dvcmtlck5hdmlnYXRvci5oIFwKIAlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3Bw
IFwKIAlXZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBcCisJV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oIFwKIAlXZWJDb3JlL3dvcmtlcnMvR2VuZXJpY1dvcmtlclRhc2suaCBc
CiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgXAogCVdlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGI5ZDNlYmUuLmI3Zjg2ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMzQsNiArMzM0LDcgQEAKICAgICAg
ICAgICAgICdzdmcvU1ZHWm9vbUFuZFBhbi5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9TVkdab29t
RXZlbnQuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCcsCisg
ICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsJywKICAgICAgICAgICAgICd3b3JrZXJzL1dv
cmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwnLApAQCAt
NDM0LDYgKzQzNSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZENvbHVt
bkxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0
YVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291
cmNlLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RvY3VtZW50RnJhZ21lbnRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0
b20uY3BwJywKQEAgLTYwNyw2ICs2MDksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NUGFyc2VyQ29uc3RydWN0
b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwJywKQEAgLTMyOTQsNiArMzI5Nyw4IEBACiAgICAgICAgICAgICAnc3ZnL1N5bmNocm9u
aXphYmxlVHlwZVdyYXBwZXIuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtl
ci5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCcsCisgICAgICAg
ICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCcsCisgICAgICAgICAgICAn
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMv
R2VuZXJpY1dvcmtlclRhc2suaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9TaGFyZWRXb3JrZXIu
Y3BwJywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5oJywKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGNhNGEzNTUu
LjkxOWZkZDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMjM3OCw2ICsyMzc4LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1dPUktFUlM9MSkgewogICAgIElETF9CSU5ESU5HUyArPSBcCiAgICAgICAgIHBhZ2UvV29ya2Vy
TmF2aWdhdG9yLmlkbCBcCiAgICAgICAgIHdvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsIFwKKyAg
ICAgICAgd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBcCiAgICAgICAgIHdvcmtl
cnMvV29ya2VyLmlkbCBcCiAgICAgICAgIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgXAogICAg
ICAgICB3b3JrZXJzL1dvcmtlckxvY2F0aW9uLmlkbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggNzc3MmJiOC4uNzAwYjA3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC0yMDAyLDYgKzIwMDIsNTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0K
IAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiDQorCQkJCT4N
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0K
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVy
bmFsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJ
CQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJ
CQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkv
Pg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3Jl
XERlcml2ZWRTb3VyY2VzXEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RvY3VtZW50LmNwcCINCiAJCQkJ
Pg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yNDAxOSw2ICsyNDA2NywxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJz
XERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd29ya2Vyc1xEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llx3b3JrZXJzXEdlbmVyaWNXb3JrZXJUYXNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAt
MjgzNTQsNiArMjg0MTAsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRGVkaWNhdGVkV29ya2VyQ29udGV4
dEN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEb2N1bWVudEN1c3RvbS5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkBAIC0yODc1OCwxMCArMjg4MTgsNiBAQAogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUN
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDdXN0b20uY3BwIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhNDA4NmExLi5iMGI4NWE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjU5LDYgKzY1OSwxMiBAQAogCQk0MTVCN0M1ODBGRjU5
OEU2MDA2NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M1NTBGRjU5OEU2MDA2Nzcw
RjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTQxNUI3QzU5MEZG
NTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M1NjBGRjU5OEU2MDA2NzcwRjcg
LyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwICovOyB9OwogCQk0MTVCN0M2MzBGRjVBNzY3MDA2
NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpT
U2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNDE2MkE0NTAxMDExNDVBRTAwREZG
M0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckNvbnRleHQuY3BwICovOyB9OworCQk0MTYyQTQ1MTEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NEUxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdv
cmtlckNvbnRleHQuaCAqLzsgfTsKKwkJNDE2MkE0NTIxMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5pZGwgKi87IH07CisJCTQxNjJBNDU0MTAxMTQ1RTMwMERGRjNFRCAvKiBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTMxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVk
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi87IH07CisJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNF
RCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTUxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi87IH07CisJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNF
RCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJNDE2RTc1QkUwRURGOEZENzAwMzYwRTFEIC8q
IFNjcmlwdENhbGxTdGFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE2RTc1QkMwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICov
OyB9OwogCQk0MTZFNzVCRjBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU3NUJEMEVE
RjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovOyB9OwogCQk0MTZFNzVDQjBF
REY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbEZyYW1lLmggKi87IH07CkBAIC01NjIxLDYgKzU2MjcsMTIgQEAKIAkJNDE1QjdDNTUw
RkY1OThFNjAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNUI3QzU2MEZGNTk4RTYwMDY3NzBG
NyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNUI3QzYyMEZGNUE3NjcwMDY3NzBGNyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhcmVkV29ya2Vy
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2MkE0NEQxMDEx
NDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHBhdGgg
PSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Lmg7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGlj
YXRlZFdvcmtlckNvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERlZGljYXRlZFdv
cmtlckNvbnRleHQuaWRsOyBwYXRoID0gd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE2MkE0NTMxMDExNDVFMzAwREZGM0VE
IC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyog
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtl
ckNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUJDMEVE
RjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbFN0YWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1QzkwRURGOTBDNzAwMzYwRTFEIC8qIFNj
cmlwdENhbGxGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRD
YWxsRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5MTEsNiArOTkyMyw5
IEBACiAJCTJFNDM0NjMxMEY1NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi8sCisJCQkJNDE2MkE0NEUxMDExNDVB
RTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuaCAqLywKKwkJCQk0MTYyQTQ0RjEw
MTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5pZGwgKi8sCiAJCQkJNDFF
MUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLywKIAkJCQk0MUUx
QjFDQjBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCAqLywKIAkJCQk0MUUxQjFD
QzBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaWRsICovLApAQCAtMTM2MDQsNiAr
MTM2MTksNyBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTYyQTQ1MzEwMTE0NUUz
MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQlC
QzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTlF
RjQ1NjBBMUI5NTdEMDAzMzJCNjMgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwICovLAogCQkJCTkzQkE1OUIxMEYyQUE1RkUwMDhFOEU5OSAvKiBKU0NEQVRBU2VjdGlvbkN1
c3RvbS5jcHAgKi8sCkBAIC0xNDAxOCw2ICsxNDAzNCw4IEBACiAJCUUxQzhCRTRCMEU4QkQwRDEw
MDY0Q0I3RCAvKiBUaHJlYWRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcCAqLywKKwkJCQk0MTYyQTQ1NjEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmggKi8sCiAJCQkJNDE4Rjg4MDIwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxOEY4ODAzMEZGOTU3QUUwMDgwRjA0NSAvKiBK
U0Fic3RyYWN0V29ya2VyLmggKi8sCiAJCQkJNDFEMDdBN0MwRkY5MzVDQTAwOTVFRENFIC8qIEpT
U2hhcmVkV29ya2VyLmNwcCAqLywKQEAgLTE3MDIxLDYgKzE3MDM5LDggQEAKIAkJCQkxNUM3NzA4
RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTVDNzcwOTMxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTVDNzcwQTYxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZhbGlkaXR5U3RhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYz
RUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzc0
REEzNzEwMTNGM0Y3MDA3OTg3QUQgLyogUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NzREQTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzdDNENERjEwMTRFOUY2MDBCOUFFNDIgLyogUGxhY2Vob2xkZXJEb2N1bWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNzEzOSw2ICsxNzE1OSw3IEBACiAJCQkJNDFFMUIxRDIwRkY1OTg2OTAw
NTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNDFFMUIx
RDUwRkY1OTg2OTAwNTc2QjNCIC8qIFNoYXJlZFdvcmtlci5pZGwgaW4gUmVzb3VyY2VzICovLAog
CQkJCTE1Qzc3MDhDMTAwRDNDNkEwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmlkbCBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJNDE2MkE0NTIxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtl
ckNvbnRleHQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQkyRUNGN0FFMzEwMTYyQjU4MDA0MjdE
RTcgLyogRXJyb3JFdmVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMTkwNTcsNiArMTkwNzgsOSBAQAog
CQkJCTE1Qzc3MDhFMTAwRDNDNkIwMDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5U3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwQTUxMDBENDFDRDAwNUJBMjY3IC8qIERPTVZh
bGlkaXR5U3RhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTYyQTQ1MDEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTYy
QTQ1NDEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxNjJBNDU3MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGlj
YXRlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NERBMzgxMDEzRjNG
NzAwNzk4N0FEIC8qIFJHQkNvbG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzREQTQ4MTAx
M0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3N0M0
Q0UwMTAxNEU5RjYwMEI5QUU0MiAvKiBQbGFjZWhvbGRlckRvY3VtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RlZGljYXRlZFdvcmtlckNv
bnRleHRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWE2
YTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dm9pZCBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6Om1hcmsoKQoreworICAgIEJhc2U6Om1hcmso
KTsKKworICAgIG1hcmtJZk5vdE51bGwoaW1wbCgpLT5vbm1lc3NhZ2UoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldC5jcHAKaW5kZXggM2RhYjZmNi4uOTcxN2YwOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
IgorI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTV29y
a2VyLmgiCi0jaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyLmgi
Ci0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCkBAIC0xMDAsNyArMTAwLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhl
YywgRXZlbnRUYXJnZXQqIHRhcmdldCkKICAgICBpZiAoV29ya2VyKiB3b3JrZXIgPSB0YXJnZXQt
PnRvV29ya2VyKCkpCiAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIHdvcmtlcik7CiAKLSAgICBp
ZiAoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHRhcmdldC0+dG9Xb3JrZXJDb250ZXh0
KCkpCisgICAgaWYgKERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJn
ZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gdG9KU0RPTUds
b2JhbE9iamVjdCh3b3JrZXJDb250ZXh0KTsKICNlbmRpZgogCkBAIC0xMzcsNyArMTM3LDcgQEAg
RXZlbnRUYXJnZXQqIHRvRXZlbnRUYXJnZXQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogCiAjaWYgRU5B
QkxFKFdPUktFUlMpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV29ya2VyKQotICAgIENP
TlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdvcmtlckNvbnRleHQpCisgICAgQ09OVkVSVF9UT19FVkVO
VF9UQVJHRVQoRGVkaWNhdGVkV29ya2VyQ29udGV4dCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNI
QVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0
b20uY3BwCmluZGV4IDQ0MGJiN2EuLjZhNzYwMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTU5LDcgKzU5LDYgQEAgdm9pZCBKU1dvcmtl
ckNvbnRleHQ6Om1hcmsoKQogICAgIG1hcmtET01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIGlt
cGwoKS0+b3B0aW9uYWxOYXZpZ2F0b3IoKSk7CiAKICAgICBtYXJrSWZOb3ROdWxsKGltcGwoKS0+
b25lcnJvcigpKTsKLSAgICBtYXJrSWZOb3ROdWxsKGltcGwoKS0+b25tZXNzYWdlKCkpOwogCiAg
ICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVy
c01hcDsKICAgICB0eXBlZGVmIFdvcmtlckNvbnRleHQ6Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVy
VmVjdG9yOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggYmNmMTA3Yi4uZmFmNDMyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMSwxMCArMzEsOSBAQAogI2luY2x1ZGUgIldv
cmtlclNjcmlwdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJPYmpl
Y3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGludGVycHJl
dGVyL0ludGVycHJldGVyLmg+CkBAIC03MSwxMSArNzAsMTUgQEAgdm9pZCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICAvLyBFeHBsaWNpdGx5IHByb3RlY3QgdGhlIGds
b2JhbCBvYmplY3QncyBwcm90b3R5cGUgc28gaXQgaXNuJ3QgY29sbGVjdGVkCiAgICAgLy8gd2hl
biB3ZSBhbGxvY2F0ZSB0aGUgZ2xvYmFsIG9iamVjdC4gKE9uY2UgdGhlIGdsb2JhbCBvYmplY3Qg
aXMgZnVsbHkKICAgICAvLyBjb25zdHJ1Y3RlZCwgaXQgY2FuIG1hcmsgaXRzIG93biBwcm90b3R5
cGUuKQotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHByb3RvdHlwZVN0cnVjdHVyZSA9IEpTV29ya2Vy
Q29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKTsKLSAgICBQcm90ZWN0
ZWRQdHI8SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlPiBwcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKHByb3RvdHlwZVN0cnVjdHVyZS5y
ZWxlYXNlKCkpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHdvcmtlckNvbnRleHRQcm90b3R5cGVT
dHJ1Y3R1cmUgPSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051
bGwoKSk7CisgICAgUHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gd29ya2Vy
Q29udGV4dFByb3RvdHlwZSA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRl
eHRQcm90b3R5cGUod29ya2VyQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS5yZWxlYXNlKCkpOwog
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0OjpjcmVh
dGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKLSAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyID0gbmV3
IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2VyQ29udGV4dChzdHJ1Y3R1cmUucmVsZWFzZSgp
LCBtX3dvcmtlckNvbnRleHQpOworICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFkZCBTaGFyZWRXb3Jr
ZXJDb250ZXh0LCBnZW5lcmF0ZSB0aGUgY29ycmVjdCB3cmFwcGVyIGhlcmUuCisgICAgUmVmUHRy
PFN0cnVjdHVyZT4gZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTRGVkaWNh
dGVkV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHdvcmtlckNvbnRleHRQ
cm90b3R5cGUpOworICAgIFByb3RlY3RlZFB0cjxKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90
b3R5cGU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQo
KSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UHJvdG90eXBlKGRlZGljYXRlZENvbnRleHRQcm90
b3R5cGVTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1
cmUgPSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVyZShkZWRpY2F0ZWRD
b250ZXh0UHJvdG90eXBlKTsKKworICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXIgPSBuZXcgKG1f
Z2xvYmFsRGF0YS5nZXQoKSkgSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KHN0cnVjdHVyZS5yZWxl
YXNlKCksIHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihtX3dvcmtlckNvbnRl
eHQpKTsKIH0KIAogU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI4MGVjZmEuLmM3YTc0ZTAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjQ2LDcgKzY0Niw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6
XG4iKTsKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90KTtcbiIp
OwotICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IikgeworICAg
IH0gZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4
dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgSlNDOjpKU0dsb2JhbERhdGEqKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKQEAgLTg5Niw3ICs4
OTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICB9IGVsc2lmICgkaW50
ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIpIHsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInZvaWQqICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6b3BlcmF0b3IgbmV3
KHNpemVfdCBzaXplLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpXG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdsb2JhbERhdGEtPmhlYXAuYWxsb2NhdGUoc2l6ZSk7XG4iKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDQyYjljMGYuLjI0YzBlMWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDMz
LDcgKzQzMyw3IEBAIEVORAogICAgIC8vIGNvbnRleHQgb2YgdGhlIERPTVdpbmRvdyBhbmQgbm90
IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIuCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6
Z2V0Q29uc3RydWN0b3IodHlwZSwgd2luZG93KTsKIEVORAotICAgIH0gZWxzaWYgKCRjbGFzc0lu
ZGV4IGVxICJXT1JLRVJDT05URVhUIikgeworICAgIH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJE
RURJQ0FURURXT1JLRVJDT05URVhUIiBvciAkY2xhc3NJbmRleCBlcSAiV09SS0VSQ09OVEVYVCIp
IHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgi
fSA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICByZXR1
cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRyaWV2ZSgpLT5HZXRDb25zdHJ1Y3Rv
cih0eXBlKTsKQEAgLTIwNDEsNyArMjA0MSwxMiBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVl
CiAgICAgICAgIHJldHVybiAicmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50TGlzdGVu
ZXJUb1Y4T2JqZWN0KCR2YWx1ZSkiOwogICAgIH0KIAotICAgIGlmICgkdHlwZSBlcSAiV29ya2Vy
Q29udGV4dCIgb3IgJHR5cGUgZXEgIldvcmtlckxvY2F0aW9uIiBvciAkdHlwZSBlcSAiV29ya2Vy
TmF2aWdhdG9yIikgeworICAgIGlmICgkdHlwZSBlcSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCIg
b3IgJHR5cGUgZXEgIldvcmtlckNvbnRleHQiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7Ildv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOworICAgICAgICByZXR1cm4gInJldHVy
biBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OldvcmtlckNvbnRleHRUb1Y4T2JqZWN0KCR2
YWx1ZSkiOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAiV29ya2VyTG9jYXRpb24iIG9yICR0
eXBlIGVxICJXb3JrZXJOYXZpZ2F0b3IiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7Ildvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIn0gPSAxOwogICAgICAgICBteSAkY2xhc3NJbmRleCA9
IHVjKCR0eXBlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3Rz
SW5jbHVkZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCmluZGV4
IDg2ZTU3NTQuLjMyNWJhNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2Jq
ZWN0c0luY2x1ZGUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRl
LmgKQEAgLTE5OCw2ICsxOTgsNyBAQAogI2VuZGlmIC8vIFNWRwogCiAjaWYgRU5BQkxFKFdPUktF
UlMpCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
ci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlv
bi5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbElu
T25lLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAK
aW5kZXggYzI5NDFjMy4uNTM3MzhjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9E
ZXJpdmVkU291cmNlc0FsbEluT25lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2
ZWRTb3VyY2VzQWxsSW5PbmUuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiYmluZGlu
Z3MvVjhEYXRhYmFzZS5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEYXRhR3JpZENvbHVtbi5j
cHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEYXRhR3JpZENvbHVtbkxpc3QuY3BwIgorI2luY2x1
ZGUgImJpbmRpbmdzL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAiCiAjaW5jbHVkZSAiYmlu
ZGluZ3MvVjhEb2N1bWVudC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEb2N1bWVudEZyYWdt
ZW50LmNwcCIKICNpbmNsdWRlICJiaW5kaW5ncy9WOERvY3VtZW50VHlwZS5jcHAiCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZGY1ZDM1Ni4uNTJiNjllYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMzkwLDYgKzM5MCwxNCBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENs
YXNzSW5kZXg6OlY4VwogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFY4Q2xhc3NJ
bmRleDo6REVESUNBVEVEV09SS0VSQ09OVEVYVDogeworICAgICAgICAvLyBSZXNlcnZlIGludGVy
bmFsIGZpZWxkcyBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0
YW5jZVRlbXBsYXRlKCk7CisgICAgICAgIEFTU0VSVChpbnN0YW5jZVRlbXBsYXRlLT5JbnRlcm5h
bEZpZWxkQ291bnQoKSA9PSBWOEN1c3RvbTo6a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50KTsKKyAgICAgICAgaW5zdGFuY2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4
Q3VzdG9tOjprRGVkaWNhdGVkV29ya2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgVjhDbGFzc0luZGV4OjpXT1JLRVI6IHsKICAg
ICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVu
dCBsaXN0ZW5lcnMuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3Rh
bmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC00MDEsOSAr
NDA5LDExIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOERPTVdyYXBw
ZXI6OmdldFRlbXBsYXRlKFY4Q2xhc3NJbmRleDo6VjhXCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6
OldPUktFUkNPTlRFWFQ6IHsKICAgICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBm
aWVsZCBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRl
bXBsYXRlKCk7Ci0gICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3Vu
dChWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBB
U1NFUlQoaW5zdGFuY2VUZW1wbGF0ZS0+SW50ZXJuYWxGaWVsZENvdW50KCkgPT0gVjhDdXN0b206
OmtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCk7CisgICAgICAgIGluc3RhbmNlVGVt
cGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRNaW5p
bXVtSW50ZXJuYWxGaWVsZENvdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAjZW5kaWYg
Ly8gV09SS0VSUwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBvYmplY3RzIGFyZSBjcmVhdGVkIGZy
b20gSmF2YVNjcmlwdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5kZXguY3BwCmluZGV4IGFmYTgxY2IuLjhiNjVl
ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmNwcApAQCAtNTksOCArNTksOCBAQAogI2luY2x1ZGUg
IlY4Q1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiVjhDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiVjhDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUgIlY4Q1NTVmFyaWFibGVz
UnVsZS5oIg0KLSNpbmNsdWRlICJWOERhdGFHcmlkQ29sdW1uLmgiDQorI2luY2x1ZGUgIlY4Q1NT
VmFyaWFibGVzUnVsZS5oIgorI2luY2x1ZGUgIlY4RGF0YUdyaWRDb2x1bW4uaCIKICNpbmNsdWRl
ICJWOERhdGFHcmlkQ29sdW1uTGlzdC5oIgogI2luY2x1ZGUgIlY4RGF0YWJhc2UuaCIKICNpbmNs
dWRlICJWOERvY3VtZW50LmgiCkBAIC0yMDYsOSArMjA2LDkgQEAKICNpbmNsdWRlICJWOFhTTFRQ
cm9jZXNzb3IuaCIKICNpbmNsdWRlICJWOFJHQkNvbG9yLmgiCiAKLSNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpDQotI2luY2x1ZGUgIlY4U3RvcmFnZS5oIg0KLSNpbmNsdWRlICJWOFN0b3JhZ2VFdmVu
dC5oIg0KKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCisjaW5jbHVkZSAiVjhTdG9yYWdlLmgiCisj
aW5jbHVkZSAiVjhTdG9yYWdlRXZlbnQuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNWR19BTklN
QVRJT04pCkBAIC0zNzIsNiArMzcyLDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1
ZGUgIlY4QWJzdHJhY3RXb3JrZXIuaCIKKyNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJWOFdvcmtlci5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIlY4V29ya2VyTG9jYXRpb24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhJbmRleC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXgg
NTdmNDQ2MC4uMjJiOGU5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKQEAgLTcyLDYgKzcyLDcgQEAg
dHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRl
bXBsYXRlRmFjdG9yeSkoKTsKIAogI2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVT
KFYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoQUJTVFJBQ1RXT1JL
RVIsIEFic3RyYWN0V29ya2VyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIFYoREVESUNBVEVEV09SS0VSQ09OVEVYVCwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCkgICAg
ICAgICAgICAgICAgICAgXAogICAgIFYoV09SS0VSQ09OVEVYVCwgV29ya2VyQ29udGV4dCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoV09SS0VSTE9DQVRJT04s
IFdvcmtlckxvY2F0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFYoV09SS0VSTkFWSUdBVE9SLCBXb3JrZXJOYXZpZ2F0b3IpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggNzgzZWViNS4u
MGM4YjExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4
ZWN1dGlvblByb3h5LmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmgiCiAKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRE9NQ29yZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKQEAgLTE2NSw3ICsxNjYsNyBAQCB2b2lkIFdvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBpbXBsaWNpdFByb3RvU3RyaW5nID0gdjg6OlN0cmluZzo6TmV3KCJf
X3Byb3RvX18iKTsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBKUyBvYmplY3QgYW5kIHVzZSBpdCBh
cyB0aGUgcHJvdG90eXBlIGZvciB0aGUgc2hhZG93IGdsb2JhbCBvYmplY3QuCi0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IEdldENvbnN0cnVj
dG9yKFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IEdldENvbnN0cnVjdG9yKFY4Q2xhc3NJ
bmRleDo6REVESUNBVEVEV09SS0VSQ09OVEVYVCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGpzV29ya2VyQ29udGV4dCA9IFNhZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh3b3JrZXJDb250
ZXh0Q29uc3RydWN0b3IpOwogICAgIC8vIEJhaWwgb3V0IGlmIGFsbG9jYXRpb24gZmFpbGVkLgog
ICAgIGlmIChqc1dvcmtlckNvbnRleHQuSXNFbXB0eSgpKSB7CkBAIC0xNzQsNyArMTc1LDcgQEAg
dm9pZCBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQoKQog
ICAgIH0KIAogICAgIC8vIFdyYXAgdGhlIG9iamVjdC4KLSAgICBWOERPTVdyYXBwZXI6OnNldERP
TVdyYXBwZXIoanNXb3JrZXJDb250ZXh0LCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRl
eDo6V09SS0VSQ09OVEVYVCksIG1fd29ya2VyQ29udGV4dCk7CisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKGpzV29ya2VyQ29udGV4dCwgVjhDbGFzc0luZGV4OjpUb0ludChWOENsYXNz
SW5kZXg6OkRFRElDQVRFRFdPUktFUkNPTlRFWFQpLCBtX3dvcmtlckNvbnRleHQpOwogCiAgICAg
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QobV93b3JrZXJDb250ZXh0LCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGpzV29ya2VyQ29udGV4dCkpOwogICAgIG1f
d29ya2VyQ29udGV4dC0+cmVmKCk7CkBAIC0yMDcsNyArMjA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6VG9WOE9iamVjdChWOENsYXNzSW5k
ZXg6OlY4V3IKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0g
ICAgaWYgKHR5cGUgPT0gVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhUKQorICAgIGlmICh0eXBl
ID09IFY4Q2xhc3NJbmRleDo6REVESUNBVEVEV09SS0VSQ09OVEVYVCkKICAgICAgICAgcmV0dXJu
IFdvcmtlckNvbnRleHRUb1Y4T2JqZWN0KHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihpbXBs
KSk7CiAKICAgICBpZiAodHlwZSA9PSBWOENsYXNzSW5kZXg6OldPUktFUiB8fCB0eXBlID09IFY4
Q2xhc3NJbmRleDo6WE1MSFRUUFJFUVVFU1QpIHsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpFdmVudFRhcmdldFRv
VjhPYmplY3QoRXZlbnRUYQogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gdjg6Ok51
bGwoKTsKIAotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvV29y
a2VyQ29udGV4dCgpOworICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQg
PSB0YXJnZXQtPnRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogICAgIGlmICh3b3JrZXJDb250
ZXh0KQogICAgICAgICByZXR1cm4gV29ya2VyQ29udGV4dFRvVjhPYmplY3Qod29ya2VyQ29udGV4
dCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5k
ZXggZmQ4ZmYxNC4uODg1YTIxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgKQEAgLTEyMyw3ICsxMjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQga1dvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDA7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNv
bnRleHRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJDb250ZXh0TWluaW11bUlu
dGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVl
c3RDYWNoZUluZGV4ID0ga1dvcmtlckNvbnRleHRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRGVkaWNhdGVkV29ya2VyQ29udGV4dEludGVy
bmFsRmllbGRDb3VudCA9IGtXb3JrZXJDb250ZXh0TWluaW11bUludGVybmFsRmllbGRDb3VudCAr
IDE7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBrQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2Fj
aGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQga0Fic3RyYWN0V29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0Rl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKQEAgLTQ4MSwxMiArNDg0LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdv
cmtlckFkZEV2ZW50TGlzdGVuZXIpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0
V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CiAKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUihEZWRpY2F0ZWRXb3JrZXJDb250ZXh0T25tZXNzYWdlKTsKKwogICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SKFdvcmtlck9ubWVzc2FnZSk7CiAgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soV29ya2VyQ29uc3RydWN0b3IpOwogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHRTZWxmKTsKICAgICAgICAgREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUihXb3JrZXJDb250ZXh0T25lcnJvcik7Ci0gICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoV29ya2VyQ29udGV4dE9ubWVzc2FnZSk7CiAgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soV29ya2VyQ29udGV4dEltcG9ydFNjcmlwdHMpOwogICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFdvcmtlckNvbnRleHRTZXRUaW1lb3V0KTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhXb3JrZXJDb250ZXh0Q2xlYXJUaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxM2U0NWUKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRD
dXN0b20uY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgor
CisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4UHJveHku
aCIKKyNpbmNsdWRlICJWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQUNDRVNTT1JfR0VUVEVSKERlZGljYXRlZFdvcmtlckNvbnRleHRPbm1l
c3NhZ2UpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQub25t
ZXNzYWdlLl9nZXQiKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVkV29ya2VyQ29u
dGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigp
KTsKKyAgICBpZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAgVjhXb3Jr
ZXJDb250ZXh0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyKj4od29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpOworICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5l
ck9iamVjdCgpOworICAgICAgICByZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKERlZGljYXRlZFdvcmtlckNv
bnRleHRPbm1lc3NhZ2UpCit7CisgICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNv
bnRleHQub25tZXNzYWdlLl9zZXQiKTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3Jr
ZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVk
V29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhULCBpbmZv
LkhvbGRlcigpKTsKKyAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5l
ciA9IHN0YXRpY19jYXN0PFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250
ZXh0LT5vbm1lc3NhZ2UoKSk7CisgICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBp
ZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0
KCk7CisgICAgICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9s
ZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVlc3RDYWNo
ZUluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lci4KKyAg
ICAgICAgd29ya2VyQ29udGV4dC0+c2V0T25tZXNzYWdlKDApOworICAgIH0gZWxzZSB7CisgICAg
ICAgIFJlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gd29ya2VyQ29udGV4dC0+c2Ny
aXB0KCktPnByb3h5KCktPmZpbmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVy
KSB7CisgICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5l
ck9iamVjdCgpOworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5I
b2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3b3JrZXJD
b250ZXh0LT5zZXRPbm1lc3NhZ2UobGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRlSGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmlu
ZGV4IDQ1ZjVmNDQuLjllNzlmYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBBQ0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpCiB7CiAgICAg
SU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQuc2VsZi5fZ2V0Iik7Ci0gICAgV29ya2VyQ29u
dGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PFdvcmtlckNvbnRleHQ+KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCwgaW5mby5Ib2xkZXIo
KSk7CisgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXb3JrZXJDb250ZXh0PihpbmZvLkhvbGRlcigpKTsKICAg
ICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpXb3JrZXJDb250ZXh0VG9WOE9i
amVjdCh3b3JrZXJDb250ZXh0KTsKIH0KIApAQCAtOTIsNDggKzkyLDkgQEAgQUNDRVNTT1JfU0VU
VEVSKFdvcmtlckNvbnRleHRPbmVycm9yKQogICAgIH0KIH0KIAotQUNDRVNTT1JfR0VUVEVSKFdv
cmtlckNvbnRleHRPbm1lc3NhZ2UpCi17Ci0gICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRl
eHQub25tZXNzYWdlLl9nZXQiKTsKLSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4dD4oVjhDbGFz
c0luZGV4OjpXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigpKTsKLSAgICBpZiAod29ya2VyQ29u
dGV4dC0+b25tZXNzYWdlKCkpIHsKLSAgICAgICAgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKj4o
d29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpOwotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwotICAgICAgICBy
ZXR1cm4gdjhMaXN0ZW5lcjsKLSAgICB9Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0K
LQotQUNDRVNTT1JfU0VUVEVSKFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpCi17Ci0gICAgSU5DX1NU
QVRTKEwiRE9NLldvcmtlckNvbnRleHQub25tZXNzYWdlLl9zZXQiKTsKLSAgICBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8
V29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigp
KTsKLSAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250ZXh0LT5vbm1l
c3NhZ2UoKSk7Ci0gICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgewotICAgICAgICBpZiAod29ya2Vy
Q29udGV4dC0+b25tZXNzYWdlKCkpIHsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBvbGRWOExpc3RlbmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7Ci0gICAg
ICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVu
ZXIsIFY4Q3VzdG9tOjprV29ya2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4KTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lci4KLSAgICAgICAgd29ya2VyQ29udGV4
dC0+c2V0T25tZXNzYWdlKDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxWOEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5KCktPmZp
bmRPckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBp
ZiAob2xkTGlzdGVuZXIpIHsKLSAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
b2xkVjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwotICAgICAg
ICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0
ZW5lciwgVjhDdXN0b206OmtXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB3b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2UobGlzdGVu
ZXIpOwotICAgICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2
YWx1ZSwgVjhDdXN0b206OmtXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2
YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbGVTaG90KQogewotICAgIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2
ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGFyZ3Mu
SG9sZGVyKCkpOworICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIo
KSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IGFyZ3MuTGVuZ3RoKCk7CiAgICAgaWYgKGFy
Z3VtZW50Q291bnQgPCAxKQpAQCAtMTgyLDcgKzE0Myw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChX
b3JrZXJDb250ZXh0SW1wb3J0U2NyaXB0cykKICAgICAgICAgdXJscy5hcHBlbmQodG9XZWJDb3Jl
U3RyaW5nKHNjcmlwdFVybCkpOwogICAgIH0KIAotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0
PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGFyZ3MuSG9sZGVyKCkpOworICAgIFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVy
VG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7CiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICB3b3JrZXJDb250ZXh0LT5pbXBvcnRTY3JpcHRzKHVybHMsIGNhbGxl
clVSTCwgY2FsbGVyTGluZSwgZWMpOwpAQCAtMjA3LDcgKzE2OCw3IEBAIENBTExCQUNLX0ZVTkNf
REVDTChXb3JrZXJDb250ZXh0U2V0SW50ZXJ2YWwpIHsKIENBTExCQUNLX0ZVTkNfREVDTChXb3Jr
ZXJDb250ZXh0QWRkRXZlbnRMaXN0ZW5lcikKIHsKICAgICBJTkNfU1RBVFMoTCJET00uV29ya2Vy
Q29udGV4dC5hZGRFdmVudExpc3RlbmVyKCkiKTsKLSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4
dD4oVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhULCBhcmdzLkhvbGRlcigpKTsKKyAgICBXb3Jr
ZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBl
clRvTmF0aXZlPFdvcmtlckNvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgUmVmUHRyPFY4
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+cHJveHko
KS0+ZmluZE9yQ3JlYXRlRXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1sxXSksIGZhbHNlLCBmYWxzZSk7CiAKQEAgLTIyNCw3ICsxODUsNyBAQCBDQUxMQkFDS19G
VU5DX0RFQ0woV29ya2VyQ29udGV4dEFkZEV2ZW50TGlzdGVuZXIpCiBDQUxMQkFDS19GVU5DX0RF
Q0woV29ya2VyQ29udGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpCiB7CiAgICAgSU5DX1NUQVRTKEwi
RE9NLldvcmtlckNvbnRleHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigpIik7Ci0gICAgV29ya2VyQ29u
dGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0
PFdvcmtlckNvbnRleHQ+KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCwgYXJncy5Ib2xkZXIo
KSk7CisgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXb3JrZXJDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKICAg
ICBXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gd29ya2VyQ29udGV4dC0+c2Ny
aXB0KCktPnByb3h5KCk7CiAKICAgICBSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IHByb3h5LT5maW5kT3JDcmVhdGVFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzFdKSwgZmFsc2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDQzN2Y1YmEu
LjQyNjY4ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgV29ya2VyKiBFdmVu
dFRhcmdldDo6dG9Xb3JrZXIoKQogICAgIHJldHVybiAwOwogfQogCi1Xb3JrZXJDb250ZXh0KiBF
dmVudFRhcmdldDo6dG9Xb3JrZXJDb250ZXh0KCkKK0RlZGljYXRlZFdvcmtlckNvbnRleHQqIEV2
ZW50VGFyZ2V0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKQogewogICAgIHJldHVybiAwOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKaW5kZXggNzNhMzJlMy4uZjBjNzk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0zOCw2
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEFic3RyYWN0V29ya2Vy
OwogICAgIGNsYXNzIEF0b21pY1N0cmluZzsKKyAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OwogICAgIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93
OwogICAgIGNsYXNzIEV2ZW50OwpAQCAtNDgsNyArNDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXI7CiAgICAgY2xhc3MgV29ya2VyOwotICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xh
c3MgWE1MSHR0cFJlcXVlc3Q7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CiAKQEAg
LTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdP
UktFUlMpCiAgICAgICAgIHZpcnR1YWwgV29ya2VyKiB0b1dvcmtlcigpOwotICAgICAgICB2aXJ0
dWFsIFdvcmtlckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpOworICAgICAgICB2aXJ0dWFsIERl
ZGljYXRlZFdvcmtlckNvbnRleHQqIHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFi
ODU4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisKKyNp
bmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRl
ICJXb3JrZXJPYmplY3RQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0RlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtl
ckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2Vy
VGhyZWFkKiB0aHJlYWQpCisgICAgOiBXb3JrZXJDb250ZXh0KHVybCwgdXNlckFnZW50LCB0aHJl
YWQpCit7Cit9CisKK0RlZGljYXRlZFdvcmtlckNvbnRleHQ6On5EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0KCkKK3sKKyAgICAvLyBOb3RpZnkgcGFyZW50IHdvcmtlciB3ZSBhcmUgZ29pbmcgYXdheS4K
KyAgICB0aHJlYWQoKS0+d29ya2VyT2JqZWN0UHJveHkoKS53b3JrZXJDb250ZXh0RGVzdHJveWVk
KCk7Cit9CisKK3ZvaWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwpCit7CisgICAgdGhyZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsK
K30KKwordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIDAsIGVjKTsKK30KKwordm9pZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoaXNDbG9zaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBE
aXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUg
cmVtb3RlIGNvbnRleHQuCisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9
IHBvcnQgPyBwb3J0LT5kaXNlbnRhbmdsZShlYykgOiAwOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuOworICAgIHRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9X
b3JrZXJPYmplY3QobWVzc2FnZSwgY2hhbm5lbC5yZWxlYXNlKCkpOworfQorCit2b2lkIERlZGlj
YXRlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQpCit7CisgICAgLy8gU2luY2UgY2xvc2UoKSBz
dG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxs
ZWQgd2hpbGUgY2xvc2luZy4KKyAgICBBU1NFUlQoIWlzQ2xvc2luZygpKTsKKyAgICBSZWZQdHI8
RXZlbnQ+IGV2dCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UsICIiLCAiIiwgMCwgcG9y
dCk7CisKKyAgICBpZiAobV9vbm1lc3NhZ2VMaXN0ZW5lci5nZXQoKSkgeworICAgICAgICBldnQt
PnNldFRhcmdldCh0aGlzKTsKKyAgICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBtX29ubWVzc2FnZUxpc3RlbmVyLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNl
KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50
KGV2dC5yZWxlYXNlKCksIGVjKTsKKyAgICBBU1NFUlQoIWVjKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lMzdjMTNmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckNvbnRleHQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
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
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0X2gKKyNkZWZpbmUgRGVkaWNhdGVkV29ya2VyQ29udGV4dF9oCisKKyNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIERlZGljYXRl
ZFdvcmtlckNvbnRleHQgOiBwdWJsaWMgV29ya2VyQ29udGV4dCB7CisgICAgcHVibGljOgorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJl
YWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVkaWNhdGVk
V29ya2VyQ29udGV4dCh1cmwsIHVzZXJBZ2VudCwgdGhyZWFkKSk7CisgICAgICAgIH0KKyAgICAg
ICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJn
ZXQKKyAgICAgICAgdmlydHVhbCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdv
cmtlckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2Uo
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2
b2lkIHNldE9ubWVzc2FnZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIp
IHsgbV9vbm1lc3NhZ2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRM
aXN0ZW5lciogb25tZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2VMaXN0ZW5lci5n
ZXQoKTsgfQorCisgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYsIFBh
c3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIERlZGljYXRl
ZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCop
OworICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2VMaXN0ZW5lcjsKKyAg
ICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJlZTMzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
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
aXRpb25hbD1XT1JLRVJTLAorICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEV4
dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAgIElzV29ya2VyQ29udGV4dCwKKyAgICAgICAg
R2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0IDogV29ya2VyQ29udGV4dCB7CisKKyAgICAgICAgdm9pZCBw
b3N0TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9y
dCBtZXNzYWdlUG9ydCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CisKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNWZjYzA4MC4uOTY1YzBhNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24u
aCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC02NSw4ICs2NSw2IEBAIFdvcmtlckNvbnRl
eHQ6OldvcmtlckNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgV29ya2VyVGhyCiBXb3JrZXJDb250ZXh0Ojp+V29ya2VyQ29udGV4dCgpCiB7CiAgICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZC0+dGhyZWFkSUQoKSk7Ci0KLSAgICBtX3Ro
cmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CiB9CiAK
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdvcmtlckNvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdApAQCAtMTYzLDIyICsxNjEsNiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnNj
cmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIHBvc3RNZXNzYWdlKG1lc3Nh
Z2UsIDAsIGVjKTsKLX0KLQotdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBpZiAobV9jbG9zaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gRGlzZW50YW5nbGUg
dGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250
ZXh0LgotICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSBwb3J0ID8gcG9y
dC0+ZGlzZW50YW5nbGUoZWMpIDogMDsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KG1lc3NhZ2UsIGNoYW5uZWwucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBXb3JrZXJDb250ZXh0Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7CiAgICAgRXZlbnRMaXN0ZW5l
cnNNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsK
QEAgLTI1NSwyMyArMjM3LDYgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjpjbGVhckludGVydmFsKGlu
dCB0aW1lb3V0SWQpCiAgICAgRE9NVGltZXI6OnJlbW92ZUJ5SWQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0aW1lb3V0SWQpOwogfQogCi12b2lkIFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQp
Ci17Ci0gICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRo
aXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KLSAgICBBU1NFUlQo
IW1fY2xvc2luZyk7Ci0gICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShtZXNzYWdlLCAiIiwgIiIsIDAsIHBvcnQpOwotCi0gICAgaWYgKG1fb25tZXNzYWdlTGlzdGVu
ZXIuZ2V0KCkpIHsKLSAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgICAgIGV2dC0+
c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKLSAgICAgICAgbV9vbm1lc3NhZ2VMaXN0ZW5lci0+aGFu
ZGxlRXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNTRVJU
KCFlYyk7Ci19Ci0KIHZvaWQgV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5l
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aAppbmRleCBiYTQ3NDU0Li44MmMzMmM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTQ4
LDE3ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJDb250
ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD4sIHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwdWJsaWMgRXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlckNvbnRleHQodXJsLCB1c2Vy
QWdlbnQsIHRocmVhZCkpOwotICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+V29ya2VyQ29u
dGV4dCgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtlckNvbnRleHQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtl
ckNvbnRleHQoKSB7IHJldHVybiB0aGlzOyB9Ci0KICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTkxLDEyICs4NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxl
ckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0
b3IoKSBjb25zdDsKIAotICAgICAgICAvLyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQotICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmLCBNZXNzYWdlUG9ydCosIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25tZXNzYWdlTGlzdGVuZXIgPSBldmVudExpc3Rl
bmVyOyB9Ci0gICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb25tZXNzYWdlTGlzdGVuZXIuZ2V0KCk7IH0KLQogICAgICAgICAvLyBUaW1lcnMKICAgICAg
ICAgaW50IHNldFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uKiwgaW50IHRpbWVvdXQpOwogICAgICAg
ICB2b2lkIGNsZWFyVGltZW91dChpbnQgdGltZW91dElkKTsKQEAgLTExMiw3ICsxMDAsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKICAgICAgICAgRXZlbnRMaXN0ZW5l
cnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0g
ICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVz
c2FnZVBvcnQ+KTsKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBt
YXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkgaW4KICAgICAgICAgLy8gSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcC4KQEAgLTEyMiw4ICsxMDksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtlckNvbnRleHQ+OjpyZWY7CiAgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OmRlcmVmOwogCi0gICAgcHJpdmF0
ZToKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCopOworICAgICAgICBib29sIGlzQ2xvc2luZygpIHsg
cmV0dXJuIG1fY2xvc2luZzsgfQorICAgIHByaXZhdGU6CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB7IGRlcmVmKCk7IH0KQEAgLTE0Myw3
ICsxMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlclRocmVhZCogbV90
aHJlYWQ7CiAKICAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25lcnJvckxpc3RlbmVy
OwotICAgICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2VMaXN0ZW5lcjsKICAg
ICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKIAogICAgICAgICBib29s
IG1fY2xvc2luZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmlk
bCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRleCBjN2I4Y2I5Li4yNDA0
ZDIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKKysrIGIv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC0yOCw5ICsyOCwxMCBAQCBtb2R1
bGUgdGhyZWFkcyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1XT1JL
RVJTLAotICAgICAgICBEZWxlZ2F0aW5nR2V0T3duUHJvcGVydHlTbG90LAogICAgICAgICBDdXN0
b21NYXJrRnVuY3Rpb24sCisgICAgICAgIERlbGVnYXRpbmdHZXRPd25Qcm9wZXJ0eVNsb3QsCiAg
ICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAgIElzV29ya2VyQ29udGV4dCwK
ICAgICAgICAgTGVnYWN5UGFyZW50PUpTV29ya2VyQ29udGV4dEJhc2UsCiAgICAgICAgIE5vU3Rh
dGljVGFibGVzCiAgICAgXSBXb3JrZXJDb250ZXh0IHsKQEAgLTQ5LDEyICs1MCw2IEBAIG1vZHVs
ZSB0aHJlYWRzIHsKICAgICAgICAgLy8gRGF0YWJhc2Ugb3BlbkRhdGFiYXNlKGluIERPTVN0cmlu
ZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBp
biB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogICAgICAgICAvLyBEYXRhYmFzZVN5bmMg
b3BlbkRhdGFiYXNlU3luYyhpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZlcnNpb24s
IGluIERPTVN0cmluZyBkaXNwbGF5TmFtZSwgaW4gdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXpl
KTsKIAotCi0gICAgICAgIC8vIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlCi0gICAgICAgIHZv
aWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2Fn
ZVBvcnQgbWVzc2FnZVBvcnQpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOwotCiAgICAg
ICAgIC8vIFRpbWVycwogICAgICAgICBbQ3VzdG9tXSBsb25nIHNldFRpbWVvdXQoaW4gVGltZW91
dEhhbmRsZXIgaGFuZGxlciwgaW4gbG9uZyB0aW1lb3V0KTsKICAgICAgICAgLy8gW0N1c3RvbV0g
bG9uZyBzZXRUaW1lb3V0KGluIERPTVN0cmluZyBjb2RlLCBpbiBsb25nIHRpbWVvdXQpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYjZlMTY0Mi4uOWJhYzJj
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAor
KysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0zMSwxMyAr
MzEsMTMgQEAKIAogI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCiAKKyNpbmNsdWRl
ICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJHZW5lcmljV29ya2VyVGFzay5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJXb3JrZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU5LDcgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0Q29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRDb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgICAgIFdvcmtlckNvbnRleHQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0Q29udGV4dCk7CisgICAgICAgIERl
ZGljYXRlZFdvcmtlckNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0Kj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4g
cG9ydDsKICAgICAgICAgaWYgKG1fY2hhbm5lbCkgewogICAgICAgICAgICAgcG9ydCA9IE1lc3Nh
Z2VQb3J0OjpjcmVhdGUoKnNjcmlwdENvbnRleHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApp
bmRleCAwNzQ1MjI2Li41ZDU4ZWVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMzAs
MTEgKzMwLDExIEBACiAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkRl
ZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyT2JqZWN0UHJveHkuaCIKIAogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC0xMDEsOSArMTAxLDkg
QEAgdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQogewogICAgIHsKICAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgICAgICBtX3dvcmtl
ckNvbnRleHQgPSBXb3JrZXJDb250ZXh0OjpjcmVhdGUobV9zdGFydHVwRGF0YS0+bV9zY3JpcHRV
UkwsIG1fc3RhcnR1cERhdGEtPm1fdXNlckFnZW50LCB0aGlzKTsKKyAgICAgICAgbV93b3JrZXJD
b250ZXh0ID0gRGVkaWNhdGVkV29ya2VyQ29udGV4dDo6Y3JlYXRlKG1fc3RhcnR1cERhdGEtPm1f
c2NyaXB0VVJMLCBtX3N0YXJ0dXBEYXRhLT5tX3VzZXJBZ2VudCwgdGhpcyk7CiAgICAgICAgIGlm
IChtX3J1bkxvb3AudGVybWluYXRlZCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGUgd29ya2VyIHdh
cyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgdGhyZWFkIGhhZCBhIGNoYW5jZSB0byBydW4uIFNpbmNl
IHRoZSBjb250ZXh0IGRpZG4ndCBleGlzdCB5ZXQsIAorICAgICAgICAgICAgLy8gVGhlIHdvcmtl
ciB3YXMgdGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBT
aW5jZSB0aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LAogICAgICAgICAgICAgLy8gZm9yYmlk
RXhlY3V0aW9uKCkgY291bGRuJ3QgYmUgY2FsbGVkIGZyb20gc3RvcCgpLgogICAgICAgICAgICBt
X3dvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5mb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="17688"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33459</attachid>
            <date>2009-07-24 12:02:08 -0700</date>
            <delta_ts>2009-07-24 12:02:08 -0700</delta_ts>
            <desc>patch fixing build error from last night&apos;s codegen changes</desc>
            <filename>y</filename>
            <type>text/plain</type>
            <size>65749</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGU1OWVhMy4uNjUyNTg5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMDktMDctMjQgIERyZXcgV2lsc29u
ICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWZhY3RvciBXb3JrZXJDb250ZXh0IHRvIG1vdmUgRGVkaWNhdGVk
V29ya2VyLXNwZWNpZmljIEFQSXMgaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQyMAorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhcyB0aGUgZXhpc3RpbmcgdGVzdHMgYWxyZWFkeSBwcm92aWRlIHN1ZmZp
Y2llbnQgY292ZXJhZ2UgKHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIHdpdGggbm8gbmV3IGZ1
bmN0aW9uYWxpdHkpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICBB
ZGRlZCBKU0Rlcml2ZWRXb3JrZXJDb250ZXh0LmNwcAorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJDb250ZXh0IGZpbGVzCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIERlcml2ZWRXb3JrZXJDb250ZXh0IGZp
bGVzCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2Vy
Q29udGV4dCBmaWxlcworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICBBZGRlZCBEZXJp
dmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICBBZGRlZCBEZXJpdmVkV29ya2VyQ29udGV4dCBmaWxlcworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkZWQgRGVy
aXZlZFdvcmtlckNvbnRleHQgZmlsZXMKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6bWFyayk6CisgICAgICAgIEN1c3RvbSBtYXJrIGZ1bmN0aW9u
IGZvciBvbm1lc3NhZ2UgZXZlbnQgaGFuZGxlci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICBTdXBwb3J0
cyBjb252ZXJzaW9uIHRvIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNv
cmU6OnRvRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmspOgor
ICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgbWFyayBoYW5kbGluZyBpbnRvIERlZGljYXRlZFdvcmtl
ckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIEFkZGVkIGFwcHJvcHJpYXRlIGNhc3RzIHRvIERlZGljYXRlZFdvcmtlckNv
bnRleHQgZm9yIHBvc3RNZXNzYWdlKCkuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgTWFudWFsbHkgc2V0cyB1cCB0aGUgcHJv
dG90eXBlIGNoYWluIGZvciB0aGUgd29ya2VyIGNvbnRleHQuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIENoYW5nZWQgc3BlY2lhbCBjYXNl
IGNvZGUgZm9yIFdvcmtlckNvbnRleHQgdG8gYmUgdHJpZ2dlcmVkIGJ5IG5ldyBJc1dvcmtlckNv
bnRleHQgYXR0cmlidXRlLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICBDaGFuZ2VkIGhhcmQtY29kZWQgdGVzdHMgZm9yIFdvcmtlckNvbnRl
eHQgdG8gc3VwcG9ydCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTU9iamVjdHNJbmNsdWRlLmg6CisgICAgICAgIEFkZGVkIERlZGljYXRlZFdvcmtlckNv
bnRleHQuaAorICAgICAgICAqIGJpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3Bw
OgorICAgICAgICBBZGRlZCBWOERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwCisgICAgICAgICog
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3Jh
cHBlcjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICBBZGRlZCBjb2RlIHRvIHJlc2VydmUgZXh0cmEg
ZmllbGRzIGZvciBWOERlZGljYXRlZFdvcmtlckNvbnRleHQuCisgICAgICAgICogYmluZGluZ3Mv
djgvVjhJbmRleC5jcHA6CisgICAgICAgIE5vdyBpbmNsdWRlcyBWOERlZGljYXRlZFdvcmtlckNv
bnRleHQuaCBpbiBhZGRpdGlvbiB0byBWOFdvcmtlckNvbnRleHQuaAorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4SW5kZXguaDoKKyAgICAgICAgQWRkZWQgRGVkaWNhdGVkV29ya2VyQ29udGV4dCBh
cyBhIG5vbi1ub2RlIHdyYXBwZXIgdHlwZS4KKyAgICAgICAgUmVtb3ZlZCBXT1JLRVJDT05URVhU
IGFzIGEgdmFsaWQgdGVtcGxhdGUgdHlwZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5Ojppbml0Q29udGV4dElmTmVlZGVkKToKKyAgICAgICAgQ3JlYXRlcyBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGluc3RlYWQgb2YgV29ya2VyQ29udGV4dC4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6RXZlbnRUYXJnZXRUb1Y4T2Jq
ZWN0KToKKyAgICAgICAgUmV0dXJucyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0IGluc3RlYWQgb2Yg
V29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eTo6cmV0cmlldmUpOgorICAgICAgICBSZWZhY3RvcmVkIHRvIGRlYWwgd2l0aCBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFic3RyYWN0
V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21C
aW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICBNb3ZlZCBvbm1lc3NhZ2UgY29kZSBm
cm9tIFY4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKyAgICAgICAgKFdlYkNvcmU6OkFDQ0VTU09S
X0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9TRVRURVIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICBN
b3ZlZCBvbm1lc3NhZ2UgY29kZSB0byBWOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3Bw
CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
VGFyZ2V0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5oOgorICAgICAgICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA6IEFk
ZGVkLgorICAgICAgICBNb3ZlZCBEZWRpY2F0ZWRXb3JrZXItb25seSBBUElzIGZyb20gV29ya2Vy
Q29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGlj
YXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29u
dGV4dDo6fkRlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICogd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICBNb3ZlZCBEZWRpY2F0
ZWRXb3JrZXItb25seSBBUElzIGZyb20gV29ya2VyQ29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6
OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Ojp0b0RlZGljYXRlZFdvcmtlckNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6c2V0T25tZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckNvbnRleHQ6Om9ubWVzc2FnZSk6CisgICAgICAgICog
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbDogQWRkZWQuCisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6
On5Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgTW92ZWQgY29kZSB0aGF0IG5vdGlmaWVzIHBhcmVu
dCB0aGF0IHdvcmtlciBpcyBjbG9zaW5nIGRvd24gaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29udGV4dDo6aXNDbG9zaW5nKToKKyAgICAgICAgRXhwb3NlZCBjbG9zaW5nIGZsYWcg
YXMgYW4gQVBJIHNvIGRlcml2ZWQgY2xhc3NlcyBjYW4gYWNjZXNzIGl0LgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgQ2FsbHMgaW50byBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IHRvIGhhbmRsZSBtZXNzYWdlLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAg
Q3JlYXRlcyBhIERlZGljYXRlZFdvcmtlckNvbnRleHQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cyB1
cC4KKwogMjAwOS0wNy0yNCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMjc4ODYxNi4uMTQ1
NTA2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJKU0RhdGFi
YXNlLmNwcCIKICNpbmNsdWRlICJKU0RhdGFHcmlkQ29sdW1uLmNwcCIKICNpbmNsdWRlICJKU0Rh
dGFHcmlkQ29sdW1uTGlzdC5jcHAiCisjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmNwcCIKICNpbmNsdWRlICJKU0RvY3VtZW50RnJh
Z21lbnQuY3BwIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmNwcCIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAzZjUzY2FhLi4yOTc3Nzg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03OCw2ICs3OCw3IEBA
IERPTV9DTEFTU0VTID0gXAogICAgIENvdW50ZXIgXAogICAgIERhdGFHcmlkQ29sdW1uIFwKICAg
ICBEYXRhR3JpZENvbHVtbkxpc3QgXAorICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQgXAogICAg
IERPTUFwcGxpY2F0aW9uQ2FjaGUgXAogICAgIERPTUNvcmVFeGNlcHRpb24gXAogICAgIERPTUlt
cGxlbWVudGF0aW9uIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDY0ODJkZDIuLjQ5MGJkY2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjUx
LDYgKzI1MSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbi5p
ZGwgXAogCVdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAogCVdlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5pZGwgXAorCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJD
b250ZXh0LmlkbCBcCiAJV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwgXAogCVdlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaWRsIFwKIAlXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5p
ZGwgXApAQCAtMjMyOSw2ICsyMzMwLDcgQEAgd2ViY29yZV9idWlsdF9ub3NvdXJjZXMgKz0gXAog
CiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBYnN0cmFjdFdv
cmtlckN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVj
dG9yLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnN0cnVjdG9yLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgXApAQCAtMjM0MSw2
ICsyMzQzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvV29ya2VyTmF2
aWdhdG9yLmggXAogCVdlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAgXAogCVdlYkNv
cmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oIFwKKwlXZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAgXAorCVdlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmggXAogCVdlYkNvcmUvd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oIFwKIAlXZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcCBcCiAJV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
YjlkM2ViZS4uYjdmODZlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMzNCw2ICszMzQsNyBAQAogICAgICAgICAgICAgJ3N2
Zy9TVkdab29tQW5kUGFuLmlkbCcsCiAgICAgICAgICAgICAnc3ZnL1NWR1pvb21FdmVudC5pZGwn
LAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaWRsJywKKyAgICAgICAgICAg
ICd3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsJywKICAgICAgICAgICAgICd3b3Jr
ZXJzL1NoYXJlZFdvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyLmlkbCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCcsCkBAIC00MzQsNiArNDM1
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEYXRhR3JpZERhdGFTb3VyY2UuaCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAnLApA
QCAtNjA3LDYgKzYwOSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERhdGFiYXNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGF0YUdyaWRDb2x1bW5MaXN0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhET01QYXJzZXJDb25zdHJ1Y3Rvci5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAnLApA
QCAtMzI5NCw2ICszMjk3LDggQEAKICAgICAgICAgICAgICdzdmcvU3luY2hyb25pemFibGVUeXBl
V3JhcHBlci5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCcsCiAg
ICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oJywKKyAgICAgICAgICAgICd3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwJywKKyAgICAgICAgICAgICd3b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9HZW5lcmljV29y
a2VyVGFzay5oJywKICAgICAgICAgICAgICd3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAnLAogICAg
ICAgICAgICAgJ3dvcmtlcnMvU2hhcmVkV29ya2VyLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNWE2ODFkMy4uNGVjMjQ1OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0yMzc4LDYgKzIzNzgsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV09SS0VSUz0x
KSB7CiAgICAgSURMX0JJTkRJTkdTICs9IFwKICAgICAgICAgcGFnZS9Xb3JrZXJOYXZpZ2F0b3Iu
aWRsIFwKICAgICAgICAgd29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwgXAorICAgICAgICB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXIu
aWRsIFwKICAgICAgICAgd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBcCiAgICAgICAgIHdvcmtl
cnMvV29ya2VyTG9jYXRpb24uaWRsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCA3NzcyYmI4Li43MDBiMDdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTIwMDIsNiArMjAwMiw1NCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZl
ZFNvdXJjZXNcSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCINCisJCQkJPg0KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfSW50ZXJuYWx8V2luMzIi
DQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29sDQor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWdfQ2Fp
cm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
UmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNv
dXJjZXNcSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRG9jdW1lbnQuY3BwIg0KIAkJCQk+DQogCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KQEAgLTI0MDE5LDYgKzI0MDY3LDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNcRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3b3JrZXJzXERlZGljYXRlZFdvcmtlckNvbnRleHQuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdvcmtlcnNc
R2VuZXJpY1dvcmtlclRhc2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yODM1NCw2ICsy
ODQxMCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU0RvY3VtZW50Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KQEAgLTI4NzU4LDEwICsyODgxOCw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJ
CQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dvcmtlckNvbnRl
eHRDdXN0b20uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dvcmtlckN1c3RvbS5jcHAiDQogCQkJCQk+DQog
CQkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGE0MDg2YTEuLmIwYjg1YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NTksNiArNjU5LDEyIEBACiAJCTQxNUI3QzU4MEZGNTk4RTYwMDY3NzBG
NyAvKiBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU1MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1No
YXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNDE1QjdDNTkwRkY1OThFNjAwNjc3
MEY3IC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNUI3QzU2MEZGNTk4RTYwMDY3NzBGNyAvKiBKU1NoYXJl
ZFdvcmtlckN1c3RvbS5jcHAgKi87IH07CiAJCTQxNUI3QzYzMEZGNUE3NjcwMDY3NzBGNyAvKiBK
U1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTVCN0M2MjBGRjVBNzY3MDA2NzcwRjcgLyogSlNTaGFyZWRXb3Jr
ZXJDb25zdHJ1Y3Rvci5oICovOyB9OworCQk0MTYyQTQ1MDEwMTE0NUFFMDBERkYzRUQgLyogRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ0RDEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgKi87IH07CisJCTQxNjJBNDUxMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5oICovOyB9OworCQk0MTYyQTQ1MjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNjJBNDRGMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Lmlk
bCAqLzsgfTsKKwkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTYyQTQ1NTEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmNwcCAqLzsgfTsKKwkJNDE2MkE0NTgxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5oICovOyB9OwogCQk0MTZFNzVCRTBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTZFNzVCQzBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi87IH07CiAJCTQx
NkU3NUJGMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTc1QkQwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi87IH07CiAJCTQxNkU3NUNCMEVERjkwQzcwMDM2
MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKQEAgLTU2MjEsNiArNTYyNywxMiBAQAogCQk0MTVCN0M1NTBGRjU5OEU2MDA2
NzcwRjcgLyogSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1QjdDNTYwRkY1OThFNjAwNjc3MEY3IC8qIEpTU2hh
cmVkV29ya2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE1QjdDNjIwRkY1QTc2NzAwNjc3MEY3IC8qIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFyZWRXb3JrZXJDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTYyQTQ0RDEwMTE0NUFFMDBERkYz
RUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgcGF0aCA9IHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlZGljYXRlZFdvcmtlckNvbnRleHQuaDsg
cGF0aCA9IHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGVkaWNhdGVkV29ya2VyQ29udGV4
dC5pZGw7IHBhdGggPSB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTYyQTQ1MzEwMTE0NUUzMDBERkYzRUQgLyogSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE2MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1QkMwRURGOEZENzAwMzYw
RTFEIC8qIFNjcmlwdENhbGxTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHRDYWxsU3RhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTc1
QkQwRURGOEZENzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRDYWxsU3RhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTZFNzVDOTBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENhbGxGcmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkxMSw2ICs5OTIzLDkgQEAKIAkJMkU0
MzQ2MzEwRjU0NkE2ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNjJBNDREMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcCAqLywKKwkJCQk0MTYyQTQ0RTEwMTE0NUFFMDBERkYzRUQg
LyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oICovLAorCQkJCTQxNjJBNDRGMTAxMTQ1QUUwMERG
RjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCAqLywKIAkJCQk0MUUxQjFDQTBGRjU5
ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNCMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAogCQkJCTQxRTFCMUNDMEZGNTk4Njkw
MDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCkBAIC0xMzYwNCw2ICsxMzYxOSw3IEBA
CiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNjJBNDUzMTAxMTQ1RTMwMERGRjNFRCAv
KiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwICovLAogCQkJCUJDMkVENkJCMEM2
QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLAogCQkJCTFBOUVGNDU2MEExQjk1
N0QwMDMzMkI2MyAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgKi8sCiAJ
CQkJOTNCQTU5QjEwRjJBQTVGRTAwOEU4RTk5IC8qIEpTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCAq
LywKQEAgLTE0MDE4LDYgKzE0MDM0LDggQEAKIAkJRTFDOEJFNEIwRThCRDBEMTAwNjRDQjdEIC8q
IFRocmVhZHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTQxNjJBNDU1MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuY3Bw
ICovLAorCQkJCTQxNjJBNDU2MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNv
bnRleHQuaCAqLywKIAkJCQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdv
cmtlci5jcHAgKi8sCiAJCQkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RX
b3JrZXIuaCAqLywKIAkJCQk0MUQwN0E3QzBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3Jr
ZXIuY3BwICovLApAQCAtMTcwMjEsNiArMTcwMzksOCBAQAogCQkJCTE1Qzc3MDhEMTAwRDNDNkIw
MDVCQTI2NyAvKiBWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNUM3NzA5MzEw
MEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NUM3NzBBNjEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNDE2MkE0NTExMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxNjJBNDU4MTAxMTQ2NDcwMERGRjNFRCAvKiBKU0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzREQTM3MTAxM0Yz
RjcwMDc5ODdBRCAvKiBSR0JDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NERBNDkxMDEz
RjQ2ODAwNzk4N0FEIC8qIEpTUkdCQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3N0M0Q0RG
MTAxNEU5RjYwMEI5QUU0MiAvKiBQbGFjZWhvbGRlckRvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTE3MTM5LDYgKzE3MTU5LDcgQEAKIAkJCQk0MUUxQjFEMjBGRjU5ODY5MDA1NzZCM0IgLyog
QWJzdHJhY3RXb3JrZXIuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQk0MUUxQjFENTBGRjU5ODY5
MDA1NzZCM0IgLyogU2hhcmVkV29ya2VyLmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMTVDNzcw
OEMxMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQk0MTYyQTQ1MjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyQ29udGV4dC5p
ZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTJFQ0Y3QUUzMTAxNjJCNTgwMDQyN0RFNyAvKiBFcnJv
ckV2ZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xOTA1Nyw2ICsxOTA3OCw5IEBACiAJCQkJMTVDNzcw
OEUxMDBEM0M2QjAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNUM3NzBBNTEwMEQ0MUNEMDA1QkEyNjcgLyogRE9NVmFsaWRpdHlTdGF0
ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxNjJBNDUwMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNjJBNDU0MTAxMTQ1
RTMwMERGRjNFRCAvKiBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDE2MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2Vy
Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzc0REEzODEwMTNGM0Y3MDA3OTg3QUQg
LyogUkdCQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3NERBNDgxMDEzRjQ2ODAwNzk4
N0FEIC8qIEpTUkdCQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc3QzRDRTAxMDE0RTlG
NjAwQjlBRTQyIC8qIFBsYWNlaG9sZGVyRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ1YTZhMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTRGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAg
bWFya0lmTm90TnVsbChpbXBsKCktPm9ubWVzc2FnZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcAppbmRleCA1YzE0YjFjLi5kNTI1MmM3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldC5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQAogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV09SS0VSUykKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVk
ZSAiSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXIuaCIKLSNp
bmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKLSNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykK
QEAgLTEwMCw3ICsxMDAsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCosIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiAgICAgaWYgKFdvcmtlciogd29ya2Vy
ID0gdGFyZ2V0LT50b1dvcmtlcigpKQogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCB3b3JrZXIp
OwogCi0gICAgaWYgKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvV29y
a2VyQ29udGV4dCgpKQorICAgIGlmIChEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250
ZXh0ID0gdGFyZ2V0LT50b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4dCk7CiAjZW5kaWYKIApAQCAtMTM3LDcg
KzEzNyw3IEBAIEV2ZW50VGFyZ2V0KiB0b0V2ZW50VGFyZ2V0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFdvcmtl
cikKLSAgICBDT05WRVJUX1RPX0VWRU5UX1RBUkdFVChXb3JrZXJDb250ZXh0KQorICAgIENPTlZF
UlRfVE9fRVZFTlRfVEFSR0VUKERlZGljYXRlZFdvcmtlckNvbnRleHQpCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAppbmRleCA0NDBiYjdhLi42YTc2MDJkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC01OSw3ICs1OSw2IEBAIHZv
aWQgSlNXb3JrZXJDb250ZXh0OjptYXJrKCkKICAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihnbG9i
YWxEYXRhLCBpbXBsKCktPm9wdGlvbmFsTmF2aWdhdG9yKCkpOwogCiAgICAgbWFya0lmTm90TnVs
bChpbXBsKCktPm9uZXJyb3IoKSk7Ci0gICAgbWFya0lmTm90TnVsbChpbXBsKCktPm9ubWVzc2Fn
ZSgpKTsKIAogICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dDo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZl
bnRMaXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpMaXN0ZW5lclZlY3Rv
ciBMaXN0ZW5lclZlY3RvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IGJjZjEwN2IuLmZhZjQzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzEsMTAgKzMxLDkgQEAKICNp
bmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKLSNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRl
IDxpbnRlcnByZXRlci9JbnRlcnByZXRlci5oPgpAQCAtNzEsMTEgKzcwLDE1IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgLy8gRXhwbGljaXRseSBwcm90
ZWN0IHRoZSBnbG9iYWwgb2JqZWN0J3MgcHJvdG90eXBlIHNvIGl0IGlzbid0IGNvbGxlY3RlZAog
ICAgIC8vIHdoZW4gd2UgYWxsb2NhdGUgdGhlIGdsb2JhbCBvYmplY3QuIChPbmNlIHRoZSBnbG9i
YWwgb2JqZWN0IGlzIGZ1bGx5CiAgICAgLy8gY29uc3RydWN0ZWQsIGl0IGNhbiBtYXJrIGl0cyBv
d24gcHJvdG90eXBlLikKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSk7Ci0g
ICAgUHJvdGVjdGVkUHRyPEpTV29ya2VyQ29udGV4dFByb3RvdHlwZT4gcHJvdG90eXBlID0gbmV3
IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShwcm90b3R5cGVT
dHJ1Y3R1cmUucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiB3b3JrZXJDb250ZXh0
UHJvdG90eXBlU3RydWN0dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpOworICAgIFByb3RlY3RlZFB0cjxKU1dvcmtlckNvbnRleHRQcm90b3R5
cGU+IHdvcmtlckNvbnRleHRQcm90b3R5cGUgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNX
b3JrZXJDb250ZXh0UHJvdG90eXBlKHdvcmtlckNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUucmVs
ZWFzZSgpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTV29ya2VyQ29u
dGV4dDo6Y3JlYXRlU3RydWN0dXJlKHByb3RvdHlwZSk7Ci0gICAgbV93b3JrZXJDb250ZXh0V3Jh
cHBlciA9IG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHQoc3RydWN0dXJl
LnJlbGVhc2UoKSwgbV93b3JrZXJDb250ZXh0KTsKKyAgICAvLyBGSVhNRTogV2hlbiB3ZSBhZGQg
U2hhcmVkV29ya2VyQ29udGV4dCwgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgd3JhcHBlciBoZXJlLgor
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGRlZGljYXRlZENvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUg
PSBKU0RlZGljYXRlZFdvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh3b3Jr
ZXJDb250ZXh0UHJvdG90eXBlKTsKKyAgICBQcm90ZWN0ZWRQdHI8SlNEZWRpY2F0ZWRXb3JrZXJD
b250ZXh0UHJvdG90eXBlPiBkZWRpY2F0ZWRDb250ZXh0UHJvdG90eXBlID0gbmV3IChtX2dsb2Jh
bERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dFByb3RvdHlwZShkZWRpY2F0ZWRD
b250ZXh0UHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSk7CisgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlID0gSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OjpjcmVhdGVTdHJ1Y3R1cmUo
ZGVkaWNhdGVkQ29udGV4dFByb3RvdHlwZSk7CisKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVy
ID0gbmV3IChtX2dsb2JhbERhdGEuZ2V0KCkpIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dChzdHJ1
Y3R1cmUucmVsZWFzZSgpLCBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Kj4obV93
b3JrZXJDb250ZXh0KSk7CiB9CiAKIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA0NTYyNDdhLi5kMGRlMjc1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQz
Miw3ICs0MzIsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yCiAgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFz
c1JlZlB0cjwkaW1wbFR5cGU+LCBKU0RPTVdpbmRvd1NoZWxsKik7XG4iKTsKLSAgICB9IGVsc2lm
ICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIpIHsKKyAgICB9IGVsc2lmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoUGFzc1JlZlB0cjxKU0M6OlN0
cnVjdHVyZT4sIFBhc3NSZWZQdHI8JGltcGxUeXBlPik7XG4iKTsKICAgICB9IGVsc2lmIChJc1NW
R1R5cGVOZWVkaW5nQ29udGV4dFBhcmFtZXRlcigkaW1wbENsYXNzTmFtZSkpIHsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKFBhc3NSZWZQdHI8SlNDOjpTdHJ1
Y3R1cmU+LCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JGltcGxUeXBlPiwgU1ZHRWxl
bWVudCogY29udGV4dCk7XG4iKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHVibGljOlxuIik7CiAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCk7XG4iKTsKLSAgICB9IGVsc2lmICgkaW50
ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29udGV4dCIpIHsKKyAgICB9IGVsc2lmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTQzo6SlNH
bG9iYWxEYXRhKik7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIik7CkBAIC05MDMsNyArOTAzLDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTRE9NV2luZG93Ojpjb21tb25KU0ds
b2JhbERhdGEoKS0+aGVhcC5hbGxvY2F0ZShzaXplKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7Ci0gICAgfSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtl
ckNvbnRleHQiKSB7CisgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSXNXb3JrZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lk
KiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnbG9iYWxEYXRhLT5o
ZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7CkBAIC05ODIsOCArOTgyLDggQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCJKU0RPTVdpbmRvd1No
ZWxsIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NO
YW1lKFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBl
PiBpbXBsLCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbClcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJlLCBpbXBsLCBzaGVsbClc
biIpOwotICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0Iikgewot
ICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoIldvcmtlckNvbnRleHQiKTsKKyAgICB9IGVsc2lm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewor
ICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJlLCBp
bXBsKVxuIik7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IDQyYjljMGYuLjI0YzBlMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDMzLDcgKzQzMyw3IEBAIEVORAogICAg
IC8vIGNvbnRleHQgb2YgdGhlIERPTVdpbmRvdyBhbmQgbm90IGluIHRoZSBjb250ZXh0IG9mIHRo
ZSBjYWxsZXIuCiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IodHlwZSwg
d2luZG93KTsKIEVORAotICAgIH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJXT1JLRVJDT05URVhU
IikgeworICAgIH0gZWxzaWYgKCRjbGFzc0luZGV4IGVxICJERURJQ0FURURXT1JLRVJDT05URVhU
IiBvciAkY2xhc3NJbmRleCBlcSAiV09SS0VSQ09OVEVYVCIpIHsKICAgICAgICAgJGltcGxJbmNs
dWRlc3siV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmgifSA9IDE7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAgICByZXR1cm4gV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5OjpyZXRyaWV2ZSgpLT5HZXRDb25zdHJ1Y3Rvcih0eXBlKTsKQEAgLTIwNDEsNyAr
MjA0MSwxMiBAQCBzdWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAicmV0
dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50TGlzdGVuZXJUb1Y4T2JqZWN0KCR2YWx1ZSki
OwogICAgIH0KIAotICAgIGlmICgkdHlwZSBlcSAiV29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEg
IldvcmtlckxvY2F0aW9uIiBvciAkdHlwZSBlcSAiV29ya2VyTmF2aWdhdG9yIikgeworICAgIGlm
ICgkdHlwZSBlcSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCIgb3IgJHR5cGUgZXEgIldvcmtlckNv
bnRleHQiKSB7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Q
cm94eS5oIn0gPSAxOworICAgICAgICByZXR1cm4gInJldHVybiBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHk6OldvcmtlckNvbnRleHRUb1Y4T2JqZWN0KCR2YWx1ZSkiOworICAgIH0KKworICAg
IGlmICgkdHlwZSBlcSAiV29ya2VyTG9jYXRpb24iIG9yICR0eXBlIGVxICJXb3JrZXJOYXZpZ2F0
b3IiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eS5oIn0gPSAxOwogICAgICAgICBteSAkY2xhc3NJbmRleCA9IHVjKCR0eXBlKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01PYmplY3RzSW5jbHVkZS5oCmluZGV4IGY1ZjU0NGQuLjBlZjBlYmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NT2JqZWN0c0luY2x1ZGUuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTU9iamVjdHNJbmNsdWRlLmgKQEAgLTE5OSw2ICsxOTksNyBA
QAogI2VuZGlmIC8vIFNWRwogCiAjaWYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25lLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGVyaXZlZFNvdXJjZXNBbGxJbk9uZS5jcHAKaW5kZXggODgzNWYwZi4uOGRkZWQx
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZXJpdmVkU291cmNlc0FsbEluT25l
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rlcml2ZWRTb3VyY2VzQWxsSW5PbmUuY3Bw
CkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEYXRhYmFzZS5jcHAiCiAj
aW5jbHVkZSAiYmluZGluZ3MvVjhEYXRhR3JpZENvbHVtbi5jcHAiCiAjaW5jbHVkZSAiYmluZGlu
Z3MvVjhEYXRhR3JpZENvbHVtbkxpc3QuY3BwIgorI2luY2x1ZGUgImJpbmRpbmdzL1Y4RGVkaWNh
dGVkV29ya2VyQ29udGV4dC5jcHAiCiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEb2N1bWVudC5jcHAi
CiAjaW5jbHVkZSAiYmluZGluZ3MvVjhEb2N1bWVudEZyYWdtZW50LmNwcCIKICNpbmNsdWRlICJi
aW5kaW5ncy9WOERvY3VtZW50VHlwZS5jcHAiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKaW5kZXggZTg1ZTA5Yy4uODBkZDlhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcApAQCAtMzkwLDYgKzM5MCwxNCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhET01XcmFwcGVyOjpnZXRUZW1wbGF0ZShWOENsYXNzSW5kZXg6OlY4VwogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6REVESUNBVEVEV09SS0VS
Q09OVEVYVDogeworICAgICAgICAvLyBSZXNlcnZlIGludGVybmFsIGZpZWxkcyBmb3Iga2VlcGlu
ZyBldmVudCBsaXN0ZW5lcnMuCisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7CisgICAg
ICAgIEFTU0VSVChpbnN0YW5jZVRlbXBsYXRlLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA9PSBWOEN1
c3RvbTo6a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICAgICAgaW5zdGFu
Y2VUZW1wbGF0ZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4Q3VzdG9tOjprRGVkaWNhdGVkV29y
a2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgVjhDbGFzc0luZGV4OjpXT1JLRVI6IHsKICAgICAgICAgLy8gUmVzZXJ2ZSBvbmUg
bW9yZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVudCBsaXN0ZW5lcnMuCiAgICAgICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlVGVtcGxhdGUgPSBkZXNjcmlw
dG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC00MDEsOSArNDA5LDExIEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOERPTVdyYXBwZXI6OmdldFRlbXBsYXRlKFY4Q2xh
c3NJbmRleDo6VjhXCiAgICAgY2FzZSBWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQ6IHsKICAg
ICAgICAgLy8gUmVzZXJ2ZSBvbmUgbW9yZSBpbnRlcm5hbCBmaWVsZCBmb3Iga2VlcGluZyBldmVu
dCBsaXN0ZW5lcnMuCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3Rh
bmNlVGVtcGxhdGUgPSBkZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAgICAgIGlu
c3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmllbGRDb3VudChWOEN1c3RvbTo6a1dvcmtlckNv
bnRleHRJbnRlcm5hbEZpZWxkQ291bnQpOworICAgICAgICBBU1NFUlQoaW5zdGFuY2VUZW1wbGF0
ZS0+SW50ZXJuYWxGaWVsZENvdW50KCkgPT0gVjhDdXN0b206OmtEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCk7CisgICAgICAgIGluc3RhbmNlVGVtcGxhdGUtPlNldEludGVybmFsRmll
bGRDb3VudChWOEN1c3RvbTo6a1dvcmtlckNvbnRleHRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAjZW5kaWYgLy8gV09SS0VSUwogCiAgICAgLy8g
VGhlIGZvbGxvd2luZyBvYmplY3RzIGFyZSBjcmVhdGVkIGZyb20gSmF2YVNjcmlwdC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SW5kZXguY3BwCmluZGV4IDExNDA0MjQuLmQ2ZGU3MzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJbmRleC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElu
ZGV4LmNwcApAQCAtNTksOCArNTksOCBAQAogI2luY2x1ZGUgIlY4Q1NTVmFsdWVMaXN0LmgiCiAj
aW5jbHVkZSAiVjhDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiVjhDU1NWYXJpYWJsZXNEZWNs
YXJhdGlvbi5oIgotI2luY2x1ZGUgIlY4Q1NTVmFyaWFibGVzUnVsZS5oIg0KLSNpbmNsdWRlICJW
OERhdGFHcmlkQ29sdW1uLmgiDQorI2luY2x1ZGUgIlY4Q1NTVmFyaWFibGVzUnVsZS5oIgorI2lu
Y2x1ZGUgIlY4RGF0YUdyaWRDb2x1bW4uaCIKICNpbmNsdWRlICJWOERhdGFHcmlkQ29sdW1uTGlz
dC5oIgogI2luY2x1ZGUgIlY4RGF0YWJhc2UuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCkBA
IC0yMDcsOSArMjA3LDkgQEAKICNpbmNsdWRlICJWOFhTTFRQcm9jZXNzb3IuaCIKICNpbmNsdWRl
ICJWOFJHQkNvbG9yLmgiCiAKLSNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpDQotI2luY2x1ZGUgIlY4
U3RvcmFnZS5oIg0KLSNpbmNsdWRlICJWOFN0b3JhZ2VFdmVudC5oIg0KKyNpZiBFTkFCTEUoRE9N
X1NUT1JBR0UpCisjaW5jbHVkZSAiVjhTdG9yYWdlLmgiCisjaW5jbHVkZSAiVjhTdG9yYWdlRXZl
bnQuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCkBAIC0zNzMsNiArMzcz
LDcgQEAKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogI2luY2x1ZGUgIlY4QWJzdHJhY3RXb3JrZXIu
aCIKKyNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJWOFdv
cmtlci5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4V29ya2Vy
TG9jYXRpb24uaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbmRleC5oIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKaW5kZXggNzY0MmViMi4uOGI3ZjhjZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEluZGV4LmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEluZGV4LmgKQEAgLTcyLDYgKzcyLDcgQEAgdHlwZWRlZiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gKCpGdW5jdGlvblRlbXBsYXRlRmFjdG9yeSkoKTsKIAog
I2RlZmluZSBXT1JLRVJfTk9OTk9ERV9XUkFQUEVSX1RZUEVTKFYpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIFYoQUJTVFJBQ1RXT1JLRVIsIEFic3RyYWN0V29ya2VyKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFYoREVESUNBVEVEV09SS0VS
Q09OVEVYVCwgRGVkaWNhdGVkV29ya2VyQ29udGV4dCkgICAgICAgICAgICAgICAgICAgXAogICAg
IFYoV09SS0VSQ09OVEVYVCwgV29ya2VyQ29udGV4dCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAogICAgIFYoV09SS0VSTE9DQVRJT04sIFdvcmtlckxvY2F0aW9uKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFYoV09SS0VSTkFWSUdBVE9SLCBX
b3JrZXJOYXZpZ2F0b3IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggMzc0OWE5Yi4uYTY3NzIyNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Lmgi
CiAKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiRE9NQ29y
ZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRp
b24uaCIKQEAgLTE2NSw3ICsxNjYsNyBAQCB2b2lkIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94
eTo6aW5pdENvbnRleHRJZk5lZWRlZCgpCiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBpbXBs
aWNpdFByb3RvU3RyaW5nID0gdjg6OlN0cmluZzo6TmV3KCJfX3Byb3RvX18iKTsKIAogICAgIC8v
IENyZWF0ZSBhIG5ldyBKUyBvYmplY3QgYW5kIHVzZSBpdCBhcyB0aGUgcHJvdG90eXBlIGZvciB0
aGUgc2hhZG93IGdsb2JhbCBvYmplY3QuCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdv
cmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IEdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6V09S
S0VSQ09OVEVYVCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRD
b25zdHJ1Y3RvciA9IEdldENvbnN0cnVjdG9yKFY4Q2xhc3NJbmRleDo6REVESUNBVEVEV09SS0VS
Q09OVEVYVCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzV29ya2VyQ29udGV4dCA9IFNh
ZmVBbGxvY2F0aW9uOjpuZXdJbnN0YW5jZSh3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IpOwogICAg
IC8vIEJhaWwgb3V0IGlmIGFsbG9jYXRpb24gZmFpbGVkLgogICAgIGlmIChqc1dvcmtlckNvbnRl
eHQuSXNFbXB0eSgpKSB7CkBAIC0xNzQsNyArMTc1LDcgQEAgdm9pZCBXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHk6OmluaXRDb250ZXh0SWZOZWVkZWQoKQogICAgIH0KIAogICAgIC8vIFdyYXAg
dGhlIG9iamVjdC4KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoanNXb3JrZXJDb250
ZXh0LCBWOENsYXNzSW5kZXg6OlRvSW50KFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCksIG1f
d29ya2VyQ29udGV4dCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGpzV29ya2Vy
Q29udGV4dCwgVjhDbGFzc0luZGV4OjpUb0ludChWOENsYXNzSW5kZXg6OkRFRElDQVRFRFdPUktF
UkNPTlRFWFQpLCBtX3dvcmtlckNvbnRleHQpOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01PYmplY3QobV93b3JrZXJDb250ZXh0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGpzV29ya2VyQ29udGV4dCkpOwogICAgIG1fd29ya2VyQ29udGV4dC0+cmVmKCk7
CkBAIC0yMDcsNyArMjA4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdvcmtlckNvbnRleHRF
eGVjdXRpb25Qcm94eTo6VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OlY4V3IKICAgICBpZiAoIWlt
cGwpCiAgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogCi0gICAgaWYgKHR5cGUgPT0gVjhDbGFz
c0luZGV4OjpXT1JLRVJDT05URVhUKQorICAgIGlmICh0eXBlID09IFY4Q2xhc3NJbmRleDo6REVE
SUNBVEVEV09SS0VSQ09OVEVYVCkKICAgICAgICAgcmV0dXJuIFdvcmtlckNvbnRleHRUb1Y4T2Jq
ZWN0KHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihpbXBsKSk7CiAKICAgICBpZiAodHlwZSA9
PSBWOENsYXNzSW5kZXg6OldPUktFUiB8fCB0eXBlID09IFY4Q2xhc3NJbmRleDo6WE1MSFRUUFJF
UVVFU1QpIHsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5OjpFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYQogICAg
IGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIAotICAgIFdvcmtlckNv
bnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvV29ya2VyQ29udGV4dCgpOworICAgIERl
ZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSB0YXJnZXQtPnRvRGVkaWNhdGVk
V29ya2VyQ29udGV4dCgpOwogICAgIGlmICh3b3JrZXJDb250ZXh0KQogICAgICAgICByZXR1cm4g
V29ya2VyQ29udGV4dFRvVjhPYmplY3Qod29ya2VyQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKaW5kZXggZmQ4ZmYxNC4uODg1YTIxMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgKQEAgLTEy
Myw3ICsxMjMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtXb3JrZXJJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAxOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRS
ZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dvcmtlckNvbnRleHRJbnRlcm5hbEZpZWxkQ291
bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOworICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtXb3JrZXJDb250ZXh0TWluaW11bUludGVybmFsRmllbGRDb3VudCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4ID0ga1dvcmtl
ckNvbnRleHRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrRGVkaWNhdGVkV29ya2VyQ29udGV4dEludGVybmFsRmllbGRDb3VudCA9IGtXb3Jr
ZXJDb250ZXh0TWluaW11bUludGVybmFsRmllbGRDb3VudCArIDE7CiAKICAgICAgICAgc3RhdGlj
IGNvbnN0IGludCBrQWJzdHJhY3RXb3JrZXJSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3Jh
cHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0Fi
c3RyYWN0V29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMTsKQEAgLTQ4MSwxMiArNDg0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhBYnN0cmFjdFdvcmtlckFkZEV2ZW50TGlzdGVuZXIp
OwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKEFic3RyYWN0V29ya2VyUmVtb3ZlRXZlbnRMaXN0
ZW5lcik7CiAKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0T25tZXNzYWdlKTsKKwogICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KFdvcmtlck9ubWVzc2FnZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29uc3Ry
dWN0b3IpOwogCiAgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFdvcmtl
ckNvbnRleHRTZWxmKTsKICAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJD
b250ZXh0T25lcnJvcik7Ci0gICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2Vy
Q29udGV4dE9ubWVzc2FnZSk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4
dEltcG9ydFNjcmlwdHMpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRT
ZXRUaW1lb3V0KTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0Q2xlYXJU
aW1lb3V0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNh
dGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmYxM2U0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
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
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1
ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgorCisjaW5jbHVkZSAiRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUNDRVNT
T1JfR0VUVEVSKERlZGljYXRlZFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpCit7CisgICAgSU5DX1NU
QVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQub25tZXNzYWdlLl9nZXQiKTsKKyAgICBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpE
RURJQ0FURURXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigpKTsKKyAgICBpZiAod29ya2VyQ29u
dGV4dC0+b25tZXNzYWdlKCkpIHsKKyAgICAgICAgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKj4o
d29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpOworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gdjhMaXN0ZW5lciA9IGxpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICBy
ZXR1cm4gdjhMaXN0ZW5lcjsKKyAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30K
KworQUNDRVNTT1JfU0VUVEVSKERlZGljYXRlZFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpCit7Cisg
ICAgSU5DX1NUQVRTKEwiRE9NLkRlZGljYXRlZFdvcmtlckNvbnRleHQub25tZXNzYWdlLl9zZXQi
KTsKKyAgICBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8RGVkaWNhdGVkV29ya2VyQ29udGV4dD4oVjhDbGFz
c0luZGV4OjpERURJQ0FURURXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigpKTsKKyAgICBWOFdv
cmtlckNvbnRleHRFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSk7Cisg
ICAgaWYgKHZhbHVlLT5Jc051bGwoKSkgeworICAgICAgICBpZiAod29ya2VyQ29udGV4dC0+b25t
ZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3Rl
bmVyID0gb2xkTGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7CisgICAgICAgICAgICByZW1v
dmVIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9t
OjprRGVkaWNhdGVkV29ya2VyQ29udGV4dFJlcXVlc3RDYWNoZUluZGV4KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIENsZWFyIHRoZSBsaXN0ZW5lci4KKyAgICAgICAgd29ya2VyQ29udGV4dC0+
c2V0T25tZXNzYWdlKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIFJlZlB0cjxWOEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5KCktPmZpbmRP
ckNyZWF0ZUV2ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwg
ZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyKSB7CisgICAgICAgICAgICBpZiAo
b2xkTGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xk
VjhMaXN0ZW5lciA9IG9sZExpc3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOworICAgICAgICAg
ICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5l
ciwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2Uo
bGlzdGVuZXIpOworICAgICAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRl
cigpLCB2YWx1ZSwgVjhDdXN0b206OmtEZWRpY2F0ZWRXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hl
SW5kZXgpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDQ1ZjVmNDQuLjllNzlmYTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBQ0NFU1NP
Ul9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLldvcmtl
ckNvbnRleHQuc2VsZi5fZ2V0Iik7Ci0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xh
c3NJbmRleDo6V09SS0VSQ09OVEVYVCwgaW5mby5Ib2xkZXIoKSk7CisgICAgV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2
ZTxXb3JrZXJDb250ZXh0PihpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5OjpXb3JrZXJDb250ZXh0VG9WOE9iamVjdCh3b3JrZXJDb250ZXh0KTsK
IH0KIApAQCAtOTIsNDggKzkyLDkgQEAgQUNDRVNTT1JfU0VUVEVSKFdvcmtlckNvbnRleHRPbmVy
cm9yKQogICAgIH0KIH0KIAotQUNDRVNTT1JfR0VUVEVSKFdvcmtlckNvbnRleHRPbm1lc3NhZ2Up
Ci17Ci0gICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQub25tZXNzYWdlLl9nZXQiKTsK
LSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0
VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpXT1JLRVJDT05URVhU
LCBpbmZvLkhvbGRlcigpKTsKLSAgICBpZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkpIHsK
LSAgICAgICAgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNf
Y2FzdDxWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKj4od29ya2VyQ29udGV4dC0+b25tZXNz
YWdlKCkpOwotICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdjhMaXN0ZW5lciA9IGxpc3Rl
bmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwotICAgICAgICByZXR1cm4gdjhMaXN0ZW5lcjsKLSAg
ICB9Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQotQUNDRVNTT1JfU0VUVEVSKFdv
cmtlckNvbnRleHRPbm1lc3NhZ2UpCi17Ci0gICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRl
eHQub25tZXNzYWdlLl9zZXQiKTsKLSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0g
VjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4dD4oVjhDbGFz
c0luZGV4OjpXT1JLRVJDT05URVhULCBpbmZvLkhvbGRlcigpKTsKLSAgICBWOFdvcmtlckNvbnRl
eHRFdmVudExpc3RlbmVyKiBvbGRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PFY4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIqPih3b3JrZXJDb250ZXh0LT5vbm1lc3NhZ2UoKSk7Ci0gICAgaWYgKHZh
bHVlLT5Jc051bGwoKSkgewotICAgICAgICBpZiAod29ya2VyQ29udGV4dC0+b25tZXNzYWdlKCkp
IHsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRWOExpc3RlbmVyID0gb2xk
TGlzdGVuZXItPmdldExpc3RlbmVyT2JqZWN0KCk7Ci0gICAgICAgICAgICByZW1vdmVIaWRkZW5E
ZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIG9sZFY4TGlzdGVuZXIsIFY4Q3VzdG9tOjprV29ya2Vy
Q29udGV4dFJlcXVlc3RDYWNoZUluZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENsZWFy
IHRoZSBsaXN0ZW5lci4KLSAgICAgICAgd29ya2VyQ29udGV4dC0+c2V0T25tZXNzYWdlKDApOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
d29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5KCktPmZpbmRPckNyZWF0ZUV2ZW50TGlzdGVu
ZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgZmFsc2UsIGZhbHNlKTsKLSAg
ICAgICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAob2xkTGlzdGVuZXIpIHsKLSAg
ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2xkVjhMaXN0ZW5lciA9IG9sZExp
c3RlbmVyLT5nZXRMaXN0ZW5lck9iamVjdCgpOwotICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRl
bkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgb2xkVjhMaXN0ZW5lciwgVjhDdXN0b206OmtXb3Jr
ZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB3b3JrZXJDb250ZXh0LT5zZXRPbm1lc3NhZ2UobGlzdGVuZXIpOwotICAgICAgICAgICAgY3Jl
YXRlSGlkZGVuRGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCB2YWx1ZSwgVjhDdXN0b206OmtXb3Jr
ZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXgpOwotICAgICAgICB9Ci0gICAgfQotfQotCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywgYm9vbCBzaW5nbGVTaG90KQogewotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0
PihWOENsYXNzSW5kZXg6OldPUktFUkNPTlRFWFQsIGFyZ3MuSG9sZGVyKCkpOworICAgIFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVy
VG9OYXRpdmU8V29ya2VyQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7CiAKICAgICBpbnQgYXJndW1l
bnRDb3VudCA9IGFyZ3MuTGVuZ3RoKCk7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQpAQCAt
MTgyLDcgKzE0Myw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0SW1wb3J0U2Ny
aXB0cykKICAgICAgICAgdXJscy5hcHBlbmQodG9XZWJDb3JlU3RyaW5nKHNjcmlwdFVybCkpOwog
ICAgIH0KIAotICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb05hdGl2ZU9iamVjdDxXb3JrZXJDb250ZXh0PihWOENsYXNzSW5kZXg6OldPUktF
UkNPTlRFWFQsIGFyZ3MuSG9sZGVyKCkpOworICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRl
eHQgPSBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V29ya2VyQ29udGV4
dD4oYXJncy5Ib2xkZXIoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3b3Jr
ZXJDb250ZXh0LT5pbXBvcnRTY3JpcHRzKHVybHMsIGNhbGxlclVSTCwgY2FsbGVyTGluZSwgZWMp
OwpAQCAtMjA3LDcgKzE2OCw3IEBAIENBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0U2V0
SW50ZXJ2YWwpIHsKIENBTExCQUNLX0ZVTkNfREVDTChXb3JrZXJDb250ZXh0QWRkRXZlbnRMaXN0
ZW5lcikKIHsKICAgICBJTkNfU1RBVFMoTCJET00uV29ya2VyQ29udGV4dC5hZGRFdmVudExpc3Rl
bmVyKCkiKTsKLSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhET01XcmFwcGVy
Ojpjb252ZXJ0VG9OYXRpdmVPYmplY3Q8V29ya2VyQ29udGV4dD4oVjhDbGFzc0luZGV4OjpXT1JL
RVJDT05URVhULCBhcmdzLkhvbGRlcigpKTsKKyAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250
ZXh0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPFdvcmtlckNvbnRl
eHQ+KGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKS0+cHJveHkoKS0+ZmluZE9yQ3JlYXRlRXZlbnRM
aXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSksIGZhbHNlLCBmYWxz
ZSk7CiAKQEAgLTIyNCw3ICsxODUsNyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29udGV4
dEFkZEV2ZW50TGlzdGVuZXIpCiBDQUxMQkFDS19GVU5DX0RFQ0woV29ya2VyQ29udGV4dFJlbW92
ZUV2ZW50TGlzdGVuZXIpCiB7CiAgICAgSU5DX1NUQVRTKEwiRE9NLldvcmtlckNvbnRleHQucmVt
b3ZlRXZlbnRMaXN0ZW5lcigpIik7Ci0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFdvcmtlckNvbnRleHQ+KFY4Q2xh
c3NJbmRleDo6V09SS0VSQ09OVEVYVCwgYXJncy5Ib2xkZXIoKSk7CisgICAgV29ya2VyQ29udGV4
dCogd29ya2VyQ29udGV4dCA9IFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2
ZTxXb3JrZXJDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKICAgICBXb3JrZXJDb250ZXh0RXhlY3V0
aW9uUHJveHkqIHByb3h5ID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5KCk7CiAKICAg
ICBSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IHByb3h5LT5maW5kT3JDcmVhdGVF
dmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSwgZmFsc2Us
IHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDQzN2Y1YmEuLjQyNjY4ZTMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgV29ya2VyKiBFdmVudFRhcmdldDo6dG9Xb3JrZXIoKQog
ICAgIHJldHVybiAwOwogfQogCi1Xb3JrZXJDb250ZXh0KiBFdmVudFRhcmdldDo6dG9Xb3JrZXJD
b250ZXh0KCkKK0RlZGljYXRlZFdvcmtlckNvbnRleHQqIEV2ZW50VGFyZ2V0Ojp0b0RlZGljYXRl
ZFdvcmtlckNvbnRleHQoKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggNzNh
MzJlMy4uZjBjNzk0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysg
Yi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIEFic3RyYWN0V29ya2VyOwogICAgIGNsYXNzIEF0b21pY1N0
cmluZzsKKyAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0OwogICAgIGNsYXNzIERPTUFw
cGxpY2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NV2luZG93OwogICAgIGNsYXNzIEV2ZW50OwpA
QCAtNDgsNyArNDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAgICAgY2xhc3MgV29ya2Vy
OwotICAgIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAg
ICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7CiAKQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAgIHZpcnR1
YWwgV29ya2VyKiB0b1dvcmtlcigpOwotICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRleHQqIHRv
V29ya2VyQ29udGV4dCgpOworICAgICAgICB2aXJ0dWFsIERlZGljYXRlZFdvcmtlckNvbnRleHQq
IHRvRGVkaWNhdGVkV29ya2VyQ29udGV4dCgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyQ29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFiODU4NwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5o
IgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rl
ZGljYXRlZFdvcmtlckNvbnRleHQ6OkRlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCisgICAg
OiBXb3JrZXJDb250ZXh0KHVybCwgdXNlckFnZW50LCB0aHJlYWQpCit7Cit9CisKK0RlZGljYXRl
ZFdvcmtlckNvbnRleHQ6On5EZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkKK3sKKyAgICAvLyBOb3Rp
ZnkgcGFyZW50IHdvcmtlciB3ZSBhcmUgZ29pbmcgYXdheS4KKyAgICB0aHJlYWQoKS0+d29ya2Vy
T2JqZWN0UHJveHkoKS53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7Cit9CisKK3ZvaWQgRGVkaWNh
dGVkV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgdGhy
ZWFkKCktPndvcmtlck9iamVjdFByb3h5KCkucG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVy
cm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwordm9pZCBEZWRpY2F0ZWRX
b3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIDAsIGVjKTsKK30KKwordm9p
ZCBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIE1lc3NhZ2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoaXND
bG9zaW5nKCkpCisgICAgICAgIHJldHVybjsKKyAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBp
biBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCisgICAg
T3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9IHBvcnQgPyBwb3J0LT5kaXNlbnRh
bmdsZShlYykgOiAwOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuOworICAgIHRocmVhZCgp
LT53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwg
Y2hhbm5lbC5yZWxlYXNlKCkpOworfQorCit2b2lkIERlZGljYXRlZFdvcmtlckNvbnRleHQ6OmRp
c3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZVBv
cnQ+IHBvcnQpCit7CisgICAgLy8gU2luY2UgY2xvc2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50
IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdldCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KKyAg
ICBBU1NFUlQoIWlzQ2xvc2luZygpKTsKKyAgICBSZWZQdHI8RXZlbnQ+IGV2dCA9IE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKG1lc3NhZ2UsICIiLCAiIiwgMCwgcG9ydCk7CisKKyAgICBpZiAobV9vbm1l
c3NhZ2VMaXN0ZW5lci5nZXQoKSkgeworICAgICAgICBldnQtPnNldFRhcmdldCh0aGlzKTsKKyAg
ICAgICAgZXZ0LT5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOworICAgICAgICBtX29ubWVzc2FnZUxp
c3RlbmVyLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjKTsK
KyAgICBBU1NFUlQoIWVjKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzdjMTNmCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRleHQuaApAQCAtMCww
ICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
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
CisgKi8KKworI2lmbmRlZiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0X2gKKyNkZWZpbmUgRGVkaWNh
dGVkV29ya2VyQ29udGV4dF9oCisKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIERlZGljYXRlZFdvcmtlckNvbnRleHQgOiBwdWJs
aWMgV29ya2VyQ29udGV4dCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEZWRpY2F0ZWRXb3JrZXJDb250ZXh0PiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkKiB0aHJlYWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyQ29udGV4dCh1cmwsIHVz
ZXJBZ2VudCwgdGhyZWFkKSk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB+RGVkaWNhdGVk
V29ya2VyQ29udGV4dCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24o
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgdmlydHVhbCBE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSB7IHJldHVy
biB0aGlzOyB9CisgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYsIE1lc3Nh
Z2VQb3J0KiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHNldE9ubWVzc2FnZShQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbm1lc3NhZ2VMaXN0ZW5l
ciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tZXNzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9vbm1lc3NhZ2VMaXN0ZW5lci5nZXQoKTsgfQorCisgICAgICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRocmVhZCopOworICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbm1lc3NhZ2VMaXN0ZW5lcjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0X2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lYmJlZTMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckNvbnRleHQuaWRsCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgdGhyZWFk
cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTLAorICAg
ICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3Qs
CisgICAgICAgIElzV29ya2VyQ29udGV4dCwKKyAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0
ZXIsCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
IDogV29ya2VyQ29udGV4dCB7CisKKyAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJp
bmcgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CisKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAKaW5kZXggNWZjYzA4MC4uOTY1YzBhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJNZXNzYWdl
RXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZh
bHVlLmgiCkBAIC02NSw4ICs2NSw2IEBAIFdvcmtlckNvbnRleHQ6OldvcmtlckNvbnRleHQoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyCiBXb3JrZXJD
b250ZXh0Ojp+V29ya2VyQ29udGV4dCgpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX3RocmVhZC0+dGhyZWFkSUQoKSk7Ci0KLSAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJv
eHkoKS53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIFdvcmtlckNvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtMTYz
LDIyICsxNjEsNiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFN0cmluZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBX
b3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UsIDAsIGVjKTsKLX0KLQotdm9p
ZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIE1lc3Nh
Z2VQb3J0KiBwb3J0LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAobV9jbG9zaW5nKQot
ICAgICAgICByZXR1cm47Ci0gICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRp
b24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgotICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSBwb3J0ID8gcG9ydC0+ZGlzZW50YW5nbGUoZWMpIDog
MDsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3RocmVhZC0+d29ya2VyT2Jq
ZWN0UHJveHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIGNoYW5uZWwucmVs
ZWFzZSgpKTsKLX0KLQogdm9pZCBXb3JrZXJDb250ZXh0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50
TGlzdGVuZXIsIGJvb2wpCiB7CiAgICAgRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlKTsKQEAgLTI1NSwyMyArMjM3LDYgQEAg
dm9pZCBXb3JrZXJDb250ZXh0OjpjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQpCiAgICAgRE9N
VGltZXI6OnJlbW92ZUJ5SWQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aW1lb3V0SWQpOwog
fQogCi12b2lkIFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQpCi17Ci0gICAgLy8gU2luY2UgY2xv
c2UoKSBzdG9wcyB0aGUgdGhyZWFkIGV2ZW50IGxvb3AsIHRoaXMgc2hvdWxkIG5vdCBldmVyIGdl
dCBjYWxsZWQgd2hpbGUgY2xvc2luZy4KLSAgICBBU1NFUlQoIW1fY2xvc2luZyk7Ci0gICAgUmVm
UHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLCAiIiwgIiIsIDAs
IHBvcnQpOwotCi0gICAgaWYgKG1fb25tZXNzYWdlTGlzdGVuZXIuZ2V0KCkpIHsKLSAgICAgICAg
ZXZ0LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlz
KTsKLSAgICAgICAgbV9vbm1lc3NhZ2VMaXN0ZW5lci0+aGFuZGxlRXZlbnQoZXZ0LmdldCgpLCBm
YWxzZSk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZGlzcGF0Y2hF
dmVudChldnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci19Ci0KIHZvaWQgV29y
a2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29u
c3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBlYyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCBiYTQ3NDU0Li44Mjhj
NTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTQ4LDE3ICs0OCwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0IDogcHVibGljIFJlZkNvdW50
ZWQ8V29ya2VyQ29udGV4dD4sIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMg
RXZlbnRUYXJnZXQgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29y
a2VyQ29udGV4dD4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFdvcmtlclRocmVhZCogdGhyZWFkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdvcmtlckNvbnRleHQodXJsLCB1c2VyQWdlbnQsIHRocmVhZCkpOwotICAg
ICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+V29ya2VyQ29udGV4dCgpOwogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1dvcmtlckNvbnRleHQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7IHJldHVybiB0
aGlzOyB9Ci0KICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KQEAgLTkxLDEyICs4NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
LCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IoKSBjb25zdDsKIAotICAgICAg
ICAvLyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZQotICAgICAgICB2b2lkIHBvc3RNZXNzYWdl
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgdm9pZCBwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmLCBNZXNzYWdlUG9ydCosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAg
dm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25tZXNzYWdlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgICAgIEV2ZW50
TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25tZXNzYWdlTGlzdGVuZXIu
Z2V0KCk7IH0KLQogICAgICAgICAvLyBUaW1lcnMKICAgICAgICAgaW50IHNldFRpbWVvdXQoU2No
ZWR1bGVkQWN0aW9uKiwgaW50IHRpbWVvdXQpOwogICAgICAgICB2b2lkIGNsZWFyVGltZW91dChp
bnQgdGltZW91dElkKTsKQEAgLTExMiw3ICsxMDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVu
dExpc3RlbmVyc01hcDsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJz
KCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCi0gICAgICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+KTsKIAogICAgICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJD
b250ZXh0OjptYXJrKCkgaW4KICAgICAgICAgLy8gSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcC4K
QEAgLTEyMiw5ICsxMDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1c2luZyBS
ZWZDb3VudGVkPFdvcmtlckNvbnRleHQ+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8
V29ya2VyQ29udGV4dD46OmRlcmVmOwogCi0gICAgcHJpdmF0ZToKKyAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIFdvcmtlckNvbnRleHQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIFdvcmtlclRo
cmVhZCopOworICAgICAgICBib29sIGlzQ2xvc2luZygpIHsgcmV0dXJuIG1fY2xvc2luZzsgfQog
CisgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSB7IGRlcmVmKCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgeyByZWYoKTsgfQpAQCAtMTQzLDcgKzEzMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgV29ya2VyVGhyZWFkKiBtX3RocmVhZDsKIAogICAgICAgICBSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gbV9vbmVycm9yTGlzdGVuZXI7Ci0gICAgICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBtX29ubWVzc2FnZUxpc3RlbmVyOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2
ZW50TGlzdGVuZXJzOwogCiAgICAgICAgIGJvb2wgbV9jbG9zaW5nOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaWRsCmluZGV4IGM3YjhjYjkuLjI0MDRkMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5pZGwKQEAgLTI4LDkgKzI4LDEwIEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgIGludGVyZmFj
ZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPVdPUktFUlMsCi0gICAgICAgIERlbGVnYXRpbmdHZXRP
d25Qcm9wZXJ0eVNsb3QsCiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgRGVs
ZWdhdGluZ0dldE93blByb3BlcnR5U2xvdCwKICAgICAgICAgRXh0ZW5kc0RPTUdsb2JhbE9iamVj
dCwKKyAgICAgICAgSXNXb3JrZXJDb250ZXh0LAogICAgICAgICBMZWdhY3lQYXJlbnQ9SlNXb3Jr
ZXJDb250ZXh0QmFzZSwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIFdvcmtlckNvbnRl
eHQgewpAQCAtNDksMTIgKzUwLDYgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICAvLyBEYXRh
YmFzZSBvcGVuRGF0YWJhc2UoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2ZXJzaW9u
LCBpbiBET01TdHJpbmcgZGlzcGxheU5hbWUsIGluIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6
ZSk7CiAgICAgICAgIC8vIERhdGFiYXNlU3luYyBvcGVuRGF0YWJhc2VTeW5jKGluIERPTVN0cmlu
ZyBuYW1lLCBpbiBET01TdHJpbmcgdmVyc2lvbiwgaW4gRE9NU3RyaW5nIGRpc3BsYXlOYW1lLCBp
biB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpOwogCi0KLSAgICAgICAgLy8gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUKLSAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJpbmcg
bWVzc2FnZSwgaW4gW09wdGlvbmFsXSBNZXNzYWdlUG9ydCBtZXNzYWdlUG9ydCkKLSAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbm1lc3NhZ2U7Ci0KICAgICAgICAgLy8gVGltZXJzCiAgICAgICAgIFtDdXN0
b21dIGxvbmcgc2V0VGltZW91dChpbiBUaW1lb3V0SGFuZGxlciBoYW5kbGVyLCBpbiBsb25nIHRp
bWVvdXQpOwogICAgICAgICAvLyBbQ3VzdG9tXSBsb25nIHNldFRpbWVvdXQoaW4gRE9NU3RyaW5n
IGNvZGUsIGluIGxvbmcgdGltZW91dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCBiNmUxNjQyLi45YmFjMmM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogCiAjaW5jbHVkZSAiV29ya2Vy
TWVzc2FnaW5nUHJveHkuaCIKIAorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkdlbmVyaWNXb3JrZXJUYXNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlci5oIgotI2luY2x1
ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKHNjcmlwdENvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAg
ICAgICAgV29ya2VyQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQq
PihzY3JpcHRDb250ZXh0KTsKKyAgICAgICAgRGVkaWNhdGVkV29ya2VyQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckNvbnRleHQqPihzY3JpcHRDb250ZXh0KTsK
ICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0OwogICAgICAgICBpZiAobV9jaGFubmVs
KSB7CiAgICAgICAgICAgICBwb3J0ID0gTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqc2NyaXB0Q29udGV4
dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDA3NDUyMjYuLjVkNThlZWEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAKIAogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgogCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIldv
cmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogCiAjaW5jbHVk
ZSA8dXRpbGl0eT4KQEAgLTEwMSw5ICsxMDEsOSBAQCB2b2lkKiBXb3JrZXJUaHJlYWQ6Ondvcmtl
clRocmVhZCgpCiB7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFkQ3Jl
YXRpb25NdXRleCk7Ci0gICAgICAgIG1fd29ya2VyQ29udGV4dCA9IFdvcmtlckNvbnRleHQ6OmNy
ZWF0ZShtX3N0YXJ0dXBEYXRhLT5tX3NjcmlwdFVSTCwgbV9zdGFydHVwRGF0YS0+bV91c2VyQWdl
bnQsIHRoaXMpOworICAgICAgICBtX3dvcmtlckNvbnRleHQgPSBEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0OjpjcmVhdGUobV9zdGFydHVwRGF0YS0+bV9zY3JpcHRVUkwsIG1fc3RhcnR1cERhdGEtPm1f
dXNlckFnZW50LCB0aGlzKTsKICAgICAgICAgaWYgKG1fcnVuTG9vcC50ZXJtaW5hdGVkKCkpIHsK
LSAgICAgICAgICAgIC8vIFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSB0aHJl
YWQgaGFkIGEgY2hhbmNlIHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRleHQgZGlkbid0IGV4aXN0IHll
dCwgCisgICAgICAgICAgICAvLyBUaGUgd29ya2VyIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUg
dGhyZWFkIGhhZCBhIGNoYW5jZSB0byBydW4uIFNpbmNlIHRoZSBjb250ZXh0IGRpZG4ndCBleGlz
dCB5ZXQsCiAgICAgICAgICAgICAvLyBmb3JiaWRFeGVjdXRpb24oKSBjb3VsZG4ndCBiZSBjYWxs
ZWQgZnJvbSBzdG9wKCkuCiAgICAgICAgICAgIG1fd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPmZv
cmJpZEV4ZWN1dGlvbigpOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>