<?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>215599</bug_id>
          
          <creation_ts>2020-08-17 18:17:42 -0700</creation_ts>
          <short_desc>[WebGL2] Pass context-lost-restored.html test</short_desc>
          <delta_ts>2020-09-25 21:55:07 -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>WebGL</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126404</blocked>
    
    <blocked>215725</blocked>
    
    <blocked>216337</blocked>
    
    <blocked>217003</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1680997</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-17 18:17:42 -0700</bug_when>
    <thetext>The conformance test:
http://localhost:8080/webgl/2.0.0/conformance/context/context-lost-restored.html

(direct link:
webgl/2.0.0/resources/webgl_test_files/conformance/context/context-lost-restored.html )

is failing because the WEBGL_lose_context extension isn&apos;t losing all extensions upon calling loseContext(), and allocating new instances upon restoreContext().

In order to fix this, extensions will have to be refactored slightly, so that even if the context is restored, the old extension object knows that its context was lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681556</commentid>
    <comment_count>1</comment_count>
      <attachid>406895</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-19 17:38:55 -0700</bug_when>
    <thetext>Created attachment 406895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681561</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-19 17:46:33 -0700</bug_when>
    <thetext>The style checker is overzealous in this case; there&apos;s no existing bug, but one would have been introduced in earlier versions of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681564</commentid>
    <comment_count>3</comment_count>
      <attachid>406895</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-19 17:57:28 -0700</bug_when>
    <thetext>Comment on attachment 406895
Patch

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

&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:37
&gt; -ANGLEInstancedArrays::ANGLEInstancedArrays(WebGLRenderingContextBase&amp; context)
&gt; +ANGLEInstancedArrays::ANGLEInstancedArrays(WebGLRenderingContextBase* context)

Since the context must not be null, then it still should be passed as a reference.

&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:41
&gt; +    context-&gt;graphicsContextGL()-&gt;getExtensions().ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);

See, we dereference it here without checking for null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681580</commentid>
    <comment_count>4</comment_count>
      <attachid>406895</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-08-19 18:56:36 -0700</bug_when>
    <thetext>Comment on attachment 406895
Patch

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

&gt; Source/WebCore/html/canvas/WebGLExtension.cpp:41
&gt; +WebGLExtension::WebGLExtension(WebGLRenderingContextBase* context)
&gt;      : m_context(context)
&gt;  {
&gt;  }

So I guess this is where Darin is saying it should be a &amp;, but leave m_context as a *.

&gt; Source/WebCore/html/canvas/WebGLExtension.h:79
&gt; +    // Lose this extension. Passing true means force loss of the
&gt; +    // extension. Some extensions like WEBGL_lose_context are not
&gt; +    // normally lost when the context is lost, but must be lost when
&gt; +    // destroying their WebGLRenderingContextBase.
&gt; +    virtual void lose(bool);
&gt; +    bool isLost() { return !m_context; }

I guess an alternative would be for the extension to hold a WeakPtr to WebGLRenderingContextBase, which would avoid having to call lose(). I&apos;m not sure that&apos;s better, and I guess you&apos;d still need a way to force it on WebGLLoseContext.

Could we use a more descriptive name for the parameter to lose()?

We already have WebGLRenderingContextBase::LostContextMode. Can we use it?
Would it be clear that RealLostContext is a forced one? Maybe we could rename LostContextMode...

enum class LoseContextMode {
  NotForced,
  Forced
};

virtual void loseContext(LoseContextMode == NotForced);

I also think loseContext over lose, since that&apos;s what it is actually doing.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1031
&gt; +        loseExtensions(true);

So if it was a WeakPtr this is where it would automatically disappear.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:6097
&gt; +    loseExtensions(mode == RealLostContext);

If we use LostContextMode we can just pass this mode along.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681821</commentid>
    <comment_count>5</comment_count>
      <attachid>406895</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-20 14:32:26 -0700</bug_when>
    <thetext>Comment on attachment 406895
Patch

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

&gt;&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:37
&gt;&gt; +ANGLEInstancedArrays::ANGLEInstancedArrays(WebGLRenderingContextBase* context)
&gt; 
&gt; Since the context must not be null, then it still should be passed as a reference.

I see. OK. Reverted this here and throughout.

&gt;&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:41
&gt;&gt; +    context-&gt;graphicsContextGL()-&gt;getExtensions().ensureEnabled(&quot;GL_ANGLE_instanced_arrays&quot;);
&gt; 
&gt; See, we dereference it here without checking for null.

Understood. Done.

&gt;&gt; Source/WebCore/html/canvas/WebGLExtension.cpp:41
&gt;&gt;  }
&gt; 
&gt; So I guess this is where Darin is saying it should be a &amp;, but leave m_context as a *.

Understood. Made this change throughout.

&gt;&gt; Source/WebCore/html/canvas/WebGLExtension.h:79
&gt;&gt; +    bool isLost() { return !m_context; }
&gt; 
&gt; I guess an alternative would be for the extension to hold a WeakPtr to WebGLRenderingContextBase, which would avoid having to call lose(). I&apos;m not sure that&apos;s better, and I guess you&apos;d still need a way to force it on WebGLLoseContext.
&gt; 
&gt; Could we use a more descriptive name for the parameter to lose()?
&gt; 
&gt; We already have WebGLRenderingContextBase::LostContextMode. Can we use it?
&gt; Would it be clear that RealLostContext is a forced one? Maybe we could rename LostContextMode...
&gt; 
&gt; enum class LoseContextMode {
&gt;   NotForced,
&gt;   Forced
&gt; };
&gt; 
&gt; virtual void loseContext(LoseContextMode == NotForced);
&gt; 
&gt; I also think loseContext over lose, since that&apos;s what it is actually doing.

Thanks for the suggestion. I would like to be more explicit and avoid using WeakPtr to potentially sweep lifetime issues under the rug. Additionally, extensions&apos; lose() (now loseParentContext()) has to zero out the connection back to the parent context on demand.

Have taken your suggestion to take WebGLRenderingContextBase::LostContextMode here. Didn&apos;t want to rename the enum values since I found NotForced / Forced hard to reason about.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1031
&gt;&gt; +        loseExtensions(true);
&gt; 
&gt; So if it was a WeakPtr this is where it would automatically disappear.

Understood, but I&apos;d like to keep this explicit.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:6097
&gt;&gt; +    loseExtensions(mode == RealLostContext);
&gt; 
&gt; If we use LostContextMode we can just pass this mode along.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681832</commentid>
    <comment_count>6</comment_count>
      <attachid>406972</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-20 14:58:56 -0700</bug_when>
    <thetext>Created attachment 406972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681833</commentid>
    <comment_count>7</comment_count>
      <attachid>406972</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-20 14:59:27 -0700</bug_when>
    <thetext>Comment on attachment 406972
Patch

Addressed previous review feedback. Marking cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681839</commentid>
    <comment_count>8</comment_count>
      <attachid>406972</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-08-20 15:21:44 -0700</bug_when>
    <thetext>Comment on attachment 406972
Patch

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

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:63
&gt; +    auto locker = holdLock(m_context-&gt;objectGraphLock());

What is this lock locking? Can&apos;t it be moved after the next if-statement which returns from this function?

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:66
&gt; -    if (!arrayObject || m_context.isContextLost())
&gt; +    if (!arrayObject || m_context-&gt;isContextLost())
&gt;          return;

It looks like this if-statement can be combined with the one at the top.

if (!arrayObject || !m_context || m_context-&gt;isContextLost())
    return;

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:80
&gt; +    if (!m_context)
&gt; +        return false;
&gt; +
&gt; +    return arrayObject &amp;&amp; !m_context-&gt;isContextLost() &amp;&amp; arrayObject-&gt;hasEverBeenBound()
&gt; +        &amp;&amp; m_context-&gt;graphicsContextGL()-&gt;getExtensions().isVertexArrayOES(arrayObject-&gt;object());

I think these two statements can be combined in one statement:

    return arrayObject &amp;&amp; m_context &amp;&amp; !m_context-&gt;isContextLost() &amp;&amp; ...

&gt; Source/WebCore/html/canvas/OESVertexArrayObject.cpp:88
&gt; +    if (!m_context)
&gt; +        return;
&gt; +
&gt; +    auto locker = holdLock(m_context-&gt;objectGraphLock());

Ditto. Do we need to check arrayObject is not null as we did above ?

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:2663
&gt;  #define ENABLE_IF_REQUESTED(type, variable, nameLiteral, canEnable) \

Is there a reason for not implementing this as a template function? A template function will act the same the same as macro but it will give better compilation errors and it is debuggable.

&gt; Source/WebCore/html/canvas/WebGLExtension.h:79
&gt; +    virtual void loseParentContext(WebGLRenderingContextBase::LostContextMode);

I think this function should return a bool. See my comment below where it is called.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:7759
&gt; +#define LOSE_EXTENSION(variable) \
&gt; +    if (variable) { \
&gt; +        variable-&gt;loseParentContext(mode); \
&gt; +        if (variable-&gt;isLost()) \
&gt; +            (void) variable.releaseNonNull(); \
&gt; +    }

The same comment about making this macro a template function.

Also can we make loseParentContext() return a bool indicating whether it succeeded or not? In this case, this code can be written like this:

    if (variable &amp;&amp; variable-&gt;loseParentContext(mode))
        ...

I am also puzzled by why we need to call variable.releaseNonNull() instead of just calling 

    variable = nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681843</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-20 15:41:06 -0700</bug_when>
    <thetext>Committed r265975: &lt;https://trac.webkit.org/changeset/265975&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406972.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681845</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-20 15:42:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/67511049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681848</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-08-20 15:54:48 -0700</bug_when>
    <thetext>sabouhallawa@ thanks for your feedback. Most of it focuses on code structure which was there previously to my patch. I&apos;d be happy to address it if you&apos;d like to file another bug and block it on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681852</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-20 16:03:53 -0700</bug_when>
    <thetext>I think there is another thread here worth following up on.

Increasingly, the WebKit project is using smart pointers to manage pointer lifetime in a mechanical, low-level way that is easy to get correct from a security perspective. This has greatly increased our use of WeakPtr for pointers to objects where we once used raw pointers.

In many cases, this WeakPtr use is redundant with explicit lifetime management. Functions like &quot;detach&quot; or &quot;lose&quot; or &quot;clear&quot; that explicitly manage the pointer. And of course, those functions are more flexible than WeakPtr: they can clear out the pointer at the correct logical time when it’s not the same time that the object is being destroyed.

However, for security hardening, wider use of WeakPtr is desirable. We don’t want mistakes to lead to dangling pointers. It&apos;s valuable to mitigate this effect, even if those mistakes would do other harm.

This makes me slightly concerned about this remark from a project strategy point of view:

&quot;I would like to be more explicit and avoid using WeakPtr to potentially sweep lifetime issues under the rug.&quot;

I think it’s great if we can smoke out lifetime mistakes, especially in debug builds. If WeakPtr makes it more difficult to do that, we should consider how to enhance it so that it doesn’t get in the way.

This &quot;sweeping of lifetime issues under the rug&quot; is exactly what we *want* from WeakPtr to help prevent our mistakes from being exploitable security vulnerabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692152</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-09-25 21:55:07 -0700</bug_when>
    <thetext>Note that this patch caused significant regression Bug 216337.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406895</attachid>
            <date>2020-08-19 17:38:55 -0700</date>
            <delta_ts>2020-08-20 14:58:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215599-20200819173854.patch</filename>
            <type>text/plain</type>
            <size>86745</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY5ZjZkNTZjOTJmZTcz
