<?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>164137</bug_id>
          
          <creation_ts>2016-10-28 11:30:29 -0700</creation_ts>
          <short_desc>[DOM] Introduce WebCore::jsDynamicDowncast</short_desc>
          <delta_ts>2016-11-03 21:52:11 -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>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>164096</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245678</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 11:30:29 -0700</bug_when>
    <thetext>It is thin wrapper for jsDynamicCast. But it selects the faster implementation if the given target type is WebCore extending JSType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245695</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 12:01:42 -0700</bug_when>
    <thetext>Rename it to jsDynamicDowncast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245713</commentid>
    <comment_count>2</comment_count>
      <attachid>293189</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 13:04:13 -0700</bug_when>
    <thetext>Created attachment 293189
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245767</commentid>
    <comment_count>3</comment_count>
      <attachid>293209</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 14:02:08 -0700</bug_when>
    <thetext>Created attachment 293209
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245788</commentid>
    <comment_count>4</comment_count>
      <attachid>293215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 14:24:17 -0700</bug_when>
    <thetext>Created attachment 293215
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245819</commentid>
    <comment_count>5</comment_count>
      <attachid>293227</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 15:06:18 -0700</bug_when>
    <thetext>Created attachment 293227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245860</commentid>
    <comment_count>6</comment_count>
      <attachid>293242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 16:33:35 -0700</bug_when>
    <thetext>Created attachment 293242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245932</commentid>
    <comment_count>7</comment_count>
      <attachid>293242</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-28 19:08:58 -0700</bug_when>
    <thetext>Comment on attachment 293242
Patch

Seems OK like this.

Another idea is to pattern this more on the WebCore is&lt;&gt; and downcast&lt;&gt; macros. The style where we return a nullptr when we can’t cast is indeed how dynamic_cast works, but it might not be as efficient as separate boolean checks and it results in working with pointers when we could be working with references instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246166</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 23:33:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 293242 [details]
&gt; Patch
&gt; 
&gt; Seems OK like this.
&gt; 
&gt; Another idea is to pattern this more on the WebCore is&lt;&gt; and downcast&lt;&gt;
&gt; macros. The style where we return a nullptr when we can’t cast is indeed how
&gt; dynamic_cast works, but it might not be as efficient as separate boolean
&gt; checks and it results in working with pointers when we could be working with
&gt; references instead.

Interesting. Currently, we just reuse the semantics of C++ dynamic_cast.
And I think it is ok since typical JSC objects are held in JSC::JSValue or pointers.
But if converting pointer to reference for JSC objects in WebCore becomes more common,
I think it is worth introducing this is&lt;&gt; &amp; downcast&lt;&gt; idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246167</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-29 23:35:00 -0700</bug_when>
    <thetext>Before landing, I&apos;ll slightly extend the above patch to accept const pointer.
Currently, no one uses this. But it should be since const pointer will select the slow implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246173</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 00:21:38 -0700</bug_when>
    <thetext>I don’t think that is&lt;&gt; and downcast&lt;&gt; was invented just so we can use it with references. We thought it was a clearer idiom at the call site than dynamic_cast for many uses and equally efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246174</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 00:47:43 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I don’t think that is&lt;&gt; and downcast&lt;&gt; was invented just so we can use it
&gt; with references. We thought it was a clearer idiom at the call site than
&gt; dynamic_cast for many uses and equally efficient.

Interesting. Is there any notes about the pros of is&lt;&gt; and downcast&lt;&gt; over dynamic_cast&lt;&gt; thing?
We frequently use the dynamic casting idiom like,

if (auto* xxx = jsDynamicCast&lt;XXX*&gt;(pointer)) {
    // do something on xxx.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246176</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 00:57:53 -0700</bug_when>
    <thetext>One difference with the is&lt;&gt; and downcast&lt;&gt; is that you do have to state the type twice, unlike with dynamic_cast. But I suppose the other difference is that you don&apos;t end up with a pointer that you know is non-null, so maybe it is particularly good because we like to use references for those kinds of things. I understand that&apos;s not so popular with the JavaScript people and I think Phil even wrote an opinion piece about why it&apos;s wrong to ever use a reference to an object stored in a garbage collected cell. Didn&apos;t convince me, but I did read it.

What downcast&lt;&gt; is particularly good for is the case where you have some other reason to know that is&lt;&gt; is true; you still get an ASSERT-checked cast in that case.

And is&lt;&gt; is good for cases where you want to make a type check, but not to guard use of a pointer of the more specific type.

One good feature of is&lt;&gt; and downcast&lt;&gt; that dynamic_cast&lt;&gt; does not have, but I suppose jsDynamicCast&lt;&gt; could have, is a compile time error when the cast is used unnecessarily on a pointer or reference that already has the appropriate type.

As you alluded to earlier, since is&lt;&gt; and downcast&lt;&gt; work on references, they can omit unnecessary null checks that the compiler might not be able to optimize out from a use of dynamic_cast.

The terms “is” and “downcast” seem slightly more direct than “dynamic_cast”. The “dynamic” in “dynamic_cast” could mean more than one thing, although I suppose C++ programmers need to learn what it means.

I can’t think of any other pros and cons off hand. Maybe Chris, creator of is&lt;&gt; and downcast&lt;&gt; can think of some.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246178</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 01:31:18 -0700</bug_when>
    <thetext>Thank you for your clarification!

(In reply to comment #12)
&gt; One difference with the is&lt;&gt; and downcast&lt;&gt; is that you do have to state the
&gt; type twice, unlike with dynamic_cast.

Hmm, to me, it looks a bit dangerous.

When using is&lt;&gt; and downcast&lt;&gt;, instead of

if (auto* xxx = jsDynamicCast&lt;XXX*&gt;(...)) {
    // do something on xxx.
}

we need to write,

if (is&lt;XXX&gt;(...)) {
    auto* xxx = downcast&lt;XXX&gt;(...);
    // do something on xxx.
}

At that time, we need to write XXX twice. If we accidentally write (like, substituting one thing, but forget substituting the other) the different things,
the compiler does not find it. Only the runtime assertion will catch this, correct?

if (is&lt;XXX&gt;(...)) {
    auto* xxx = downcast&lt;YYY&gt;(...);
    // do something on xxx.
}

&gt; But I suppose the other difference is
&gt; that you don&apos;t end up with a pointer that you know is non-null, so maybe it
&gt; is particularly good because we like to use references for those kinds of
&gt; things.

Yes, that is good thing. So I thought that is&lt;&gt; &amp; downcast&lt;&gt; are useful if we like references.

&gt; I understand that&apos;s not so popular with the JavaScript people and I
&gt; think Phil even wrote an opinion piece about why it&apos;s wrong to ever use a
&gt; reference to an object stored in a garbage collected cell. Didn&apos;t convince
&gt; me, but I did read it.

OK, so I think is&lt;&gt; &amp; downcast&lt;&gt; works nicely when using references.

&gt; What downcast&lt;&gt; is particularly good for is the case where you have some
&gt; other reason to know that is&lt;&gt; is true; you still get an ASSERT-checked cast
&gt; in that case.

That is good. But jsCast&lt;&gt; also has the same thing.
We prefer to use jsCast&lt;&gt; in that case instead of using static_cast.

&gt; And is&lt;&gt; is good for cases where you want to make a type check, but not to
&gt; guard use of a pointer of the more specific type.

It&apos;s good thing. We typically use `cell-&gt;inherits(JSXXX::info())`.
Naming it as `jsIs&lt;&gt;` could be good.

&gt; One good feature of is&lt;&gt; and downcast&lt;&gt; that dynamic_cast&lt;&gt; does not have,
&gt; but I suppose jsDynamicCast&lt;&gt; could have, is a compile time error when the
&gt; cast is used unnecessarily on a pointer or reference that already has the
&gt; appropriate type.

Yeah. As you said, I think this feature can be easily introduced to jsDynamicCast&lt;&gt;.
And it is not the essential pros of is&lt;&gt; &amp; downcast&lt;&gt; over jsDynamicCast&lt;&gt;, right?
BTW, introducing it to jsDynamicCast&lt;&gt; is nice. We can figure out some crazy things like jsDynamicCast&lt;JSObject*&gt;(jsObjectValue)...

&gt; As you alluded to earlier, since is&lt;&gt; and downcast&lt;&gt; work on references,
&gt; they can omit unnecessary null checks that the compiler might not be able to
&gt; optimize out from a use of dynamic_cast.

Yes.

&gt; The terms “is” and “downcast” seem slightly more direct than “dynamic_cast”.
&gt; The “dynamic” in “dynamic_cast” could mean more than one thing, although I
&gt; suppose C++ programmers need to learn what it means.

Yes.

&gt; I can’t think of any other pros and cons off hand. Maybe Chris, creator of
&gt; is&lt;&gt; and downcast&lt;&gt; can think of some.

That sounds nice.
Yes, if we use references, they are good. But if we handle pointers, I think dynamic_cast things are better since we do not write the type twice.
(Of course, this &quot;dynamic_cast&lt;&gt;&quot; is not the C++ default dynamic_cast&lt;&gt; thing. is&lt;&gt; &amp; downcast&lt;&gt; are quite better than that. I mean it as `jsDynamicCast&lt;&gt;` thingy.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246179</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-30 01:44:17 -0700</bug_when>
    <thetext>Chris, any other reason you chose this style for is&lt;&gt; and downcast&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246182</commentid>
    <comment_count>15</comment_count>
      <attachid>293339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 02:12:52 -0700</bug_when>
    <thetext>Created attachment 293339
Patch for landing. Extended for const pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246187</commentid>
    <comment_count>16</comment_count>
      <attachid>293339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-30 02:42:09 -0700</bug_when>
    <thetext>Comment on attachment 293339
Patch for landing. Extended for const pointers

Anyway, I&apos;ll land this patch since it effectively removes the special care in CodeGeneratorJS.pm :)
Once we figure out is&lt;&gt; and downcast&lt;&gt; are better, we will handle it in the separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246192</commentid>
    <comment_count>17</comment_count>
      <attachid>293339</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-30 03:06:15 -0700</bug_when>
    <thetext>Comment on attachment 293339
Patch for landing. Extended for const pointers

Clearing flags on attachment: 293339

Committed r208124: &lt;http://trac.webkit.org/changeset/208124&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293189</attachid>
            <date>2016-10-28 13:04:13 -0700</date>
            <delta_ts>2016-10-28 14:02:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164137-20161029050022.patch</filename>
            <type>text/plain</type>
            <size>119610</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNTI5OGU4NDQyYTRj
YjZkNGE4ZWY0NTRmNWE4ZjE0ZmU1ZDA3Zi4uMmNjZGI2MjJhYzExNmQ5MzUwNWZiYTAzOTY4MGQ0
NzRlYjM4YWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMiBAQAorMjAxNi0xMC0yOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRl
bmRlZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBl
cywgV2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisg
ICAgICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRU
eXBlLCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2Js
ZW0gaXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvc2UKKyAg
ICAgICAgSlNDOjpqc0R5bmFtaWNDYXN0IGJ5IGFjY2lkZW50LiBBbmQgdGhpcyBzcGVjaWFsIGhh
bmRsaW5nIHJlcXVpcmVzCisgICAgICAgIHNwZWNpYWwgY2FyZSBpbiB0aGUgSURMIGNvZGUgZ2Vu
ZXJhdG9yIHdoZW4gd2Ugd291bGQgbGlrZSB0byB1c2UKKyAgICAgICAgZmFzdGVyIGNhc3Rpbmcg
ZnVuY3Rpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBjYXN0aW5n
IGZ1bmN0aW9uLCAiV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QiLgorICAgICAgICBJdCBpcyBh
IHRoaW4gd3JhcHBlciB0byB0aGUgIkpTQzo6anNEeW5hbWljQ2FzdCIuIEJ1dCBpdCBzZWxlY3Rz
IHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5IHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhlIHdheSBz
cGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJZiB3ZSBm
b3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpqc0R5YW5t
aWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJvcnMsIGJ1
dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVG8gYXZvaWQgdGhp
cyBwcm9ibGVtLCB3ZSBhZGQgYSBuZXcgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxl
UGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46
Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9u
YXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRG9jdW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
RHluYW1pY0Nhc3RUcmFpdDo6Y2FzdCk6CisgICAgICAgIChXZWJDb3JlOjpqc0R5bmFtaWNEb3du
Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmg6CisgICAgICAg
IChXZWJDb3JlOjpqc0VsZW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50Q2FzdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2
ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNr
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmls
aXRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOgorICAgICAgICAo
V2ViQ29yZTo6anNOb2RlQ2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVD
b25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSZWFkYWJsZVN0
cmVhbURlZmF1bHRSZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1Tb3VyY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRSZWFkYWJsZVN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwdWxsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6
ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZXRDYXN0aW5nSGVscGVyRm9yVGhp
c09iamVjdCk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJm
YWNlTmFtZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6
Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVz
dENFUmVhY3Rpb25zPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENF
UmVhY3Rpb25zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlv
bnM6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0Nh
bGxlcjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdEZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3Q6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluZGluZ0NhbGxlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjo6Y2FzdEZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RFdmVudFRhcmdldD46OmNh
c3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RFeGNlcHRpb24+OjpjYXN0Rm9y
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBl
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVj
dD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEds
b2JhbE9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8
SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2Fz
dEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RJdGVyYWJsZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+Ojpj
YXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGlu
Z0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdD
YWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZv
ck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0Nv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRv
V3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhc3RGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE9iajo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBl
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdD
YWxsZXI8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3RGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxp
emF0aW9uPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJp
YWxpemF0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFs
aXphdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRp
b246OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhc3RG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdEZvckF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6
Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRP
YmplY3Qgc2V0VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRo
b2Q6Omxlbmd0aEdldHRlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xsZXJKU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorCiAyMDE2
LTEwLTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBv
c2UgUlRDUGVlckNvbm5lY3Rpb24gdW5wcmVmaXhlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxODFhZmQ2YTIy
Njk3ODE5M2RlZGU1ODUxZTcyNWRiOTRlOGFjYTUuLmY2ODMzNTM5ZWU1ODA5NWRiODg1ZmMzYWMx
YWM4MzU4YzY5NmIyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0yOCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJ
bnRyb2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZSk6CisKIDIwMTYtMTAtMjggIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBDRk5ldHdvcmsg
Y29ubmVjdGlvbiBjYWNoZSBmYXN0IGxhbmUgZm9yIFdlYktpdDIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAppbmRleCAw
NTkxZWVjODJkMTYyOWY5Mzk0ZmU1ZTZhNDFkZjFmMTc1NDg5YTQ5Li5lNTNlN2RmMGFlNWYzMTY2
YmEyYWVjNTMyNjkzNTc1OTVjZmM3MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAg
IEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5
U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CisgICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29k
ZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iKSk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgSlNW
YWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
RXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAgIEpT
QXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vz
c2lvbio+KHRoaXNWYWx1ZSk7CisgICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIikpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNW
YWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU0Fw
cGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Np
b24qPih0aGlzVmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljRG93bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDhhZDA4YTdmMjk4ZjIxOTgzMDkzNzFjNDAzOTUwZjk3
NDQzMWYzNDEuLmEwNzE2MGRjOTVjYWZkNDU1YmNiNjgwODYzMDg4M2ZkYWQ3YmJhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMTQ2LDcgKzE0
Niw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNl
cHRpb25WYWx1ZSwgQ2FjaGVkU2NyaXB0KiBjYWNoCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICBhdXRvKiBleGNlcHRpb24gPSBqc0R5bmFtaWNDYXN0PEpTQzo6RXhjZXB0aW9uKj4o
ZXhjZXB0aW9uVmFsdWUpOworICAgIGF1dG8qIGV4Y2VwdGlvbiA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTQzo6RXhjZXB0aW9uKj4oZXhjZXB0aW9uVmFsdWUpOwogICAgIGlmICghZXhjZXB0aW9uKSB7
CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLmxhc3RFeGNlcHRpb24oKTsKICAgICAgICAgaWYgKCFl
eGNlcHRpb24pCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRTY3JpcHQqIGMKICAg
ICB2bS5jbGVhckxhc3RFeGNlcHRpb24oKTsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpOwotICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0ganNEeW5hbWljQ2FzdDxK
U0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCkpIHsKKyAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRv
dyA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KSkgewogICAg
ICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIHJl
cG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24s
IENhY2hlZFNjcmlwdCogYwogICAgIGVsc2UgewogICAgICAgICAvLyBGSVhNRTogPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBXZWJDb3JlOjpyZXBvcnRFeGNlcHRp
b24gc2hvdWxkIG5vdCBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5nIGV4Y2VwdGlvbnMKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIGN1c3RvbSBleGNlcHRpb24gb2JqZWN0LCBjYWxsIHRvU3Ry
aW5nIG9uIGl0IHRvIHRyeSBhbmQgZ2V0IGEgbmljZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9y
IHRoZSBleGNlcHRpb24uCi0gICAgICAgIGlmIChFcnJvckluc3RhbmNlKiBlcnJvciA9IGpzRHlu
YW1pY0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvblZhbHVlKSkKKyAgICAgICAgaWYgKEVy
cm9ySW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljRG93bmNhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4
Y2VwdGlvblZhbHVlKSkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVycm9yLT5zYW5pdGl6
ZWRUb1N0cmluZyhleGVjKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gZXhjZXB0aW9uVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5YzNkYWI1OGYwYTRlYmI5MTVk
MjdiNGZmMWE0ZWNjZDkzZjBlYWEyLi5jZGM0ZmM5ZjBmNTY3NDNiZGM3MTE1Y2ZhMjMxNThhNGQ5
NzJmOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSlNET01H
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJKU0R5
bmFtaWNEb3duY2FzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCIKQEAgLTU2NCw3ICs1NjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFz
cz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNETwog
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQ2xhc3MmIGNhc3RUaGlzVmFsdWUo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIGF1dG8gdGhpc1ZhbHVlID0gc3RhdGUudGhp
c1ZhbHVlKCk7Ci0gICAgYXV0byBjYXN0ZWRUaGlzID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQ2xh
c3MqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTQ2xhc3MqPih0aGlzVmFsdWUpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICByZXR1
cm4gKmNhc3RlZFRoaXM7CiB9CkBAIC02ODYsNyArNjg3LDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTSXRlcmF0b3JFbmQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogCiBpbmxpbmUgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0b0FycmF5QnVmZmVyVmlldyhKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgYXV0byogd3JhcHBlciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJy
YXlCdWZmZXJWaWV3Kj4odmFsdWUpOworICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHdyYXBwZXItPmltcGwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAppbmRleCA5N2FhNGI5ZGE0
YTZkOGEzOTY2ODZhZTdhOWRhMWNhOTM0NmI5ZWU3Li5iNTgyZGIwZjU2ZDcyMzI4OTUyMGNlNjZj
MGUzMGVmMTUyNzEyMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWkKICAgICBK
U0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaXRlcmF0b3IgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNE
T01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPio+KHN0YXRlLT50aGlzVmFsdWUo
KSk7CisgICAgYXV0byBpdGVyYXRvciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NSXRlcmF0b3I8
SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgbmV4dCgpIG9u
IGEgbm9uLUl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggZjE1NGMyYTY0MTNlZTgzYzRmOTVhYzZi
NzY1Y2IzNGMyNGNkMjc3NS4uN2FjODVlYzQ3ZDMxZmQ1MjkwNWRmNWRiYTdhOGIwNDVhYmU0NDJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBET01XaW5kb3cmIEpTRE9NV2luZG93U2hlbGw6OndyYXBw
ZWQoKSBjb25zdAogCiBET01XaW5kb3cqIEpTRE9NV2luZG93U2hlbGw6OnRvV3JhcHBlZChKU09i
amVjdCogdmFsdWUpCiB7Ci0gICAgYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNET01X
aW5kb3dTaGVsbCo+KHZhbHVlKTsKKyAgICBhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNh
c3Q8SlNET01XaW5kb3dTaGVsbCo+KHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAmd3JhcHBlci0+d2luZG93KCktPndyYXBwZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmluZGV4IDlj
MTBiNDYxYmJjYzIwMjAzMmI2M2UyMTg2NGYwODY2MjlmNDI4YTYuLjFmZGZkMmZiNzNmNDJmNjg5
ZDRlOWNjNjY3NDI1ODc0Mjc5YjU0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpj
b252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxU
b3VjCiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEpTQzo6SlNGdW5jdGlvbiomIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KHZhbHVlKTsKKyAgICByZXN1bHQg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1ZSk7CiB9CiAKIGJvb2wg
SlNEaWN0aW9uYXJ5OjpnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soY29uc3QgY2hhciogcHJv
cGVydHlOYW1lLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAppbmRleCA2OWM0Y2E4Mjg5MTljOWIxM2FiYWIxYzgz
YjZiYWEwMmE5ZDZiYzJhLi5iNjM0YjU3NGMwMDg0MjM2OTY0ODRjN2JmODRmMTZiM2U3YTJjNTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9t
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oCkBA
IC0zMSwxMSArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUg
SlNEb2N1bWVudCoganNEb2N1bWVudENhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lO
TElORSBKU0RvY3VtZW50KiBqc0RvY3VtZW50Q2FzdChKU0M6OkpTQ2VsbCogdmFsdWUpCiB7Ci0g
ICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRG9jdW1lbnRXcmFwcGVy
VHlwZSA/IEpTQzo6anNDYXN0PEpTRG9jdW1lbnQqPih2YWx1ZSkgOiBudWxscHRyOworICAgIHJl
dHVybiB2YWx1ZS0+dHlwZSgpID09IEpTRG9jdW1lbnRXcmFwcGVyVHlwZSA/IEpTQzo6anNDYXN0
PEpTRG9jdW1lbnQqPih2YWx1ZSkgOiBudWxscHRyOwogfQogCiBKU0M6OkpTT2JqZWN0KiBjYWNo
ZWREb2N1bWVudFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIERv
Y3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0R5bmFt
aWNEb3duY2FzdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEeW5hbWljRG93bmNh
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mOThlYzRiZWVmMmRjODcyMDU0ZjEyNmY3ODU4MzgxYjJhZWEwZWZk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEeW5hbWlj
RG93bmNhc3QuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Nl
bGxJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNOb2RlOworSlNO
b2RlKiBqc05vZGVDYXN0KEpTQzo6SlNDZWxsKik7CitjbGFzcyBKU0VsZW1lbnQ7CitKU0VsZW1l
bnQqIGpzRWxlbWVudENhc3QoSlNDOjpKU0NlbGwqKTsKK2NsYXNzIEpTRG9jdW1lbnQ7CitKU0Rv
Y3VtZW50KiBqc0RvY3VtZW50Q2FzdChKU0M6OkpTQ2VsbCopOworY2xhc3MgSlNFdmVudDsKK0pT
RXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNDZWxsKik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRv
Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdCB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJv
bT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUbyBjYXN0KEZyb20qIGZyb20pCisgICAgewor
ICAgICAgICByZXR1cm4gSlNDOjpqc0R5bmFtaWNDYXN0PFRvPihmcm9tKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0PEpTTm9kZSo+IHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTTm9kZSog
Y2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzTm9kZUNhc3QoZnJvbSk7
CisgICAgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdDxKU0Vs
ZW1lbnQqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU0VsZW1lbnQqIGNhc3QoRnJvbSogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVy
biBqc0VsZW1lbnRDYXN0KGZyb20pOworICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBK
U0R5bmFtaWNDYXN0VHJhaXQ8SlNEb2N1bWVudCo+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
cm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTRG9jdW1lbnQqIGNhc3QoRnJvbSogZnJv
bSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc0RvY3VtZW50Q2FzdChmcm9tKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0PEpTRXZlbnQqPiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0V2
ZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAgeworICAgICAgICByZXR1cm4ganNFdmVudENhc3Qo
ZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+
CitBTFdBWVNfSU5MSU5FIFRvIGpzRHluYW1pY0Rvd25jYXN0KEZyb20qIGZyb20pCit7CisgICAg
cmV0dXJuIEpTRHluYW1pY0Nhc3RUcmFpdDxUbz46OmNhc3QoZnJvbSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFRvPgorQUxXQVlTX0lOTElORSBUbyBqc0R5bmFtaWNEb3duY2FzdChKU0M6OkpT
VmFsdWUgZnJvbSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIWZyb20uaXNDZWxsKCkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8VG8+KGZyb20u
YXNDZWxsKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0VsZW1lbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVu
dEN1c3RvbS5oCmluZGV4IDJhMWJhMDE4MDMyNGQwODRiNGFjNWI2YjJjOTU3ZWRjMzlhNzk2Zjcu
LmRmZTIzYmNiNzk1NjBmZWJjNTEwYjdmYTNlZjA0NGFlMmFhMjVjMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oCkBAIC0zMSwxMSArMzEsOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUgSlNFbGVtZW50KiBqc0VsZW1l
bnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNFbGVtZW50KiBqc0Vs
ZW1lbnRDYXN0KEpTQzo6SlNDZWxsKiB2YWx1ZSkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIXZhbHVl
LmlzQ2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHZhbHVlLmFz
Q2VsbCgpLT50eXBlKCkgPj0gSlNFbGVtZW50VHlwZSA/IEpTQzo6anNDYXN0PEpTRWxlbWVudCo+
KHZhbHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPj0gSlNFbGVtZW50
VHlwZSA/IEpTQzo6anNDYXN0PEpTRWxlbWVudCo+KHZhbHVlKSA6IG51bGxwdHI7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
dXN0b20uaAppbmRleCA1NTk5ZjRjMWYxOTczZDRhM2YzNWVjODdlMjEyMDBmMDE5MWNjMDlhLi4w
NjgzYTZhZTE3ODY5MGEwNjhhOWY0ZDk2NmRiNjI5NDRiMzhmYzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUgSlNFdmVudCoganNFdmVudENhc3QoSlND
OjpKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU0V2ZW50KiBqc0V2ZW50Q2FzdChKU0M6
OkpTQ2VsbCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgp
ID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZhbHVlKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPT0gSlNFdmVudFR5cGUgPyBKU0M6OmpzQ2FzdDxK
U0V2ZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNw
cAppbmRleCBmNDBkZjYxMjRlYmFhM2Q1YjM2OTE4MjdjODE4YTNmMGNhZDk3ZmU3Li4zNzIyMjU4
M2ZlZTZiZmZkM2VlMmJhNWIzNjMyYmVlMDA3YjAxZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBA
QCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3Qo
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Nh
c3Q8SlNFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSkpCisgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTRXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpKQogICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVk
KCksICp0YXJnZXQpOwogICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHRoaXNW
YWx1ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFw
cGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAppbmRleCBhMGVk
OTIxYTFjZGE3NDFmYTg0YmUwMTk0YjhjZTMzOWE3Mzc0NzhiLi5jMzBiNmZjOWYwMTYyNmNjNjU5
NWI1YTljN2ZmY2RjOWFiODBkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
SlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAgIEpTTWVkaWFTdHJlYW1U
cmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhp
c1ZhbHVlKTsKKyAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlz
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3Mi
KSk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNr
OjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwotICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKKyAgICBKU01lZGlhU3RyZWFt
VHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU01lZGlhU3RyZWFtVHJhY2sq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIk1l
ZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmgKaW5kZXggMWU4YThjMTE5MzZiNmY1NWZhN2NlZGRhMjg5ZjU2
NWJhMjY2MmQ2Mi4uZDVkNmQwM2NiYmNkMWU0NGMxYjg3YmMyNTc2NTA3MGYwNjYzNGQ0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKQEAgLTc4LDExICs3OCw5
IEBAIGlubGluZSB2b2lkKiByb290KE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIHJvb3QoJm5vZGUp
OwogfQogCi1BTFdBWVNfSU5MSU5FIEpTTm9kZSoganNOb2RlQ2FzdChKU0M6OkpTVmFsdWUgdmFs
dWUpCitBTFdBWVNfSU5MSU5FIEpTTm9kZSoganNOb2RlQ2FzdChKU0M6OkpTQ2VsbCogdmFsdWUp
CiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID49IEpTTm9kZVR5cGUg
PyBKU0M6OmpzQ2FzdDxKU05vZGUqPih2YWx1ZSkgOiBudWxscHRyOworICAgIHJldHVybiB2YWx1
ZS0+dHlwZSgpID49IEpTTm9kZVR5cGUgPyBKU0M6OmpzQ2FzdDxKU05vZGUqPih2YWx1ZSkgOiBu
dWxscHRyOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTQzo6SlNWYWx1ZSBKU05vZGU6Om5vZGVUeXBl
KEpTQzo6RXhlY1N0YXRlJikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCmluZGV4IGZhYzIwYjI3MjZkOWVi
N2ZjOWI5ZWViNTQwOTYzN2ZmZDkxY2NlNDAuLjgzNjViYTA2OTUxZjliYzI3YTRhYWZjYzI5MWVk
NzZkYzVkNzQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApAQCAtOTksNyArOTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNIVE1MRWxlbWVudCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU0hUTUxFbGVtZW50KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNIVE1MRWxlbWVudCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRo
aXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIHRo
aXNPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGFmYWM5
OWEwOGMxMzM3MzNhN2UxOTkzYmZjNGFkMzFiM2EzODk5YTQuLjlmYTIwMGUwNDJjNjZhYWNhOTA4
YmYwOTBhOWMxZWE4NDM0NWU5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihFeGVjU3RhdGUmIGUKICAgICBWTSYgdm0g
PSBleGVjLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIAotICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFk
YWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkpOworICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0
cmVhbSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJlYW0qPihleGVjLmFyZ3VtZW50
KDApKTsKICAgICBpZiAoIXN0cmVhbSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIDAsICJzdHJlYW0iLCAiUmVhZGFibGVTdHJlYW1SZWFkZXIiLCBu
dWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcAppbmRleCBh
NTNmNjM1YzBhZWY3ZTljMzQ3YmY4OWJhMWU3ZjRkOTJlNjdiMjAxLi40YmI4OGU3ZjIyZTNmNWEx
M2ZjZGI3MTFhMTk5ZDA4MWFmNzIxMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcApAQCAtMzcs
MTEgKzM3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgc3RhcnRSZWFk
YWJsZVN0cmVhbShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIHsKLSAgICBKU1JlYWRhYmxlU3RyZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFt
aWNDYXN0PEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAg
SlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNlID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFk
YWJsZVN0cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc291cmNl
KTsKIAogICAgIEFTU0VSVChzdGF0ZS5hcmd1bWVudENvdW50KCkpOwotICAgIEpTUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJvbGxlciA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKj4oc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJvbGxlciA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoY29udHJvbGxlcik7CiAKICAgICBz
b3VyY2UtPndyYXBwZWQoKS5zdGFydChSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKGNv
bnRyb2xsZXIpLCBXVEZNb3ZlKHByb21pc2UpKTsKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZv
aWQgc3RhcnRSZWFkYWJsZVN0cmVhbShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHIKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQoc3RhdGUuYXJndW1lbnRDb3VudCgpKTsKLSAg
ICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFt
aWNDYXN0PEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIqPihzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGNvbnRyb2xs
ZXIpOwogCiAgICAgbV9jb250cm9sbGVyLnNldChzdGF0ZS52bSgpLCB0aGlzLCBjb250cm9sbGVy
KTsKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFy
dChFeGVjU3RhdGUmIHN0YXRlKQogCiBzdGF0aWMgdm9pZCBwdWxsUmVhZGFibGVTdHJlYW0oSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0g
ICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNlID0ganNEeW5hbWljQ2FzdDxKU1JlYWRh
YmxlU3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIEpTUmVhZGFibGVTdHJl
YW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNvdXJjZSk7CiAKICAgICBzb3Vy
Y2UtPndyYXBwZWQoKS5wdWxsKFdURk1vdmUocHJvbWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGUx
MjUwYjM1OGZlNTYzZjA0MTEzZDAzMzJmMGFkMTFjOTkzZTVlZWMuLmE2MTc3MDk3YTkzMmZkMzVl
ZWNjN2YwNmY5NjY0Y2IwNjZiMTVkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVj
dFRhc2suaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiSlNEeW5hbWljRG93bmNhc3QuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3Bl
LmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgpAQCAtMTI4LDcgKzEyOSw3IEBAIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU1ZhbHVlIHZhbHVlKQogICAgIGlmIChjbGFzc0lu
Zm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpKQogICAgICAgICByZXR1
cm4ganNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkp
OwogICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94eTo6aW5mbygpKQotICAgICAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oanNDYXN0PEpTUHJv
eHkqPihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7CisgICAgICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oanNDYXN0PEpTUHJveHkq
Pihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4
IGRiN2NmODY1ZjA3N2Y2MzU0NGJiMGExNjg3MTU1MTIxNWI1MDQxYWEuLjhhZjUzOTU1MTc2MTQ1
M2RkNWZmNWI0ODlhYzhlY2Q3YWEwZDBhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIEpTQzo6
SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSoKICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgSlNNb2R1bGVSZWNvcmQuCiAgICAgLy8gT25jZSB0aGUgcmVmbGVjdGl2ZSBwYXJ0IG9mIHRo
ZSBtb2R1bGUgbG9hZGVyIGlzIHN1cHBvcnRlZCwgd2Ugd2lsbCBoYW5kbGUgYXJiaXRyYXJ5IHZh
bHVlcy4KICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeS1w
cm90b3R5cGUtcHJvdmlkZQotICAgIEpTQzo6SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTTW9kdWxlUmVjb3JkKj4obW9kdWxlUmVjb3JkVmFs
dWUpOworICAgIEpTQzo6SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTQzo6SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7CiAgICAgaWYg
KCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCmluZGV4IDIyMzBlMWZiMTFkYmI3ZmRmNzJkOGNlMjc5NmFiMGZmZWQ3MmRmYTEuLmYyNjQx
NzNjNTFlMGI4MWFiMTYzZjk3NWVlYWY1NDFmYzkyMGQ3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTM3MSw3
ICsxMzcxLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLT5uZXh0S2V5
VmFsdWUobV9leGVjLCBrZXksIHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBtYXBJdGVy
YXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9iamVjdCkpOworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoanNEeW5hbWljRG93bmNhc3Q8SlNNYXAqPihvYmplY3QpKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9w
ZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlT
dGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgd3Jp
dGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CkBAIC0xNDE1LDcgKzE0MTUsNyBAQCBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAg
ICAgICAgICAgICAgIGlmICghaXRlcmF0b3ItPm5leHQobV9leGVjLCBrZXkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHNldEl0ZXJhdG9yU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PEpTU2V0Kj4ob2JqZWN0KSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFtaWNEb3duY2FzdDxKU1NldCo+KG9iamVj
dCkpOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5h
bWVBcnJheShtX2V4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAg
ICAgICAgICAgICAgICAgICB3cml0ZShOb25TZXRQcm9wZXJ0aWVzVGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmluZGV4IDRjYjg4YjJkZTUz
YzhiMmIwZDAzN2UwMGI3ODIxYjZjYmY1MmNkMDIuLmZkOGM2ZmY4ZTJhNjU4YWZmYjU5ZjM3MDYz
Mjk2MzZhOTNmYWEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0
dXJlZENsb25lLmNwcApAQCAtNTYsNyArNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIGV4ZWNTdGF0ZQog
ICAgIEFTU0VSVChleGVjU3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvKiBidWZmZXJW
aWV3ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOworICAg
IGF1dG8qIGJ1ZmZlclZpZXcgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0FycmF5QnVmZmVyVmlldyo+
KHZhbHVlKTsKICAgICBBU1NFUlQoYnVmZmVyVmlldyk7CiAKICAgICBhdXRvKiBidWZmZXIgPSBi
dWZmZXJWaWV3LT5idWZmZXIoKTsKQEAgLTY2LDI1ICs2NiwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIGV4
ZWNTdGF0ZQogICAgIH0KICAgICBhdXRvIGJ1ZmZlckNsb25lID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogCi0gICAgaWYgKEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0ludDhBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWlj
RG93bmNhc3Q8SlNJbnQ4QXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNJbnQ4QXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZm
ZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNJbnQxNkFy
cmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0ludDE2QXJyYXkqPih2
YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQxNkFycmF5OjpjcmVh
dGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9u
ZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAg
ICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTSW50MzJBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAo
anNEeW5hbWljRG93bmNhc3Q8SlNJbnQzMkFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTSW50MzJBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmll
dy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zm
c2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2Fz
dDxKU1VpbnQ4QXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWlu
dDhBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4
QXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3Zl
KGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5n
dGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+
KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+
KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShi
dWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3Ro
KCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTVWludDE2QXJyYXkqPih2YWx1ZSkp
CisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWludDE2QXJyYXkqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50MTZBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0
ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJW
aWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6
anNEeW5hbWljQ2FzdDxKU1VpbnQzMkFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNE
b3duY2FzdDxKU1VpbnQzMkFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVj
dHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBi
dWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNGbG9h
dDMyQXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTRmxvYXQzMkFy
cmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFy
cmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShi
dWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3Ro
KCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRmxvYXQ2NEFycmF5Kj4odmFsdWUp
KQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0NjRBcnJheTo6Y3JlYXRlKGV4ZWNT
dGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZm
ZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNE
b3duY2FzdDxKU0RhdGFWaWV3Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTRGF0YVZpZXc6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgp
LCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJW
aWV3LT5sZW5ndGgoKSkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDdj
YjIyYTI5ZDQ5ZmYxNTA1MjcxYzY2NjNhMTg2ZGY3NTJjYWFlZTcuLjM1MWQ2NGFkNmMwNjQ1ZmYw
MjIwY2UzZDJmN2E5OTAyNWZiYjU3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNDg1LDEzICsyNDg1LDcgQEAgc3Vi
IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKLQotICAgIHJl
dHVybiAianNOb2RlQ2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIk5vZGUiOwotICAgIHJldHVy
biAianNFbGVtZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiOwotICAgIHJl
dHVybiAianNEb2N1bWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudCI7Ci0g
ICAgcmV0dXJuICJqc0V2ZW50VGFyZ2V0Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50
VGFyZ2V0IjsKLSAgICByZXR1cm4gImpzRXZlbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAi
RXZlbnQiOwotICAgIHJldHVybiAianNEeW5hbWljQ2FzdDxKUyRpbnRlcmZhY2VOYW1lKj4iOwor
ICAgIHJldHVybiAianNEeW5hbWljRG93bmNhc3Q8SlMkaW50ZXJmYWNlTmFtZSo+IjsKIH0KIAog
c3ViIEdldEluZGV4ZWRHZXR0ZXJFeHByZXNzaW9uCkBAIC0zMzU5LDcgKzMzNTMsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogCkBAIC0zMzgxLDcgKzMzNzUsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50
ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNJbnRlcmZhY2VOYW1lLmNwcAppbmRleCBkZWFhZTYzYzEyODg0NjU3YzgwMDdiM2RmM2IwMTg4
N2I2MmM0YTQxLi4yODdlOTliYjBhZDljMjliY2Y1MjdhOTcwNTY0MjE5MWRkOTFkYTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNJbnRlcmZhY2VOYW1lLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
SW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50ZXJmYWNlTmFtZTo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBib29sIHNldEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU0ludGVy
ZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VO
YW1lUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTSW50ZXJm
YWNlTmFtZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNJbnRlcmZh
Y2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEzLDcgKzIxMyw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSW50ZXJmCiAKIEludGVyZmFjZU5hbWUqIEpTSW50ZXJmYWNlTmFtZTo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VOYW1lKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNJbnRlcmZhY2VOYW1lKj4odmFsdWUpKQogICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggOTAyN2VhZTI0MGE3YmU2YWRi
MzAxMDVlZDk1YjM1NGRkZWE1OWViMC4uNTI2YTZhN2M1NGFmMzFjMzY5YTI4OGU1MTY2NjRjZDJk
OGRhNjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0MywxMiAr
MTQzLDEyIEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RBY3RpdmVET01PYmplY3QqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3Rh
dGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEFj
dGl2ZURPTU9iamVjdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihzdGF0ZS50aGlzVmFs
dWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RF
eGNpdGluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0JiwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xNzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgc2V0SlNUZXN0QWN0
aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01P
YmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTUsNyArMjk1LDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0QWMKIAogVGVzdEFjdGl2ZURPTU9iamVjdCogSlNUZXN0QWN0aXZl
RE9NT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRv
KiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkp
CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVE
T01PYmplY3QqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggOTdi
Mjg5MTU2MDM3ZjliNWVlNzU1YmY5MzA5NGY0NDIxNjdmYjBmYy4uOTZjNzE2MmYxNThmMTYyYmEx
ZjgxMzViOWU1OGVjYzQ0NjkzM2YzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0x
MzcsMTIgKzEzNywxMiBAQCB2b2lkIEpTVGVzdENFUmVhY3Rpb25zOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9ucyogQmluZGlu
Z0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdENFUmVhY3Rpb25zKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnMqIEJp
bmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMq
PihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dENFUmVhY3Rpb25zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNHZXR0ZXIoRXhl
Y1N0YXRlJiwgSlNUZXN0Q0VSZWFjdGlvbnMmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaQogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVhY3Rpb25zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wg
c2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9u
c1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2Miw3ICszNjIsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RDRQogCiBUZXN0Q0VSZWFjdGlvbnMqIEpTVGVzdENFUmVhY3Rpb25zOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4odmFsdWUpKQog
ICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCA3
ZTg2ZDhlYzQ1NDcxMTRhZjEzZmQ0ZGMwODkzNTZlYzYxMjQ5M2VkLi5lZTMyZmNiMWM3Mjg1NjNk
MjlhMzc1YzZhMTA5ZDFkNTA4ZWI2N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwCkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXImLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogewog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
clByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE2OCw3ICsxNjgs
NyBAQCBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RDRQogCiBUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMDdh
ZGRkYjhkOTFkZmU3MGViOTZmZDQxMDVlZWZhNmZiZjJiM2VhYS4uYTJjZWM4MWE0ZmVhYmFhMmYz
MjlmOTA2N2Y2OTFiOGIyODg2YjMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTM2LDcgKzEzNiw3
IEBAIGJvb2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTIxMSw3ICsyMTEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDbAogCiBUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IqIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHZh
bHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QuY3BwCmluZGV4IGEzNTljNTQ4YWIwOTViMTQzNjQ2Mjc0YTRjZWE1M2VjZjQ5OTNiOGYuLmYy
Yzg5ODA5NTE3ZmU2NTNmMGIyOWJlMzZmZmU5NzNmZDY5MzlmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlCiB7CiAg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgY29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0
ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIHNldEpT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDIsNyArMjAyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0Q3UKIAogVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCisg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCAzZWU4OTRiNjM1ZWVhOGI4MmMxZjA3MTcwYTVm
MzFmZDdjYmM3ZDQwLi5jMTQyOTdkMGU1YjM1OGRjZjlhMDUyZmE4Y2IxMWRhZmY1MzJjNDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTE2MSwxNCArMTYxLDE0
IEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6
Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAg
IHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21O
YW1lZEdldHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBi
b29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21O
YW1lZEdldHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yNjcsNyArMjY3LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3UKIAogVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RET01KSVQuY3BwCmluZGV4IGUzOTdiZWU3ODQ4ZWM2MWZiOTM1OThiY2NjYzhlNjM2YTQ3ZDQ1
ODYuLjI0ODhkZjI2YmRiNTJiNTBjZDY3ZDYwY2NhNTY1YjI2NTM2N2U0Y2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgSlNPYmplY3QqIEpTVGVzdERPTUpJVDo6cHJvdG90
eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0RE9NSklUKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JB
dHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RET01KSVRQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIGJvb2wgc2V0
SlNUZXN0RE9NSklUQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjc4ZDQ1NjJi
Nzk0NDQwZGMyN2E4ODNiYzUyNzdmMzc5YmU4MTA3OC4uNDNmZTU1MDZhZTRiMWNjNWFmZDg3YzU0
MzA5MTkyNzQxMmZhNzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApA
QCAtMTg4LDcgKzE4OCw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90
b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAKIHRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9y
QXR0cjFHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciYsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKaW5kZXggMWQ2MDBkMWMwNWRlYjYwMTFiNzAyOTE1YWQ0NGY5NTAxYjM1ZjlmZS4uYmQ2
ZDk5ZmI5YjdmMzFmYjNiY2E2NjZmNWRhNDIzYWNjMmZlYWI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCkBAIC0xNTksMTQgKzE1OSwxNCBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwog
CiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudFRhcmdldCogQmluZGluZ0NhbGxlcjxKU1Rl
c3RFdmVudFRhcmdldD46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHN0YXRlLnRoaXNWYWx1
ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihz
dGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJn
ZXQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjcyLDcgKzI3Miw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2CiAKIFRlc3RFdmVu
dFRhcmdldCogSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0Kj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0RXZlbnRUYXJnZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRl
eCA3YjljZjkxOWU0MTU5NTg5MDcwMTE4NWFkNzM3MThmYWUxYjFhNTVhLi5iM2YyOGU4YmViZTAz
MzQxZTdmNThlZmRiYmU2YWFlMjhmYTRhMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFeGNlcHRpb24qIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0RXhjZXB0aW9uPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RFeGNlcHRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdEV4Y2VwdGlvbiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAt
MTU2LDcgKzE1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiB7CiAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBib29sIHNldEpTVGVzdEV4
Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjM1LDcgKzIzNSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4CiAK
IFRlc3RFeGNlcHRpb24qIEpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RXhjZXB0aW9uKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA3N2Y5ZDM1ZjdmOGEzYjhlOGU5NTc4Y2U4OGM2MTBkMmY1
NTYzYWNmLi42ZmU3YmRlNzIyZGNjY2U0NmVjMjM0MTJhODI3Yjc4OWEyZmYzZjg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1YKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBA
IC0xMzAsNyArMTMwLDcgQEAgYm9vbCBzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTgsNyArMTk4LDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0R2UKIAogVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPih2
YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAKaW5kZXggZTNhNDU3ZjQzNTEyMTBmNzljYTk1NDRmZDNiMWZhNDc0N2JjYmYyYy4uZWI3MTU5
NzRiY2I1MjAyM2ZjYzNiMzUwYjMyNGNlMzJiZDc2MzdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHAKQEAgLTE3NywxMiArMTc3LDEyIEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0Ojpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9i
YWxPYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvckF0dHJp
YnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxPYmplY3Qq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdEdsb2JhbE9iamVjdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihzdGF0ZS50aGlzVmFsdWUoKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0
cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEdsb2JhbE9iamVjdCYsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAg
LTI3MCw3ICsyNzAsNyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZQogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTI0LDcgKzUyNCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdsCiAKIFRlc3RHbG9iYWxP
YmplY3QqIEpTVGVzdEdsb2JhbE9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0Kj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0R2xvYmFsT2JqZWN0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggMmZmOWMwMGM2MWY5MWU0ZDc3ZWQ4MmU0NGNhNWYwOWI4ZDY3NTg1Yy4uYThmNjczOThiNjkw
YjY4MGQ0MWQzZWU3MTk3MDg0MzVkYzBlYmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAg
LTM5OSwxMiArMzk5LDEyIEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRpbmdD
YWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZSogQmluZGluZ0NhbGxl
cjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oc3RhdGUudGhpc1Zh
bHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihz
dGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKQEAgLTYzMSw3ICs2MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VgogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC02NDIsNyArNjQyLDcg
QEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMjksNyArMTAyOSw3IEBAIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEluCiAKIFRlc3RJbnRlcmZhY2UqIEpTVGVzdEludGVyZmFjZTo6dG9X
cmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odmFsdWUpKQogICAgICAg
ICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4
IGZkM2UxMTdiZjE4ODlmYzU4YWI4NjM4YTE4MjAzNjI3NGMwZWIzNTEuLjk1NzUyZGM4MzQ5M2Nk
ZGIzNTNhZWEyMzMwMGQ0NmRkMTNiMTkwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2FzdEZvckF0
dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmVSZWFkb25seUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZSYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTQzLDcgKzE0Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1YKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAxLDcgKzIwMSw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEluCiAKIFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSog
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPih2
YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKaW5kZXggOWFmZmRjNGUyZGFlYzQwMjEwYWYx
ZWEzZjFhOGVjMTViNGJkZjRhZS4uODQ5YmM3MmViMzc3NWRlMGI1MGQzZmVmNjJlMGVlYTY1MWNh
MjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEl0ZXJhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCB2b2lkIEpT
VGVzdEl0ZXJhYmxlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RJdGVyYWJsZSogQmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RG
b3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJdGVyYWJsZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0SXRlcmFibGUqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0SXRlcmFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgYm9vbCBzZXRKU1Rlc3RJdGVyYWJs
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjgyLDcgKzI4Miw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEl0CiAKIFRlc3RJdGVy
YWJsZSogSlNUZXN0SXRlcmFibGU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlKj4odmFs
dWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SXRl
cmFibGUqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNWE0OGYzYzcyMjk4ZDM2YjQ4ZmVhOTZjOTE3OTI1MWM2NDFjNmNhNy4uZGQ0
ODk3NGZhYmMwOTJhMGY5YzM4NDQ3YWMyZDhhOTE5NGNlNDY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0xMzQsMTIgKzEzNCwxMiBAQCB2b2lkIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogQmluZGluZ0NhbGxl
cjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRl
JiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS50
aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tR2V0dGVy
KEV4ZWNTdGF0ZSYsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yJiwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKIHsK
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBib29s
IHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
aW5kZXggZDk1NDY0YWViMzA2OTllMWZhNjZjOWExNGY5Y2NlZTlmNGIxYjA2NS4uNTg3YTllNDJk
ZDMwN2ZiMWZmZmJlYWY3NTk2ZjZiMmJmOTBjY2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTI1LDE0ICsxMjUsMTQgQEAgdm9pZCBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHN0YXRlLnRoaXNWYWx1ZSgp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAg
LTE0Myw3ICsxNDMsNyBAQCBib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMiw3ICsyMzIsNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RNZQogCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciog
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDk0ZjI1NjVkYjY1NjQ0NTQx
OTM0YWY1Y2MzYWEzODIyZjNkMDU5YjUuLjg3ODZmNDM3ZjI5YTI3OTdkZjk1Y2Q4Zjc4ODJiOGVj
ZmIwYTkzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Miw3
ICsxNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE3
Myw3ICsxNzMsNyBAQCBib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYQog
CiBUZXN0TmFtZWRDb25zdHJ1Y3RvciogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVk
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCmluZGV4IGY4ZmRjMGM2MjhhMmRkY2MzMTAyZTk4YzEzMjliY2E5ZGQ5
NjZjYWQuLjMzNzEwYjEzY2ZmYjYwZmQ0NjdkN2EyNjAyMmE0MGU0NTRjYTQ2ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAKQEAgLTE2OCwxMiArMTY4LDEyIEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5
cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3ROb2RlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yQXR0cmli
dXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KHN0YXRlLnRoaXNWYWx1ZSgp
KTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZSo+KHN0YXRlLnRoaXNW
YWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lR2V0dGVy
KEV4ZWNTdGF0ZSYsIEpTVGVzdE5vZGUmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE5
Niw3ICsxOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogewogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rl
c3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb2Rl
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBib29sIHNldEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZQogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9kZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZVByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApp
bmRleCAxNWJlM2I2Y2M4YWI1MjkyOGIyZTQ4N2ExMjFkMzZkNGFmMTUyNzk0Li4zYjE2MTc3MTIy
ZTMzZWY0OTc2ZTE1YmI3NGJiYTlkYTk4NGY0MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwCkBAIC0xNDQsMTIgKzE0NCwxMiBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWlu
aXN0aWM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5vbmRldGVybWluaXN0aWMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9
CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25s
eUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyYsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpOwpAQCAtMzQwLDcgKzM0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5v
bmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgc2V0SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb25kZXRl
cm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdE5vCiAKIFRlc3ROb25kZXRlcm1pbmlzdGljKiBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
dmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDEyOWEyNGE3NmNi
MTZkNGYwMWNlZDZjM2MxOTA2MzE1YjU4YzJiODkuLjk2YTgzMzNkZGRlMTI4MzE5NDYyYTk0ZDJh
Nzg2NTVjMmI2ZTQwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xODA3LDEyICsxODA3LDEyIEBAIGJvb2wg
SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogc3RhdGUsIHVuCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE9iaio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0
T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0zMjk5LDcgKzMyOTksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0T2JqUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTMzMTAsNyArMzMxMCw3IEBAIGJvb2wgc2V0
SlNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04
MzUzLDcgKzgzNTMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPYgogCiBUZXN0T2JqKiBKU1Rl
c3RPYmo6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE9iaio+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNjY5MGQyY2Ix
ZGQ0MGUxZTIyYmE1ZjkwOTVhNjg1ZjI1MTc4NTYyZS4uMWY2YjRiMmQ5NjBhZmNhOTg0OWUxZjM3
OGNmODc1YTNiZGM1NDZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiB7
CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjM2LDcgKzIz
Niw3IEBAIGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdE92CiAKIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHAKaW5kZXggM2QyZDNjMDJkZjg4NjdiYzA5OGZjZmVlMjI4YzhmOGU3ZWZhNDU0Ny4uNDhiMDZm
MDMzZDIwMmNmM2E5MjU3NDQ3Y2JhZGMxNDk0ZGYxNmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0CiB7CiAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wg
c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjUwLDcgKzI1MCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92CiAKIFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKiBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXgg
MWRiNjdmNDdhOWUxNjM1MzgyYzdhNDM0ZjllNDc0ZGNhOWIxOTM1NS4uOTBiNmU5MmE3YzIzNGJl
MGJlOTllM2IyNjg2YWY4NWZmYzE5N2M3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcApAQCAtMTU4LDE0ICsxNTgsMTQgQEAgYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGEKIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyogQmluZGluZ0NhbGxlcjxK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihz
dGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0x
NzYsNyArMTc2LDcgQEAgYm9vbCBzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yNzUsNyArMjc1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3YK
IAogVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUp
KQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAppbmRleCAwY2RhNTA2ZTdmN2I4N2Yz
YTQ2YWZmZDcwOTRiMzIzNmUxZGM2OWUzLi5iYzIwNTAwMmMyZjdiZWVhOWU4YjE3ODU4YTJjYTQ2
ZGY4M2EzZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCkBAIC0xNDAsMTIgKzE0
MCwxMiBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6YXRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24qIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6YXRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb24qPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24q
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3RGb3JPcGVyYXRpb24oRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxp
emF0aW9uKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlR2V0
dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFNlcmlhbGl6YXRpb24mLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdAogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbjo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI0
Myw3ICsyNDMsNyBAQCBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdQogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQzOCw3ICs0MzgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZQogCiBUZXN0U2VyaWFs
aXphdGlvbiogSlNUZXN0U2VyaWFsaXphdGlvbjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXphdGlvbio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdFNlcmlhbGl6YXRpb24qPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAzY2NiODZm
ZTU5OTc2YmJkZGZmMzBhYjI2N2MyMjZhNjNjMTZhZWI2Li43MDZmMjQ0ZmYzNTFkZDJjMGIyZGYx
MzE1ZGVhMDNkMDIzZTI4NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZUdldHRlcihFeGVjU3RhdGUmLCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKQEAgLTIyOSw3ICsyMjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBzZXRKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1NSw3ICszNTUsNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZQogCiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZChK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KHZhbHVlKSkKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA4
OWFkMzJmNjMxNmQ4MDUzNDU2ZjYxMTY2Y2FjOTg4NDI2Yjg2OWYyLi43ZDZiMmMwZmViNTljMDhl
NzNiOTcwZDc0YWU4N2IwMGIzOTlmMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTIxNSwx
MiArMjE1LDEyIEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdFR5cGVkZWZzPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBl
ZGVmcz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS50aGlzVmFsdWUo
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFR5cGVkZWZzJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTM1Miw3ICszNTIsNyBAQCBib29s
IHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC04MDYsNyArODA2LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0VHkKIAogVGVzdFR5cGVkZWZzKiBKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVkKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVy
LT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggYzlkYWQyNzg2ZmM4ZjFhYTRkYzNi
NzkxMDc1ZDc3ZjAzNWI1ZjQ3Ny4uMmU1YjE1MjVhYTYwZWExNmIwMzExNjUyNGMzZTc0ODMzMTE5
ZTVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQpAQCAtMzk5LDcgKzM5OSw3IEBAIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAg
ICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oW3NlbGYg
X2ltcF0pOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU09iamVj
dCo+KFtzZWxmIF9pbXBdKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBTdHJpbmcoa2V5KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMs
ICZ2YWx1ZSwgT2JqY09iamVjdFR5cGUsIFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggMDk5YWZmMDRjMjkzMDkz
YTE1YmY2Mzk1NTBmMTU1MTZiNDNkYzRhZC4uZDMwYTU4NWJiMzM1NGVjOGU0MmQ0ZThmYWUxOGZk
ZWM1MzU1OWQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAt
NjUsNyArNjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
UnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lQXJyYXkqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
dGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9t
ZXRob2QuY3BwCmluZGV4IDU5NjE5ZmIyNDNlODk5MjljYTBmMDllNTgzNzgxY2QwZDY5NTJlYmQu
LjMyY2MwYWI1ZDcxYjk2OTU1YTkwYTg3M2M1NGFkYmE4ZDQxZDdhMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcApAQCAtNTksNyArNTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgUnVudGltZU1ldGhvZCogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZU1ldGhvZCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
UnVudGltZU1ldGhvZCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRo
aXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fbWV0aG9k
LT5udW1QYXJhbWV0ZXJzKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDM0OTUyZTUxMmQ1NzljNDFlNmU1NWJjNTk1NmI2YjYyZjdiOWFiMzAuLjVjMTAy
OTE0ZDVhZTM5Y2E3OWI4NmYyY2Y1M2RhYzVkMmRkMGQ5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzg4OSw3ICszODg5LDcgQEAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9i
YWxPYmplY3QmIGcKICAgICBhdXRvIG1lZGlhSlNXcmFwcGVyID0gdG9KUygmZXhlYywgJmdsb2Jh
bE9iamVjdCwgbWVkaWEpOwogICAgIAogICAgIC8vIFJldHJpZXZlIHRoZSBjb250cm9sbGVyIHRo
cm91Z2ggdGhlIEpTIG9iamVjdCBncmFwaAotICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFw
cGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihtZWRpYUpTV3Jh
cHBlcik7CisgICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFKU1dyYXBwZXIpOwogICAgIGlmICghbWVk
aWFKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogICAgIApA
QCAtMzg5Nyw3ICszODk3LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBKU0M6OkpT
VmFsdWUgY29udHJvbHNIb3N0SlNXcmFwcGVyID0gbWVkaWFKU1dyYXBwZXJPYmplY3QtPmdldCgm
ZXhlYywgY29udHJvbHNIb3N0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6
OkpTVmFsdWUoKSk7CiAKLSAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sc0hvc3RKU1dyYXBwZXJP
YmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xzSG9zdEpT
V3JhcHBlcik7CisgICAgSlNDOjpKU09iamVjdCogY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xzSG9zdEpTV3JhcHBl
cik7CiAgICAgaWYgKCFjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVy
biBKU0M6OmpzTnVsbCgpOwogCkBAIC0zOTQ1LDcgKzM5NDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAgICBKU0M6OkpTVmFsdWUgY29udHJv
bGxlclZhbHVlID0gY29udHJvbGxlckpTVmFsdWUoKmV4ZWMsICpnbG9iYWxPYmplY3QsICp0aGlz
KTsKLSAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWND
YXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sbGVyVmFsdWUpOworICAgIEpTQzo6SlNPYmplY3Qq
IGNvbnRyb2xsZXJPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29u
dHJvbGxlclZhbHVlKTsKICAgICBpZiAoIWNvbnRyb2xsZXJPYmplY3QpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzk1Niw3ICszOTU2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVD
YXB0aW9uQ29udGFpbmVyKCkKICAgICAvLyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAgIE5vbmUK
ICAgICBKU0M6OkpTVmFsdWUgbWV0aG9kVmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoZXhl
YywgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFp
bmVyIikpOwotICAgIEpTQzo6SlNPYmplY3QqIG1ldGhvZE9iamVjdCA9IEpTQzo6anNEeW5hbWlj
Q2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0aG9kVmFsdWUpOworICAgIEpTQzo6SlNPYmplY3QqIG1l
dGhvZE9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihtZXRob2RWYWx1
ZSk7CiAgICAgaWYgKCFtZXRob2RPYmplY3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY0OSw3
ICs2NjQ5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbGxlclZhbHVl
ID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9i
amVjdCwgYXJnTGlzdCk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBKU0M6OkpT
T2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmpl
Y3QqPihjb250cm9sbGVyVmFsdWUpOworICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsK
ICAgICBpZiAoIWNvbnRyb2xsZXJPYmplY3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY2Miw3
ICs2NjYyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KFNoYWRvd1Jvb3QqIHJvb3QpCiAKICAgICBtZWRpYUpTV3JhcHBlck9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGNvbnRyb2xzSG9zdCwgbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXIs
IEpTQzo6RG9udERlbGV0ZSB8IEpTQzo6RG9udEVudW0gfCBKU0M6OlJlYWRPbmx5KTsKIAotICAg
IEpTQzo6SlNPYmplY3QqIG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0ID0gSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlcik7
CisgICAgSlNDOjpKU09iamVjdCogbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFDb250cm9sc0hvc3RKU1dyYXBw
ZXIpOwogICAgIGlmICghbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAg
IHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IDQwZDM0ZGM0MmE2YzFlNTI1NTFkNWI3OTE0MGEzNzliYjRmMWI1NmQu
LjMxMDI4ODk5NTBlMGY4MmZjZjRhM2IxMWI0NzdkMDI0ZTU0NTljMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTUwMSw3ICsxNTAx
LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICAgICAgaGFuZGxlciA9IHNjcmlwdExp
c3RlbmVyLT5qc0Z1bmN0aW9uKCZub2RlLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGhhbmRs
ZXIgJiYgc3RhdGUpIHsKICAgICAgICAgICAgIGJvZHkgPSBoYW5kbGVyLT50b1N0cmluZyhzdGF0
ZSktPnZhbHVlKHN0YXRlKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gSlNDOjpq
c0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KGhhbmRsZXIpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBmdW5jdGlvbiA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNGdW5jdGlvbio+KGhh
bmRsZXIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBleGVjdXRhYmxlID0g
ZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
TnVtYmVyID0gZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCkgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCmluZGV4IDE2ZmJhNjgyMmU0NzZjMzMxNzQxMDI3NjBlMTgwNTY4MmVj
NWQ5MWMuLmM1Mjg4M2RjM2JiYzcxNWRiNDIwMDNlYTE4ZjYwNDNmMWUwN2Q0MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJDb3Jl
OjpFbGVtZW50KiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjplbGVtZW50Rm9yTm9kZUhhbmRs
ZShXZWJGcmFtZSYgZnJhbQogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIGVsZW1lbnRXcmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PFdlYkNv
cmU6OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpOworICAgIGF1dG8gZWxlbWVudFdyYXBwZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxXZWJDb3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKTsK
ICAgICBpZiAoIWVsZW1lbnRXcmFwcGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJiY2Q1Zjk3
MWZhMGQ5YzhjZTczZDUyYjhmMmVhNTYxODE3YzgzZGQuLjExZjYzODVhZGI5MTU2MGE0NWZlNWUw
YmFmMzM1YzhhNGM4NGJhNWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0yOCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRyb2R1Y2UgV2ViQ29y
ZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChz
ZXRBdWRpb1Jlc3VsdENhbGxiYWNrKToKKwogMjAxNi0xMC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjIwMzYwMSk6IENhdXNlZCBjcmFz
aGVzIGluIGlCb29rcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBlZjJkMTU4
MTY3NmJhZWFmNGUwYTc5ZWRmOTdlMTBkMTM3ZmMzODhmLi45YmQ4YjRmOTBjN2ZmZmZmNDQwMmE0
Y2IyODFiYTk0YzZjN2UxYTlkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAt
MzM4LDcgKzMzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEF1ZGlvUmVzdWx0Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIC8vIEZJWE1FICgxMjMwNTgpOiBV
c2UgYSBKU0MgQVBJIHRvIGdldCBidWZmZXIgY29udGVudHMgb25jZSBzdWNoIGlzIGV4cG9zZWQu
Ci0gICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3ID0gSlNDOjpqc0R5bmFt
aWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih0b0pTKHRvSlMoY29udGV4dCksIGFyZ3Vt
ZW50c1swXSkpOworICAgIEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih0b0pTKHRvSlMoY29udGV4
dCksIGFyZ3VtZW50c1swXSkpOwogICAgIEFTU0VSVChqc0J1ZmZlclZpZXcpOwogICAgIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IGpzQnVmZmVyVmlldy0+aW1wbCgp
OwogICAgIGNvbnN0IGNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXJWaWV3LT5iYXNlQWRkcmVzcygpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293209</attachid>
            <date>2016-10-28 14:02:08 -0700</date>
            <delta_ts>2016-10-28 14:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164137-20161029055817.patch</filename>
            <type>text/plain</type>
            <size>120641</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNTI5OGU4NDQyYTRj
YjZkNGE4ZWY0NTRmNWE4ZjE0ZmU1ZDA3Zi4uYWNjNzk5ODkwMjAzM2NkODZjZTJkYjViZTE2MTlk
MjViNDY3YjVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNCBAQAorMjAxNi0xMC0yOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRl
bmRlZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBl
cywgV2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisg
ICAgICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRU
eXBlLCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2Js
ZW0gaXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvc2UKKyAg
ICAgICAgSlNDOjpqc0R5bmFtaWNDYXN0IGJ5IGFjY2lkZW50LiBBbmQgdGhpcyBzcGVjaWFsIGhh
bmRsaW5nIHJlcXVpcmVzCisgICAgICAgIHNwZWNpYWwgY2FyZSBpbiB0aGUgSURMIGNvZGUgZ2Vu
ZXJhdG9yIHdoZW4gd2Ugd291bGQgbGlrZSB0byB1c2UKKyAgICAgICAgZmFzdGVyIGNhc3Rpbmcg
ZnVuY3Rpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIG5ldyBjYXN0aW5n
IGZ1bmN0aW9uLCAiV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QiLgorICAgICAgICBJdCBpcyBh
IHRoaW4gd3JhcHBlciB0byB0aGUgIkpTQzo6anNEeW5hbWljQ2FzdCIuIEJ1dCBpdCBzZWxlY3Rz
IHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5IHRlbXBs
YXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhlIHdheSBz
cGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJZiB3ZSBm
b3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpqc0R5YW5t
aWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJvcnMsIGJ1
dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVG8gYXZvaWQgdGhp
cyBwcm9ibGVtLCB3ZSBhZGQgYSBuZXcgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxl
UGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46
Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVsbDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9u
YXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRG9jdW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
RHluYW1pY0Nhc3RUcmFpdDo6Y2FzdCk6CisgICAgICAgIChXZWJDb3JlOjpqc0R5bmFtaWNEb3du
Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmg6CisgICAgICAg
IChXZWJDb3JlOjpqc0VsZW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50Q2FzdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldERvY3Vt
ZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpqc05vZGVD
YXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OnB1bGxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RydWN0dXJlZENsb25l
QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNJbnRlcmZh
Y2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNJbnRlcmZhY2VOYW1l
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcmZhY2VOYW1lOjp0b1dyYXBw
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVE
T01PYmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdD
YWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+Ojpj
YXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uczo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3RGb3JPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RD
dXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxl
cjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdERPTUpJ
VENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6Y2FzdEZvck9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV4Y2VwdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXhjZXB0aW9uOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvckF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVj
dD46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2Jq
ZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2JqZWN0Ojp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+
OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNU
ZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRv
V3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+OjpjYXN0Rm9yQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxl
cjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJ
dGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlOjp0
b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZv
ck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRp
bmdDYWxsZXI8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OmNhc3RGb3JPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5v
ZGU+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8
SlNUZXN0Tm9kZT46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vZGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVy
bWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhc3RGb3JPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnRvV3Jh
cHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9y
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXphdGlvbjo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
bmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9X
ZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpm
b3JLZXk6XSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAo
SlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVy
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udHJvbGxlckpTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6CisKIDIwMTYtMTAtMjggIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBSVENQZWVyQ29ubmVj
dGlvbiB1bnByZWZpeGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjE4MWFmZDZhMjI2OTc4MTkzZGVkZTU4NTFl
NzI1ZGI5NGU4YWNhNS4uZjY4MzM1MzllZTU4MDk1ZGI4ODVmYzNhYzFhYzgzNThjNjk2YjI0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTI4ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEludHJvZHVjZSBXZWJDb3Jl
Ojpqc0R5bmFtaWNEb3duY2FzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVs
ZW1lbnRGb3JOb2RlSGFuZGxlKToKKwogMjAxNi0xMC0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIENGTmV0d29yayBjb25uZWN0aW9uIGNhY2hl
IGZhc3QgbGFuZSBmb3IgV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCmluZGV4IDA1OTFlZWM4MmQxNjI5Zjkz
OTRmZTVlNmE0MWRmMWYxNzU0ODlhNDkuLmU1M2U3ZGYwYWU1ZjMxNjZiYTJhZWM1MzI2OTM1NzU5
NWNmYzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQ
YXlTZXNzaW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fw
cGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0FwcGxl
UGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNlc3Np
b24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1Zh
bHVlKTsKKyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbiIpKTsKIApAQCAtNzIsNyArNzIsNyBAQCBKU1ZhbHVlIEpTQXBwbGVQYXlT
ZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNlc3Npb24q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVl
KTsKKyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24iKSk7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1ZhbHVlIEpTQXBwbGVQYXlT
ZXNzaW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7
CisgICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbiIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKaW5kZXggOGFkMDhhN2YyOThmMjE5ODMwOTM3MWM0MDM5NTBmOTc0NDMxZjM0MS4uYTA3MTYw
ZGM5NWNhZmQ0NTViY2I2ODA4NjMwODgzZmRhZDdiYmE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCByZXBv
cnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBDYWNo
ZWRTY3JpcHQqIGNhY2gKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGF1dG8qIGV4
Y2VwdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNDOjpFeGNlcHRpb24qPihleGNlcHRpb25WYWx1ZSk7
CisgICAgYXV0byogZXhjZXB0aW9uID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpFeGNlcHRpb24q
PihleGNlcHRpb25WYWx1ZSk7CiAgICAgaWYgKCFleGNlcHRpb24pIHsKICAgICAgICAgZXhjZXB0
aW9uID0gdm0ubGFzdEV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoIWV4Y2VwdGlvbikKQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
RXhjZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogYwogICAgIHZtLmNsZWFyTGFzdEV4
Y2VwdGlvbigpOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAg
aWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xv
YmFsT2JqZWN0KSkgeworICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7CiAgICAgICAgIGlmICghd2luZG93
LT53cmFwcGVkKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiBj
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUw
ODc+IFdlYiBJbnNwZWN0b3I6IFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbiBzaG91bGQgbm90IGV2
YWx1YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwogICAgICAgICAvLyBJZiB0aGlz
IGlzIGEgY3VzdG9tIGV4Y2VwdGlvbiBvYmplY3QsIGNhbGwgdG9TdHJpbmcgb24gaXQgdG8gdHJ5
IGFuZCBnZXQgYSBuaWNlIHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGV4Y2VwdGlvbi4K
LSAgICAgICAgaWYgKEVycm9ySW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljQ2FzdDxFcnJvcklu
c3RhbmNlKj4oZXhjZXB0aW9uVmFsdWUpKQorICAgICAgICBpZiAoRXJyb3JJbnN0YW5jZSogZXJy
b3IgPSBqc0R5bmFtaWNEb3duY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uVmFsdWUpKQog
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZFRvU3RyaW5nKGV4ZWMp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb25WYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCmluZGV4IDljM2RhYjU4ZjBhNGViYjkxNWQyN2I0ZmYxYTRlY2NkOTNm
MGVhYTIuLmNkYzRmYzlmMGY1Njc0M2JkYzcxMTVjZmEyMzE1OGE0ZDk3MmY5OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
SW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAt
NTY0LDcgKzU2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHdyYXAoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBpbmxpbmUgSlNDbGFzcyYgY2FzdFRoaXNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CiAgICAgYXV0byB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBh
dXRvIGNhc3RlZFRoaXMgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDbGFzcyo+KHRoaXNWYWx1ZSk7
CisgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljRG93bmNhc3Q8SlNDbGFzcyo+KHRoaXNW
YWx1ZSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIHJldHVybiAqY2FzdGVkVGhpczsK
IH0KQEAgLTY4Niw3ICs2ODcsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNJdGVyYXRvckVu
ZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiAKIGlubGluZSBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
clZpZXc+IHRvQXJyYXlCdWZmZXJWaWV3KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhdXRv
KiB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2
YWx1ZSk7CisgICAgYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNBcnJh
eUJ1ZmZlclZpZXcqPih2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gd3JhcHBlci0+aW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IDk3YWE0YjlkYTRhNmQ4YTM5NjY4NmFlN2E5
ZGExY2E5MzQ2YjllZTcuLmI1ODJkYjBmNTZkNzIzMjg5NTIwY2U2NmMwZTMwZWYxNTI3MTIxODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTI0Nyw3
ICsyNDcsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01JdGVyYXRv
clByb3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaQogICAgIEpTQzo6Vk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3Jh
cHBlciwgSXRlcmF0b3JUcmFpdHM+Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvIGl0
ZXJhdG9yID0ganNEeW5hbWljRG93bmNhc3Q8SlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJh
dG9yVHJhaXRzPio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAg
ICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Ig
b2JqZWN0IikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmNwcAppbmRleCBmMTU0YzJhNjQxM2VlODNjNGY5NWFjNmI3NjVjYjM0YzI0Y2QyNzc1
Li43YWM4NWVjNDdkMzFmZDUyOTA1ZGY1ZGJhN2E4YjA0NWFiZTQ0MmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIERPTVdpbmRvdyYgSlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCgpIGNvbnN0CiAKIERP
TVdpbmRvdyogSlNET01XaW5kb3dTaGVsbDo6dG9XcmFwcGVkKEpTT2JqZWN0KiB2YWx1ZSkKIHsK
LSAgICBhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4odmFs
dWUpOworICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RPTVdpbmRvd1No
ZWxsKj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuICZ3cmFwcGVyLT53aW5kb3coKS0+d3JhcHBlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggOWMxMGI0NjFiYmNjMjAyMDMy
YjYzZTIxODY0ZjA4NjYyOWY0MjhhNi4uMWZkZmQyZmI3M2Y0MmY2ODlkNGU5Y2M2Njc0MjU4NzQy
NzliNTRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFRvdWMKIAogdm9pZCBKU0Rp
Y3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1
ZSwgSlNDOjpKU0Z1bmN0aW9uKiYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IGpzRHluYW1pY0Nh
c3Q8SlNDOjpKU0Z1bmN0aW9uKj4odmFsdWUpOworICAgIHJlc3VsdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTQzo6SlNGdW5jdGlvbio+KHZhbHVlKTsKIH0KIAogYm9vbCBKU0RpY3Rpb25hcnk6Omdl
dFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFN0cmlu
ZyYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5oCmluZGV4IDY5YzRjYTgyODkxOWM5YjEzYWJhYjFjODNiNmJhYTAyYTlkNmJjMmEu
LmI2MzRiNTc0YzAwODQyMzY5NjQ4NGM3YmY4NGYxNmIzZTdhMmM1MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmgKQEAgLTMxLDExICszMSw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQUxXQVlTX0lOTElORSBKU0RvY3VtZW50KiBqc0Rv
Y3VtZW50Q2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTRG9jdW1lbnQq
IGpzRG9jdW1lbnRDYXN0KEpTQzo6SlNDZWxsKiB2YWx1ZSkKIHsKLSAgICBpZiAoVU5MSUtFTFko
IXZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHZh
bHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNEb2N1bWVudFdyYXBwZXJUeXBlID8gSlNDOjpqc0Nh
c3Q8SlNEb2N1bWVudCo+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBl
KCkgPT0gSlNEb2N1bWVudFdyYXBwZXJUeXBlID8gSlNDOjpqc0Nhc3Q8SlNEb2N1bWVudCo+KHZh
bHVlKSA6IG51bGxwdHI7CiB9CiAKIEpTQzo6SlNPYmplY3QqIGNhY2hlZERvY3VtZW50V3JhcHBl
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgRG9jdW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY5OGVjNGJlZWYyZGM4NzIwNTRmMTI2Zjc4NTgzODFiMmFlYTBlZmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ2VsbElubGluZXMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU05vZGU7CitKU05vZGUqIGpzTm9kZUNhc3Qo
SlNDOjpKU0NlbGwqKTsKK2NsYXNzIEpTRWxlbWVudDsKK0pTRWxlbWVudCoganNFbGVtZW50Q2Fz
dChKU0M6OkpTQ2VsbCopOworY2xhc3MgSlNEb2N1bWVudDsKK0pTRG9jdW1lbnQqIGpzRG9jdW1l
bnRDYXN0KEpTQzo6SlNDZWxsKik7CitjbGFzcyBKU0V2ZW50OworSlNFdmVudCoganNFdmVudENh
c3QoSlNDOjpKU0NlbGwqKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVG8+CitzdHJ1Y3QgSlNEeW5h
bWljQ2FzdFRyYWl0IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFRvIGNhc3QoRnJvbSogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBK
U0M6OmpzRHluYW1pY0Nhc3Q8VG8+KGZyb20pOworICAgIH0KK307CisKK3RlbXBsYXRlPD4KK3N0
cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNOb2RlKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNOb2RlKiBjYXN0KEZyb20qIGZyb20p
CisgICAgeworICAgICAgICByZXR1cm4ganNOb2RlQ2FzdChmcm9tKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0PEpTRWxlbWVudCo+IHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTRWxlbWVu
dCogY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRWxlbWVudENhc3Qo
ZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFp
dDxKU0RvY3VtZW50Kj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNEb2N1bWVudCogY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGpzRG9jdW1lbnRDYXN0KGZyb20pOworICAgIH0KK307CisKK3RlbXBsYXRlPD4K
K3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFdmVudCo+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTRXZlbnQqIGNhc3QoRnJvbSog
ZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc0V2ZW50Q2FzdChmcm9tKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KK0FMV0FZU19JTkxJTkUg
VG8ganNEeW5hbWljRG93bmNhc3QoRnJvbSogZnJvbSkKK3sKKyAgICByZXR1cm4gSlNEeW5hbWlj
Q2FzdFRyYWl0PFRvPjo6Y2FzdChmcm9tKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVG8+CitB
TFdBWVNfSU5MSU5FIFRvIGpzRHluYW1pY0Rvd25jYXN0KEpTQzo6SlNWYWx1ZSBmcm9tKQorewor
ICAgIGlmIChVTkxJS0VMWSghZnJvbS5pc0NlbGwoKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxUbz4oZnJvbS5hc0NlbGwoKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKaW5kZXgg
MmExYmEwMTgwMzI0ZDA4NGI0YWM1YjZiMmM5NTdlZGMzOWE3OTZmNy4uZGZlMjNiY2I3OTU2MGZl
YmM1MTBiN2ZhM2VmMDQ0YWUyYWEyNWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFbGVtZW50Q3VzdG9tLmgKQEAgLTMxLDExICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQUxXQVlTX0lOTElORSBKU0VsZW1lbnQqIGpzRWxlbWVudENhc3QoSlNDOjpKU1Zh
bHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU0VsZW1lbnQqIGpzRWxlbWVudENhc3QoSlNDOjpK
U0NlbGwqIHZhbHVlKQogewotICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA+
PSBKU0VsZW1lbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFbGVtZW50Kj4odmFsdWUpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gdmFsdWUtPnR5cGUoKSA+PSBKU0VsZW1lbnRUeXBlID8gSlNDOjpqc0Nh
c3Q8SlNFbGVtZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCmluZGV4IDU1
OTlmNGMxZjE5NzNkNGEzZjM1ZWM4N2UyMTIwMGYwMTkxY2MwOWEuLjA2ODNhNmFlMTc4NjkwYTA2
OGE5ZjRkOTY2ZGI2Mjk0NGIzOGZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50Q3VzdG9tLmgKQEAgLTI5LDExICsyOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQUxXQVlTX0lOTElORSBKU0V2ZW50KiBqc0V2ZW50Q2FzdChKU0M6OkpTVmFsdWUgdmFsdWUp
CitBTFdBWVNfSU5MSU5FIEpTRXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNDZWxsKiB2YWx1ZSkK
IHsKLSAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNFdmVudFR5cGUg
PyBKU0M6OmpzQ2FzdDxKU0V2ZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFs
dWUtPnR5cGUoKSA9PSBKU0V2ZW50VHlwZSA/IEpTQzo6anNDYXN0PEpTRXZlbnQqPih2YWx1ZSkg
OiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBlMDZmODE2YWI0ZmVjYjBh
OTlkOGE1ZjA2NGFjMzExOGNiNWQ4MGMxLi41Y2Y0YjliN2U5OTZiMTEyYTdjYTQzMzE3ZjIwYmMw
MDhhY2EyMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVy
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcAogewog
ICAgIEFTU0VSVCh3cmFwcGVyLmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9
IGVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBhdXRvKiBkb2N1bWVudFdyYXBwZXIgPSBqc0RvY3Vt
ZW50Q2FzdCh0b0pTKCZzdGF0ZSwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih3cmFw
cGVyLmdsb2JhbE9iamVjdCgpKSwgZG9jdW1lbnQpKTsKKyAgICBhdXRvKiBkb2N1bWVudFdyYXBw
ZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RvY3VtZW50Kj4odG9KUygmc3RhdGUsIEpTQzo6anND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4od3JhcHBlci5nbG9iYWxPYmplY3QoKSksIGRvY3VtZW50
KSk7CiAgICAgQVNTRVJUKGRvY3VtZW50V3JhcHBlcik7CiAgICAgZG9jdW1lbnQuc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNyZWF0ZUV2ZW50TGlzdGVuZXJGb3JFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoc3RhdGUsIHZhbHVlLCAqZG9jdW1lbnRXcmFwcGVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCmlu
ZGV4IGY0MGRmNjEyNGViYWEzZDViMzY5MTgyN2M4MThhM2YwY2FkOTdmZTcuLjM3MjIyNTgzZmVl
NmJmZmQzZWUyYmE1YjM2MzJiZWUwMDdiMDFkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCkBAIC03Myw3ICs3Myw3IEBAIEV2
ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNWYWx1ZSB2YWx1ZSkKIAogc3Rk
Ojp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2FzdChKU1Zh
bHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxK
U0V2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKSkKKyAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwg
KnRhcmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codGhpc1ZhbHVl
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+
KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCmluZGV4IGEwZWQ5MjFh
MWNkYTc0MWZhODRiZTAxOTRiOGNlMzM5YTczNzQ3OGIuLmMzMGI2ZmM5ZjAxNjI2Y2M2NTk1YjVh
OWM3ZmZjZGM5YWI4MGRlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBKU0M6
OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNNZWRpYVN0cmVhbVRyYWNr
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFs
dWUpOworICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBl
RXJyb3Ioc3RhdGUsIHNjb3BlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsK
IApAQCAtMTEzLDcgKzExMyw3IEBAIEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6Omdl
dENhcGFiaWxpdGllcyhFeGVjU3RhdGUmIHN0YXRlKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1Zh
bHVlKCk7Ci0gICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOworICAgIEpTTWVkaWFTdHJlYW1UcmFj
ayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiTWVkaWFT
dHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uaAppbmRleCAxZThhOGMxMTkzNmI2ZjU1ZmE3Y2VkZGEyODlmNTY1YmEy
NjYyZDYyLi5kNWQ2ZDAzY2JiY2QxZTQ0YzFiODdiYzI1NzY1MDcwZjA2NjM0ZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaApAQCAtNzgsMTEgKzc4LDkgQEAg
aW5saW5lIHZvaWQqIHJvb3QoTm9kZSYgbm9kZSkKICAgICByZXR1cm4gcm9vdCgmbm9kZSk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgSlNOb2RlKiBqc05vZGVDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
K0FMV0FZU19JTkxJTkUgSlNOb2RlKiBqc05vZGVDYXN0KEpTQzo6SlNDZWxsKiB2YWx1ZSkKIHsK
LSAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPj0gSlNOb2RlVHlwZSA/IEpT
Qzo6anNDYXN0PEpTTm9kZSo+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50
eXBlKCkgPj0gSlNOb2RlVHlwZSA/IEpTQzo6anNDYXN0PEpTTm9kZSo+KHZhbHVlKSA6IG51bGxw
dHI7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNDOjpKU1ZhbHVlIEpTTm9kZTo6bm9kZVR5cGUoSlND
OjpFeGVjU3RhdGUmKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKaW5kZXggZmFjMjBiMjcyNmQ5ZWI3ZmM5
YjllZWI1NDA5NjM3ZmZkOTFjY2U0MC4uODM2NWJhMDY5NTFmOWJjMjdhNGFhZmNjMjkxZWQ3NmRj
NWQ3NDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCkBAIC05OSw3ICs5OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU0hUTUxFbGVtZW50KiB0aGlzT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU0hUTUxFbGVtZW50Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0hU
TUxFbGVtZW50Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09i
amVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgdGhpc09i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggYWZhYzk5YTA4
YzEzMzczM2E3ZTE5OTNiZmM0YWQzMWIzYTM4OTlhNC4uOWZhMjAwZTA0MmM2NmFhY2E5MDhiZjA5
MGE5YzFlYTg0MzQ1ZTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKEV4ZWNTdGF0ZSYgZQogICAgIFZNJiB2bSA9IGV4
ZWMudm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
Ci0gICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxl
U3RyZWFtKj4oZXhlYy5hcmd1bWVudCgwKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFt
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkp
OwogICAgIGlmICghc3RyZWFtKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihleGVjLCBzY29wZSwgMCwgInN0cmVhbSIsICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsIG51bGxw
dHIsICJSZWFkYWJsZVN0cmVhbSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCmluZGV4IGE1M2Y2
MzVjMGFlZjdlOWMzNDdiZjg5YmExZTdmNGQ5MmU2N2IyMDEuLjRiYjg4ZTdmMjJlM2Y1YTEzZmNk
YjcxMWExOTlkMDgxYWY3MjEwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCkBAIC0zNywxMSAr
MzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzdGFydFJlYWRhYmxl
U3RyZWFtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogewotICAgIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Nh
c3Q8SlNSZWFkYWJsZVN0cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBKU1Jl
YWRhYmxlU3RyZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxl
U3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIEFTU0VSVChzb3VyY2UpOwog
CiAgICAgQVNTRVJUKHN0YXRlLmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgSlNSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7Cisg
ICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNEeW5h
bWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKj4oc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChjb250cm9sbGVyKTsKIAogICAgIHNvdXJj
ZS0+d3JhcHBlZCgpLnN0YXJ0KFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoY29udHJv
bGxlciksIFdURk1vdmUocHJvbWlzZSkpOwpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9pZCBz
dGFydFJlYWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcgogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydChFeGVjU3Rh
dGUmIHN0YXRlKQogewogICAgIEFTU0VSVChzdGF0ZS5hcmd1bWVudENvdW50KCkpOwotICAgIEpT
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJvbGxlciA9IGpzRHluYW1pY0Nh
c3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKj4oc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkpOworICAgIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJv
bGxlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBBU1NFUlQoY29udHJvbGxlcik7
CiAKICAgICBtX2NvbnRyb2xsZXIuc2V0KHN0YXRlLnZtKCksIHRoaXMsIGNvbnRyb2xsZXIpOwpA
QCAtNjAsNyArNjAsNyBAQCBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAKIHN0YXRpYyB2b2lkIHB1bGxSZWFkYWJsZVN0cmVhbShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBK
U1JlYWRhYmxlU3RyZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVT
dHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbVNv
dXJjZSogc291cmNlID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbVNvdXJjZSo+
KHN0YXRlLnRoaXNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc291cmNlKTsKIAogICAgIHNvdXJjZS0+
d3JhcHBlZCgpLnB1bGwoV1RGTW92ZShwcm9taXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZTEyNTBi
MzU4ZmU1NjNmMDQxMTNkMDMzMmYwYWQxMWM5OTNlNWVlYy4uYTYxNzcwOTdhOTMyZmQzNWVlY2M3
ZjA2Zjk2NjRjYjA2NmIxNWQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFz
ay5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRl
ICJKU0R5bmFtaWNEb3duY2FzdC5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBA
IC0xMjgsNyArMTI5LDcgQEAgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSogdG9KU0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlKEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKGNsYXNzSW5mbyA9
PSBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjppbmZvKCkpCiAgICAgICAgIHJldHVybiBq
c0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGFzT2JqZWN0KHZhbHVlKSk7CiAg
ICAgaWYgKGNsYXNzSW5mbyA9PSBKU1Byb3h5OjppbmZvKCkpCi0gICAgICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihqc0Nhc3Q8SlNQcm94eSo+
KGFzT2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKKyAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUqPihqc0Nhc3Q8SlNQcm94eSo+KGFz
T2JqZWN0KHZhbHVlKSktPnRhcmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggZGI3
Y2Y4NjVmMDc3ZjYzNTQ0YmIwYTE2ODcxNTUxMjE1YjUwNDFhYS4uOGFmNTM5NTUxNzYxNDUzZGQ1
ZmY1YjQ4OWFjOGVjZDdhYTBkMGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSlNDOjpKU1Zh
bHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RXhlY1N0YXRlKgogICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBK
U01vZHVsZVJlY29yZC4KICAgICAvLyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhlIG1v
ZHVsZSBsb2FkZXIgaXMgc3VwcG9ydGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFsdWVz
LgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXByb3Rv
dHlwZS1wcm92aWRlCi0gICAgSlNDOjpKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTQzo6SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7
CisgICAgSlNDOjpKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljRG93bmNh
c3Q8SlNDOjpKU01vZHVsZVJlY29yZCo+KG1vZHVsZVJlY29yZFZhbHVlKTsKICAgICBpZiAoIW1v
ZHVsZVJlY29yZCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggMjIzMGUxZmIxMWRiYjdmZGY3MmQ4Y2UyNzk2YWIwZmZlZDcyZGZhMS4uZjI2NDE3M2M1
MWUwYjgxYWIxNjNmOTc1ZWVhZjU0MWZjOTIwZDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzcxLDcgKzEz
NzEsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlmICghaXRlcmF0b3ItPm5leHRLZXlWYWx1
ZShtX2V4ZWMsIGtleSwgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcEl0ZXJhdG9y
U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0
ID0gaW5wdXRPYmplY3RTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChq
c0R5bmFtaWNDYXN0PEpTTWFwKj4ob2JqZWN0KSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChqc0R5bmFtaWNEb3duY2FzdDxKU01hcCo+KG9iamVjdCkpOwogICAgICAgICAgICAgICAgICAg
ICBwcm9wZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnR5
TmFtZU1vZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNr
Lmxhc3QoKSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShO
b25NYXBQcm9wZXJ0aWVzVGFnKTsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAg
ICAgICAgICAgaWYgKCFpdGVyYXRvci0+bmV4dChtX2V4ZWMsIGtleSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgc2V0SXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihvYmplY3QpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGpzRHluYW1pY0Rvd25jYXN0PEpTU2V0Kj4ob2JqZWN0KSk7
CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFy
cmF5KG1fZXhlYywgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBt
X2V4ZWMsIHByb3BlcnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlKE5vblNldFByb3BlcnRpZXNUYWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKaW5kZXggNGNiODhiMmRlNTNjOGIy
YjBkMDM3ZTAwYjc4MjFiNmNiZjUyY2QwMi4uZmQ4YzZmZjhlMmE2NThhZmZiNTlmMzcwNjMyOTYz
NmE5M2ZhYTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0
dXJlZENsb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEV4ZWNTdGF0ZSogZXhlY1N0YXRlCiAgICAg
QVNTRVJUKGV4ZWNTdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKIAogICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjU3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8qIGJ1ZmZlclZpZXcg
PSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2YWx1ZSk7CisgICAgYXV0
byogYnVmZmVyVmlldyA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odmFs
dWUpOwogICAgIEFTU0VSVChidWZmZXJWaWV3KTsKIAogICAgIGF1dG8qIGJ1ZmZlciA9IGJ1ZmZl
clZpZXctPmJ1ZmZlcigpOwpAQCAtNjYsMjUgKzY2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KEV4ZWNTdGF0ZSogZXhlY1N0
YXRlCiAgICAgfQogICAgIGF1dG8gYnVmZmVyQ2xvbmUgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAKLSAgICBpZiAoSlNDOjpq
c0R5bmFtaWNDYXN0PEpTSW50OEFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3du
Y2FzdDxKU0ludDhBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU0ludDhBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCks
IFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZp
ZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0ludDE2QXJyYXkq
Pih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTSW50MTZBcnJheSo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDE2QXJyYXk6OmNyZWF0ZShl
eGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwg
YnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlm
IChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNJbnQzMkFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5
bmFtaWNEb3duY2FzdDxKU0ludDMyQXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNJbnQzMkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5z
dHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpT
VWludDhBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNVaW50OEFy
cmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhBcnJh
eTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVm
ZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgp
KSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQ4Q2xhbXBlZEFycmF5Kj4odmFs
dWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQ4Q2xhbXBlZEFycmF5Kj4odmFs
dWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNVaW50MTZBcnJheSo+KHZhbHVlKSkKKyAg
ICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNVaW50MTZBcnJheSo+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQxNkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBi
dWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXct
PmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5
bmFtaWNDYXN0PEpTVWludDMyQXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25j
YXN0PEpTVWludDMyQXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNVaW50MzJBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJl
KCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZl
clZpZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0Zsb2F0MzJB
cnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNGbG9hdDMyQXJyYXkq
Pih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDMyQXJyYXk6
OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZl
ckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkp
OwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNGbG9hdDY0QXJyYXkqPih2YWx1ZSkpCisg
ICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTRmxvYXQ2NEFycmF5Kj4odmFsdWUpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQ2NEFycmF5OjpjcmVhdGUoZXhlY1N0YXRl
LCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZp
ZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpq
c0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25j
YXN0PEpTRGF0YVZpZXcqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNEYXRhVmlldzo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdU
Rk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXct
Pmxlbmd0aCgpKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggN2NiMjJh
MjlkNDlmZjE1MDUyNzFjNjY2M2ExODZkZjc1MmNhYWVlNy4uMzUxZDY0YWQ2YzA2NDVmZjAyMjBj
ZTNkMmY3YTk5MDI1ZmJiNTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI0ODUsMTMgKzI0ODUsNyBAQCBzdWIgR2V0
Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7
CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotCi0gICAgcmV0dXJu
ICJqc05vZGVDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSI7Ci0gICAgcmV0dXJuICJq
c0VsZW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRWxlbWVudCI7Ci0gICAgcmV0dXJu
ICJqc0RvY3VtZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50IjsKLSAgICBy
ZXR1cm4gImpzRXZlbnRUYXJnZXRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJn
ZXQiOwotICAgIHJldHVybiAianNFdmVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVu
dCI7Ci0gICAgcmV0dXJuICJqc0R5bmFtaWNDYXN0PEpTJGludGVyZmFjZU5hbWUqPiI7CisgICAg
cmV0dXJuICJqc0R5bmFtaWNEb3duY2FzdDxKUyRpbnRlcmZhY2VOYW1lKj4iOwogfQogCiBzdWIg
R2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KQEAgLTMzNTksNyArMzM1Myw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKVxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7CiAKQEAgLTMzODEsNyArMzM3NSw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05h
bWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCmluZGV4IGRlYWFlNjNjMTI4ODQ2NTdjODAwN2IzZGYzYjAxODg3YjYy
YzRhNDEuLjI4N2U5OWJiMGFkOWMyOWJjZjUyN2E5NzA1NjQyMTkxZGQ5MWRhNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNJbnRl
cmZhY2VOYW1lQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1YKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnRlcmZhY2VOYW1lOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTMwLDcgKzEzMCw3
IEBAIGJvb2wgc2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTSW50ZXJmYWNl
TmFtZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNJbnRlcmZhY2VO
YW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0ludGVyZmFjZU5h
bWVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTMsNyArMjEzLDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBJbnRlcmYKIAogSW50ZXJmYWNlTmFtZSogSlNJbnRlcmZhY2VOYW1lOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWUqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0ludGVyZmFjZU5hbWUqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA5MDI3ZWFlMjQwYTdiZTZhZGIzMDEw
NWVkOTViMzU0ZGRlYTU5ZWIwLi41MjZhNmE3YzU0YWYzMWMzNjlhMjg4ZTUxNjY2NGNkMmQ4ZGE2
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTQzLDEyICsxNDMs
MTIgQEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogQmluZGluZ0Nh
bGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
cmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0QWN0aXZl
RE9NT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0
aW5nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RBY3RpdmVET01PYmplY3QmLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3Rp
dmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CkBAIC0xODQsNyArMTg0LDcgQEAgYm9vbCBzZXRKU1Rlc3RBY3RpdmVE
T01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmEKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RBYwogCiBUZXN0QWN0aXZlRE9NT2JqZWN0KiBKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHZhbHVlKSkKKyAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAppbmRleCA5N2IyODkx
NTYwMzdmOWI1ZWU3NTViZjkzMDk0ZjQ0MjE2N2ZiMGZjLi45NmM3MTYyZjE1OGYxNjJiYTFmODEz
NWI5ZTU4ZWNjNDQ2OTMzZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKQEAgLTEzNywx
MiArMTM3LDEyIEBAIHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwq
IGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q0VSZWFjdGlvbnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9ucyogQmluZGlu
Z0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHN0
YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VS
ZWFjdGlvbnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdpdGhDRVJlYWN0aW9uc0dldHRlcihFeGVjU3Rh
dGUmLCBKU1Rlc3RDRVJlYWN0aW9ucyYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpCiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0Q0VSZWFjdGlvbnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBzZXRK
U1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q0VSZWFjdGlvbnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzYyLDcgKzM2Miw3IEBAIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdENFCiAKIFRlc3RDRVJlYWN0aW9ucyogSlNUZXN0Q0VSZWFjdGlvbnM6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IDdlODZk
OGVjNDU0NzExNGFmMTNmZDRkYzA4OTM1NmVjNjEyNDkzZWQuLmVlMzJmY2IxYzcyODU2M2QyOWEz
NzVjNmExMDlkMWQ1MDhlYjY3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllci5jcHAKQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZvaWQgSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogQmluZGluZ0NhbGxlcjxKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogQmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihzdGF0
ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVHZXR0ZXIoRXhlY1N0
YXRlJiwgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciYsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiB7CiAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0
ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdENFCiAKIFRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
Kj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCAwN2FkZGRi
OGQ5MWRmZTcwZWI5NmZkNDEwNWVlZmE2ZmJmMmIzZWFhLi5hMmNlYzgxYTRmZWFiYWEyZjMyOWY5
MDY3ZjY5MWI4YjI4ODZiMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzYsNyArMTM2LDcgQEAg
Ym9vbCBzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWQKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEx
LDcgKzIxMSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdENsCiAKIFRlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvciogSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odmFsdWUp
KQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5j
cHAKaW5kZXggYTM1OWM1NDhhYjA5NWIxNDM2NDYyNzRhNGNlYTUzZWNmNDk5M2I4Zi4uZjJjODk4
MDk1MTdmZTY1M2YwYjI5YmUzNmZmZTk3M2ZkNjkzOWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qu
Y3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSBj
b25zdHJ1Y3RvciA9IEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZShzdGF0ZS0+dm0oKSwgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHN0YXRlLT52
bSgpLCAqZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KS0+b2JqZWN0UHJvdG90eXBlKCkpLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIGJvb2wgc2V0SlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RD
dQogCiBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCo+KHZhbHVlKSkKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDNlZTg5NGI2MzVlZWE4YjgyYzFmMDcxNzBhNWYzMWZk
N2NiYzdkNDAuLmMxNDI5N2QwZTViMzU4ZGNmOWEwNTJmYThjYjExZGFmZjUzMmM0MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTYxLDE0ICsxNjEsMTQgQEAg
Ym9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3QKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0
dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wg
c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI2Nyw3ICsyNjcsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdQogCiBUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIqIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQogICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01K
SVQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERP
TUpJVC5jcHAKaW5kZXggZTM5N2JlZTc4NDhlYzYxZmI5MzU5OGJjY2NjOGU2MzZhNDdkNDU4Ni4u
MjQ4OGRmMjZiZGI1MmI1MGNkNjdkNjBjY2E1NjViMjY1MzY3ZTRjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCBKU09iamVjdCogSlNUZXN0RE9NSklUOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJp
YnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVQqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRBbnlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHUK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RET01KSVRQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAgYm9vbCBzZXRKU1Rl
c3RET01KSVRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY28KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RET01KSVRQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBmNzhkNDU2MmI3OTQ0
NDBkYzI3YTg4M2JjNTI3N2YzNzliZTgxMDc4Li40M2ZlNTUwNmFlNGIxY2M1YWZkODdjNTQzMDkx
OTI3NDEyZmE3MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0x
ODgsNyArMTg4LDcgQEAgSlNPYmplY3QqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnByb3RvdHlw
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogdGVtcGxhdGU8PiBpbmxp
bmUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogQmluZGluZ0NhbGxlcjxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRy
MUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV2
ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CkBAIC0yNTcsNyArMjU3LDcgQEAgYm9vbCBzZXRKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1YKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNw
cAppbmRleCAxZDYwMGQxYzA1ZGViNjAxMWI3MDI5MTVhZDQ0Zjk1MDFiMzVmOWZlLi5iZDZkOTlm
YjliN2YzMWZiM2JjYTY2NmY1ZGE0MjNhY2MyZmVhYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKQEAgLTE1OSwxNCArMTU5LDE0IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzCiAKIHRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50VGFyZ2V0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2
ZW50VGFyZ2V0Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oc3RhdGUudGhpc1ZhbHVlKCkp
OworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFdmVudFRhcmdldFBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudFRhcmdldDo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
LSAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yNzIsNyArMjcyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXYKIAogVGVzdEV2ZW50VGFy
Z2V0KiBKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQq
Pih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDdi
OWNmOTE5ZTQxNTk1ODkwNzAxMTg1YWQ3MzcxOGZhZTFiMWE1NWEuLmIzZjI4ZThiZWJlMDMzNDFl
N2Y1OGVmZGJiZTZhYWUyOGZhNGExYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV4Y2VwdGlvbiogQmluZGluZ0NhbGxlcjxK
U1Rlc3RFeGNlcHRpb24+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRp
b24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWVHZXR0ZXIoRXhlY1N0
YXRlJiwgSlNUZXN0RXhjZXB0aW9uJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xNTYs
NyArMTU2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzUsNyArMjM1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXgKIAogVGVz
dEV4Y2VwdGlvbiogSlNUZXN0RXhjZXB0aW9uOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRp
b24qPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RFeGNlcHRpb24qPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCmluZGV4IDc3ZjlkMzVmN2Y4YTNiOGU4ZTk1NzhjZTg4YzYxMGQyZjU1NjNh
Y2YuLjZmZTdiZGU3MjJkY2NjZTQ2ZWMyMzQxMmE4MjdiNzg5YTJmZjNmODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVgogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEz
MCw3ICsxMzAsNyBAQCBib29sIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aAogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRlc3RHZQogCiBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVl
KSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApp
bmRleCBlM2E0NTdmNDM1MTIxMGY3OWNhOTU0NGZkM2IxZmE0NzQ3YmNiZjJjLi5lYjcxNTk3NGJj
YjUyMDIzZmNjM2IzNTBiMzI0Y2UzMmJkNzYzN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcApAQCAtMTc3LDEyICsxNzcsMTIgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdsb2JhbE9i
amVjdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRl
KEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
R2xvYmFsT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RHbG9iYWxPYmplY3QqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1
dGVHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0R2xvYmFsT2JqZWN0JiwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSk7CkBAIC0yNTksNyArMjU5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGgKIHsK
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0R2xvYmFsT2JqZWN0OjpnZXRDb25z
dHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjcw
LDcgKzI3MCw3IEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlCiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpT
VGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
MjQsNyArNTI0LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2wKIAogVGVzdEdsb2JhbE9iamVj
dCogSlNUZXN0R2xvYmFsT2JqZWN0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3Qq
Pih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RHbG9iYWxPYmplY3QqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBl
ZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAy
ZmY5YzAwYzYxZjkxZTRkNzdlZDgyZTQ0Y2E1ZjA5YjhkNjc1ODVjLi5hOGY2NzM5OGI2OTBiNjgw
ZDQxZDNlZTcxOTcwODQzNWRjMGViZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzk5
LDEyICszOTksMTIgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwq
IGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZSogQmluZGluZ0NhbGxl
cjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
IH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdEludGVyZmFjZT46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihzdGF0ZS50aGlzVmFsdWUo
KSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKIH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKQpAQCAtNjMxLDcgKzYzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiB7
CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCBi
b29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyOSw3ICsxMDI5LDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0SW4KIAogVGVzdEludGVyZmFjZSogSlNUZXN0SW50ZXJmYWNlOjp0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih2YWx1ZSkpCiAgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKaW5kZXggZmQz
ZTExN2JmMTg4OWZjNThhYjg2MzhhMTgyMDM2Mjc0YzBlYjM1MS4uOTU3NTJkYzgzNDkzY2RkYjM1
M2FlYTIzMzAwZDQ2ZGQxM2IxOTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU+OjpjYXN0Rm9yQXR0cmli
dXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZVJlYWRvbmx5R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmMKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIHNl
dEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDEsNyArMjAxLDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0SW4KIAogVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SXRlcmFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAppbmRleCA5YWZmZGM0ZTJkYWVjNDAyMTBhZjFlYTNm
MWE4ZWMxNWI0YmRmNGFlLi44NDliYzcyZWIzNzc1ZGUwYjUwZDNmZWY2MmUwZWVhNjUxY2EyNDVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SXRlcmFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKQEAgLTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgSlNUZXN0
SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdEl0ZXJhYmxlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2FzdEZvck9w
ZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdEl0ZXJhYmxlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RJdGVyYWJsZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RJdGVyYWJsZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIHNldEpTVGVzdEl0ZXJhYmxlQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbgog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yODIsNyArMjgyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SXQKIAogVGVzdEl0ZXJhYmxl
KiBKU1Rlc3RJdGVyYWJsZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGUqPih2YWx1ZSkp
CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJs
ZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cAppbmRleCA1YTQ4ZjNjNzIyOThkMzZiNDhmZWE5NmM5MTc5MjUxYzY0MWM2Y2E3Li5kZDQ4OTc0
ZmFiYzA5MmEwZjljMzg0NDdhYzJkOGE5MTk0Y2U0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTEzNCwxMiArMTM0LDEyIEBAIHZvaWQgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogQmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnRoaXNW
YWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b21HZXR0ZXIoRXhl
Y1N0YXRlJiwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3ImLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgc2V0
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRl
eCBkOTU0NjRhZWIzMDY5OWUxZmE2NmM5YTE0ZjljY2VlOWY0YjFiMDY1Li41ODdhOWU0MmRkMzA3
ZmIxZmZmYmVhZjc1OTZmNmIyYmY5MGNjZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0xMjUsMTQgKzEyNSwxNCBAQCB2b2lkIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIEJpbmRpbmdDYWxsZXI8
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25z
dHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTQz
LDcgKzE0Myw3IEBAIGJvb2wgc2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDcgKzIzMiw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdE1lCiAKIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTRmMjU2NWRiNjU2NDQ1NDE5MzRh
ZjVjYzNhYTM4MjJmM2QwNTliNS4uODc4NmY0MzdmMjlhMjc5N2RmOTVjZDhmNzg4MmI4ZWNmYjBh
OTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTYyLDcgKzE2
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTczLDcg
KzE3Myw3IEBAIGJvb2wgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hCiAKIFRl
c3ROYW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKaW5kZXggZjhmZGMwYzYyOGEyZGRjYzMxMDJlOThjMTMyOWJjYTlkZDk2NmNh
ZC4uMzM3MTBiMTNjZmZiNjBmZDQ2N2Q3YTI2MDIyYTQwZTQ1NGNhNDZkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNw
cApAQCAtMTY4LDEyICsxNjgsMTIgQEAgSlNPYmplY3QqIEpTVGVzdE5vZGU6OnByb3RvdHlwZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdE5vZGUqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JBdHRyaWJ1dGUo
RXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
cmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vZGUqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb2RlKj4oc3RhdGUudGhpc1ZhbHVl
KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9kZU5hbWVHZXR0ZXIoRXhl
Y1N0YXRlJiwgSlNUZXN0Tm9kZSYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTk2LDcg
KzE5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiB7CiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5v
ZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjA3LDcg
KzIwNyw3IEBAIGJvb2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVz
dE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZVByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3ROb2RlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCmluZGV4
IDE1YmUzYjZjYzhhYjUyOTI4YjJlNDg3YTEyMWQzNmQ0YWYxNTI3OTQuLjNiMTYxNzcxMjJlMzNl
ZjQ5NzZlMTViYjc0YmJhOWRhOTg0ZjQzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5jcHAKQEAgLTE0NCwxMiArMTQ0LDEyIEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yzo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyogQmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6
Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogQmluZGluZ0NhbGxlcjxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihz
dGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5v
bmRldGVybWluaXN0aWMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0
ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5v
bmRldGVybWluaXN0aWM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CkBAIC0zNTEsNyArMzUxLDcgQEAgYm9vbCBzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1YKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vbmRldGVybWlu
aXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Tm8KIAogVGVzdE5vbmRldGVybWluaXN0aWMqIEpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih2YWx1
ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMTI5YTI0YTc2Y2IxNmQ0
ZjAxY2VkNmMzYzE5MDYzMTViNThjMmI4OS4uOTZhODMzM2RkZGUxMjgzMTk0NjJhOTRkMmE3ODY1
NWMyYjZlNDA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4MDcsMTIgKzE4MDcsMTIgQEAgYm9vbCBKU1Rl
c3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBzdGF0ZSwgdW4KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RPYmoqIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FzdEZvck9wZXJh
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0T2JqKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RPYmom
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTMyOTksNyArMzI5OSw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RPYmpQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0T2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMzMxMCw3ICszMzEwLDcgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWQKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgzNTMs
NyArODM1Myw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE9iCiAKIFRlc3RPYmoqIEpTVGVzdE9i
ajo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T2JqKj4odmFsdWUpKQogICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA2NjkwZDJjYjFkZDQw
ZTFlMjJiYTVmOTA5NWE2ODVmMjUxNzg1NjJlLi4xZjZiNGIyZDk2MGFmY2E5ODQ5ZTFmMzc4Y2Y4
NzVhM2JkYzU0NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWQKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0yMzYsNyArMjM2LDcg
QEAgYm9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDQsNyArMzA0LDcgQEAgSlNDOjpKU1ZhbHVl
IHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0T3YKIAogVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApp
bmRleCAzZDJkM2MwMmRmODg2N2JjMDk4ZmNmZWUyMjhjOGY4ZTdlZmE0NTQ3Li40OGIwNmYwMzNk
MjAyY2YzYTkyNTc0NDdjYmFkYzE0OTRkZjE2Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCkBAIC0xNzEs
NyArMTcxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3QKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBzZXRK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNTAsNyArMjUwLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3YKIAogVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKj4o
dmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCAxZGI2
N2Y0N2E5ZTE2MzUzODJjN2E0MzRmOWU0NzRkY2E5YjE5MzU1Li45MGI2ZTkyYTdjMjM0YmUwYmU5
OWUzYjI2ODZhZjg1ZmZjMTk3Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCkBAIC0xNTgsMTQgKzE1OCwxNCBAQCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29uc3Ry
dWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE3Niw3
ICsxNzYsNyBAQCBib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI3NSw3ICsyNzUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdgogCiBU
ZXN0T3ZlcnJpZGVCdWlsdGlucyogSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6dG9XcmFwcGVkKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDBjZGE1MDZlN2Y3Yjg3ZjNhNDZh
ZmZkNzA5NGIzMjM2ZTFkYzY5ZTMuLmJjMjA1MDAyYzJmN2JlZWE5ZThiMTc4NThhMmNhNDZkZjgz
YTNlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKQEAgLTE0MCwxMiArMTQwLDEy
IEBAIHZvaWQgSlNUZXN0U2VyaWFsaXphdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
IAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXphdGlvbiogQmluZGluZ0NhbGxlcjxK
U1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXphdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXphdGlvbiogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRp
b24qPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdFNlcmlhbGl6YXRpb24qPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGVHZXR0ZXIo
RXhlY1N0YXRlJiwgSlNUZXN0U2VyaWFsaXphdGlvbiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0CiB7CiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemF0aW9uOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjQzLDcg
KzI0Myw3IEBAIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVz
dFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
U2VyaWFsaXphdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDM4LDcgKzQzOCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFNlCiAKIFRlc3RTZXJpYWxpemF0
aW9uKiBKU1Rlc3RTZXJpYWxpemF0aW9uOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemF0
aW9uKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0U2VyaWFsaXphdGlvbio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDNjY2I4NmZlNTk5
NzZiYmRkZmYzMGFiMjY3YzIyNmE2M2MxNmFlYjYuLjcwNmYyNDRmZjM1MWRkMmMwYjJkZjEzMTVk
ZWEwM2QwMjNlMjg1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+Ojpj
YXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
OwpAQCAtMjI5LDcgKzIyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsCiB7CiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBib29sIHNldEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU1LDcgKzM1NSw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdFNlCiAKIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4odmFsdWUpKQorICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDg5YWQz
MmY2MzE2ZDgwNTM0NTZmNjExNjZjYWM5ODg0MjZiODY5ZjIuLjdkNmIyYzBmZWI1OWMwOGU3M2I5
NzBkNzRhZTg3YjAwYjM5OWYzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMjE1LDEyICsy
MTUsMTIgQEAgdm9pZCBKU1Rlc3RUeXBlZGVmczo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkK
IAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0
VHlwZWRlZnM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZz
Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9u
Z0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0VHlwZWRlZnMmLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYQogewog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIGJvb2wgc2V0
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTgwNiw3ICs4MDYsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RU
eQogCiBUZXN0VHlwZWRlZnMqIEpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdFR5cGVkZWZzKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQppbmRleCBjOWRhZDI3ODZmYzhmMWFhNGRjM2I3OTEw
NzVkNzdmMDM1YjVmNDc3Li4yZTViMTUyNWFhNjBlYTE2YjAzMTE2NTI0YzNlNzQ4MzMxMTllNWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBA
IC0zOTksNyArMzk5LDcgQEAgLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihbc2VsZiBfaW1w
XSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTT2JqZWN0Kj4o
W3NlbGYgX2ltcF0pOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CiAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsIFN0cmluZyhrZXkpKSwgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoZXhlYywgJnZh
bHVlLCBPYmpjT2JqZWN0VHlwZSwgW3NlbGYgX3Jvb3RPYmplY3RdKSwgc2xvdCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAppbmRleCAwOTlhZmYwNGMyOTMwOTNhMTVi
ZjYzOTU1MGYxNTUxNmI0M2RjNGFkLi5kMzBhNTg1YmIzMzU0ZWM4ZTQyZDRlOGZhZTE4ZmRlYzUz
NTU5ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCkBAIC02NSw3
ICs2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBSdW50
aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVBcnJheSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlz
T2JqZWN0LT5nZXRMZW5ndGgoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAKaW5kZXggNTk2MTlmYjI0M2U4OTkyOWNhMGYwOWU1ODM3ODFjZDBkNjk1MmViZC4uMzJj
YzBhYjVkNzFiOTY5NTVhOTBhODczYzU0YWRiYThkNDFkN2ExMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCkBAIC01OSw3ICs1OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBSdW50aW1lTWV0aG9kKiB0aGlzT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxSdW50aW1lTWV0aG9kKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxSdW50
aW1lTWV0aG9kKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09i
amVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51
bVBhcmFtZXRlcnMoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggMzQ5NTJlNTEyZDU3OWM0MWU2ZTU1YmM1OTU2YjZiNjJmN2I5YWIzMC4uNWMxMDI5MTRk
NWFlMzljYTc5Yjg2ZjJjZjUzZGFjNWQyZGQwZDk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zODg5LDcgKzM4ODksNyBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCYgZwogICAgIGF1dG8gbWVkaWFKU1dyYXBwZXIgPSB0b0pTKCZleGVjLCAmZ2xvYmFsT2Jq
ZWN0LCBtZWRpYSk7CiAgICAgCiAgICAgLy8gUmV0cmlldmUgdGhlIGNvbnRyb2xsZXIgdGhyb3Vn
aCB0aGUgSlMgb2JqZWN0IGdyYXBoCi0gICAgSlNDOjpKU09iamVjdCogbWVkaWFKU1dyYXBwZXJP
YmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhSlNXcmFwcGVy
KTsKKyAgICBKU0M6OkpTT2JqZWN0KiBtZWRpYUpTV3JhcHBlck9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTQzo6SlNPYmplY3QqPihtZWRpYUpTV3JhcHBlcik7CiAgICAgaWYgKCFtZWRpYUpT
V3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CiAgICAgCkBAIC0z
ODk3LDcgKzM4OTcsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJKU1ZhbHVlKEpT
Qzo6RXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCYgZwogICAgIEpTQzo6SlNWYWx1
ZSBjb250cm9sc0hvc3RKU1dyYXBwZXIgPSBtZWRpYUpTV3JhcHBlck9iamVjdC0+Z2V0KCZleGVj
LCBjb250cm9sc0hvc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6SlNW
YWx1ZSgpKTsKIAotICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVj
dCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbHNIb3N0SlNXcmFw
cGVyKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbHNIb3N0SlNXcmFwcGVyKTsK
ICAgICBpZiAoIWNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0dXJuIEpT
Qzo6anNOdWxsKCk7CiAKQEAgLTM5NDUsNyArMzk0NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVy
VmFsdWUgPSBjb250cm9sbGVySlNWYWx1ZSgqZXhlYywgKmdsb2JhbE9iamVjdCwgKnRoaXMpOwot
ICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8
SlNDOjpKU09iamVjdCo+KGNvbnRyb2xsZXJWYWx1ZSk7CisgICAgSlNDOjpKU09iamVjdCogY29u
dHJvbGxlck9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9s
bGVyVmFsdWUpOwogICAgIGlmICghY29udHJvbGxlck9iamVjdCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0zOTU2LDcgKzM5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRp
b25Db250YWluZXIoKQogICAgIC8vIFJldHVybiB2YWx1ZToKICAgICAvLyAgICAgTm9uZQogICAg
IEpTQzo6SlNWYWx1ZSBtZXRob2RWYWx1ZSA9IGNvbnRyb2xsZXJPYmplY3QtPmdldChleGVjLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInVwZGF0ZUNhcHRpb25Db250YWluZXIi
KSk7Ci0gICAgSlNDOjpKU09iamVjdCogbWV0aG9kT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTQzo6SlNPYmplY3QqPihtZXRob2RWYWx1ZSk7CisgICAgSlNDOjpKU09iamVjdCogbWV0aG9k
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhvZFZhbHVlKTsK
ICAgICBpZiAoIW1ldGhvZE9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjQ5LDcgKzY2
NDksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdCogcm9vdCkKIAogICAgIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVyVmFsdWUgPSBK
U0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBhcmdMaXN0KTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgIEpTQzo6SlNPYmpl
Y3QqIGNvbnRyb2xsZXJPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+
KGNvbnRyb2xsZXJWYWx1ZSk7CisgICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sbGVyVmFsdWUpOwogICAg
IGlmICghY29udHJvbGxlck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02NjYyLDcgKzY2
NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdCogcm9vdCkKIAogICAgIG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5wdXREaXJlY3Qo
ZXhlYy0+dm0oKSwgY29udHJvbHNIb3N0LCBtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlciwgSlND
OjpEb250RGVsZXRlIHwgSlNDOjpEb250RW51bSB8IEpTQzo6UmVhZE9ubHkpOwogCi0gICAgSlND
OjpKU09iamVjdCogbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QgPSBKU0M6OmpzRHlu
YW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyKTsKKyAg
ICBKU0M6OkpTT2JqZWN0KiBtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlcik7
CiAgICAgaWYgKCFtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCkKICAgICAgICAgcmV0
dXJuOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggNDBkMzRkYzQyYTZjMWU1MjU1MWQ1Yjc5MTQwYTM3OWJiNGYxYjU2ZC4uMzEw
Mjg4OTk1MGUwZjgyZmNmNGEzYjExYjQ3N2QwMjRlNTQ1OWMwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xNTAxLDcgKzE1MDEsNyBA
QCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgogICAgICAgICBoYW5kbGVyID0gc2NyaXB0TGlzdGVu
ZXItPmpzRnVuY3Rpb24oJm5vZGUtPmRvY3VtZW50KCkpOwogICAgICAgICBpZiAoaGFuZGxlciAm
JiBzdGF0ZSkgewogICAgICAgICAgICAgYm9keSA9IGhhbmRsZXItPnRvU3RyaW5nKHN0YXRlKS0+
dmFsdWUoc3RhdGUpOwotICAgICAgICAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBKU0M6OmpzRHlu
YW1pY0Nhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4oaGFuZGxlcikpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGZ1bmN0aW9uID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4oaGFuZGxl
cikpIHsKICAgICAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGV4ZWN1dGFibGUgPSBmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1i
ZXIgPSBleGVjdXRhYmxlLT5maXJzdExpbmUoKSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKaW5kZXggMTZmYmE2ODIyZTQ3NmMzMzE3NDEwMjc2MGUxODA1NjgyZWM1ZDkx
Yy4uMWY4ZWRmMzM2YmM2NzUyNDI0ZDA0NTdkNjM5MmQ4YTJlNTM0MTg4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIFdlYkNvcmU6OkVs
ZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKFdl
YkZyYW1lJiBmcmFtCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gZWxlbWVudFdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8V2ViQ29yZTo6
SlNFbGVtZW50Kj4odG9KUyhlbGVtZW50KSk7CisgICAgYXV0byBlbGVtZW50V3JhcHBlciA9IFdl
YkNvcmU6OmpzRHluYW1pY0Rvd25jYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxlbWVu
dCkpOwogICAgIGlmICghZWxlbWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmJj
ZDVmOTcxZmEwZDljOGNlNzNkNTJiOGYyZWE1NjE4MTdjODNkZC4uMTFmNjM4NWFkYjkxNTYwYTQ1
ZmU1ZTBiYWYzMzVjOGE0Yzg0YmE1YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTI4ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01dIEludHJvZHVjZSBX
ZWJDb3JlOjpqc0R5bmFtaWNEb3duY2FzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKHNldEF1ZGlvUmVzdWx0Q2FsbGJhY2spOgorCiAyMDE2LTEwLTI3ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMjAzNjAxKTogQ2F1c2Vk
IGNyYXNoZXMgaW4gaUJvb2tzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGVm
MmQxNTgxNjc2YmFlYWY0ZTBhNzllZGY5N2UxMGQxMzdmYzM4OGYuLjliZDhiNGY5MGM3ZmZmZmY0
NDAyYTRjYjI4MWJhOTRjNmM3ZTFhOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXVkaW9SZXN1bHRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3QKICAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgLy8gRklYTUUgKDEyMzA1
OCk6IFVzZSBhIEpTQyBBUEkgdG8gZ2V0IGJ1ZmZlciBjb250ZW50cyBvbmNlIHN1Y2ggaXMgZXhw
b3NlZC4KLSAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmlldyo+KHRvSlModG9KUyhjb250ZXh0KSwg
YXJndW1lbnRzWzBdKSk7CisgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZmZXJWaWV3
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmlldyo+KHRvSlModG9KUyhj
b250ZXh0KSwgYXJndW1lbnRzWzBdKSk7CiAgICAgQVNTRVJUKGpzQnVmZmVyVmlldyk7CiAgICAg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0ganNCdWZmZXJWaWV3LT5p
bXBsKCk7CiAgICAgY29uc3QgY2hhciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293215</attachid>
            <date>2016-10-28 14:24:17 -0700</date>
            <delta_ts>2016-10-28 15:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164137-20161028142026.patch</filename>
            <type>text/plain</type>
            <size>122953</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVjMWNmZmE0NzM1N2U5
YzFjMjlmMzI5MWU2MmMwMmJmZTZlZGI0Yy4uZmEzZjc0NmJmZTIwMDI2NWRjMDZjNzg3MDNlNDdj
NzViODc0NGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAxNi0xMC0yOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRl
bmRlZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBl
cywgV2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisg
ICAgICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRU
eXBlLCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2Js
ZW0gaXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvb3NlCisg
ICAgICAgIEpTQzo6anNEeW5hbWljQ2FzdCBieSBhY2NpZGVudC4gU2VsZWN0aW5nIHRoZSBhcHBy
b3ByaWF0ZSBmdW5jdGlvbgorICAgICAgICByZXF1aXJlcyBzcGVjaWFsIGNhcmUgaW4gdGhlIElE
TCBjb2RlIGdlbmVyYXRvciB3aGVuIHdlIHdvdWxkIGxpa2UKKyAgICAgICAgdG8gdXNlIGZhc3Rl
ciBjYXN0aW5nIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBu
ZXcgY2FzdGluZyBmdW5jdGlvbiwgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QuCisgICAgICAg
IEl0IGlzIGEgdGhpbiB3cmFwcGVyIHRvIHRoZSBKU0M6OmpzRHluYW1pY0Nhc3QuIEJ1dCBpdCBz
ZWxlY3RzIHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhl
IHdheSBzcGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJ
ZiB3ZSBmb3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpq
c0R5YW5taWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJv
cnMsIGJ1dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVGhpcyBi
dWcgaXMgaGFyZCB0byBmaWd1cmUgb3V0LiBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIGFkZCBh
IG5ldyBmdW5jdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBs
ZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4
Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQXJyYXlCdWZm
ZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVs
bDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRG9j
dW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRHluYW1pY0Nhc3RUcmFpdDo6Y2FzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc0R5bmFtaWNEb3duY2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpqc0VsZW1lbnRDYXN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpq
c0V2ZW50Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRy
YWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6
OmdldENhcGFiaWxpdGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjpqc05vZGVDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxl
bWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RK
U1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFJl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OnB1bGxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldENhc3RpbmdI
ZWxwZXJGb3JUaGlzT2JqZWN0KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNJbnRlcmZhY2VOYW1lOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6
Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VS
ZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdD
YWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDRVJlYWN0aW9uczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj46OmNhc3RGb3JPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0Rm9y
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50
VGFyZ2V0Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV2ZW50VGFy
Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OnRv
V3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV4Y2VwdGlv
bj46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXhjZXB0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2xvYmFsT2JqZWN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RGb3JPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2Fz
dEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0
aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdEZvck9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9u
Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U2VyaWFsaXphdGlvbjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3Jh
cHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+Ojpj
YXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0
VHlwZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVk
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgt
W1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRl
cik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbGxlckpTVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5l
cik6CisKIDIwMTYtMTAtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW51c2VkIGNvZGUgaW4gUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjb21wdXRlRXh0ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMTgxYWZkNmEyMjY5NzgxOTNkZWRl
NTg1MWU3MjVkYjk0ZThhY2E1Li5mNjgzMzUzOWVlNTgwOTVkYjg4NWZjM2FjMWFjODM1OGM2OTZi
MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMjggIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTV0gSW50cm9kdWNlIFdl
YkNvcmU6OmpzRHluYW1pY0Rvd25jYXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQxMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZWxlbWVudEZvck5vZGVIYW5kbGUpOgorCiAyMDE2LTEwLTI4ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgQ0ZOZXR3b3JrIGNvbm5lY3Rpb24g
Y2FjaGUgZmFzdCBsYW5lIGZvciBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWFiNzhmN2FlZDcxZThlZTlhYTkxMmM4
ZTM1MTViZWZmNjFiOWQ1Mi4uMWUzNTUwYTg2OTY0YWEyM2MzNDI0MDg0Yzc5ZjZlNzQ3OTgzYWM5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTQwMzgsNiArMTQwMzgsNyBAQAogCQlFMzVDQTE0QzFEQkMzQTNDMDBGODM1MTYg
LyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVM
b2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1pY0Rvd25jYXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRHluYW1pY0Rvd25jYXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBK
U05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNO
b2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTMxRDdG
MzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFi
bGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE2MTEs
NiArMjE2MTIsNyBAQAogCQkJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRv
d1NoZWxsLmggKi8sCiAJCQkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpTRE9NV3JhcHBl
ci5jcHAgKi8sCiAJCQkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEwIC8qIEpTRE9NV3JhcHBlci5o
ICovLAorCQkJCUUzQTU4NzJFMURDM0Y1MjYwMEY2MDdBNiAvKiBKU0R5bmFtaWNEb3duY2FzdC5o
ICovLAogCQkJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5jcHAg
Ki8sCiAJCQkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmggKi8s
CiAJCQkJRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3Vz
dG9tLmNwcAppbmRleCAwNTkxZWVjODJkMTYyOWY5Mzk0ZmU1ZTZhNDFkZjFmMTc1NDg5YTQ5Li5l
NTNlN2RmMGFlNWYzMTY2YmEyYWVjNTMyNjkzNTc1OTVjZmM3MWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCkBA
IC00NCw3ICs0NCw3IEBAIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwotICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CisgICAgSlNBcHBsZVBheVNlc3Np
b24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQXBwbGVQ
YXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iKSk7CiAKQEAgLTcy
LDcgKzcyLDcgQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNW
YWx1ZSgpOwotICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CisgICAgSlNBcHBsZVBheVNlc3Npb24q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlT
ZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIikpOwogCkBAIC0xMDQs
NyArMTA0LDcgQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFs
dWUoKTsKLSAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljRG93bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vz
c2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDhhZDA4YTdmMjk4ZjIxOTgz
MDkzNzFjNDAzOTUwZjk3NDQzMWYzNDEuLmEwNzE2MGRjOTVjYWZkNDU1YmNiNjgwODYzMDg4M2Zk
YWQ3YmJhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgQ2FjaGVkU2NyaXB0KiBjYWNoCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNI
b2xkaW5nQVBJTG9jaygpKTsKLSAgICBhdXRvKiBleGNlcHRpb24gPSBqc0R5bmFtaWNDYXN0PEpT
Qzo6RXhjZXB0aW9uKj4oZXhjZXB0aW9uVmFsdWUpOworICAgIGF1dG8qIGV4Y2VwdGlvbiA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTQzo6RXhjZXB0aW9uKj4oZXhjZXB0aW9uVmFsdWUpOwogICAgIGlm
ICghZXhjZXB0aW9uKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLmxhc3RFeGNlcHRpb24oKTsK
ICAgICAgICAgaWYgKCFleGNlcHRpb24pCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCByZXBvcnRF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNo
ZWRTY3JpcHQqIGMKICAgICB2bS5jbGVhckxhc3RFeGNlcHRpb24oKTsKIAogICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0g
anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCkpIHsKKyAgICBpZiAoSlNE
T01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KSkgewogICAgICAgICBpZiAoIXdpbmRvdy0+d3JhcHBlZCgpLmlzQ3VycmVudGx5RGlz
cGxheWVkSW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5Myw3ICsx
OTMsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6RXhjZXB0
aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogYwogICAgIGVsc2UgewogICAgICAgICAvLyBG
SVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1MDg3PiBXZWIgSW5zcGVjdG9yOiBXZWJDb3Jl
OjpyZXBvcnRFeGNlcHRpb24gc2hvdWxkIG5vdCBldmFsdWF0ZSBKYXZhU2NyaXB0IGhhbmRsaW5n
IGV4Y2VwdGlvbnMKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGN1c3RvbSBleGNlcHRpb24gb2Jq
ZWN0LCBjYWxsIHRvU3RyaW5nIG9uIGl0IHRvIHRyeSBhbmQgZ2V0IGEgbmljZSBzdHJpbmcgcmVw
cmVzZW50YXRpb24gZm9yIHRoZSBleGNlcHRpb24uCi0gICAgICAgIGlmIChFcnJvckluc3RhbmNl
KiBlcnJvciA9IGpzRHluYW1pY0Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvblZhbHVlKSkK
KyAgICAgICAgaWYgKEVycm9ySW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljRG93bmNhc3Q8RXJy
b3JJbnN0YW5jZSo+KGV4Y2VwdGlvblZhbHVlKSkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9
IGVycm9yLT5zYW5pdGl6ZWRUb1N0cmluZyhleGVjKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gZXhjZXB0aW9uVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5YzNk
YWI1OGYwYTRlYmI5MTVkMjdiNGZmMWE0ZWNjZDkzZjBlYWEyLi5jZGM0ZmM5ZjBmNTY3NDNiZGM3
MTE1Y2ZhMjMxNThhNGQ5NzJmOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIK
KyNpbmNsdWRlICJKU0R5bmFtaWNEb3duY2FzdC5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKQEAgLTU2NCw3ICs1NjUsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBET01DbGFzcz4gaW5saW5lIEpTQzo6SlNWYWx1ZSB3cmFwKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNETwogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQ2xhc3Mm
IGNhc3RUaGlzVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIGF1dG8gdGhpc1Zh
bHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgYXV0byBjYXN0ZWRUaGlzID0gSlNDOjpqc0R5
bmFtaWNDYXN0PEpTQ2xhc3MqPih0aGlzVmFsdWUpOworICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTQ2xhc3MqPih0aGlzVmFsdWUpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICByZXR1cm4gKmNhc3RlZFRoaXM7CiB9CkBAIC02ODYsNyArNjg3LDcgQEAgaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTSXRlcmF0b3JFbmQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQog
CiBpbmxpbmUgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiB0b0FycmF5QnVmZmVyVmlldyhK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgYXV0byogd3JhcHBlciA9IEpTQzo6anNEeW5hbWlj
Q2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOworICAgIGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWUpOwogICAg
IGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHdyYXBw
ZXItPmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApp
bmRleCA5N2FhNGI5ZGE0YTZkOGEzOTY2ODZhZTdhOWRhMWNhOTM0NmI5ZWU3Li5iNTgyZGIwZjU2
ZDcyMzI4OTUyMGNlNjZjMGUzMGVmMTUyNzEyMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JdGVyYXRvci5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyLCBJdGVy
YXRvclRyYWkKICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gaXRlcmF0b3IgPSBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaXRzPio+KHN0
YXRlLT50aGlzVmFsdWUoKSk7CisgICAgYXV0byBpdGVyYXRvciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPihzdGF0ZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghaXRlcmF0b3IpCiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNhbGwgbmV4dCgpIG9uIGEgbm9uLUl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggZjE1NGMyYTY0
MTNlZTgzYzRmOTVhYzZiNzY1Y2IzNGMyNGNkMjc3NS4uN2FjODVlYzQ3ZDMxZmQ1MjkwNWRmNWRi
YTdhOGIwNDVhYmU0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dTaGVsbC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBET01XaW5kb3cmIEpTRE9NV2lu
ZG93U2hlbGw6OndyYXBwZWQoKSBjb25zdAogCiBET01XaW5kb3cqIEpTRE9NV2luZG93U2hlbGw6
OnRvV3JhcHBlZChKU09iamVjdCogdmFsdWUpCiB7Ci0gICAgYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNET01XaW5kb3dTaGVsbCo+KHZhbHVlKTsKKyAgICBhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljRG93bmNhc3Q8SlNET01XaW5kb3dTaGVsbCo+KHZhbHVlKTsKICAgICBpZiAoIXdy
YXBwZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAmd3JhcHBlci0+d2lu
ZG93KCktPndyYXBwZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwCmluZGV4IDljMTBiNDYxYmJjYzIwMjAzMmI2M2UyMTg2NGYwODY2MjlmNDI4YTYuLjFm
ZGZkMmZiNzNmNDJmNjg5ZDRlOWNjNjY3NDI1ODc0Mjc5YjU0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQg
SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUg
dmFsdWUsIFJlZlB0cjxUb3VjCiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEpTQzo6SlNGdW5jdGlvbiomIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KHZhbHVl
KTsKKyAgICByZXN1bHQgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1
ZSk7CiB9CiAKIGJvb2wgSlNEaWN0aW9uYXJ5OjpnZXRXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBTdHJpbmcmIHJlc3VsdCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAppbmRleCA2OWM0Y2E4Mjg5
MTljOWIxM2FiYWIxYzgzYjZiYWEwMmE5ZDZiYzJhLi5iNjM0YjU3NGMwMDg0MjM2OTY0ODRjN2Jm
ODRmMTZiM2U3YTJjNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1
bWVudEN1c3RvbS5oCkBAIC0zMSwxMSArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUFMV0FZU19JTkxJTkUgSlNEb2N1bWVudCoganNEb2N1bWVudENhc3QoSlNDOjpKU1ZhbHVlIHZh
bHVlKQorQUxXQVlTX0lOTElORSBKU0RvY3VtZW50KiBqc0RvY3VtZW50Q2FzdChKU0M6OkpTQ2Vs
bCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpT
RG9jdW1lbnRXcmFwcGVyVHlwZSA/IEpTQzo6anNDYXN0PEpTRG9jdW1lbnQqPih2YWx1ZSkgOiBu
dWxscHRyOworICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID09IEpTRG9jdW1lbnRXcmFwcGVyVHlw
ZSA/IEpTQzo6anNDYXN0PEpTRG9jdW1lbnQqPih2YWx1ZSkgOiBudWxscHRyOwogfQogCiBKU0M6
OkpTT2JqZWN0KiBjYWNoZWREb2N1bWVudFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUds
b2JhbE9iamVjdCYsIERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEeW5hbWljRG93bmNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOThlYzRiZWVmMmRjODcyMDU0ZjEyNmY3
ODU4MzgxYjJhZWEwZWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEeW5hbWljRG93bmNhc3QuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9KU0NlbGxJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSlNOb2RlOworSlNOb2RlKiBqc05vZGVDYXN0KEpTQzo6SlNDZWxsKik7CitjbGFzcyBKU0Vs
ZW1lbnQ7CitKU0VsZW1lbnQqIGpzRWxlbWVudENhc3QoSlNDOjpKU0NlbGwqKTsKK2NsYXNzIEpT
RG9jdW1lbnQ7CitKU0RvY3VtZW50KiBqc0RvY3VtZW50Q2FzdChKU0M6OkpTQ2VsbCopOworY2xh
c3MgSlNFdmVudDsKK0pTRXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNDZWxsKik7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFRvPgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdCB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUbyBjYXN0KEZyb20q
IGZyb20pCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpqc0R5bmFtaWNDYXN0PFRvPihmcm9t
KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0PEpT
Tm9kZSo+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIEpTTm9kZSogY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpz
Tm9kZUNhc3QoZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEpTRHluYW1p
Y0Nhc3RUcmFpdDxKU0VsZW1lbnQqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0VsZW1lbnQqIGNhc3QoRnJvbSogZnJvbSkKKyAgICB7
CisgICAgICAgIHJldHVybiBqc0VsZW1lbnRDYXN0KGZyb20pOworICAgIH0KK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNEb2N1bWVudCo+IHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTRG9jdW1lbnQq
IGNhc3QoRnJvbSogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc0RvY3VtZW50Q2FzdChm
cm9tKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0
PEpTRXZlbnQqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU0V2ZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAgeworICAgICAgICByZXR1
cm4ganNFdmVudENhc3QoZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVG8s
IHR5cGVuYW1lIEZyb20+CitBTFdBWVNfSU5MSU5FIFRvIGpzRHluYW1pY0Rvd25jYXN0KEZyb20q
IGZyb20pCit7CisgICAgcmV0dXJuIEpTRHluYW1pY0Nhc3RUcmFpdDxUbz46OmNhc3QoZnJvbSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRvPgorQUxXQVlTX0lOTElORSBUbyBqc0R5bmFtaWNE
b3duY2FzdChKU0M6OkpTVmFsdWUgZnJvbSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIWZyb20uaXND
ZWxsKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4ganNEeW5hbWljRG93
bmNhc3Q8VG8+KGZyb20uYXNDZWxsKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oCmluZGV4IDJhMWJhMDE4MDMyNGQwODRiNGFjNWI2YjJj
OTU3ZWRjMzlhNzk2ZjcuLmRmZTIzYmNiNzk1NjBmZWJjNTEwYjdmYTNlZjA0NGFlMmFhMjVjMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5oCkBAIC0z
MSwxMSArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUgSlNF
bGVtZW50KiBqc0VsZW1lbnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUg
SlNFbGVtZW50KiBqc0VsZW1lbnRDYXN0KEpTQzo6SlNDZWxsKiB2YWx1ZSkKIHsKLSAgICBpZiAo
VU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPj0gSlNFbGVtZW50VHlwZSA/IEpTQzo6anND
YXN0PEpTRWxlbWVudCo+KHZhbHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBl
KCkgPj0gSlNFbGVtZW50VHlwZSA/IEpTQzo6anNDYXN0PEpTRWxlbWVudCo+KHZhbHVlKSA6IG51
bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uaAppbmRleCA1NTk5ZjRjMWYxOTczZDRhM2YzNWVjODdlMjEy
MDBmMDE5MWNjMDlhLi4wNjgzYTZhZTE3ODY5MGEwNjhhOWY0ZDk2NmRiNjI5NDRiMzhmYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0yOSwxMSAr
MjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUgSlNFdmVudCog
anNFdmVudENhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBKU0V2ZW50KiBq
c0V2ZW50Q2FzdChKU0M6OkpTQ2VsbCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1
ZS5pc0NlbGwoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5h
c0NlbGwoKS0+dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZh
bHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPT0gSlNFdmVudFR5cGUg
PyBKU0M6OmpzQ2FzdDxKU0V2ZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggZTA2ZjgxNmFiNGZlY2IwYTk5ZDhhNWYwNjRhYzMxMThjYjVkODBjMS4u
NWNmNGI5YjdlOTk2YjExMmE3Y2E0MzMxN2YyMGJjMDA4YWNhMjA2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcg
QEAgdm9pZCBzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNPYmplY3QmIHdyYXAKIHsKICAgICBBU1NFUlQod3JhcHBlci5nbG9iYWxP
YmplY3QoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3VtZW50KCk7Ci0gICAg
YXV0byogZG9jdW1lbnRXcmFwcGVyID0ganNEb2N1bWVudENhc3QodG9KUygmc3RhdGUsIEpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4od3JhcHBlci5nbG9iYWxPYmplY3QoKSksIGRvY3Vt
ZW50KSk7CisgICAgYXV0byogZG9jdW1lbnRXcmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNE
b2N1bWVudCo+KHRvSlMoJnN0YXRlLCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHdy
YXBwZXIuZ2xvYmFsT2JqZWN0KCkpLCBkb2N1bWVudCkpOwogICAgIEFTU0VSVChkb2N1bWVudFdy
YXBwZXIpOwogICAgIGRvY3VtZW50LnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBjcmVhdGVFdmVudExpc3RlbmVyRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKHN0YXRlLCB2YWx1
ZSwgKmRvY3VtZW50V3JhcHBlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCBmNDBkZjYxMjRlYmFhM2Q1YjM2OTE4
MjdjODE4YTNmMGNhZDk3ZmU3Li4zNzIyMjU4M2ZlZTZiZmZkM2VlMmJhNWIzNjMyYmVlMDA3YjAx
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6
dG9XcmFwcGVkKEpTVmFsdWUgdmFsdWUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0
V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgaWYg
KGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHRoaXNWYWx1ZSkp
CisgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRXZlbnRUYXJnZXQq
Pih0aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFy
Z2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQpOwogICAgIGlmIChhdXRvKiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRv
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFt
VHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcAppbmRleCBhMGVkOTIxYTFjZGE3NDFmYTg0YmUwMTk0YjhjZTMzOWE3
Mzc0NzhiLi5jMzBiNmZjOWYwMTYyNmNjNjU5NWI1YTljN2ZmY2RjOWFiODBkZTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1
c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFj
azo6Z2V0U2V0dGluZ3MoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNW
YWx1ZSgpOwotICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKKyAgICBKU01lZGlhU3RyZWFtVHJh
Y2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIk1lZGlh
U3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBKU0M6
OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBz
dGF0ZSkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAgIEpTTWVkaWFTdHJlYW1U
cmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhp
c1ZhbHVlKTsKKyAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlz
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3Mi
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKaW5kZXggMWU4
YThjMTE5MzZiNmY1NWZhN2NlZGRhMjg5ZjU2NWJhMjY2MmQ2Mi4uZDVkNmQwM2NiYmNkMWU0NGMx
Yjg3YmMyNTc2NTA3MGYwNjYzNGQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmgKQEAgLTc4LDExICs3OCw5IEBAIGlubGluZSB2b2lkKiByb290KE5vZGUmIG5v
ZGUpCiAgICAgcmV0dXJuIHJvb3QoJm5vZGUpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpTTm9kZSog
anNOb2RlQ2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTTm9kZSoganNO
b2RlQ2FzdChKU0M6OkpTQ2VsbCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5p
c0NlbGwoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0Nl
bGwoKS0+dHlwZSgpID49IEpTTm9kZVR5cGUgPyBKU0M6OmpzQ2FzdDxKU05vZGUqPih2YWx1ZSkg
OiBudWxscHRyOworICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID49IEpTTm9kZVR5cGUgPyBKU0M6
OmpzQ2FzdDxKU05vZGUqPih2YWx1ZSkgOiBudWxscHRyOwogfQogCiBBTFdBWVNfSU5MSU5FIEpT
Qzo6SlNWYWx1ZSBKU05vZGU6Om5vZGVUeXBlKEpTQzo6RXhlY1N0YXRlJikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwCmluZGV4IGZhYzIwYjI3MjZkOWViN2ZjOWI5ZWViNTQwOTYzN2ZmZDkxY2NlNDAuLjgz
NjViYTA2OTUxZjliYzI3YTRhYWZjYzI5MWVkNzZkYzVkNzQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcApA
QCAtOTksNyArOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNIVE1MRWxlbWVu
dCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU0hUTUxFbGVtZW50KiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNIVE1MRWxlbWVudCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU09iamVjdCogc2NyaXB0T2JqZWN0ID0g
cGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVD
b25zdHJ1Y3RvcnMuY3BwCmluZGV4IGFmYWM5OWEwOGMxMzM3MzNhN2UxOTkzYmZjNGFkMzFiM2Ez
ODk5YTQuLjlmYTIwMGUwNDJjNjZhYWNhOTA4YmYwOTBhOWMxZWE4NDM0NWU5NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29u
c3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
cihFeGVjU3RhdGUmIGUKICAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0
cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkp
OworICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVh
ZGFibGVTdHJlYW0qPihleGVjLmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXN0cmVhbSkKICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDAsICJzdHJlYW0i
LCAiUmVhZGFibGVTdHJlYW1SZWFkZXIiLCBudWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNv
dXJjZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtU291cmNlQ3VzdG9tLmNwcAppbmRleCBhNTNmNjM1YzBhZWY3ZTljMzQ3YmY4OWJhMWU3ZjRk
OTJlNjdiMjAxLi40YmI4OGU3ZjIyZTNmNWExM2ZjZGI3MTFhMTk5ZDA4MWFmNzIxMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNl
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtU291cmNlQ3VzdG9tLmNwcApAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBKU1JlYWRhYmxlU3Ry
ZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVTdHJlYW1Tb3VyY2Uq
PihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNl
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNW
YWx1ZSgpKTsKICAgICBBU1NFUlQoc291cmNlKTsKIAogICAgIEFTU0VSVChzdGF0ZS5hcmd1bWVu
dENvdW50KCkpOwotICAgIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJv
bGxlciA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKj4o
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlciogY29udHJvbGxlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBB
U1NFUlQoY29udHJvbGxlcik7CiAKICAgICBzb3VyY2UtPndyYXBwZWQoKS5zdGFydChSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKGNvbnRyb2xsZXIpLCBXVEZNb3ZlKHByb21pc2UpKTsK
QEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbShKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHIKIEpTVmFsdWUgSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBBU1NFUlQo
c3RhdGUuYXJndW1lbnRDb3VudCgpKTsKLSAgICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBKU1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgQVNTRVJUKGNvbnRyb2xsZXIpOwogCiAgICAgbV9jb250cm9sbGVyLnNldChz
dGF0ZS52bSgpLCB0aGlzLCBjb250cm9sbGVyKTsKQEAgLTYwLDcgKzYwLDcgQEAgSlNWYWx1ZSBK
U1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydChFeGVjU3RhdGUmIHN0YXRlKQogCiBzdGF0aWMg
dm9pZCBwdWxsUmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291
cmNlID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1Zh
bHVlKCkpOworICAgIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAg
QVNTRVJUKHNvdXJjZSk7CiAKICAgICBzb3VyY2UtPndyYXBwZWQoKS5wdWxsKFdURk1vdmUocHJv
bWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGUxMjUwYjM1OGZlNTYzZjA0MTEzZDAzMzJmMGFkMTFj
OTkzZTVlZWMuLmE2MTc3MDk3YTkzMmZkMzVlZWNjN2YwNmY5NjY0Y2IwNjZiMTVkODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIK
ICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdFRhc2suaCIKICNpbmNsdWRlICJKU0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiSlNEeW5hbWljRG93bmNhc3QuaCIKICNp
bmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIEpTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUqIHRvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShKU1Zh
bHVlIHZhbHVlKQogICAgIGlmIChjbGFzc0luZm8gPT0gSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZTo6aW5mbygpKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUqPihhc09iamVjdCh2YWx1ZSkpOwogICAgIGlmIChjbGFzc0luZm8gPT0gSlNQcm94
eTo6aW5mbygpKQotICAgICAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlKj4oanNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQo
KSk7CisgICAgICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlKj4oanNDYXN0PEpTUHJveHkqPihhc09iamVjdCh2YWx1ZSkpLT50YXJnZXQoKSk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGRiN2NmODY1ZjA3N2Y2MzU0NGJiMGExNjg3MTU1
MTIxNWI1MDQxYWEuLjhhZjUzOTU1MTc2MTQ1M2RkNWZmNWI0ODlhYzhlY2Q3YWEwZDBhYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2
YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSoKICAgICAvLyBGSVhN
RTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgSlNNb2R1bGVSZWNvcmQuCiAgICAgLy8gT25j
ZSB0aGUgcmVmbGVjdGl2ZSBwYXJ0IG9mIHRoZSBtb2R1bGUgbG9hZGVyIGlzIHN1cHBvcnRlZCwg
d2Ugd2lsbCBoYW5kbGUgYXJiaXRyYXJ5IHZhbHVlcy4KICAgICAvLyBodHRwczovL3doYXR3Zy5n
aXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeS1wcm90b3R5cGUtcHJvdmlkZQotICAgIEpTQzo6SlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTTW9k
dWxlUmVjb3JkKj4obW9kdWxlUmVjb3JkVmFsdWUpOworICAgIEpTQzo6SlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNNb2R1bGVSZWNvcmQqPiht
b2R1bGVSZWNvcmRWYWx1ZSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDIyMzBlMWZiMTFkYmI3ZmRmNzJk
OGNlMjc5NmFiMGZmZWQ3MmRmYTEuLmYyNjQxNzNjNTFlMGI4MWFiMTYzZjk3NWVlYWY1NDFmYzky
MGQ3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgU2VyaWFsaXphdGlvblJldHVy
bkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAg
ICAgICBpZiAoIWl0ZXJhdG9yLT5uZXh0S2V5VmFsdWUobV9leGVjLCBrZXksIHZhbHVlKSkgewog
ICAgICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgp
OwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU01hcCo+KG9iamVj
dCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljRG93bmNhc3Q8SlNNYXAq
PihvYmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJv
cGVydHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uTWFwUHJvcGVydGllc1RhZyk7CkBAIC0x
NDE1LDcgKzE0MTUsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGlmICghaXRlcmF0b3ItPm5l
eHQobV9leGVjLCBrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldEl0ZXJhdG9yU3RhY2su
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gaW5w
dXRPYmplY3RTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5bmFt
aWNDYXN0PEpTU2V0Kj4ob2JqZWN0KSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChqc0R5
bmFtaWNEb3duY2FzdDxKU1NldCo+KG9iamVjdCkpOwogICAgICAgICAgICAgICAgICAgICBwcm9w
ZXJ0eVN0YWNrLmFwcGVuZChQcm9wZXJ0eU5hbWVBcnJheShtX2V4ZWMsIFByb3BlcnR5TmFtZU1v
ZGU6OlN0cmluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgbV9leGVjLCBwcm9wZXJ0eVN0YWNrLmxhc3Qo
KSwgRW51bWVyYXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICB3cml0ZShOb25TZXRQ
cm9wZXJ0aWVzVGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVk
Q2xvbmUuY3BwCmluZGV4IDRjYjg4YjJkZTUzYzhiMmIwZDAzN2UwMGI3ODIxYjZjYmY1MmNkMDIu
LmZkOGM2ZmY4ZTJhNjU4YWZmYjU5ZjM3MDYzMjk2MzZhOTNmYWEwM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcApAQCAtNTYsNyArNTYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVy
VmlldyhFeGVjU3RhdGUqIGV4ZWNTdGF0ZQogICAgIEFTU0VSVChleGVjU3RhdGUtPmFyZ3VtZW50
Q291bnQoKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlY1N0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKLSAgICBhdXRvKiBidWZmZXJWaWV3ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQXJy
YXlCdWZmZXJWaWV3Kj4odmFsdWUpOworICAgIGF1dG8qIGJ1ZmZlclZpZXcgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKICAgICBBU1NFUlQoYnVmZmVyVmll
dyk7CiAKICAgICBhdXRvKiBidWZmZXIgPSBidWZmZXJWaWV3LT5idWZmZXIoKTsKQEAgLTY2LDI1
ICs2NiwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cnVjdHVyZWRDbG9uZUFy
cmF5QnVmZmVyVmlldyhFeGVjU3RhdGUqIGV4ZWNTdGF0ZQogICAgIH0KICAgICBhdXRvIGJ1ZmZl
ckNsb25lID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOwogCi0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0ludDhBcnJheSo+
KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNJbnQ4QXJyYXkqPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNJbnQ4QXJyYXk6OmNyZWF0ZShleGVj
U3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChK
U0M6OmpzRHluYW1pY0Nhc3Q8SlNJbnQxNkFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFt
aWNEb3duY2FzdDxKU0ludDE2QXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNJbnQxNkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1
Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwg
YnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTSW50
MzJBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNJbnQzMkFycmF5
Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MzJBcnJheTo6
Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVy
Q2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7
Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQ4QXJyYXkqPih2YWx1ZSkpCisgICAg
aWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWludDhBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1VpbnQ4QXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZl
clZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1p
Y0Nhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93
bmNhc3Q8SlNVaW50OENsYW1wZWRBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1VpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJW
aWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWND
YXN0PEpTVWludDE2QXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpT
VWludDE2QXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNV
aW50MTZBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdU
Rk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXct
Pmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQzMkFycmF5Kj4o
dmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQzMkFycmF5Kj4odmFsdWUp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDMyQXJyYXk6OmNyZWF0ZShl
eGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwg
YnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlm
IChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNGbG9hdDMyQXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpz
RHluYW1pY0Rvd25jYXN0PEpTRmxvYXQzMkFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTRmxvYXQzMkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJW
aWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVP
ZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWND
YXN0PEpTRmxvYXQ2NEFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxK
U0Zsb2F0NjRBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0Zsb2F0NjRBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCks
IFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZp
ZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4o
dmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0RhdGFWaWV3Kj4odmFsdWUpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRGF0YVZpZXc6OmNyZWF0ZShleGVjU3Rh
dGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVy
Vmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDAzMzRiMDEzZjM1MjNiNjM0MDEzMTUyYTk3NTU1MWQz
OWEzOWI3ODkuLmY5MjgyZDA0NDY1MDZmZjhkMGYwNTcwYzk4M2Y3ODkzNDZjNDYzOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0yNDc0LDEzICsyNDc0LDcgQEAgc3ViIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0
CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
JGludGVyZmFjZS0+dHlwZS0+bmFtZTsKLQotICAgIHJldHVybiAianNOb2RlQ2FzdCIgaWYgJGlu
dGVyZmFjZU5hbWUgZXEgIk5vZGUiOwotICAgIHJldHVybiAianNFbGVtZW50Q2FzdCIgaWYgJGlu
dGVyZmFjZU5hbWUgZXEgIkVsZW1lbnQiOwotICAgIHJldHVybiAianNEb2N1bWVudENhc3QiIGlm
ICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudCI7Ci0gICAgcmV0dXJuICJqc0V2ZW50VGFyZ2V0
Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKLSAgICByZXR1cm4gImpz
RXZlbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnQiOwotICAgIHJldHVybiAianNE
eW5hbWljQ2FzdDxKUyRpbnRlcmZhY2VOYW1lKj4iOworICAgIHJldHVybiAianNEeW5hbWljRG93
bmNhc3Q8SlMkaW50ZXJmYWNlTmFtZSo+IjsKIH0KIAogc3ViIEdldEluZGV4ZWRHZXR0ZXJFeHBy
ZXNzaW9uCkBAIC0zMzQ5LDcgKzMzNDMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1l
fVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTtcbiIpOwogCkBAIC0zMzcxLDcgKzMzNjUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAppbmRl
eCBkZWFhZTYzYzEyODg0NjU3YzgwMDdiM2RmM2IwMTg4N2I2MmM0YTQxLi4yODdlOTliYjBhZDlj
MjliY2Y1MjdhOTcwNTY0MjE5MWRkOTFkYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiB7CiAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTSW50ZXJmYWNlTmFtZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIHNldEpTSW50ZXJm
YWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjEzLDcgKzIxMyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50ZXJmCiAK
IEludGVyZmFjZU5hbWUqIEpTSW50ZXJmYWNlTmFtZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZh
Y2VOYW1lKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNh
c3Q8SlNJbnRlcmZhY2VOYW1lKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKaW5kZXggOTAyN2VhZTI0MGE3YmU2YWRiMzAxMDVlZDk1YjM1NGRkZWE1OWViMC4u
NTI2YTZhN2M1NGFmMzFjMzY5YTI4OGU1MTY2NjRjZDJkOGRhNjM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0MywxMiArMTQzLDEyIEBAIHZvaWQgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RBY3RpdmVET01PYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9N
T2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogQmluZGluZ0Nh
bGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3QqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHJHZXR0ZXIoRXhlY1N0
YXRlJiwgSlNUZXN0QWN0aXZlRE9NT2JqZWN0JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBA
IC0xNzMsNyArMTczLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKIHsKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIGJvb2wgc2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhCiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yOTUsNyArMjk1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWMKIAog
VGVzdEFjdGl2ZURPTU9iamVjdCogSlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKaW5kZXggOTdiMjg5MTU2MDM3ZjliNWVlNzU1YmY5MzA5
NGY0NDIxNjdmYjBmYy4uOTZjNzE2MmYxNThmMTYyYmExZjgxMzViOWU1OGVjYzQ0NjkzM2YzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENFUmVhY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCkBAIC0xMzcsMTIgKzEzNywxMiBAQCB2b2lkIEpT
VGVzdENFUmVhY3Rpb25zOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9ucyogQmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9u
cz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RDRVJlYWN0aW9ucyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFj
dGlvbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNB
dHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0Q0VSZWFjdGlv
bnMmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdENFUmVhY3Rp
b25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25z
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVh
Y3Rpb25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVh
Y3Rpb25zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTM2Miw3ICszNjIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDRQogCiBUZXN0
Q0VSZWFjdGlvbnMqIEpTVGVzdENFUmVhY3Rpb25zOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJl
YWN0aW9ucyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdENFUmVhY3Rpb25zKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXIt
PndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAppbmRleCA3ZTg2ZDhlYzQ1NDcxMTRhZjEzZmQ0ZGMw
ODkzNTZlYzYxMjQ5M2VkLi5lZTMyZmNiMWM3Mjg1NjNkMjlhMzc1YzZhMTA5ZDFkNTA4ZWI2N2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCkBAIC0x
MjksMTIgKzEyOSwxMiBAQCB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
cj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3RG
b3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAg
IHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXImLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE1Nyw3ICsxNTcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBib29sIHNldEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDRQogCiBUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllciogSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6dG9XcmFw
cGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHZhbHVlKSkKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMDdhZGRkYjhkOTFkZmU3MGViOTZmZDQxMDVl
ZWZhNmZiZjJiM2VhYS4uYTJjZWM4MWE0ZmVhYmFhMmYzMjlmOTA2N2Y2OTFiOGIyODg2YjMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgc2V0SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RDbAogCiBUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IqIEpT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IGEzNTljNTQ4YWIw
OTViMTQzNjQ2Mjc0YTRjZWE1M2VjZjQ5OTNiOGYuLmYyYzg5ODA5NTE3ZmU2NTNmMGIyOWJlMzZm
ZmU5NzNmZDY5MzlmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTI1LDcgKzEyNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUo
c3RhdGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgp
KSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIHNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZQogICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKLSAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MDIsNyArMjAyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q3UKIAogVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApp
bmRleCAzZWU4OTRiNjM1ZWVhOGI4MmMxZjA3MTcwYTVmMzFmZDdjYmM3ZDQwLi5jMTQyOTdkMGU1
YjM1OGRjZjlhMDUyZmE4Y2IxMWRhZmY1MzJjNDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAKQEAgLTE2MSwxNCArMTYxLDE0IEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBib29sIHNldEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjcsNyArMjY3LDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Q3UKIAogVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2
YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFw
cGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCmluZGV4IGUzOTdi
ZWU3ODQ4ZWM2MWZiOTM1OThiY2NjYzhlNjM2YTQ3ZDQ1ODYuLjI0ODhkZjI2YmRiNTJiNTBjZDY3
ZDYwY2NhNTY1YjI2NTM2N2U0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgSlNPYmplY3QqIEpTVGVzdERPTUpJVDo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dERPTUpJVCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVj
U3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTExMzQs
NyArMTEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1CiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RET01KSVRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdERPTUpJ
VDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKQEAgLTExNDUsNyArMTE0NSw3IEBAIGJvb2wgc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvCiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjc4ZDQ1NjJiNzk0NDQwZGMyN2E4ODNiYzUyNzdmMzc5
YmU4MTA3OC4uNDNmZTU1MDZhZTRiMWNjNWFmZDg3YzU0MzA5MTkyNzQxMmZhNzEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIEpTT2Jq
ZWN0KiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRy
aWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjFHZXR0ZXIoRXhlY1N0YXRlJiwg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMjQ2
LDcgKzI0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAt
MjU3LDcgKzI1Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMWQ2MDBkMWMwNWRl
YjYwMTFiNzAyOTE1YWQ0NGY5NTAxYjM1ZjlmZS4uYmQ2ZDk5ZmI5YjdmMzFmYjNiY2E2NjZmNWRh
NDIzYWNjMmZlYWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNTksMTQgKzE1
OSwxNCBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RFdmVudFRhcmdldCogQmluZGluZ0NhbGxlcjxKU1Rlc3RFdmVudFRhcmdldD46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFdmVudFRhcmdldCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNzcsNyArMTc3LDcgQEAg
Ym9vbCBzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRU
YXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjcyLDcgKzI3Miw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEV2CiAKIFRlc3RFdmVudFRhcmdldCogSlNUZXN0RXZlbnRUYXJn
ZXQ6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odmFsdWUpKQorICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA3YjljZjkxOWU0MTU5NTg5MDcwMTE4
NWFkNzM3MThmYWUxYjFhNTVhLi5iM2YyOGU4YmViZTAzMzQxZTdmNThlZmRiYmU2YWFlMjhmYTRh
MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgSlNU
ZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RFeGNlcHRpb24qIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXhjZXB0aW9uPjo6Y2Fz
dEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFeGNlcHRp
b24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEV4Y2VwdGlv
biYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0RXhjZXB0aW9u
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFeGNlcHRpb25Q
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvblBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV4Y2VwdGlvbjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBib29sIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRQogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM1LDcgKzIz
NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV4CiAKIFRlc3RFeGNlcHRpb24qIEpTVGVzdEV4
Y2VwdGlvbjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4odmFsdWUpKQorICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXhjZXB0aW9uKj4odmFs
dWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA3
N2Y5ZDM1ZjdmOGEzYjhlOGU5NTc4Y2U4OGM2MTBkMmY1NTYzYWNmLi42ZmU3YmRlNzIyZGNjY2U0
NmVjMjM0MTJhODI3Yjc4OWEyZmYzZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1YK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgp
LCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBz
ZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGgKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTgsNyArMTk4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2UKIAogVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUqIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZChK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKj4odmFs
dWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggZTNhNDU3ZjQzNTEyMTBm
NzljYTk1NDRmZDNiMWZhNDc0N2JjYmYyYy4uZWI3MTU5NzRiY2I1MjAyM2ZjYzNiMzUwYjMyNGNl
MzJiZDc2MzdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTE3NywxMiArMTc3
LDEyIEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxs
KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIEJpbmRpbmdDYWxsZXI8
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xv
YmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdsb2JhbE9iamVjdCogQmluZGlu
Z0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4o
c3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RH
bG9iYWxPYmplY3QqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYs
IEpTVGVzdEdsb2JhbE9iamVjdCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMjU5LDcg
KzI1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiB7CiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEdsb2JhbE9iamVj
dFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTI0LDcgKzUyNCw3IEBAIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEdsCiAKIFRlc3RHbG9iYWxPYmplY3QqIEpTVGVzdEdsb2JhbE9iamVj
dDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odmFsdWUpKQorICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odmFs
dWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMmZmOWMwMGM2MWY5MWU0ZDc3ZWQ4
MmU0NGNhNWYwOWI4ZDY3NTg1Yy4uYThmNjczOThiNjkwYjY4MGQ0MWQzZWU3MTk3MDg0MzVkYzBl
YmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTM5OSwxMiArMzk5LDEyIEBAIHZvaWQg
SlNUZXN0SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6
Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdEludGVyZmFjZSogQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SW50ZXJmYWNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKQEAgLTYzMSw3
ICs2MzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CkBAIC02NDIsNyArNjQyLDcgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwMjksNyArMTAyOSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEluCiAKIFRl
c3RJbnRlcmZhY2UqIEpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCmluZGV4IGZkM2UxMTdiZjE4ODlmYzU4YWI4NjM4
YTE4MjAzNjI3NGMwZWIzNTEuLjk1NzUyZGM4MzQ5M2NkZGIzNTNhZWEyMzMwMGQ0NmRkMTNiMTkw
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seUdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSYsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpKSk7CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1YKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2Nv
cmVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjAxLDcgKzIwMSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEluCiAK
IFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSogSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
Kj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJs
ZS5jcHAKaW5kZXggOWFmZmRjNGUyZGFlYzQwMjEwYWYxZWEzZjFhOGVjMTViNGJkZjRhZS4uODQ5
YmM3MmViMzc3NWRlMGI1MGQzZmVmNjJlMGVlYTY1MWNhMjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUu
Y3BwCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCB2b2lkIEpTVGVzdEl0ZXJhYmxlOjpkZXN0cm95KEpT
Qzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJdGVyYWJsZSogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZSo+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SXRlcmFi
bGUqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEl0ZXJh
YmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SXRlcmFibGVQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SXRlcmFibGVQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SXRlcmFibGU6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNDks
NyArMTQ5LDcgQEAgYm9vbCBzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNU
ZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRl
cmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0
SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0
ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgyLDcgKzI4Miw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEl0CiAKIFRlc3RJdGVyYWJsZSogSlNUZXN0SXRlcmFibGU6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SXRlcmFibGUqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggNWE0OGYzYzcyMjk4
ZDM2YjQ4ZmVhOTZjOTE3OTI1MWM2NDFjNmNhNy4uZGQ0ODk3NGZhYmMwOTJhMGY5YzM4NDQ3YWMy
ZDhhOTE5NGNlNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCkBAIC0xMzQsMTIgKzEzNCwxMiBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogQmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0Rm9yT3Bl
cmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xNzQsNyArMTc0
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlMKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdAogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggZDk1NDY0YWViMzA2OTllMWZh
NjZjOWExNGY5Y2NlZTlmNGIxYjA2NS4uNTg3YTllNDJkZDMwN2ZiMWZmZmJlYWY3NTk2ZjZiMmJm
OTBjY2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cApAQCAtMTI1LDE0ICsxMjUsMTQgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHN0YXRlLnRo
aXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIHNl
dEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RN
ZQogCiBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHZhbHVl
KSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDk0ZjI1NjVkYjY1NjQ0NTQxOTM0YWY1Y2MzYWEzODIyZjNkMDU5YjUu
Ljg3ODZmNDM3ZjI5YTI3OTdkZjk1Y2Q4Zjc4ODJiOGVjZmIwYTkzNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIHNldEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OCw3ICsy
NDgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYQogCiBUZXN0TmFtZWRDb25zdHJ1Y3Rvciog
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGY4
ZmRjMGM2MjhhMmRkY2MzMTAyZTk4YzEzMjliY2E5ZGQ5NjZjYWQuLjMzNzEwYjEzY2ZmYjYwZmQ0
NjdkN2EyNjAyMmE0MGU0NTRjYTQ2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTE2OCwxMiArMTY4LDEy
IEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2Rl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3ROb2RlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9kZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0Tm9kZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vZGUm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE5vZGVQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29sIHNldEpT
VGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCAxNWJlM2I2Y2M4YWI1MjkyOGIy
ZTQ4N2ExMjFkMzZkNGFmMTUyNzk0Li4zYjE2MTc3MTIyZTMzZWY0OTc2ZTE1YmI3NGJiYTlkYTk4
NGY0MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC0xNDQsMTIg
KzE0NCwxMiBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIEJp
bmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhl
Y1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdE5vbmRldGVybWluaXN0aWMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oc3Rh
dGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwg
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzQw
LDcgKzM0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1CiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAt
MzUxLDcgKzM1MSw3IEBAIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5v
CiAKIFRlc3ROb25kZXRlcm1pbmlzdGljKiBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjp0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDEyOWEyNGE3NmNiMTZkNGYwMWNlZDZjM2MxOTA2MzE1YjU4
YzJiODkuLjk2YTgzMzNkZGRlMTI4MzE5NDYyYTk0ZDJhNzg2NTVjMmI2ZTQwOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0xODA3LDEyICsxODA3LDEyIEBAIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIHVuCiAKIHRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0
Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0T2JqKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS50aGlzVmFs
dWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE9iaio+KHN0YXRlLnRo
aXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5
TG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0T2JqJiwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSk7CkBAIC0zMjk5LDcgKzMyOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiB7CiAg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKQEAgLTMzMTAsNyArMzMxMCw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkCiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MzUzLDcgKzgzNTMsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RPYgogCiBUZXN0T2JqKiBKU1Rlc3RPYmo6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE9iaio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVk
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNjY5MGQyY2IxZGQ0MGUxZTIyYmE1ZjkwOTVhNjg1ZjI1
MTc4NTYyZS4uMWY2YjRiMmQ5NjBhZmNhOTg0OWUxZjM3OGNmODc1YTNiZGM1NDZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMjI1LDcgKzIy
NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgc2V0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92CiAKIFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4odmFsdWUpKQorICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKaW5kZXggM2QyZDNjMDJkZjg4Njdi
YzA5OGZjZmVlMjI4YzhmOGU3ZWZhNDU0Ny4uNDhiMDZmMDMzZDIwMmNmM2E5MjU3NDQ3Y2JhZGMx
NDk0ZGYxNmI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuCiAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjUwLDcgKzI1MCw3
IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92CiAKIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlKj4o
dmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSo+KHZhbHVlKSkKICAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggMWRiNjdmNDdhOWUxNjM1MzgyYzdhNDM0
ZjllNDc0ZGNhOWIxOTM1NS4uOTBiNmU5MmE3YzIzNGJlMGJlOTllM2IyNjg2YWY4NWZmYzE5N2M3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTU4LDE0ICsxNTgs
MTQgQEAgYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGEKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucyogQmluZGluZ0NhbGxlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6
Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAg
cmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihzdGF0ZS50
aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0
T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgYm9vbCBzZXRK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzUsNyAr
Mjc1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3YKIAogVGVzdE92ZXJyaWRlQnVpbHRpbnMq
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emF0aW9uLmNwcAppbmRleCAwY2RhNTA2ZTdmN2I4N2YzYTQ2YWZmZDcwOTRiMzIzNmUxZGM2OWUz
Li5iYzIwNTAwMmMyZjdiZWVhOWU4YjE3ODU4YTJjYTQ2ZGY4M2EzZTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6YXRpb24uY3BwCkBAIC0xNDAsMTIgKzE0MCwxMiBAQCB2b2lkIEpTVGVzdFNlcmlh
bGl6YXRpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdFNlcmlhbGl6YXRpb24qIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46
OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQog
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb24qPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dFNlcmlhbGl6YXRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24qIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2Vy
aWFsaXphdGlvbj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oc3RhdGUudGhpc1ZhbHVl
KCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2Vy
aWFsaXphdGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdFNl
cmlhbGl6YXRpb24mLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTIzMiw3ICsyMzIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVz
dFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
U2VyaWFsaXphdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0U2VyaWFsaXphdGlvbjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIHNldEpT
VGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXphdGlv
blByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXph
dGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RTZQogCiBUZXN0U2VyaWFsaXphdGlvbiogSlNUZXN0U2VyaWFsaXph
dGlvbjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbio+KHZhbHVlKSkKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb24q
Pih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAzY2NiODZmZTU5OTc2YmJkZGZmMzBhYjI2N2MyMjZh
NjNjMTZhZWI2Li43MDZmMjQ0ZmYzNTFkZDJjMGIyZGYxMzE1ZGVhMDNkMDIzZTI4NTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVj
U3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWYWx1ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTIyOSw3ICsyMjksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBA
IC0yNDAsNyArMjQwLDcgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGUKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTM1NSw3ICszNTUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RT
ZQogCiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA4OWFkMzJmNjMxNmQ4MDUzNDU2ZjYxMTY2
Y2FjOTg4NDI2Yjg2OWYyLi43ZDZiMmMwZmViNTljMDhlNzNiOTcwZDc0YWU4N2IwMGIzOTlmMzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTIxNSwxMiArMjE1LDEyIEBAIHZvaWQgSlNUZXN0
VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdFR5cGVkZWZzKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdEZvckF0
dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RU
eXBlZGVmcyogQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46OmNhc3RGb3JPcGVyYXRpb24o
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYsIEpTVGVzdFR5cGVkZWZzJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0zNDEsNyAr
MzQxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RU
eXBlZGVmczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKQEAgLTM1Miw3ICszNTIsNyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbgogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKLSAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04
MDYsNyArODA2LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHkKIAogVGVzdFR5cGVkZWZzKiBK
U1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCisg
ICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KaW5kZXggYzlkYWQyNzg2ZmM4ZjFhYTRkYzNiNzkxMDc1ZDc3ZjAzNWI1ZjQ3Ny4uMmU1
YjE1MjVhYTYwZWExNmIwMzExNjUyNGMzZTc0ODMzMTE5ZTVjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQpAQCAtMzk5LDcgKzM5OSw3IEBAIC0g
KHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBKU09iamVjdCogb2JqZWN0ID0gSlND
Ojpqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oW3NlbGYgX2ltcF0pOworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU09iamVjdCo+KFtzZWxmIF9pbXBdKTsKICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
cHV0KG9iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBTdHJpbmcoa2V5
KSksIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKGV4ZWMsICZ2YWx1ZSwgT2JqY09iamVjdFR5cGUs
IFtzZWxmIF9yb290T2JqZWN0XSksIHNsb3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHAKaW5kZXggMDk5YWZmMDRjMjkzMDkzYTE1YmY2Mzk1NTBmMTU1MTZiNDNkYzRh
ZC4uZDMwYTU4NWJiMzM1NGVjOGU0MmQ0ZThmYWUxOGZkZWM1MzU1OWQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcApAQCAtNjUsNyArNjUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8UnVu
dGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09i
amVjdCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+Z2V0TGVuZ3RoKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCmluZGV4IDU5NjE5ZmIy
NDNlODk5MjljYTBmMDllNTgzNzgxY2QwZDY5NTJlYmQuLjMyY2MwYWI1ZDcxYjk2OTU1YTkwYTg3
M2M1NGFkYmE4ZDQxZDdhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX21ldGhvZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcApAQCAtNTksNyArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGlt
ZU1ldGhvZCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBSdW50aW1lTWV0aG9k
KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8UnVudGltZU1ldGhvZCo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPm1fbWV0aG9kLT5udW1QYXJhbWV0ZXJzKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDM0OTUyZTUxMmQ1Nzlj
NDFlNmU1NWJjNTk1NmI2YjYyZjdiOWFiMzAuLjVjMTAyOTE0ZDVhZTM5Y2E3OWI4NmYyY2Y1M2Rh
YzVkMmRkMGQ5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMzg4OSw3ICszODg5LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QmIGcKICAgICBhdXRvIG1l
ZGlhSlNXcmFwcGVyID0gdG9KUygmZXhlYywgJmdsb2JhbE9iamVjdCwgbWVkaWEpOwogICAgIAog
ICAgIC8vIFJldHJpZXZlIHRoZSBjb250cm9sbGVyIHRocm91Z2ggdGhlIEpTIG9iamVjdCBncmFw
aAotICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFt
aWNDYXN0PEpTQzo6SlNPYmplY3QqPihtZWRpYUpTV3JhcHBlcik7CisgICAgSlNDOjpKU09iamVj
dCogbWVkaWFKU1dyYXBwZXJPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0
Kj4obWVkaWFKU1dyYXBwZXIpOwogICAgIGlmICghbWVkaWFKU1dyYXBwZXJPYmplY3QpCiAgICAg
ICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogICAgIApAQCAtMzg5Nyw3ICszODk3LDcgQEAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBjb250cm9sbGVySlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNET01HbG9iYWxPYmplY3QmIGcKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbHNIb3N0SlNXcmFw
cGVyID0gbWVkaWFKU1dyYXBwZXJPYmplY3QtPmdldCgmZXhlYywgY29udHJvbHNIb3N0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OkpTVmFsdWUoKSk7CiAKLSAgICBKU0M6
OkpTT2JqZWN0KiBjb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nh
c3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xzSG9zdEpTV3JhcHBlcik7CisgICAgSlNDOjpKU09i
amVjdCogY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlND
OjpKU09iamVjdCo+KGNvbnRyb2xzSG9zdEpTV3JhcHBlcik7CiAgICAgaWYgKCFjb250cm9sc0hv
c3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwogCkBAIC0z
OTQ1LDcgKzM5NDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250
YWluZXIoKQogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CiAKICAgICBKU0M6OkpTVmFsdWUgY29udHJvbGxlclZhbHVlID0gY29udHJvbGxlckpT
VmFsdWUoKmV4ZWMsICpnbG9iYWxPYmplY3QsICp0aGlzKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBj
b250cm9sbGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihjb250
cm9sbGVyVmFsdWUpOworICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKICAgICBpZiAo
IWNvbnRyb2xsZXJPYmplY3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzk1Niw3ICszOTU2LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICAv
LyBSZXR1cm4gdmFsdWU6CiAgICAgLy8gICAgIE5vbmUKICAgICBKU0M6OkpTVmFsdWUgbWV0aG9k
VmFsdWUgPSBjb250cm9sbGVyT2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJ1cGRhdGVDYXB0aW9uQ29udGFpbmVyIikpOwotICAgIEpTQzo6SlNPYmpl
Y3QqIG1ldGhvZE9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0
aG9kVmFsdWUpOworICAgIEpTQzo6SlNPYmplY3QqIG1ldGhvZE9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTQzo6SlNPYmplY3QqPihtZXRob2RWYWx1ZSk7CiAgICAgaWYgKCFtZXRob2RPYmpl
Y3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY0OSw3ICs2NjQ5LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAK
ICAgICBKU0M6OkpTVmFsdWUgY29udHJvbGxlclZhbHVlID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJnTGlzdCk7CiAgICAgc2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0
ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sbGVyVmFsdWUpOwor
ICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xsZXJPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKICAgICBpZiAoIWNvbnRyb2xsZXJPYmpl
Y3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY2Miw3ICs2NjYyLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAK
ICAgICBtZWRpYUpTV3JhcHBlck9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIGNvbnRyb2xz
SG9zdCwgbWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXIsIEpTQzo6RG9udERlbGV0ZSB8IEpTQzo6
RG9udEVudW0gfCBKU0M6OlJlYWRPbmx5KTsKIAotICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhQ29u
dHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmpl
Y3QqPihtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlcik7CisgICAgSlNDOjpKU09iamVjdCogbWVk
aWFDb250cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpT
T2JqZWN0Kj4obWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXIpOwogICAgIGlmICghbWVkaWFDb250
cm9sc0hvc3RKU1dyYXBwZXJPYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDQwZDM0ZGM0
MmE2YzFlNTI1NTFkNWI3OTE0MGEzNzliYjRmMWI1NmQuLjMxMDI4ODk5NTBlMGY4MmZjZjRhM2Ix
MWI0NzdkMDI0ZTU0NTljMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRXYKICAgICAgICAgaGFuZGxlciA9IHNjcmlwdExpc3RlbmVyLT5qc0Z1bmN0aW9uKCZub2Rl
LT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKGhhbmRsZXIgJiYgc3RhdGUpIHsKICAgICAgICAg
ICAgIGJvZHkgPSBoYW5kbGVyLT50b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5j
dGlvbio+KGhhbmRsZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTQzo6SlNGdW5jdGlvbio+KGhhbmRsZXIpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gZXhlY3V0YWJsZS0+Zmly
c3RMaW5lKCkgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDE2
ZmJhNjgyMmU0NzZjMzMxNzQxMDI3NjBlMTgwNTY4MmVjNWQ5MWMuLjFmOGVkZjMzNmJjNjc1MjQy
NGQwNDU3ZDYzOTJkOGEyZTUzNDE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZShXZWJGcmFtZSYgZnJhbQogICAgIGlm
ICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGVsZW1lbnRX
cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KHRvSlMoZWxl
bWVudCkpOworICAgIGF1dG8gZWxlbWVudFdyYXBwZXIgPSBXZWJDb3JlOjpqc0R5bmFtaWNEb3du
Y2FzdDxXZWJDb3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKTsKICAgICBpZiAoIWVsZW1l
bnRXcmFwcGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUzMzljZWMwZDgwODU5MjYxNTZlODMy
ODU0NzNlNGUyNjU5OGQyNjIuLmU3NDVhNWEwNmQwNzJiODYzMjFmNGI3OTc0MWViODBiYjk2YWI3
ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0xMC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRyb2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93
bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRBdWRpb1Jlc3VsdENh
bGxiYWNrKToKKwogMjAxNi0xMC0yOCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtXZWJJRExdIFVwZGF0ZSBwYXJzZXIgYW5kIGNvZGUgZ2VuZXJhdG9ycyB0byBvbmx5
IGFjY2VzcyB0eXBlIGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHR5cGUgcHJvcGVydHkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZWYyZDE1ODE2NzZiYWVhZjRlMGE3OWVkZjk3
ZTEwZDEzN2ZjMzg4Zi4uOWJkOGI0ZjkwYzdmZmZmZjQ0MDJhNGNiMjgxYmE5NGM2YzdlMWE5ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRBdWRpb1Jlc3VsdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdAogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiAKICAgICAvLyBGSVhNRSAoMTIzMDU4KTogVXNlIGEgSlNDIEFQSSB0byBnZXQg
YnVmZmVyIGNvbnRlbnRzIG9uY2Ugc3VjaCBpcyBleHBvc2VkLgotICAgIEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXcqIGpzQnVmZmVyVmlldyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTQXJyYXlC
dWZmZXJWaWV3Kj4odG9KUyh0b0pTKGNvbnRleHQpLCBhcmd1bWVudHNbMF0pKTsKKyAgICBKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Kj4odG9KUyh0b0pTKGNvbnRleHQpLCBhcmd1bWVudHNbMF0pKTsK
ICAgICBBU1NFUlQoanNCdWZmZXJWaWV3KTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZp
ZXc+IGJ1ZmZlclZpZXcgPSBqc0J1ZmZlclZpZXctPmltcGwoKTsKICAgICBjb25zdCBjaGFyKiBi
dWZmZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyVmlldy0+YmFzZUFkZHJlc3Mo
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293227</attachid>
            <date>2016-10-28 15:06:18 -0700</date>
            <delta_ts>2016-10-28 16:33:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164137-20161028150227.patch</filename>
            <type>text/plain</type>
            <size>124589</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y3YzBjMDZhMzk0NmQy
ODY1YzViNTBmNzkxYjQ5MTNhNTFlZjg0Yy4uZThkYTNkNWNhODE1Mzc1YzFhMmE2N2E0MjY5MzA4
NWYyN2YxOTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNSBAQAorMjAxNi0xMC0yOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRl
bmRlZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBl
cywgV2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisg
ICAgICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRU
eXBlLCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2Js
ZW0gaXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvb3NlCisg
ICAgICAgIEpTQzo6anNEeW5hbWljQ2FzdCBieSBhY2NpZGVudC4gU2VsZWN0aW5nIHRoZSBhcHBy
b3ByaWF0ZSBmdW5jdGlvbgorICAgICAgICByZXF1aXJlcyBzcGVjaWFsIGNhcmUgaW4gdGhlIElE
TCBjb2RlIGdlbmVyYXRvciB3aGVuIHdlIHdvdWxkIGxpa2UKKyAgICAgICAgdG8gdXNlIGZhc3Rl
ciBjYXN0aW5nIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBu
ZXcgY2FzdGluZyBmdW5jdGlvbiwgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QuCisgICAgICAg
IEl0IGlzIGEgdGhpbiB3cmFwcGVyIHRvIHRoZSBKU0M6OmpzRHluYW1pY0Nhc3QuIEJ1dCBpdCBz
ZWxlY3RzIHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhl
IHdheSBzcGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJ
ZiB3ZSBmb3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpq
c0R5YW5taWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJv
cnMsIGJ1dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVGhpcyBi
dWcgaXMgaGFyZCB0byBmaWd1cmUgb3V0LiBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIGFkZCBh
IG5ldyBmdW5jdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBs
ZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4
Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAg
IChXZWJDb3JlOjpjYXN0VGhpc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvQXJyYXlCdWZm
ZXJWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpJdGVyYXRvclRyYWl0cz46Om5leHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dTaGVs
bDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRG9j
dW1lbnRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0R5bmFtaWNEb3duY2FzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRHluYW1pY0Nhc3RUcmFpdDo6Y2FzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc0R5bmFtaWNEb3duY2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNFbGVtZW50Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpqc0VsZW1lbnRDYXN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpq
c0V2ZW50Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlh
U3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRy
YWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6
OmdldENhcGFiaWxpdGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjpqc05vZGVDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxl
bWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RK
U1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdGFydFJl
YWRhYmxlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OnB1bGxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9KU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9k
dWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFs
aXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldENhc3RpbmdI
ZWxwZXJGb3JUaGlzT2JqZWN0KToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNJbnRlcmZhY2VOYW1lOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6
Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VS
ZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdD
YWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RDRVJlYWN0aW9uczo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj46OmNhc3RGb3JPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9yQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0Rm9y
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50
VGFyZ2V0Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV2ZW50VGFy
Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6OnRv
V3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEV4Y2VwdGlv
bj46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXhjZXB0aW9uQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uOjp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0R2xvYmFsT2JqZWN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmU+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6dG9XcmFwcGVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RGb3JPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEl0ZXJhYmxlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2Fz
dEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0
aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRl
cm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPjo6Y2FzdEZvck9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9u
Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpT
VGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
U2VyaWFsaXphdGlvbjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvV3Jh
cHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+Ojpj
YXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0
VHlwZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmczo6dG9XcmFwcGVk
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgt
W1dlYlNjcmlwdE9iamVjdCBzZXRWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICogYnJpZGdlL3J1
bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6Omxlbmd0aEdldHRl
cik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbGxlckpTVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dS
b290KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5l
cik6CisKIDIwMTYtMTAtMjggIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NTUyBQYXJzZXJdIFN1cHBvcnQgaGFuZ2luZy1wdW5jdHVhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDIxODFhZmQ2YTIyNjk3ODE5M2RlZGU1ODUxZTcyNWRiOTRlOGFjYTUuLmY2ODMzNTM5ZWU1ODA5
NWRiODg1ZmMzYWMxYWM4MzU4YzY5NmIyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNi0xMC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbRE9NXSBJbnRyb2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZSk6CisKIDIwMTYt
MTAtMjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBDRk5ldHdvcmsgY29ubmVjdGlvbiBjYWNoZSBmYXN0IGxhbmUgZm9yIFdlYktpdDIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
YTRlZWMwOGQ4YjFiZWFlNjMwNTdhNmZhOTlmYzQyMDRmZTgwZTZmLi42YTRlYTczNjU1ZjkzYjg5
YzhkMDBlNTk4ZTgxZTQxYzFmZWMxMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjAxLDYgKzYyMDEsNyBAQAogCQlFMUZG
OEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZCMTgwREI1QkUw
MDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovOyB9OwogCQlFMzE1MEVBNjFE
QTcyMTkwMDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBKU05v
ZGVET01KSVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklU
SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKKwkJRTMx
ODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBGNjA3
QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVudEN1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVDQTE0RDFEQkMzQTNGMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYgLyog
RE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CiAJCUUzNUNBMTRFMURCQzNB
NDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwpAQCAtMTQwNDIsNiAr
MTQwNDMsNyBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1vZHVs
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJBRDE0
NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyogSlNE
eW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEeW5h
bWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQxREE2
RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlQ2xhc3NpY1Nj
cmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEU0MUQ3RjM1RUMw
MEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTYxNyw2ICsyMTYxOSw3IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAwMTlC
M0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLywKIAkJCQk0MTcwQTJFOTFEOEMwQ0MwMDAzMTg0
NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLywKIAkJCQk2NUUwRTk0MzExMzNDODlGMDBCNENCMTAg
LyogSlNET01XcmFwcGVyLmggKi8sCisJCQkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpT
RHluYW1pY0Rvd25jYXN0LmggKi8sCiAJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpT
RXJyb3JIYW5kbGVyLmNwcCAqLywKIAkJCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNF
cnJvckhhbmRsZXIuaCAqLywKIAkJCQlFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNFdmVu
dEN1c3RvbS5oICovLApAQCAtMjc2MDYsNiArMjc2MDksNyBAQAogCQkJCUY1NUIzRERFMTI1MUYx
MkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNkU2NTQz
MUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQzI4
OURGMUFBMEZFNUQwMDlBOUNFMyAvKiBVUkxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0aW9uRWxlbWVu
dFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4MTYwRDYxODc2NkExMzAwMjFFNzlEIC8qIFVz
ZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAKaW5kZXggMDU5MWVlYzgyZDE2
MjlmOTM5NGZlNWU2YTQxZGYxZjE3NTQ4OWE0OS4uZTUzZTdkZjBhZTVmMzE2NmJhMmFlYzUzMjY5
MzU3NTk1Y2ZjNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
cHBsZVBheVNlc3Npb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVlIEpT
QXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU0FwcGxlUGF5
U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0
aGlzVmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlz
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uIikpOwogCkBAIC03Miw3ICs3Miw3IEBAIEpTVmFsdWUgSlNBcHBs
ZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU0FwcGxlUGF5U2Vz
c2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlz
VmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljRG93
bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbiIpKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIEpTVmFsdWUgSlNBcHBs
ZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNlc3Np
b24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1Zh
bHVlKTsKKyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAppbmRleCA4YWQwOGE3ZjI5OGYyMTk4MzA5MzcxYzQwMzk1MGY5NzQ0MzFmMzQxLi5h
MDcxNjBkYzk1Y2FmZDQ1NWJjYjY4MDg2MzA4ODNmZGFkN2JiYTczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUs
IENhY2hlZFNjcmlwdCogY2FjaAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgYXV0
byogZXhjZXB0aW9uID0ganNEeW5hbWljQ2FzdDxKU0M6OkV4Y2VwdGlvbio+KGV4Y2VwdGlvblZh
bHVlKTsKKyAgICBhdXRvKiBleGNlcHRpb24gPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkV4Y2Vw
dGlvbio+KGV4Y2VwdGlvblZhbHVlKTsKICAgICBpZiAoIWV4Y2VwdGlvbikgewogICAgICAgICBl
eGNlcHRpb24gPSB2bS5sYXN0RXhjZXB0aW9uKCk7CiAgICAgICAgIGlmICghZXhjZXB0aW9uKQpA
QCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiBjCiAgICAgdm0uY2xlYXJM
YXN0RXhjZXB0aW9uKCk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
LSAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3cq
PihnbG9iYWxPYmplY3QpKSB7CisgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgaWYgKCF3
aW5kb3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCByZXBvcnRFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRTY3Jp
cHQqIGMKICAgICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9yZy9i
LzExNTA4Nz4gV2ViIEluc3BlY3RvcjogV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uIHNob3VsZCBu
b3QgZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCiAgICAgICAgIC8vIElm
IHRoaXMgaXMgYSBjdXN0b20gZXhjZXB0aW9uIG9iamVjdCwgY2FsbCB0b1N0cmluZyBvbiBpdCB0
byB0cnkgYW5kIGdldCBhIG5pY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZXhjZXB0
aW9uLgotICAgICAgICBpZiAoRXJyb3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVy
cm9ySW5zdGFuY2UqPihleGNlcHRpb25WYWx1ZSkpCisgICAgICAgIGlmIChFcnJvckluc3RhbmNl
KiBlcnJvciA9IGpzRHluYW1pY0Rvd25jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb25WYWx1
ZSkpCiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci0+c2FuaXRpemVkVG9TdHJpbmco
ZXhlYyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGV4Y2VwdGlv
blZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOWMzZGFiNThmMGE0ZWJiOTE1ZDI3YjRmZjFhNGVj
Y2Q5M2YwZWFhMi4uY2RjNGZjOWYwZjU2NzQzYmRjNzExNWNmYTIzMTU4YTRkOTcyZjk5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNEeW5hbWljRG93bmNh
c3QuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgi
CkBAIC01NjQsNyArNTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGluZSBK
U0M6OkpTVmFsdWUgd3JhcChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE8KIHRlbXBsYXRlPHR5
cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0NsYXNzJiBjYXN0VGhpc1ZhbHVlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSkKIHsKICAgICBhdXRvIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwot
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odGhpc1Zh
bHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0NsYXNzKj4o
dGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgcmV0dXJuICpjYXN0ZWRU
aGlzOwogfQpAQCAtNjg2LDcgKzY4Nyw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU0l0ZXJh
dG9yRW5kKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIAogaW5saW5lIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAg
IGF1dG8qIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmll
dyo+KHZhbHVlKTsKKyAgICBhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpK
U0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggOTdhYTRiOWRhNGE2ZDhhMzk2Njg2
YWU3YTlkYTFjYTkzNDZiOWVlNy4uYjU4MmRiMGY1NmQ3MjMyODk1MjBjZTY2YzBlMzBlZjE1Mjcx
MjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAt
MjQ3LDcgKzI0Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUl0
ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpCiAgICAgSlNDOjpWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8
SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAgIGF1
dG8gaXRlcmF0b3IgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlciwg
SXRlcmF0b3JUcmFpdHM+Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9y
KQogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVy
YXRvciBvYmplY3QiKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuY3BwCmluZGV4IGYxNTRjMmE2NDEzZWU4M2M0Zjk1YWM2Yjc2NWNiMzRjMjRj
ZDI3NzUuLjdhYzg1ZWM0N2QzMWZkNTI5MDVkZjVkYmE3YThiMDQ1YWJlNDQyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgRE9NV2luZG93JiBKU0RPTVdpbmRvd1NoZWxsOjp3cmFwcGVkKCkgY29uc3QK
IAogRE9NV2luZG93KiBKU0RPTVdpbmRvd1NoZWxsOjp0b1dyYXBwZWQoSlNPYmplY3QqIHZhbHVl
KQogewotICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93U2hlbGwq
Pih2YWx1ZSk7CisgICAgYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9NV2lu
ZG93U2hlbGwqPih2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gJndyYXBwZXItPndpbmRvdygpLT53cmFwcGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCA5YzEwYjQ2MWJiY2My
MDIwMzJiNjNlMjE4NjRmMDg2NjI5ZjQyOGE2Li4xZmRmZDJmYjczZjQyZjY4OWQ0ZTljYzY2NzQy
NTg3NDI3OWI1NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8VG91YwogCiB2b2lk
IEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBKU0M6OkpTRnVuY3Rpb24qJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0ganNEeW5h
bWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgcmVzdWx0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4odmFsdWUpOwogfQogCiBib29sIEpTRGljdGlvbmFy
eTo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwg
U3RyaW5nJiByZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RvY3VtZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmgKaW5kZXggNjljNGNhODI4OTE5YzliMTNhYmFiMWM4M2I2YmFhMDJhOWQ2
YmMyYS4uYjYzNGI1NzRjMDA4NDIzNjk2NDg0YzdiZjg0ZjE2YjNlN2EyYzUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaApAQCAtMzEsMTEgKzMx
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRG9jdW1lbnQq
IGpzRG9jdW1lbnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNEb2N1
bWVudCoganNEb2N1bWVudENhc3QoSlNDOjpKU0NlbGwqIHZhbHVlKQogewotICAgIGlmIChVTkxJ
S0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0RvY3VtZW50V3JhcHBlclR5cGUgPyBKU0M6
OmpzQ2FzdDxKU0RvY3VtZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFsdWUt
PnR5cGUoKSA9PSBKU0RvY3VtZW50V3JhcHBlclR5cGUgPyBKU0M6OmpzQ2FzdDxKU0RvY3VtZW50
Kj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogSlNDOjpKU09iamVjdCogY2FjaGVkRG9jdW1lbnRX
cmFwcGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBEb2N1bWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEeW5hbWljRG93bmNhc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjk4ZWM0YmVlZjJkYzg3MjA1NGYxMjZmNzg1ODM4MWIyYWVhMGVmZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0LmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8cnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTTm9kZTsKK0pTTm9kZSoganNOb2Rl
Q2FzdChKU0M6OkpTQ2VsbCopOworY2xhc3MgSlNFbGVtZW50OworSlNFbGVtZW50KiBqc0VsZW1l
bnRDYXN0KEpTQzo6SlNDZWxsKik7CitjbGFzcyBKU0RvY3VtZW50OworSlNEb2N1bWVudCoganNE
b2N1bWVudENhc3QoSlNDOjpKU0NlbGwqKTsKK2NsYXNzIEpTRXZlbnQ7CitKU0V2ZW50KiBqc0V2
ZW50Q2FzdChKU0M6OkpTQ2VsbCopOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KK3N0cnVjdCBK
U0R5bmFtaWNDYXN0VHJhaXQgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CisgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgVG8gY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxUbz4oZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8
Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdDxKU05vZGUqPiB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU05vZGUqIGNhc3QoRnJvbSog
ZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc05vZGVDYXN0KGZyb20pOworICAgIH0KK307
CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFbGVtZW50Kj4gewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNF
bGVtZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAgeworICAgICAgICByZXR1cm4ganNFbGVtZW50
Q2FzdChmcm9tKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWljQ2Fz
dFRyYWl0PEpTRG9jdW1lbnQqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU0RvY3VtZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAgewor
ICAgICAgICByZXR1cm4ganNEb2N1bWVudENhc3QoZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdDxKU0V2ZW50Kj4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNFdmVudCogY2FzdChG
cm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRXZlbnRDYXN0KGZyb20pOworICAg
IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgorQUxXQVlTX0lO
TElORSBUbyBqc0R5bmFtaWNEb3duY2FzdChGcm9tKiBmcm9tKQoreworICAgIHJldHVybiBKU0R5
bmFtaWNDYXN0VHJhaXQ8VG8+OjpjYXN0KGZyb20pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
bz4KK0FMV0FZU19JTkxJTkUgVG8ganNEeW5hbWljRG93bmNhc3QoSlNDOjpKU1ZhbHVlIGZyb20p
Cit7CisgICAgaWYgKFVOTElLRUxZKCFmcm9tLmlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PFRvPihmcm9tLmFzQ2VsbCgpKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaApp
bmRleCAyYTFiYTAxODAzMjRkMDg0YjRhYzViNmIyYzk1N2VkYzM5YTc5NmY3Li5kZmUyM2JjYjc5
NTYwZmViYzUxMGI3ZmEzZWYwNDRhZTJhYTI1YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaApAQCAtMzEsMTEgKzMxLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRWxlbWVudCoganNFbGVtZW50Q2FzdChKU0M6
OkpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTRWxlbWVudCoganNFbGVtZW50Q2FzdChK
U0M6OkpTQ2VsbCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+dHlw
ZSgpID49IEpTRWxlbWVudFR5cGUgPyBKU0M6OmpzQ2FzdDxKU0VsZW1lbnQqPih2YWx1ZSkgOiBu
dWxscHRyOworICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID49IEpTRWxlbWVudFR5cGUgPyBKU0M6
OmpzQ2FzdDxKU0VsZW1lbnQqPih2YWx1ZSkgOiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgKaW5k
ZXggNTU5OWY0YzFmMTk3M2Q0YTNmMzVlYzg3ZTIxMjAwZjAxOTFjYzA5YS4uMDY4M2E2YWUxNzg2
OTBhMDY4YTlmNGQ5NjZkYjYyOTQ0YjM4ZmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRDdXN0b20uaApAQCAtMjksMTEgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNFdmVudCoganNFdmVudENhc3QoSlNDOjpKU0NlbGwqIHZh
bHVlKQogewotICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0V2ZW50
VHlwZSA/IEpTQzo6anNDYXN0PEpTRXZlbnQqPih2YWx1ZSkgOiBudWxscHRyOworICAgIHJldHVy
biB2YWx1ZS0+dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZh
bHVlKSA6IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGUwNmY4MTZhYjRm
ZWNiMGE5OWQ4YTVmMDY0YWMzMTE4Y2I1ZDgwYzEuLjVjZjRiOWI3ZTk5NmIxMTJhN2NhNDMzMTdm
MjBiYzAwOGFjYTIwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB3cmFw
CiB7CiAgICAgQVNTRVJUKHdyYXBwZXIuZ2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwotICAgIGF1dG8qIGRvY3VtZW50V3JhcHBlciA9IGpz
RG9jdW1lbnRDYXN0KHRvSlMoJnN0YXRlLCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHdyYXBwZXIuZ2xvYmFsT2JqZWN0KCkpLCBkb2N1bWVudCkpOworICAgIGF1dG8qIGRvY3VtZW50
V3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRG9jdW1lbnQqPih0b0pTKCZzdGF0ZSwgSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih3cmFwcGVyLmdsb2JhbE9iamVjdCgpKSwgZG9j
dW1lbnQpKTsKICAgICBBU1NFUlQoZG9jdW1lbnRXcmFwcGVyKTsKICAgICBkb2N1bWVudC5zZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY3JlYXRlRXZlbnRMaXN0ZW5lckZvckV2
ZW50SGFuZGxlckF0dHJpYnV0ZShzdGF0ZSwgdmFsdWUsICpkb2N1bWVudFdyYXBwZXIpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHAKaW5kZXggZjQwZGY2MTI0ZWJhYTNkNWIzNjkxODI3YzgxOGEzZjBjYWQ5N2ZlNy4uMzcyMjI1
ODNmZWU2YmZmZDNlZTJiYTViMzYzMmJlZTAwN2IwMWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTczLDcgKzczLDcg
QEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVlKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzRXZlbnRUYXJnZXRDYXN0
KEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIGlmIChhdXRvKiB0YXJnZXQgPSBqc0R5bmFtaWND
YXN0PEpTRXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpKQorICAgIGlmIChhdXRvKiB0YXJnZXQgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU0V2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBl
ZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh0aGlz
VmFsdWUpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3Jh
cHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKaW5kZXggYTBl
ZDkyMWExY2RhNzQxZmE4NGJlMDE5NGI4Y2UzMzlhNzM3NDc4Yi4uYzMwYjZmYzlmMDE2MjZjYzY1
OTViNWE5YzdmZmNkYzlhYjgwZGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBA
IEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU01lZGlhU3RyZWFt
VHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRo
aXNWYWx1ZSk7CisgICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhp
c1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdz
IikpOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFj
azo6Z2V0Q2FwYWJpbGl0aWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50
aGlzVmFsdWUoKTsKLSAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CisgICAgSlNNZWRpYVN0cmVh
bVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljRG93bmNhc3Q8SlNNZWRpYVN0cmVhbVRyYWNr
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJN
ZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IDFlOGE4YzExOTM2YjZmNTVmYTdjZWRkYTI4OWY1
NjViYTI2NjJkNjIuLmQ1ZDZkMDNjYmJjZDFlNDRjMWI4N2JjMjU3NjUwNzBmMDY2MzRkNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC03OCwxMSArNzgs
OSBAQCBpbmxpbmUgdm9pZCogcm9vdChOb2RlJiBub2RlKQogICAgIHJldHVybiByb290KCZub2Rl
KTsKIH0KIAotQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9kZUNhc3QoSlNDOjpKU1ZhbHVlIHZh
bHVlKQorQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9kZUNhc3QoSlNDOjpKU0NlbGwqIHZhbHVl
KQogewotICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA+PSBKU05vZGVUeXBl
ID8gSlNDOjpqc0Nhc3Q8SlNOb2RlKj4odmFsdWUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFs
dWUtPnR5cGUoKSA+PSBKU05vZGVUeXBlID8gSlNDOjpqc0Nhc3Q8SlNOb2RlKj4odmFsdWUpIDog
bnVsbHB0cjsKIH0KIAogQUxXQVlTX0lOTElORSBKU0M6OkpTVmFsdWUgSlNOb2RlOjpub2RlVHlw
ZShKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBmYWMyMGIyNzI2ZDll
YjdmYzliOWVlYjU0MDk2MzdmZmQ5MWNjZTQwLi44MzY1YmEwNjk1MWY5YmMyN2E0YWFmY2MyOTFl
ZDc2ZGM1ZDc0MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0
aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCB0
aGlzT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBhZmFj
OTlhMDhjMTMzNzMzYTdlMTk5M2JmYzRhZDMxYjNhMzg5OWE0Li45ZmEyMDBlMDQyYzY2YWFjYTkw
OGJmMDkwYTljMWVhODQzNDVlOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoRXhlY1N0YXRlJiBlCiAgICAgVk0mIHZt
ID0gZXhlYy52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAKLSAgICBKU1JlYWRhYmxlU3RyZWFtKiBzdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVh
ZGFibGVTdHJlYW0qPihleGVjLmFyZ3VtZW50KDApKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtKiBz
dHJlYW0gPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4oZXhlYy5hcmd1bWVu
dCgwKSk7CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwg
bnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKaW5kZXgg
YTUzZjYzNWMwYWVmN2U5YzM0N2JmODliYTFlN2Y0ZDkyZTY3YjIwMS4uNGJiODhlN2YyMmUzZjVh
MTNmY2RiNzExYTE5OWQwODFhZjcyMTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKQEAgLTM3
LDExICszNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHN0YXJ0UmVh
ZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7Ci0gICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNlID0ganNEeW5h
bWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAg
IEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVh
ZGFibGVTdHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNvdXJj
ZSk7CiAKICAgICBBU1NFUlQoc3RhdGUuYXJndW1lbnRDb3VudCgpKTsKLSAgICBKU1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFtaWNDYXN0PEpTUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGNvbnRyb2xsZXIpOwogCiAgICAg
c291cmNlLT53cmFwcGVkKCkuc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihj
b250cm9sbGVyKSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2
b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByCiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlLmFyZ3VtZW50Q291bnQoKSk7Ci0g
ICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNEeW5h
bWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBj
b250cm9sbGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyKj4oc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChjb250cm9s
bGVyKTsKIAogICAgIG1fY29udHJvbGxlci5zZXQoc3RhdGUudm0oKSwgdGhpcywgY29udHJvbGxl
cik7CkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3Rh
cnQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogc3RhdGljIHZvaWQgcHVsbFJlYWRhYmxlU3RyZWFtKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFk
YWJsZVN0cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBKU1JlYWRhYmxlU3Ry
ZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtU291
cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIEFTU0VSVChzb3VyY2UpOwogCiAgICAgc291
cmNlLT53cmFwcGVkKCkucHVsbChXVEZNb3ZlKHByb21pc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBl
MTI1MGIzNThmZTU2M2YwNDExM2QwMzMyZjBhZDExYzk5M2U1ZWVjLi5hNjE3NzA5N2E5MzJmZDM1
ZWVjYzdmMDZmOTY2NGNiMDY2YjE1ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2lu
Y2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKQEAgLTEyOCw3ICsxMjksNyBAQCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiB0b0pT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoY2xhc3NJ
bmZvID09IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKICAgICAgICAgcmV0
dXJuIGpzQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUp
KTsKICAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxKU1By
b3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOworICAgICAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxKU1Byb3h5
Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRl
eCBkYjdjZjg2NWYwNzdmNjM1NDRiYjBhMTY4NzE1NTEyMTViNTA0MWFhLi44YWY1Mzk1NTE3NjE0
NTNkZDVmZjViNDg5YWM4ZWNkN2FhMGQwYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU0M6
OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFeGVjU3RhdGUqCiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBw
b3J0IEpTTW9kdWxlUmVjb3JkLgogICAgIC8vIE9uY2UgdGhlIHJlZmxlY3RpdmUgcGFydCBvZiB0
aGUgbW9kdWxlIGxvYWRlciBpcyBzdXBwb3J0ZWQsIHdlIHdpbGwgaGFuZGxlIGFyYml0cmFyeSB2
YWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0cnkt
cHJvdG90eXBlLXByb3ZpZGUKLSAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQg
PSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU01vZHVsZVJlY29yZCo+KG1vZHVsZVJlY29yZFZh
bHVlKTsKKyAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU0M6OkpTTW9kdWxlUmVjb3JkKj4obW9kdWxlUmVjb3JkVmFsdWUpOwogICAgIGlm
ICghbW9kdWxlUmVjb3JkKQogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCAyMjMwZTFmYjExZGJiN2ZkZjcyZDhjZTI3OTZhYjBmZmVkNzJkZmExLi5mMjY0
MTczYzUxZTBiODFhYjE2M2Y5NzVlZWFmNTQxZmM5MjBkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNzEs
NyArMTM3MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRvci0+bmV4dEtl
eVZhbHVlKG1fZXhlYywga2V5LCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWFwSXRl
cmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGpzRHluYW1pY0Rvd25jYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAgICAg
ICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJv
cGVydHlOYW1lTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5
U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHdy
aXRlKE5vbk1hcFByb3BlcnRpZXNUYWcpOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAg
ICAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLT5uZXh0KG1fZXhlYywga2V5KSkgewogICAgICAg
ICAgICAgICAgICAgICBzZXRJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldCo+KG9iamVjdCkpOwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljRG93bmNhc3Q8SlNTZXQqPihvYmpl
Y3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlO
YW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmpl
Y3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uU2V0UHJvcGVydGllc1RhZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAppbmRleCA0Y2I4OGIyZGU1
M2M4YjJiMGQwMzdlMDBiNzgyMWI2Y2JmNTJjZDAyLi5mZDhjNmZmOGUyYTY1OGFmZmI1OWYzNzA2
MzI5NjM2YTkzZmFhMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
dHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVj
dHVyZWRDbG9uZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBleGVjU3RhdGUK
ICAgICBBU1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50KCkpOwogCiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byogYnVmZmVy
VmlldyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKKyAg
ICBhdXRvKiBidWZmZXJWaWV3ID0ganNEeW5hbWljRG93bmNhc3Q8SlNBcnJheUJ1ZmZlclZpZXcq
Pih2YWx1ZSk7CiAgICAgQVNTRVJUKGJ1ZmZlclZpZXcpOwogCiAgICAgYXV0byogYnVmZmVyID0g
YnVmZmVyVmlldy0+YnVmZmVyKCk7CkBAIC02NiwyNSArNjYsMjUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBl
eGVjU3RhdGUKICAgICB9CiAgICAgYXV0byBidWZmZXJDbG9uZSA9IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKIAotICAgIGlmIChK
U0M6OmpzRHluYW1pY0Nhc3Q8SlNJbnQ4QXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1p
Y0Rvd25jYXN0PEpTSW50OEFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTSW50OEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1
cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVm
ZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTSW50MTZB
cnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNJbnQxNkFycmF5Kj4o
dmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZBcnJheTo6Y3Jl
YXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xv
bmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Ci0g
ICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2YWx1ZSkpCisgICAgaWYg
KGpzRHluYW1pY0Rvd25jYXN0PEpTSW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZp
ZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9m
ZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nh
c3Q8SlNVaW50OEFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1Vp
bnQ4QXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50
OEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92
ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVu
Z3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTVWludDhDbGFtcGVkQXJyYXkq
Pih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWludDhDbGFtcGVkQXJyYXkq
Pih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1wZWRB
cnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUo
YnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0
aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQxNkFycmF5Kj4odmFsdWUp
KQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQxNkFycmF5Kj4odmFsdWUpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2QXJyYXk6OmNyZWF0ZShleGVjU3Rh
dGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVy
Vmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWlj
RG93bmNhc3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1VpbnQzMkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1
Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwg
YnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRmxv
YXQzMkFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0Zsb2F0MzJB
cnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0MzJB
cnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUo
YnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0
aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZhbHVl
KSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNGbG9hdDY0QXJyYXkqPih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShleGVj
U3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChK
U0M6OmpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWlj
RG93bmNhc3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU0RhdGFWaWV3OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUo
KSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVy
Vmlldy0+bGVuZ3RoKCkpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAw
MzM0YjAxM2YzNTIzYjYzNDAxMzE1MmE5NzU1NTFkMzlhMzliNzg5Li5mOTI4MmQwNDQ2NTA2ZmY4
ZDBmMDU3MGM5ODNmNzg5MzQ2YzQ2Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjQ3NCwxMyArMjQ3NCw3IEBAIHN1
YiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0K
LSAgICByZXR1cm4gImpzTm9kZUNhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIjsKLSAg
ICByZXR1cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsK
LSAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1l
bnQiOwotICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVx
ICJFdmVudFRhcmdldCI7Ci0gICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIgaWYgJGludGVyZmFjZU5h
bWUgZXEgIkV2ZW50IjsKLSAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMkaW50ZXJmYWNlTmFt
ZSo+IjsKKyAgICByZXR1cm4gImpzRHluYW1pY0Rvd25jYXN0PEpTJGludGVyZmFjZU5hbWUqPiI7
CiB9CiAKIHN1YiBHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgpAQCAtMzM0OSw3ICszMzQzLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8JHtj
bGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKIApAQCAtMzM3MSw3ICsz
MzY1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggZGVhYWU2M2MxMjg4NDY1N2M4MDA3YjNk
ZjNiMDE4ODdiNjJjNGE0MS4uMjg3ZTk5YmIwYWQ5YzI5YmNmNTI3YTk3MDU2NDIxOTFkZDkxZGE1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
SW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTSW50ZXJmYWNlTmFtZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNJbnRlcmZhY2VOYW1lUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0ludGVyZmFjZU5hbWVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludGVyZmFjZU5hbWU6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0x
MzAsNyArMTMwLDcgQEAgYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50
ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
SW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsyMTMs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGVyZgogCiBJbnRlcmZhY2VOYW1lKiBKU0ludGVyZmFj
ZU5hbWU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZhbHVlKSkKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDkwMjdlYWUyNDBh
N2JlNmFkYjMwMTA1ZWQ5NWIzNTRkZGVhNTllYjAuLjUyNmE2YTdjNTRhZjMxYzM2OWEyODhlNTE2
NjY0Y2QyZDhkYTYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0x
NDMsMTIgKzE0MywxMiBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JBdHRyaWJ1dGUo
RXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RBY3RpdmVET01PYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc3RhdGUu
dGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0RXhjaXRpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEFjdGl2ZURPTU9iamVj
dCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURP
TU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rl
c3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIHNldEpT
VGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEFjdGl2ZURP
TU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0
aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDcgKzI5NSw3
IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEFjCiAKIFRlc3RBY3RpdmVET01PYmplY3QqIEpTVGVz
dEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4o
dmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmlu
ZGV4IDk3YjI4OTE1NjAzN2Y5YjVlZTc1NWJmOTMwOTRmNDQyMTY3ZmIwZmMuLjk2YzcxNjJmMTU4
ZjE2MmJhMWY4MTM1YjllNThlY2M0NDY5MzNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNw
cApAQCAtMTM3LDEyICsxMzcsMTIgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uczo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnMq
IEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNT
dGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rp
b25zKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdEZvck9wZXJhdGlvbihF
eGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVh
Y3Rpb25zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zR2V0
dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdENFUmVhY3Rpb25zJiwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnND
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uczo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIwOCw3ICsyMDgsNyBA
QCBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9u
c1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjIsNyArMzYyLDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zKiBKU1Rlc3RDRVJlYWN0
aW9uczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPih2YWx1ZSkpCisgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHZh
bHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAK
aW5kZXggN2U4NmQ4ZWM0NTQ3MTE0YWYxM2ZkNGRjMDg5MzU2ZWM2MTI0OTNlZC4uZWUzMmZjYjFj
NzI4NTYzZDI5YTM3NWM2YTEwOWQxZDUwOGViNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBKU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNT
dGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZUdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWQKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNjgs
NyArMTY4LDcgQEAgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzQsNyArMjc0LDcgQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4odmFsdWUpKQogICAgICAgICBy
ZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDA3YWRkZGI4ZDkxZGZlNzBlYjk2ZmQ0MTA1ZWVmYTZmYmYyYjNlYWEuLmEyY2VjODFhNGZl
YWJhYTJmMzI5ZjkwNjdmNjkxYjhiMjg4NmIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEzNiw3
ICsxMzYsNyBAQCBib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yMTEsNyArMjExLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2wKIAogVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3IqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHZhbHVlKSkKICAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmNwcAppbmRleCBhMzU5YzU0OGFiMDk1YjE0MzY0NjI3NGE0Y2VhNTNlY2Y0OTkz
YjhmLi5mMmM4OTgwOTUxN2ZlNjUzZjBiMjliZTM2ZmZlOTczZmQ2OTM5ZjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUoc3RhdGUtPnZtKCksICpkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzksNyArMTM5LDcgQEAgYm9v
bCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdEN1CiAKIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4odmFs
dWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCiAgICAgICAgIHJl
dHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggM2VlODk0YjYzNWVlYThiODJjMWYw
NzE3MGE1ZjMxZmQ3Y2JjN2Q0MC4uYzE0Mjk3ZDBlNWIzNThkY2Y5YTA1MmZhOGNiMTFkYWZmNTMy
YzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNjEsMTQg
KzE2MSwxNCBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogCiB0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RDdXN0b21OYW1lZEdldHRlciogQmluZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHN0YXRlLnRoaXNWYWx1ZSgp
KTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
PihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5h
bWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNzksNyArMTc5
LDcgQEAgYm9vbCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXMKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1CiAKIFRl
c3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmNwcAppbmRleCBlMzk3YmVlNzg0OGVjNjFmYjkzNTk4YmNjY2M4ZTYz
NmE0N2Q0NTg2Li4yNDg4ZGYyNmJkYjUyYjUwY2Q2N2Q2MGNjYTU2NWIyNjUzNjdlNGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RET01KSVQ6
OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojpj
YXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsK
LSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVCo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdERPTUpJVFByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBi
b29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jbwogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RET01KSVRQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY3
OGQ0NTYyYjc5NDQ0MGRjMjdhODgzYmM1Mjc3ZjM3OWJlODEwNzguLjQzZmU1NTA2YWU0YjFjYzVh
ZmQ4N2M1NDMwOTE5Mjc0MTJmYTcxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBKU09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiB0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXZlbnRDb25z
dHJ1Y3RvckF0dHIxR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3ImLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBib29sIHNldEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuY3BwCmluZGV4IDFkNjAwZDFjMDVkZWI2MDExYjcwMjkxNWFkNDRmOTUwMWIzNWY5
ZmUuLmJkNmQ5OWZiOWI3ZjMxZmIzYmNhNjY2ZjVkYTQyM2FjYzJmZWFiOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcApAQCAtMTU5LDE0ICsxNTksMTQgQEAgYm9vbCBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIHMKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0RXZlbnRUYXJnZXQ+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihzdGF0ZS50
aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV2
ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXZlbnRUYXJnZXRD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdgogCiBU
ZXN0RXZlbnRUYXJnZXQqIEpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudFRhcmdldCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAKaW5kZXggN2I5Y2Y5MTllNDE1OTU4OTA3MDExODVhZDczNzE4ZmFlMWIxYTU1YS4uYjNmMjhl
OGJlYmUwMzM0MWU3ZjU4ZWZkYmJlNmFhZTI4ZmE0YTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdEV4Y2VwdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
VGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZUdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RFeGNlcHRpb24mLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogewogICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBzZXRK
U1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RFeAogCiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNzdmOWQzNWY3ZjhhM2I4ZThlOTU3OGNlODhj
NjEwZDJmNTU2M2FjZi4uNmZlN2JkZTcyMmRjY2NlNDZlYzIzNDEyYTgyN2I3ODlhMmZmM2Y4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEdlCiAKIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAg
IGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwCmluZGV4IGUzYTQ1N2Y0MzUxMjEwZjc5Y2E5NTQ0ZmQzYjFmYTQ3NDdiY2JmMmMu
LmViNzE1OTc0YmNiNTIwMjNmY2MzYjM1MGIzMjRjZTMyYmQ3NjM3YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCkBAIC0xNzcsMTIgKzE3NywxMiBAQCB2b2lkIEpTVGVzdEdsb2JhbE9i
amVjdDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0R2xvYmFsT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RG
b3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5
bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oc3RhdGUudGhpc1Zh
bHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVn
dWxhckF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RHbG9iYWxPYmplY3QmLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0R2xvYmFsT2JqZWN0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxPYmpl
Y3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHbG9iYWxPYmpl
Y3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0yNzAsNyArMjcwLDcgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUyNCw3ICs1MjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbAogCiBUZXN0
R2xvYmFsT2JqZWN0KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEds
b2JhbE9iamVjdCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFw
cGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDJmZjljMDBjNjFmOTFlNGQ3N2VkODJlNDRjYTVmMDliOGQ2NzU4NWMuLmE4ZjY3
Mzk4YjY5MGI2ODBkNDFkM2VlNzE5NzA4NDM1ZGMwZWJmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zOTksMTIgKzM5OSwxMiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRl
JiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCkBAIC02MzEsNyArNjMxLDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1YKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtNjQyLDcg
KzY0Miw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFCiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDI5LDcgKzEwMjksNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRlcmZh
Y2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNw
cAppbmRleCBmZDNlMTE3YmYxODg5ZmM1OGFiODYzOGExODIwMzYyNzRjMGViMzUxLi45NTc1MmRj
ODM0OTNjZGRiMzUzYWVhMjMzMDBkNDZkZDEzYjE5MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2
b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJz
Y29yZSogQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmNh
c3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmUmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE0Myw3ICsx
NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogewogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTU0LDcgKzE1NCw3
IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFk
aW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMSw3ICsyMDEs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVy
c2NvcmUqIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjp0b1dyYXBwZWQoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDlhZmZkYzRlMmRhZWM0
MDIxMGFmMWVhM2YxYThlYzE1YjRiZGY0YWUuLjg0OWJjNzJlYjM3NzVkZTBiNTBkM2ZlZjYyZTBl
ZWE2NTFjYTI0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtMTMxLDE0ICsxMzEsMTQgQEAg
dm9pZCBKU1Rlc3RJdGVyYWJsZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0SXRlcmFibGUqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+
OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGUqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEl0ZXJhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgc2V0SlNUZXN0
SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJdAogCiBU
ZXN0SXRlcmFibGUqIEpTVGVzdEl0ZXJhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJs
ZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdEl0ZXJhYmxlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCmluZGV4IDVhNDhmM2M3MjI5OGQzNmI0OGZlYTk2YzkxNzkyNTFjNjQxYzZj
YTcuLmRkNDg5NzRmYWJjMDkyYTBmOWMzODQ0N2FjMmQ4YTkxOTRjZTQ2NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTM0LDEyICsxMzQsMTIgQEAg
dm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4
ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3Rv
bUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciYsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xODUsNyArMTg1LDcg
QEAgYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCmluZGV4IGQ5NTQ2NGFlYjMwNjk5ZTFmYTY2YzlhMTRmOWNjZWU5ZjRiMWIwNjUuLjU4
N2E5ZTQyZGQzMDdmYjFmZmZiZWFmNzU5NmY2YjJiZjkwY2NmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEyNSwxNCArMTI1LDE0IEBAIHZv
aWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2Vs
bCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPjo6Y2FzdEZvck9wZXJhdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50aGlz
VmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsNyAr
MjMyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWUKIAogVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odmFsdWUp
KQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5NGYyNTY1ZGI2
NTY0NDU0MTkzNGFmNWNjM2FhMzgyMmYzZDA1OWI1Li44Nzg2ZjQzN2YyOWEyNzk3ZGY5NWNkOGY3
ODgyYjhlY2ZiMGE5MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKIHsKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7
CkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyArMjQ4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
ZXN0TmEKIAogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkpCisgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4o
dmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBmOGZkYzBjNjI4YTJkZGNjMzEwMmU5OGMxMzI5
YmNhOWRkOTY2Y2FkLi4zMzcxMGIxM2NmZmI2MGZkNDY3ZDdhMjYwMjJhNDBlNDU0Y2E0NmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCkBAIC0xNjgsMTIgKzE2OCwxMiBAQCBKU09iamVjdCogSlNUZXN0Tm9kZTo6
cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogdGVtcGxh
dGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZv
ckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSog
QmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihzdGF0ZS50aGlz
VmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGUqPihzdGF0
ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb2RlTmFt
ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3ROb2RlJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7
CkBAIC0xOTYsNyArMTk2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIHsKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7
CkBAIC0yMDcsNyArMjA3LDcgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGUKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVz
dE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yy5jcHAKaW5kZXggMTViZTNiNmNjOGFiNTI5MjhiMmU0ODdhMTIxZDM2ZDRhZjE1Mjc5NC4uM2Ix
NjE3NzEyMmUzM2VmNDk3NmUxNWJiNzRiYmE5ZGE5ODRmNDMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
b25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTQ0LDEyICsxNDQsMTIgQEAgdm9pZCBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVy
bWluaXN0aWM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
UmVhZG9ubHlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTM1MSw3ICszNTEsNyBAQCBib29sIHNldEpT
VGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1
MzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RObwogCiBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyog
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxMjlh
MjRhNzZjYjE2ZDRmMDFjZWQ2YzNjMTkwNjMxNWI1OGMyYjg5Li45NmE4MzMzZGRkZTEyODMxOTQ2
MmE5NGQyYTc4NjU1YzJiNmU0MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTgwNywxMiArMTgwNywxMiBA
QCBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCB1bgogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RPYmoq
IEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAK
IHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYs
IEpTVGVzdE9iaiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzI5OSw3ICszMjk5LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVz
dE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T2JqUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zMzEwLDcgKzMzMTAsNyBAQCBi
b29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPYmpQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtODM1Myw3ICs4MzUzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2IKIAogVGVzdE9i
aiogSlNUZXN0T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCisgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDY2
OTBkMmNiMWRkNDBlMWUyMmJhNWY5MDk1YTY4NWYyNTE3ODU2MmUuLjFmNmI0YjJkOTYwYWZjYTk4
NDllMWYzNzhjZjg3NWEzYmRjNTQ2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIz
Niw3ICsyMzYsNyBAQCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNCw3ICszMDQsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RPdgogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuY3BwCmluZGV4IDNkMmQzYzAyZGY4ODY3YmMwOThmY2ZlZTIyOGM4ZjhlN2VmYTQ1NDcu
LjQ4YjA2ZjAzM2QyMDJjZjNhOTI1NzQ0N2NiYWRjMTQ5NGRmMTZiODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdAogewogICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4Miw3ICsxODIsNyBA
QCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RP
dgogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSogSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3Bw
CmluZGV4IDFkYjY3ZjQ3YTllMTYzNTM4MmM3YTQzNGY5ZTQ3NGRjYTliMTkzNTUuLjkwYjZlOTJh
N2MyMzRiZTBiZTk5ZTNiMjY4NmFmODVmZmMxOTdjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5jcHAKQEAgLTE1OCwxNCArMTU4LDE0IEBAIGJvb2wgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEJpbmRpbmdD
YWxsZXI8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkp
OwpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc1LDcgKzI3NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE92CiAKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQorICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+
KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMGNkYTUwNmU3
ZjdiODdmM2E0NmFmZmQ3MDk0YjMyMzZlMWRjNjllMy4uYmMyMDUwMDJjMmY3YmVlYTllOGIxNzg1
OGEyY2E0NmRmODNhM2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtMTQw
LDEyICsxNDAsMTIgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0
ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxp
emF0aW9uKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yT3BlcmF0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0
U2VyaWFsaXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmluZ0F0dHJp
YnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXphdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvblBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb246
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7
CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHUKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
Ci0gICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MzgsNyArNDM4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAogVGVz
dFNlcmlhbGl6YXRpb24qIEpTVGVzdFNlcmlhbGl6YXRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6YXRpb24qPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4odmFsdWUpKQogICAgICAgICByZXR1cm4g
JndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
M2NjYjg2ZmU1OTk3NmJiZGRmZjMwYWIyNjdjMjI2YTYzYzE2YWViNi4uNzA2ZjI0NGZmMzUxZGQy
YzBiMmRmMTMxNWRlYTAzZDAyM2UyODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2
b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWVHZXR0ZXIoRXhlY1N0
YXRlJiwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CkBAIC0yMjksNyArMjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwK
IHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgc2V0
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTUsNyAr
MzU1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAogVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dy
YXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkp
CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
aW5kZXggODlhZDMyZjYzMTZkODA1MzQ1NmY2MTE2NmNhYzk4ODQyNmI4NjlmMi4uN2Q2YjJjMGZl
YjU5YzA4ZTczYjk3MGQ3NGFlODdiMDBiMzk5ZjMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBA
IC0yMTUsMTIgKzIxNSwxMiBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogQmluZGluZ0Nh
bGxlcjxKU1Rlc3RUeXBlZGVmcz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
IH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0VHlwZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNp
Z25lZExvbmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RUeXBlZGVmcyYsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zNTIsNyArMzUyLDcg
QEAgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0VHlwZWRl
ZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRlZnNQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODA2LDcgKzgwNiw3IEBAIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdFR5CiAKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBlZChK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGM5ZGFkMjc4NmZjOGYx
YWE0ZGMzYjc5MTA3NWQ3N2YwMzViNWY0NzcuLjJlNWIxNTI1YWE2MGVhMTZiMDMxMTY1MjRjM2U3
NDgzMzExOWU1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRP
YmplY3QubW0KQEAgLTM5OSw3ICszOTksNyBAQCAtICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwogCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU09iamVjdCo+
KFtzZWxmIF9pbXBdKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
KTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1
ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDA5OWFmZjA0
YzI5MzA5M2ExNWJmNjM5NTUwZjE1NTE2YjQzZGM0YWQuLmQzMGE1ODViYjMzNTRlYzhlNDJkNGU4
ZmFlMThmZGVjNTM1NTlkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFy
cmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIFJ1bnRpbWVBcnJheSogdGhp
c09iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PFJ1bnRpbWVBcnJheSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfbWV0aG9kLmNwcAppbmRleCA1OTYxOWZiMjQzZTg5OTI5Y2EwZjA5ZTU4Mzc4MWNkMGQ2
OTUyZWJkLi4zMmNjMGFiNWQ3MWI5Njk1NWE5MGE4NzNjNTRhZGJhOGQ0MWQ3YTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJ1bnRpbWVNZXRob2QqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5t
X21ldGhvZC0+bnVtUGFyYW1ldGVycygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCAzNDk1MmU1MTJkNTc5YzQxZTZlNTViYzU5NTZiNmI2MmY3YjlhYjMw
Li41YzEwMjkxNGQ1YWUzOWNhNzliODZmMmNmNTNkYWM1ZDJkZDBkOTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM4ODksNyArMzg4OSw3IEBAIHN0YXRp
YyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgYXV0byBtZWRpYUpTV3JhcHBlciA9IHRvSlMoJmV4ZWMs
ICZnbG9iYWxPYmplY3QsIG1lZGlhKTsKICAgICAKICAgICAvLyBSZXRyaWV2ZSB0aGUgY29udHJv
bGxlciB0aHJvdWdoIHRoZSBKUyBvYmplY3QgZ3JhcGgKLSAgICBKU0M6OkpTT2JqZWN0KiBtZWRp
YUpTV3JhcHBlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVk
aWFKU1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0g
anNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhSlNXcmFwcGVyKTsKICAgICBp
ZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsK
ICAgICAKQEAgLTM4OTcsNyArMzg5Nyw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxl
ckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAg
SlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0
LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0gICAgSlNDOjpKU09iamVjdCogY29udHJvbHNIb3N0SlNX
cmFwcGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9s
c0hvc3RKU1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xzSG9zdEpTV3JhcHBl
ck9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sc0hvc3RK
U1dyYXBwZXIpOwogICAgIGlmICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAg
ICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApAQCAtMzk0NSw3ICszOTQ1LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgSlNDOjpKU1ZhbHVl
IGNvbnRyb2xsZXJWYWx1ZSA9IGNvbnRyb2xsZXJKU1ZhbHVlKCpleGVjLCAqZ2xvYmFsT2JqZWN0
LCAqdGhpcyk7Ci0gICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNE
eW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6OkpT
T2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVj
dCo+KGNvbnRyb2xsZXJWYWx1ZSk7CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTM5NTYsNyArMzk1Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgIC8vICAg
ICBOb25lCiAgICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+
Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2FwdGlv
bkNvbnRhaW5lciIpKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhvZFZhbHVlKTsKKyAgICBKU0M6OkpTT2Jq
ZWN0KiBtZXRob2RPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0
aG9kVmFsdWUpOwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKQEAg
LTY2NDksNyArNjY0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xs
ZXJWYWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBn
bG9iYWxPYmplY3QsIGFyZ0xpc3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAg
SlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6
OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9s
bGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xsZXJW
YWx1ZSk7CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKQEAg
LTY2NjIsNyArNjY2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgbWVkaWFKU1dyYXBwZXJPYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCBjb250cm9sc0hvc3QsIG1lZGlhQ29udHJvbHNIb3N0SlNX
cmFwcGVyLCBKU0M6OkRvbnREZWxldGUgfCBKU0M6OkRvbnRFbnVtIHwgSlNDOjpSZWFkT25seSk7
CiAKLSAgICBKU0M6OkpTT2JqZWN0KiBtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFDb250cm9sc0hvc3RKU1dy
YXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhQ29udHJvbHNIb3N0
SlNXcmFwcGVyKTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQog
ICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCA0MGQzNGRjNDJhNmMxZTUyNTUxZDViNzkxNDBhMzc5YmI0
ZjFiNTZkLi4zMTAyODg5OTUwZTBmODJmY2Y0YTNiMTFiNDc3ZDAyNGU1NDU5YzA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTE1MDEs
NyArMTUwMSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgIGhhbmRsZXIgPSBz
Y3JpcHRMaXN0ZW5lci0+anNGdW5jdGlvbigmbm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlm
IChoYW5kbGVyICYmIHN0YXRlKSB7CiAgICAgICAgICAgICBib2R5ID0gaGFuZGxlci0+dG9TdHJp
bmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPihoYW5kbGVyKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTRnVuY3Rp
b24qPihoYW5kbGVyKSkgewogICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb24tPmlzSG9zdE9y
QnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXhlY3V0
YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZU51bWJlciA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpIC0gMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAxNmZiYTY4MjJlNDc2YzMzMTc0MTAyNzYwZTE4
MDU2ODJlYzVkOTFjLi4xZjhlZGYzMzZiYzY3NTI0MjRkMDQ1N2Q2MzkyZDhhMmU1MzQxODg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
V2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5v
ZGVIYW5kbGUoV2ViRnJhbWUmIGZyYW0KICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byBlbGVtZW50V3JhcHBlciA9IEpTQzo6anNEeW5hbWljQ2Fz
dDxXZWJDb3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKTsKKyAgICBhdXRvIGVsZW1lbnRX
cmFwcGVyID0gV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6SlNFbGVtZW50Kj4o
dG9KUyhlbGVtZW50KSk7CiAgICAgaWYgKCFlbGVtZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBlMzM5Y2VjMGQ4MDg1OTI2MTU2ZTgzMjg1NDczZTRlMjY1OThkMjYyLi5lNzQ1YTVh
MDZkMDcyYjg2MzIxZjRiNzk3NDFlYjgwYmI5NmFiN2U3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTAtMjgg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTV0g
SW50cm9kdWNlIFdlYkNvcmU6OmpzRHluYW1pY0Rvd25jYXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoc2V0QXVkaW9SZXN1bHRDYWxsYmFjayk6CisKIDIwMTYtMTAtMjggIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV2ViSURMXSBVcGRhdGUgcGFy
c2VyIGFuZCBjb2RlIGdlbmVyYXRvcnMgdG8gb25seSBhY2Nlc3MgdHlwZSBpbmZvcm1hdGlvbiB0
aHJvdWdoIHRoZSB0eXBlIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IGVmMmQxNTgxNjc2YmFlYWY0ZTBhNzllZGY5N2UxMGQxMzdmYzM4OGYuLjU2ZTIxNzc4YmUx
MzIzNmMxMDNlZmJlYjY3NDkwNmI3YjMwNzA5NDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXVkaW9SZXN1
bHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3QKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgLy8gRklYTUUg
KDEyMzA1OCk6IFVzZSBhIEpTQyBBUEkgdG8gZ2V0IGJ1ZmZlciBjb250ZW50cyBvbmNlIHN1Y2gg
aXMgZXhwb3NlZC4KLSAgICBKU0M6OkpTQXJyYXlCdWZmZXJWaWV3KiBqc0J1ZmZlclZpZXcgPSBK
U0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmlldyo+KHRvSlModG9KUyhjb250
ZXh0KSwgYXJndW1lbnRzWzBdKSk7CisgICAgSlNDOjpKU0FycmF5QnVmZmVyVmlldyoganNCdWZm
ZXJWaWV3ID0gV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU0FycmF5QnVmZmVyVmll
dyo+KHRvSlModG9KUyhjb250ZXh0KSwgYXJndW1lbnRzWzBdKSk7CiAgICAgQVNTRVJUKGpzQnVm
ZmVyVmlldyk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBidWZmZXJWaWV3ID0g
anNCdWZmZXJWaWV3LT5pbXBsKCk7CiAgICAgY29uc3QgY2hhciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293242</attachid>
            <date>2016-10-28 16:33:35 -0700</date>
            <delta_ts>2016-10-28 19:08:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164137-20161029082944.patch</filename>
            <type>text/plain</type>
            <size>123477</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwNjlkNTU0ZDc2MDA3
YTBhZTA3NGJiYmU0ZGIyNTEwYWVjOTBkMi4uNWI1Y2UyY2MwN2IyMGJmMjhhYTc3Mzg3MDc0ZGI4
NDU1YjllYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0MyBAQAogMjAxNi0xMC0yOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRl
bmRlZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBl
cywgV2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisg
ICAgICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRU
eXBlLCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2Js
ZW0gaXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvb3NlCisg
ICAgICAgIEpTQzo6anNEeW5hbWljQ2FzdCBieSBhY2NpZGVudC4gU2VsZWN0aW5nIHRoZSBhcHBy
b3ByaWF0ZSBmdW5jdGlvbgorICAgICAgICByZXF1aXJlcyBzcGVjaWFsIGNhcmUgaW4gdGhlIElE
TCBjb2RlIGdlbmVyYXRvciB3aGVuIHdlIHdvdWxkIGxpa2UKKyAgICAgICAgdG8gdXNlIGZhc3Rl
ciBjYXN0aW5nIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBu
ZXcgY2FzdGluZyBmdW5jdGlvbiwgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QuCisgICAgICAg
IEl0IGlzIGEgdGhpbiB3cmFwcGVyIHRvIHRoZSBKU0M6OmpzRHluYW1pY0Nhc3QuIEJ1dCBpdCBz
ZWxlY3RzIHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5
IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhl
IHdheSBzcGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJ
ZiB3ZSBmb3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpq
c0R5YW5taWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJv
cnMsIGJ1dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVGhpcyBi
dWcgaXMgaGFyZCB0byBmaWd1cmUgb3V0LiBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIGFkZCBh
IG5ldyBmdW5jdGlvbi4KKworICAgICAgICBPdXRzaWRlIEpTQywgb25seSBUb29scycgRHVtcFJl
bmRlclRyZWUgdXNlcyBKU0M6OmpzRHluYW1pY0Nhc3QuCisgICAgICAgIFRoaXMgY29kZSBoYXMg
RklYTUUgdGhhdCB3ZSBzaG91bGQgdXNlIEpTQyBBUElzIGluc3RlYWQgb2YgZGlyZWN0bHkgY2Fs
bGluZworICAgICAgICBKU0MgdGhpbmd5LiBTbyB0aGlzIHNob3VsZCBiZSBzb2x2ZWQgaW4gdGhl
IGxheWVyIG9mIEpTQyBBUElzIGFuZCBjaGFuZ2luZworICAgICAgICB0aGlzIGpzRHluYW1pY0Nh
c3QgdG8gV2ViQ29yZSdzIGpzRHluYW1pY0Rvd25jYXN0IGFuZCBleHBvc2luZyBXZWJDb3JlJ3Mg
dGhpbmd5CisgICAgICAgIGFyZSBub3QgZ29vZCBjaGFuZ2UuIFNvIHdlIGxlYXZlIHRoZSBjb2Rl
IGFzIGlzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vz
c2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmNhc3RUaGlzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9BcnJheUJ1ZmZlclZpZXcp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okl0ZXJhdG9yVHJhaXRzPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6anNEb2N1bWVudENh
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SlNEeW5hbWljQ2FzdFRyYWl0OjpjYXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzRHluYW1pY0Rvd25jYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0VsZW1l
bnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRWxlbWVudENhc3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRD
YXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNFdmVudFRhcmdldENhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1U
cmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6Omdl
dFNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2Fw
YWJpbGl0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzTm9kZUNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50UHJv
cGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2
YXRlQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtU291cmNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0UmVhZGFibGVT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6cHVsbFJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2Fk
ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0Q2FzdGluZ0hlbHBlckZv
clRoaXNPYmplY3QpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
dGVyZmFjZU5hbWU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5n
Q2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9y
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFw
cGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9u
cz46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxK
U1Rlc3RDRVJlYWN0aW9ucz46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENFUmVh
Y3Rpb25zOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRp
bmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3RGb3JBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVj
dG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2Fs
bGVyPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmNhc3RGb3JBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQ29uc3RydWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRUYXJnZXQ+
OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RXhjZXB0aW9uPjo6Y2Fz
dEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2Fs
bGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEludGVyZmFjZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46
OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2FzdEZvck9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SXRlcmFibGU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
bmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYXN0Rm9yQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNh
c3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Ojp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dy
YXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6dG9XcmFwcGVkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0U2Vy
aWFsaXphdGlvbj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNl
cmlhbGl6YXRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxp
emF0aW9uOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+Ojpj
YXN0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9XcmFwcGVkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46OmNhc3RGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVm
cz46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjp0b1dyYXBwZWQpOgorICAg
ICAgICAqIGJyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKC1bV2ViU2Ny
aXB0T2JqZWN0IHNldFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9h
cnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKToKKyAg
ICAgICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1l
TWV0aG9kOjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sbGVySlNWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKwor
MjAxNi0xMC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAg
ICAgICBbRE9NSklUXSBSZW5hbWUgQ2FsbERPTSB0byBDYWxsRE9NR2V0dGVyCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxNTcKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDIxODFhZmQ2YTIyNjk3ODE5M2RlZGU1ODUxZTcyNWRiOTRlOGFjYTUuLmY2ODMzNTM5ZWU1
ODA5NWRiODg1ZmMzYWMxYWM4MzU4YzY5NmIyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxNi0xMC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRE9NXSBJbnRyb2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZSk6CisKIDIw
MTYtMTAtMjggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVu
YWJsZSBDRk5ldHdvcmsgY29ubmVjdGlvbiBjYWNoZSBmYXN0IGxhbmUgZm9yIFdlYktpdDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2YTRlZWMwOGQ4YjFiZWFlNjMwNTdhNmZhOTlmYzQyMDRmZTgwZTZmLi42YTRlYTczNjU1Zjkz
Yjg5YzhkMDBlNTk4ZTgxZTQxYzFmZWMxMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjAxLDYgKzYyMDEsNyBAQAogCQlF
MUZGOEY2RDE4MERCNUJFMDAxMzI2NzQgLyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkY4RjZCMTgwREI1
QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oICovOyB9OwogCQlFMzE1MEVB
NjFEQTcyMTkwMDAxOTQwMTIgLyogSlNOb2RlRE9NSklULmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQUZBOTY0MURBNkU5MDgwMDI4NjFCRCAvKiBK
U05vZGVET01KSVQuY3BwICovOyB9OwogCQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9N
SklUSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMxNTBFQTUxREE3MjE4RDAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMuaCAqLzsgfTsKKwkJ
RTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E1ODcyRTFEQzNGNTI2MDBG
NjA3QTYgLyogSlNEeW5hbWljRG93bmNhc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzU2NUI3QjFEQzJENkM5MDAyMTdEQkQgLyogSlNFdmVu
dEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzVDQTE0RDFEQkMzQTNGMDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QjFEQkMzQTNDMDBGODM1MTYg
LyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgKi87IH07CiAJCUUzNUNBMTRFMURC
QzNBNDIwMEY4MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVDQTE0QzFEQkMzQTNDMDBG
ODM1MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oICovOyB9OwpAQCAtMTQwNDIs
NiArMTQwNDMsNyBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdE1v
ZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODgzODk1MUJB
RDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOThGQzIzMURDMzJBMUIwMDNDNDY4NCAvKiBET01KSVRIZWxwZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEhlbHBlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E1ODcyRTFEQzNGNTI2MDBGNjA3QTYgLyog
SlNEeW5hbWljRG93bmNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
eW5hbWljRG93bmNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBRkE5NjQx
REE2RTkwODAwMjg2MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU05vZGVET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0IyRjBFMzFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVDbGFzc2ljU2NyaXB0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQjJGMEU0MUQ3RjM1
RUMwMEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9hZGFibGVDbGFzc2ljU2NyaXB0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTYxNyw2ICsyMTYxOSw3IEBACiAJCQkJQkNCRkI1M0IwRENEMjlDRjAw
MTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLywKIAkJCQk0MTcwQTJFOTFEOEMwQ0MwMDAz
MTg0NTIgLyogSlNET01XcmFwcGVyLmNwcCAqLywKIAkJCQk2NUUwRTk0MzExMzNDODlGMDBCNENC
MTAgLyogSlNET01XcmFwcGVyLmggKi8sCisJCQkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8q
IEpTRHluYW1pY0Rvd25jYXN0LmggKi8sCiAJCQkJRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8q
IEpTRXJyb3JIYW5kbGVyLmNwcCAqLywKIAkJCQlGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyog
SlNFcnJvckhhbmRsZXIuaCAqLywKIAkJCQlFMzRFRTQ5RjFEQzJENTc1MDBFQUE5RDMgLyogSlNF
dmVudEN1c3RvbS5oICovLApAQCAtMjc2MDYsNiArMjc2MDksNyBAQAogCQkJCUY1NUIzRERFMTI1
MUYxMkQwMDNFRjI2OSAvKiBVUkxJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNkU2
NTQzMUQ1Q0VGQkYwMEY3ODYyRSAvKiBVUkxQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
QzI4OURGMUFBMEZFNUQwMDlBOUNFMyAvKiBVUkxSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRTMxODAzOUQxREM0MDA5OTAwOTkzMkMyIC8qIEpTRHluYW1pY0Rvd25jYXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0Q0MzdBMjFENTdCM0ZFMDBBQjg1RUEgLyogVVJMVXRpbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3Mjc2M0JGMTY2ODlCRkIwMDJGQ0FDQiAvKiBVc2VyQWN0aW9uRWxl
bWVudFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY4MTYwRDYxODc2NkExMzAwMjFFNzlEIC8q
IFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAKaW5kZXggMDU5MWVlYzgy
ZDE2MjlmOTM5NGZlNWU2YTQxZGYxZjE3NTQ4OWE0OS4uZTUzZTdkZjBhZTVmMzE2NmJhMmFlYzUz
MjY5MzU3NTk1Y2ZjNzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU1ZhbHVl
IEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU0FwcGxl
UGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24q
Pih0aGlzVmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljRG93bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dU
aGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uIikpOwogCkBAIC03Miw3ICs3Miw3IEBAIEpTVmFsdWUgSlNB
cHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU0FwcGxlUGF5
U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0
aGlzVmFsdWUpOworICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlz
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbiIpKTsKIApAQCAtMTA0LDcgKzEwNCw3IEBAIEpTVmFsdWUgSlNB
cHBsZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUm
IHN0YXRlKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNl
c3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhp
c1ZhbHVlKTsKKyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAppbmRleCA4YWQwOGE3ZjI5OGYyMTk4MzA5MzcxYzQwMzk1MGY5NzQ0MzFmMzQx
Li5hMDcxNjBkYzk1Y2FmZDQ1NWJjYjY4MDg2MzA4ODNmZGFkN2JiYTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXhjZXB0aW9uVmFs
dWUsIENhY2hlZFNjcmlwdCogY2FjaAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
UkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
YXV0byogZXhjZXB0aW9uID0ganNEeW5hbWljQ2FzdDxKU0M6OkV4Y2VwdGlvbio+KGV4Y2VwdGlv
blZhbHVlKTsKKyAgICBhdXRvKiBleGNlcHRpb24gPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkV4
Y2VwdGlvbio+KGV4Y2VwdGlvblZhbHVlKTsKICAgICBpZiAoIWV4Y2VwdGlvbikgewogICAgICAg
ICBleGNlcHRpb24gPSB2bS5sYXN0RXhjZXB0aW9uKCk7CiAgICAgICAgIGlmICghZXhjZXB0aW9u
KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiBjCiAgICAgdm0uY2xl
YXJMYXN0RXhjZXB0aW9uKCk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKLSAgICBpZiAoSlNET01XaW5kb3cqIHdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5k
b3cqPihnbG9iYWxPYmplY3QpKSB7CisgICAgaWYgKEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCkpIHsKICAgICAgICAgaWYg
KCF3aW5kb3ctPndyYXBwZWQoKS5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCByZXBvcnRFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uLCBDYWNoZWRT
Y3JpcHQqIGMKICAgICBlbHNlIHsKICAgICAgICAgLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzExNTA4Nz4gV2ViIEluc3BlY3RvcjogV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uIHNob3Vs
ZCBub3QgZXZhbHVhdGUgSmF2YVNjcmlwdCBoYW5kbGluZyBleGNlcHRpb25zCiAgICAgICAgIC8v
IElmIHRoaXMgaXMgYSBjdXN0b20gZXhjZXB0aW9uIG9iamVjdCwgY2FsbCB0b1N0cmluZyBvbiBp
dCB0byB0cnkgYW5kIGdldCBhIG5pY2Ugc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZXhj
ZXB0aW9uLgotICAgICAgICBpZiAoRXJyb3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0
PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb25WYWx1ZSkpCisgICAgICAgIGlmIChFcnJvckluc3Rh
bmNlKiBlcnJvciA9IGpzRHluYW1pY0Rvd25jYXN0PEVycm9ySW5zdGFuY2UqPihleGNlcHRpb25W
YWx1ZSkpCiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci0+c2FuaXRpemVkVG9TdHJp
bmcoZXhlYyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGV4Y2Vw
dGlvblZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggOWMzZGFiNThmMGE0ZWJiOTE1ZDI3YjRmZjFh
NGVjY2Q5M2YwZWFhMi4uY2RjNGZjOWYwZjU2NzQzYmRjNzExNWNmYTIzMTU4YTRkOTcyZjk5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiSlNEeW5hbWljRG93
bmNhc3QuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTY3JpcHRX
cmFwcGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmgiCkBAIC01NjQsNyArNTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+IGlubGlu
ZSBKU0M6OkpTVmFsdWUgd3JhcChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE8KIHRlbXBsYXRl
PHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0NsYXNzJiBjYXN0VGhpc1ZhbHVlKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKICAgICBhdXRvIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgp
OwotICAgIGF1dG8gY2FzdGVkVGhpcyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0NsYXNzKj4odGhp
c1ZhbHVlKTsKKyAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0NsYXNz
Kj4odGhpc1ZhbHVlKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgcmV0dXJuICpjYXN0
ZWRUaGlzOwogfQpAQCAtNjg2LDcgKzY4Nyw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU0l0
ZXJhdG9yRW5kKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIAogaW5saW5lIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewot
ICAgIGF1dG8qIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVy
Vmlldyo+KHZhbHVlKTsKKyAgICBhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlND
OjpKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiB3cmFwcGVyLT5pbXBsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggOTdhYTRiOWRhNGE2ZDhhMzk2
Njg2YWU3YTlkYTFjYTkzNDZiOWVlNy4uYjU4MmRiMGY1NmQ3MjMyODk1MjBjZTY2YzBlMzBlZjE1
MjcxMjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RP
TUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpCiAgICAgSlNDOjpWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0
b3I8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOworICAg
IGF1dG8gaXRlcmF0b3IgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBl
ciwgSXRlcmF0b3JUcmFpdHM+Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJh
dG9yKQogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1J
dGVyYXRvciBvYmplY3QiKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGYxNTRjMmE2NDEzZWU4M2M0Zjk1YWM2Yjc2NWNiMzRj
MjRjZDI3NzUuLjdhYzg1ZWM0N2QzMWZkNTI5MDVkZjVkYmE3YThiMDQ1YWJlNDQyZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCkBAIC0x
MDcsNyArMTA3LDcgQEAgRE9NV2luZG93JiBKU0RPTVdpbmRvd1NoZWxsOjp3cmFwcGVkKCkgY29u
c3QKIAogRE9NV2luZG93KiBKU0RPTVdpbmRvd1NoZWxsOjp0b1dyYXBwZWQoSlNPYmplY3QqIHZh
bHVlKQogewotICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93U2hl
bGwqPih2YWx1ZSk7CisgICAgYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRE9N
V2luZG93U2hlbGwqPih2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gJndyYXBwZXItPndpbmRvdygpLT53cmFwcGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCA5YzEwYjQ2MWJi
Y2MyMDIwMzJiNjNlMjE4NjRmMDg2NjI5ZjQyOGE2Li4xZmRmZDJmYjczZjQyZjY4OWQ0ZTljYzY2
NzQyNTg3NDI3OWI1NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZh
bHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8VG91YwogCiB2
b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBKU0M6OkpTRnVuY3Rpb24qJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0ganNE
eW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPih2YWx1ZSk7CisgICAgcmVzdWx0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNDOjpKU0Z1bmN0aW9uKj4odmFsdWUpOwogfQogCiBib29sIEpTRGljdGlv
bmFyeTo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgU3RyaW5nJiByZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmgKaW5kZXggNjljNGNhODI4OTE5YzliMTNhYmFiMWM4M2I2YmFhMDJh
OWQ2YmMyYS4uYjYzNGI1NzRjMDA4NDIzNjk2NDg0YzdiZjg0ZjE2YjNlN2EyYzUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaApAQCAtMzEsMTEg
KzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRG9jdW1l
bnQqIGpzRG9jdW1lbnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNE
b2N1bWVudCoganNEb2N1bWVudENhc3QoSlNDOjpKU0NlbGwqIHZhbHVlKQogewotICAgIGlmIChV
TkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0RvY3VtZW50V3JhcHBlclR5cGUgPyBK
U0M6OmpzQ2FzdDxKU0RvY3VtZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gdmFs
dWUtPnR5cGUoKSA9PSBKU0RvY3VtZW50V3JhcHBlclR5cGUgPyBKU0M6OmpzQ2FzdDxKU0RvY3Vt
ZW50Kj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogSlNDOjpKU09iamVjdCogY2FjaGVkRG9jdW1l
bnRXcmFwcGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBEb2N1bWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEeW5hbWljRG93bmNh
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjk4ZWM0YmVlZjJkYzg3MjA1NGYxMjZmNzg1ODM4MWIyYWVhMGVmZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0
LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8cnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5saW5l
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTTm9kZTsKK0pTTm9kZSoganNO
b2RlQ2FzdChKU0M6OkpTQ2VsbCopOworY2xhc3MgSlNFbGVtZW50OworSlNFbGVtZW50KiBqc0Vs
ZW1lbnRDYXN0KEpTQzo6SlNDZWxsKik7CitjbGFzcyBKU0RvY3VtZW50OworSlNEb2N1bWVudCog
anNEb2N1bWVudENhc3QoSlNDOjpKU0NlbGwqKTsKK2NsYXNzIEpTRXZlbnQ7CitKU0V2ZW50KiBq
c0V2ZW50Q2FzdChKU0M6OkpTQ2VsbCopOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUbz4KK3N0cnVj
dCBKU0R5bmFtaWNDYXN0VHJhaXQgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CisgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgVG8gY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6anNEeW5hbWljQ2FzdDxUbz4oZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdDxKU05vZGUqPiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU05vZGUqIGNhc3QoRnJv
bSogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc05vZGVDYXN0KGZyb20pOworICAgIH0K
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFbGVtZW50Kj4g
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMg
SlNFbGVtZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAgeworICAgICAgICByZXR1cm4ganNFbGVt
ZW50Q2FzdChmcm9tKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgSlNEeW5hbWlj
Q2FzdFRyYWl0PEpTRG9jdW1lbnQqPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0RvY3VtZW50KiBjYXN0KEZyb20qIGZyb20pCisgICAg
eworICAgICAgICByZXR1cm4ganNEb2N1bWVudENhc3QoZnJvbSk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8Pgorc3RydWN0IEpTRHluYW1pY0Nhc3RUcmFpdDxKU0V2ZW50Kj4geworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNFdmVudCogY2Fz
dChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRXZlbnRDYXN0KGZyb20pOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgorQUxXQVlT
X0lOTElORSBUbyBqc0R5bmFtaWNEb3duY2FzdChGcm9tKiBmcm9tKQoreworICAgIHJldHVybiBK
U0R5bmFtaWNDYXN0VHJhaXQ8VG8+OjpjYXN0KGZyb20pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUbz4KK0FMV0FZU19JTkxJTkUgVG8ganNEeW5hbWljRG93bmNhc3QoSlNDOjpKU1ZhbHVlIGZy
b20pCit7CisgICAgaWYgKFVOTElLRUxZKCFmcm9tLmlzQ2VsbCgpKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PFRvPihmcm9tLmFzQ2VsbCgp
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20u
aAppbmRleCAyYTFiYTAxODAzMjRkMDg0YjRhYzViNmIyYzk1N2VkYzM5YTc5NmY3Li5kZmUyM2Jj
Yjc5NTYwZmViYzUxMGI3ZmEzZWYwNDRhZTJhYTI1YzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaApAQCAtMzEsMTEgKzMxLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRWxlbWVudCoganNFbGVtZW50Q2FzdChK
U0M6OkpTVmFsdWUgdmFsdWUpCitBTFdBWVNfSU5MSU5FIEpTRWxlbWVudCoganNFbGVtZW50Q2Fz
dChKU0M6OkpTQ2VsbCogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwo
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+
dHlwZSgpID49IEpTRWxlbWVudFR5cGUgPyBKU0M6OmpzQ2FzdDxKU0VsZW1lbnQqPih2YWx1ZSkg
OiBudWxscHRyOworICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID49IEpTRWxlbWVudFR5cGUgPyBK
U0M6OmpzQ2FzdDxKU0VsZW1lbnQqPih2YWx1ZSkgOiBudWxscHRyOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgK
aW5kZXggNTU5OWY0YzFmMTk3M2Q0YTNmMzVlYzg3ZTIxMjAwZjAxOTFjYzA5YS4uMDY4M2E2YWUx
Nzg2OTBhMDY4YTlmNGQ5NjZkYjYyOTQ0YjM4ZmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRDdXN0b20uaApAQCAtMjksMTEgKzI5LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRXZlbnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgSlNFdmVudCoganNFdmVudENhc3QoSlNDOjpKU0NlbGwq
IHZhbHVlKQogewotICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA9PSBKU0V2
ZW50VHlwZSA/IEpTQzo6anNDYXN0PEpTRXZlbnQqPih2YWx1ZSkgOiBudWxscHRyOworICAgIHJl
dHVybiB2YWx1ZS0+dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+
KHZhbHVlKSA6IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGUwNmY4MTZh
YjRmZWNiMGE5OWQ4YTVmMDY0YWMzMTE4Y2I1ZDgwYzEuLjVjZjRiOWI3ZTk5NmIxMTJhN2NhNDMz
MTdmMjBiYzAwOGFjYTIwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB3
cmFwCiB7CiAgICAgQVNTRVJUKHdyYXBwZXIuZ2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIGRv
Y3VtZW50ID0gZWxlbWVudC5kb2N1bWVudCgpOwotICAgIGF1dG8qIGRvY3VtZW50V3JhcHBlciA9
IGpzRG9jdW1lbnRDYXN0KHRvSlMoJnN0YXRlLCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHdyYXBwZXIuZ2xvYmFsT2JqZWN0KCkpLCBkb2N1bWVudCkpOworICAgIGF1dG8qIGRvY3Vt
ZW50V3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTRG9jdW1lbnQqPih0b0pTKCZzdGF0ZSwg
SlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih3cmFwcGVyLmdsb2JhbE9iamVjdCgpKSwg
ZG9jdW1lbnQpKTsKICAgICBBU1NFUlQoZG9jdW1lbnRXcmFwcGVyKTsKICAgICBkb2N1bWVudC5z
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY3JlYXRlRXZlbnRMaXN0ZW5lckZv
ckV2ZW50SGFuZGxlckF0dHJpYnV0ZShzdGF0ZSwgdmFsdWUsICpkb2N1bWVudFdyYXBwZXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAKaW5kZXggZjQwZGY2MTI0ZWJhYTNkNWIzNjkxODI3YzgxOGEzZjBjYWQ5N2ZlNy4uMzcy
MjI1ODNmZWU2YmZmZDNlZTJiYTViMzYzMmJlZTAwN2IwMWQ3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChKU1ZhbHVlIHZhbHVl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzRXZlbnRUYXJnZXRD
YXN0KEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIGlmIChhdXRvKiB0YXJnZXQgPSBqc0R5bmFt
aWNDYXN0PEpTRXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpKQorICAgIGlmIChhdXRvKiB0YXJnZXQg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU0V2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3Jh
cHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh0
aGlzVmFsdWUpKQogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0
V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKaW5kZXgg
YTBlZDkyMWExY2RhNzQxZmE4NGJlMDE5NGI4Y2UzMzlhNzM3NDc4Yi4uYzMwYjZmYzlmMDE2MjZj
YzY1OTViNWE5YzdmZmNkYzlhYjgwZGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3
IEBAIEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0
ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBKU01lZGlhU3Ry
ZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+
KHRoaXNWYWx1ZSk7CisgICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljRG93bmNhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93
VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRp
bmdzIikpOwogCkBAIC0xMTMsNyArMTEzLDcgQEAgSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1U
cmFjazo6Z2V0Q2FwYWJpbGl0aWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS50aGlzVmFsdWUoKTsKLSAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CisgICAgSlNNZWRpYVN0
cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljRG93bmNhc3Q8SlNNZWRpYVN0cmVhbVRy
YWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
ICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IDFlOGE4YzExOTM2YjZmNTVmYTdjZWRkYTI4
OWY1NjViYTI2NjJkNjIuLmQ1ZDZkMDNjYmJjZDFlNDRjMWI4N2JjMjU3NjUwNzBmMDY2MzRkNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC03OCwxMSAr
NzgsOSBAQCBpbmxpbmUgdm9pZCogcm9vdChOb2RlJiBub2RlKQogICAgIHJldHVybiByb290KCZu
b2RlKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9kZUNhc3QoSlNDOjpKU1ZhbHVl
IHZhbHVlKQorQUxXQVlTX0lOTElORSBKU05vZGUqIGpzTm9kZUNhc3QoSlNDOjpKU0NlbGwqIHZh
bHVlKQogewotICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNDZWxsKCkpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCktPnR5cGUoKSA+PSBKU05vZGVU
eXBlID8gSlNDOjpqc0Nhc3Q8SlNOb2RlKj4odmFsdWUpIDogbnVsbHB0cjsKKyAgICByZXR1cm4g
dmFsdWUtPnR5cGUoKSA+PSBKU05vZGVUeXBlID8gSlNDOjpqc0Nhc3Q8SlNOb2RlKj4odmFsdWUp
IDogbnVsbHB0cjsKIH0KIAogQUxXQVlTX0lOTElORSBKU0M6OkpTVmFsdWUgSlNOb2RlOjpub2Rl
VHlwZShKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBmYWMyMGIyNzI2
ZDllYjdmYzliOWVlYjU0MDk2MzdmZmQ5MWNjZTQwLi44MzY1YmEwNjk1MWY5YmMyN2E0YWFmY2My
OTFlZDc2ZGM1ZDc0MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNP
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgSlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVj
LCB0aGlzT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBh
ZmFjOTlhMDhjMTMzNzMzYTdlMTk5M2JmYzRhZDMxYjNhMzg5OWE0Li45ZmEyMDBlMDQyYzY2YWFj
YTkwOGJmMDkwYTljMWVhODQzNDVlOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3Rv
cnMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoRXhlY1N0YXRlJiBlCiAgICAgVk0m
IHZtID0gZXhlYy52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICAKLSAgICBKU1JlYWRhYmxlU3RyZWFtKiBzdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpT
UmVhZGFibGVTdHJlYW0qPihleGVjLmFyZ3VtZW50KDApKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFt
KiBzdHJlYW0gPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4oZXhlYy5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVy
IiwgbnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKaW5k
ZXggYTUzZjYzNWMwYWVmN2U5YzM0N2JmODliYTFlN2Y0ZDkyZTY3YjIwMS4uNGJiODhlN2YyMmUz
ZjVhMTNmY2RiNzExYTE5OWQwODFhZjcyMTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKQEAg
LTM3LDExICszNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHN0YXJ0
UmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7Ci0gICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNlID0ganNE
eW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwor
ICAgIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
UmVhZGFibGVTdHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNv
dXJjZSk7CiAKICAgICBBU1NFUlQoc3RhdGUuYXJndW1lbnRDb3VudCgpKTsKLSAgICBKU1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFtaWNDYXN0PEpT
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGNvbnRyb2xsZXIpOwogCiAg
ICAgc291cmNlLT53cmFwcGVkKCkuc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cihjb250cm9sbGVyKSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRp
YyB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByCiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlLmFyZ3VtZW50Q291bnQoKSk7
Ci0gICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNE
eW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
KiBjb250cm9sbGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyKj4oc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChjb250
cm9sbGVyKTsKIAogICAgIG1fY29udHJvbGxlci5zZXQoc3RhdGUudm0oKSwgdGhpcywgY29udHJv
bGxlcik7CkBAIC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6
c3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkKIAogc3RhdGljIHZvaWQgcHVsbFJlYWRhYmxlU3RyZWFt
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ewotICAgIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Nhc3Q8SlNS
ZWFkYWJsZVN0cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBKU1JlYWRhYmxl
U3RyZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFt
U291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIEFTU0VSVChzb3VyY2UpOwogCiAgICAg
c291cmNlLT53cmFwcGVkKCkucHVsbChXVEZNb3ZlKHByb21pc2UpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRl
eCBlMTI1MGIzNThmZTU2M2YwNDExM2QwMzMyZjBhZDExYzk5M2U1ZWVjLi5hNjE3NzA5N2E5MzJm
ZDM1ZWVjYzdmMDZmOTY2NGNiMDY2YjE1ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgor
I2luY2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTEyOCw3ICsxMjksNyBAQCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiB0
b0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoY2xh
c3NJbmZvID09IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFs
dWUpKTsKICAgICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0
dXJuIGpzRHluYW1pY0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxK
U1Byb3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOworICAgICAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxKU1By
b3h5Kj4oYXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApp
bmRleCBkYjdjZjg2NWYwNzdmNjM1NDRiYjBhMTY4NzE1NTEyMTViNTA0MWFhLi44YWY1Mzk1NTE3
NjE0NTNkZDVmZjViNDg5YWM4ZWNkN2FhMGQwYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBK
U0M6OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqCiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBz
dXBwb3J0IEpTTW9kdWxlUmVjb3JkLgogICAgIC8vIE9uY2UgdGhlIHJlZmxlY3RpdmUgcGFydCBv
ZiB0aGUgbW9kdWxlIGxvYWRlciBpcyBzdXBwb3J0ZWQsIHdlIHdpbGwgaGFuZGxlIGFyYml0cmFy
eSB2YWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0
cnktcHJvdG90eXBlLXByb3ZpZGUKLSAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNv
cmQgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU01vZHVsZVJlY29yZCo+KG1vZHVsZVJlY29y
ZFZhbHVlKTsKKyAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU0M6OkpTTW9kdWxlUmVjb3JkKj4obW9kdWxlUmVjb3JkVmFsdWUpOwogICAg
IGlmICghbW9kdWxlUmVjb3JkKQogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCAyMjMwZTFmYjExZGJiN2ZkZjcyZDhjZTI3OTZhYjBmZmVkNzJkZmExLi5m
MjY0MTczYzUxZTBiODFhYjE2M2Y5NzVlZWFmNTQxZmM5MjBkN2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEz
NzEsNyArMTM3MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRvci0+bmV4
dEtleVZhbHVlKG1fZXhlYywga2V5LCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWFw
SXRlcmF0b3JTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGpzRHluYW1pY0Rvd25jYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3Bl
cnR5U3RhY2subGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHdyaXRlKE5vbk1hcFByb3BlcnRpZXNUYWcpOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgU2VyaWFs
aXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikK
ICAgICAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLT5uZXh0KG1fZXhlYywga2V5KSkgewogICAg
ICAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAg
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldCo+KG9iamVjdCkp
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljRG93bmNhc3Q8SlNTZXQqPihv
YmplY3QpKTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVy
dHlOYW1lQXJyYXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgd3JpdGUoTm9uU2V0UHJvcGVydGllc1RhZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAppbmRleCA0Y2I4OGIy
ZGU1M2M4YjJiMGQwMzdlMDBiNzgyMWI2Y2JmNTJjZDAyLi5mZDhjNmZmOGUyYTY1OGFmZmI1OWYz
NzA2MzI5NjM2YTkzZmFhMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0
cnVjdHVyZWRDbG9uZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBleGVjU3Rh
dGUKICAgICBBU1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50KCkpOwogCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byogYnVm
ZmVyVmlldyA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsK
KyAgICBhdXRvKiBidWZmZXJWaWV3ID0ganNEeW5hbWljRG93bmNhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPih2YWx1ZSk7CiAgICAgQVNTRVJUKGJ1ZmZlclZpZXcpOwogCiAgICAgYXV0byogYnVmZmVy
ID0gYnVmZmVyVmlldy0+YnVmZmVyKCk7CkBAIC02NiwyNSArNjYsMjUgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRl
KiBleGVjU3RhdGUKICAgICB9CiAgICAgYXV0byBidWZmZXJDbG9uZSA9IEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKIAotICAgIGlm
IChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNJbnQ4QXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHlu
YW1pY0Rvd25jYXN0PEpTSW50OEFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTSW50OEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1
Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwg
YnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTSW50
MTZBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNJbnQxNkFycmF5
Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZBcnJheTo6
Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVy
Q2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7
Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2YWx1ZSkpCisgICAg
aWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTSW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZl
clZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1p
Y0Nhc3Q8SlNVaW50OEFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxK
U1VpbnQ4QXJyYXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNV
aW50OEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTVWludDhDbGFtcGVkQXJy
YXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWludDhDbGFtcGVkQXJy
YXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1w
ZWRBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQxNkFycmF5Kj4odmFs
dWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQxNkFycmF5Kj4odmFsdWUpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2QXJyYXk6OmNyZWF0ZShleGVj
U3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVm
ZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChK
U0M6OmpzRHluYW1pY0Nhc3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5h
bWljRG93bmNhc3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1VpbnQzMkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5z
dHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQo
KSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpT
RmxvYXQzMkFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0Zsb2F0
MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0
MzJBcnJheTo6Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1v
dmUoYnVmZmVyQ2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxl
bmd0aCgpKSk7Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZh
bHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNGbG9hdDY0QXJyYXkqPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShl
eGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwg
YnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlm
IChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5h
bWljRG93bmNhc3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0RhdGFWaWV3OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1
cmUoKSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVm
ZmVyVmlldy0+bGVuZ3RoKCkpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCA0YzlhN2YwNWUwNDI4ZTQzMjU3Yzk1N2JlNjA1ZTY3YTNiZWU4MmMyLi40YTc0ZGUzOTAxZGY3
YTcwOWFlOGNhYzA5YTcxODlkZTY0NDRkMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjQ3NCwxMyArMjQ3NCw3IEBA
IHN1YiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogewogICAgIG15ICRpbnRlcmZhY2Ug
PSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7
Ci0KLSAgICByZXR1cm4gImpzTm9kZUNhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIjsK
LSAgICByZXR1cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50
IjsKLSAgICByZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9j
dW1lbnQiOwotICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VOYW1l
IGVxICJFdmVudFRhcmdldCI7Ci0gICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIgaWYgJGludGVyZmFj
ZU5hbWUgZXEgIkV2ZW50IjsKLSAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMkaW50ZXJmYWNl
TmFtZSo+IjsKKyAgICByZXR1cm4gImpzRHluYW1pY0Rvd25jYXN0PEpTJGludGVyZmFjZU5hbWUq
PiI7CiB9CiAKIHN1YiBHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgpAQCAtMzM0OSw3ICszMzQz
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKIApAQCAtMzM3MSw3
ICszMzY1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFs
c2U7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggZGVhYWU2M2MxMjg4NDY1N2M4MDA3
YjNkZjNiMDE4ODdiNjJjNGE0MS4uMjg3ZTk5YmIwYWQ5YzI5YmNmNTI3YTk3MDU2NDIxOTFkZDkx
ZGE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVgogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTSW50ZXJmYWNlTmFt
ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNJbnRlcmZhY2VOYW1l
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0ludGVyZmFjZU5hbWVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludGVyZmFjZU5hbWU6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBA
IC0xMzAsNyArMTMwLDcgQEAgYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
SW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsy
MTMsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGVyZgogCiBJbnRlcmZhY2VOYW1lKiBKU0ludGVy
ZmFjZU5hbWU6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZhbHVlKSkKKyAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZh
bHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDkwMjdlYWUy
NDBhN2JlNmFkYjMwMTA1ZWQ5NWIzNTRkZGVhNTllYjAuLjUyNmE2YTdjNTRhZjMxYzM2OWEyODhl
NTE2NjY0Y2QyZDhkYTYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBA
IC0xNDMsMTIgKzE0MywxMiBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JBdHRyaWJ1
dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RBY3RpdmVET01PYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsK
KyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc3Rh
dGUudGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0QWN0aXZl
RE9NT2JqZWN0RXhjaXRpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEFjdGl2ZURPTU9i
amVjdCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBK
U1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIHNl
dEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEFjdGl2
ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDcgKzI5
NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEFjCiAKIFRlc3RBY3RpdmVET01PYmplY3QqIEpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3Bw
CmluZGV4IDk3YjI4OTE1NjAzN2Y5YjVlZTc1NWJmOTMwOTRmNDQyMTY3ZmIwZmMuLjk2YzcxNjJm
MTU4ZjE2MmJhMWY4MTM1YjllNThlY2M0NDY5MzNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25z
LmNwcApAQCAtMTM3LDEyICsxMzcsMTIgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uczo6ZGVzdHJv
eShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlv
bnMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4
ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVh
Y3Rpb25zKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdEZvck9wZXJhdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENF
UmVhY3Rpb25zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25z
R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdENFUmVhY3Rpb25zJiwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uczo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIwOCw3ICsyMDgs
NyBAQCBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDRVJl
YWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0
aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RD
RVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Q0VSZWFjdGlvbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjIsNyArMzYyLDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zKiBKU1Rlc3RDRVJl
YWN0aW9uczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPih2YWx1ZSkpCisgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+
KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5j
cHAKaW5kZXggN2U4NmQ4ZWM0NTQ3MTE0YWYxM2ZkNGRjMDg5MzU2ZWM2MTI0OTNlZC4uZWUzMmZj
YjFjNzI4NTYzZDI5YTM3NWM2YTEwOWQxZDUwOGViNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQog
CiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0cmlidXRlKEV4
ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1
ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyJiwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWQKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0x
NjgsNyArMTY4LDcgQEAgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzQsNyArMjc0LDcgQEAg
SlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4odmFsdWUpKQogICAgICAg
ICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDA3YWRkZGI4ZDkxZGZlNzBlYjk2ZmQ0MTA1ZWVmYTZmYmYyYjNlYWEuLmEyY2VjODFh
NGZlYWJhYTJmMzI5ZjkwNjdmNjkxYjhiMjg4NmIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTI1LDcgKzEyNSw3
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEz
Niw3ICsxMzYsNyBAQCBib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMTEsNyArMjExLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2wKIAogVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LmNwcAppbmRleCBhMzU5YzU0OGFiMDk1YjE0MzY0NjI3NGE0Y2VhNTNlY2Y0
OTkzYjhmLi5mMmM4OTgwOTUxN2ZlNjUzZjBiMjliZTM2ZmZlOTczZmQ2OTM5ZjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoc3RhdGUtPnZtKCksICpkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzksNyArMTM5LDcgQEAg
Ym9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdEN1CiAKIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCogSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3Jh
cHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4o
dmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggM2VlODk0YjYzNWVlYThiODJj
MWYwNzE3MGE1ZjMxZmQ3Y2JjN2Q0MC4uYzE0Mjk3ZDBlNWIzNThkY2Y5YTA1MmZhOGNiMTFkYWZm
NTMyYzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNjEs
MTQgKzE2MSwxNCBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogQmluZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlcj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHN0YXRlLnRoaXNWYWx1
ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVj
dG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNzksNyAr
MTc5LDcgQEAgYm9vbCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXMKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1CiAK
IFRlc3RDdXN0b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcAppbmRleCBlMzk3YmVlNzg0OGVjNjFmYjkzNTk4YmNjY2M4
ZTYzNmE0N2Q0NTg2Li4yNDg4ZGYyNmJkYjUyYjUwY2Q2N2Q2MGNjYTU2NWIyNjUzNjdlNGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RET01K
SVQ6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIHRl
bXBsYXRlPD4gaW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+
OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJ
VCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdERPTUpJVFByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMTQ1LDcgKzExNDUsNyBA
QCBib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jbwogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RET01KSVRQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdERPTUpJVFByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4
IGY3OGQ0NTYyYjc5NDQ0MGRjMjdhODgzYmM1Mjc3ZjM3OWJlODEwNzguLjQzZmU1NTA2YWU0YjFj
YzVhZmQ4N2M1NDMwOTE5Mjc0MTJmYTcxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBKU09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiB0
ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdEV2ZW50Q29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXZlbnRD
b25zdHJ1Y3RvckF0dHIxR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Im
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBib29sIHNl
dEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDFkNjAwZDFjMDVkZWI2MDExYjcwMjkxNWFkNDRmOTUwMWIz
NWY5ZmUuLmJkNmQ5OWZiOWI3ZjMxZmIzYmNhNjY2ZjVkYTQyM2FjYzJmZWFiOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTU5LDE0ICsxNTksMTQgQEAgYm9vbCBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIHMKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RXZlbnRUYXJnZXQ+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihzdGF0
ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudFRhcmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVz
dEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXZlbnRUYXJn
ZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdgog
CiBUZXN0RXZlbnRUYXJnZXQqIEpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudFRhcmdldCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndy
YXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKaW5kZXggN2I5Y2Y5MTllNDE1OTU4OTA3MDExODVhZDczNzE4ZmFlMWIxYTU1YS4uYjNm
MjhlOGJlYmUwMzM0MWU3ZjU4ZWZkYmJlNmFhZTI4ZmE0YTFiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlv
bi5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEV4Y2VwdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRl
JiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdEV4Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFt
ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RFeGNlcHRpb24mLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgp
LCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBz
ZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RFeAogCiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNzdmOWQzNWY3ZjhhM2I4ZThlOTU3OGNl
ODhjNjEwZDJmNTU2M2FjZi4uNmZlN2JkZTcyMmRjY2NlNDZlYzIzNDEyYTgyN2I3ODlhMmZmM2Y4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiB7CiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwotICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk4LDcgKzE5OCw3IEBA
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdEdlCiAKIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCmluZGV4IGUzYTQ1N2Y0MzUxMjEwZjc5Y2E5NTQ0ZmQzYjFmYTQ3NDdiY2Jm
MmMuLmViNzE1OTc0YmNiNTIwMjNmY2MzYjM1MGIzMjRjZTMyYmQ3NjM3YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCkBAIC0xNzcsMTIgKzE3NywxMiBAQCB2b2lkIEpTVGVzdEdsb2Jh
bE9iamVjdDo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0R2xvYmFsT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNh
c3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewot
ICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xv
YmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBq
c0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
UmVndWxhckF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RHbG9iYWxPYmplY3QmLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEdsb2JhbE9iamVjdFBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0R2xvYmFsT2Jq
ZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxP
YmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHbG9iYWxP
YmplY3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKSk7CkBAIC0yNzAsNyArMjcwLDcgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTUyNCw3ICs1MjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbAogCiBU
ZXN0R2xvYmFsT2JqZWN0KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEdsb2JhbE9iamVjdCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDJmZjljMDBjNjFmOTFlNGQ3N2VkODJlNDRjYTVmMDliOGQ2NzU4NWMuLmE4
ZjY3Mzk4YjY5MGI2ODBkNDFkM2VlNzE5NzA4NDM1ZGMwZWJmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCkBAIC0zOTksMTIgKzM5OSwxMiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJv
eShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNl
KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0
YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJp
bmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHN0
YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIy
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCkBAIC02MzEsNyArNjMxLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1YKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25z
dHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtNjQy
LDcgKzY0Miw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFCiAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDI5LDcgKzEwMjks
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRl
cmZhY2U6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkKKyAgICBpZiAo
YXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
LmNwcAppbmRleCBmZDNlMTE3YmYxODg5ZmM1OGFiODYzOGExODIwMzYyNzRjMGViMzUxLi45NTc1
MmRjODM0OTNjZGRiMzUzYWVhMjMzMDBkNDZkZDEzYjE5MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZSogQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46
OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQog
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE0Myw3
ICsxNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTU0LDcgKzE1
NCw3IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VM
ZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMSw3ICsy
MDEsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUqIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjp0b1dyYXBwZWQoSlND
OjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDlhZmZkYzRlMmRh
ZWM0MDIxMGFmMWVhM2YxYThlYzE1YjRiZGY0YWUuLjg0OWJjNzJlYjM3NzVkZTBiNTBkM2ZlZjYy
ZTBlZWE2NTFjYTI0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtMTMxLDE0ICsxMzEsMTQg
QEAgdm9pZCBKU1Rlc3RJdGVyYWJsZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0SXRlcmFibGUqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFi
bGU+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGUqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0
dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlKj4oc3RhdGUudGhpc1ZhbHVlKCkp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEl0ZXJhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgc2V0SlNU
ZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJdAog
CiBUZXN0SXRlcmFibGUqIEpTVGVzdEl0ZXJhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZh
bHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVy
YWJsZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEl0ZXJhYmxlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCmluZGV4IDVhNDhmM2M3MjI5OGQzNmI0OGZlYTk2YzkxNzkyNTFjNjQx
YzZjYTcuLmRkNDg5NzRmYWJjMDkyYTBmOWMzODQ0N2FjMmQ4YTkxOTRjZTQ2NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTM0LDEyICsxMzQsMTIg
QEAgdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIEJp
bmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRl
KEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNE
eW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1
c3RvbUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciYsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xODUsNyArMTg1
LDcgQEAgYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCmluZGV4IGQ5NTQ2NGFlYjMwNjk5ZTFmYTY2YzlhMTRmOWNjZWU5ZjRiMWIwNjUu
LjU4N2E5ZTQyZGQzMDdmYjFmZmZiZWFmNzU5NmY2YjJiZjkwY2NmNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEyNSwxNCArMTI1LDE0IEBA
IHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciog
QmluZGluZ0NhbGxlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPjo6Y2FzdEZvck9wZXJh
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50
aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIs
NyArMjMyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWUKIAogVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBw
ZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odmFs
dWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5NGYyNTY1
ZGI2NTY0NDU0MTkzNGFmNWNjM2FhMzgyMmYzZDA1OWI1Li44Nzg2ZjQzN2YyOWEyNzk3ZGY5NWNk
OGY3ODgyYjhlY2ZiMGE5MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CkBAIC0xNjIsNyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKIHsKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyArMjQ4LDcgQEAgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0TmEKIAogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkpCisgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBmOGZkYzBjNjI4YTJkZGNjMzEwMmU5OGMx
MzI5YmNhOWRkOTY2Y2FkLi4zMzcxMGIxM2NmZmI2MGZkNDY3ZDdhMjYwMjJhNDBlNDU0Y2E0NmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vZGUuY3BwCkBAIC0xNjgsMTIgKzE2OCwxMiBAQCBKU09iamVjdCogSlNUZXN0Tm9k
ZTo6cHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogdGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2Fz
dEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9k
ZSogQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUm
IHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihzdGF0ZS50
aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGUqPihz
dGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb2Rl
TmFtZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3ROb2RlJiwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSk7CkBAIC0xOTYsNyArMTk2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIHsKICAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8
SlNUZXN0Tm9kZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5v
ZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGUKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpT
VGVzdE5vZGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5v
ZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5jcHAKaW5kZXggMTViZTNiNmNjOGFiNTI5MjhiMmU0ODdhMTIxZDM2ZDRhZjE1Mjc5NC4u
M2IxNjE3NzEyMmUzM2VmNDk3NmUxNWJiNzRiYmE5ZGE5ODRmNDMzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTQ0LDEyICsxNDQsMTIgQEAgdm9pZCBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRl
dGVybWluaXN0aWM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljUmVhZG9ubHlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE5vbmRldGVybWlu
aXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTM1MSw3ICszNTEsNyBAQCBib29sIHNl
dEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0
aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3
ICs1MzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RObwogCiBUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyogSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAx
MjlhMjRhNzZjYjE2ZDRmMDFjZWQ2YzNjMTkwNjMxNWI1OGMyYjg5Li45NmE4MzMzZGRkZTEyODMx
OTQ2MmE5NGQyYTc4NjU1YzJiNmU0MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTgwNywxMiArMTgwNywx
MiBAQCBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCB1bgogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RP
YmoqIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUm
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9
CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+
OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYsIEpTVGVzdE9iaiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzI5OSw3ICszMjk5
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
VGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T2JqUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zMzEwLDcgKzMzMTAsNyBA
QCBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPYmpQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtODM1Myw3ICs4MzUzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2IKIAogVGVz
dE9iaiogSlNUZXN0T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCisgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkp
CiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4
IDY2OTBkMmNiMWRkNDBlMWUyMmJhNWY5MDk1YTY4NWYyNTE3ODU2MmUuLjFmNmI0YjJkOTYwYWZj
YTk4NDllMWYzNzhjZjg3NWEzYmRjNTQ2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAg
LTIzNiw3ICsyMzYsNyBAQCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAg
ICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1By
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNCw3ICszMDQsNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdgogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UuY3BwCmluZGV4IDNkMmQzYzAyZGY4ODY3YmMwOThmY2ZlZTIyOGM4ZjhlN2VmYTQ1
NDcuLjQ4YjA2ZjAzM2QyMDJjZjNhOTI1NzQ0N2NiYWRjMTQ5NGRmMTZiODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdAogewogICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4Miw3ICsxODIs
NyBAQCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRl
c3RPdgogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSogSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgp
OwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCmluZGV4IDFkYjY3ZjQ3YTllMTYzNTM4MmM3YTQzNGY5ZTQ3NGRjYTliMTkzNTUuLjkwYjZl
OTJhN2MyMzRiZTBiZTk5ZTNiMjY4NmFmODVmZmMxOTdjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5jcHAKQEAgLTE1OCwxNCArMTU4LDE0IEBAIGJvb2wgSlNUZXN0T3ZlcnJp
ZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc1LDcgKzI3NSw3IEBAIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE92CiAKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQorICAgIGlm
IChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMGNkYTUw
NmU3ZjdiODdmM2E0NmFmZmQ3MDk0YjMyMzZlMWRjNjllMy4uYmMyMDUwMDJjMmY3YmVlYTllOGIx
Nzg1OGEyY2E0NmRmODNhM2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAt
MTQwLDEyICsxNDAsMTIgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNT
dGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJp
YWxpemF0aW9uKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yT3Bl
cmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U2VyaWFsaXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmluZ0F0
dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHQKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXphdGlvblBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlv
blByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRp
b246OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHUKICAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7Ci0gICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00MzgsNyArNDM4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAog
VGVzdFNlcmlhbGl6YXRpb24qIEpTVGVzdFNlcmlhbGl6YXRpb246OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6YXRpb24qPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4odmFsdWUpKQogICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5k
ZXggM2NjYjg2ZmU1OTk3NmJiZGRmZjMwYWIyNjdjMjI2YTYzYzE2YWViNi4uNzA2ZjI0NGZmMzUx
ZGQyYzBiMmRmMTMxNWRlYTAzZDAyM2UyODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWVHZXR0ZXIoRXhl
Y1N0YXRlJiwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CkBAIC0yMjksNyArMjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wg
c2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTUs
NyArMzU1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAogVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0
b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1
ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5j
cHAKaW5kZXggODlhZDMyZjYzMTZkODA1MzQ1NmY2MTE2NmNhYzk4ODQyNmI4NjlmMi4uN2Q2YjJj
MGZlYjU5YzA4ZTczYjk3MGQ3NGFlODdiMDBiMzk5ZjMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
CkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogQmluZGlu
Z0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMqIEJpbmRpbmdDYWxsZXI8
SlNUZXN0VHlwZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS50aGlzVmFsdWUo
KSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzKj4oc3RhdGUu
dGhpc1ZhbHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNV
bnNpZ25lZExvbmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RUeXBlZGVmcyYsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zNTIsNyArMzUy
LDcgQEAgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0VHlw
ZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRl
ZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZz
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODA2LDcgKzgwNiw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdFR5CiAKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGM5ZGFkMjc4NmZj
OGYxYWE0ZGMzYjc5MTA3NWQ3N2YwMzViNWY0NzcuLjJlNWIxNTI1YWE2MGVhMTZiMDMxMTY1MjRj
M2U3NDgzMzExOWU1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW0KQEAgLTM5OSw3ICszOTksNyBAQCAtICh2b2lkKXNldFZhbHVlOihpZCl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KFtzZWxmIF9pbXBdKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNPYmplY3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9W
YWx1ZShleGVjLCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBz
bG90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDA5OWFm
ZjA0YzI5MzA5M2ExNWJmNjM5NTUwZjE1NTE2YjQzZGM0YWQuLmQzMGE1ODViYjMzNTRlYzhlNDJk
NGU4ZmFlMThmZGVjNTM1NTlkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGlt
ZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIFJ1bnRpbWVBcnJheSog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PFJ1bnRpbWVBcnJheSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcAppbmRleCA1OTYxOWZiMjQzZTg5OTI5Y2EwZjA5ZTU4Mzc4MWNk
MGQ2OTUyZWJkLi4zMmNjMGFiNWQ3MWI5Njk1NWE5MGE4NzNjNTRhZGJhOGQ0MWQ3YTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
RW5jb2RlZEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJ1bnRpbWVNZXRob2Qq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CisgICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0
LT5tX21ldGhvZC0+bnVtUGFyYW1ldGVycygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCAzNDk1MmU1MTJkNTc5YzQxZTZlNTViYzU5NTZiNmI2MmY3Yjlh
YjMwLi41YzEwMjkxNGQ1YWUzOWNhNzliODZmMmNmNTNkYWM1ZDJkZDBkOTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM4ODksNyArMzg4OSw3IEBAIHN0
YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgYXV0byBtZWRpYUpTV3JhcHBlciA9IHRvSlMoJmV4
ZWMsICZnbG9iYWxPYmplY3QsIG1lZGlhKTsKICAgICAKICAgICAvLyBSZXRyaWV2ZSB0aGUgY29u
dHJvbGxlciB0aHJvdWdoIHRoZSBKUyBvYmplY3QgZ3JhcGgKLSAgICBKU0M6OkpTT2JqZWN0KiBt
ZWRpYUpTV3JhcHBlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4o
bWVkaWFKU1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhSlNXcmFwcGVyKTsKICAg
ICBpZiAoIW1lZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwo
KTsKICAgICAKQEAgLTM4OTcsNyArMzg5Nyw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJv
bGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAg
ICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2Jq
ZWN0LT5nZXQoJmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNDOjpKU1ZhbHVlKCkpOwogCi0gICAgSlNDOjpKU09iamVjdCogY29udHJvbHNIb3N0
SlNXcmFwcGVyT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihjb250
cm9sc0hvc3RKU1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xzSG9zdEpTV3Jh
cHBlck9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sc0hv
c3RKU1dyYXBwZXIpOwogICAgIGlmICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAg
ICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKIApAQCAtMzk0NSw3ICszOTQ1LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgSlNDOjpKU1Zh
bHVlIGNvbnRyb2xsZXJWYWx1ZSA9IGNvbnRyb2xsZXJKU1ZhbHVlKCpleGVjLCAqZ2xvYmFsT2Jq
ZWN0LCAqdGhpcyk7Ci0gICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6
OkpTT2JqZWN0KiBjb250cm9sbGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09i
amVjdCo+KGNvbnRyb2xsZXJWYWx1ZSk7CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM5NTYsNyArMzk1Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpCiAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgIC8v
ICAgICBOb25lCiAgICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVj
dC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2Fw
dGlvbkNvbnRhaW5lciIpKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhvZFZhbHVlKTsKKyAgICBKU0M6OkpT
T2JqZWN0KiBtZXRob2RPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4o
bWV0aG9kVmFsdWUpOwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
QEAgLTY2NDksNyArNjY0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRy
b2xsZXJWYWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBnbG9iYWxPYmplY3QsIGFyZ0xpc3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0g
ICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxK
U0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBjb250
cm9sbGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xs
ZXJWYWx1ZSk7CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
QEAgLTY2NjIsNyArNjY2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgbWVkaWFKU1dyYXBwZXJPYmpl
Y3QtPnB1dERpcmVjdChleGVjLT52bSgpLCBjb250cm9sc0hvc3QsIG1lZGlhQ29udHJvbHNIb3N0
SlNXcmFwcGVyLCBKU0M6OkRvbnREZWxldGUgfCBKU0M6OkRvbnRFbnVtIHwgSlNDOjpSZWFkT25s
eSk7CiAKLSAgICBKU0M6OkpTT2JqZWN0KiBtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVj
dCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFDb250cm9sc0hvc3RK
U1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVy
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhQ29udHJvbHNI
b3N0SlNXcmFwcGVyKTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0
KQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA0MGQzNGRjNDJhNmMxZTUyNTUxZDViNzkxNDBhMzc5
YmI0ZjFiNTZkLi4zMTAyODg5OTUwZTBmODJmY2Y0YTNiMTFiNDc3ZDAyNGU1NDU5YzA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTE1
MDEsNyArMTUwMSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVu
ZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgIGhhbmRsZXIg
PSBzY3JpcHRMaXN0ZW5lci0+anNGdW5jdGlvbigmbm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAg
IGlmIChoYW5kbGVyICYmIHN0YXRlKSB7CiAgICAgICAgICAgICBib2R5ID0gaGFuZGxlci0+dG9T
dHJpbmcoc3RhdGUpLT52YWx1ZShzdGF0ZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBmdW5jdGlv
biA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPihoYW5kbGVyKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTRnVu
Y3Rpb24qPihoYW5kbGVyKSkgewogICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb24tPmlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZU51bWJlciA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpIC0gMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCAxNmZiYTY4MjJlNDc2YzMzMTc0MTAyNzYw
ZTE4MDU2ODJlYzVkOTFjLi4xZjhlZGYzMzZiYzY3NTI0MjRkMDQ1N2Q2MzkyZDhhMmU1MzQxODg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0yMDUsNyArMjA1LDcg
QEAgV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZv
ck5vZGVIYW5kbGUoV2ViRnJhbWUmIGZyYW0KICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBlbGVtZW50V3JhcHBlciA9IEpTQzo6anNEeW5hbWlj
Q2FzdDxXZWJDb3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKTsKKyAgICBhdXRvIGVsZW1l
bnRXcmFwcGVyID0gV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6SlNFbGVtZW50
Kj4odG9KUyhlbGVtZW50KSk7CiAgICAgaWYgKCFlbGVtZW50V3JhcHBlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAK
</data>
<flag name="review"
          id="316154"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293339</attachid>
            <date>2016-10-30 02:12:52 -0700</date>
            <delta_ts>2016-10-30 03:06:15 -0700</delta_ts>
            <desc>Patch for landing. Extended for const pointers</desc>
            <filename>bug-164137-20161030180858.patch</filename>
            <type>text/plain</type>
            <size>124437</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE2ZTY2YzEyZjUzYWI2
ZjIzOWQ0OTc4ZDA2ZjQzMmJlMDhlYjdhNC4uYmE0NGMyNmUyOTBhYjg3NmVlYjZlNjA1NTU4ODQz
NDFhMGE4MTNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NSBAQAorMjAxNi0xMC0zMCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NXSBJbnRy
b2R1Y2UgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNworCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIEluIFdlYkNvcmUsIHdlIGhhdmUgc2V2ZXJhbCBleHRlbmRl
ZCBKU1R5cGVzLCBsaWtlIEpTRWxlbWVudFR5cGUuCisgICAgICAgIEZvciB0aGVzZSB0eXBlcywg
V2ViQ29yZSBvZmZlcnMgdGhlIGZhc3RlciBjYXN0aW5nIGZ1bmN0aW9uIGNvbXBhcmVkCisgICAg
ICAgIHRvIEpTQzo6anNEeW5hbWljQ2FzdC4gRm9yIGV4YW1wbGUsIGZvciBKU0VsZW1lbnRUeXBl
LCB3ZSBoYXZlCisgICAgICAgIGpzRWxlbWVudENhc3QuCisKKyAgICAgICAgVGhlIHByb2JsZW0g
aXMgdGhhdCB3ZSBtYXkgZmFsbCBpbnRvIHRoZSBzbG93IGNvZGUgaWYgd2UgY2hvb3NlCisgICAg
ICAgIEpTQzo6anNEeW5hbWljQ2FzdCBieSBhY2NpZGVudC4gU2VsZWN0aW5nIHRoZSBhcHByb3By
aWF0ZSBmdW5jdGlvbgorICAgICAgICByZXF1aXJlcyBzcGVjaWFsIGNhcmUgaW4gdGhlIElETCBj
b2RlIGdlbmVyYXRvciB3aGVuIHdlIHdvdWxkIGxpa2UKKyAgICAgICAgdG8gdXNlIGZhc3RlciBj
YXN0aW5nIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBuZXcg
Y2FzdGluZyBmdW5jdGlvbiwgV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3QuCisgICAgICAgIEl0
IGlzIGEgdGhpbiB3cmFwcGVyIHRvIHRoZSBKU0M6OmpzRHluYW1pY0Nhc3QuIEJ1dCBpdCBzZWxl
Y3RzIHRoZQorICAgICAgICBmYXN0ZXIgY2FzdGluZyBmdW5jdGlvbnMgY29ycmVjdGx5IGJ5IHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9uLgorCisgICAgICAgIFdlIGRvIG5vdCBjaG9vc2UgdGhlIHdh
eSBzcGVjaWFsaXppbmcgSlNDOjpqc0R5bmFtaWNDYXN0IGRpcmVjdGx5LgorICAgICAgICBJZiB3
ZSBmb3JnZXQgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgc3BlY2lhbGl6ZXMgSlNDOjpqc0R5
YW5taWNDYXN0LAorICAgICAgICBpdCBkb2VzIG5vdCBjYXVzZSBhbnkgY29tcGlsZSBlcnJvcnMs
IGJ1dCBpdCBjYXVzZXMgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgVGhpcyBidWcg
aXMgaGFyZCB0byBmaWd1cmUgb3V0LiBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIGFkZCBhIG5l
dyBmdW5jdGlvbi4KKworICAgICAgICBPdXRzaWRlIEpTQywgb25seSBUb29scycgRHVtcFJlbmRl
clRyZWUgdXNlcyBKU0M6OmpzRHluYW1pY0Nhc3QuCisgICAgICAgIFRoaXMgY29kZSBoYXMgRklY
TUUgdGhhdCB3ZSBzaG91bGQgdXNlIEpTQyBBUElzIGluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGlu
ZworICAgICAgICBKU0MgdGhpbmd5LiBTbyB0aGlzIHNob3VsZCBiZSBzb2x2ZWQgaW4gdGhlIGxh
eWVyIG9mIEpTQyBBUElzIGFuZCBjaGFuZ2luZworICAgICAgICB0aGlzIGpzRHluYW1pY0Nhc3Qg
dG8gV2ViQ29yZSdzIGpzRHluYW1pY0Rvd25jYXN0IGFuZCBleHBvc2luZyBXZWJDb3JlJ3MgdGhp
bmd5CisgICAgICAgIGFyZSBub3QgZ29vZCBjaGFuZ2UuIFNvIHdlIGxlYXZlIHRoZSBjb2RlIGFz
IGlzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lv
bjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhc3RUaGlzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dG9BcnJheUJ1ZmZlclZpZXcpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okl0ZXJhdG9yVHJhaXRzPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjp0b1dyYXBw
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6anNEb2N1bWVudENhc3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNEeW5hbWljQ2FzdFRyYWl0OjpjYXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRHluYW1pY0Nhc3RUcmFpdDxKU05vZGU+OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRHluYW1pY0Nhc3RUcmFpdDxKU0VsZW1lbnQ+OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRHluYW1pY0Nhc3RUcmFpdDxKU0RvY3VtZW50Pjo6Y2FzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFdmVudD46OmNhc3QpOgorICAgICAgICAoV2ViQ29yZTo6
anNEeW5hbWljRG93bmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6anNFbGVtZW50Q2FzdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNFdmVudEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6anNFdmVudENhc3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50
VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGlu
Z3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRp
ZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6anNOb2RlQ2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25z
dHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVh
bURlZmF1bHRSZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1T
b3VyY2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRSZWFkYWJsZVN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpwdWxsUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0
cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVyVmlldyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09i
amVjdCk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
SW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJmYWNl
TmFtZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8
SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b1dyYXBwZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2Fz
dEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENF
UmVhY3Rpb25zPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RD
RVJlYWN0aW9uc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENFUmVh
Y3Rpb25zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q0VSZWFjdGlvbnM6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxl
cjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+
OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjo6Y2FzdEZvckF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RFdmVudFRhcmdldD46OmNhc3RG
b3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RFeGNlcHRpb24+OjpjYXN0Rm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46
OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdsb2Jh
bE9iamVjdDo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNU
ZXN0SW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2FzdEZv
ckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RJdGVyYWJsZTo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmlu
ZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3RGb3JBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpjYXN0
Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0Nh
bGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aW5kaW5nQ2FsbGVyPEpTVGVzdE5vZGU+OjpjYXN0Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZvck9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OnRvV3Jh
cHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhc3RGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0
Rm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iajo6dG9XcmFwcGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnRvV3JhcHBlZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpbmRpbmdDYWxs
ZXI8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhc3RGb3JPcGVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBwZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3RGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0
aW9uPjo6Y2FzdEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxp
emF0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXph
dGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6YXRpb246
OnRvV3JhcHBlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaW5k
aW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhc3RGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdEZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2Fz
dEZvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBlZCk6CisgICAgICAgICog
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoLVtXZWJTY3JpcHRPYmpl
Y3Qgc2V0VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNw
cDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6
Omxlbmd0aEdldHRlcik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRyb2xsZXJKU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUNhcHRpb25Db250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorCiAyMDE2LTEw
LTI5ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDU1MgUGFyc2Vy
XSBBZGQgZm9udC12YXJpYW50LSoga2V5d29yZCBwcm9wZXJ0eSBzdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOTI3YmU0Y2QwNDJlMDkyODhkNTY1NDk1MGY4MTI5NWRmYmEzYWMyZS4uNGYzOTI1MTg3NDYx
ZDNiMjU3NWExNjYwMmI5ZWJiNWIxODNkMTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE2LTEwLTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtET01dIEludHJvZHVjZSBXZWJDb3JlOjpqc0R5bmFtaWNEb3duY2FzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKToKKwogMjAxNi0x
MC0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBt
b3JlIG9mIERPTSBmcm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTEzMWMzOTkz
OWY2ZGViYmMyZWZiYWI5NGU1NjBmMDNkMzFkMzViNS4uY2VmYWIxZDFlMWVjY2JlZWZkZTY1Mzc2
NTM5Njk0NWFmN2Q5YWZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIwMSw2ICs2MjAxLDcgQEAKIAkJRTFGRjhGNkQxODBE
QjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZGOEY2QjE4MERCNUJFMDAxMzI2NzQg
LyogQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCAqLzsgfTsKIAkJRTMxNTBFQTYxREE3MjE5MDAw
MTk0MDEyIC8qIEpTTm9kZURPTUpJVC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0FGQTk2NDFEQTZFOTA4MDAyODYxQkQgLyogSlNOb2RlRE9NSklU
LmNwcCAqLzsgfTsKIAkJRTMxNTBFQTcxREE3MjE5MzAwMTk0MDEyIC8qIERPTUpJVEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTUwRUE1
MURBNzIxOEQwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggKi87IH07CisJCUUzMTgwMzlEMURD
NDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpT
RHluYW1pY0Rvd25jYXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM1NjVCN0IxREMyRDZDOTAwMjE3REJEIC8qIEpTRXZlbnRDdXN0b20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVFNDlGMURD
MkQ1NzUwMEVBQTlEMyAvKiBKU0V2ZW50Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM1Q0ExNEQxREJDM0EzRjAwRjgzNTE2IC8qIERP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEIxREJDM0EzQzAwRjgzNTE2IC8qIERPTUpJVEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwICovOyB9OwogCQlFMzVDQTE0RTFEQkMzQTQyMDBGODM1
MTYgLyogRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1Q0ExNEMxREJDM0EzQzAwRjgzNTE2IC8qIERP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCAqLzsgfTsKQEAgLTE0MDQzLDYgKzE0MDQ0LDcg
QEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzk4RkMyMzFEQzMyQTFCMDAzQzQ2ODQgLyogRE9NSklUSGVscGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNTg3MkUxREMzRjUyNjAwRjYwN0E2IC8qIEpTRHluYW1pY0Rv
d25jYXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRHluYW1pY0Rvd25j
YXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQUZBOTY0MURBNkU5MDgwMDI4
NjFCRCAvKiBKU05vZGVET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNOb2RlRE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNC
MkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFNDFEN0YzNUVDMDBCMEM5RDEg
LyogTG9hZGFibGVDbGFzc2ljU2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjE2MTksNiArMjE2MjEsNyBAQAogCQkJCUJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBK
U0RPTVdpbmRvd1NoZWxsLmggKi8sCiAJCQkJNDE3MEEyRTkxRDhDMENDMDAwMzE4NDUyIC8qIEpT
RE9NV3JhcHBlci5jcHAgKi8sCiAJCQkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEwIC8qIEpTRE9N
V3JhcHBlci5oICovLAorCQkJCUUzQTU4NzJFMURDM0Y1MjYwMEY2MDdBNiAvKiBKU0R5bmFtaWNE
b3duY2FzdC5oICovLAogCQkJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFu
ZGxlci5jcHAgKi8sCiAJCQkJRjNENDYxNDcxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5k
bGVyLmggKi8sCiAJCQkJRTM0RUU0OUYxREMyRDU3NTAwRUFBOUQzIC8qIEpTRXZlbnRDdXN0b20u
aCAqLywKQEAgLTI3NjA4LDYgKzI3NjExLDcgQEAKIAkJCQlGNTVCM0RERTEyNTFGMTJEMDAzRUYy
NjkgLyogVVJMSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzZFNjU0MzFENUNFRkJG
MDBGNzg2MkUgLyogVVJMUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0MyODlERjFBQTBG
RTVEMDA5QTlDRTMgLyogVVJMUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMTgwMzlE
MURDNDAwOTkwMDk5MzJDMiAvKiBKU0R5bmFtaWNEb3duY2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNENDM3QTIxRDU3QjNGRTAwQUI4NUVBIC8qIFVSTFV0aWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI3NjNCRjE2Njg5QkZCMDAyRkNBQ0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2ODE2MEQ2MTg3NjZBMTMwMDIxRTc5RCAvKiBVc2VyQWN0aXZp
dHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCmluZGV4IDA1OTFlZWM4MmQxNjI5ZjkzOTRm
ZTVlNmE0MWRmMWYxNzU0ODlhNDkuLmU1M2U3ZGYwYWU1ZjMxNjZiYTJhZWM1MzI2OTM1NzU5NWNm
YzcxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlT
ZXNzaW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxl
UGF5U2Vzc2lvbkN1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBKU0FwcGxlUGF5
U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNlc3Npb24q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVl
KTsKKyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbiIpKTsKIApAQCAtNzIsNyArNzIsNyBAQCBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNBcHBsZVBheVNlc3Npb24qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsK
KyAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
QXBwbGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24iKSk7CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwotICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7Cisg
ICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0Fw
cGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbiIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
aW5kZXggODcwMGQ3MmZmMDU5MzYxMzAzYjBkNjgzYjcyMDBmYjdjYjRhMzU3Ny4uYzQ0NWRlYTRm
YTU0MTk0MDY1ZTRlMDNlZGNmYjcxYzRhZWVmNGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCByZXBvcnRF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBDYWNoZWRT
Y3JpcHQqIGNhY2gKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGF1dG8qIGV4Y2Vw
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNDOjpFeGNlcHRpb24qPihleGNlcHRpb25WYWx1ZSk7Cisg
ICAgYXV0byogZXhjZXB0aW9uID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpFeGNlcHRpb24qPihl
eGNlcHRpb25WYWx1ZSk7CiAgICAgaWYgKCFleGNlcHRpb24pIHsKICAgICAgICAgZXhjZXB0aW9u
ID0gdm0ubGFzdEV4Y2VwdGlvbigpOwogICAgICAgICBpZiAoIWV4Y2VwdGlvbikKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6RXhj
ZXB0aW9uKiBleGNlcHRpb24sIENhY2hlZFNjcmlwdCogYwogICAgIHZtLmNsZWFyTGFzdEV4Y2Vw
dGlvbigpOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgaWYg
KEpTRE9NV2luZG93KiB3aW5kb3cgPSBqc0R5bmFtaWNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFs
T2JqZWN0KSkgeworICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QpKSB7CiAgICAgICAgIGlmICghd2luZG93LT53
cmFwcGVkKCkuaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0KiBjCiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTUwODc+
IFdlYiBJbnNwZWN0b3I6IFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbiBzaG91bGQgbm90IGV2YWx1
YXRlIEphdmFTY3JpcHQgaGFuZGxpbmcgZXhjZXB0aW9ucwogICAgICAgICAvLyBJZiB0aGlzIGlz
IGEgY3VzdG9tIGV4Y2VwdGlvbiBvYmplY3QsIGNhbGwgdG9TdHJpbmcgb24gaXQgdG8gdHJ5IGFu
ZCBnZXQgYSBuaWNlIHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGV4Y2VwdGlvbi4KLSAg
ICAgICAgaWYgKEVycm9ySW5zdGFuY2UqIGVycm9yID0ganNEeW5hbWljQ2FzdDxFcnJvckluc3Rh
bmNlKj4oZXhjZXB0aW9uVmFsdWUpKQorICAgICAgICBpZiAoRXJyb3JJbnN0YW5jZSogZXJyb3Ig
PSBqc0R5bmFtaWNEb3duY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uVmFsdWUpKQogICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZFRvU3RyaW5nKGV4ZWMpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb25WYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCmluZGV4IDE5ZGM5ZDhmN2E5Njk4NWM3Yjg5NWZmMzFlN2U5YjdlMTExM2Mx
MjcuLmExNWU4NjQ4YmQwYTMyYTM5NTJmYTIwMjViYmU2MzQzOTcwMjQ0YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIkpTRHluYW1pY0Rvd25jYXN0LmgiCiAj
aW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIldlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIgpAQCAtNTU3
LDcgKzU1OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1Zh
bHVlIHdyYXAoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPCiB0ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzPiBpbmxpbmUgSlNDbGFzcyYgY2FzdFRoaXNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CiAgICAgYXV0byB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKLSAgICBhdXRv
IGNhc3RlZFRoaXMgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDbGFzcyo+KHRoaXNWYWx1ZSk7Cisg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljRG93bmNhc3Q8SlNDbGFzcyo+KHRoaXNWYWx1
ZSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIHJldHVybiAqY2FzdGVkVGhpczsKIH0K
QEAgLTY3OSw3ICs2ODAsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNJdGVyYXRvckVuZChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiAKIGlubGluZSBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZp
ZXc+IHRvQXJyYXlCdWZmZXJWaWV3KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBhdXRvKiB3
cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlclZpZXcqPih2YWx1
ZSk7CisgICAgYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXcqPih2YWx1ZSk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gd3JhcHBlci0+aW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IDk3YWE0YjlkYTRhNmQ4YTM5NjY4NmFlN2E5ZGEx
Y2E5MzQ2YjllZTcuLmI1ODJkYjBmNTZkNzIzMjg5NTIwY2U2NmMwZTMwZWYxNTI3MTIxODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKQEAgLTI0Nyw3ICsy
NDcsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNET01JdGVyYXRvclBy
b3RvdHlwZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJhaQogICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
YXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBl
ciwgSXRlcmF0b3JUcmFpdHM+Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKKyAgICBhdXRvIGl0ZXJh
dG9yID0ganNEeW5hbWljRG93bmNhc3Q8SlNET01JdGVyYXRvcjxKU1dyYXBwZXIsIEl0ZXJhdG9y
VHJhaXRzPio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKICAgICAg
ICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Igb2Jq
ZWN0IikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1No
ZWxsLmNwcAppbmRleCBmMTU0YzJhNjQxM2VlODNjNGY5NWFjNmI3NjVjYjM0YzI0Y2QyNzc1Li43
YWM4NWVjNDdkMzFmZDUyOTA1ZGY1ZGJhN2E4YjA0NWFiZTQ0MmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIERPTVdpbmRvdyYgSlNET01XaW5kb3dTaGVsbDo6d3JhcHBlZCgpIGNvbnN0CiAKIERPTVdp
bmRvdyogSlNET01XaW5kb3dTaGVsbDo6dG9XcmFwcGVkKEpTT2JqZWN0KiB2YWx1ZSkKIHsKLSAg
ICBhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvd1NoZWxsKj4odmFsdWUp
OworICAgIGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0RPTVdpbmRvd1NoZWxs
Kj4odmFsdWUpOwogICAgIGlmICghd3JhcHBlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuICZ3cmFwcGVyLT53aW5kb3coKS0+d3JhcHBlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKaW5kZXggOWMxMGI0NjFiYmNjMjAyMDMyYjYz
ZTIxODY0ZjA4NjYyOWY0MjhhNi4uMWZkZmQyZmI3M2Y0MmY2ODlkNGU5Y2M2Njc0MjU4NzQyNzli
NTRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBA
IC0zNjEsNyArMzYxLDcgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFRvdWMKIAogdm9pZCBKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
SlNDOjpKU0Z1bmN0aW9uKiYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IGpzRHluYW1pY0Nhc3Q8
SlNDOjpKU0Z1bmN0aW9uKj4odmFsdWUpOworICAgIHJlc3VsdCA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTQzo6SlNGdW5jdGlvbio+KHZhbHVlKTsKIH0KIAogYm9vbCBKU0RpY3Rpb25hcnk6OmdldFdp
dGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFN0cmluZyYg
cmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5oCmluZGV4IDY5YzRjYTgyODkxOWM5YjEzYWJhYjFjODNiNmJhYTAyYTlkNmJjMmEuLjRm
M2I4M2FlMTYzYzViYWZmODEwNTY3MWFmZWE3NTdlNDhkZTAxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmgKQEAgLTMxLDExICszMSwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFMV0FZU19JTkxJTkUgSlNEb2N1bWVudCoganNEb2N1
bWVudENhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KK0FM
V0FZU19JTkxJTkUgSlNEeW5hbWljQ2FzdFJlc3VsdDxKU0RvY3VtZW50LCBGcm9tPiBqc0RvY3Vt
ZW50Q2FzdChGcm9tKiB2YWx1ZSkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzQ2VsbCgp
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT50
eXBlKCkgPT0gSlNEb2N1bWVudFdyYXBwZXJUeXBlID8gSlNDOjpqc0Nhc3Q8SlNEb2N1bWVudCo+
KHZhbHVlKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPT0gSlNEb2N1bWVu
dFdyYXBwZXJUeXBlID8gSlNDOjpqc0Nhc3Q8SlNEeW5hbWljQ2FzdFJlc3VsdDxKU0RvY3VtZW50
LCBGcm9tPj4odmFsdWUpIDogbnVsbHB0cjsKIH0KIAogSlNDOjpKU09iamVjdCogY2FjaGVkRG9j
dW1lbnRXcmFwcGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBEb2N1bWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEeW5hbWljRG93
bmNhc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25jYXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWFjZTZjZmUwZTdhNGQwZDg3OGY3NzFlMjcxOTkwYWM1OGFiOWJiZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRHluYW1pY0Rvd25j
YXN0LmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgordXNpbmcgSlNEeW5hbWljQ2Fz
dFJlc3VsdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxGcm9tPjo6
dmFsdWUsIGNvbnN0IFRvLCBUbz46OnR5cGUqOworCitjbGFzcyBKU05vZGU7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBGcm9tPgorSlNEeW5hbWljQ2FzdFJlc3VsdDxKU05vZGUsIEZyb20+IGpzTm9kZUNh
c3QoRnJvbSogdmFsdWUpOworY2xhc3MgSlNFbGVtZW50OwordGVtcGxhdGU8dHlwZW5hbWUgRnJv
bT4KK0pTRHluYW1pY0Nhc3RSZXN1bHQ8SlNFbGVtZW50LCBGcm9tPiBqc0VsZW1lbnRDYXN0KEZy
b20qIHZhbHVlKTsKK2NsYXNzIEpTRG9jdW1lbnQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgor
SlNEeW5hbWljQ2FzdFJlc3VsdDxKU0RvY3VtZW50LCBGcm9tPiBqc0RvY3VtZW50Q2FzdChGcm9t
KiB2YWx1ZSk7CitjbGFzcyBKU0V2ZW50OwordGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KK0pTRHlu
YW1pY0Nhc3RSZXN1bHQ8SlNFdmVudCwgRnJvbT4ganNFdmVudENhc3QoRnJvbSogdmFsdWUpOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxlY3Q+CitzdHJ1Y3QgSlNEeW5hbWljQ2FzdFRyYWl0IHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBUbyBjYXN0KEZyb20qIGZyb20pCisgICAgeworICAgICAgICByZXR1cm4gSlND
Ojpqc0R5bmFtaWNDYXN0PFRvPihmcm9tKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1
Y3QgSlNEeW5hbWljQ2FzdFRyYWl0PEpTTm9kZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRv
LCB0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFRvIGNhc3QoRnJvbSog
ZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc05vZGVDYXN0KGZyb20pOworICAgIH0KK307
CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFbGVtZW50PiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgVG8gY2FzdChGcm9tKiBmcm9tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRWxl
bWVudENhc3QoZnJvbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEpTRHluYW1p
Y0Nhc3RUcmFpdDxKU0RvY3VtZW50PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVu
YW1lIEZyb20+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVG8gY2FzdChGcm9tKiBmcm9tKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGpzRG9jdW1lbnRDYXN0KGZyb20pOworICAgIH0KK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBKU0R5bmFtaWNDYXN0VHJhaXQ8SlNFdmVudD4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgorICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFRvIGNhc3QoRnJvbSogZnJvbSkKKyAgICB7CisgICAgICAgIHJldHVybiBqc0V2ZW50Q2Fz
dChmcm9tKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJv
bT4KK0FMV0FZU19JTkxJTkUgVG8ganNEeW5hbWljRG93bmNhc3QoRnJvbSogZnJvbSkKK3sKKyAg
ICB0eXBlZGVmIEpTRHluYW1pY0Nhc3RUcmFpdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlwZT46OnR5cGU+IERpc3BhdGNoZXI7Cisg
ICAgcmV0dXJuIERpc3BhdGNoZXI6OnRlbXBsYXRlIGNhc3Q8VG8+KGZyb20pOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUbz4KK0FMV0FZU19JTkxJTkUgVG8ganNEeW5hbWljRG93bmNhc3QoSlND
OjpKU1ZhbHVlIGZyb20pCit7CisgICAgaWYgKFVOTElLRUxZKCFmcm9tLmlzQ2VsbCgpKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PFRvPihm
cm9tLmFzQ2VsbCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFbGVtZW50Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uaAppbmRleCAyYTFiYTAxODAzMjRkMDg0YjRhYzViNmIyYzk1N2VkYzM5YTc5
NmY3Li44ZGIzNjIwOWEwZGJlOWYxMTUwNjVhNzA5NDU5NjcwYjRmNzI3ZWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uaApAQCAtMzEsMTEgKzMxLDEw
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQUxXQVlTX0lOTElORSBKU0VsZW1lbnQqIGpz
RWxlbWVudENhc3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4K
K0FMV0FZU19JTkxJTkUgSlNEeW5hbWljQ2FzdFJlc3VsdDxKU0VsZW1lbnQsIEZyb20+IGpzRWxl
bWVudENhc3QoRnJvbSogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwo
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+
dHlwZSgpID49IEpTRWxlbWVudFR5cGUgPyBKU0M6OmpzQ2FzdDxKU0VsZW1lbnQqPih2YWx1ZSkg
OiBudWxscHRyOworICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID49IEpTRWxlbWVudFR5cGUgPyBK
U0M6OmpzQ2FzdDxKU0R5bmFtaWNDYXN0UmVzdWx0PEpTRWxlbWVudCwgRnJvbT4+KHZhbHVlKSA6
IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uaAppbmRleCA1NTk5ZjRjMWYxOTczZDRhM2YzNWVjODdl
MjEyMDBmMDE5MWNjMDlhLi4yYjg1MjkzYzRmMjNiNGE3MWJkNDRjMDhhOWFhZTNkYjY1NzM0NjNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5oCkBAIC0yOSwx
MSArMjksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTFdBWVNfSU5MSU5FIEpTRXZl
bnQqIGpzRXZlbnRDYXN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEZy
b20+CitBTFdBWVNfSU5MSU5FIEpTRHluYW1pY0Nhc3RSZXN1bHQ8SlNFdmVudCwgRnJvbT4ganNF
dmVudENhc3QoRnJvbSogdmFsdWUpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwo
KSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKS0+
dHlwZSgpID09IEpTRXZlbnRUeXBlID8gSlNDOjpqc0Nhc3Q8SlNFdmVudCo+KHZhbHVlKSA6IG51
bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPT0gSlNFdmVudFR5cGUgPyBKU0M6Ompz
Q2FzdDxKU0R5bmFtaWNDYXN0UmVzdWx0PEpTRXZlbnQsIEZyb20+Pih2YWx1ZSkgOiBudWxscHRy
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBlMDZmODE2YWI0ZmVjYjBhOTlkOGE1ZjA2
NGFjMzExOGNiNWQ4MGMxLi4yZGE0YzMxNTM3NWQ3ZWE4Mzc4NjAwMTI2MmYzNzg0MmI5N2QxNmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAK
QEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcAogewogICAgIEFTU0VS
VCh3cmFwcGVyLmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQu
ZG9jdW1lbnQoKTsKLSAgICBhdXRvKiBkb2N1bWVudFdyYXBwZXIgPSBqc0RvY3VtZW50Q2FzdCh0
b0pTKCZzdGF0ZSwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih3cmFwcGVyLmdsb2Jh
bE9iamVjdCgpKSwgZG9jdW1lbnQpKTsKKyAgICBhdXRvKiBkb2N1bWVudFdyYXBwZXIgPSBKU0M6
OmpzQ2FzdDxKU0RvY3VtZW50Kj4odG9KUygmc3RhdGUsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4od3JhcHBlci5nbG9iYWxPYmplY3QoKSksIGRvY3VtZW50KSk7CiAgICAgQVNTRVJU
KGRvY3VtZW50V3JhcHBlcik7CiAgICAgZG9jdW1lbnQuc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGNyZWF0ZUV2ZW50TGlzdGVuZXJGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUo
c3RhdGUsIHZhbHVlLCAqZG9jdW1lbnRXcmFwcGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IGY0MGRmNjEyNGVi
YWEzZDViMzY5MTgyN2M4MThhM2YwY2FkOTdmZTcuLjM3MjIyNTgzZmVlNmJmZmQzZWUyYmE1YjM2
MzJiZWUwMDdiMDFkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uY3BwCkBAIC03Myw3ICs3Myw3IEBAIEV2ZW50VGFyZ2V0KiBKU0V2
ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNWYWx1ZSB2YWx1ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEpT
RXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2FzdChKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKLSAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4o
dGhpc1ZhbHVlKSkKKyAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNF
dmVudFRhcmdldCo+KHRoaXNWYWx1ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codGhpc1ZhbHVlKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBl
ZCgpLCAqd2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCmluZGV4IGEwZWQ5MjFhMWNkYTc0MWZhODRiZTAx
OTRiOGNlMzM5YTczNzQ3OGIuLmMzMGI2ZmM5ZjAxNjI2Y2M2NTk1YjVhOWM3ZmZjZGM5YWI4MGRl
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1U
cmFja0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0
cmVhbVRyYWNrQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBKU0M6OkpTVmFsdWUgSlNNZWRp
YVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOworICAgIEpTTWVk
aWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Rvd25jYXN0PEpTTWVkaWFTdHJl
YW1UcmFjayo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKIApAQCAtMTEzLDcgKzEx
Myw3IEBAIEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyhF
eGVjU3RhdGUmIHN0YXRlKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7Ci0gICAgSlNN
ZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFt
VHJhY2sqPih0aGlzVmFsdWUpOworICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29k
ZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJn
ZXRTZXR0aW5ncyIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
aAppbmRleCAxZThhOGMxMTkzNmI2ZjU1ZmE3Y2VkZGEyODlmNTY1YmEyNjYyZDYyLi4yMjI0ZDcx
ZDhhMDE1MTYwNmNkNWVmOTM1NjA0MTFkNzgzZDZmMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaApAQCAtNzgsMTEgKzc4LDEwIEBAIGlubGluZSB2b2lkKiBy
b290KE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIHJvb3QoJm5vZGUpOwogfQogCi1BTFdBWVNfSU5M
SU5FIEpTTm9kZSoganNOb2RlQ2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGcm9tPgorQUxXQVlTX0lOTElORSBKU0R5bmFtaWNDYXN0UmVzdWx0PEpTTm9kZSwgRnJv
bT4ganNOb2RlQ2FzdChGcm9tKiB2YWx1ZSkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlz
Q2VsbCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHZhbHVlLmFzQ2Vs
bCgpLT50eXBlKCkgPj0gSlNOb2RlVHlwZSA/IEpTQzo6anNDYXN0PEpTTm9kZSo+KHZhbHVlKSA6
IG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPj0gSlNOb2RlVHlwZSA/IEpTQzo6
anNDYXN0PEpTRHluYW1pY0Nhc3RSZXN1bHQ8SlNOb2RlLCBGcm9tPj4odmFsdWUpIDogbnVsbHB0
cjsKIH0KIAogQUxXQVlTX0lOTElORSBKU0M6OkpTVmFsdWUgSlNOb2RlOjpub2RlVHlwZShKU0M6
OkV4ZWNTdGF0ZSYpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAppbmRleCBmYWMyMGIyNzI2ZDllYjdmYzli
OWVlYjU0MDk2MzdmZmQ5MWNjZTQwLi44MzY1YmEwNjk1MWY5YmMyN2E0YWFmY2MyOTFlZDc2ZGM1
ZDc0MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
cGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNPYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSFRN
TEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
SlNPYmplY3QqIHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCB0aGlzT2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAppbmRleCBhZmFjOTlhMDhj
MTMzNzMzYTdlMTk5M2JmYzRhZDMxYjNhMzg5OWE0Li45ZmEyMDBlMDQyYzY2YWFjYTkwOGJmMDkw
YTljMWVhODQzNDVlOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNS
ZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoRXhlY1N0YXRlJiBlCiAgICAgVk0mIHZtID0gZXhl
Yy52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAK
LSAgICBKU1JlYWRhYmxlU3RyZWFtKiBzdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVT
dHJlYW0qPihleGVjLmFyZ3VtZW50KDApKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtKiBzdHJlYW0g
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4oZXhlYy5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0
ciwgIlJlYWRhYmxlU3RyZWFtIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKaW5kZXggYTUzZjYz
NWMwYWVmN2U5YzM0N2JmODliYTFlN2Y0ZDkyZTY3YjIwMS4uNGJiODhlN2YyMmUzZjVhMTNmY2Ri
NzExYTE5OWQwODFhZjcyMTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAKQEAgLTM3LDExICsz
NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHN0YXJ0UmVhZGFibGVT
dHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiB7Ci0gICAgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZSogc291cmNlID0ganNEeW5hbWljQ2Fz
dDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIEpTUmVh
ZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVT
dHJlYW1Tb3VyY2UqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNvdXJjZSk7CiAK
ICAgICBBU1NFUlQoc3RhdGUuYXJndW1lbnRDb3VudCgpKTsKLSAgICBKU1JlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlcio+KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAg
ICBKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBqc0R5bmFt
aWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKGNvbnRyb2xsZXIpOwogCiAgICAgc291cmNl
LT53cmFwcGVkKCkuc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihjb250cm9s
bGVyKSwgV1RGTW92ZShwcm9taXNlKSk7CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHN0
YXJ0UmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByCiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKHN0YXRlLmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgSlNS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNEeW5hbWljQ2Fz
dDxKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqPihzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9s
bGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
Kj4oc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEFTU0VSVChjb250cm9sbGVyKTsK
IAogICAgIG1fY29udHJvbGxlci5zZXQoc3RhdGUudm0oKSwgdGhpcywgY29udHJvbGxlcik7CkBA
IC02MCw3ICs2MCw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIAogc3RhdGljIHZvaWQgcHVsbFJlYWRhYmxlU3RyZWFtKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIEpT
UmVhZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0
cmVhbVNvdXJjZSo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICBKU1JlYWRhYmxlU3RyZWFtU291
cmNlKiBzb3VyY2UgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIEFTU0VSVChzb3VyY2UpOwogCiAgICAgc291cmNlLT53
cmFwcGVkKCkucHVsbChXVEZNb3ZlKHByb21pc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBlMTI1MGIz
NThmZTU2M2YwNDExM2QwMzMyZjBhZDExYzk5M2U1ZWVjLi5hNjE3NzA5N2E5MzJmZDM1ZWVjYzdm
MDZmOTY2NGNiMDY2YjE1ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3RUYXNr
LmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
IkpTRHluYW1pY0Rvd25jYXN0LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgog
I2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAg
LTEyOCw3ICsxMjksNyBAQCBKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKiB0b0pTRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAoY2xhc3NJbmZvID09
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSkKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKj4oYXNPYmplY3QodmFsdWUpKTsKICAg
ICBpZiAoY2xhc3NJbmZvID09IEpTUHJveHk6OmluZm8oKSkKLSAgICAgICAgcmV0dXJuIGpzRHlu
YW1pY0Nhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxKU1Byb3h5Kj4o
YXNPYmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOworICAgICAgICByZXR1cm4ganNEeW5hbWljRG93
bmNhc3Q8SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSo+KGpzQ2FzdDxKU1Byb3h5Kj4oYXNP
YmplY3QodmFsdWUpKS0+dGFyZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRleCBkYjdj
Zjg2NWYwNzdmNjM1NDRiYjBhMTY4NzE1NTEyMTViNTA0MWFhLi44YWY1Mzk1NTE3NjE0NTNkZDVm
ZjViNDg5YWM4ZWNkN2FhMGQwYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBKU0M6OkpTVmFs
dWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFeGVjU3RhdGUqCiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IEpT
TW9kdWxlUmVjb3JkLgogICAgIC8vIE9uY2UgdGhlIHJlZmxlY3RpdmUgcGFydCBvZiB0aGUgbW9k
dWxlIGxvYWRlciBpcyBzdXBwb3J0ZWQsIHdlIHdpbGwgaGFuZGxlIGFyYml0cmFyeSB2YWx1ZXMu
CiAgICAgLy8gaHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0cnktcHJvdG90
eXBlLXByb3ZpZGUKLSAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU01vZHVsZVJlY29yZCo+KG1vZHVsZVJlY29yZFZhbHVlKTsK
KyAgICBKU0M6OkpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU0M6OkpTTW9kdWxlUmVjb3JkKj4obW9kdWxlUmVjb3JkVmFsdWUpOwogICAgIGlmICghbW9k
dWxlUmVjb3JkKQogICAgICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCAyMjMwZTFmYjExZGJiN2ZkZjcyZDhjZTI3OTZhYjBmZmVkNzJkZmExLi5mMjY0MTczYzUx
ZTBiODFhYjE2M2Y5NzVlZWFmNTQxZmM5MjBkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTEzNzEsNyArMTM3
MSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXpl
KEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRvci0+bmV4dEtleVZhbHVl
KG1fZXhlYywga2V5LCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWFwSXRlcmF0b3JT
dGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBpbnB1dE9iamVjdFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGpz
RHluYW1pY0Nhc3Q8SlNNYXAqPihvYmplY3QpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGpzRHluYW1pY0Rvd25jYXN0PEpTTWFwKj4ob2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5U3RhY2suYXBwZW5kKFByb3BlcnR5TmFtZUFycmF5KG1fZXhlYywgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5ncykpOwogICAgICAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBtX2V4ZWMsIHByb3BlcnR5U3RhY2su
bGFzdCgpLCBFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE5v
bk1hcFByb3BlcnRpZXNUYWcpOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAgU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAg
ICAgICAgICBpZiAoIWl0ZXJhdG9yLT5uZXh0KG1fZXhlYywga2V5KSkgewogICAgICAgICAgICAg
ICAgICAgICBzZXRJdGVyYXRvclN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGlucHV0T2JqZWN0U3RhY2subGFzdCgpOwotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU1NldCo+KG9iamVjdCkpOworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljRG93bmNhc3Q8SlNTZXQqPihvYmplY3QpKTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1lQXJy
YXkobV9leGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzKSk7CiAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIG1f
ZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCksIEVudW1lcmF0aW9uTW9kZSgpKTsKICAgICAgICAg
ICAgICAgICAgICAgd3JpdGUoTm9uU2V0UHJvcGVydGllc1RhZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU3RydWN0dXJlZENsb25lLmNwcAppbmRleCA0Y2I4OGIyZGU1M2M4YjJi
MGQwMzdlMDBiNzgyMWI2Y2JmNTJjZDAyLi5mZDhjNmZmOGUyYTY1OGFmZmI1OWYzNzA2MzI5NjM2
YTkzZmFhMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1
cmVkQ2xvbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1N0cnVjdHVyZWRD
bG9uZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBleGVjU3RhdGUKICAgICBB
U1NFUlQoZXhlY1N0YXRlLT5hcmd1bWVudENvdW50KCkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWNTdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byogYnVmZmVyVmlldyA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZhbHVlKTsKKyAgICBhdXRv
KiBidWZmZXJWaWV3ID0ganNEeW5hbWljRG93bmNhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2YWx1
ZSk7CiAgICAgQVNTRVJUKGJ1ZmZlclZpZXcpOwogCiAgICAgYXV0byogYnVmZmVyID0gYnVmZmVy
Vmlldy0+YnVmZmVyKCk7CkBAIC02NiwyNSArNjYsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcoRXhlY1N0YXRlKiBleGVjU3Rh
dGUKICAgICB9CiAgICAgYXV0byBidWZmZXJDbG9uZSA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKIAotICAgIGlmIChKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNJbnQ4QXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25j
YXN0PEpTSW50OEFycmF5Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTSW50OEFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwg
V1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmll
dy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTSW50MTZBcnJheSo+
KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNJbnQxNkFycmF5Kj4odmFsdWUp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50MTZBcnJheTo6Y3JlYXRlKGV4
ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVyQ2xvbmUpLCBi
dWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7Ci0gICAgaWYg
KEpTQzo6anNEeW5hbWljQ2FzdDxKU0ludDMyQXJyYXkqPih2YWx1ZSkpCisgICAgaWYgKGpzRHlu
YW1pY0Rvd25jYXN0PEpTSW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU0ludDMyQXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1ZmZlclZpZXctPnN0
cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgp
LCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNV
aW50OEFycmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQ4QXJy
YXkqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OEFycmF5
OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RGTW92ZShidWZm
ZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+bGVuZ3RoKCkp
KTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTVWludDhDbGFtcGVkQXJyYXkqPih2YWx1
ZSkpCisgICAgaWYgKGpzRHluYW1pY0Rvd25jYXN0PEpTVWludDhDbGFtcGVkQXJyYXkqPih2YWx1
ZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVy
Q2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7
Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU1VpbnQxNkFycmF5Kj4odmFsdWUpKQorICAg
IGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU1VpbnQxNkFycmF5Kj4odmFsdWUpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVWludDE2QXJyYXk6OmNyZWF0ZShleGVjU3RhdGUsIGJ1
ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmlldy0+
Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6OmpzRHlu
YW1pY0Nhc3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNh
c3Q8SlNVaW50MzJBcnJheSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1VpbnQzMkFycmF5OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUo
KSwgV1RGTW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVy
Vmlldy0+bGVuZ3RoKCkpKTsKLSAgICBpZiAoSlNDOjpqc0R5bmFtaWNDYXN0PEpTRmxvYXQzMkFy
cmF5Kj4odmFsdWUpKQorICAgIGlmIChqc0R5bmFtaWNEb3duY2FzdDxKU0Zsb2F0MzJBcnJheSo+
KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0Zsb2F0MzJBcnJheTo6
Y3JlYXRlKGV4ZWNTdGF0ZSwgYnVmZmVyVmlldy0+c3RydWN0dXJlKCksIFdURk1vdmUoYnVmZmVy
Q2xvbmUpLCBidWZmZXJWaWV3LT5ieXRlT2Zmc2V0KCksIGJ1ZmZlclZpZXctPmxlbmd0aCgpKSk7
Ci0gICAgaWYgKEpTQzo6anNEeW5hbWljQ2FzdDxKU0Zsb2F0NjRBcnJheSo+KHZhbHVlKSkKKyAg
ICBpZiAoanNEeW5hbWljRG93bmNhc3Q8SlNGbG9hdDY0QXJyYXkqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNGbG9hdDY0QXJyYXk6OmNyZWF0ZShleGVjU3RhdGUs
IGJ1ZmZlclZpZXctPnN0cnVjdHVyZSgpLCBXVEZNb3ZlKGJ1ZmZlckNsb25lKSwgYnVmZmVyVmll
dy0+Ynl0ZU9mZnNldCgpLCBidWZmZXJWaWV3LT5sZW5ndGgoKSkpOwotICAgIGlmIChKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKKyAgICBpZiAoanNEeW5hbWljRG93bmNh
c3Q8SlNEYXRhVmlldyo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U0RhdGFWaWV3OjpjcmVhdGUoZXhlY1N0YXRlLCBidWZmZXJWaWV3LT5zdHJ1Y3R1cmUoKSwgV1RG
TW92ZShidWZmZXJDbG9uZSksIGJ1ZmZlclZpZXctPmJ5dGVPZmZzZXQoKSwgYnVmZmVyVmlldy0+
bGVuZ3RoKCkpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4OTY5MTlj
Yzg1NjE5ZjUxMmRkZDdhZjZkY2JhZjliMjUxODhjN2E3Li5kNzM1YmQ1YmJmZGUxYzE4ZWI5MTJj
MDlmODI2NWI3ODQ2YTgxMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjQ3NCwxMyArMjQ3NCw3IEBAIHN1YiBHZXRD
YXN0aW5nSGVscGVyRm9yVGhpc09iamVjdAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0KLSAgICBy
ZXR1cm4gImpzTm9kZUNhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIjsKLSAgICByZXR1
cm4gImpzRWxlbWVudENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFbGVtZW50IjsKLSAgICBy
ZXR1cm4gImpzRG9jdW1lbnRDYXN0IiBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRG9jdW1lbnQiOwot
ICAgIHJldHVybiAianNFdmVudFRhcmdldENhc3QiIGlmICRpbnRlcmZhY2VOYW1lIGVxICJFdmVu
dFRhcmdldCI7Ci0gICAgcmV0dXJuICJqc0V2ZW50Q2FzdCIgaWYgJGludGVyZmFjZU5hbWUgZXEg
IkV2ZW50IjsKLSAgICByZXR1cm4gImpzRHluYW1pY0Nhc3Q8SlMkaW50ZXJmYWNlTmFtZSo+IjsK
KyAgICByZXR1cm4gImpzRHluYW1pY0Rvd25jYXN0PEpTJGludGVyZmFjZU5hbWUqPiI7CiB9CiAK
IHN1YiBHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgpAQCAtMzM0NSw3ICszMzM5LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xh
c3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8JHtjbGFzc05h
bWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpXG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKIApAQCAtMzM2Nyw3ICszMzYxLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2Ns
YXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0lu
dGVyZmFjZU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKaW5kZXggZGVhYWU2M2MxMjg4NDY1N2M4MDA3YjNkZjNiMDE4
ODdiNjJjNGE0MS4uMjg3ZTk5YmIwYWQ5YzI5YmNmNTI3YTk3MDU2NDIxOTFkZDkxZGE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJm
YWNlTmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVgogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludGVyZmFjZU5hbWU6OmdldENvbnN0cnVj
dG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzAsNyAr
MTMwLDcgQEAgYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNJbnRl
cmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNl
TmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU0ludGVy
ZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSW50ZXJm
YWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEludGVyZgogCiBJbnRlcmZhY2VOYW1lKiBKU0ludGVyZmFjZU5hbWU6
OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIg
PSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTSW50ZXJmYWNlTmFtZSo+KHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDkwMjdlYWUyNDBhN2JlNmFk
YjMwMTA1ZWQ5NWIzNTRkZGVhNTllYjAuLjUyNmE2YTdjNTRhZjMxYzM2OWEyODhlNTE2NjY0Y2Qy
ZDhkYTYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNDMsMTIg
KzE0MywxMiBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0
YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RB
Y3RpdmVET01PYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2Fz
dEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc3RhdGUudGhpc1Zh
bHVlKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0
RXhjaXRpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEFjdGl2ZURPTU9iamVjdCYsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMTczLDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RBY3Rp
dmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBib29sIHNldEpTVGVzdEFj
dGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk1LDcgKzI5NSw3IEBAIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVGVzdEFjCiAKIFRlc3RBY3RpdmVET01PYmplY3QqIEpTVGVzdEFjdGl2
ZURPTU9iamVjdDo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0
byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odmFsdWUp
KQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDk3
YjI4OTE1NjAzN2Y5YjVlZTc1NWJmOTMwOTRmNDQyMTY3ZmIwZmMuLjk2YzcxNjJmMTU4ZjE2MmJh
MWY4MTM1YjllNThlY2M0NDY5MzNmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAt
MTM3LDEyICsxMzcsMTIgQEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uczo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnMqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDRVJlYWN0aW9ucyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zKiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3Rh
dGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25z
Kj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rl
c3RDRVJlYWN0aW9ucyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdENFUmVhY3Rpb25zJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBA
IC0xOTcsNyArMTk3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGkKIHsKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RDRVJlYWN0aW9uczo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29s
IHNldEpTVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1Byb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDRVJlYWN0aW9u
c1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q0VSZWFjdGlv
bnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNjIsNyArMzYyLDcgQEAgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zKiBKU1Rlc3RDRVJlYWN0aW9uczo6
dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnMqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9ucyo+KHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5jcHAKaW5kZXgg
N2U4NmQ4ZWM0NTQ3MTE0YWYxM2ZkNGRjMDg5MzU2ZWM2MTI0OTNlZC4uZWUzMmZjYjFjNzI4NTYz
ZDI5YTM3NWM2YTEwOWQxZDUwOGViNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0
aW9uc1N0cmluZ2lmaWVyLmNwcApAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0
ZTw+IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lm
aWVyKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+
KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZUdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyJiwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSk7CkBAIC0xNTcsNyArMTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWQKIHsK
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZp
ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNjgsNyArMTY4
LDcgQEAgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzQsNyArMjc0LDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0Q0UKIAogVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIEpTVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyKj4odmFsdWUpKQogICAgICAgICByZXR1cm4g
JndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDA3
YWRkZGI4ZDkxZGZlNzBlYjk2ZmQ0MTA1ZWVmYTZmYmYyYjNlYWEuLmEyY2VjODFhNGZlYWJhYTJm
MzI5ZjkwNjdmNjkxYjhiMjg4NmIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTEzNiw3ICsxMzYs
NyBAQCBib29sIHNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMTEsNyArMjExLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0Q2wKIAogVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IqPih2
YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3
cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0LmNwcAppbmRleCBhMzU5YzU0OGFiMDk1YjE0MzY0NjI3NGE0Y2VhNTNlY2Y0OTkzYjhmLi5m
MmM4OTgwOTUxN2ZlNjUzZjBiMjliZTM2ZmZlOTczZmQ2OTM5ZjBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZQogewog
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIGNvbnN0cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3Rh
dGUtPnZtKCksICpkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBzZXRK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdEN1CiAKIFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OnRvV3JhcHBlZChKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Kj4odmFsdWUpKQor
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggM2VlODk0YjYzNWVlYThiODJjMWYwNzE3MGE1
ZjMxZmQ3Y2JjN2Q0MC4uYzE0Mjk3ZDBlNWIzNThkY2Y5YTA1MmZhOGNiMTFkYWZmNTMyYzQxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNjEsMTQgKzE2MSwx
NCBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlciogQmluZGluZ0NhbGxlcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj46
OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICByZXR1cm4ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAg
ICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihzdGF0
ZS50aGlzVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0
dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNzksNyArMTc5LDcgQEAg
Ym9vbCBzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXMKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjY3LDcgKzI2Nyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEN1CiAKIFRlc3RDdXN0
b21OYW1lZEdldHRlciogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAppbmRleCBlMzk3YmVlNzg0OGVjNjFmYjkzNTk4YmNjY2M4ZTYzNmE0N2Q0
NTg2Li4yNDg4ZGYyNmJkYjUyYjUwY2Q2N2Q2MGNjYTU2NWIyNjUzNjdlNGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9N
SklULmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RET01KSVQ6OnByb3Rv
dHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIHRlbXBsYXRlPD4g
aW5saW5lIEpTVGVzdERPTUpJVCogQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYXN0Rm9y
QXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdERPTUpJVCo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CkBAIC0xMTM0LDcgKzExMzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBib29sIHNl
dEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jbwogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RET01KSVRQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY3OGQ0NTYy
Yjc5NDQ0MGRjMjdhODgzYmM1Mjc3ZjM3OWJlODEwNzguLjQzZmU1NTA2YWU0YjFjYzVhZmQ4N2M1
NDMwOTE5Mjc0MTJmYTcxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTE4OCw3ICsxODgsNyBAQCBKU09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiB0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckF0dHIxR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3ImLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBib29sIHNldEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDFkNjAwZDFjMDVkZWI2MDExYjcwMjkxNWFkNDRmOTUwMWIzNWY5ZmUuLmJk
NmQ5OWZiOWI3ZjMxZmIzYmNhNjY2ZjVkYTQyM2FjYzJmZWFiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtMTU5LDE0ICsxNTksMTQgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHMK
IAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0RXZlbnRUYXJnZXQ+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihzdGF0ZS50aGlzVmFs
dWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEV2ZW50VGFyZ2V0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEV2ZW50VGFy
Z2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV2ZW50VGFy
Z2V0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsCiAgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwotICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3Miw3ICsyNzIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdgogCiBUZXN0RXZl
bnRUYXJnZXQqIEpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVl
KQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRh
cmdldCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndy
YXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5k
ZXggN2I5Y2Y5MTllNDE1OTU4OTA3MDExODVhZDczNzE4ZmFlMWIxYTU1YS4uYjNmMjhlOGJlYmUw
MzM0MWU3ZjU4ZWZkYmJlNmFhZTI4ZmE0YTFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdEV4Y2VwdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4
Y2VwdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZUdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RFeGNlcHRpb24mLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAg
LTE1Niw3ICsxNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVgogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNE
b3duY2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBzZXRKU1Rlc3RF
eGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEUKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
ICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIzNSw3ICsyMzUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFeAog
CiBUZXN0RXhjZXB0aW9uKiBKU1Rlc3RFeGNlcHRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4
Y2VwdGlvbio+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdEV4Y2VwdGlvbio+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggNzdmOWQzNWY3ZjhhM2I4ZThlOTU3OGNlODhjNjEwZDJm
NTU2M2FjZi4uNmZlN2JkZTcyMmRjY2NlNDZlYzIzNDEyYTgyN2I3ODlhMmZmM2Y4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpA
QCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgc2V0SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoCiAgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwot
ICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk4LDcgKzE5OCw3IEBAIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgVGVzdEdlCiAKIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChh
dXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKj4o
dmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGUzYTQ1N2Y0MzUxMjEwZjc5Y2E5NTQ0ZmQzYjFmYTQ3NDdiY2JmMmMuLmViNzE1
OTc0YmNiNTIwMjNmY2MzYjM1MGIzMjRjZTMyYmQ3NjM3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwCkBAIC0xNzcsMTIgKzE3NywxMiBAQCB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdDo6
ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xv
YmFsT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JBdHRy
aWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVy
biBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RHbG9iYWxPYmplY3QqIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2Fz
dEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oc3RhdGUudGhpc1ZhbHVlKCkp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0
dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RHbG9iYWxPYmplY3QmLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHbG9iYWxPYmplY3Q6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBA
IC0yNzAsNyArMjcwLDcgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTUyNCw3ICs1MjQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RHbAogCiBUZXN0R2xvYmFs
T2JqZWN0KiBKU1Rlc3RHbG9iYWxPYmplY3Q6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9i
amVjdCo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEdsb2JhbE9iamVjdCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53
cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IDJmZjljMDBjNjFmOTFlNGQ3N2VkODJlNDRjYTVmMDliOGQ2NzU4NWMuLmE4ZjY3Mzk4YjY5
MGI2ODBkNDFkM2VlNzE5NzA4NDM1ZGMwZWJmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBA
IC0zOTksMTIgKzM5OSwxMiBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHN0YXRlLnRoaXNW
YWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCkBAIC02MzEsNyArNjMxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1YKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtNjQyLDcgKzY0Miw3
IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDI5LDcgKzEwMjksNyBAQCBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlKiBKU1Rlc3RJbnRlcmZhY2U6OnRv
V3JhcHBlZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZSo+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAppbmRl
eCBmZDNlMTE3YmYxODg5ZmM1OGFiODYzOGExODIwMzYyNzRjMGViMzUxLi45NTc1MmRjODM0OTNj
ZGRiMzUzYWVhMjMzMDBkNDZkZDEzYjE5MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIEpT
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxs
KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSog
QmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmNhc3RGb3JB
dHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewotICAgIHJl
dHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlUmVhZG9ubHlHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0SW50ZXJmYWNlTGVhZGlu
Z1VuZGVyc2NvcmUmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKQEAgLTE0Myw3ICsxNDMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIGJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RJbgogCiBUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUq
IEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
IHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBl
ciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4o
dmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCmluZGV4IDlhZmZkYzRlMmRhZWM0MDIxMGFm
MWVhM2YxYThlYzE1YjRiZGY0YWUuLjg0OWJjNzJlYjM3NzVkZTBiNTBkM2ZlZjYyZTBlZWE2NTFj
YTI0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJdGVyYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcApAQCAtMTMxLDE0ICsxMzEsMTQgQEAgdm9pZCBK
U1Rlc3RJdGVyYWJsZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAogdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0SXRlcmFibGUqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SXRlcmFibGU+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SXRlcmFibGUqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEl0ZXJhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgc2V0SlNUZXN0SXRlcmFi
bGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJdAogCiBUZXN0SXRl
cmFibGUqIEpTVGVzdEl0ZXJhYmxlOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewot
ICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZSo+KHZh
bHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEl0
ZXJhYmxlKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuY3BwCmluZGV4IDVhNDhmM2M3MjI5OGQzNmI0OGZlYTk2YzkxNzkyNTFjNjQxYzZjYTcuLmRk
NDg5NzRmYWJjMDkyYTBmOWMzODQ0N2FjMmQ4YTkxOTRjZTQ2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTM0LDEyICsxMzQsMTIgQEAgdm9pZCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0
ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPD4gaW5saW5l
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogewotICAg
IHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oc3RhdGUu
dGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbUdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciYsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTCiB7
CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0xODUsNyArMTg1LDcgQEAgYm9v
bCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHQKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewog
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CmluZGV4IGQ5NTQ2NGFlYjMwNjk5ZTFmYTY2YzlhMTRmOWNjZWU5ZjRiMWIwNjUuLjU4N2E5ZTQy
ZGQzMDdmYjFmZmZiZWFmNzU5NmY2YjJiZjkwY2NmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEyNSwxNCArMTI1LDE0IEBAIHZvaWQgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogQmluZGluZ0Nh
bGxlcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVj
U3RhdGUmIHN0YXRlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihzdGF0ZS50aGlzVmFsdWUo
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBA
IC0xNDMsNyArMTQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0g
ICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsNyArMjMyLDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWUKIAogVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odmFsdWUpKQogICAg
ICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5NGYyNTY1ZGI2NTY0NDU0
MTkzNGFmNWNjM2FhMzgyMmYzZDA1OWI1Li44Nzg2ZjQzN2YyOWEyNzk3ZGY5NWNkOGY3ODgyYjhl
Y2ZiMGE5MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xNjIs
NyArMTYyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHUKIHsKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0x
NzMsNyArMTczLDcgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yNDgsNyArMjQ4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmEK
IAogVGVzdE5hbWVkQ29uc3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBl
ZChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odmFsdWUp
KQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmNwcAppbmRleCBmOGZkYzBjNjI4YTJkZGNjMzEwMmU5OGMxMzI5YmNhOWRk
OTY2Y2FkLi4zMzcxMGIxM2NmZmI2MGZkNDY3ZDdhMjYwMjJhNDBlNDU0Y2E0NmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
ZGUuY3BwCkBAIC0xNjgsMTIgKzE2OCwxMiBAQCBKU09iamVjdCogSlNUZXN0Tm9kZTo6cHJvdG90
eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0Tm9kZSogQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvckF0dHJp
YnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogQmluZGlu
Z0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQog
ewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUqPihzdGF0ZS50aGlzVmFsdWUo
KSk7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGUqPihzdGF0ZS50aGlz
VmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZUdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3ROb2RlJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CkBAIC0x
OTYsNyArMTk2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwKIHsKICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLSAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNU
ZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9k
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0y
MDcsNyArMjA3LDcgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGUKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2Rl
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE5vZGVQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vZGVQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAK
aW5kZXggMTViZTNiNmNjOGFiNTI5MjhiMmU0ODdhMTIxZDM2ZDRhZjE1Mjc5NC4uM2IxNjE3NzEy
MmUzM2VmNDk3NmUxNWJiNzRiYmE5ZGE5ODRmNDMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcApAQCAtMTQ0LDEyICsxNDQsMTIgQEAgdm9pZCBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0
aWM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
fQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1By
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTM1MSw3ICszNTEsNyBAQCBib29sIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBA
QCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RObwogCiBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYzo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+
KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dE5vbmRldGVybWluaXN0aWMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5ZTI4ZjJhYzc4
M2JlZDM0NmY5NWUwMTM0YWNhYzQxOTgxMzYyMzdhLi44MTYzNGUyOWQyZTExNzc0OWIwNzRmZTQ0
Y2E3YTc4YWM4M2U5MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTgwNywxMiArMTgwNywxMiBAQCBib29s
IEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIHN0YXRlLCB1bgogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RPYmoqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKIHRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0Rm9y
T3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oc3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RPYmoqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVz
dE9iaiYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwpAQCAtMzMwMCw3ICszMzAwLDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLAogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE9ialBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zMzExLDcgKzMzMTEsNyBAQCBib29sIHNl
dEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZAogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewogICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODM1Miw3ICs4MzUyLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T2IKIAogVGVzdE9iaiogSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCisgICAgaWYgKGF1dG8q
IHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPYmoqPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDY2OTBkMmNi
MWRkNDBlMWUyMmJhNWY5MDk1YTY4NWYyNTE3ODU2MmUuLjFmNmI0YjJkOTYwYWZjYTk4NDllMWYz
NzhjZjg3NWEzYmRjNTQ2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZAog
ewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNCw3ICszMDQsNyBAQCBKU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RPdgogCiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKLSAg
ICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Rvd25j
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCmluZGV4IDNkMmQzYzAyZGY4ODY3YmMwOThmY2ZlZTIyOGM4ZjhlN2VmYTQ1NDcuLjQ4YjA2
ZjAzM2QyMDJjZjNhOTI1NzQ0N2NiYWRjMTQ5NGRmMTZiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKQEAg
LTE3MSw3ICsxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdAogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBib29s
IHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbgogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdgogCiBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSogSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTo6dG9XcmFwcGVkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSo+KHZhbHVlKSkKKyAgICBpZiAoYXV0byogd3JhcHBlciA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCmluZGV4
IDFkYjY3ZjQ3YTllMTYzNTM4MmM3YTQzNGY5ZTQ3NGRjYTliMTkzNTUuLjkwYjZlOTJhN2MyMzRi
ZTBiZTk5ZTNiMjY4NmFmODVmZmMxOTdjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWls
dGlucy5jcHAKQEAgLTE1OCwxNCArMTU4LDE0IEBAIGJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhCiAK
IHRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAt
MTc2LDcgKzE3Niw3IEBAIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWCiAgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAg
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjc1LDcgKzI3NSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE92
CiAKIFRlc3RPdmVycmlkZUJ1aWx0aW5zKiBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjp0b1dyYXBw
ZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMGNkYTUwNmU3ZjdiODdm
M2E0NmFmZmQ3MDk0YjMyMzZlMWRjNjllMy4uYmMyMDUwMDJjMmY3YmVlYTllOGIxNzg1OGEyY2E0
NmRmODNhM2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcApAQCAtMTQwLDEyICsx
NDAsMTIgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemF0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uKiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9u
KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0U2VyaWFsaXphdGlvbio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaXJzdFN0cmluZ0F0dHJpYnV0ZUdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXph
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHQKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb246OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0y
NDMsNyArMjQzLDcgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHUKICAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAg
SlNUZXN0U2VyaWFsaXphdGlvblByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MzgsNyArNDM4LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAogVGVzdFNlcmlh
bGl6YXRpb24qIEpTVGVzdFNlcmlhbGl6YXRpb246OnRvV3JhcHBlZChKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlh
bGl6YXRpb24qPih2YWx1ZSkpCisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gJndyYXBw
ZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggM2NjYjg2
ZmU1OTk3NmJiZGRmZjMwYWIyNjdjMjI2YTYzYzE2YWViNi4uNzA2ZjI0NGZmMzUxZGQyYzBiMmRm
MTMxNWRlYTAzZDAyM2UyODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCog
Y2VsbCkKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWVHZXR0ZXIoRXhlY1N0YXRlJiwg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSk7CkBAIC0yMjksNyArMjI5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgc2V0SlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlCiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CiAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTUsNyArMzU1LDcg
QEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0U2UKIAogVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b1dyYXBwZWQo
SlNDOjpKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCisgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXgg
ODlhZDMyZjYzMTZkODA1MzQ1NmY2MTE2NmNhYzk4ODQyNmI4NjlmMi4uN2Q2YjJjMGZlYjU5YzA4
ZTczYjk3MGQ3NGFlODdiMDBiMzk5ZjMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0yMTUs
MTIgKzIxNSwxMiBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQogCiB0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RUeXBlZGVmcyogQmluZGluZ0NhbGxlcjxK
U1Rlc3RUeXBlZGVmcz46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlKQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAog
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMqIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlw
ZWRlZnM+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS50aGlzVmFsdWUoKSk7CisgICAg
cmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzKj4oc3RhdGUudGhpc1ZhbHVl
KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExv
bmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RUeXBlZGVmcyYsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
CiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgYm9v
bCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW4KICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0VHlwZWRlZnNQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgewogICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODA2LDcgKzgwNiw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdFR5CiAKIFRlc3RUeXBlZGVmcyogSlNUZXN0VHlwZWRlZnM6OnRvV3JhcHBlZChKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFR5cGVkZWZzKj4odmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
RG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiAmd3JhcHBl
ci0+d3JhcHBlZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IGM5ZGFkMjc4NmZjOGYxYWE0ZGMz
Yjc5MTA3NWQ3N2YwMzViNWY0NzcuLjJlNWIxNTI1YWE2MGVhMTZiMDMxMTY1MjRjM2U3NDgzMzEx
OWU1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0KQEAgLTM5OSw3ICszOTksNyBAQCAtICh2b2lkKXNldFZhbHVlOihpZCl2YWx1ZSBmb3JLZXk6
KE5TU3RyaW5nICopa2V5CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0g
ICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU09iamVjdCo+KFtzZWxm
IF9pbXBdKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNPYmpl
Y3QqPihbc2VsZiBfaW1wXSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgU3RyaW5nKGtleSkpLCBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShleGVj
LCAmdmFsdWUsIE9iamNPYmplY3RUeXBlLCBbc2VsZiBfcm9vdE9iamVjdF0pLCBzbG90KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCmluZGV4IDA5OWFmZjA0YzI5MzA5
M2ExNWJmNjM5NTUwZjE1NTE2YjQzZGM0YWQuLmQzMGE1ODViYjMzNTRlYzhlNDJkNGU4ZmFlMThm
ZGVjNTM1NTlkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2Fy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmEKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PFJ1bnRpbWVBcnJheSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmNwcAppbmRleCA1OTYxOWZiMjQzZTg5OTI5Y2EwZjA5ZTU4Mzc4MWNkMGQ2OTUyZWJk
Li4zMmNjMGFiNWQ3MWI5Njk1NWE5MGE4NzNjNTRhZGJhOGQ0MWQ3YTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgRW5jb2RlZEpT
VmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgUnVudGltZU1ldGhvZCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0
PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0
aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5tX21ldGhv
ZC0+bnVtUGFyYW1ldGVycygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCBiNmYwMzVmZGMwMjU3ZDIxNjRkNDZkYjk3ZWI2NTBiNGExYjdkN2ZhLi4wNWI5
ZjYwYTczZjAwNzMxMGM4NjVhYThmOTVhYmNmMzhhYzI1MThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM4MTgsNyArMzgxOCw3IEBAIHN0YXRpYyBKU0M6
OkpTVmFsdWUgY29udHJvbGxlckpTVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnCiAgICAgYXV0byBtZWRpYUpTV3JhcHBlciA9IHRvSlMoJmV4ZWMsICZnbG9i
YWxPYmplY3QsIG1lZGlhKTsKICAgICAKICAgICAvLyBSZXRyaWV2ZSB0aGUgY29udHJvbGxlciB0
aHJvdWdoIHRoZSBKUyBvYmplY3QgZ3JhcGgKLSAgICBKU0M6OkpTT2JqZWN0KiBtZWRpYUpTV3Jh
cHBlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFKU1dy
YXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhSlNXcmFwcGVyT2JqZWN0ID0ganNEeW5h
bWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhSlNXcmFwcGVyKTsKICAgICBpZiAoIW1l
ZGlhSlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKICAgICAK
QEAgLTM4MjYsNyArMzgyNiw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgY29udHJvbGxlckpTVmFs
dWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0JiBnCiAgICAgSlNDOjpK
U1ZhbHVlIGNvbnRyb2xzSG9zdEpTV3JhcHBlciA9IG1lZGlhSlNXcmFwcGVyT2JqZWN0LT5nZXQo
JmV4ZWMsIGNvbnRyb2xzSG9zdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlND
OjpKU1ZhbHVlKCkpOwogCi0gICAgSlNDOjpKU09iamVjdCogY29udHJvbHNIb3N0SlNXcmFwcGVy
T2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sc0hvc3RK
U1dyYXBwZXIpOworICAgIEpTQzo6SlNPYmplY3QqIGNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVj
dCA9IGpzRHluYW1pY0Rvd25jYXN0PEpTQzo6SlNPYmplY3QqPihjb250cm9sc0hvc3RKU1dyYXBw
ZXIpOwogICAgIGlmICghY29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAgICByZXR1
cm4gSlNDOjpqc051bGwoKTsKIApAQCAtMzg3NCw3ICszODc0LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRy
b2xsZXJWYWx1ZSA9IGNvbnRyb2xsZXJKU1ZhbHVlKCpleGVjLCAqZ2xvYmFsT2JqZWN0LCAqdGhp
cyk7Ci0gICAgSlNDOjpKU09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWlj
Q2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6OkpTT2JqZWN0
KiBjb250cm9sbGVyT2JqZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KGNv
bnRyb2xsZXJWYWx1ZSk7CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAgICAgICByZXR1
cm47CiAKQEAgLTM4ODUsNyArMzg4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
Q2FwdGlvbkNvbnRhaW5lcigpCiAgICAgLy8gUmV0dXJuIHZhbHVlOgogICAgIC8vICAgICBOb25l
CiAgICAgSlNDOjpKU1ZhbHVlIG1ldGhvZFZhbHVlID0gY29udHJvbGxlck9iamVjdC0+Z2V0KGV4
ZWMsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidXBkYXRlQ2FwdGlvbkNvbnRh
aW5lciIpKTsKLSAgICBKU0M6OkpTT2JqZWN0KiBtZXRob2RPYmplY3QgPSBKU0M6OmpzRHluYW1p
Y0Nhc3Q8SlNDOjpKU09iamVjdCo+KG1ldGhvZFZhbHVlKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBt
ZXRob2RPYmplY3QgPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTT2JqZWN0Kj4obWV0aG9kVmFs
dWUpOwogICAgIGlmICghbWV0aG9kT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTY1Nzcs
NyArNjU3Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgSlNDOjpKU1ZhbHVlIGNvbnRyb2xsZXJWYWx1
ZSA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxP
YmplY3QsIGFyZ0xpc3QpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgSlNDOjpK
U09iamVjdCogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2Jq
ZWN0Kj4oY29udHJvbGxlclZhbHVlKTsKKyAgICBKU0M6OkpTT2JqZWN0KiBjb250cm9sbGVyT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KGNvbnRyb2xsZXJWYWx1ZSk7
CiAgICAgaWYgKCFjb250cm9sbGVyT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTY1OTAs
NyArNjU5MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdChTaGFkb3dSb290KiByb290KQogCiAgICAgbWVkaWFKU1dyYXBwZXJPYmplY3QtPnB1dERp
cmVjdChleGVjLT52bSgpLCBjb250cm9sc0hvc3QsIG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVy
LCBKU0M6OkRvbnREZWxldGUgfCBKU0M6OkRvbnRFbnVtIHwgSlNDOjpSZWFkT25seSk7CiAKLSAg
ICBKU0M6OkpTT2JqZWN0KiBtZWRpYUNvbnRyb2xzSG9zdEpTV3JhcHBlck9iamVjdCA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4obWVkaWFDb250cm9sc0hvc3RKU1dyYXBwZXIp
OworICAgIEpTQzo6SlNPYmplY3QqIG1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0ID0g
anNEeW5hbWljRG93bmNhc3Q8SlNDOjpKU09iamVjdCo+KG1lZGlhQ29udHJvbHNIb3N0SlNXcmFw
cGVyKTsKICAgICBpZiAoIW1lZGlhQ29udHJvbHNIb3N0SlNXcmFwcGVyT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAppbmRleCA5MWYzM2YzMGI4YWY3ZDI1YzYzZjEwNWFlMGI4OWEzOWFjOWM0NmQ0
Li5jZTU2YmVjZTNjYjZmNzU0MmRjNTIwZmQzZmMzNGY0NmMyMzliODE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTE0OTksNyArMTQ5
OSw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgIGhhbmRsZXIgPSBzY3JpcHRM
aXN0ZW5lci0+anNGdW5jdGlvbigmbm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChoYW5k
bGVyICYmIHN0YXRlKSB7CiAgICAgICAgICAgICBib2R5ID0gaGFuZGxlci0+dG9TdHJpbmcoc3Rh
dGUpLT52YWx1ZShzdGF0ZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBmdW5jdGlvbiA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPihoYW5kbGVyKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gZnVuY3Rpb24gPSBqc0R5bmFtaWNEb3duY2FzdDxKU0M6OkpTRnVuY3Rpb24qPiho
YW5kbGVyKSkgewogICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRp
bkZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gZXhlY3V0YWJsZSA9
IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZU51bWJlciA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpIC0gMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcAppbmRleCAxNmZiYTY4MjJlNDc2YzMzMTc0MTAyNzYwZTE4MDU2ODJl
YzVkOTFjLi4xZjhlZGYzMzZiYzY3NTI0MjRkMDQ1N2Q2MzkyZDhhMmU1MzQxODg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgV2ViQ29y
ZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVIYW5k
bGUoV2ViRnJhbWUmIGZyYW0KICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBlbGVtZW50V3JhcHBlciA9IEpTQzo6anNEeW5hbWljQ2FzdDxXZWJD
b3JlOjpKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKTsKKyAgICBhdXRvIGVsZW1lbnRXcmFwcGVy
ID0gV2ViQ29yZTo6anNEeW5hbWljRG93bmNhc3Q8V2ViQ29yZTo6SlNFbGVtZW50Kj4odG9KUyhl
bGVtZW50KSk7CiAgICAgaWYgKCFlbGVtZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>