MjdmYmUwZDhjNGI4ZTkzYjQ2N2E5NTdkZS4uMzM5MmE5OGM1YmEyMWM3N2IyOWIwYzA1MTczZTlj
MzY4OGFhM2I2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0wOC0xOSAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViR0wyXSBQYXNz
IGNvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgbG9zaW5nIGV4dGVuc2lvbnMsIGFuZCBy
ZXN0b3JpbmcgdGhlbSB2aWEKKyAgICAgICAgV0VCR0xfbG9zZV9jb250ZXh0LgorCisgICAgICAg
IE5lY2Vzc2FyaWx5IGNoYW5nZWQgV2ViR0xFeHRlbnNpb25zIHRvIGJlIFJlZkNvdW50ZWQgcmF0
aGVyIHRoYW4KKyAgICAgICAgbWFuYWdlZCB2aWEgdW5pcXVlX3B0ci4gTXVsdGlwbGUgaW5zdGFu
Y2VzIG9mIHRoZSBzYW1lCisgICAgICAgIFdlYkdMRXh0ZW5zaW9uIHN1YmNsYXNzIGNhbiBub3cg
YmUgdmVuZGVkIGZyb20gYSBXZWJHTCByZW5kZXJpbmcKKyAgICAgICAgY29udGV4dCwgYW5kIFdl
YkdMRXh0ZW5zaW9ucyBjYW4gbm93IG91dGxpdmUgdGhlaXIgcmVuZGVyaW5nCisgICAgICAgIGNv
bnRleHQgLSB0aGV5IGRvIG5vdCByZWYgdGhlaXIgY29udGV4dC4KKworICAgICAgICBFeHRlbnNp
b25zIG5vdyBob2xkIGEgd2VhayBwb2ludGVyIHRvIHRoZWlyCisgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UgcmF0aGVyIHRoYW4gYSBDKysgcmVmZXJlbmNlLiBXaGVuIGFuCisgICAg
ICAgIGV4dGVuc2lvbiBpcyBsb3N0LCB0aGF0IHBvaW50ZXIgaXMgbnVsbGVkIG91dC4gRXh0ZW5z
aW9ucyBhcmUKKyAgICAgICAgZm9yY2libHkgbG9zdCB1cG9uIFdlYkdMIGNvbnRleHQgZGVzdHJ1
Y3Rpb24gaW4gb3JkZXIgdG8gYXZvaWQKKyAgICAgICAgVUFGcyBvZiB0aGVpciBjb250ZXh0Lgor
CisgICAgICAgIFdlYkdMIGV4dGVuc2lvbnMnIElETHMgc3RpbGwgdXNlCisgICAgICAgIEdlbmVy
YXRlSXNSZWFjaGFibGU9SW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgc28gdGhhdCBpZiB0aGUK
KyAgICAgICAgY29udGV4dCBpcyBzdGlsbCBhbGl2ZSwgdGhlIEphdmFTY3JpcHQgd3JhcHBlcnMg
Zm9yIHRoZSBleHRlbnNpb24KKyAgICAgICAgb2JqZWN0cyB3aWxsIGJlIHByZXNlcnZlZC4gKElm
IHRoZSBleHRlbnNpb24gaXMgbG9zdCwgdGhlIGJpbmRpbmdzCisgICAgICAgIHdpbGwgZmV0Y2gg
bnVsbHB0ciBmb3IgdGhlIGNvbnRleHQsIHdoaWNoIHdvbid0IGJlIGluIHRoZSBvcGFxdWUKKyAg
ICAgICAgcm9vdCBzZXQsIHNvIHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIgd29uJ3QgYmUgYXJ0aWZp
Y2lhbGx5IGtlcHQKKyAgICAgICAgYWxpdmUuKQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgV2ViR0wgY29uZm9ybWFuY2UgdGVzdHMuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9BTkdM
RUluc3RhbmNlZEFycmF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUluc3RhbmNlZEFy
cmF5czo6QU5HTEVJbnN0YW5jZWRBcnJheXMpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0
YW5jZWRBcnJheXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3Jl
OjpBTkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAg
ICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFWFRCbGVuZE1pbk1heDo6RVhUQmxlbmRNaW5NYXgpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0VYVEJsZW5kTWluTWF4Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJG
bG9hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xv
ckJ1ZmZlckZsb2F0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OkVYVENvbG9yQnVmZmVy
SGFsZkZsb2F0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9h
dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFWFRGcmFnRGVwdGg6OkVYVEZyYWdEZXB0aCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvRVhURnJhZ0RlcHRoLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVy
ZUxPRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRTaGFkZXJUZXh0dXJlTE9EOjpFWFRTaGFk
ZXJUZXh0dXJlTE9EKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9E
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzo6RVhUVGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVYVHNSR0I6OkVYVHNSR0IpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0VYVHNSR0IuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0VsZW1lbnRJbmRleFVpbnQ6Ok9FU0VsZW1lbnRJ
bmRleFVpbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdExpbmVhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXI6
Ok9FU1RleHR1cmVGbG9hdExpbmVhcik6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0TGluZWFyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpPRVNUZXh0dXJl
SGFsZkZsb2F0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOjpPRVNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFycmF5
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVW
ZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6
ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlP
YmplY3Q6OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJy
YXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VT
VmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZs
b2F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xD
b2xvckJ1ZmZlckZsb2F0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVy
RmxvYXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVQVlJUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mby5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdT
aGFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERl
YnVnU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1No
YWRlcnMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERy
YXdCdWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRHJh
d0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246Omxvc2UpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMRXh0ZW5zaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6
Y29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6aXNMb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xFeHRlbnNpb246OmRlcmVmKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9z
ZUNvbnRleHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3Nl
Q29udGV4dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6cmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6
bG9zZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp+V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4
dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9z
ZUV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKwogMjAyMC0wOC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEJsb2IgaXMgbWlzc2luZyB0ZXh0KCkgJiBhcnJheUJ1ZmZlcigpIG9wZXJhdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJy
YXlzLmNwcAppbmRleCAzZDU3MDEzZmY2YTI1N2I0ZmUwYTM3NzJiMjcxYWRiZTk1ZGEyOWRlLi4x
MjFlY2FjYTIyYmNlZThlNmQ0MTQzNmIxNzVhMmI2MjhkMDY3MDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0zNCwx
MSArMzQsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTkdMRUluc3RhbmNlZEFycmF5
czo6QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKK0FOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkK
IHsKICNpZiBVU0UoQU5HTEUpCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwor
ICAgIGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CiAjZW5kaWYKIH0KIApAQCAtNjgs
MjMgKzY4LDIzIEBAIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogCiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGlmIChtX2NvbnRl
eHQuaXNDb250ZXh0TG9zdCgpKQorICAgIGlmICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXND
b250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LmRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIG1fY29udGV4dC0+
ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAK
IHZvaWQgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9m
ZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4
dExvc3QoKSkKKyAgICBpZiAoIW1fY29udGV4dCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC5kcmF3RWxlbWVudHNJbnN0YW5jZWQo
bW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBtX2NvbnRleHQtPmRy
YXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQp
OwogfQogCiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgaWYgKG1fY29udGV4
dC5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFtX2NvbnRleHQgfHwgbV9jb250ZXh0LT5pc0Nv
bnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQudmVydGV4QXR0cmli
RGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZp
c29yKGluZGV4LCBkaXZpc29yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKaW5kZXgg
ODM3MDkxNDFlZTYyYWI3NDBmM2MwMTUwYWI2MDUyNTA4YzI1MDI4Yi4uMWVlYjZhNjEyMTUyZWQx
NzAyMTJmMTA1Y2ZhYjVmNzFhZWFjMWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIGNsYXNzIEFOR0xFSW5zdGFuY2VkQXJyYXlzIGZp
bmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBTkdM
RUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgZXhwbGlj
aXQgQU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAg
IHZpcnR1YWwgfkFOR0xFSW5zdGFuY2VkQXJyYXlzKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVEJsZW5kTWluTWF4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJs
ZW5kTWluTWF4LmNwcAppbmRleCA0NDA1MWRhMzIyZTc3ODExNDllZTRmYmVjNzdhMTAwZTY2MWY2
NWFiLi45ODdmMWZhOWMxZmYwYzhlN2QwNzIyZDI2NmQyNTJmNzkzYzMyZGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWlu
TWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitFWFRCbGVuZE1pbk1heDo6
RVhUQmxlbmRNaW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6
IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUQmxlbmRNaW5NYXguaAppbmRleCA1OTU5Njg0NGVmM2FmZmY0MTMyNDI2YzNjMDFhZmRh
MDdiZGJlMTU4Li45ZWFmMjlmZDYxMTNmMTk3MGZkYWY5OGFhOTMwMDQ1NGNmMzFhNGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmgKQEAgLTMxLDcgKzMx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRCbGVuZE1pbk1heCBmaW5hbCA6
IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUQmxlbmRN
aW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IEVYVEJsZW5k
TWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5FWFRCbGVu
ZE1pbk1heCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZs
b2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQu
Y3BwCmluZGV4IDE2N2Y3MzllMGYyNDIxOTcxNjUzYTk1MWM3ODY5YTgyZTZmMTU1NmIuLjQ5ZjQ5
YzlkNzZiNmFjYTc4ODcyMjAyMjYxMzE4Y2ZmNjk0MzU0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVyRmxvYXQuY3BwCkBAIC0zMiwxMyArMzIs
MTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRDb2xvckJ1ZmZlckZsb2F0OjpFWFRD
b2xvckJ1ZmZlckZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitFWFRD
b2xvckJ1ZmZlckZsb2F0OjpFWFRDb2xvckJ1ZmZlckZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOworICAgIGNvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfY29sb3JfYnVm
ZmVyX2Zsb2F0Il9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1dl
YkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhUX2Zsb2F0X2JsZW5kIHRvIGJl
IHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9z
KTsKKyAgICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKIH0KIAogRVhUQ29sb3JCdWZmZXJG
bG9hdDo6fkVYVENvbG9yQnVmZmVyRmxvYXQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckZsb2F0LmgKaW5kZXggYzNiNTgzN2EwZmMx
MTIwZDc3OTA3MTM2NTNkZWZkZTRlNDg4NDEyZS4uNjc5ZTMyOTg3ZmNkMTI1YzZiMDA3ZTRhNTNl
ZjE1NDU5OGNhNzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
Q29sb3JCdWZmZXJGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENv
bG9yQnVmZmVyRmxvYXQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEVYVENvbG9yQnVmZmVyRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24g
ewogcHVibGljOgotICAgIGV4cGxpY2l0IEVYVENvbG9yQnVmZmVyRmxvYXQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IEVYVENvbG9yQnVmZmVyRmxvYXQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfkVYVENvbG9yQnVmZmVyRmxvYXQo
KTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQu
Y3BwCmluZGV4IDhlZGEyZWY2YTQzM2E3YzFkYzkxNzg4YzQyNWE2MTM4ODFhY2RmY2YuLjUwNzEw
YmVlNjI3OGFmMWZmOTk3NzYwMGIxMzZjZGI5OWYxYTg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5jcHAKQEAgLTMy
LDEwICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVYVENvbG9yQnVmZmVySGFs
ZkZsb2F0OjpFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQorRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OkVYVENvbG9yQnVmZmVySGFsZkZs
b2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJf
cyk7CisgICAgY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCJfcyk7CiB9CiAKIEVY
VENvbG9yQnVmZmVySGFsZkZsb2F0Ojp+RVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQ29sb3JCdWZmZXJI
YWxmRmxvYXQuaAppbmRleCAwZGNhNTkyMjU3MWYwMDAyMjQ3NjhiMTFkMWU0Y2VjNTNmZjIyZWY4
Li41MDZmNDZkNmMyYjgxODRiMDcwYzBkYzY1ZWFkYzc1ZGFkYmUxMWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVENvbG9yQnVmZmVySGFsZkZsb2F0LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOworICAgIGV4cGxpY2l0IEVYVENvbG9yQnVmZmVySGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5FWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCgpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcAppbmRleCA4NTEzZTMwMGEyYTg5ZjRm
NTg4ZTVhM2FjMDVmMWZhNWM2N2Y3YzhjLi4zZGExOGY2Y2U0OGQ3NTI0MWJiMWNhOGZlNTIyYjk2
YjZjZDI5NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFn
RGVwdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRGcmFnRGVw
dGg6OkVYVEZyYWdEZXB0aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorRVhU
RnJhZ0RlcHRoOjpFWFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5oCmluZGV4IDVlOGE0ZjljMmYzZDY2MTM0MmU0OGM2ZDQ5
NzcwNjhkYzIwZjI5ZTUuLjljZjcwZWIxNmEzMTk1ODQ4M2EwYzliOWFjNmQ0MWFkN2I1YWRiYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5oCkBAIC0zMSw3ICsz
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhURnJhZ0RlcHRoIGZpbmFsIDog
cHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRGcmFnRGVw
dGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IEVYVEZyYWdEZXB0
aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+RVhURnJhZ0RlcHRo
KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAKaW5k
ZXggYTJlOTE4Yzc5MGE5Nzc2ZWYzZDEzYTJhYjkyNDg1YjNiYjViYjRjZC4uMTRiY2I5Yjk4ZGM5
NWJlZTdiNTliN2FhYzI2NDMzYTA5MjdmZGM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRTaGFkZXJUZXh0dXJlTE9EOjpFWFRTaGFkZXJUZXh0
dXJlTE9EKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitFWFRTaGFkZXJUZXh0
dXJlTE9EOjpFWFRTaGFkZXJUZXh0dXJlTE9EKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNv
bnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oCmluZGV4IDQ3YzE5MmYy
MDU5OTdhY2QzMDBlZTI2YmRlYzA5NTNlY2RmYzE0NTIuLmUwMDE5MmE3MWFmYTUyOGQyY2MwODgy
ZmMxMjlkM2FhYTI1NDlmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVFNoYWRlclRleHR1cmVMT0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRTaGFkZXJUZXh0dXJlTE9ELmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFWFRTaGFkZXJUZXh0dXJlTE9EIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5z
aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRTaGFkZXJUZXh0dXJlTE9EKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBleHBsaWNpdCBFWFRTaGFkZXJUZXh0dXJlTE9EKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5FWFRTaGFkZXJUZXh0dXJl
TE9EKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVy
QW5pc290cm9waWMuY3BwCmluZGV4IGRlODJjMDZkYzFmMGE4NTA3OGQzODc0OWY3ZmZmNDI3YTc5
MjgxNjEuLmNlOGMwOTQ0MWMwNGIxY2NmM2ZiNzJiODhjOTMwZmViNTFlNTRhMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWM6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmgKaW5kZXggNDE5N2Q1ZmJiNDA1NGQ4NTU1ZGQwNTU5M2FlNTFlMTc3MDQ3MGJl
MS4uZDFmMjRmNjUxZTc0ZmFhMmIxMGY0NDkxMWNiYWNjODVkNDkzOGM5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewog
cHVibGljOgotICAgIGV4cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgZXhwbGljaXQgRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5FWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
c1JHQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmNwcAppbmRleCAz
ZGQ4NjE1ODJhZmM4NWM0Yjk3NmJkMDUwNTAzZTBiMjRiYmQxMzAxLi4zZDU3ZDNjYTY3NGI0NTQw
NDdhMjg4NTFhMWE0N2ZiNzk3Y2VmNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRzUkdCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRz
UkdCLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVYVHNS
R0I6OkVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK0VYVHNSR0I6
OkVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRzUkdCLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmgK
aW5kZXggNGE2OWNiYTc1NTJjOTUyYjU5NWE2YzJjZjJmNzM5ZTUzZTg5MDNiOS4uYzdjMGRhNDE0
NDU5YTQ3NGY0YzFjYzBmNzYwMGFkMWMzM2Y1MTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVHNSR0IuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVYVHNSR0IgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4
cGxpY2l0IEVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0
IEVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfkVYVHNS
R0IoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcApp
bmRleCA5MjEzYTg5MGU2ZDY4NDA1MTIyNjQ5ZTY2ZDI3MzFmZjk1YTg4YjQ2Li5mYjhhZTJmNThm
OTY0MDRhODAxMmYyYjk1OTU4OTVlM2NhMzA4MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcApAQCAtMzEsNyArMzEsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU0VsZW1lbnRJbmRleFVpbnQ6Ok9FU0VsZW1lbnRJ
bmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK09FU0VsZW1lbnRJ
bmRleFVpbnQ6Ok9FU0VsZW1lbnRJbmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmgKaW5kZXggNDYwMzIx
ZDQ0OGExOGJhNzNjYjE5NTVjMzI0N2U0NTFlMWMxMWY1Ni4uNzk2MGRhNDhmYjRiYTU2M2U2ZWJm
MWZlMDQ2MGQxOTA3ODJhYTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTRWxlbWVudEluZGV4VWludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU0VsZW1lbnRJbmRleFVpbnQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE9FU0VsZW1lbnRJbmRleFVpbnQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IE9FU0VsZW1lbnRJbmRleFVpbnQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IE9FU0VsZW1lbnRJbmRleFVpbnQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfk9FU0VsZW1lbnRJbmRl
eFVpbnQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0
aXZlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRp
dmVzLmNwcAppbmRleCBkMWFhOGQ2OGM2MjQxYTM5ODUwMjkxNWMyOGE3YmE1NTllYzA1ODE3Li45
NDc0MTNlNmU0OTkyYzkyM2E5MTc5OWQzYjgzOWQyZjc3YzAxZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU1N0YW5kYXJkRGVyaXZh
dGl2ZXM6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCkKK09FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9u
KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNTdGFuZGFyZERlcml2YXRpdmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNT
dGFuZGFyZERlcml2YXRpdmVzLmgKaW5kZXggY2NmYzg4NDA2ODdjM2IxNjc1YmRhMWUyZDExYWY5
N2QyOGYyMzkwMS4uM2EyOTY5ZGY1N2UyMDBmNTEyNGNkZTMzNTBmNmU0NGE1NzcyMWUzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2
ZXMuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfk9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMo
KTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKaW5kZXggZDgwMWY2
MDE0NmRjMWU3MDIzNjU5NzM5N2MzNjg1MjE0Mjc1NjY5My4uMDdkZmM3ZTgwOTQ5MWIxYTQyYzEy
M2ViYTM2Y2Y4NDIyM2FkMjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1PRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQorT0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNv
bnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwotICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NI
Uk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOwotICAgIGNvbnRleHQuZ3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2Nv
bG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKKyAgICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQi
X3MpOworICAgIGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKKyAg
ICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfQ0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiX3MpOwogfQogCiBPRVNU
ZXh0dXJlRmxvYXQ6On5PRVNUZXh0dXJlRmxvYXQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IDYzYmUxMmNmYzhkMGMzOTFj
YmZlNzkxMmM0ZTM1MmYxNjA2YjcxODIuLjc2Y2E5MWYyYzc2N2NhYzliZGRiNWE2NDlkNDFhNmYx
ZDllN2NkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4
dHVyZUZsb2F0IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBP
RVNUZXh0dXJlRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIE9FU1RleHR1
cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+T0VTVGV4
dHVyZUZsb2F0KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9h
dExpbmVhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRM
aW5lYXIuY3BwCmluZGV4IDYyNmJkY2Q1YWMxMGMyYjlhOWY5ODcxYzkxZGZhYTliMDkzMWNhN2Mu
LjVjNjcwMGRlMThmMmE5NmU4NTBhMWNiYmNkNzcwZTExMmE3MjZiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU1RleHR1cmVGbG9hdExp
bmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCitPRVNUZXh0dXJlRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVGbG9hdExpbmVhcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdExpbmVhci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0TGluZWFyLmgKaW5kZXggOTNkZDEzNDYwY2QzYWMwNWNlNTFjNzNhNTA1ZDNjODRjNmEz
ZjNkZC4uNTdkYmFkZDZjODA4ODRhOTY2M2U5MWExOTA0MTJhMTQyNWE5ZGRiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNUZXh0dXJlRmxv
YXRMaW5lYXIgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4
cGxpY2l0IE9FU1RleHR1cmVGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CisgICAgZXhwbGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXRMaW5lYXIoKTsKIAogICAgIEV4
dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcAppbmRleCBlYTUzZjVkNmVi
MDQ3MDkyNDI5MWU1MDdmMjZlNTA0NTEwOTU5NTYwLi4wOWU4ZWNlZWRlNzM4NzFhODc5ZjU1OTI1
MWY5MTg4ZjcxZTVhZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0LmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VT
VGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQogICAg
IDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4
dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0Il9zKTsKKyAgICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCJfcyk7CiAgICAg
Ly8gUmVuZGVyYWJpbGl0eSBpcyBpbXBsaWNpdCB3aGVuIHRoaXMgZXh0ZW5zaW9uIGlzIGVuYWJs
ZWQuCi0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKKyAgICBjb250
ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Il9zKTsKIH0KIAogT0VTVGV4dHVyZUhhbGZG
bG9hdDo6fk9FU1RleHR1cmVIYWxmRmxvYXQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKaW5kZXggNTRmMTlmNTA1M2Qx
ZDgxNDk1YmZkNzFiODZlYjVmNzJkYjliYjhjZi4uNmE5YjVlMTBiMzY5ZDdkNGE1NTNlZTZjYTQ4
YTI5OTkyMWY2NTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUhhbGZGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVIYWxmRmxvYXQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE9FU1RleHR1cmVIYWxmRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24g
ewogcHVibGljOgotICAgIE9FU1RleHR1cmVIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOworICAgIE9FU1RleHR1cmVIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVIYWxmRmxvYXQoKTsKIAogICAgIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcAppbmRleCA5NTg0
MGRiMmVkYTYwY2VlM2MyMTNhY2FkZDVmYjQyYWY0YWY1YWNiLi5lNGVjZDA2OTg3YTkwNjU1NmVk
OGVmZTFhNGRiZTFiZDVjMjVlYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKK09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9u
KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKaW5kZXggNDgxMGExMTJiYTllOTJhNWZjZWY0MDgz
MjYyZTlhZGViYWZhYzcyOS4uZWRjNTI5YTlmYTY2MzE3ZTQ4NjRhZWYwNzViNDc4NTdiN2VlYTll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOworICAgIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
Y3BwCmluZGV4IGJkMmY1M2E0NDY5NGE0MTAyMDlmYjk0NGQyMTYwNmY0YTdkN2Q3NDAuLjg4NGJk
NGEzOTVhMzY0ZDQyMDA1OTNkZjM3Y2RlODljODJlOWI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VT
VmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKK09F
U1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0K
QEAgLTQ3LDQ3ICs0Nyw1NiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6Z2V0TmFtZSgpIGNvbnN0CiAKIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQog
ewotICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQorICAgIGlmICghbV9jb250ZXh0
IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKG1f
Y29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VHlwZTo6VXNlcik7Ci0gICAgbV9j
b250ZXh0LmFkZENvbnRleHRPYmplY3Qob2JqZWN0LmdldCgpKTsKKyAgICBhdXRvIG9iamVjdCA9
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZSgqbV9jb250ZXh0LCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpUeXBlOjpVc2VyKTsKKyAgICBtX2NvbnRleHQtPmFkZENvbnRleHRP
YmplY3Qob2JqZWN0LmdldCgpKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCiB2b2lkIE9FU1Zl
cnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTKiBhcnJheU9iamVjdCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29u
dGV4dC5vYmplY3RHcmFwaExvY2soKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFw
aExvY2soKSk7CiAKLSAgICBpZiAoIWFycmF5T2JqZWN0IHx8IG1fY29udGV4dC5pc0NvbnRleHRM
b3N0KCkpCisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2Jq
ZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0
Jj4obV9jb250ZXh0KS5tX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCi0gICAgICAgIHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCY+KG1fY29udGV4dCkuc2V0Qm91bmRWZXJ0ZXhBcnJh
eU9iamVjdChsb2NrZXIsIG51bGxwdHIpOworICAgIGlmICghYXJyYXlPYmplY3QtPmlzRGVmYXVs
dE9iamVjdCgpICYmIGFycmF5T2JqZWN0ID09IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCo+KG1fY29udGV4dCktPm1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0KS0+c2V0Qm91bmRWZXJ0
ZXhBcnJheU9iamVjdChsb2NrZXIsIG51bGxwdHIpOwogCi0gICAgYXJyYXlPYmplY3QtPmRlbGV0
ZU9iamVjdChsb2NrZXIsIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpKTsKKyAgICBhcnJh
eU9iamVjdC0+ZGVsZXRlT2JqZWN0KGxvY2tlciwgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRH
TCgpKTsKIH0KIAogR0NHTGJvb2xlYW4gT0VTVmVydGV4QXJyYXlPYmplY3Q6OmlzVmVydGV4QXJy
YXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGFycmF5T2JqZWN0ICYmICFtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpICYmIGFycmF5T2Jq
ZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkKLSAgICAgICAgJiYgbV9jb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFycmF5T2JqZWN0LT5v
YmplY3QoKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkgJiYg
YXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKQorICAgICAgICAmJiBtX2NvbnRleHQtPmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFycmF5
T2JqZWN0LT5vYmplY3QoKSk7CiB9CiAKIHZvaWQgT0VTVmVydGV4QXJyYXlPYmplY3Q6OmJpbmRW
ZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBhcnJheU9iamVjdCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29udGV4dC5vYmplY3RHcmFwaExvY2soKSk7
CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAobV9j
b250ZXh0LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhcnJheU9iamVjdCAmJiAoYXJyYXlPYmpl
Y3QtPmlzRGVsZXRlZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUobnVsbHB0ciwgY29udGV4
dCgpKSkpIHsKLSAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgaWYg
KGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZShudWxscHRyLCAqY29udGV4dCgpKSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5n
cmFwaGljc0NvbnRleHRHTCgpLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6
SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byYg
ZXh0ZW5zaW9ucyA9IG1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25z
KCk7Ci0gICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4o
bV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5ncmFwaGljc0Nv
bnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCk7CiAgICAgaWYgKGFycmF5T2JqZWN0
ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QtPm9iamVj
dCgpKSB7CiAgICAgICAgIGV4dGVuc2lvbnMuYmluZFZlcnRleEFycmF5T0VTKGFycmF5T2JqZWN0
LT5vYmplY3QoKSk7CiAgICAgICAgIGFycmF5T2JqZWN0LT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3Qu
aAppbmRleCA5NTA4ZTZhNThlNjMxYTYyZjYzZjA0MGIzNmZlZjEyZTNkMTVmZTlkLi5iMjRkM2Zl
YWMxMWQzMDhiNTIxOTI1NTg5MGUyN2I4NTRlZmU4NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgKQEAgLTM3LDcgKzM3LDcgQEAg
Y2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAogY2xhc3MgT0VTVmVydGV4QXJyYXlP
YmplY3QgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxp
Y2l0IE9FU1ZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICBleHBsaWNpdCBPRVNWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Kik7CiAKICAgICBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gY3JlYXRlVmVydGV4
QXJyYXlPRVMoKTsKICAgICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJy
YXlPYmplY3RPRVMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMmEzNDNjYjVjYTAyOTU1YTQwMTg5NjRlYWI1
ZDdkNTQ2YzFhNDk4My4uYzYwZTgzNWY1YzhkOTg3NDE5OGRmMmI2MTc2YzAyMjg2YWE2YWYxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTI2NjMsNyArMjY2Myw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmlu
ZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5h
YmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwp
KSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9
IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAg
ICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gYWRvcHRSZWYobmV3IHR5cGUodGhpcykp
IDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lv
bigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmNwcAppbmRleCA3ZmY3ZGVjNzNjZDYw
OWVkZDU5MDc5ZTYyZDcyNWE3Mzc0OWY1YWFjLi5iNjE2OGJjM2RjYzM0MDIwN2RjMzliZjBlMWI5
OWRjMWQ1NjNkNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbG9yQnVmZmVyRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAKQEAgLTMyLDE1ICszMiwxNSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdlYkdMQ29sb3JCdWZmZXJGbG9hdDo6V2ViR0xDb2xvckJ1ZmZlckZsb2F0
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTENvbG9yQnVmZmVyRmxv
YXQ6OldlYkdMQ29sb3JCdWZmZXJGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBo
aWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlV
TV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiYSJfcyk7CisgICAgY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9y
X2J1ZmZlcl9mbG9hdF9yZ2JhIl9zKTsKICAgICAvLyBPcHRpbWlzdGljYWxseSBlbmFibGUgUkdC
IGZsb2F0aW5nLXBvaW50IHJlbmRlciB0YXJnZXRzIGFsc28sIGlmIHBvc3NpYmxlLgotICAgIGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2IiX3MpOworICAgIGNvbnRleHQtPmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9DSFJP
TUlVTV9jb2xvcl9idWZmZXJfZmxvYXRfcmdiIl9zKTsKICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vS2hyb25vc0dyb3VwL1dlYkdML3B1bGwvMjgzMAogICAgIC8vIFNwZWMgcmVxdWlyZXMgRVhU
X2Zsb2F0X2JsZW5kIHRvIGJlIHR1cm5lZCBvbiBpbXBsaWNpdGx5IGhlcmUuCi0gICAgY29udGV4
dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX2Zsb2F0X2JsZW5kIl9zKTsKKyAgICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2Zsb2F0X2JsZW5kIl9zKTsKIH0K
IAogV2ViR0xDb2xvckJ1ZmZlckZsb2F0Ojp+V2ViR0xDb2xvckJ1ZmZlckZsb2F0KCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb2xvckJ1
ZmZlckZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVy
RmxvYXQuaAppbmRleCBiZjZmNDhkNTU4ODVlOTMwOGYwZjkzNmZlYjFlNjI5MDlmYjcxMWEzLi44
ZDQ1YjdmYjgyOTg4ZmM3YmQ5Y2ZhZmUwYTU0YjkwMWEwNTUwYTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbG9yQnVmZmVyRmxvYXQuaApAQCAtMzMsNyAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29sb3JCdWZmZXJGbG9h
dCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBl
eHBsaWNpdCBXZWJHTENvbG9yQnVmZmVyRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OwogICAgIHZpcnR1YWwgfldlYkdMQ29sb3JCdWZmZXJGbG9hdCgpOwogCiAgICAgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAKaW5kZXggMWJm
ZjQzYjc3ZTc4YzhkMTYzOGUyODc5MTcwMDIyY2JjMmVhOGRlZi4uZGE3ZTIxNzJjNzkyYmQwZDk3
NDI4ZDIyZGI3Y2E0YWM0ZmZmM2EzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcApAQCAtMzQsNDMgKzM0
LDQzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBU1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM6OldlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBU1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiAgICAgOiBX
ZWJHTEV4dGVuc2lvbihjb250ZXh0KQotICAgICwgbV9pc0hEUlN1cHBvcnRlZChjb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpKQotICAgICwgbV9pc0xEUlN1cHBvcnRlZChjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiX3MpKQorICAgICwgbV9pc0hEUlN1cHBvcnRl
ZChjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIl9zKSkKKyAgICAsIG1faXNMRFJT
dXBwb3J0ZWQoY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciJfcykpCiB7Ci0gICAg
Y29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpOwotICAgIGNvbnRleHQu
Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIl9zKTsKKyAgICBjb250ZXh0LT5ncmFwaGlj
c0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19oZHIiX3MpOworICAgIGNvbnRleHQtPmdyYXBoaWNzQ29udGV4
dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9LSFJfdGV4dHVyZV9jb21w
cmVzc2lvbl9hc3RjX2xkciJfcyk7CiAKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUik7Ci0gICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNT
RURfUkdCQV9BU1RDXzV4NF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SR0JBX0FTVENfNng1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIpOwotICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ184eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzh4OF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUik7Ci0gICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIpOwotICAgIGNv
bnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHgxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIpOwotICAg
IGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1JHQkFfQVNUQ18xMngxMl9LSFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUik7Cisg
ICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIpOwor
ICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUik7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSKTsK
KyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNP
TVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUik7
CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hS
KTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6
OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhf
S0hSKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUik7CisgICAgY29udGV4dC0+YWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMF9LSFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSKTsKICAgICAKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRf
S0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSKTsKLSAgICBjb250ZXh0LmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ182eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSKTsK
LSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ184eDZfS0hSKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2Vk
VGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5z
aW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSKTsKLSAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEy
eDEwX0tIUik7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSKTsKKyAgICBjb250
ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUik7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4
NF9LSFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSKTsKKyAgICBjb250ZXh0
LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUik7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9L
SFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSKTsKKyAgICBjb250ZXh0LT5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfOHg2X0tIUik7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIp
OworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUik7CisgICAgY29udGV4dC0+YWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDZfS0hSKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIp
OworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIpOworICAgIGNvbnRleHQtPmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ18xMngxMF9LSFIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9L
SFIpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQzo6fldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgKaW5kZXggOTNiN2U2MTdjOTUzM2Vj
ZDRhOGFiMThkMDNjZjVhZTc3NDc1ZTQ0MS4uYzY3NzJlNjUzODIyNWRlNDI5YTRlNDc3NjE2MzZk
MjdiZDBlMjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMgZmluYWwgOiBwdWJs
aWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBU1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBleHBsaWNpdCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAg
ICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMoKTsKIAogICAgIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRleCA5Zjgx
ZmIwODFlMTVlOGI2YWU5ZWI3MGI1YWE2ODE3NGM0MmM4OWRlLi43MDVjNWU3YjkyYWIzNjE5YWZl
MzJkYWRlMTI5NWE3NjQ1ZTAxZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMzMsMTQgKzMzLDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250
ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwor
ICAgIGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwogCi0gICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JH
Ql9BTUQpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7Ci0gICAgY29udGV4
dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRD
X1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAg
ICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBS
RVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LT5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5U
RVJQT0xBVEVEX0FMUEhBX0FNRCk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6On5X
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCmluZGV4IDgx
OTZhMDY0MmE1ZmFlYWY3N2YwMGVhYTFjN2NiMzQ4Mzc3MmRiZGUuLjFhZjI3Mjk4NjdlOTdhYjFi
NWM4ODA3YWY3NWJkZjE5Yjk5MTAzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKQEAgLTM1LDcgKzM1LDcgQEAg
Y2xhc3MgV2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDIGZp
bmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCk7CiAKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVU
Qy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
RVRDLmNwcAppbmRleCBhNmE1NGFhMTUzNzA4NmZlMjlmMWM2MmU3M2E5YjAxMzVhZjNmNzgxLi4z
YzMxOGIxOTE1Y2Y1OTU0OTFkOGRhYTRkYzBhYTYxNjRmYWY1OWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDLmNw
cApAQCAtMzMsMjEgKzMzLDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZUVUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQog
ICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9jb21wcmVz
c2VkX3RleHR1cmVfZXRjIik7CisgICAgY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0
RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9l
dGMiKTsKIAotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9u
c0dMOjpDT01QUkVTU0VEX1IxMV9FQUMpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKLSAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NF
RF9SRzExX0VBQyk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDKTsKLSAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X0VUQzIp
OwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpD
T01QUkVTU0VEX1NSR0I4X0VUQzIpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9F
VEMyKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNH
TDo6Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpOwotICAgIGNvbnRl
eHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JH
QkE4X0VUQzJfRUFDKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMpOworICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9S
MTFfRUFDKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMpOworICAgIGNvbnRleHQtPmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SRzExX0VBQyk7Cisg
ICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQyk7CisgICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1
cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQjhfRVRDMik7CisgICAgY29udGV4
dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1NS
R0I4X0VUQzIpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAg
Y29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMik7CisgICAgY29udGV4dC0+YWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkE4X0VUQzJf
RUFDKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
R0w6OkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDKTsKIH0KIAogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUVUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlRVRDLmgKaW5kZXggN2EzMzhhZGEyNmViOTI0Y2NhYTEwMjViODc4YmEzZDkyM2RmOGE0Ni4u
MjcyMzRlNmI0ZTZmMTQ1NDRiYzdjNDQxZTY0MTNkNTNhNDliMGU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMoKTsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlRVRDMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlRVRDMS5jcHAKaW5kZXggZmIzZGZlYWZmYTYwYmY1OGUyYjZkZWI0
MTQxNThjZDNmMTllNzg4OC4uYjgyYzc3ZjRjZWRhZmE2NjZlZjE3ZDEzMDMxZjI1ZWNjN2JjNjQ2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQzEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzE6OldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVFVEMxKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKKyAgICBjb250
ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKTsKIAotICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpFVEMxX1JHQjhfT0VTKTsKKyAg
ICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkVUQzFf
UkdCOF9PRVMpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMTo6fldlYkdMQ29tcHJl
c3NlZFRleHR1cmVFVEMxKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMxLmgKaW5kZXggMGY3NmE0ODBj
M2Q2YjViNjVhZDJhYWM5MzA4YmFhZjdiZjA2NzBmZi4uMTMxMWEzMDQ1YjIxOTY1MzNjMzdiODY2
ZjUzZDg3YzJmZTJiZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEgZmluYWwg
OiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMxKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBleHBs
aWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Kik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQzEoKTsKIAogICAgIHN0
YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmNwcAppbmRleCA5MzU5OWFjM2M3ZTc5YmMwOTY5MDBlN2ZkNDIxZmMwNDVkMzRmN2Zi
Li4yMWYxZTA4NWQzNDQ3N2NlOTkyNWQzZjViMTIzMzFjZmNiZDc5Yzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQy5jcHAKQEAgLTM0LDE1ICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250
ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOworICAgIGNvbnRleHQtPmdyYXBoaWNz
Q29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9JTUdfdGV4dHVy
ZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogCi0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOwot
ICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01Q
UkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOwotICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dM
OjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC0+YWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180
QlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRl
bnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOworICAgIGNvbnRleHQt
PmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JB
X1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCmluZGV4IGExOGYzY2ZlNTYxNGMwNWUwYzE3
ZTI2MWU4MjU2M2MyYTEyNzRmYzIuLmM1M2JmYTNhOTQ5ZGY0YzdjZjNhNmNhMWQzYTM0OWJjMDhi
YjI2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDIGZpbmFsIDogcHVibGlj
IFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAg
ICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCk7CiAKICAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMu
Y3BwCmluZGV4IGEzZDE1MWVkOWNhMzZlZDUzMWUxODRmY2JjYTQ1NDBiZWQ2MTlhYjcuLjRjMmUz
Mjg3ZDhjMmYyODIwYWQyZWM5ZjYwYjU5YTE3OWJlMWU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAK
QEAgLTM0LDE4ICszNCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQp
CiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGF1dG8mIGV4dGVuc2lvbnMg
PSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBhdXRv
JiBleHRlbnNpb25zID0gY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpOwogICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpOwogICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQzIik7CiAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKCJH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKTsKIAotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUKTsKLSAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uc0dMOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQzX0VYVCk7Ci0gICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zR0w6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKKyAgICBjb250ZXh0LT5hZGRD
b21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zR0w6OkNPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQtPmFk
ZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19FWFQpOworICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnNHTDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQogCiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDLmgKaW5kZXggYTc2YzMxODdiYTkyZTZkMDY4NTQyOTUyYTZiOGViNDVm
YjBlMzczOC4uMDdhNjNiMDJkZjRlYTg0YjczNTljNzk4MDA4MDUyZTQ3NjI4ZWRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMz
VEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYkdMVGV4dHVyZTsKIAogY2xhc3Mg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24g
ewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMoKTsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCmluZGV4IGM5YmQ5ZjE0YzMzZDRjOGE4
M2ZjZjQ2OGVlNWNjODdmYjdlNWQzODkuLjhhM2E2NDhmMjM5MTg4NTBlZjYzYTI0ZDBmYzI4ZmJi
ZGYwMDQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVidWdSZW5kZXJlckluZm8uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorV2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250
ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaAppbmRleCA2ZDM1
NjJlYjgwZGYzYzllMzdjM2RiZDNmYjJhOTBiZDgyOTBkMjk1Li5kYTUwMGZhN2ZmYjYwZmFhOTMz
ZDg2OTc0NzA5NjQ4ZDUyN2ZlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVU5NQVNLRURfUkVOREVSRVJfV0VCR0wgPSAweDkyNDYKICAgICB9OwogCi0gICAg
ZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbygpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKaW5kZXggYzU1ODQ4YmY3
ZjU2YjA2N2Q4NzQ2NmI0OGM4NmZhNzE2M2Y0MzJhZi4uYzg5MjIwNjA1MTVkOWYyNjYxZWIyZmM4
ZDJkM2JlMzY5YWMwOTgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzUsMTAgKzM1LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1No
YWRlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IFdlYkdMRXh0
ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291
cmNlIik7CisgICAgY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpOwogfQog
CiBXZWJHTERlYnVnU2hhZGVyczo6fldlYkdMRGVidWdTaGFkZXJzKCkgPSBkZWZhdWx0OwpAQCAt
NTAsMTEgKzUwLDExIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVidWdT
aGFkZXJzOjpnZXROYW1lKCkgY29uc3QKIAogU3RyaW5nIFdlYkdMRGVidWdTaGFkZXJzOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlKFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgaWYgKG1f
Y29udGV4dC5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFtX2NvbnRleHQgfHwgbV9jb250ZXh0
LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBpZiAoIW1f
Y29udGV4dC52YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwg
JnNoYWRlcikpCisgICAgaWYgKCFtX2NvbnRleHQtPnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRl
bnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlci5vYmplY3QoKSk7
CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFkZXIub2JqZWN0KCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuaAppbmRleCA0NTYwZTIyY2Q5MTMxMjAxM2ZjNTk1NjIwYTA1M2E3
Yzg1NjBlYWNlLi44NGEzNzE5YWI0ZDA3MDU5MWUwZmIyMDQ4NTgyNmI1NTgxNDZiNjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKQEAgLTM1
LDcgKzM1LDcgQEAgY2xhc3MgV2ViR0xTaGFkZXI7CiAKIGNsYXNzIFdlYkdMRGVidWdTaGFkZXJz
IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgZXhwbGlj
aXQgV2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZp
cnR1YWwgfldlYkdMRGVidWdTaGFkZXJzKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcAppbmRleCA0NTMxZTlmNmNhMWFmMDYyOGE0NmQ3ZWRiNmM3MzUxMGM4
NDgxMjRmLi4wNTUzZDRhM2QxMTUyZWY3MGM5NDUxOTRjZDEwYjIwYmM1YmNjMzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCkBAIC0z
MywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTERlcHRoVGV4dHVy
ZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
K1dlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpOwotICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7
CisgICAgY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX09FU19kZXB0aF90ZXh0dXJlIik7CisgICAgY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FSQl9kZXB0aF90
ZXh0dXJlIik7CiB9CiAKIFdlYkdMRGVwdGhUZXh0dXJlOjp+V2ViR0xEZXB0aFRleHR1cmUoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
cHRoVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1
cmUuaAppbmRleCAwZjhiOTlkNDI0NGRlM2IyYjgzYTZiZmZlMjI0YThiMjNhYzY3MTMxLi5kMGJj
YmVlMTdhOWE5YTU4NzNjMTZmNzVlYWRkMmE2MDIzYTc1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERlcHRoVGV4dHVyZSBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xEZXB0aFRleHR1
cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhU
ZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5XZWJHTERl
cHRoVGV4dHVyZSgpOwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuY3BwCmluZGV4IDIzZTEzZGQzYzZmNDNmMTk2MzIyYzZlM2Q1YjU3OWNiZGIxYWE1MDIu
LjBhZDFkMzA4ZDg1YmQ1ZTAwYzE5NWQxNTEyNThiNTA4MGJjMWY0NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC0zMiwxMCArMzIs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTERyYXdCdWZmZXJzOjpXZWJHTERy
YXdCdWZmZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTERyYXdC
dWZmZXJzOjpXZWJHTERyYXdCdWZmZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3
X2J1ZmZlcnMiKTsKKyAgICBjb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwogfQogCiBXZWJHTERy
YXdCdWZmZXJzOjp+V2ViR0xEcmF3QnVmZmVycygpID0gZGVmYXVsdDsKQEAgLTU3LDM1ICs1Nywz
NSBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQogCiB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VC
R0woY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykKIHsKLSAgICBpZiAobV9jb250ZXh0
LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIW1fY29udGV4dCB8fCBtX2NvbnRleHQtPmlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdDR0xzaXplaSBuID0gYnVmZmVycy5z
aXplKCk7CiAgICAgY29uc3QgR0NHTGVudW0qIGJ1ZnMgPSBidWZmZXJzLmRhdGEoKTsKLSAgICBp
ZiAoIW1fY29udGV4dC5tX2ZyYW1lYnVmZmVyQmluZGluZykgeworICAgIGlmICghbV9jb250ZXh0
LT5tX2ZyYW1lYnVmZmVyQmluZGluZykgewogICAgICAgICBpZiAobiAhPSAxKSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFM
SURfVkFMVUUsICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gb25lIGJ1ZmZl
ciIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChidWZzWzBd
ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLICYmIGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250ZXh0
R0w6Ok5PTkUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkJB
Q0sgb3IgTk9ORSIpOworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwg
IkJBQ0sgb3IgTk9ORSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxhdGVkIG9uIGFsbCBjdXJyZW50IFdl
YktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4K
ICAgICAgICAgR0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9PSBHcmFwaGljc0NvbnRleHRHTDo6
QkFDSykgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRUQUNITUVOVDAgOiBHcmFwaGljc0Nv
bnRleHRHTDo6Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdl
dEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwotICAgICAgICBtX2NvbnRl
eHQuc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CisgICAgICAgIG1fY29udGV4dC0+Z3JhcGhp
Y3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7
CisgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQuZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewot
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdM
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gbWF4IGRyYXcg
YnVmZmVycyIpOworICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMo
KSkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1h
eCBkcmF3IGJ1ZmZlcnMiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgaWYgKGJ1
ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYgYnVmc1tpXSAhPSBzdGF0aWNfY2Fz
dDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBpKSkgewot
ICAgICAgICAgICAgICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFD
SE1FTlRpX0VYVCBvciBOT05FIik7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVm
ZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRpX0VYVCBvciBOT05FIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4
dC5tX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CisgICAgICAgIG1f
Y29udGV4dC0+bV9mcmFtZWJ1ZmZlckJpbmRpbmctPmRyYXdCdWZmZXJzKGJ1ZmZlcnMpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3
QnVmZmVycy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5o
CmluZGV4IDIyY2MwMTVjMGI0YmFhNGU5NWZlNTAzNmU1NmUyYjQyMzI1OWM2MzkuLjhmOTE5OThi
NDQzYWViMmFhZDQ4ODM4ZTRkYTMwZjBkMjI2NzE3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERyYXdCdWZmZXJzIGZpbmFsIDogcHVibGljIFdlYkdM
RXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZmZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZmZXJzKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5XZWJHTERyYXdCdWZmZXJz
KCk7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwCmlu
ZGV4IGI0NGJjZjgyMjA5ZTg0YWFhNmNkMGI3ODU4MmE4YzdiOGVlMWIxZTYuLmUyODM1ZDE1YjUw
MDE2MTExMWE1MzFhNzg3ZTMzOTJiNWIzNDA0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKQEAgLTI5LDE1ICsyOSwyNCBAQAogCiAjaW5jbHVk
ZSAiV2ViR0xFeHRlbnNpb24uaCIKIAorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9u
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViR0xFeHRlbnNpb24pOworCitXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRlbnNp
b24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogewogfQogCiBXZWJHTEV4dGVuc2lvbjo6fldlYkdMRXh0ZW5zaW9uKCkgPSBkZWZh
dWx0OwogCit2b2lkIFdlYkdMRXh0ZW5zaW9uOjpsb3NlKGJvb2wpCit7CisgICAgbV9jb250ZXh0
ID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgK
aW5kZXggZDI5YjU4NTAxYmNhODMwNThjZjYwM2EwMmY2MjI0YzFlMTIwZGRhZC4uYTk0NTQ0Mjlm
ZDI0YTI0MjYzNDA4NWE4MmRjOWU1OWYwMTM5ZThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpZiBFTkFCTEUo
V0VCR0wpCiAKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJH
TEV4dGVuc2lvbiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBXZWJHTEV4
dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdMRXh0ZW5zaW9uPiB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJHTEV4dGVuc2lvbik7CiBwdWJsaWM6CiAgICAgLy8gRXh0ZW5z
aW9uIG5hbWVzIGFyZSBuZWVkZWQgdG8gcHJvcGVybHkgd3JhcCBpbnN0YW5jZXMgaW4gSmF2YVNj
cmlwdCBvYmplY3RzLgogICAgIGVudW0gRXh0ZW5zaW9uTmFtZSB7CkBAIC02NSwxNiArNjYsMjEg
QEAgcHVibGljOgogICAgICAgICBFWFRDb2xvckJ1ZmZlckZsb2F0TmFtZSwKICAgICB9OwogCi0g
ICAgdm9pZCByZWYoKSB7IG1fY29udGV4dC5yZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSB7IG1f
Y29udGV4dC5kZXJlZigpOyB9Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIHZpcnR1YWwgfldlYkdMRXh0
ZW5zaW9uKCk7CiAgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCA9IDA7
CiAKKyAgICAvLyBMb3NlIHRoaXMgZXh0ZW5zaW9uLiBQYXNzaW5nIHRydWUgbWVhbnMgZm9yY2Ug
bG9zcyBvZiB0aGUKKyAgICAvLyBleHRlbnNpb24uIFNvbWUgZXh0ZW5zaW9ucyBsaWtlIFdFQkdM
X2xvc2VfY29udGV4dCBhcmUgbm90CisgICAgLy8gbm9ybWFsbHkgbG9zdCB3aGVuIHRoZSBjb250
ZXh0IGlzIGxvc3QsIGJ1dCBtdXN0IGJlIGxvc3Qgd2hlbgorICAgIC8vIGRlc3Ryb3lpbmcgdGhl
aXIgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS4KKyAgICB2aXJ0dWFsIHZvaWQgbG9zZShib29s
KTsKKyAgICBib29sIGlzTG9zdCgpIHsgcmV0dXJuICFtX2NvbnRleHQ7IH0KKwogcHJvdGVjdGVk
OgotICAgIFdlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKLSAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBtX2NvbnRleHQ7CisgICAgV2ViR0xFeHRlbnNpb24o
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKaW5kZXggZDZhMDFkM2Yx
NWM0YWVlNDFlZTA5ZTI4YWU1NDA2ZDEzZGRiN2UxOC4uNjYzZGQ2NmEwMTYzNDgzNzUxNWE0NzM0
MTQ4MzY1ZTI0NTMxNDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xMb3NlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xMb3NlQ29udGV4dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1XZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCitXZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewogfQpAQCAtNDcsMTQgKzQ3LDI3IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNp
b25OYW1lIFdlYkdMTG9zZUNvbnRleHQ6OmdldE5hbWUoKSBjb25zdAogCiB2b2lkIFdlYkdMTG9z
ZUNvbnRleHQ6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBtX2NvbnRleHQuZm9yY2VMb3N0Q29udGV4
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpTeW50aGV0aWNMb3N0Q29udGV4dCk7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+Zm9yY2VM
b3N0Q29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpTeW50aGV0aWNMb3N0Q29udGV4
dCk7CiB9CiAKIHZvaWQgV2ViR0xMb3NlQ29udGV4dDo6cmVzdG9yZUNvbnRleHQoKQogewotICAg
IG1fY29udGV4dC5mb3JjZVJlc3RvcmVDb250ZXh0KCk7CisgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+Zm9yY2VSZXN0b3JlQ29udGV4dCgpOwor
fQorCit2b2lkIFdlYkdMTG9zZUNvbnRleHQ6Omxvc2UoYm9vbCBmb3JjZSkKK3sKKyAgICBpZiAo
Zm9yY2UpCisgICAgICAgIFdlYkdMRXh0ZW5zaW9uOjpsb3NlKHRydWUpOwogfQogCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAppbmRleCA4MWIwYjRiOTNhZWVm
OGUxM2MzN2QxMjVhYzIyNjIxZTVlYmFkYTZjLi5lODE2YmM0MTNiYzE2MTQxZjcyMzc4MGEzMmRk
MjEwMWMyMzk0ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TExvc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3Nl
Q29udGV4dC5oCkBAIC0zNSwxMCArMzUsMTEgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTsKIAogY2xhc3MgV2ViR0xMb3NlQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVu
c2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CisgICAgZXhwbGljaXQgV2ViR0xMb3NlQ29udGV4dChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+V2ViR0xMb3NlQ29udGV4dCgpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBs
b3NlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb3NlQ29udGV4dCgpOwogICAgIHZvaWQg
cmVzdG9yZUNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZjZDY0YTUxYjA1NDJlZDhkOWMyYjlmMzQz
NGMxNDhhNDZkYzE2YTMuLmJjZTBiN2RhMjdjOGIxMGYwNDc1YTI0MjMzNGVjYjhkMDczNDgxYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVO
QUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUp
IFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsg
XAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNh
bkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAg
ICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBhZG9wdFJlZihuZXcgdHlwZSh0aGlzKSkgOiBu
dWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0
aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTE0Myw3ICsxNDMsNyBAQCBXZWJHTEV4dGVu
c2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKLSAgICAg
ICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBtYWtlVW5pcXVlPEVYVFNoYWRlclRl
eHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0Qg
PSBhZG9wdFJlZihuZXcgRVhUU2hhZGVyVGV4dHVyZUxPRCh0aGlzKSk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5h
bWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xF
eHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAg
ICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigq
dGhpcyk7CisgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gYWRvcHRSZWYobmV3
IFdlYkdMRHJhd0J1ZmZlcnModGhpcykpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
ICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAgICAgICAgICBt
X2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbWFrZVVuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4o
KnRoaXMpOworICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBhZG9wdFJl
ZihuZXcgQU5HTEVJbnN0YW5jZWRBcnJheXModGhpcykpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwMWQ2MTNiNDFhYTlj
ZDk4OWZiOTU5OTRhZGIyNGJjNDc1ZTA4YjBjLi43Yzc3ZjQ1MWIzZDZmMjA5NzliZjcxNTU4ZjU0
ZmRhZDZhMGZmZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTAyOCw2ICsxMDI4LDcgQEAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6fldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoKQogCiAg
ICAgaWYgKCFtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pIHsKICAgICAgICAgZGV0YWNoQW5k
UmVtb3ZlQWxsT2JqZWN0cygpOworICAgICAgICBsb3NlRXh0ZW5zaW9ucyh0cnVlKTsKICAgICAg
ICAgZGVzdHJveUdyYXBoaWNzQ29udGV4dEdMKCk7CiAgICAgICAgIG1fY29udGV4dEdyb3VwLT5y
ZW1vdmVDb250ZXh0KCp0aGlzKTsKICAgICB9CkBAIC02MDkzLDYgKzYwOTQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0QwogICAgIH0KIAogICAgIGRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMo
KTsKKyAgICBsb3NlRXh0ZW5zaW9ucyhtb2RlID09IFJlYWxMb3N0Q29udGV4dCk7CiAKICAgICAv
LyBUaGVyZSBpcyBubyBkaXJlY3Qgd2F5IHRvIGNsZWFyIGVycm9ycyBmcm9tIGEgR0wgaW1wbGVt
ZW50YXRpb24gYW5kCiAgICAgLy8gbG9vcGluZyB1bnRpbCBnZXRFcnJvcigpIGJlY29tZXMgTk9f
RVJST1IgbWlnaHQgY2F1c2UgYW4gaW5maW5pdGUgbG9vcCBpZgpAQCAtNzc0Nyw2ICs3NzQ5LDQ0
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlU3VwcG9ydGVkRXh0ZW5z
aW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25OCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUV4dGVuc2lvbnMoYm9vbCBmb3JjZSkKK3sK
KyNkZWZpbmUgTE9TRV9FWFRFTlNJT04odmFyaWFibGUpIFwKKyAgICBpZiAodmFyaWFibGUpIHsg
XAorICAgICAgICB2YXJpYWJsZS0+bG9zZShmb3JjZSk7IFwKKyAgICAgICAgaWYgKHZhcmlhYmxl
LT5pc0xvc3QoKSkgXAorICAgICAgICAgICAgKHZvaWQpIHZhcmlhYmxlLnJlbGVhc2VOb25OdWxs
KCk7IFwKKyAgICB9CisKKyAgICBMT1NFX0VYVEVOU0lPTihtX2V4dEZyYWdEZXB0aCk7CisgICAg
TE9TRV9FWFRFTlNJT04obV9leHRCbGVuZE1pbk1heCk7CisgICAgTE9TRV9FWFRFTlNJT04obV9l
eHRzUkdCKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Yyk7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRTaGFkZXJUZXh0dXJlTE9EKTsKKyAgICBMT1NF
X0VYVEVOU0lPTihtX29lc1RleHR1cmVGbG9hdCk7CisgICAgTE9TRV9FWFRFTlNJT04obV9vZXNU
ZXh0dXJlRmxvYXRMaW5lYXIpOworICAgIExPU0VfRVhURU5TSU9OKG1fb2VzVGV4dHVyZUhhbGZG
bG9hdCk7CisgICAgTE9TRV9FWFRFTlNJT04obV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKTsK
KyAgICBMT1NFX0VYVEVOU0lPTihtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpOworICAgIExPU0Vf
RVhURU5TSU9OKG1fb2VzVmVydGV4QXJyYXlPYmplY3QpOworICAgIExPU0VfRVhURU5TSU9OKG1f
b2VzRWxlbWVudEluZGV4VWludCk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbExvc2VDb250
ZXh0KTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pOworICAg
IExPU0VfRVhURU5TSU9OKG1fd2ViZ2xEZWJ1Z1NoYWRlcnMpOworICAgIExPU0VfRVhURU5TSU9O
KG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFTVEMpOworICAgIExPU0VfRVhURU5TSU9OKG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUFUQyk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlRVRDKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVFVEMxKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyk7
CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbERlcHRoVGV4dHVyZSk7CisgICAgTE9TRV9FWFRF
TlNJT04obV93ZWJnbERyYXdCdWZmZXJzKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX2FuZ2xlSW5z
dGFuY2VkQXJyYXlzKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX2V4dENvbG9yQnVmZmVySGFsZkZs
b2F0KTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdCk7CisgICAg
TE9TRV9FWFRFTlNJT04obV9leHRDb2xvckJ1ZmZlckZsb2F0KTsKK30KKwogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBvbGRBY3Rpdml0eVN0YXRlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gbmV3QWN0aXZpdHlTdGF0ZSkKIHsKICAgICBpZiAoIW1fY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCBkMDg4NzA3MmQ0MTkyYjM0NjgwYjVlYmMyNmNmNmM3Yzg4YWQ4NWUzLi43NTMy
NmQ5ODMwZjU2MjNkN2QyOWY5NTU0NDI0MmFlMGQ2MGZlMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01
MTUsNiArNTE1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkdMVGV4dHVyZTo6VGV4dHVyZUV4dGVu
c2lvbkZsYWcgdGV4dHVyZUV4dGVuc2lvbkZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIGVuYWJs
ZVN1cHBvcnRlZEV4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uTmFtZUxpdGVyYWwpOwor
ICAgIHZvaWQgbG9zZUV4dGVuc2lvbnMoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdW5jYWNo
ZURlbGV0ZWRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdlYkdMQnVmZmVyKik7
CiAKQEAgLTY1NywzMyArNjU4LDMzIEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEVuYWJsZWQgZXh0
ZW5zaW9uIG9iamVjdHMuCiAgICAgLy8gRklYTUU6IE1vdmUgc29tZSBvZiB0aGVzZSB0byBXZWJH
TFJlbmRlcmluZ0NvbnRleHQsIHRoZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdlYkdMMgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RVhUc1JHQj4gbV9leHRzUkdCOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWM+IG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFWFRTaGFkZXJUZXh0dXJlTE9EPiBtX2V4dFNoYWRlclRleHR1cmVMT0Q7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVGbG9hdExpbmVhcj4gbV9vZXNUZXh0dXJl
RmxvYXRMaW5lYXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVIYWxmRmxvYXQ+IG1f
b2VzVGV4dHVyZUhhbGZGbG9hdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8T0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhcj4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxPRVNTdGFuZGFyZERlcml2YXRpdmVzPiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXM7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBtX29lc1ZlcnRleEFycmF5
T2JqZWN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxPRVNFbGVtZW50SW5kZXhVaW50PiBtX29lc0Vs
ZW1lbnRJbmRleFVpbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMTG9zZUNvbnRleHQ+IG1f
d2ViZ2xMb3NlQ29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mbz4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJH
TERlYnVnU2hhZGVycz4gbV93ZWJnbERlYnVnU2hhZGVyczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFTVEM7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM+IG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZUFUQzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUVUQz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMT4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
RVRDMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPiBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkdMRGVwdGhUZXh0dXJlPiBtX3dlYmdsRGVwdGhUZXh0dXJlOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTERyYXdCdWZmZXJzPiBtX3dlYmdsRHJhd0J1ZmZlcnM7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFOR0xFSW5zdGFuY2VkQXJyYXlzPiBtX2FuZ2xlSW5zdGFu
Y2VkQXJyYXlzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdD4g
bV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xDb2xv
ckJ1ZmZlckZsb2F0PiBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RVhUQ29sb3JCdWZmZXJGbG9hdD4gbV9leHRDb2xvckJ1ZmZlckZsb2F0OworICAgIFJlZlB0
cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOworICAgIFJlZlB0cjxFWFRCbGVuZE1pbk1h
eD4gbV9leHRCbGVuZE1pbk1heDsKKyAgICBSZWZQdHI8RVhUc1JHQj4gbV9leHRzUkdCOworICAg
IFJlZlB0cjxFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM+IG1fZXh0VGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljOworICAgIFJlZlB0cjxFWFRTaGFkZXJUZXh0dXJlTE9EPiBtX2V4dFNoYWRlclRl
eHR1cmVMT0Q7CisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNUZXh0dXJlRmxvYXQ7
CisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdExpbmVhcj4gbV9vZXNUZXh0dXJlRmxvYXRMaW5l
YXI7CisgICAgUmVmUHRyPE9FU1RleHR1cmVIYWxmRmxvYXQ+IG1fb2VzVGV4dHVyZUhhbGZGbG9h
dDsKKyAgICBSZWZQdHI8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4gbV9vZXNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyOworICAgIFJlZlB0cjxPRVNTdGFuZGFyZERlcml2YXRpdmVzPiBtX29lc1N0
YW5kYXJkRGVyaXZhdGl2ZXM7CisgICAgUmVmUHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBtX29l
c1ZlcnRleEFycmF5T2JqZWN0OworICAgIFJlZlB0cjxPRVNFbGVtZW50SW5kZXhVaW50PiBtX29l
c0VsZW1lbnRJbmRleFVpbnQ7CisgICAgUmVmUHRyPFdlYkdMTG9zZUNvbnRleHQ+IG1fd2ViZ2xM
b3NlQ29udGV4dDsKKyAgICBSZWZQdHI8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbz4gbV93ZWJnbERl
YnVnUmVuZGVyZXJJbmZvOworICAgIFJlZlB0cjxXZWJHTERlYnVnU2hhZGVycz4gbV93ZWJnbERl
YnVnU2hhZGVyczsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM+IG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZUFTVEM7CisgICAgUmVmUHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQzsKKyAgICBSZWZQdHI8V2ViR0xDb21w
cmVzc2VkVGV4dHVyZUVUQz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDOworICAgIFJlZlB0
cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMT4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRD
MTsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPiBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQzsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CisgICAgUmVmUHRyPFdlYkdMRGVwdGhUZXh0
dXJlPiBtX3dlYmdsRGVwdGhUZXh0dXJlOworICAgIFJlZlB0cjxXZWJHTERyYXdCdWZmZXJzPiBt
X3dlYmdsRHJhd0J1ZmZlcnM7CisgICAgUmVmUHRyPEFOR0xFSW5zdGFuY2VkQXJyYXlzPiBtX2Fu
Z2xlSW5zdGFuY2VkQXJyYXlzOworICAgIFJlZlB0cjxFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdD4g
bV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdDsKKyAgICBSZWZQdHI8V2ViR0xDb2xvckJ1ZmZlckZs
b2F0PiBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdDsKKyAgICBSZWZQdHI8RVhUQ29sb3JCdWZmZXJG
bG9hdD4gbV9leHRDb2xvckJ1ZmZlckZsb2F0OwogCiAgICAgYm9vbCBtX2FyZVdlYkdMMlRleElt
YWdlU291cmNlRm9ybWF0c0FuZFR5cGVzQWRkZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hcmVP
RVNUZXh0dXJlRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzhl
MTJhMGQ2ODgwM2IwNDg2YTgwNDAyMTUwZDFjMzRkNzczZWEwMC4uYzZkNmQ3NTBlNGFhYjE0YTlk
ZWZhZDFhN2Q4ZmQyNGFkMzhhN2UyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA4LTE5
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJHTDJd
IFBhc3MgY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwgdGVzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZWQgV2ViR0wgY29uZm9ybWFu
Y2UgdGVzdHMgd2hpY2ggYXJlIG5vdyBmdWxseSBwYXNzaW5nLgorCisgICAgICAgICogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1s
b3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wOC0xOSAgS2FybCBSYWNrbGVyICA8
cmFja2xlckBhcHBsZS5jb20+CiAKICAgICAgICAgcmRhcjovLzY1MjY5NTg5IChbIG1hY09TIGFu
ZCBpT1MgXSBtZWRpYS92cDkuaHRtbCBpcyBmYWlsaW5nIGNvbnNpc3RlbnRseS4pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQt
bG9zdC1yZXN0b3JlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1leHBlY3RlZC50eHQKaW5kZXgg
MGM0MDIxMTljZjhjYzI2OTZiYjg2YmNmMzVhNTFiZWRlNzk4NTFiYi4uNDViN2UzNWU2MDVmMTBl
Mjk4ZmJiN2FmMDk3NWQ4ZTgxN2MyZjFhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dApAQCAtMSw1NyArMSw1IEBACiBUaGlzIHRl
c3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBv
cnRzIFBBU1Mgb3IgRkFJTC4KIAogVGVzdDogLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmls
ZXMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQuaHRtbAotWyAxOiBQ
QVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCi1bIDI6IFBBU1MgXSBnbC5nZXRFcnJv
cigpIGlzIGdsLk5PX0VSUk9SCi1bIDM6IFBBU1MgXSBzaG91bGRCZSAyNTUsMTAsMjAKLVsgNDog
UEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgNTogUEFTUyBdIGdsLmlzQ29u
dGV4dExvc3QoKSBpcyB0cnVlCi1bIDY6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRF
WFRfTE9TVF9XRUJHTAotWyA3OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgot
WyA4OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVy
IGV2YWx1YXRpbmc6IGdsLmJsZW5kRnVuYyhnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVf
TUFQKQotWyA5OiBQQVNTIF0gY29udGV4dExvc3RFdmVudEZpcmVkIGlzIGZhbHNlCi1bIDEwOiBQ
QVNTIF0gY29udGV4dExvc3RFdmVudEZpcmVkIGlzIGZhbHNlCi1bIDExOiBQQVNTIF0gZ2wuaXND
b250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMTI6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1bIDEzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElE
X09QRVJBVElPTiA6IGFmdGVyIGV2YWx1YXRpbmc6IFdFQkdMX2xvc2VfY29udGV4dC5yZXN0b3Jl
Q29udGV4dCgpCi1bIDE0OiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCi1bIDE1
OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAxNjogUEFTUyBdIHNob3Vs
ZEJlIDI1NSwxMCwyMAotWyAxNzogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IK
LVsgMTg6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQotWyAxOTogUEFTUyBdIGds
LmdldEVycm9yKCkgaXMgZ2wuQ09OVEVYVF9MT1NUX1dFQkdMCi1bIDIwOiBQQVNTIF0gZ2wuZ2V0
RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAyMTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC5ibGVuZEZ1bmMoZ2wuVEVY
VFVSRV8yRCwgZ2wuVEVYVFVSRV9DVUJFX01BUCkKLVsgMjI6IFBBU1MgXSBjb250ZXh0TG9zdEV2
ZW50RmlyZWQgaXMgZmFsc2UKLVsgMjM6IFBBU1MgXSBjb250ZXh0TG9zdEV2ZW50RmlyZWQgaXMg
ZmFsc2UKLVsgMjQ6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQotWyAyNTogUEFT
UyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMjY6IFBBU1MgXSBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgZXZhbHVhdGluZzogV0VCR0xfbG9z
ZV9jb250ZXh0LnJlc3RvcmVDb250ZXh0KCkKLVsgMjc6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0
KCkgaXMgdHJ1ZQotWyAyODogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsg
Mjk6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIg
ZXZhbHVhdGluZzogZ2wuYmxlbmRGdW5jKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ1VCRV9N
QVApCi1bIDMwOiBQQVNTIF0gY29udGV4dFJlc3RvcmVkRXZlbnRGaXJlZCBpcyBmYWxzZQotWyAz
MTogUEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyBmYWxzZQotWyAzMjogUEFTUyBdIGdsLmdl
dEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMzM6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0
ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmluZFRl
eHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSkKLVsgMzQ6IFBBU1MgXSBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wu
dXNlUHJvZ3JhbShwcm9ncmFtKQotWyAzNTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBhZnRlciBldmFsdWF0aW5nOiBnbC5iaW5kQnVmZmVy
KGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyT2JqZWN0c1swXSkKLVsgMzY6IFBBU1MgXSBzaG91bGRC
ZSAyNTUsMTAsMjAKLVsgMzc6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1b
IDM4OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVy
IGV2YWx1YXRpbmc6IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpCi1bIDM5
OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2
YWx1YXRpbmc6IGdsLnVzZVByb2dyYW0ocHJvZ3JhbSkKLVsgNDA6IFBBU1MgXSBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmluZEJ1
ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlck9iamVjdHNbMF0pCi1bIDQxOiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0VOVU0gOiBhZnRlciBldmFsdWF0aW5n
OiBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJH
QkEsIGdsLkZMT0FULCBudWxsKQotWyA0MjogUEFTUyBdIG5ld0V4dGVuc2lvbiAhPSBudWxsIGlz
IHRydWUKLVsgNDM6IEZBSUwgXSBuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHVu
ZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotWyA0NDogRkFJTCBdIGdldEVycm9y
IGV4cGVjdGVkOiBOT19FUlJPUi4gV2FzIElOVkFMSURfRU5VTSA6IGFmdGVyIGV2YWx1YXRpbmc6
IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdC
QSwgZ2wuRkxPQVQsIG51bGwpCi1bIDQ1OiBGQUlMIF0gT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qu
Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSBzaG91bGQgYmUgbnVsbC4gV2FzIFtvYmplY3QgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FU10uCi1bIDQ2OiBQQVNTIF0gbmV3RXh0ZW5zaW9uICE9IG51bGwg
aXMgdHJ1ZQotWyA0NzogRkFJTCBdIG5ld0V4dGVuc2lvbi53ZWJnbFRlc3RQcm9wZXJ0eSA9PT0g
dW5kZWZpbmVkIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1bIDQ4OiBQQVNTIF0gT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSAhPSBudWxsIGlzIHRydWUK
LVsgNDk6IEZBSUwgXSBvbGRfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJy
YXlPRVMoKSA9PSBudWxsIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1bIDUwOiBQQVNTIF0g
bmV3RXh0ZW5zaW9uICE9IG51bGwgaXMgdHJ1ZQotWyA1MTogUEFTUyBdIG5ld0V4dGVuc2lvbi53
ZWJnbFRlc3RQcm9wZXJ0eSA9PT0gdHJ1ZSBpcyB0cnVlCi1bIDUyOiBQQVNTIF0gc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBdIDUgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBd
IEFsbCB0ZXN0cyBwYXNzZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3Qt
cmVzdG9yZWQtZXhwZWN0ZWQudHh0CmluZGV4IGI3ZTExMzIyYzc5ZDQwNjFmY2M0Y2RkMDY3N2Mz
NDAyN2Q1MGY4MzkuLmU2Y2QwYzY3MzRhMzYzMzhmYTI5Mzk1ODY0MzE4MmVlZWJjYTg1YjMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1leHBlY3RlZC50
eHQKQEAgLTEsNTcgKzEsNCBAQAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVk
IGJlbG93IGluIGFuIGlmcmFtZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4u
Ly4uL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4
dC1sb3N0LXJlc3RvcmVkLmh0bWwKLQotWyAxOiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlz
IGZhbHNlCi1bIDI6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDM6IFBB
U1MgXSBzaG91bGRCZSAyNTUsMTAsMjAKLVsgNDogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKLVsgNTogUEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCi1bIDY6IFBB
U1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAotWyA3OiBQQVNTIF0g
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyA4OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJsZW5kRnVuYyhn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQKQotWyA5OiBQQVNTIF0gY29udGV4dExv
c3RFdmVudEZpcmVkIGlzIGZhbHNlCi1bIDEwOiBQQVNTIF0gY29udGV4dExvc3RFdmVudEZpcmVk
IGlzIGZhbHNlCi1bIDExOiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMTI6
IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDEzOiBQQVNTIF0gZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGFmdGVyIGV2YWx1YXRp
bmc6IFdFQkdMX2xvc2VfY29udGV4dC5yZXN0b3JlQ29udGV4dCgpCi1bIDE0OiBQQVNTIF0gZ2wu
aXNDb250ZXh0TG9zdCgpIGlzIGZhbHNlCi1bIDE1OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBn
bC5OT19FUlJPUgotWyAxNjogUEFTUyBdIHNob3VsZEJlIDI1NSwxMCwyMAotWyAxNzogUEFTUyBd
IGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMTg6IFBBU1MgXSBnbC5pc0NvbnRleHRM
b3N0KCkgaXMgdHJ1ZQotWyAxOTogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuQ09OVEVYVF9M
T1NUX1dFQkdMCi1bIDIwOiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAy
MTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBhZnRlciBl
dmFsdWF0aW5nOiBnbC5ibGVuZEZ1bmMoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DVUJFX01B
UCkKLVsgMjI6IFBBU1MgXSBjb250ZXh0TG9zdEV2ZW50RmlyZWQgaXMgZmFsc2UKLVsgMjM6IFBB
U1MgXSBjb250ZXh0TG9zdEV2ZW50RmlyZWQgaXMgZmFsc2UKLVsgMjQ6IFBBU1MgXSBnbC5pc0Nv
bnRleHRMb3N0KCkgaXMgdHJ1ZQotWyAyNTogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKLVsgMjY6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogYWZ0ZXIgZXZhbHVhdGluZzogV0VCR0xfbG9zZV9jb250ZXh0LnJlc3RvcmVDb250ZXh0KCkK
LVsgMjc6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQotWyAyODogUEFTUyBdIGds
LmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMjk6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmxlbmRGdW5jKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ1VCRV9NQVApCi1bIDMwOiBQQVNTIF0gY29udGV4dFJl
c3RvcmVkRXZlbnRGaXJlZCBpcyBmYWxzZQotWyAzMTogUEFTUyBdIGdsLmlzQ29udGV4dExvc3Qo
KSBpcyBmYWxzZQotWyAzMjogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsg
MzM6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9O
IDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSkKLVsgMzQ6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BF
UkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wudXNlUHJvZ3JhbShwcm9ncmFtKQotWyAzNTog
UEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBh
ZnRlciBldmFsdWF0aW5nOiBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyT2Jq
ZWN0c1swXSkKLVsgMzY6IFBBU1MgXSBzaG91bGRCZSAyNTUsMTAsMjAKLVsgMzc6IFBBU1MgXSBn
bC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDM4OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJpbmRUZXh0dXJl
KGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpCi1bIDM5OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLnVzZVByb2dyYW0ocHJv
Z3JhbSkKLVsgNDA6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZl
ck9iamVjdHNbMF0pCi1bIDQxOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJ
TlZBTElEX0VOVU0gOiBhZnRlciBldmFsdWF0aW5nOiBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVf
MkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLkZMT0FULCBudWxsKQotWyA0Mjog
UEFTUyBdIG5ld0V4dGVuc2lvbiAhPSBudWxsIGlzIHRydWUKLVsgNDM6IEZBSUwgXSBuZXdFeHRl
bnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2Fz
IGZhbHNlLgotWyA0NDogRkFJTCBdIGdldEVycm9yIGV4cGVjdGVkOiBOT19FUlJPUi4gV2FzIElO
VkFMSURfRU5VTSA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8y
RCwgMCwgZ2wuUkdCQSwgMSwgMSwgMCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIG51bGwpCi1bIDQ1OiBG
QUlMIF0gT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSBzaG91
bGQgYmUgbnVsbC4gV2FzIFtvYmplY3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FU10uCi1bIDQ2
OiBQQVNTIF0gbmV3RXh0ZW5zaW9uICE9IG51bGwgaXMgdHJ1ZQotWyA0NzogRkFJTCBdIG5ld0V4
dGVuc2lvbi53ZWJnbFRlc3RQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkIHNob3VsZCBiZSB0cnVlLiBX
YXMgZmFsc2UuCi1bIDQ4OiBQQVNTIF0gT0VTX3ZlcnRleF9hcnJheV9vYmplY3QuY3JlYXRlVmVy
dGV4QXJyYXlPRVMoKSAhPSBudWxsIGlzIHRydWUKLVsgNDk6IEZBSUwgXSBvbGRfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QuY3JlYXRlVmVydGV4QXJyYXlPRVMoKSA9PSBudWxsIHNob3VsZCBiZSB0
cnVlLiBXYXMgZmFsc2UuCi1bIDUwOiBQQVNTIF0gbmV3RXh0ZW5zaW9uICE9IG51bGwgaXMgdHJ1
ZQotWyA1MTogUEFTUyBdIG5ld0V4dGVuc2lvbi53ZWJnbFRlc3RQcm9wZXJ0eSA9PT0gdHJ1ZSBp
cyB0cnVlCi1bIDUyOiBQQVNTIF0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVsgRkFJTCBd
IDUgZmFpbHVyZXMgcmVwb3J0ZWQKK1sgUEFTUyBdIEFsbCB0ZXN0cyBwYXNzZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406972</attachid>
            <date>2020-08-20 14:58:56 -0700</date>
            <delta_ts>2020-08-20 15:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215599-20200820145855.patch</filename>
            <type>text/plain</type>
            <size>36823</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY5ZjZkNTZjOTJmZTcz
MjdmYmUwZDhjNGI4ZTkzYjQ2N2E5NTdkZS4uMjc0ZDI5OGFkNzljZTRkYTRlMDg1MzFhZGU1NDk5
ODNjYjA3YTkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA4LTIwICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJHTDJdIFBhc3Mg
Y29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwgdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgIFN1cHBvcnQgbG9zaW5nIGV4dGVuc2lvbnMsIGFuZCByZXN0
b3JpbmcgdGhlbSB2aWEKKyAgICAgICAgV0VCR0xfbG9zZV9jb250ZXh0LgorCisgICAgICAgIE5l
Y2Vzc2FyaWx5IGNoYW5nZWQgV2ViR0xFeHRlbnNpb25zIHRvIGJlIFJlZkNvdW50ZWQgcmF0aGVy
IHRoYW4KKyAgICAgICAgbWFuYWdlZCB2aWEgdW5pcXVlX3B0ci4gTXVsdGlwbGUgaW5zdGFuY2Vz
IG9mIHRoZSBzYW1lCisgICAgICAgIFdlYkdMRXh0ZW5zaW9uIHN1YmNsYXNzIGNhbiBub3cgYmUg
dmVuZGVkIGZyb20gYSBXZWJHTCByZW5kZXJpbmcKKyAgICAgICAgY29udGV4dCwgYW5kIFdlYkdM
RXh0ZW5zaW9ucyBjYW4gbm93IG91dGxpdmUgdGhlaXIgcmVuZGVyaW5nCisgICAgICAgIGNvbnRl
eHQgLSB0aGV5IGRvIG5vdCByZWYgdGhlaXIgY29udGV4dC4KKworICAgICAgICBFeHRlbnNpb25z
IG5vdyBob2xkIGEgd2VhayBwb2ludGVyIHRvIHRoZWlyCisgICAgICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UgcmF0aGVyIHRoYW4gYSBDKysgcmVmZXJlbmNlLiBXaGVuIGFuCisgICAgICAg
IGV4dGVuc2lvbidzIHBhcmVudCBjb250ZXh0IGlzIGxvc3QsIHRoYXQgcG9pbnRlciBpcyBudWxs
ZWQgb3V0LgorICAgICAgICBFeHRlbnNpb25zIGFyZSBmb3JjaWJseSBsb3N0IHVwb24gV2ViR0wg
Y29udGV4dCBkZXN0cnVjdGlvbi4KKworICAgICAgICBXZWJHTCBleHRlbnNpb25zJyBJRExzIHN0
aWxsIHVzZQorICAgICAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQsIHNvIHRoYXQgaWYgdGhlCisgICAgICAgIGNvbnRleHQgaXMgc3RpbGwgYWxpdmUsIHRo
ZSBKYXZhU2NyaXB0IHdyYXBwZXJzIGZvciB0aGUgZXh0ZW5zaW9uCisgICAgICAgIG9iamVjdHMg
d2lsbCBiZSBwcmVzZXJ2ZWQuIChJZiB0aGUgZXh0ZW5zaW9uIGlzIGxvc3QsIHRoZSBiaW5kaW5n
cworICAgICAgICB3aWxsIGZldGNoIG51bGxwdHIgZm9yIHRoZSBjb250ZXh0LCB3aGljaCB3b24n
dCBiZSBpbiB0aGUgb3BhcXVlCisgICAgICAgIHJvb3Qgc2V0LCBzbyB0aGUgSmF2YVNjcmlwdCB3
cmFwcGVyIHdvbid0IGJlIGFydGlmaWNpYWxseSBrZXB0CisgICAgICAgIGFsaXZlLikKKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdMIGNvbmZvcm1hbmNlIHRlc3RzLgorCisgICAg
ICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBTkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJy
YXlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1NoYWRlcnM6
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6ZHJh
d0J1ZmZlcnNXRUJHTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpsb3NlUGFyZW50Q29udGV4dCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRXh0ZW5zaW9uOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojppc0xvc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246OnJlZik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6ZGVyZWYpOiBEZWxldGVkLgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMb3NlQ29udGV4dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xMb3NlQ29udGV4dDo6cmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xMb3NlQ29udGV4dDo6bG9zZVBhcmVudENvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMTG9zZUNvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
fldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisKIDIwMjAtMDgtMTkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9iIGlzIG1pc3NpbmcgdGV4
dCgpICYgYXJyYXlCdWZmZXIoKSBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXggM2Q1NzAxM2ZmNmEyNTdi
NGZlMGEzNzcyYjI3MWFkYmU5NWRhMjlkZS4uMGI0NDhhYjI2NzhjMzM1ZmM1ODZhMmI2OWNjMWM5
ZTdiYTY0YjQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJ
bnN0YW5jZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xF
SW5zdGFuY2VkQXJyYXlzLmNwcApAQCAtNjgsMjMgKzY4LDIzIEBAIGJvb2wgQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQog
CiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewotICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQorICAgIGlmICgh
bV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9jb250ZXh0LmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpOworICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJz
dCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKIHZvaWQgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmRy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIW1fY29udGV4dCB8
fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29u
dGV4dC5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJp
bWNvdW50KTsKKyAgICBtX2NvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3Vu
dCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRp
dmlzb3IpCiB7Ci0gICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFt
X2NvbnRleHQgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX2NvbnRleHQudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAg
bV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCmluZGV4IGJkMmY1M2E0NDY5NGE0MTAyMDlmYjk0NGQy
MTYwNmY0YTdkN2Q3NDAuLmMxMWNmNmY3YTczZTc4MmM5MmJlMGNhMGQ1MDg5ZTY1NzA1ZjU5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5jcHAKQEAgLTQ3LDQ3ICs0Nyw1NiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFt
ZSBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Z2V0TmFtZSgpIGNvbnN0CiAKIFJlZlB0cjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJy
YXlPRVMoKQogewotICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQorICAgIGlmICgh
bV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6
Y3JlYXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VHlwZTo6VXNlcik7
Ci0gICAgbV9jb250ZXh0LmFkZENvbnRleHRPYmplY3Qob2JqZWN0LmdldCgpKTsKKyAgICBhdXRv
IG9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZSgqbV9jb250ZXh0LCBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpUeXBlOjpVc2VyKTsKKyAgICBtX2NvbnRleHQtPmFk
ZENvbnRleHRPYmplY3Qob2JqZWN0LmdldCgpKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCiB2
b2lkIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKiBhcnJheU9iamVjdCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fY29udGV4dC5vYmplY3RHcmFwaExvY2soKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5v
YmplY3RHcmFwaExvY2soKSk7CiAKLSAgICBpZiAoIWFycmF5T2JqZWN0IHx8IG1fY29udGV4dC5p
c0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFhcnJheU9iamVjdC0+aXNE
ZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0Jj4obV9jb250ZXh0KS5tX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCi0gICAgICAg
IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCY+KG1fY29udGV4dCkuc2V0Qm91bmRW
ZXJ0ZXhBcnJheU9iamVjdChsb2NrZXIsIG51bGxwdHIpOworICAgIGlmICghYXJyYXlPYmplY3Qt
PmlzRGVmYXVsdE9iamVjdCgpICYmIGFycmF5T2JqZWN0ID09IHN0YXRpY19jYXN0PFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dCktPm1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0KS0+c2V0
Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChsb2NrZXIsIG51bGxwdHIpOwogCi0gICAgYXJyYXlPYmpl
Y3QtPmRlbGV0ZU9iamVjdChsb2NrZXIsIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpKTsK
KyAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KGxvY2tlciwgbV9jb250ZXh0LT5ncmFwaGlj
c0NvbnRleHRHTCgpKTsKIH0KIAogR0NHTGJvb2xlYW4gT0VTVmVydGV4QXJyYXlPYmplY3Q6Omlz
VmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGFycmF5T2JqZWN0ICYmICFtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpICYm
IGFycmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkKLSAgICAgICAgJiYgbV9jb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFycmF5
T2JqZWN0LT5vYmplY3QoKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LT5pc0NvbnRleHRM
b3N0KCkgJiYgYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKQorICAgICAgICAmJiBtX2Nv
bnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5
T0VTKGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiB9CiAKIHZvaWQgT0VTVmVydGV4QXJyYXlPYmpl
Y3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBhcnJheU9i
amVjdCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29udGV4dC5vYmplY3RHcmFw
aExvY2soKSk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CiAKLSAg
ICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LT5pc0Nv
bnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhcnJheU9iamVjdCAmJiAo
YXJyYXlPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUobnVsbHB0
ciwgY29udGV4dCgpKSkpIHsKLSAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7
CisgICAgaWYgKGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFy
cmF5T2JqZWN0LT52YWxpZGF0ZShudWxscHRyLCAqY29udGV4dCgpKSkpIHsKKyAgICAgICAgbV9j
b250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCk7Ci0gICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5n
Q29udGV4dD4obV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgYXV0byYgY29udGV4dCA9
IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCk7CiAgICAgaWYgKGFy
cmF5T2JqZWN0ICYmICFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmpl
Y3QtPm9iamVjdCgpKSB7CiAgICAgICAgIGV4dGVuc2lvbnMuYmluZFZlcnRleEFycmF5T0VTKGFy
cmF5T2JqZWN0LT5vYmplY3QoKSk7CiAgICAgICAgIGFycmF5T2JqZWN0LT5zZXRIYXNFdmVyQmVl
bkJvdW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJhMzQzY2I1Y2EwMjk1NWE0MDE4OTY0ZWFiNWQ3ZDU0
NmMxYTQ5ODMuLjIyMDVhMGZkM2NiMDgyODViYzIzYzA5MGM0NWQ2MWY2NTU2MjM5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0yNjYzLDcgKzI2NjMsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5B
QkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkg
XAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBc
CiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2Fu
RW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAg
ICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IGFkb3B0UmVmKG5ldyB0eXBlKCp0aGlzKSkgOiBu
dWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0
aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAppbmRleCBjNTU4NDhiZjdmNTZiMDY3ZDg3NDY2YjQ4
Yzg2ZmE3MTYzZjQzMmFmLi5kYmIxYmQzNTMwNWU1OTI0MmIzZWQ4NjllMjJjZjk5NmMxMDQxZjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMu
Y3BwCkBAIC01MCwxMSArNTAsMTEgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2Vi
R0xEZWJ1Z1NoYWRlcnM6OmdldE5hbWUoKSBjb25zdAogCiBTdHJpbmcgV2ViR0xEZWJ1Z1NoYWRl
cnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXImIHNoYWRlcikKIHsKLSAg
ICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIW1fY29udGV4dCB8fCBt
X2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IGlmICghbV9jb250ZXh0LnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2UiLCAmc2hhZGVyKSkKKyAgICBpZiAoIW1fY29udGV4dC0+dmFsaWRhdGVXZWJHTE9iamVj
dCgiZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZSIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCkt
PmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLm9i
amVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRF
eHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlci5vYmplY3Qo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKaW5kZXggMjNlMTNkZDNjNmY0M2YxOTYzMjJj
NmUzZDViNTc5Y2JkYjFhYTUwMi4uODExMzFhNzY1ZGM1OGYxMTU1Y2JjNzE4MTIzOTAyYjBlYzQw
MzM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVm
ZmVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVy
cy5jcHAKQEAgLTU3LDM1ICs1NywzNSBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogCiB2b2lkIFdlYkdMRHJhd0J1
ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDR0xlbnVtPiYgYnVmZmVycykK
IHsKLSAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIW1fY29udGV4
dCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEdD
R0xzaXplaSBuID0gYnVmZmVycy5zaXplKCk7CiAgICAgY29uc3QgR0NHTGVudW0qIGJ1ZnMgPSBi
dWZmZXJzLmRhdGEoKTsKLSAgICBpZiAoIW1fY29udGV4dC5tX2ZyYW1lYnVmZmVyQmluZGluZykg
eworICAgIGlmICghbV9jb250ZXh0LT5tX2ZyYW1lYnVmZmVyQmluZGluZykgewogICAgICAgICBp
ZiAobiAhPSAxKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0R0w6OklOVkFMSURfVkFMVUUsICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUg
dGhhbiBvbmUgYnVmZmVyIik7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIs
ICJtb3JlIHRoYW4gb25lIGJ1ZmZlciIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIGlmIChidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dEdMOjpCQUNLICYmIGJ1ZnNb
MF0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJk
cmF3QnVmZmVyc1dFQkdMIiwgIkJBQ0sgb3IgTk9ORSIpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04s
ICJkcmF3QnVmZmVyc1dFQkdMIiwgIkJBQ0sgb3IgTk9ORSIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2ltdWxh
dGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFDSyB0
byBDT0xPUl9BVFRBQ0hNRU5UMC4KICAgICAgICAgR0NHTGVudW0gdmFsdWUgPSAoYnVmc1swXSA9
PSBHcmFwaGljc0NvbnRleHRHTDo6QkFDSykgPyBHcmFwaGljc0NvbnRleHRHTDo6Q09MT1JfQVRU
QUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHRHTDo6Tk9ORTsKLSAgICAgICAgbV9jb250ZXh0Lmdy
YXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFs
dWUpOwotICAgICAgICBtX2NvbnRleHQuc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CisgICAg
ICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdC
dWZmZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAgICAgIG1fY29udGV4dC0+c2V0QmFja0RyYXdCdWZm
ZXIoYnVmc1swXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQuZ2V0
TWF4RHJhd0J1ZmZlcnMoKSkgewotICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIs
ICJtb3JlIHRoYW4gbWF4IGRyYXcgYnVmZmVycyIpOworICAgICAgICBpZiAobiA+IG1fY29udGV4
dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgeworICAgICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgImRyYXdCdWZmZXJz
V0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZlcnMiKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBmb3IgKEdDR0xzaXplaSBpID0gMDsgaSA8IG47ICsraSkg
ewogICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0R0w6Ok5PTkUgJiYg
YnVmc1tpXSAhPSBzdGF0aWNfY2FzdDxHQ0dMZW51bT4oRXh0ZW5zaW9uc0dMOjpDT0xPUl9BVFRB
Q0hNRU5UMF9FWFQgKyBpKSkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVy
c1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRpX0VYVCBvciBOT05FIik7CisgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJ
RF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRpX0VYVCBv
ciBOT05FIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIG1fY29udGV4dC5tX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMo
YnVmZmVycyk7CisgICAgICAgIG1fY29udGV4dC0+bV9mcmFtZWJ1ZmZlckJpbmRpbmctPmRyYXdC
dWZmZXJzKGJ1ZmZlcnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xFeHRlbnNpb24uY3BwCmluZGV4IGI0NGJjZjgyMjA5ZTg0YWFhNmNkMGI3ODU4MmE4
YzdiOGVlMWIxZTYuLmZmZTM5MjA0MTViZTk2MDM4NDE3ZWEzOGZiNzAxOWM0YmFhNDMyZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKQEAgLTI5
LDE1ICsyOSwyNCBAQAogCiAjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24uaCIKIAorI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMRXh0ZW5zaW9uKTsKKwogV2ViR0xFeHRlbnNpb246
OldlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCi0gICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICA6IG1fY29udGV4dCgmY29udGV4dCkKIHsKIH0KIAog
V2ViR0xFeHRlbnNpb246On5XZWJHTEV4dGVuc2lvbigpID0gZGVmYXVsdDsKIAordm9pZCBXZWJH
TEV4dGVuc2lvbjo6bG9zZVBhcmVudENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
TG9zdENvbnRleHRNb2RlKQoreworICAgIG1fY29udGV4dCA9IG51bGxwdHI7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCmluZGV4IGQyOWI1ODUwMWJjYTgzMDU4
Y2Y2MDNhMDJmNjIyNGMxZTEyMGRkYWQuLjgwODA5MmE0NWU5MjYyNzU3OTRjYzJlZDdmNzk4MzBj
NjUwMjY2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24u
aApAQCAtMjgsMTEgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViR0xFeHRlbnNpb24gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgV2ViR0xFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHTEV4dGVuc2lvbj4geworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViR0xF
eHRlbnNpb24pOwogcHVibGljOgogICAgIC8vIEV4dGVuc2lvbiBuYW1lcyBhcmUgbmVlZGVkIHRv
IHByb3Blcmx5IHdyYXAgaW5zdGFuY2VzIGluIEphdmFTY3JpcHQgb2JqZWN0cy4KICAgICBlbnVt
IEV4dGVuc2lvbk5hbWUgewpAQCAtNjUsMTYgKzY2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgRVhU
Q29sb3JCdWZmZXJGbG9hdE5hbWUsCiAgICAgfTsKIAotICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRl
eHQucmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBtX2NvbnRleHQuZGVyZWYoKTsgfQotICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7
IH0KKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KCkgeyByZXR1cm4gbV9j
b250ZXh0OyB9CiAKICAgICB2aXJ0dWFsIH5XZWJHTEV4dGVuc2lvbigpOwogICAgIHZpcnR1YWwg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3QgPSAwOwogCisgICAgLy8gTG9zZSB0aGUgcGFy
ZW50IFdlYkdMIGNvbnRleHQuIFRoZSBjb250ZXh0IGxvc3MgbW9kZSBjaGFuZ2VzCisgICAgLy8g
dGhlIGJlaGF2aW9yIHNwZWNpZmljYWxseSBvZiBXRUJHTF9sb3NlX2NvbnRleHQsIHdoaWNoIGRv
ZXMgbm90CisgICAgLy8gbG9zZSBpdHMgY29ubmVjdGlvbiB0byBpdHMgcGFyZW50IGNvbnRleHQg
d2hlbiBpdCBmb3JjZXMgYQorICAgIC8vIGNvbnRleHQgbG9zcy4gSG93ZXZlciwgYWxsIGV4dGVu
c2lvbnMgbXVzdCBiZSBsb3N0IHdoZW4KKyAgICAvLyBkZXN0cm95aW5nIHRoZWlyIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuCisgICAgdmlydHVhbCB2b2lkIGxvc2VQYXJlbnRDb250ZXh0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDb250ZXh0TW9kZSk7CisgICAgYm9vbCBpc0xv
c3QoKSB7IHJldHVybiAhbV9jb250ZXh0OyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJHTEV4dGVu
c2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgbV9jb250ZXh0OworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG1fY29u
dGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKaW5kZXggZDZhMDFkM2YxNWM0YWVlNDFl
ZTA5ZTI4YWU1NDA2ZDEzZGRiN2UxOC4uZjNjZjMyZjM1MTExZWI0OTI2YWRkZDU2ZDg2NWNlMTRi
NDg5Y2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3Nl
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29u
dGV4dC5jcHAKQEAgLTQ3LDE0ICs0NywyNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFt
ZSBXZWJHTExvc2VDb250ZXh0OjpnZXROYW1lKCkgY29uc3QKIAogdm9pZCBXZWJHTExvc2VDb250
ZXh0Ojpsb3NlQ29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LmZvcmNlTG9zdENvbnRleHQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6U3ludGhldGljTG9zdENvbnRleHQpOworICAgIGlmICgh
bV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPmZvcmNlTG9zdENv
bnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6U3ludGhldGljTG9zdENvbnRleHQpOwog
fQogCiB2b2lkIFdlYkdMTG9zZUNvbnRleHQ6OnJlc3RvcmVDb250ZXh0KCkKIHsKLSAgICBtX2Nv
bnRleHQuZm9yY2VSZXN0b3JlQ29udGV4dCgpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPmZvcmNlUmVzdG9yZUNvbnRleHQoKTsKK30KKwor
dm9pZCBXZWJHTExvc2VDb250ZXh0Ojpsb3NlUGFyZW50Q29udGV4dChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMb3N0Q29udGV4dE1vZGUgbW9kZSkKK3sKKyAgICBpZiAobW9kZSA9PSBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0Q29udGV4dE1vZGU6OlJlYWxMb3N0Q29udGV4dCkK
KyAgICAgICAgV2ViR0xFeHRlbnNpb246Omxvc2VQYXJlbnRDb250ZXh0KG1vZGUpOwogfQogCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAppbmRleCA4MWIwYjRi
OTNhZWVmOGUxM2MzN2QxMjVhYzIyNjIxZTVlYmFkYTZjLi5jZDYyMmE1OWMyMjI0MDc0NzhjMzcz
NWIxZGQwNDViMjM1MDJkMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xMb3NlQ29udGV4dC5oCkBAIC0zMSwxNCArMzEsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwotCiBjbGFzcyBXZWJHTExvc2VD
b250ZXh0IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJHTExvc2VDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2
aXJ0dWFsIH5XZWJHTExvc2VDb250ZXh0KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGxvc2VQYXJlbnRDb250ZXh0KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6Okxvc3RDb250ZXh0TW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxv
c2VDb250ZXh0KCk7CiAgICAgdm9pZCByZXN0b3JlQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNmNk
NjRhNTFiMDU0MmVkOGQ5YzJiOWYzNDM0YzE0OGE0NmRjMTZhMy4uOGVjNjdlN2M4YjkxOTYyNjM4
ZTAwN2Y1Yzk1ZjYzYzY5MWEzN2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgV2Vi
R0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwg
bmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAg
ICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMp
IDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IGFkb3B0
UmVmKG5ldyB0eXBlKCp0aGlzKSkgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFi
bGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTE0
Myw3ICsxNDMsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRCA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIl9zKTsKLSAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0Qg
PSBtYWtlVW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBhZG9wdFJlZihuZXcgRVhUU2hhZGVyVGV4dHVyZUxP
RCgqdGhpcykpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV93ZWJn
bERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3
X2J1ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1ha2VV
bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fd2ViZ2xE
cmF3QnVmZmVycyA9IGFkb3B0UmVmKG5ldyBXZWJHTERyYXdCdWZmZXJzKCp0aGlzKSk7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24o
KnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xODMsNyArMTgzLDcg
QEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlz
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJh
eXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5p
cXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9hbmds
ZUluc3RhbmNlZEFycmF5cyA9IGFkb3B0UmVmKG5ldyBBTkdMRUluc3RhbmNlZEFycmF5cygqdGhp
cykpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxl
RXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCAwMWQ2MTNiNDFhYTljZDk4OWZiOTU5OTRhZGIyNGJjNDc1ZTA4YjBjLi5i
NTkzNmUyNzNmODdlNmY4MjM4ZWQ1ZWNkZjdjNDE2NThkZTQ0N2FkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtMTAyOCw2ICsxMDI4LDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6fldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UoKQogCiAgICAgaWYgKCFtX2lzUGVuZGluZ1BvbGljeVJlc29s
dXRpb24pIHsKICAgICAgICAgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOworICAgICAgICBs
b3NlRXh0ZW5zaW9ucyhMb3N0Q29udGV4dE1vZGU6OlJlYWxMb3N0Q29udGV4dCk7CiAgICAgICAg
IGRlc3Ryb3lHcmFwaGljc0NvbnRleHRHTCgpOwogICAgICAgICBtX2NvbnRleHRHcm91cC0+cmVt
b3ZlQ29udGV4dCgqdGhpcyk7CiAgICAgfQpAQCAtNjA5Myw2ICs2MDk0LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6TG9zdEMKICAgICB9CiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7
CisgICAgbG9zZUV4dGVuc2lvbnMobW9kZSk7CiAKICAgICAvLyBUaGVyZSBpcyBubyBkaXJlY3Qg
d2F5IHRvIGNsZWFyIGVycm9ycyBmcm9tIGEgR0wgaW1wbGVtZW50YXRpb24gYW5kCiAgICAgLy8g
bG9vcGluZyB1bnRpbCBnZXRFcnJvcigpIGJlY29tZXMgTk9fRVJST1IgbWlnaHQgY2F1c2UgYW4g
aW5maW5pdGUgbG9vcCBpZgpAQCAtNzc0Nyw2ICs3NzQ5LDQ0IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZW5hYmxlU3VwcG9ydGVkRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRl
bnNpb25OCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6bG9zZUV4dGVuc2lvbnMoTG9zdENvbnRleHRNb2RlIG1vZGUpCit7CisjZGVmaW5lIExP
U0VfRVhURU5TSU9OKHZhcmlhYmxlKSBcCisgICAgaWYgKHZhcmlhYmxlKSB7IFwKKyAgICAgICAg
dmFyaWFibGUtPmxvc2VQYXJlbnRDb250ZXh0KG1vZGUpOyBcCisgICAgICAgIGlmICh2YXJpYWJs
ZS0+aXNMb3N0KCkpIFwKKyAgICAgICAgICAgICh2b2lkKSB2YXJpYWJsZS5yZWxlYXNlTm9uTnVs
bCgpOyBcCisgICAgfQorCisgICAgTE9TRV9FWFRFTlNJT04obV9leHRGcmFnRGVwdGgpOworICAg
IExPU0VfRVhURU5TSU9OKG1fZXh0QmxlbmRNaW5NYXgpOworICAgIExPU0VfRVhURU5TSU9OKG1f
ZXh0c1JHQik7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMpOworICAgIExPU0VfRVhURU5TSU9OKG1fZXh0U2hhZGVyVGV4dHVyZUxPRCk7CisgICAgTE9T
RV9FWFRFTlNJT04obV9vZXNUZXh0dXJlRmxvYXQpOworICAgIExPU0VfRVhURU5TSU9OKG1fb2Vz
VGV4dHVyZUZsb2F0TGluZWFyKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX29lc1RleHR1cmVIYWxm
RmxvYXQpOworICAgIExPU0VfRVhURU5TSU9OKG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcik7
CisgICAgTE9TRV9FWFRFTlNJT04obV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKTsKKyAgICBMT1NF
X0VYVEVOU0lPTihtX29lc1ZlcnRleEFycmF5T2JqZWN0KTsKKyAgICBMT1NFX0VYVEVOU0lPTiht
X29lc0VsZW1lbnRJbmRleFVpbnQpOworICAgIExPU0VfRVhURU5TSU9OKG1fd2ViZ2xMb3NlQ29u
dGV4dCk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvKTsKKyAg
ICBMT1NFX0VYVEVOU0lPTihtX3dlYmdsRGVidWdTaGFkZXJzKTsKKyAgICBMT1NFX0VYVEVOU0lP
TihtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBU1RDKTsKKyAgICBMT1NFX0VYVEVOU0lPTihtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpOworICAgIExPU0VfRVhURU5TSU9OKG1fd2ViZ2xDb21w
cmVzc2VkVGV4dHVyZUVUQyk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbENvbXByZXNzZWRU
ZXh0dXJlRVRDMSk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbENvbXByZXNzZWRUZXh0dXJl
UFZSVEMpOworICAgIExPU0VfRVhURU5TSU9OKG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMp
OworICAgIExPU0VfRVhURU5TSU9OKG1fd2ViZ2xEZXB0aFRleHR1cmUpOworICAgIExPU0VfRVhU
RU5TSU9OKG1fd2ViZ2xEcmF3QnVmZmVycyk7CisgICAgTE9TRV9FWFRFTlNJT04obV9hbmdsZUlu
c3RhbmNlZEFycmF5cyk7CisgICAgTE9TRV9FWFRFTlNJT04obV9leHRDb2xvckJ1ZmZlckhhbGZG
bG9hdCk7CisgICAgTE9TRV9FWFRFTlNJT04obV93ZWJnbENvbG9yQnVmZmVyRmxvYXQpOworICAg
IExPU0VfRVhURU5TSU9OKG1fZXh0Q29sb3JCdWZmZXJGbG9hdCk7Cit9CisKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZpdHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gb2xkQWN0aXZpdHlTdGF0ZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWc+IG5ld0FjdGl2aXR5U3RhdGUpCiB7CiAgICAgaWYgKCFtX2NvbnRleHQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKaW5kZXggZDA4ODcwNzJkNDE5MmIzNDY4MGI1ZWJjMjZjZjZjN2M4OGFkODVlMy4uODAy
YjExNmYxMDA0MjhjZGQ4MzJjZGYzZjAwYmNlNDgxODk3ZDljMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAt
NTE1LDYgKzUxNSw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRl
bnNpb25GbGFnIHRleHR1cmVFeHRlbnNpb25GbGFncygpIGNvbnN0OwogCiAgICAgYm9vbCBlbmFi
bGVTdXBwb3J0ZWRFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbk5hbWVMaXRlcmFsKTsK
KyAgICB2b2lkIGxvc2VFeHRlbnNpb25zKExvc3RDb250ZXh0TW9kZSk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdW5jYWNoZURlbGV0ZWRCdWZmZXIoY29uc3QgV1RGOjpBYnN0cmFjdExvY2tlciYsIFdl
YkdMQnVmZmVyKik7CiAKQEAgLTY1NywzMyArNjU4LDMzIEBAIHByb3RlY3RlZDoKIAogICAgIC8v
IEVuYWJsZWQgZXh0ZW5zaW9uIG9iamVjdHMuCiAgICAgLy8gRklYTUU6IE1vdmUgc29tZSBvZiB0
aGVzZSB0byBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHRoZSBvbmVzIG5vdCBuZWVkZWQgZm9yIFdl
YkdMMgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RVhUc1JHQj4gbV9leHRzUkdCOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM+IG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRTaGFkZXJUZXh0dXJlTE9EPiBtX2V4dFNoYWRl
clRleHR1cmVMT0Q7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNU
ZXh0dXJlRmxvYXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVGbG9hdExpbmVhcj4g
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1RleHR1cmVI
YWxmRmxvYXQ+IG1fb2VzVGV4dHVyZUhhbGZGbG9hdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8T0VT
VGV4dHVyZUhhbGZGbG9hdExpbmVhcj4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxPRVNTdGFuZGFyZERlcml2YXRpdmVzPiBtX29lc1N0YW5kYXJkRGVy
aXZhdGl2ZXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9FU1ZlcnRleEFycmF5T2JqZWN0PiBtX29l
c1ZlcnRleEFycmF5T2JqZWN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxPRVNFbGVtZW50SW5kZXhV
aW50PiBtX29lc0VsZW1lbnRJbmRleFVpbnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMTG9z
ZUNvbnRleHQ+IG1fd2ViZ2xMb3NlQ29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mbz4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJHTERlYnVnU2hhZGVycz4gbV93ZWJnbERlYnVnU2hhZGVyczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEM+IG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZUFTVEM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRDOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMT4gbV93ZWJnbENvbXBy
ZXNzZWRUZXh0dXJlRVRDMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDPiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQzsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMRGVwdGhUZXh0dXJlPiBtX3dlYmdsRGVw
dGhUZXh0dXJlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTERyYXdCdWZmZXJzPiBtX3dlYmds
RHJhd0J1ZmZlcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFOR0xFSW5zdGFuY2VkQXJyYXlzPiBt
X2FuZ2xlSW5zdGFuY2VkQXJyYXlzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdD4gbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViR0xDb2xvckJ1ZmZlckZsb2F0PiBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RVhUQ29sb3JCdWZmZXJGbG9hdD4gbV9leHRDb2xvckJ1ZmZlckZsb2F0
OworICAgIFJlZlB0cjxFWFRGcmFnRGVwdGg+IG1fZXh0RnJhZ0RlcHRoOworICAgIFJlZlB0cjxF
WFRCbGVuZE1pbk1heD4gbV9leHRCbGVuZE1pbk1heDsKKyAgICBSZWZQdHI8RVhUc1JHQj4gbV9l
eHRzUkdCOworICAgIFJlZlB0cjxFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM+IG1fZXh0VGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljOworICAgIFJlZlB0cjxFWFRTaGFkZXJUZXh0dXJlTE9EPiBt
X2V4dFNoYWRlclRleHR1cmVMT0Q7CisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdD4gbV9vZXNU
ZXh0dXJlRmxvYXQ7CisgICAgUmVmUHRyPE9FU1RleHR1cmVGbG9hdExpbmVhcj4gbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXI7CisgICAgUmVmUHRyPE9FU1RleHR1cmVIYWxmRmxvYXQ+IG1fb2VzVGV4
dHVyZUhhbGZGbG9hdDsKKyAgICBSZWZQdHI8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4gbV9v
ZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOworICAgIFJlZlB0cjxPRVNTdGFuZGFyZERlcml2YXRp
dmVzPiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXM7CisgICAgUmVmUHRyPE9FU1ZlcnRleEFycmF5
T2JqZWN0PiBtX29lc1ZlcnRleEFycmF5T2JqZWN0OworICAgIFJlZlB0cjxPRVNFbGVtZW50SW5k
ZXhVaW50PiBtX29lc0VsZW1lbnRJbmRleFVpbnQ7CisgICAgUmVmUHRyPFdlYkdMTG9zZUNvbnRl
eHQ+IG1fd2ViZ2xMb3NlQ29udGV4dDsKKyAgICBSZWZQdHI8V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
bz4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvOworICAgIFJlZlB0cjxXZWJHTERlYnVnU2hhZGVy
cz4gbV93ZWJnbERlYnVnU2hhZGVyczsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFTVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFTVEM7CisgICAgUmVmUHRyPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQzsKKyAgICBSZWZQ
dHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQz4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlRVRD
OworICAgIFJlZlB0cjxXZWJHTENvbXByZXNzZWRUZXh0dXJlRVRDMT4gbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlRVRDMTsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPiBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQzsKKyAgICBSZWZQdHI8V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEM+IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CisgICAgUmVmUHRyPFdl
YkdMRGVwdGhUZXh0dXJlPiBtX3dlYmdsRGVwdGhUZXh0dXJlOworICAgIFJlZlB0cjxXZWJHTERy
YXdCdWZmZXJzPiBtX3dlYmdsRHJhd0J1ZmZlcnM7CisgICAgUmVmUHRyPEFOR0xFSW5zdGFuY2Vk
QXJyYXlzPiBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzOworICAgIFJlZlB0cjxFWFRDb2xvckJ1ZmZl
ckhhbGZGbG9hdD4gbV9leHRDb2xvckJ1ZmZlckhhbGZGbG9hdDsKKyAgICBSZWZQdHI8V2ViR0xD
b2xvckJ1ZmZlckZsb2F0PiBtX3dlYmdsQ29sb3JCdWZmZXJGbG9hdDsKKyAgICBSZWZQdHI8RVhU
Q29sb3JCdWZmZXJGbG9hdD4gbV9leHRDb2xvckJ1ZmZlckZsb2F0OwogCiAgICAgYm9vbCBtX2Fy
ZVdlYkdMMlRleEltYWdlU291cmNlRm9ybWF0c0FuZFR5cGVzQWRkZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYzhlMTJhMGQ2ODgwM2IwNDg2YTgwNDAyMTUwZDFjMzRkNzczZWEwMC4uNDYyMjJi
MjY4YzRhODYwYjdlYzhiODk1ZDBkNjQ4ODVhZThiODNhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA4LTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtXZWJHTDJdIFBhc3MgY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwgdGVzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NTk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIFJlYmFzZWxpbmVkIFdlYkdM
IGNvbmZvcm1hbmNlIHRlc3RzIHdoaWNoIGFyZSBub3cgZnVsbHkgcGFzc2luZy4KKworICAgICAg
ICAqIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVk
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jb250ZXh0
L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDgtMTkgIEthcmwg
UmFja2xlciAgPHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHJkYXI6Ly82NTI2OTU4OSAo
WyBtYWNPUyBhbmQgaU9TIF0gbWVkaWEvdnA5Lmh0bWwgaXMgZmFpbGluZyBjb25zaXN0ZW50bHku
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvY29udGV4
dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQtZXhwZWN0ZWQu
dHh0CmluZGV4IDBjNDAyMTE5Y2Y4Y2MyNjk2YmI4NmJjZjM1YTUxYmVkZTc5ODUxYmIuLjQ1Yjdl
MzVlNjA1ZjEwZTI5OGZiYjdhZjA5NzVkOGU4MTdjMmYxYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9j
b250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1leHBlY3RlZC50eHQKQEAgLTEsNTcgKzEsNSBA
QAogVGhpcyB0ZXN0IHJ1bnMgdGhlIFdlYkdMIFRlc3QgbGlzdGVkIGJlbG93IGluIGFuIGlmcmFt
ZSBhbmQgcmVwb3J0cyBQQVNTIG9yIEZBSUwuCiAKIFRlc3Q6IC4uLy4uL3Jlc291cmNlcy93ZWJn
bF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0
bWwKLVsgMTogUEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyBmYWxzZQotWyAyOiBQQVNTIF0g
Z2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAzOiBQQVNTIF0gc2hvdWxkQmUgMjU1LDEw
LDIwCi1bIDQ6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDU6IFBBU1Mg
XSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1ZQotWyA2OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBp
cyBnbC5DT05URVhUX0xPU1RfV0VCR0wKLVsgNzogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wu
Tk9fRVJST1IKLVsgODogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJS
T1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC5ibGVuZEZ1bmMoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9DVUJFX01BUCkKLVsgOTogUEFTUyBdIGNvbnRleHRMb3N0RXZlbnRGaXJlZCBpcyBmYWxz
ZQotWyAxMDogUEFTUyBdIGNvbnRleHRMb3N0RXZlbnRGaXJlZCBpcyBmYWxzZQotWyAxMTogUEFT
UyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0cnVlCi1bIDEyOiBQQVNTIF0gZ2wuZ2V0RXJyb3Io
KSBpcyBnbC5OT19FUlJPUgotWyAxMzogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBhZnRlciBldmFsdWF0aW5nOiBXRUJHTF9sb3NlX2NvbnRl
eHQucmVzdG9yZUNvbnRleHQoKQotWyAxNDogUEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyBm
YWxzZQotWyAxNTogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMTY6IFBB
U1MgXSBzaG91bGRCZSAyNTUsMTAsMjAKLVsgMTc6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGds
Lk5PX0VSUk9SCi1bIDE4OiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMTk6
IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLkNPTlRFWFRfTE9TVF9XRUJHTAotWyAyMDogUEFT
UyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMjE6IFBBU1MgXSBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmxlbmRG
dW5jKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfQ1VCRV9NQVApCi1bIDIyOiBQQVNTIF0gY29u
dGV4dExvc3RFdmVudEZpcmVkIGlzIGZhbHNlCi1bIDIzOiBQQVNTIF0gY29udGV4dExvc3RFdmVu
dEZpcmVkIGlzIGZhbHNlCi1bIDI0OiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUK
LVsgMjU6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDI2OiBQQVNTIF0g
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6
IFdFQkdMX2xvc2VfY29udGV4dC5yZXN0b3JlQ29udGV4dCgpCi1bIDI3OiBQQVNTIF0gZ2wuaXND
b250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMjg6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1bIDI5OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJsZW5kRnVuYyhnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX0NVQkVfTUFQKQotWyAzMDogUEFTUyBdIGNvbnRleHRSZXN0b3JlZEV2ZW50RmlyZWQgaXMg
ZmFsc2UKLVsgMzE6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgZmFsc2UKLVsgMzI6IFBB
U1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDMzOiBQQVNTIF0gZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGFmdGVyIGV2YWx1YXRpbmc6
IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpCi1bIDM0OiBQQVNTIF0gZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJBVElPTiA6IGFmdGVyIGV2YWx1
YXRpbmc6IGdsLnVzZVByb2dyYW0ocHJvZ3JhbSkKLVsgMzU6IFBBU1MgXSBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BFUkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlck9iamVjdHNbMF0pCi1bIDM2OiBQQVNT
IF0gc2hvdWxkQmUgMjU1LDEwLDIwCi1bIDM3OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5O
T19FUlJPUgotWyAzODogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJS
T1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0
dXJlKQotWyAzOTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1Ig
OiBhZnRlciBldmFsdWF0aW5nOiBnbC51c2VQcm9ncmFtKHByb2dyYW0pCi1bIDQwOiBQQVNTIF0g
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXJPYmplY3RzWzBdKQotWyA0MTog
UEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9FTlVNIDogYWZ0ZXIg
ZXZhbHVhdGluZzogZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAx
LCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVsbCkKLVsgNDI6IFBBU1MgXSBuZXdFeHRlbnNpb24g
IT0gbnVsbCBpcyB0cnVlCi1bIDQzOiBGQUlMIF0gbmV3RXh0ZW5zaW9uLndlYmdsVGVzdFByb3Bl
cnR5ID09PSB1bmRlZmluZWQgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KLVsgNDQ6IEZBSUwg
XSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJST1IuIFdhcyBJTlZBTElEX0VOVU0gOiBhZnRlciBl
dmFsdWF0aW5nOiBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEs
IDAsIGdsLlJHQkEsIGdsLkZMT0FULCBudWxsKQotWyA0NTogRkFJTCBdIE9FU192ZXJ0ZXhfYXJy
YXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCkgc2hvdWxkIGJlIG51bGwuIFdhcyBbb2Jq
ZWN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVNdLgotWyA0NjogUEFTUyBdIG5ld0V4dGVuc2lv
biAhPSBudWxsIGlzIHRydWUKLVsgNDc6IEZBSUwgXSBuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJv
cGVydHkgPT09IHVuZGVmaW5lZCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotWyA0ODogUEFT
UyBdIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCkgIT0gbnVs
bCBpcyB0cnVlCi1bIDQ5OiBGQUlMIF0gb2xkX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmNyZWF0
ZVZlcnRleEFycmF5T0VTKCkgPT0gbnVsbCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotWyA1
MDogUEFTUyBdIG5ld0V4dGVuc2lvbiAhPSBudWxsIGlzIHRydWUKLVsgNTE6IFBBU1MgXSBuZXdF
eHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHRydWUgaXMgdHJ1ZQotWyA1MjogUEFTUyBd
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1bIEZBSUwgXSA1IGZhaWx1cmVzIHJlcG9ydGVk
CitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2VkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NvbnRleHQvY29u
dGV4dC1sb3N0LXJlc3RvcmVkLWV4cGVjdGVkLnR4dAppbmRleCBiN2UxMTMyMmM3OWQ0MDYxZmNj
NGNkZDA2NzdjMzQwMjdkNTBmODM5Li5lNmNkMGM2NzM0YTM2MzM4ZmEyOTM5NTg2NDMxODJlZWVi
Y2E4NWIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9j
b250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY29udGV4dC9jb250ZXh0LWxvc3QtcmVzdG9yZWQt
ZXhwZWN0ZWQudHh0CkBAIC0xLDU3ICsxLDQgQEAKIFRoaXMgdGVzdCBydW5zIHRoZSBXZWJHTCBU
ZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBGQUlMLgog
CiBUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9jb250
ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sCi0KLVsgMTogUEFTUyBdIGdsLmlzQ29udGV4
dExvc3QoKSBpcyBmYWxzZQotWyAyOiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJP
UgotWyAzOiBQQVNTIF0gc2hvdWxkQmUgMjU1LDEwLDIwCi1bIDQ6IFBBU1MgXSBnbC5nZXRFcnJv
cigpIGlzIGdsLk5PX0VSUk9SCi1bIDU6IFBBU1MgXSBnbC5pc0NvbnRleHRMb3N0KCkgaXMgdHJ1
ZQotWyA2OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5DT05URVhUX0xPU1RfV0VCR0wKLVsg
NzogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgODogUEFTUyBdIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC5i
bGVuZEZ1bmMoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9DVUJFX01BUCkKLVsgOTogUEFTUyBd
IGNvbnRleHRMb3N0RXZlbnRGaXJlZCBpcyBmYWxzZQotWyAxMDogUEFTUyBdIGNvbnRleHRMb3N0
RXZlbnRGaXJlZCBpcyBmYWxzZQotWyAxMTogUEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyB0
cnVlCi1bIDEyOiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAxMzogUEFT
UyBdIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBhZnRl
ciBldmFsdWF0aW5nOiBXRUJHTF9sb3NlX2NvbnRleHQucmVzdG9yZUNvbnRleHQoKQotWyAxNDog
UEFTUyBdIGdsLmlzQ29udGV4dExvc3QoKSBpcyBmYWxzZQotWyAxNTogUEFTUyBdIGdsLmdldEVy
cm9yKCkgaXMgZ2wuTk9fRVJST1IKLVsgMTY6IFBBU1MgXSBzaG91bGRCZSAyNTUsMTAsMjAKLVsg
MTc6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDE4OiBQQVNTIF0gZ2wu
aXNDb250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMTk6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGds
LkNPTlRFWFRfTE9TVF9XRUJHTAotWyAyMDogUEFTUyBdIGdsLmdldEVycm9yKCkgaXMgZ2wuTk9f
RVJST1IKLVsgMjE6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmxlbmRGdW5jKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRV
UkVfQ1VCRV9NQVApCi1bIDIyOiBQQVNTIF0gY29udGV4dExvc3RFdmVudEZpcmVkIGlzIGZhbHNl
Ci1bIDIzOiBQQVNTIF0gY29udGV4dExvc3RFdmVudEZpcmVkIGlzIGZhbHNlCi1bIDI0OiBQQVNT
IF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMjU6IFBBU1MgXSBnbC5nZXRFcnJvcigp
IGlzIGdsLk5PX0VSUk9SCi1bIDI2OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVl
OiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IFdFQkdMX2xvc2VfY29udGV4dC5yZXN0b3Jl
Q29udGV4dCgpCi1bIDI3OiBQQVNTIF0gZ2wuaXNDb250ZXh0TG9zdCgpIGlzIHRydWUKLVsgMjg6
IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5PX0VSUk9SCi1bIDI5OiBQQVNTIF0gZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJs
ZW5kRnVuYyhnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX0NVQkVfTUFQKQotWyAzMDogUEFTUyBd
IGNvbnRleHRSZXN0b3JlZEV2ZW50RmlyZWQgaXMgZmFsc2UKLVsgMzE6IFBBU1MgXSBnbC5pc0Nv
bnRleHRMb3N0KCkgaXMgZmFsc2UKLVsgMzI6IFBBU1MgXSBnbC5nZXRFcnJvcigpIGlzIGdsLk5P
X0VSUk9SCi1bIDMzOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElE
X09QRVJBVElPTiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVf
MkQsIHRleHR1cmUpCi1bIDM0OiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJ
TlZBTElEX09QRVJBVElPTiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLnVzZVByb2dyYW0ocHJvZ3Jh
bSkKLVsgMzU6IFBBU1MgXSBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfT1BF
UkFUSU9OIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IGJ1ZmZlck9iamVjdHNbMF0pCi1bIDM2OiBQQVNTIF0gc2hvdWxkQmUgMjU1LDEwLDIwCi1bIDM3
OiBQQVNTIF0gZ2wuZ2V0RXJyb3IoKSBpcyBnbC5OT19FUlJPUgotWyAzODogUEFTUyBdIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKQotWyAzOTogUEFTUyBdIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiBhZnRlciBldmFsdWF0aW5nOiBnbC51c2VQ
cm9ncmFtKHByb2dyYW0pCi1bIDQwOiBQQVNTIF0gZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVl
OiBOT19FUlJPUiA6IGFmdGVyIGV2YWx1YXRpbmc6IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCBidWZmZXJPYmplY3RzWzBdKQotWyA0MTogUEFTUyBdIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9FTlVNIDogYWZ0ZXIgZXZhbHVhdGluZzogZ2wudGV4SW1hZ2UyRChn
bC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAxLCAxLCAwLCBnbC5SR0JBLCBnbC5GTE9BVCwgbnVs
bCkKLVsgNDI6IFBBU1MgXSBuZXdFeHRlbnNpb24gIT0gbnVsbCBpcyB0cnVlCi1bIDQzOiBGQUlM
IF0gbmV3RXh0ZW5zaW9uLndlYmdsVGVzdFByb3BlcnR5ID09PSB1bmRlZmluZWQgc2hvdWxkIGJl
IHRydWUuIFdhcyBmYWxzZS4KLVsgNDQ6IEZBSUwgXSBnZXRFcnJvciBleHBlY3RlZDogTk9fRVJS
T1IuIFdhcyBJTlZBTElEX0VOVU0gOiBhZnRlciBldmFsdWF0aW5nOiBnbC50ZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLkZMT0FULCBudWxs
KQotWyA0NTogRkFJTCBdIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5
T0VTKCkgc2hvdWxkIGJlIG51bGwuIFdhcyBbb2JqZWN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVNdLgotWyA0NjogUEFTUyBdIG5ld0V4dGVuc2lvbiAhPSBudWxsIGlzIHRydWUKLVsgNDc6IEZB
SUwgXSBuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkgPT09IHVuZGVmaW5lZCBzaG91bGQg
YmUgdHJ1ZS4gV2FzIGZhbHNlLgotWyA0ODogUEFTUyBdIE9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
LmNyZWF0ZVZlcnRleEFycmF5T0VTKCkgIT0gbnVsbCBpcyB0cnVlCi1bIDQ5OiBGQUlMIF0gb2xk
X09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCkgPT0gbnVsbCBz
aG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotWyA1MDogUEFTUyBdIG5ld0V4dGVuc2lvbiAhPSBu
dWxsIGlzIHRydWUKLVsgNTE6IFBBU1MgXSBuZXdFeHRlbnNpb24ud2ViZ2xUZXN0UHJvcGVydHkg
PT09IHRydWUgaXMgdHJ1ZQotWyA1MjogUEFTUyBdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
Ci1bIEZBSUwgXSA1IGZhaWx1cmVzIHJlcG9ydGVkCitbIFBBU1MgXSBBbGwgdGVzdHMgcGFzc2Vk
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>