<?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>182008</bug_id>
          
          <creation_ts>2018-01-23 13:04:08 -0800</creation_ts>
          <short_desc>FetchResponse should support ConsumeData callback on chunk data is received: handling ReadableStream bodies</short_desc>
          <delta_ts>2018-01-31 16:15:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181600</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="GSkachkov">gskachkov</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392218</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-23 13:04:08 -0800</bug_when>
    <thetext>FetchResponse should support ConsumeData callback on chunk data is received: handling ReadableStream bodies according to suggestion from 181600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392222</commentid>
    <comment_count>1</comment_count>
      <attachid>332067</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-23 13:23:38 -0800</bug_when>
    <thetext>Created attachment 332067
Patch

WiP for check progress and check tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392348</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-23 16:52:07 -0800</bug_when>
    <thetext>This looks good to me. Since there are two places that want to read the whole data as a shared buffer, I would try wrapping that code in a helper function.

We might also reuse the same callback for loading data.
In such a case Chunk should probably be defined outside ReadableStream sink class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392457</commentid>
    <comment_count>3</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-23 23:36:04 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; This looks good to me. Since there are two places that want to read the
&gt; whole data as a shared buffer, I would try wrapping that code in a helper
&gt; function.
&gt; 
&gt; We might also reuse the same callback for loading data.
&gt; In such a case Chunk should probably be defined outside ReadableStream sink
&gt; class.

Thanks for feedback, I&apos;ll back with fixed comments and test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393598</commentid>
    <comment_count>4</comment_count>
      <attachid>332396</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-26 11:52:44 -0800</bug_when>
    <thetext>Created attachment 332396
Patch

Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393599</commentid>
    <comment_count>5</comment_count>
      <attachid>332397</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-26 11:55:37 -0800</bug_when>
    <thetext>Created attachment 332397
Patch

Rebased patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393612</commentid>
    <comment_count>6</comment_count>
      <attachid>332397</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-26 12:29:11 -0800</bug_when>
    <thetext>Comment on attachment 332397
Patch

If possible, we should try to remove m_data from the sink implementation.
We should also verify the case of empty buffers.
Some additional nits below.

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:338
&gt; +        response-&gt;consumeBodyFromReadableStream([promise = WTFMove(promise), request = WTFMove(request), response = WTFMove(response), data = WTFMove(data), this](ExceptionOr&lt;ReadableStreamChunk&gt;&amp;&amp; result) mutable {

You can probably use auto&amp;&amp; result here.

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:340
&gt; +            ReadableStreamChunk chunk = result.returnValue();

auto as well I think.

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:346
&gt; +                unsetPendingActivity(this);

This is preexisting code but instead of setPendingActivity/unsetPendingActivity, we can have the lambda take a makePendingActivity(*this). See existing WebKit code for that pattern.

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:40
&gt; +: m_callback { WTFMove(callback) }

Change is not needed.

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:55
&gt;          m_data = SharedBuffer::create(buffer.data(), buffer.length());

We are probably no longer using m_data. We can probably remove it. This will simplify and optimize this method a bit.

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:60
&gt; +    // TODO: Check if we need 

incomplete TODO to remove? Or change to FIXME?

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:64
&gt; +        m_callback(ReadableStreamChunk { buffer.data(), buffer.length() });

Can BufferSource length be zero?
If so, we might not be able to disambiguate this case with closing the ReadableStream.
Passing a ReadableStreamChunk* or an optional might be clearer.

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-readable-stream-chunk-worker.js:38
&gt; +            .step(() =&gt; controller.enqueue(encoder.encode(&apos;chunk #3 &apos;)))

Might be easy to add encoder.encode(&apos;&apos;) in the middle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393623</commentid>
    <comment_count>7</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-26 12:53:22 -0800</bug_when>
    <thetext>Thanks for review! I hope to back with fixes during week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393784</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-26 18:17:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/36932534&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393913</commentid>
    <comment_count>9</comment_count>
      <attachid>332491</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2018-01-28 09:32:47 -0800</bug_when>
    <thetext>Created attachment 332491
Patch

Patch with fixed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393916</commentid>
    <comment_count>10</comment_count>
      <attachid>332491</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-28 10:12:50 -0800</bug_when>
    <thetext>Comment on attachment 332491
Patch

LGTM.
Great to see a WPT test as part of the patch.
Please submit a PR on WPT GitHub so that we do not lose this test when reimporting WPT tests in WebKit.

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:336
&gt; +        RefPtr&lt;SharedBuffer&gt; data = SharedBuffer::create();

Use auto or maybe we can directly write data = SharedBuffer::create() in the capturing lambda?

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:107
&gt; +        RefPtr&lt;SharedBuffer&gt; data = SharedBuffer::create();

Ditto.

&gt; Source/WebCore/Modules/fetch/FetchResponse.h:34
&gt; +#include &quot;ReadableStreamSink.h&quot;

Probably do not need ReadableStreamSink.h.
We might also just need to declare ReadableStreamChunk without having to include ReadableStreamChunk.h

&gt; Source/WebCore/Modules/streams/ReadableStreamChunk.h:26
&gt; +

Two lines.

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:54
&gt; +    if (m_callback) {

Would be good to find a way to not need that check in the future.
It is better to keep it for now since we have clearCallback().

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:55
&gt; +        auto chunk = ReadableStreamChunk { buffer.data(), buffer.length() };

Can be written as ReadableStreamChunk chunk { ... }

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.cpp:62
&gt; +    if (m_callback)

It is probably better to keep moving m_callback so that we free it as soon as possible.

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.h:32
&gt; +#include &quot;ReadableStreamChunk.h&quot;

Might just need to declare ReadableStreamChunk

&gt; Source/WebCore/Modules/streams/ReadableStreamSink.h:54
&gt;      static Ref&lt;ReadableStreamToSharedBufferSink&gt; create(Callback&amp;&amp; callback) { return adoptRef(*new ReadableStreamToSharedBufferSink(WTFMove(callback))); }

Preexisting issue but can we make ReadableStreamToSharedBufferSink constructor explicit?

&gt; LayoutTests/imported/w3c/ChangeLog:9
&gt; +        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream-chunk.https.html: Added.

I like that such test is added there!

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream-chunk.https.html:26
&gt; +          t.add_cleanup(() =&gt; iframe.remove())

Can we do the following:
var response = await iframe.contentWindow.fetch(&apos;body-stream&apos;);
assert_equals(await response.text(), &apos;...);

Then you can load any HTML as iframe.

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-readable-stream-chunk-iframe.html:24
&gt; +}).then(text =&gt; parent.done(text))

Can we use directly response.text() if we keep the iframe?

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-readable-stream-chunk-worker.js:12
&gt; +        console.log(&apos;ABCD&apos;);

Do we need this console log?

&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/fetch-event-respond-with-readable-stream-chunk-worker.js:50
&gt; +            .run(1);

Do we need this setTimeout(1)? Can we do something simpler like:
async controller =&gt; {
  controller.enqueue(...);
  await Promise.resolve();
  ...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394262</commentid>
    <comment_count>11</comment_count>
      <attachid>332579</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-29 14:22:40 -0800</bug_when>
    <thetext>Created attachment 332579
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394281</commentid>
    <comment_count>12</comment_count>
      <attachid>332586</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-29 15:07:22 -0800</bug_when>
    <thetext>Created attachment 332586
Fixing GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394300</commentid>
    <comment_count>13</comment_count>
      <attachid>332586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-29 15:39:26 -0800</bug_when>
    <thetext>Comment on attachment 332586
Fixing GTK

Clearing flags on attachment: 332586

Committed r227760: &lt;https://trac.webkit.org/changeset/227760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394301</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-29 15:39:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394321</commentid>
    <comment_count>15</comment_count>
      <attachid>332586</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-29 16:16:22 -0800</bug_when>
    <thetext>Comment on attachment 332586
Fixing GTK

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:344
&gt; +                data-&gt;append(reinterpret_cast&lt;const char*&gt;(chunk-&gt;data), chunk-&gt;size);

const_cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395223</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-31 16:15:28 -0800</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/w3c/web-platform-tests/pull/9327</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332067</attachid>
            <date>2018-01-23 13:23:38 -0800</date>
            <delta_ts>2018-01-26 11:52:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182008-20180123232335.patch</filename>
            <type>text/plain</type>
            <size>11435</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY1MTJlMGEwODA1ODhm
YmFhNjllNzBjMmFjOTdiMzI3MDA0YTNjOC4uYzIzMDg1NWM3NzU0NzA2MjZlY2EwZDlhM2YyMjNj
YzM4MDNmNDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTIzICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaVA6IE1vZGlmeSBGZXRjaFJlc3Bv
bnNlIHRvIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgd2l0aCBoYW5kbGluZyBvZiBSZWFk
YWJsZVN0cmVhbS4KKyAgICAgICAgTm8gbmV3IHRlc3RzIGFkZGVkLCB3aWxsIGJlIGFkZGVkIGlu
IHRoaXMgcGF0Y2gKKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1l
cjo6cmVzb2x2ZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxl
U3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luazo6Z2V0Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVucXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKwogMjAxOC0wMS0xNSAgWW9hdiBXZWlzcyAg
PHlvYXZAeW9hdi53cz4KIAogICAgICAgICBTdXBwb3J0IGZvciBwcmVjb25uZWN0IExpbmsgaGVh
ZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA3OGZl
MDEwZjNlY2Y1OTU1YWZhMGQwZDQyMTJkMWE4Zjg2ZGRhNDE1Li4wNjA1ZTlkMzRjMGJmMTc0YThl
M2Q1MjgzNzIyMzc2ZTA1YjNhYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtMzMyLDkgKzMzMiwxNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgIH0KIAogICAgIGlmIChyZXNwb25zZS0+aGFzUmVhZGFibGVTdHJlYW1Cb2R5KCkpIHsKKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29tdWxhdGl2ZVJlc3VsdCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAg
cmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0o
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgY29tdWxhdGl2ZVJlc3VsdCA9IFdURk1vdmUo
Y29tdWxhdGl2ZVJlc3VsdCksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjpDaHVuaz4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgUmVh
ZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OkNodW5rIGNodW5rID0gcmVzdWx0LnJldHVy
blZhbHVlKCk7CisKKyAgICAgICAgICAgIGlmIChjaHVuay5zaXplKSB7CisgICAgICAgICAgICAg
ICAgY29tdWxhdGl2ZVJlc3VsdC0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGNodW5rLmRhdGEpLCBjaHVuay5zaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9t
aXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tdWxh
dGl2ZVJlc3VsdCkpOwogICAgICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDhhYmYxNjUwNTM0ODhhNjkwYTU5
YjY4ZGMxOGEyYzEyMzExOGY4YjQuLjU4ZWMyNDM1ZGQ4OTcxMWVlNWQ5ZDdhOTM4MWUxODE4ZGQ4
NGNjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0xMDMsMTUgKzEwMywyMyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0q
CiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAg
IG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZSA9IG1fY29u
dGVudFR5cGVdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisKKyAgICAgICAgbV9z
aW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCB0eXBlID0gbV90eXBlLCBj
b250ZW50VHlwZSA9IG1fY29udGVudFR5cGVdKEV4Y2VwdGlvbk9yPFJlYWRhYmxlU3RyZWFtVG9T
aGFyZWRCdWZmZXJTaW5rOjpDaHVuaz4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8qIGRhdGEgPSByZXN1bHQucmV0dXJu
VmFsdWUoKSAmJiByZXN1bHQucmV0dXJuVmFsdWUoKS0+ZGF0YSgpID8gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocmVzdWx0LnJldHVyblZhbHVlKCktPmRhdGEoKSkgOiBu
dWxscHRyOwotICAgICAgICAgICAgYXV0byBzaXplID0gZGF0YSA/IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpLT5zaXplKCkgOiAwOwotICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZN
b3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YSwgc2l6ZSk7CisgICAgICAgICAg
ICAvLyBUT0RPOiBBZGQgY29tdWxhdGl2ZSBhZGRpbmcgb2YgdGhlIGRhdGEKKyAgICAgICAgICAg
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDaHVuayBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpOworICAgICAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgICAgIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY2h1bmsuZGF0YSksIGNodW5rLnNpemUpOworCisgICAgICAgICAgICBp
ZiAoIWNodW5rLnNpemUpCisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAg
fSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4
IDJiZjAwMzJmMTQ3N2UyNTkyZjlmODk2YjdkNDdhMTMxM2Y3YmU5NTYuLjM1ZDg4NzRmYTcxNGYz
YjMyMjU5MTYyMzg0N2JlYWIwNGIxNjViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhU
VFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU2luay5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTMz
MCw3ICszMzEsNyBAQCBGZXRjaFJlc3BvbnNlOjpSZXNwb25zZURhdGEgRmV0Y2hSZXNwb25zZTo6
Y29uc3VtZUJvZHkoKQogICAgIHJldHVybiBib2R5KCkudGFrZSgpOwogfQogCi12b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFi
bGVTdHJlYW0oQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBB
U1NFUlQobV9ib2R5KTsKICAgICBBU1NFUlQobV9ib2R5LT5yZWFkYWJsZVN0cmVhbSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzZmOGEx
ZmI4NjgzZmViYTgwZDA5NzRiMDQ0YzY2N2FiOTAyZGE4NC4uNDFjYTMyMjEwNjllYzFhNTE3M2Fj
OWIzYjE4NzU1YzdiY2QyNTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZldGNoQm9keU93
bmVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1TaW5rLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHJ1bnRp
bWUvVHlwZWRBcnJheXMuaD4KIApAQCAtOTMsNyArOTQsOSBAQCBwdWJsaWM6CiAKICAgICB1c2lu
ZyBDb25zdW1lRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYmKT47CiAgICAgdm9pZCBjb25zdW1lQm9keVdoZW5Mb2FkZWQo
Q29uc3VtZURhdGFDYWxsYmFjayYmKTsKLSAgICB2b2lkIGNvbnN1bWVCb2R5RnJvbVJlYWRhYmxl
U3RyZWFtKENvbnN1bWVEYXRhQ2FsbGJhY2smJik7CisKKyAgICB1c2luZyBDb25zdW1lRGF0YUJ5
Q2h1bmtDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWFkYWJsZVN0
cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Q2h1bms+JiYpPjsKKyAgICB2b2lkIGNvbnN1bWVCb2R5
RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5jcHAKaW5kZXggZTAyYTY3OTFlNjk0NjZhOGU2NDYwNjIxMjRiMzU0NjBiMTc0N2Nj
OC4uMDliYWYxNDgzMzc5ZjIwMzU2YmQ4NzI4OGJhM2JmNzI1NjQ4ODI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVhZGFibGVTdHJlYW1U
b1NoYXJlZEJ1ZmZlclNpbms6OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rKENhbGxi
YWNrJiYgY2FsbGJhY2spCi0gICAgOiBtX2NhbGxiYWNrIHsgV1RGTW92ZShjYWxsYmFjaykgfQor
OiBtX2NhbGxiYWNrIHsgV1RGTW92ZShjYWxsYmFjaykgfQogewogfQogCkBAIC00Niw2ICs0Niwx
NCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpwaXBlRnJvbShSZWFk
YWJsZVN0cmVhbSYgc3RyZWFtKQogICAgIHN0cmVhbS5waXBlVG8oKnRoaXMpOwogfQogCitSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Q2h1bmsgUmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbms6OmdldENodW5rKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQoreworICAg
IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDaHVuayBjaHVuazsKKyAgICBjaHVu
ay5kYXRhID0gYnVmZmVyLmRhdGEoKTsKKyAgICBjaHVuay5zaXplID0gYnVmZmVyLmxlbmd0aCgp
OworICAgIHJldHVybiBjaHVuazsKK30KKwogdm9pZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luazo6ZW5xdWV1ZShjb25zdCBCdWZmZXJTb3VyY2UmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWJ1ZmZlci5sZW5ndGgoKSkKQEAgLTUzLDE1ICs2MSwyMiBAQCB2b2lkIFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjplbnF1ZXVlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQog
CiAgICAgaWYgKCFtX2RhdGEpIHsKICAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKG1fY2FsbGJh
Y2spCisgICAgICAgICAgICBtX2NhbGxiYWNrKGdldENodW5rKGJ1ZmZlcikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIC8vIFRPRE86IENoZWNrIGlmIHdlIG5lZWQgCiAgICAgbV9kYXRh
LT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1
ZmZlci5sZW5ndGgoKSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFj
ayhnZXRDaHVuayhidWZmZXIpKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVm
ZmVyU2luazo6Y2xvc2UoKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2Nh
bGxiYWNrKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShtX2RhdGEpKTsKKyAgICAvLyBhdXRv
IGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKTsKKyAgICBpZiAobV9jYWxsYmFjaykKKyAg
ICAgICAgbV9jYWxsYmFjayhDaHVuayB7IG51bGxwdHIsIDAgfSk7CiB9CiAKIHZvaWQgUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVycm9yKFN0cmluZyYmIG1lc3NhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5r
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgK
aW5kZXggNjFjMmFhYmVmMmQ1NjYwMzE4ZWJiNzkwNWQxZmFlYTk1ODcyYmY1OS4uMjc0MjIxMTUy
NDY0ZjY0ZTQ5ZWFhZjdhYWJhZGY0OTc5YjI4N2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtNDksNyArNDksMTEg
QEAgcHVibGljOgogCiBjbGFzcyBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luayBmaW5h
bCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNpbmsgewogcHVibGljOgotICAgIHVzaW5nIENhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmKT47CisgICAgc3RydWN0IENodW5rIHsKKyAgICAgICAgY29uc3QgdWludDhfdCogZGF0YTsK
KyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsKKyAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxDaHVuaz4mJik+OwogICAgIHN0YXRpYyBSZWY8UmVh
ZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IGNyZWF0ZShDYWxsYmFjayYmIGNhbGxiYWNr
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
KFdURk1vdmUoY2FsbGJhY2spKSk7IH0KICAgICB2b2lkIHBpcGVGcm9tKFJlYWRhYmxlU3RyZWFt
Jik7CiAgICAgdm9pZCBjbGVhckNhbGxiYWNrKCkgeyBtX2NhbGxiYWNrID0geyB9OyB9CkBAIC01
Nyw2ICs2MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVhZGFibGVTdHJlYW1Ub1NoYXJl
ZEJ1ZmZlclNpbmsoQ2FsbGJhY2smJik7CiAKKyAgICBDaHVuayBnZXRDaHVuayhjb25zdCBCdWZm
ZXJTb3VyY2UmKTsKICAgICB2b2lkIGVucXVldWUoY29uc3QgQnVmZmVyU291cmNlJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZXJyb3IoU3RyaW5nJiYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggMTJlMTg0Mzc5ZDM0YThjYjQ0ZTdiZjc2
ZDczNDg0MTY3ZGJhYmJlZS4uYjJmNGVjYTlmYTExZjZiNWE1YzA5OGNjN2YxMWM2OTQzM2FlMGY4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC01MiwxNiArNTIsMTcgQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBGZXRjaFJlc3BvbnNl
KiByZXNwb25zZSkKICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZS0+cmVz
b3VyY2VSZXNwb25zZSgpKTsKIAogICAgIGlmIChyZXNwb25zZS0+aGFzUmVhZGFibGVTdHJlYW1C
b2R5KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzZW5kIHRoZSBib2R5IGFzIGNo
dW5rcy4KLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtj
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCldIChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9t
UmVhZGFibGVTdHJlYW0oW2NsaWVudCA9IFdURk1vdmUoY2xpZW50KV0gKEV4Y2VwdGlvbk9yPFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDaHVuaz4mJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAg
ICAgIGNsaWVudC0+ZGlkRmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKKyAg
ICAgICAgICAgIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDaHVuayBjaHVuayA9
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworICAgICAgICAgICAgaWYgKGNodW5rLnNpemUpCisgICAg
ICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay5kYXRhKSwgY2h1bmsuc2l6ZSkpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332396</attachid>
            <date>2018-01-26 11:52:44 -0800</date>
            <delta_ts>2018-01-26 11:55:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182008-20180126215240.patch</filename>
            <type>text/plain</type>
            <size>23753</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY1MTJlMGEwODA1ODhm
YmFhNjllNzBjMmFjOTdiMzI3MDA0YTNjOC4uYTBjNzRjYzllMmI2ODMyMGJhNjY4NjljZDc5NWMw
NzZiMmVmZTcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTAxLTI2ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgRmV0Y2hSZXNwb25zZSB0
byBzdXBwb3J0IENvbnN1bWVEYXRhIGNhbGxiYWNrIHdpdGggCisgICAgICAgIGhhbmRsaW5nIG9m
IFJlYWRhYmxlU3RyZWFtIGJ5IGNodW5rcworCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJv
ZHlGcm9tUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5rLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OlJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjbG9zZSk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorCiAyMDE4LTAxLTE1ICBZb2F2IFdlaXNzICA8eW9h
dkB5b2F2LndzPgogCiAgICAgICAgIFN1cHBvcnQgZm9yIHByZWNvbm5lY3QgTGluayBoZWFkZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDc4ZmUwMTBm
M2VjZjU5NTVhZmEwZDBkNDIxMmQxYThmODZkZGE0MTUuLmM5NTVjYmE5OWRmOTU2YzkzOWQ2ZmRk
OWE5ZGZkMGY1OTc0MWUyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgorI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAKQEAgLTMzMiwxMCArMzMzLDE4IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJs
ZVN0cmVhbUJvZHkoKSkgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwot
ICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgdGhpc10oRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdU
Rk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsK
KyAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNl
ID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCB0aGlzXShFeGNlcHRp
b25PcjxSZWFkYWJsZVN0cmVhbUNodW5rPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisKKyAgICAgICAg
ICAgIFJlYWRhYmxlU3RyZWFtQ2h1bmsgY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsKKwor
ICAgICAgICAgICAgaWYgKGNodW5rLnNpemUpCisgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLmRhdGEpLCBjaHVuay5zaXplKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMp
OworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
aW5kZXggOGFiZjE2NTA1MzQ4OGE2OTBhNTliNjhkYzE4YTJjMTIzMTE4ZjhiNC4uNjc3MTc4NTFl
MmE1NjU5ZWFjNmFkMmFkYmQ0NzU2NmRkYTk2NGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogCiAjaW5jbHVkZSAiSlNCbG9iLmgiCisj
aW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURl
Y29kZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAzLDE1ICsxMDQsMjAgQEAgdm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFJlYWRhYmxlU3RyZWFtKgogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJU
KCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdHlwZSA9IG1fdHlwZSwg
Y29udGVudFR5cGUgPSBtX2NvbnRlbnRUeXBlXShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgICAgICBtX3NpbmsgPSBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlID0g
bV9jb250ZW50VHlwZV0oRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJlYW1DaHVuaz4mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1
dG8qIGRhdGEgPSByZXN1bHQucmV0dXJuVmFsdWUoKSAmJiByZXN1bHQucmV0dXJuVmFsdWUoKS0+
ZGF0YSgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocmVzdWx0LnJl
dHVyblZhbHVlKCktPmRhdGEoKSkgOiBudWxscHRyOwotICAgICAgICAgICAgYXV0byBzaXplID0g
ZGF0YSA/IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLT5zaXplKCkgOiAwOwotICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
ZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5rID0gcmVz
dWx0LnJldHVyblZhbHVlKCk7CisKKyAgICAgICAgICAgIGlmIChjaHVuay5zaXplKQorICAgICAg
ICAgICAgICAgIGRhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVu
ay5kYXRhKSwgY2h1bmsuc2l6ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlw
ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwg
ZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0
cmVhbSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDJiZjAwMzJmMTQ3N2UyNTkyZjlmODk2YjdkNDdhMTMx
M2Y3YmU5NTYuLjM1ZDg4NzRmYTcxNGYzYjMyMjU5MTYyMzg0N2JlYWIwNGIxNjViMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFt
U2luay5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAKQEAgLTMzMCw3ICszMzEsNyBAQCBGZXRjaFJlc3BvbnNlOjpSZXNw
b25zZURhdGEgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHkoKQogICAgIHJldHVybiBib2R5KCku
dGFrZSgpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxl
U3RyZWFtKENvbnN1bWVEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9ib2R5KTsKICAgICBBU1NFUlQobV9ib2R5
LT5yZWFkYWJsZVN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKaW5kZXggMzZmOGExZmI4NjgzZmViYTgwZDA5NzRiMDQ0YzY2N2FiOTAyZGE4
NC4uMDRjMGE1YmZkMDJiODg5NDFhNDM0ZTA2ZmVjYzQ0MTBkZWVkZDc1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTMwLDYgKzMwLDggQEAK
IAogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3Ry
ZWFtU2luay5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDxydW50
aW1lL1R5cGVkQXJyYXlzLmg+CiAKQEAgLTkzLDcgKzk1LDkgQEAgcHVibGljOgogCiAgICAgdXNp
bmcgQ29uc3VtZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik+OwogICAgIHZvaWQgY29uc3VtZUJvZHlXaGVuTG9hZGVk
KENvbnN1bWVEYXRhQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBjb25zdW1lQm9keUZyb21SZWFkYWJs
ZVN0cmVhbShDb25zdW1lRGF0YUNhbGxiYWNrJiYpOworCisgICAgdXNpbmcgQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVhZGFibGVT
dHJlYW1DaHVuaz4mJik+OworICAgIHZvaWQgY29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0o
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ2h1bmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5rLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjVlZmYzZjMyYzNiYzI2NjQ5ZDRmZThhYjllMzA1MTUzYTg3NzE3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5r
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBPbGVrc2FuZHIg
U2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBSZWFkYWJsZVN0cmVhbUNodW5rIHsKKyAgICBjb25zdCB1aW50OF90KiBkYXRh
OworICAgIHNpemVfdCBzaXplOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcAppbmRleCBlMDJhNjc5MWU2OTQ2
NmE4ZTY0NjA2MjEyNGIzNTQ2MGIxNzQ3Y2M4Li45OTE1NGI4NDBhNmRhNDk1ZTgyNTFjNzk1Mjc2
ZGNlODY5YTFhMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1TaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6UmVhZGFibGVTdHJl
YW1Ub1NoYXJlZEJ1ZmZlclNpbmsoQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fY2FsbGJh
Y2sgeyBXVEZNb3ZlKGNhbGxiYWNrKSB9Cis6IG1fY2FsbGJhY2sgeyBXVEZNb3ZlKGNhbGxiYWNr
KSB9CiB7CiB9CiAKQEAgLTUzLDE1ICs1MywyMiBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjplbnF1ZXVlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgYnVmZmVyKQogCiAgICAg
aWYgKCFtX2RhdGEpIHsKICAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKG1fY2FsbGJhY2spCisg
ICAgICAgICAgICBtX2NhbGxiYWNrKFJlYWRhYmxlU3RyZWFtQ2h1bmsgeyBidWZmZXIuZGF0YSgp
LCBidWZmZXIubGVuZ3RoKCkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gVE9E
TzogQ2hlY2sgaWYgd2UgbmVlZCAKICAgICBtX2RhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpKTsKKworICAgIGlm
IChtX2NhbGxiYWNrKQorICAgICAgICBtX2NhbGxiYWNrKFJlYWRhYmxlU3RyZWFtQ2h1bmsgeyBi
dWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkgfSk7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJl
YW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNsb3NlKCkKIHsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9
IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUobV9kYXRhKSk7
CisgICAgLy8gYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7CisgICAgaWYgKG1f
Y2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2soUmVhZGFibGVTdHJlYW1DaHVuayB7IG51bGxw
dHIsIDAgfSk7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVy
cm9yKFN0cmluZyYmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggNjFjMmFhYmVmMmQ1NjYwMzE4ZWJiNzkw
NWQxZmFlYTk1ODcyYmY1OS4uODI2MzU4ZWJhOTAzYzQ3ZWFmOGUyMDdmYWJkYjUxMGZmMGIxY2M1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5o
IgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiBjbGFzcyBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luayBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNpbmsgewogcHVibGlj
OgotICAgIHVzaW5nIENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYmKT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJlYW1DaHVuaz4mJik+OwogICAgIHN0YXRp
YyBSZWY8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IGNyZWF0ZShDYWxsYmFjayYm
IGNhbGxiYWNrKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRC
dWZmZXJTaW5rKFdURk1vdmUoY2FsbGJhY2spKSk7IH0KICAgICB2b2lkIHBpcGVGcm9tKFJlYWRh
YmxlU3RyZWFtJik7CiAgICAgdm9pZCBjbGVhckNhbGxiYWNrKCkgeyBtX2NhbGxiYWNrID0geyB9
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggN2U1ZDYxMjRlYjY5NTFmNjdmYWFmY2NjOTQxNGIxODk3YzMyMzcwMy4uZWRmOTgx
MDg1MGU3ZGQwZmE1YmM4YjNmZGMwOTE3MmRhYWUzMjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2OCw2ICsyMzY4LDcg
QEAKIAkJOEFCNEJDNzcxMjZGREI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVD
b3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4QUI0QkM3NjEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0
ZUNvdW50SW5jcmVtZW50ZXIuaCAqLzsgfTsKIAkJOEFGNEU1NTYxMURDNUEzNjAwMEVEM0RFIC8q
IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEFGNEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2
aWdhdGlvbi5oICovOyB9OwogCQk4QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFu
Y2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDhBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9Owor
CQk4QkQzN0E2ODIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEJEMzdBNjcyMDFCQjM5
QzAwMTE3MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RTRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyog
SlNGZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4RTRDOTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi87
IH07CiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxOTEyODhCMTdCMDA0
N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkwMDE3NzQwMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERl
cml2YXRpdmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkwMDE3NzNEMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNw
cCAqLzsgfTsKQEAgLTk4NjcsNiArOTg2OCw3IEBACiAJCThBRjRFNTU0MTFEQzVBMzYwMDBFRDNE
RSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBl
cmZvcm1hbmNlTmF2aWdhdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThB
RjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4QUY0RTU1QTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VU
aW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlVGltaW5nLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJEMzdBNjcyMDFCQjM5QzAwMTE3MzRBIC8q
IFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1DaHVu
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEODFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNGZXRjaFJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CThFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50UXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NDk1LDYgKzE2NDk3LDcgQEAKIAkJCQk5OTA4QjBGMjFC
Q0FDRjkxMDBFRDM1NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmpzICovLAogCQkJCTQx
MTg5RUY3MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAq
LywKIAkJCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVx
dWVzdC5qcyAqLywKKwkJCQk4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJl
YW1DaHVuay5oICovLAogCQkJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLywKIAkJCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDBG
NjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcyAqLywKIAkJCQk0MTlGQUZB
RDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbCAqLywK
QEAgLTI4OTQzLDYgKzI4OTQ2LDcgQEAKIAkJCQlBODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyog
UmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQx
MkRGMDAwQTYwNDMgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVh
bUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQk4QkQzN0E2ODIwMUJCMzlDMDAxMTczNEEg
LyogUmVhZGFibGVTdHJlYW1DaHVuay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5QTkxRjU5
QzU2QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUlu
dGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBRjFGNTlDRjVCMDA5
RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCmluZGV4IDEyZTE4NDM3OWQzNGE4Y2I0NGU3YmY3NmQ3MzQ4NDE2N2RiYWJi
ZWUuLmM5YmM0NzZkMmY0ZGU3ZjgyNGVmMDllNzViODI0Y2IwNDAxOTAyMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQu
aCIKICNpbmNsdWRlICJGZXRjaFJlcXVlc3QuaCIKICNpbmNsdWRlICJGZXRjaFJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTUyLDE2ICs1MywxNyBAQCBzdGF0aWMgdm9p
ZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEZldGNoUmVzcG9uc2UqIHJl
c3BvbnNlKQogICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLT5yZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCiAgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJsZVN0cmVhbUJvZHko
KSkgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlbmQgdGhlIGJvZHkgYXMgY2h1bmtz
LgotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oW2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KV0gKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFk
YWJsZVN0cmVhbShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoRXhjZXB0aW9uT3I8UmVhZGFi
bGVTdHJlYW1DaHVuaz4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkRmFpbCgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KGF1dG8gYnVmZmVyID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAg
ICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAg
ICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKKyAgICAgICAgICAgIFJlYWRhYmxlU3RyZWFt
Q2h1bmsgY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChjaHVu
ay5zaXplKQorICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmsuZGF0YSksIGNo
dW5rLnNpemUpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjbGllbnQtPmRp
ZEZpbmlzaCgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGYyZDBmYmFjZGY1YzY0ZGY0MWRlYjFmY2NmMWI0NzMz
ZTAzN2JhYjAuLjgwZTY3NzQ1ZjI2OWQ0Mzk5NmEyYmViMjQ2NGZiNTcxNTJlYzgzOWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAxLTI2ICBP
bGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNo
UmVzcG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0
YSBpcyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRo
LXJlYWRhYmxlLXN0cmVhbS1jaHVuay5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay5odHRwcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3Ry
ZWFtLWNodW5rLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9mZXRjaC1ldmVudC1y
ZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLXdvcmtlci5qczogQWRkZWQuCisgICAg
ICAgIChjb25zdC5wcm9jZXNzKToKKyAgICAgICAgKHRoaXMuc3RlcCk6CisgICAgICAgICh0aGlz
LnJ1bik6CisgICAgICAgIChjb25zdC5hc3luY1N0ZXBzKToKKwogMjAxOC0wMS0xMSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkaXJlY3RlZCBpZnJhbWUg
bG9hZGluZyB3aXRoIFJlcXVlc3QucmVkaXJlY3Q9Zm9sbG93IHNob3VsZCBmYWlsCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUt
c3RyZWFtLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNo
LWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmsuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcyMjg2MDViZmZkNGRiZDE3ZWRmYzFhZjFmYWM0YzMwZmE4YTY3ZmEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25k
LXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKKworUEFTUyBSZXNwb25kIGJ5IGNodW5rcyB3aXRoIGEgUmVzcG9uc2UgYnVpbHQgZnJv
bSBhIFJlYWRhYmxlU3RyZWFtIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRj
aC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFt
LWNodW5rLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM4ZTMxZjFhYTFmNDdhZGQ1NmZiYjA5MWRh
ZGRhNmRlMmY4ZWRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNo
LWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmsuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5yZXNwb25kV2l0aCB3aXRoIGEgcmVzcG9uc2UgYnVpbHQgZnJvbSBhIFJlYWRhYmxlU3Ry
ZWFtPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitjb25zdCBXT1JLRVIgPQorICAncmVzb3Vy
Y2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2Vy
LmpzJzsKK2NvbnN0IFNDT1BFID0KKyAgJ3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdp
dGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLWlmcmFtZS5odG1sJzsKKy8vIENhbGxlZCBieSB0aGUg
aWZyYW1lIHdoZW4gZG9uZS4KK3ZhciBkb25lOwordmFyIGRvbmVfd2FzX2NhbGxlZCA9IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gZG9uZSA9IHJlc29sdmUpOworCitwcm9taXNlX3Rlc3QodCA9PiB7
CisgICAgcmV0dXJuIHNlcnZpY2Vfd29ya2VyX3VucmVnaXN0ZXJfYW5kX3JlZ2lzdGVyKHQsIFdP
UktFUiwgU0NPUEUpCisgICAgICAudGhlbihyZWcgPT4geworICAgICAgICAgICBhZGRfY29tcGxl
dGlvbl9jYWxsYmFjaygoKSA9PiByZWcudW5yZWdpc3RlcigpKTsKKyAgICAgICAgICAgcmV0dXJu
IHdhaXRfZm9yX3N0YXRlKHQsIHJlZy5pbnN0YWxsaW5nLCAnYWN0aXZhdGVkJyk7CisgICAgICAg
ICB9KQorICAgICAgLnRoZW4oKCkgPT4gd2l0aF9pZnJhbWUoU0NPUEUpKQorICAgICAgLnRoZW4o
aWZyYW1lID0+IHsKKyAgICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IGlmcmFtZS5yZW1vdmUo
KSkKKyAgICAgICAgfSkKKyAgICAgIC50aGVuKCgpID0+IGRvbmVfd2FzX2NhbGxlZCkKKyAgICAg
IC50aGVuKHJlc3VsdCA9PiBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgJ2NodW5rICMxIGNodW5rICMy
IGNodW5rICMzIGNodW5rICM0JykpOworICB9LCAnUmVzcG9uZCBieSBjaHVua3Mgd2l0aCBhIFJl
c3BvbnNlIGJ1aWx0IGZyb20gYSBSZWFkYWJsZVN0cmVhbScpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRo
LXJlYWRhYmxlLXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jl
c291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLWlm
cmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNTMwMDY1OTJhNzZjYTY0YzYyNDc5ODZiNDNiNmE0YzQw
MzQ4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0
Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7
CisKK2ZldGNoKCdib2R5LXN0cmVhbScpLnRoZW4ocmVzcCA9PiB7CisgICAgbGV0IHJlc29sdmUg
PSB1bmRlZmluZWQ7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChfcmVzb2x2ZSkg
PT4geyByZXNvbHZlID0gX3Jlc29sdmU7IH0pOworICAgIGNvbnN0IHJlYWRlciA9IHJlc3AuYm9k
eS5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCBjaHVua3MgPSBbXTsKKyAgICBjb25zdCBkZW5jb2Rl
ciA9IG5ldyBUZXh0RGVjb2RlcigpOworICAgIGNvbnN0IHN0ZXAgPSAoKSA9PiByZWFkZXIucmVh
ZCgpOworICAgIGNvbnN0IGhhbmRsZSA9ICh7IGRvbmUsIHZhbHVlIH0pID0+IHsKKyAgICAgICAg
aWYgKGRvbmUpIHsKKyAgICAgICAgICAgIHJlc29sdmUoY2h1bmtzLmpvaW4oJycpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNodW5rcy5wdXNo
KGRlbmNvZGVyLmRlY29kZSh2YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZXAoKS50aGVu
KGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RlcCgpLnRoZW4oaGFuZGxlKTsK
KyAgICByZXR1cm4gcHJvbWlzZTsKK30pLnRoZW4odGV4dCA9PiBwYXJlbnQuZG9uZSh0ZXh0KSkK
Ky5jYXRjaChlID0+IHBhcmVudC5kb25lKCdGQUlMOiAnICsgZSkpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13
aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9y
ZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay13
b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA4MGQ3NTgwOTYxZGJkNTQ2MTFjOTc4NDVhY2M0ZmE4NmM4
ODhiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9mZXRj
aC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLXdvcmtlci5qcwpAQCAt
MCwwICsxLDQ0IEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFzeW5jU3RlcHMgPSBmdW5jdGlv
bigpIHsKKyAgY29uc3QgcXVldWUgPSBbXTsKKworICBjb25zdCBwcm9jZXNzID0gZnVuY3Rpb24g
KGludGVydmFsKSB7CisgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuOworICAgIGNv
bnN0IHN0ZXAgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgY29uc3QgZm4gPSAoKSA9PiB7IAorICAg
ICAgc3RlcCgpOyAKKyAgICAgIHByb2Nlc3MoaW50ZXJ2YWwpOyAKKyAgICB9OworCisgICAgc2V0
VGltZW91dChmbiwgaW50ZXJ2YWwpOworICB9OworCisgIHRoaXMuc3RlcCA9IGZ1bmN0aW9uIChz
dGVwKSB7CisgICAgcXVldWUucHVzaChzdGVwKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfTsKKwor
ICB0aGlzLnJ1biA9IGZ1bmN0aW9uIChpbnRlcnZhbCA9IDApIHsKKyAgICBwcm9jZXNzKGludGVy
dmFsKTsKKyAgfTsKK307CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCBldmVudCA9
PiB7CisgICAgaWYgKCFldmVudC5yZXF1ZXN0LnVybC5tYXRjaCgvYm9keS1zdHJlYW0kLykpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7
c3RhcnQ6IGNvbnRyb2xsZXIgPT4geworICAgICAgICBjb25zdCBwcm9jZXNzID0gbmV3IGFzeW5j
U3RlcHMoKTsKKyAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpOworICAg
ICAgICBwcm9jZXNzCisgICAgICAgICAgICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmVucXVldWUo
ZW5jb2Rlci5lbmNvZGUoJ2NodW5rICMxICcpKSkKKyAgICAgICAgICAgIC5zdGVwKCgpID0+IGNv
bnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnY2h1bmsgIzIgJykpKQorICAgICAgICAg
ICAgLnN0ZXAoKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAj
MyAnKSkpCisgICAgICAgICAgICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rl
ci5lbmNvZGUoJ2NodW5rICM0JykpKQorICAgICAgICAgICAgLnN0ZXAoKCkgPT4gY29udHJvbGxl
ci5jbG9zZSgpKQorICAgICAgICAgICAgLnJ1bigxKTsKKyAgICAgIH19KTsKKyAgICBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uoc3RyZWFtKSk7CisgIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332397</attachid>
            <date>2018-01-26 11:55:37 -0800</date>
            <delta_ts>2018-01-28 09:32:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182008-20180126215532.patch</filename>
            <type>text/plain</type>
            <size>23769</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ5ODU2NGFhMjY5NTFi
MzhmZDUxMjVkNGM3ZjM2NTYzYTE3ZDFiMS4uNTdhZWU3YzQ5MTczY2NiMzBiZTNiMjJhODhkNTk4
MWY0YzU2YjZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTAxLTI2ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgRmV0Y2hSZXNwb25zZSB0
byBzdXBwb3J0IENvbnN1bWVEYXRhIGNhbGxiYWNrIHdpdGggCisgICAgICAgIGhhbmRsaW5nIG9m
IFJlYWRhYmxlU3RyZWFtIGJ5IGNodW5rcworCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJv
ZHlGcm9tUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5rLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OlJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjbG9zZSk6CisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorCiAyMDE4LTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gcHJlZmVycy1yZWR1Y2VkLW1vdGlv
biBtZWRpYSBxdWVyeSBpcyBub3Qgd29ya2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcAppbmRleCA3YjZmZDE4NjE2ODFiYWEzMGQ0YzBlZDRhNDI4MjE2ODdlMDZm
YzZmLi5iNTM5NWZiMTI3YWRlOTQ4ZjE0NTBhMjY3YTdmYjA5NjAwYzM3Y2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlcXVlc3QuaCIKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNodW5rLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlVSTC5oIgog
CkBAIC0zMzIsMTAgKzMzMywxOCBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBp
bmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgIH0KIAog
ICAgIGlmIChyZXNwb25zZS0+aGFzUmVhZGFibGVTdHJlYW1Cb2R5KCkpIHsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
IHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5
RnJvbVJlYWRhYmxlU3RyZWFtKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRoaXNdKEV4
Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9k
eUZyb21SZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgdGhpc10oRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJlYW1DaHVuaz4mJiBy
ZXN1bHQpIG11dGFibGUgeworCisgICAgICAgICAgICBSZWFkYWJsZVN0cmVhbUNodW5rIGNodW5r
ID0gcmVzdWx0LnJldHVyblZhbHVlKCk7CisKKyAgICAgICAgICAgIGlmIChjaHVuay5zaXplKQor
ICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihjaHVuay5kYXRhKSwgY2h1bmsuc2l6ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAg
ICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDhhYmYxNjUwNTM0ODhhNjkwYTU5YjY4
ZGMxOGEyYzEyMzExOGY4YjQuLjY3NzE3ODUxZTJhNTY1OWVhYzZhZDJhZGJkNDc1NjZkZGE5NjRj
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIu
aCIKIAogI2luY2x1ZGUgIkpTQmxvYi5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsu
aCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEwMywxNSArMTA0LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWFkYWJsZVN0cmVhbSoKIHsKICAgICBp
ZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0g
UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlID0gbV9jb250ZW50VHlwZV0o
RXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCB0
eXBlID0gbV90eXBlLCBjb250ZW50VHlwZSA9IG1fY29udGVudFR5cGVdKEV4Y2VwdGlvbk9yPFJl
YWRhYmxlU3RyZWFtQ2h1bms+JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3Qo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvKiBkYXRhID0gcmVzdWx0LnJldHVyblZhbHVl
KCkgJiYgcmVzdWx0LnJldHVyblZhbHVlKCktPmRhdGEoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KHJlc3VsdC5yZXR1cm5WYWx1ZSgpLT5kYXRhKCkpIDogbnVsbHB0
cjsKLSAgICAgICAgICAgIGF1dG8gc2l6ZSA9IGRhdGEgPyByZXN1bHQucmV0dXJuVmFsdWUoKS0+
c2l6ZSgpIDogMDsKLSAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShw
cm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgUmVh
ZGFibGVTdHJlYW1DaHVuayBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpOworCisgICAgICAg
ICAgICBpZiAoY2h1bmsuc2l6ZSkKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2h1bmsuZGF0YSksIGNodW5rLnNpemUpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92
ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwog
ICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1YTM3
NzhkYTY2MDhmZTZmZjhkNDBmZDhiYjY4MzE2ODgxNGFiMjk1Li5hNTlkMTI4MGExNjU1M2IxM2U3
NTI4ZDlhYzczZWNjZGU3NGZlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNpbmsuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC0zMzksNyAr
MzQwLDcgQEAgRmV0Y2hSZXNwb25zZTo6UmVzcG9uc2VEYXRhIEZldGNoUmVzcG9uc2U6OmNvbnN1
bWVCb2R5KCkKICAgICByZXR1cm4gYm9keSgpLnRha2UoKTsKIH0KIAotdm9pZCBGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShDb25zdW1lRGF0YUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3Ry
ZWFtKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJU
KG1fYm9keSk7CiAgICAgQVNTRVJUKG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGZlNGJjM2E0NWE0
ZjY2MmNiOWEwYjM1ODI2NTQxZTAzYjUzYWU2NzMuLjYzZGQ3MzQyMjBmODBmNmM2ZTZlNzdkNzM3
YjFmMmE5ZDY5MGQxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJGZXRjaEJvZHlPd25lci5o
IgogI2luY2x1ZGUgIkZldGNoSGVhZGVycy5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1
bmsuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNpbmsuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5cy5oPgogCkBAIC05Myw3
ICs5NSw5IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIENvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpPjsKICAg
ICB2b2lkIGNvbnN1bWVCb2R5V2hlbkxvYWRlZChDb25zdW1lRGF0YUNhbGxiYWNrJiYpOwotICAg
IHZvaWQgY29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFDYWxsYmFjayYm
KTsKKworICAgIHVzaW5nIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKEV4Y2VwdGlvbk9yPFJlYWRhYmxlU3RyZWFtQ2h1bms+JiYpPjsKKyAgICB2b2lkIGNv
bnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNl
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUNodW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1DaHVuay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1ZWZmM2YzMmMzYmMyNjY0OWQ0ZmU4YWI5
ZTMwNTE1M2E4NzcxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1DaHVuay5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggT2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjcHJhZ21h
IG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUmVhZGFibGVTdHJlYW1DaHVu
ayB7CisgICAgY29uc3QgdWludDhfdCogZGF0YTsKKyAgICBzaXplX3Qgc2l6ZTsKK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
U2luay5jcHAKaW5kZXggZTAyYTY3OTFlNjk0NjZhOGU2NDYwNjIxMjRiMzU0NjBiMTc0N2NjOC4u
OTkxNTRiODQwYTZkYTQ5NWU4MjUxYzc5NTI3NmRjZTg2OWExYTBkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms6OlJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rKENhbGxiYWNr
JiYgY2FsbGJhY2spCi0gICAgOiBtX2NhbGxiYWNrIHsgV1RGTW92ZShjYWxsYmFjaykgfQorOiBt
X2NhbGxiYWNrIHsgV1RGTW92ZShjYWxsYmFjaykgfQogewogfQogCkBAIC01MywxNSArNTMsMjIg
QEAgdm9pZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5xdWV1ZShjb25zdCBC
dWZmZXJTb3VyY2UmIGJ1ZmZlcikKIAogICAgIGlmICghbV9kYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5sZW5ndGgoKSk7
CisgICAgICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICAgICAgbV9jYWxsYmFjayhSZWFkYWJs
ZVN0cmVhbUNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIC8vIFRPRE86IENoZWNrIGlmIHdlIG5lZWQgCiAgICAgbV9k
YXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSks
IGJ1ZmZlci5sZW5ndGgoKSk7CisKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxs
YmFjayhSZWFkYWJsZVN0cmVhbUNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgp
IH0pOwogfQogCiB2b2lkIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjbG9zZSgp
CiB7Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKG1fZGF0YSkpOworICAgIC8vIGF1dG8gY2FsbGJhY2sgPSBXVEZN
b3ZlKG1fY2FsbGJhY2spOworICAgIGlmIChtX2NhbGxiYWNrKQorICAgICAgICBtX2NhbGxiYWNr
KFJlYWRhYmxlU3RyZWFtQ2h1bmsgeyBudWxscHRyLCAwIH0pOwogfQogCiB2b2lkIFJlYWRhYmxl
U3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjplcnJvcihTdHJpbmcmJiBtZXNzYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmlu
ZGV4IDYxYzJhYWJlZjJkNTY2MDMxOGViYjc5MDVkMWZhZWE5NTg3MmJmNTkuLjgyNjM1OGViYTkw
M2M0N2VhZjhlMjA3ZmFiZGI1MTBmZjBiMWNjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogY2xhc3MgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsgZmluYWwgOiBwdWJsaWMg
UmVhZGFibGVTdHJlYW1TaW5rIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik+OworICAg
IHVzaW5nIENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlYWRhYmxl
U3RyZWFtQ2h1bms+JiYpPjsKICAgICBzdGF0aWMgUmVmPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRC
dWZmZXJTaW5rPiBjcmVhdGUoQ2FsbGJhY2smJiBjYWxsYmFjaykgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luayhXVEZNb3ZlKGNhbGxiYWNrKSkp
OyB9CiAgICAgdm9pZCBwaXBlRnJvbShSZWFkYWJsZVN0cmVhbSYpOwogICAgIHZvaWQgY2xlYXJD
YWxsYmFjaygpIHsgbV9jYWxsYmFjayA9IHsgfTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiMDA4ZTM1NTRkMDg2NDU1YTY0
ZjdlOWUwNTgwOGVmMTU4Yzc0NjQuLjIyMzNjMmVjMjBiYzE2M2E3N2I5ZDU2ZmZiNzkwN2FlNWI0
YjMxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIzODksNiArMjM4OSw3IEBACiAJCThBQjRCQzc3MTI2RkRCNzEwMERFQjcy
NyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFCNEJDNzYxMjZGREI3MTAwREVC
NzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJ
CThBRjRFNTU2MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTUzMTFEQzVB
MzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCAqLzsgfTsKIAkJOEFGNEU1NUMx
MURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1OTExREM1QTYzMDAwRUQzREUgLyog
UGVyZm9ybWFuY2VUaW1pbmcuaCAqLzsgfTsKKwkJOEJEMzdBNjgyMDFCQjM5QzAwMTE3MzRBIC8q
IFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDhCRDM3QTY3MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNo
dW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OEU0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0Qzk2RDkxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5oICovOyB9OwogCQk4RUM2Qzk2MzIwMUEyNTE2MDBGQkZB
NTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3
QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhGNjc1NjE5MTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5MzYs
NiArOTkzNyw3IEBACiAJCThBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRp
bWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWlu
Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1QTExREM1QTYzMDAwRUQz
REUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBlcmZv
cm1hbmNlVGltaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEUzM0NEOTMy
MDFBMjlDMTAwRTM5MDkzIC8qIEdhcExlbmd0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHYXBMZW5ndGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4QkQzN0E2NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNodW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCThFNEM5NkQ4MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDkxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTRmV0Y2hSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zl
dGNoUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEVDNkM5NjEyMDFB
MjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHYXBMZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTY3LDYg
KzE2NTY5LDcgQEAKIAkJCQk5OTA4QjBGMjFCQ0FDRjkxMDBFRDM1NzIgLyogUmVhZGFibGVTdHJl
YW1CWU9CUmVhZGVyLmpzICovLAogCQkJCTQxMTg5RUY3MUFEODIzMjgwMEI5NTY3MiAvKiBSZWFk
YWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmlkbCAqLywKIAkJCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDU2
NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5qcyAqLywKKwkJCQk4QkQzN0E2NzIwMUJC
MzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovLAogCQkJCTQxMTg5RUY3MUFE
ODIzMjgwMEI5MEEwRCAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLywK
IAkJCQk5OTA4QjBGMDFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5qcyAqLywKIAkJCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLmlkbCAqLywKQEAgLTI5MDkwLDYgKzI5MDkzLDcgQEAKIAkJCQlB
ODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU5MUJCRDEy
RTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4QkQzN0E2ODIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDEyOUM5QTkxRjU5QzU2QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYw
MDBBM0Y2NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTI5QzlBRjFGNTlDRjVCMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IGQ0NDViODEzMWIx
NjZkZDQ2YzMxOWNmZDVmZjkzMjg3MzUwM2M1NzQuLjE2ZGI4NTFhNDdkODgxY2Y5YWFkMzhhNDA5
YWNmZTM5OGE5MzlmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJGZXRjaFJlcXVlc3QuaCIK
ICNpbmNsdWRlICJGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVu
ay5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIgpAQCAtNTMs
MTYgKzU0LDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNs
aWVudCwgRmV0Y2hSZXNwb25zZSogcmVzcG9uc2UpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSk7CiAKICAgICBpZiAocmVzcG9uc2Ut
Pmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
c2VuZCB0aGUgYm9keSBhcyBjaHVua3MuCi0gICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZy
b21SZWFkYWJsZVN0cmVhbShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9u
c2UtPmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCldIChFeGNlcHRpb25PcjxSZWFkYWJsZVN0cmVhbUNodW5rPiYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgY2xpZW50LT5kaWRGYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIu
cmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOworICAg
ICAgICAgICAgUmVhZGFibGVTdHJlYW1DaHVuayBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgp
OworICAgICAgICAgICAgaWYgKGNodW5rLnNpemUpCisgICAgICAgICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjaHVuay5kYXRhKSwgY2h1bmsuc2l6ZSkpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYWU4ODQ3MWI1
ZmE0MmUwYTZhNDY4MTM4Yzg3Nzg3M2NkMjg3NGYyOC4uZWMxZGRkYzJiMDIxMGVkYmIzYWYxZDlm
ZDlmNjQ1NDZlOTQzNjdiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTgtMDEtMjYgIE9sZWtzYW5kciBTa2FjaGtvdiAgPGdza2FjaGtvdkBnbWFp
bC5jb20+CisKKyAgICAgICAgRmV0Y2hSZXNwb25zZSBzaG91bGQgc3VwcG9ydCBDb25zdW1lRGF0
YSBjYWxsYmFjayBvbiBjaHVuayBkYXRhIGlzIHJlY2VpdmVkOiBoYW5kbGluZyBSZWFkYWJsZVN0
cmVhbSBib2RpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MjAwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9m
ZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3Ry
ZWFtLWNodW5rLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJl
c3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstaWZyYW1lLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
cmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmst
d29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LnByb2Nlc3MpOgorICAgICAgICAodGhp
cy5zdGVwKToKKyAgICAgICAgKHRoaXMucnVuKToKKyAgICAgICAgKGNvbnN0LmFzeW5jU3RlcHMp
OgorCiAyMDE4LTAxLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDU1AgcG9zdCBjaGVja3Mgc2hvdWxkIGJlIGRvbmUgZm9yIHNlcnZpY2Ugd29ya2VyIHJl
c3BvbnNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9u
ZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5r
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjI4NjA1YmZmZDRkYmQxN2VkZmMxYWYx
ZmFjNGMzMGZhOGE2N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgUmVzcG9uZCBieSBjaHVua3Mgd2l0aCBhIFJl
c3BvbnNlIGJ1aWx0IGZyb20gYSBSZWFkYWJsZVN0cmVhbSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVu
ay5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRo
LXJlYWRhYmxlLXN0cmVhbS1jaHVuay5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzOGUzMWYxYWEx
ZjQ3YWRkNTZmYmIwOTFkYWRkYTZkZTJmOGVkZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5r
Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+cmVzcG9uZFdpdGggd2l0aCBhIHJlc3BvbnNlIGJ1aWx0IGZy
b20gYSBSZWFkYWJsZVN0cmVhbTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3QtaGVscGVy
cy5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworY29uc3QgV09S
S0VSID0KKyAgJ3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3Ry
ZWFtLWNodW5rLXdvcmtlci5qcyc7Citjb25zdCBTQ09QRSA9CisgICdyZXNvdXJjZXMvZmV0Y2gt
ZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbCc7Cisv
LyBDYWxsZWQgYnkgdGhlIGlmcmFtZSB3aGVuIGRvbmUuCit2YXIgZG9uZTsKK3ZhciBkb25lX3dh
c19jYWxsZWQgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGRvbmUgPSByZXNvbHZlKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICAgIHJldHVybiBzZXJ2aWNlX3dvcmtlcl91bnJlZ2lzdGVyX2Fu
ZF9yZWdpc3Rlcih0LCBXT1JLRVIsIFNDT1BFKQorICAgICAgLnRoZW4ocmVnID0+IHsKKyAgICAg
ICAgICAgYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soKCkgPT4gcmVnLnVucmVnaXN0ZXIoKSk7Cisg
ICAgICAgICAgIHJldHVybiB3YWl0X2Zvcl9zdGF0ZSh0LCByZWcuaW5zdGFsbGluZywgJ2FjdGl2
YXRlZCcpOworICAgICAgICAgfSkKKyAgICAgIC50aGVuKCgpID0+IHdpdGhfaWZyYW1lKFNDT1BF
KSkKKyAgICAgIC50aGVuKGlmcmFtZSA9PiB7CisgICAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBpZnJhbWUucmVtb3ZlKCkpCisgICAgICAgIH0pCisgICAgICAudGhlbigoKSA9PiBkb25lX3dh
c19jYWxsZWQpCisgICAgICAudGhlbihyZXN1bHQgPT4gYXNzZXJ0X2VxdWFscyhyZXN1bHQsICdj
aHVuayAjMSBjaHVuayAjMiBjaHVuayAjMyBjaHVuayAjNCcpKTsKKyAgfSwgJ1Jlc3BvbmQgYnkg
Y2h1bmtzIHdpdGggYSBSZXNwb25zZSBidWlsdCBmcm9tIGEgUmVhZGFibGVTdHJlYW0nKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2
ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxl
LXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTUzMDA2NTkyYTc2Y2E2NGM2
MjQ3OTg2YjQzYjZhNGM0MDM0OGYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1
bmstaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
PgorJ3VzZSBzdHJpY3QnOworCitmZXRjaCgnYm9keS1zdHJlYW0nKS50aGVuKHJlc3AgPT4gewor
ICAgIGxldCByZXNvbHZlID0gdW5kZWZpbmVkOworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJv
bWlzZSgoX3Jlc29sdmUpID0+IHsgcmVzb2x2ZSA9IF9yZXNvbHZlOyB9KTsKKyAgICBjb25zdCBy
ZWFkZXIgPSByZXNwLmJvZHkuZ2V0UmVhZGVyKCk7CisgICAgY29uc3QgY2h1bmtzID0gW107Cisg
ICAgY29uc3QgZGVuY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKKyAgICBjb25zdCBzdGVwID0g
KCkgPT4gcmVhZGVyLnJlYWQoKTsKKyAgICBjb25zdCBoYW5kbGUgPSAoeyBkb25lLCB2YWx1ZSB9
KSA9PiB7CisgICAgICAgIGlmIChkb25lKSB7CisgICAgICAgICAgICByZXNvbHZlKGNodW5rcy5q
b2luKCcnKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBjaHVua3MucHVzaChkZW5jb2Rlci5kZWNvZGUodmFsdWUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGVwKCkudGhlbihoYW5kbGUpOworICAgICAgICB9CisgICAgfTsKKworICAgIHN0ZXAo
KS50aGVuKGhhbmRsZSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9KS50aGVuKHRleHQgPT4gcGFy
ZW50LmRvbmUodGV4dCkpCisuY2F0Y2goZSA9PiBwYXJlbnQuZG9uZSgnRkFJTDogJyArIGUpKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNo
LWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJs
ZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODBkNzU4MDk2MWRiZDU0NjEx
Yzk3ODQ1YWNjNGZhODZjODg4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVu
ay13b3JrZXIuanMKQEAgLTAsMCArMSw0NCBAQAorJ3VzZSBzdHJpY3QnOworCitjb25zdCBhc3lu
Y1N0ZXBzID0gZnVuY3Rpb24oKSB7CisgIGNvbnN0IHF1ZXVlID0gW107CisKKyAgY29uc3QgcHJv
Y2VzcyA9IGZ1bmN0aW9uIChpbnRlcnZhbCkgeworICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDAp
IHJldHVybjsKKyAgICBjb25zdCBzdGVwID0gcXVldWUuc2hpZnQoKTsKKworICAgIGNvbnN0IGZu
ID0gKCkgPT4geyAKKyAgICAgIHN0ZXAoKTsgCisgICAgICBwcm9jZXNzKGludGVydmFsKTsgCisg
ICAgfTsKKworICAgIHNldFRpbWVvdXQoZm4sIGludGVydmFsKTsKKyAgfTsKKworICB0aGlzLnN0
ZXAgPSBmdW5jdGlvbiAoc3RlcCkgeworICAgIHF1ZXVlLnB1c2goc3RlcCk7CisgICAgcmV0dXJu
IHRoaXM7CisgIH07CisKKyAgdGhpcy5ydW4gPSBmdW5jdGlvbiAoaW50ZXJ2YWwgPSAwKSB7Cisg
ICAgcHJvY2VzcyhpbnRlcnZhbCk7CisgIH07Cit9OworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgZXZlbnQgPT4geworICAgIGlmICghZXZlbnQucmVxdWVzdC51cmwubWF0Y2goL2Jv
ZHktc3RyZWFtJC8pKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oe3N0YXJ0OiBjb250cm9sbGVyID0+IHsKKyAgICAgICAgY29uc3QgcHJv
Y2VzcyA9IG5ldyBhc3luY1N0ZXBzKCk7CisgICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4
dEVuY29kZXIoKTsKKyAgICAgICAgcHJvY2VzcworICAgICAgICAgICAgLnN0ZXAoKCkgPT4gY29u
dHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjMSAnKSkpCisgICAgICAgICAg
ICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJ2NodW5rICMy
ICcpKSkKKyAgICAgICAgICAgIC5zdGVwKCgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVy
LmVuY29kZSgnY2h1bmsgIzMgJykpKQorICAgICAgICAgICAgLnN0ZXAoKCkgPT4gY29udHJvbGxl
ci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjNCcpKSkKKyAgICAgICAgICAgIC5zdGVw
KCgpID0+IGNvbnRyb2xsZXIuY2xvc2UoKSkKKyAgICAgICAgICAgIC5ydW4oMSk7CisgICAgICB9
fSk7CisgICAgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKHN0cmVhbSkpOworICB9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332491</attachid>
            <date>2018-01-28 09:32:47 -0800</date>
            <delta_ts>2018-01-29 14:22:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182008-20180128193245.patch</filename>
            <type>text/plain</type>
            <size>23845</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ5ODU2NGFhMjY5NTFi
MzhmZDUxMjVkNGM3ZjM2NTYzYTE3ZDFiMS4uNGQ3ZjhiY2Q5OWYzNWNkMjNkMjdlNDBhZmEzMTVh
NGU1Nzc5OWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTI4ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgRmV0Y2hSZXNwb25zZSB0
byBzdXBwb3J0IENvbnN1bWVEYXRhIGNhbGxiYWNrIHdpdGggCisgICAgICAgIGhhbmRsaW5nIG9m
IFJlYWRhYmxlU3RyZWFtIGJ5IGNodW5rcworCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJv
ZHlGcm9tUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5rLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVu
cXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNp
bms6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5r
Lmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisKIDIw
MTgtMDEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBwcmVmZXJzLXJlZHVjZWQtbW90aW9uIG1lZGlhIHF1ZXJ5IGlzIG5vdCB3b3JraW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDdiNmZkMTg2MTY4
MWJhYTMwZDRjMGVkNGE0MjgyMTY4N2UwNmZjNmYuLjQ5MjBhZWU5NWViZmI5ZmY0ODNkMzUwNTE5
ODBkY2QzMTg1MDBjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJKU0ZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAKQEAgLTMzMiwxMCArMzMzLDE4IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3Bv
bnNlLCBET01Qcm9taXNlCiAgICAgfQogCiAgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJsZVN0
cmVhbUJvZHkoKSkgewotICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgICAg
IHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1v
dmUocmVzcG9uc2UpLCB0aGlzXShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBy
ZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgcHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShy
ZXN1bHQpKTsKLSAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0g
V1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBwZW5kaW5nQWN0aXZpdHkg
PSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xh
dGVkQ29weSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCisgICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5r
LT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpOwogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKaW5kZXggOGFiZjE2NTA1MzQ4OGE2OTBhNTliNjhkYzE4YTJjMTIz
MTE4ZjhiNC4uMjFjMzRjOWMyNTEyZWVmMTQ3MjA3NDY0MWYyNTUzMTAxZWE3ZjU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogCiAjaW5j
bHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAz
LDE1ICsxMDQsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIFJlYWRhYmxlU3RyZWFtKgogewogICAgIGlmIChzdHJlYW0p
IHsKICAgICAgICAgQVNTRVJUKCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0
cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGUgPSBtX2NvbnRlbnRUeXBlXShFeGNlcHRpb25P
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgICAg
ICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIHR5cGUgPSBtX3R5
cGUsIGNvbnRlbnRUeXBlID0gbV9jb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byogZGF0YSA9
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpICYmIHJlc3VsdC5yZXR1cm5WYWx1ZSgpLT5kYXRhKCkgPyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihyZXN1bHQucmV0dXJuVmFsdWUo
KS0+ZGF0YSgpKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBhdXRvIHNpemUgPSBkYXRhID8gcmVz
dWx0LnJldHVyblZhbHVlKCktPnNpemUoKSA6IDA7Ci0gICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLCBzaXpl
KTsKKyAgICAgICAgICAgIGlmIChhdXRvIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29u
dGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRh
dGEoKSksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVG
cm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA1YTM3NzhkYTY2MDhmZTZmZjhkNDBmZDhi
YjY4MzE2ODgxNGFiMjk1Li5hNTlkMTI4MGExNjU1M2IxM2U3NTI4ZDlhYzczZWNjZGU3NGZlNTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpT
QmxvYi5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbVNpbmsuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC0zMzksNyArMzQwLDcgQEAgRmV0Y2hSZXNwb25z
ZTo6UmVzcG9uc2VEYXRhIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5KCkKICAgICByZXR1cm4g
Ym9keSgpLnRha2UoKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUZyb21S
ZWFkYWJsZVN0cmVhbShDb25zdW1lRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQnlDaHVu
a0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKG1fYm9keSk7CiAgICAgQVNTRVJU
KG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGZlNGJjM2E0NWE0ZjY2MmNiOWEwYjM1ODI2NTQxZTAz
YjUzYWU2NzMuLjE0OTdmZmQxNGZjMjg0ZGQ5MmM3NWUwY2EwMDY2MTdlYmE0OGExMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0zMCw2ICsz
MCw4IEBACiAKICNpbmNsdWRlICJGZXRjaEJvZHlPd25lci5oIgogI2luY2x1ZGUgIkZldGNoSGVh
ZGVycy5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKKyNpbmNsdWRlICJSZWFk
YWJsZVN0cmVhbVNpbmsuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9UeXBlZEFycmF5cy5oPgogCkBAIC05Myw3ICs5NSw5IEBAIHB1YmxpYzoKIAog
ICAgIHVzaW5nIENvbnN1bWVEYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0
aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpPjsKICAgICB2b2lkIGNvbnN1bWVCb2R5V2hl
bkxvYWRlZChDb25zdW1lRGF0YUNhbGxiYWNrJiYpOwotICAgIHZvaWQgY29uc3VtZUJvZHlGcm9t
UmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFDYWxsYmFjayYmKTsKKworICAgIHVzaW5nIENvbnN1
bWVEYXRhQnlDaHVua0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJl
YWRhYmxlU3RyZWFtQ2h1bmsqPiYmKT47CisgICAgdm9pZCBjb25zdW1lQm9keUZyb21SZWFkYWJs
ZVN0cmVhbShDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1DaHVuay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ2h1bmsuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNWVmZjNmMzJjM2JjMjY2NDlkNGZlOGFiOWUzMDUxNTNhODc3MTc3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtQ2h1bmsuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE9s
ZWtzYW5kciBTa2FjaGtvdiA8Z3NrYWNoa292QGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFJlYWRhYmxlU3RyZWFtQ2h1bmsgeworICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGE7CisgICAgc2l6ZV90IHNpemU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCmluZGV4IGUwMmE2
NzkxZTY5NDY2YThlNjQ2MDYyMTI0YjM1NDYwYjE3NDdjYzguLmIzMDc1NTI1ZjAxNDIzNDk2M2Yx
NGVjMDY5YWI5NzdkZWMzNmZiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCkBAIC01MSwxNyArNTEsMTYgQEAgdm9p
ZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5xdWV1ZShjb25zdCBCdWZmZXJT
b3VyY2UmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChtX2NhbGxiYWNrKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBSZWFkYWJsZVN0cmVh
bUNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpIH07CisgICAgICAgIG1fY2Fs
bGJhY2soJmNodW5rKTsKICAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5sZW5ndGgoKSk7CiB9CiAKIHZv
aWQgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNsb3NlKCkKIHsKLSAgICBpZiAo
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUobV9kYXRhKSk7CisgICAgaWYgKG1fY2FsbGJhY2spCisgICAgICAgIG1fY2FsbGJhY2so
bnVsbHB0cik7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmVy
cm9yKFN0cmluZyYmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggNjFjMmFhYmVmMmQ1NjYwMzE4ZWJiNzkw
NWQxZmFlYTk1ODcyYmY1OS4uNTEzNWJlY2Q3YmVjNzQ3YzU0NGQzMmIzODM3NDcyMDMwNDZkYmIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5o
IgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogCiBjbGFzcyBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luayBmaW5hbCA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNpbmsgewogcHVibGlj
OgotICAgIHVzaW5nIENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYmKT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJlYW1DaHVuayo+JiYpPjsKICAgICBzdGF0
aWMgUmVmPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBjcmVhdGUoQ2FsbGJhY2sm
JiBjYWxsYmFjaykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luayhXVEZNb3ZlKGNhbGxiYWNrKSkpOyB9CiAgICAgdm9pZCBwaXBlRnJvbShSZWFk
YWJsZVN0cmVhbSYpOwogICAgIHZvaWQgY2xlYXJDYWxsYmFjaygpIHsgbV9jYWxsYmFjayA9IHsg
fTsgfQpAQCAtNjIsNyArNjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZXJyb3IoU3RyaW5nJiYp
IGZpbmFsOwogCiAgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2IwMDhlMzU1
NGQwODY0NTVhNjRmN2U5ZTA1ODA4ZWYxNThjNzQ2NC4uMjIzM2MyZWMyMGJjMTYzYTc3YjlkNTZm
ZmI3OTA3YWU1YjRiMzE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM4OSw2ICsyMzg5LDcgQEAKIAkJOEFCNEJDNzcxMjZG
REI3MTAwREVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUI0QkM3NjEy
NkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIu
aCAqLzsgfTsKIAkJOEFGNEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFG
NEU1NTMxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9Owog
CQk4QUY0RTU1QzExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMw
MDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5oICovOyB9OworCQk4QkQzN0E2ODIwMUJCMzlD
MDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEJEMzdBNjcyMDFCQjM5QzAwMTE3MzRBIC8qIFJlYWRh
YmxlU3RyZWFtQ2h1bmsuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4RTRDOTZERDFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RTRDOTZEOTFB
RDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi87IH07CiAJCThFQzZDOTYzMjAx
QTI1MTYwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDhFQzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4RjY3
NTYxQjEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2
ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtOTkzNiw2ICs5OTM3LDcgQEAKIAkJOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBl
cmZvcm1hbmNlVGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcmZv
cm1hbmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTVBMTFE
QzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4RTMzQ0Q5MzIwMUEyOUMxMDBFMzkwOTMgLyogR2FwTGVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdhcExlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCThCRDM3QTY3MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNo
dW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQ2h1bmsuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTRmV0Y2hSZXNw
b25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZldGNoUmVz
cG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEOTFBRDQ0ODM1
MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
RUM2Qzk2MTIwMUEyNTAxMDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdhcExlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY1NjcsNiArMTY1NjksNyBAQAogCQkJCTk5MDhCMEYyMUJDQUNGOTEwMEVEMzU3MiAvKiBS
ZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuanMgKi8sCiAJCQkJNDExODlFRjcxQUQ4MjMyODAwQjk1
NjcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QuaWRsICovLAogCQkJCTk5MDhCMEYwMUJD
QUNGOTEwMEVENTY3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LmpzICovLAorCQkJCThC
RDM3QTY3MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggKi8sCiAJCQkJ
NDExODlFRjcxQUQ4MjMyODAwQjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaWRsICovLAogCQkJCTk5MDhCMEYwMUJDQUNGOTEwMEVEMEY2NSAvKiBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmpzICovLAogCQkJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAv
KiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRsICovLApAQCAtMjkwOTAsNiArMjkwOTMs
NyBAQAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFk
YWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2
RTZGRTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCThCRDM3QTY4MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNo
dW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5QzlBOTFGNTlDNTZCMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZG
RTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxMjlDOUFGMUY1OUNGNUIwMDlENzQwMyAvKiBSZWFkYWJsZVN0
cmVhbVNpbmsuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXgg
ZDQ0NWI4MTMxYjE2NmRkNDZjMzE5Y2ZkNWZmOTMyODczNTAzYzU3NC4uZWU5NWQ2OWZlNmRhYWQ0
YTRhMDc2NDRhNTVlODY2ODMwNDkyN2MzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRmV0Y2hFdmVudC5oIgogI2luY2x1ZGUgIkZldGNo
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkZldGNoUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbUNodW5rLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgiCkBAIC01MywxNiArNTQsMTYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxD
bGllbnQ+JiYgY2xpZW50LCBGZXRjaFJlc3BvbnNlKiByZXNwb25zZSkKICAgICBjbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpKTsKIAogICAgIGlm
IChyZXNwb25zZS0+aGFzUmVhZGFibGVTdHJlYW1Cb2R5KCkpIHsKLSAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBzZW5kIHRoZSBib2R5IGFzIGNodW5rcy4KLSAgICAgICAgcmVzcG9uc2UtPmNv
bnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVudCldIChF
eGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oW2NsaWVudCA9IFdU
Rk1vdmUoY2xpZW50KV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkRmFp
bCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAg
ICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkp
OwotICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCisgICAgICAgICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihjaHVuay0+ZGF0YSksIGNodW5rLT5zaXplKSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhZTg4NDcx
YjVmYTQyZTBhNmE0NjgxMzhjODc3ODczY2QyODc0ZjI4Li4wMjBhNGJmMjg0M2FhMGZhMzkzN2Uy
YTI3MzA1MjU2M2MwN2Q0NDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wMS0yOCAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBGZXRjaFJlc3BvbnNlIHNob3VsZCBzdXBwb3J0IENvbnN1bWVE
YXRhIGNhbGxiYWNrIG9uIGNodW5rIGRhdGEgaXMgcmVjZWl2ZWQ6IGhhbmRsaW5nIFJlYWRhYmxl
U3RyZWFtIGJvZGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyMDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmsuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1z
dHJlYW0tY2h1bmsuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQt
cmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVu
ay13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAoY29uc3QucHJvY2Vzcyk6CisgICAgICAgICh0
aGlzLnN0ZXApOgorICAgICAgICAodGhpcy5ydW4pOgorICAgICAgICAoY29uc3QuYXN5bmNTdGVw
cyk6CisKIDIwMTgtMDEtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIENTUCBwb3N0IGNoZWNrcyBzaG91bGQgYmUgZG9uZSBmb3Igc2VydmljZSB3b3JrZXIg
cmVzcG9uc2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNw
b25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1
bmsuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMjg2MDViZmZkNGRiZDE3ZWRmYzFh
ZjFmYWM0YzMwZmE4YTY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9m
ZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXNwb25kIGJ5IGNodW5rcyB3aXRoIGEg
UmVzcG9uc2UgYnVpbHQgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNo
dW5rLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdp
dGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM4ZTMxZjFh
YTFmNDdhZGQ1NmZiYjA5MWRhZGRhNmRlMmY4ZWRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1
bmsuaHR0cHMuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5yZXNwb25kV2l0aCB3aXRoIGEgcmVzcG9uc2UgYnVpbHQg
ZnJvbSBhIFJlYWRhYmxlU3RyZWFtPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1oZWxw
ZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitjb25zdCBX
T1JLRVIgPQorICAncmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1z
dHJlYW0tY2h1bmstd29ya2VyLmpzJzsKK2NvbnN0IFNDT1BFID0KKyAgJ3Jlc291cmNlcy9mZXRj
aC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLWlmcmFtZS5odG1sJzsK
Ky8vIENhbGxlZCBieSB0aGUgaWZyYW1lIHdoZW4gZG9uZS4KK3ZhciBkb25lOwordmFyIGRvbmVf
d2FzX2NhbGxlZCA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZG9uZSA9IHJlc29sdmUpOworCitw
cm9taXNlX3Rlc3QodCA9PiB7CisgICAgcmV0dXJuIHNlcnZpY2Vfd29ya2VyX3VucmVnaXN0ZXJf
YW5kX3JlZ2lzdGVyKHQsIFdPUktFUiwgU0NPUEUpCisgICAgICAudGhlbihyZWcgPT4geworICAg
ICAgICAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjaygoKSA9PiByZWcudW5yZWdpc3RlcigpKTsK
KyAgICAgICAgICAgcmV0dXJuIHdhaXRfZm9yX3N0YXRlKHQsIHJlZy5pbnN0YWxsaW5nLCAnYWN0
aXZhdGVkJyk7CisgICAgICAgICB9KQorICAgICAgLnRoZW4oKCkgPT4gd2l0aF9pZnJhbWUoU0NP
UEUpKQorICAgICAgLnRoZW4oaWZyYW1lID0+IHsKKyAgICAgICAgICB0LmFkZF9jbGVhbnVwKCgp
ID0+IGlmcmFtZS5yZW1vdmUoKSkKKyAgICAgICAgfSkKKyAgICAgIC50aGVuKCgpID0+IGRvbmVf
d2FzX2NhbGxlZCkKKyAgICAgIC50aGVuKHJlc3VsdCA9PiBhc3NlcnRfZXF1YWxzKHJlc3VsdCwg
J2NodW5rICMxIGNodW5rICMyIGNodW5rICMzIGNodW5rICM0JykpOworICB9LCAnUmVzcG9uZCBi
eSBjaHVua3Mgd2l0aCBhIFJlc3BvbnNlIGJ1aWx0IGZyb20gYSBSZWFkYWJsZVN0cmVhbScpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gt
ZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay1pZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFi
bGUtc3RyZWFtLWNodW5rLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNTMwMDY1OTJhNzZjYTY0
YzYyNDc5ODZiNDNiNmE0YzQwMzQ4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1j
aHVuay1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3Jp
cHQ+CisndXNlIHN0cmljdCc7CisKK2ZldGNoKCdib2R5LXN0cmVhbScpLnRoZW4ocmVzcCA9PiB7
CisgICAgbGV0IHJlc29sdmUgPSB1bmRlZmluZWQ7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQ
cm9taXNlKChfcmVzb2x2ZSkgPT4geyByZXNvbHZlID0gX3Jlc29sdmU7IH0pOworICAgIGNvbnN0
IHJlYWRlciA9IHJlc3AuYm9keS5nZXRSZWFkZXIoKTsKKyAgICBjb25zdCBjaHVua3MgPSBbXTsK
KyAgICBjb25zdCBkZW5jb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpOworICAgIGNvbnN0IHN0ZXAg
PSAoKSA9PiByZWFkZXIucmVhZCgpOworICAgIGNvbnN0IGhhbmRsZSA9ICh7IGRvbmUsIHZhbHVl
IH0pID0+IHsKKyAgICAgICAgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgIHJlc29sdmUoY2h1bmtz
LmpvaW4oJycpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGNodW5rcy5wdXNoKGRlbmNvZGVyLmRlY29kZSh2YWx1ZSkpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZXAoKS50aGVuKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3Rl
cCgpLnRoZW4oaGFuZGxlKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30pLnRoZW4odGV4dCA9PiBw
YXJlbnQuZG9uZSh0ZXh0KSkKKy5jYXRjaChlID0+IHBhcmVudC5kb25lKCdGQUlMOiAnICsgZSkp
OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0
Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay13b3JrZXIuanMgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRh
YmxlLXN0cmVhbS1jaHVuay13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFkNWY1YzQ4NDRmNTgyMmIw
ODY0OWFmM2E5NzUyZGFjOTkxYjY5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3Jlc291cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNo
dW5rLXdvcmtlci5qcwpAQCAtMCwwICsxLDUzIEBACisndXNlIHN0cmljdCc7CisKK2NvbnN0IGFz
eW5jU3RlcHMgPSBmdW5jdGlvbigpIHsKKyAgY29uc3QgcXVldWUgPSBbXTsKKworICBjb25zdCBw
cm9jZXNzID0gZnVuY3Rpb24gKGludGVydmFsKSB7CisgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0g
MCkgcmV0dXJuOworICAgIGNvbnN0IHN0ZXAgPSBxdWV1ZS5zaGlmdCgpOworCisgICAgY29uc3Qg
Zm4gPSAoKSA9PiB7CisgICAgICB0cnkgeworICAgICAgICBjb25zb2xlLmxvZygnQUJDRCcpOwor
ICAgICAgICBzdGVwKCk7IAorICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlLmxv
ZyhlKTsKKyAgICAgIH0KKyAgICAgIHByb2Nlc3MoaW50ZXJ2YWwpOyAKKyAgICB9OworCisgICAg
c2V0VGltZW91dChmbiwgaW50ZXJ2YWwpOworICB9OworCisgIHRoaXMuc3RlcCA9IGZ1bmN0aW9u
IChzdGVwKSB7CisgICAgcXVldWUucHVzaChzdGVwKTsKKyAgICByZXR1cm4gdGhpczsKKyAgfTsK
KworICB0aGlzLnJ1biA9IGZ1bmN0aW9uIChpbnRlcnZhbCA9IDApIHsKKyAgICBwcm9jZXNzKGlu
dGVydmFsKTsKKyAgfTsKK307CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCBldmVu
dCA9PiB7CisgICAgaWYgKCFldmVudC5yZXF1ZXN0LnVybC5tYXRjaCgvYm9keS1zdHJlYW0kLykp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7c3RhcnQ6IGNvbnRyb2xsZXIgPT4geworICAgICAgICBjb25zdCBwcm9jZXNzID0gbmV3IGFz
eW5jU3RlcHMoKTsKKyAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpOwor
ICAgICAgICBwcm9jZXNzCisgICAgICAgICAgICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmVucXVl
dWUoZW5jb2Rlci5lbmNvZGUoJycpKSkKKyAgICAgICAgICAgIC5zdGVwKCgpID0+IGNvbnRyb2xs
ZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnY2h1bmsgIzEnKSkpCisgICAgICAgICAgICAuc3Rl
cCgoKSA9PiBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJyAnKSkpCisgICAgICAg
ICAgICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJ2NodW5r
ICMyJykpKQorICAgICAgICAgICAgLnN0ZXAoKCkgPT4gY29udHJvbGxlci5lbnF1ZXVlKGVuY29k
ZXIuZW5jb2RlKCcgJykpKQorICAgICAgICAgICAgLnN0ZXAoKCkgPT4gY29udHJvbGxlci5lbnF1
ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjMycpKSkKKyAgICAgICAgICAgIC5zdGVwKCgpID0+
IGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnICcpKSkKKyAgICAgICAgICAgIC5z
dGVwKCgpID0+IGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnY2h1bmsgIzQnKSkp
CisgICAgICAgICAgICAuc3RlcCgoKSA9PiBjb250cm9sbGVyLmNsb3NlKCkpCisgICAgICAgICAg
ICAucnVuKDEpOworICAgICAgfX0pOworICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25z
ZShzdHJlYW0pKTsKKyAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332579</attachid>
            <date>2018-01-29 14:22:40 -0800</date>
            <delta_ts>2018-01-29 15:07:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-182008-20180129142239.patch</filename>
            <type>text/plain</type>
            <size>22533</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y4NjQ4MmY1MDM5YmZk
ZmI5MjYzODhkNGI1NDljZWM1ZmU0NjUzMy4uNDc1YzQ5ODZlNzY3OGVkYzlhMzM4ZDlhMGEwMDEz
NGYzOWEzMWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTI5ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE1vZGlmeSBGZXRjaFJlc3BvbnNlIHRv
IHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgd2l0aCAKKyAgICAgICAgaGFuZGxpbmcgb2Yg
UmVhZGFibGVTdHJlYW0gYnkgY2h1bmtzCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9k
eUZyb21SZWFkYWJsZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ2h1bmsuaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5x
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2lu
azo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsu
aDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKwogMjAx
OC0wMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2Fj
aGUgQVBJIHNob3VsZCBtYWtlIHN1cmUgdG8gcmVzb2x2ZSBjYWNoZXMub3BlbiBwcm9taXNlcyBp
biB0aGUgc2FtZSBvcmRlciBhcyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKaW5kZXggN2I2ZmQxODYxNjgxYmFhMzBkNGMwZWQ0YTQyODIxNjg3ZTA2ZmM2
Zi4uNTRhMjEzYjE0NDIxMzFhYzE4NzkyZGExMWRhYzQ2MWE5MzMxMTFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSlNGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJVUkwuaCIKIApA
QCAtMzMyLDEwICszMzMsMTcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICB9CiAKICAg
ICBpZiAocmVzcG9uc2UtPmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJl
YWRhYmxlU3RyZWFtKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgdW5zZXRQ
ZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21S
ZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworCisgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXV0byBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQorICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSksIGNodW5rLT5zaXplKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA4YWJmMTY1MDUzNDg4YTY5MGE1OWI2OGRjMThhMmMx
MjMxMThmOGI0Li5mZDQ0MmNjZTMxMDBmMGQ4OTI4NTA2OWM2MTVmYjRhNzJmZTRjZDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCiAKICNp
bmNsdWRlICJKU0Jsb2IuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNodW5rLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MDMsMTUgKzEwNCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiB7CiAgICAgaWYgKHN0cmVh
bSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxl
U3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZSA9IG1fY29udGVudFR5cGVdKEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1f
c2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9
IG1fdHlwZSwgY29udGVudFR5cGUgPSBtX2NvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvKiBk
YXRhID0gcmVzdWx0LnJldHVyblZhbHVlKCkgJiYgcmVzdWx0LnJldHVyblZhbHVlKCktPmRhdGEo
KSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHJlc3VsdC5yZXR1cm5W
YWx1ZSgpLT5kYXRhKCkpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8gc2l6ZSA9IGRhdGEg
PyByZXN1bHQucmV0dXJuVmFsdWUoKS0+c2l6ZSgpIDogMDsKLSAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEs
IHNpemUpOworICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUo
KSkKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBl
LCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0
YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+
cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVhMzc3OGRhNjYwOGZlNmZmOGQ0
MGZkOGJiNjgzMTY4ODE0YWIyOTUuLmE1OWQxMjgwYTE2NTUzYjEzZTc1MjhkOWFjNzNlY2NkZTc0
ZmU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVk
ZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJl
YWRhYmxlU3RyZWFtU2luay5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTMzOSw3ICszNDAsNyBAQCBGZXRjaFJl
c3BvbnNlOjpSZXNwb25zZURhdGEgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHkoKQogICAgIHJl
dHVybiBib2R5KCkudGFrZSgpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5
RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFC
eUNodW5rQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9ib2R5KTsKICAgICBB
U1NFUlQobV9ib2R5LT5yZWFkYWJsZVN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggZmU0YmMzYTQ1YTRmNjYyY2I5YTBiMzU4MjY1
NDFlMDNiNTNhZTY3My4uZjRkYzRhZTRhOTEzNWIwZGJmZTljMmVkYmExZDhhZTY1NjQwOTIyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiRmV0
Y2hIZWFkZXJzLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KIApA
QCAtNDEsNiArNDIsNyBAQCBjbGFzcyBKU1ZhbHVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGZXRjaFJlcXVlc3Q7CitzdHJ1Y3QgUmVhZGFibGVTdHJlYW1DaHVuazsKIGNsYXNzIFJl
YWRhYmxlU3RyZWFtU291cmNlOwogCiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGlj
IEZldGNoQm9keU93bmVyIHsKQEAgLTkzLDcgKzk1LDkgQEAgcHVibGljOgogCiAgICAgdXNpbmcg
Q29uc3VtZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJik+OwogICAgIHZvaWQgY29uc3VtZUJvZHlXaGVuTG9hZGVkKENv
bnN1bWVEYXRhQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBjb25zdW1lQm9keUZyb21SZWFkYWJsZVN0
cmVhbShDb25zdW1lRGF0YUNhbGxiYWNrJiYpOworCisgICAgdXNpbmcgQ29uc3VtZURhdGFCeUNo
dW5rQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8UmVhZGFibGVTdHJl
YW1DaHVuayo+JiYpPjsKKyAgICB2b2lkIGNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKENv
bnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3Vy
Y2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1DaHVuay5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEyMWViYmRjNDhjYWRhNjBhOTY2YzJiZWVhMzZjYzRhZmMxZjRiNGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1DaHVuay5o
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggT2xla3NhbmRyIFNr
YWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IFJlYWRhYmxlU3RyZWFtQ2h1bmsgeworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGE7Cisg
ICAgc2l6ZV90IHNpemU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCmluZGV4IGUwMmE2NzkxZTY5NDY2YThl
NjQ2MDYyMTI0YjM1NDYwYjE3NDdjYzguLjMwZGIyNDAwY2ZlNzdkYjg3YTZjMDYxZTg3ZGI1NjNl
NGNiYjRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuY3BwCkBAIC01MSwxNyArNTEsMTYgQEAgdm9pZCBSZWFkYWJsZVN0
cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5xdWV1ZShjb25zdCBCdWZmZXJTb3VyY2UmIGJ1ZmZl
cikKICAgICBpZiAoIWJ1ZmZlci5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2Nh
bGxiYWNrKSB7CisgICAgICAgIFJlYWRhYmxlU3RyZWFtQ2h1bmsgY2h1bmsgeyBidWZmZXIuZGF0
YSgpLCBidWZmZXIubGVuZ3RoKCkgfTsKKyAgICAgICAgbV9jYWxsYmFjaygmY2h1bmspOwogICAg
IH0KLSAgICBtX2RhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZm
ZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luazo6Y2xvc2UoKQogewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RG
TW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShtX2RhdGEpKTsKKyAg
ICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjayhudWxscHRyKTsKIH0KIAogdm9p
ZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZXJyb3IoU3RyaW5nJiYgbWVzc2Fn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNpbmsuaAppbmRleCA2MWMyYWFiZWYyZDU2NjAzMThlYmI3OTA1ZDFmYWVhOTU4NzJiZjU5Li5i
YjgxZjI2MTgxMTllNTdhMjIyN2Q2Njk5NzllYThmMTMwNzViYmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNodW5rLmgiCiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzYsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRh
YmxlU3RyZWFtOworc3RydWN0IFJlYWRhYmxlU3RyZWFtQ2h1bms7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRh
YmxlU3RyZWFtU2luaz4gewpAQCAtNDksMjAgKzUxLDE5IEBAIHB1YmxpYzoKIAogY2xhc3MgUmVh
ZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsgZmluYWwgOiBwdWJsaWMgUmVhZGFibGVTdHJl
YW1TaW5rIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik+OworICAgIHVzaW5nIENhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlYWRhYmxlU3RyZWFtQ2h1bmsq
PiYmKT47CiAgICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4g
Y3JlYXRlKENhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhZGFi
bGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsoV1RGTW92ZShjYWxsYmFjaykpKTsgfQogICAgIHZv
aWQgcGlwZUZyb20oUmVhZGFibGVTdHJlYW0mKTsKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2soKSB7
IG1fY2FsbGJhY2sgPSB7IH07IH0KIAogcHJpdmF0ZToKLSAgICBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luayhDYWxsYmFjayYmKTsKKyAgICBleHBsaWNpdCBSZWFkYWJsZVN0cmVhbVRv
U2hhcmVkQnVmZmVyU2luayhDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgZW5xdWV1ZShjb25zdCBC
dWZmZXJTb3VyY2UmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7CiAgICAgdm9pZCBl
cnJvcihTdHJpbmcmJikgZmluYWw7CiAKICAgICBDYWxsYmFjayBtX2NhbGxiYWNrOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2MDFmNDFiNmU2OTc3YTlhMmY5NGFkZjhjNTZhOTIyMDJlNmY4NWVjLi5jYjAxZjhlNWEz
OTVmMWQ0YjY2OWI5YTRmNGJjYTQ5OTFlNWE2OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzg5LDYgKzIzODksNyBAQAog
CQk4QUI0QkM3NzEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50
SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291
bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk4QUY0RTU1NjExREM1QTM2MDAwRUQzREUgLyogUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmggKi87IH07CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5jZVRp
bWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFG
NEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmggKi87IH07CisJCThC
RDM3QTY4MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5rLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2NzIwMUJCMzlDMDAx
MTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0Zl
dGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLzsgfTsK
IAkJOEVDNkM5NjMyMDFBMjUxNjAwRkJGQTUzIC8qIEdhcExlbmd0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEVDNkM5NjEyMDFBMjUwMTAwRkJGQTUz
IC8qIEdhcExlbmd0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3NTYxOTEyODhCMTdC
MDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC05OTM3LDYgKzk5MzgsNyBAQAogCQk4QUY0RTU1OTExREM1QTYz
MDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWluZy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBHYXBMZW5ndGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVuZ3RoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJEMzdBNjcyMDFCQjM5QzAwMTE3MzRBIC8qIFJl
YWRhYmxlU3RyZWFtQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1DaHVuay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEODFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNGZXRjaFJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRmV0Y2hSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThF
NEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCThFQzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FwTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNjU2OCw2ICsxNjU3MCw3IEBACiAJCQkJOTkwOEIwRjIxQkNBQ0Y5
MTAwRUQzNTcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5qcyAqLywKIAkJCQk0MTE4OUVG
NzFBRDgyMzI4MDBCOTU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdC5pZGwgKi8sCiAJ
CQkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQ1NjcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3Qu
anMgKi8sCisJCQkJOEJEMzdBNjcyMDFCQjM5QzAwMTE3MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1
bmsuaCAqLywKIAkJCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQwRjY1IC8q
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJCQkJNDE5RkFGQUQxQUJB
QkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGwgKi8sCkBAIC0y
OTA5Miw2ICsyOTA5NSw3IEBACiAJCQkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJhd0Rh
dGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAw
MEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1CdWls
dGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEJEMzdBNjgyMDFCQjM5QzAwMTE3MzRBIC8qIFJl
YWRhYmxlU3RyZWFtQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlDOUE5MUY1OUM1NkIw
MDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5QUYxRjU5Q0Y1QjAwOUQ3NDAz
IC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmNwcAppbmRleCBkNDQ1YjgxMzFiMTY2ZGQ0NmMzMTljZmQ1ZmY5MzI4NzM1MDNjNTc0Li5l
ZTk1ZDY5ZmU2ZGFhZDRhNGEwNzY0NGE1NWU4NjY4MzA0OTI3YzM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAj
aW5jbHVkZSAiRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgorI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaCIKQEAgLTUzLDE2ICs1NCwxNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNz
UmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEZldGNoUmVzcG9uc2UqIHJlc3BvbnNlKQog
ICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLT5yZXNvdXJjZVJlc3BvbnNl
KCkpOwogCiAgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJsZVN0cmVhbUJvZHkoKSkgewotICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlbmQgdGhlIGJvZHkgYXMgY2h1bmtzLgotICAgICAg
ICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oW2NsaWVudCA9IFdURk1v
dmUoY2xpZW50KV0gKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVh
bShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
Y2xpZW50LT5kaWRGYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOworICAgICAg
ICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKKyAgICAgICAgICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNpemUpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDcyOTJiYjM1OTg1NjBkM2ZlZDM3MDcxNWJlOGI2MGU5OWM0NDJiZGEuLmNjMDk3ZjNk
MWQzYWJjZjJmZmEyOTIyZDljODVjNGFiOTU0NmMzNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAxLTI5ICBPbGVrc2FuZHIgU2thY2hrb3Yg
IDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVzcG9uc2Ugc2hvdWxkIHN1
cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBpcyByZWNlaXZlZDogaGFu
ZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4g
RmFibGV0LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNo
dW5rLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdp
dGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2Vz
L2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstaWZyYW1lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJs
ZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LnByb2Nlc3Mp
OgorICAgICAgICAodGhpcy5zdGVwKToKKyAgICAgICAgKHRoaXMucnVuKToKKyAgICAgICAgKGNv
bnN0LmFzeW5jU3RlcHMpOgorCiAyMDE4LTAxLTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBEaXN0aW5ndWlzaCBiZXR3ZWVu
IGFuIG9taXR0ZWQgYW5kIGEgbnVsbCB0aW1lbGluZSBhcmd1bWVudCB0byB0aGUgQW5pbWF0aW9u
IGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1y
ZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0t
Y2h1bmsuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMjg2MDViZmZkNGRiZDE3ZWRm
YzFhZjFmYWM0YzMwZmE4YTY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXNwb25kIGJ5IGNodW5rcyB3aXRo
IGEgUmVzcG9uc2UgYnVpbHQgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFt
LWNodW5rLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25k
LXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU0NGE5
ZTA4ZjU2MmM5Nzg3MTUzNDcwYzBjYmQ2YTlhZDZmNGRlYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0t
Y2h1bmsuaHR0cHMuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRh
IGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5yZXNwb25kV2l0aCB3aXRoIGEgcmVzcG9uc2UgYnVp
bHQgZnJvbSBhIFJlYWRhYmxlU3RyZWFtPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC1o
ZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitjb25z
dCBXT1JLRVIgPSAncmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1z
dHJlYW0tY2h1bmstd29ya2VyLmpzJzsKK2NvbnN0IFNDT1BFID0gJ3Jlc291cmNlcy9mZXRjaC1l
dmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLWlmcmFtZS5odG1sJzsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHZhciByZWcgPSBhd2FpdCBzZXJ2aWNlX3dv
cmtlcl91bnJlZ2lzdGVyX2FuZF9yZWdpc3Rlcih0LCBXT1JLRVIsIFNDT1BFKTsKKyAgICBhZGRf
Y29tcGxldGlvbl9jYWxsYmFjaygoKSA9PiByZWcudW5yZWdpc3RlcigpKTsKKyAgICBhd2FpdCB3
YWl0X2Zvcl9zdGF0ZSh0LCByZWcuaW5zdGFsbGluZywgJ2FjdGl2YXRlZCcpOworICAgIGxldCBp
ZnJhbWUgPSBhd2FpdCB3aXRoX2lmcmFtZShTQ09QRSk7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiBpZnJhbWUucmVtb3ZlKCkpOworCisgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgaWZyYW1lLmNv
bnRlbnRXaW5kb3cuZmV0Y2goJ2JvZHktc3RyZWFtJyk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2Fp
dCByZXNwb25zZS50ZXh0KCksICdjaHVuayAjMSBjaHVuayAjMiBjaHVuayAjMyBjaHVuayAjNCcp
OworfSwgJ1Jlc3BvbmQgYnkgY2h1bmtzIHdpdGggYSBSZXNwb25zZSBidWlsdCBmcm9tIGEgUmVh
ZGFibGVTdHJlYW0nKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
cmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmst
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3Bv
bmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5NTRl
M2ExOGE1ZTVjYTNiNmI0YjlhOGE2ZmNjOTk1NjkxMTAwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9uZC13aXRoLXJlYWRh
YmxlLXN0cmVhbS1jaHVuay13b3JrZXIuanMKQEAgLTAsMCArMSw0MCBAQAorJ3VzZSBzdHJpY3Qn
OworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZXZlbnQgPT4geworICAgIGlmICgh
ZXZlbnQucmVxdWVzdC51cmwubWF0Y2goL2JvZHktc3RyZWFtJC8pKQorICAgICAgICByZXR1cm47
CisKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5j
b2RlcigpOworICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHB1bGw6IGNv
bnRyb2xsZXIgPT4geworICAgICAgICBzd2l0Y2ggKCsrY291bnRlcikgeworICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJycpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29udHJv
bGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjMScpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVu
Y29kZXIuZW5jb2RlKCcgJykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJ2NodW5rICMy
JykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICBj
b250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJyAnKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNv
ZGVyLmVuY29kZSgnY2h1bmsgIzMnKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNh
c2UgNzoKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnICcp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgY29u
dHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjNCcpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2Uo
KTsKKyAgICAgICAgfQorICAgIH19KTsKKyAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9u
c2Uoc3RyZWFtKSk7Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332586</attachid>
            <date>2018-01-29 15:07:22 -0800</date>
            <delta_ts>2018-01-29 15:39:26 -0800</delta_ts>
            <desc>Fixing GTK</desc>
            <filename>bug-182008-20180129150721.patch</filename>
            <type>text/plain</type>
            <size>22545</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y4NjQ4MmY1MDM5YmZk
ZmI5MjYzODhkNGI1NDljZWM1ZmU0NjUzMy4uNDc1YzQ5ODZlNzY3OGVkYzlhMzM4ZDlhMGEwMDEz
NGYzOWEzMWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTAxLTI5ICBPbGVr
c2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVz
cG9uc2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBp
cyByZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIE1vZGlmeSBGZXRjaFJlc3BvbnNlIHRv
IHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgd2l0aCAKKyAgICAgICAgaGFuZGxpbmcgb2Yg
UmVhZGFibGVTdHJlYW0gYnkgY2h1bmtzCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9k
eUZyb21SZWFkYWJsZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmg6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ2h1bmsuaDog
QWRkZWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5x
dWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2lu
azo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsu
aDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3BvbnNlKToKKwogMjAx
OC0wMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2Fj
aGUgQVBJIHNob3VsZCBtYWtlIHN1cmUgdG8gcmVzb2x2ZSBjYWNoZXMub3BlbiBwcm9taXNlcyBp
biB0aGUgc2FtZSBvcmRlciBhcyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKaW5kZXggN2I2ZmQxODYxNjgxYmFhMzBkNGMwZWQ0YTQyODIxNjg3ZTA2ZmM2
Zi4uYjFiMGY3OWJjMTgyYWViZmFjMDExNTU2ZDcyZGYxMzJmNjU3OGM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSlNGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1DaHVuay5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJVUkwuaCIKIApA
QCAtMzMyLDEwICszMzMsMTcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5m
bywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICB9CiAKICAg
ICBpZiAocmVzcG9uc2UtPmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHNldFBl
bmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgcmVzcG9uc2UtPmNvbnN1bWVCb2R5RnJvbVJl
YWRhYmxlU3RyZWFtKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1v
dmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRoaXNdKEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBwdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgdW5zZXRQ
ZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21S
ZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworCisgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJl
c3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXV0
byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQorICAgICAgICAgICAgICAgIGRhdGEtPmFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjaHVuay0+ZGF0YSksIGNodW5rLT5z
aXplKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVz
cG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVz
cG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA4YWJmMTY1MDUzNDg4YTY5MGE1
OWI2OGRjMThhMmMxMjMxMThmOGI0Li5mZDQ0MmNjZTMxMDBmMGQ4OTI4NTA2OWM2MTVmYjRhNzJm
ZTRjZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZldGNoQm9keUNvbnN1
bWVyLmgiCiAKICNpbmNsdWRlICJKU0Jsb2IuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNo
dW5rLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMDMsMTUgKzEwNCwxNiBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiB7CiAg
ICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2lu
ayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZSA9IG1fY29udGVudFR5
cGVdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVh
dGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGUgPSBtX2NvbnRlbnRUeXBlXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBhdXRvKiBkYXRhID0gcmVzdWx0LnJldHVyblZhbHVlKCkgJiYgcmVzdWx0LnJldHVyblZh
bHVlKCktPmRhdGEoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHJl
c3VsdC5yZXR1cm5WYWx1ZSgpLT5kYXRhKCkpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8g
c2l6ZSA9IGRhdGEgPyByZXN1bHQucmV0dXJuVmFsdWUoKS0+c2l6ZSgpIDogMDsKLSAgICAgICAg
ICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVu
dFR5cGUsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQu
cmV0dXJuVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oY2h1bmstPmRhdGEpLCBjaHVuay0+c2l6ZSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oZGF0YS0+ZGF0YSgpKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDVhMzc3OGRh
NjYwOGZlNmZmOGQ0MGZkOGJiNjgzMTY4ODE0YWIyOTUuLmE1OWQxMjgwYTE2NTUzYjEzZTc1Mjhk
OWFjNzNlY2NkZTc0ZmU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU2luay5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTMzOSw3ICszNDAs
NyBAQCBGZXRjaFJlc3BvbnNlOjpSZXNwb25zZURhdGEgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJv
ZHkoKQogICAgIHJldHVybiBib2R5KCkudGFrZSgpOwogfQogCi12b2lkIEZldGNoUmVzcG9uc2U6
OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKENvbnN1bWVEYXRhQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0o
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQobV9i
b2R5KTsKICAgICBBU1NFUlQobV9ib2R5LT5yZWFkYWJsZVN0cmVhbSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggZmU0YmMzYTQ1YTRmNjYy
Y2I5YTBiMzU4MjY1NDFlMDNiNTNhZTY3My4uZjRkYzRhZTRhOTEzNWIwZGJmZTljMmVkYmExZDhh
ZTY1NjQwOTIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCiAj
aW5jbHVkZSAiRmV0Y2hIZWFkZXJzLmgiCisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1TaW5rLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRB
cnJheXMuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBKU1ZhbHVlOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBGZXRjaFJlcXVlc3Q7CitzdHJ1Y3QgUmVhZGFibGVTdHJlYW1DaHVu
azsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlOwogCiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZp
bmFsIDogcHVibGljIEZldGNoQm9keU93bmVyIHsKQEAgLTkzLDcgKzk1LDkgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgQ29uc3VtZURhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNl
cHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik+OwogICAgIHZvaWQgY29uc3VtZUJvZHlX
aGVuTG9hZGVkKENvbnN1bWVEYXRhQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBjb25zdW1lQm9keUZy
b21SZWFkYWJsZVN0cmVhbShDb25zdW1lRGF0YUNhbGxiYWNrJiYpOworCisgICAgdXNpbmcgQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
UmVhZGFibGVTdHJlYW1DaHVuayo+JiYpPjsKKyAgICB2b2lkIGNvbnN1bWVCb2R5RnJvbVJlYWRh
YmxlU3RyZWFtKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNodW5r
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1DaHVuay5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjEyMWViYmRjNDhjYWRhNjBhOTY2YzJiZWVhMzZjYzRhZmMxZjRiNGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1DaHVuay5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
T2xla3NhbmRyIFNrYWNoa292IDxnc2thY2hrb3ZAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFJlYWRhYmxlU3RyZWFtQ2h1bmsgeworICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGE7CisgICAgc2l6ZV90IHNpemU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCmluZGV4IGUwMmE2
NzkxZTY5NDY2YThlNjQ2MDYyMTI0YjM1NDYwYjE3NDdjYzguLjMwZGIyNDAwY2ZlNzdkYjg3YTZj
MDYxZTg3ZGI1NjNlNGNiYjRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuY3BwCkBAIC01MSwxNyArNTEsMTYgQEAgdm9p
ZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZW5xdWV1ZShjb25zdCBCdWZmZXJT
b3VyY2UmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlci5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChtX2NhbGxiYWNrKSB7CisgICAgICAgIFJlYWRhYmxlU3RyZWFtQ2h1bmsgY2h1bmsg
eyBidWZmZXIuZGF0YSgpLCBidWZmZXIubGVuZ3RoKCkgfTsKKyAgICAgICAgbV9jYWxsYmFjaygm
Y2h1bmspOwogICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y2xvc2UoKQogewotICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZSht
X2RhdGEpKTsKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjayhudWxscHRy
KTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6ZXJyb3IoU3Ry
aW5nJiYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRleCA2MWMyYWFiZWYyZDU2NjAzMThlYmI3OTA1ZDFmYWVh
OTU4NzJiZjU5Li5iYjgxZjI2MTgxMTllNTdhMjIyN2Q2Njk5NzllYThmMTMwNzViYmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5r
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2lu
ay5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNodW5rLmgiCiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAt
MzYsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsK
IGNsYXNzIFJlYWRhYmxlU3RyZWFtOworc3RydWN0IFJlYWRhYmxlU3RyZWFtQ2h1bms7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewpAQCAtNDksMjAgKzUxLDE5IEBAIHB1YmxpYzoK
IAogY2xhc3MgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsgZmluYWwgOiBwdWJsaWMg
UmVhZGFibGVTdHJlYW1TaW5rIHsKIHB1YmxpYzoKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik+OworICAg
IHVzaW5nIENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFJlYWRhYmxl
U3RyZWFtQ2h1bmsqPiYmKT47CiAgICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVk
QnVmZmVyU2luaz4gY3JlYXRlKENhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbmsoV1RGTW92ZShjYWxsYmFjaykp
KTsgfQogICAgIHZvaWQgcGlwZUZyb20oUmVhZGFibGVTdHJlYW0mKTsKICAgICB2b2lkIGNsZWFy
Q2FsbGJhY2soKSB7IG1fY2FsbGJhY2sgPSB7IH07IH0KIAogcHJpdmF0ZToKLSAgICBSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luayhDYWxsYmFjayYmKTsKKyAgICBleHBsaWNpdCBSZWFk
YWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luayhDYWxsYmFjayYmKTsKIAogICAgIHZvaWQgZW5x
dWV1ZShjb25zdCBCdWZmZXJTb3VyY2UmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlKCkgZmluYWw7
CiAgICAgdm9pZCBlcnJvcihTdHJpbmcmJikgZmluYWw7CiAKICAgICBDYWxsYmFjayBtX2NhbGxi
YWNrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA2MDFmNDFiNmU2OTc3YTlhMmY5NGFkZjhjNTZhOTIyMDJlNmY4NWVj
Li5jYjAxZjhlNWEzOTVmMWQ0YjY2OWI5YTRmNGJjYTQ5OTFlNWE2OTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzg5LDYg
KzIzODksNyBAQAogCQk4QUI0QkM3NzEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhBQjRCQzc2MTI2RkRCNzEwMERFQjcyNyAvKiBJZ25vcmVEZXN0cnVj
dGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk4QUY0RTU1NjExREM1QTM2MDAw
RUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MzExREM1QTM2MDAwRUQzREUgLyogUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uLmggKi87IH07CiAJCThBRjRFNTVDMTFEQzVBNjMwMDBFRDNERSAvKiBQ
ZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOEFGNEU1NTkxMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGltaW5nLmgg
Ki87IH07CisJCThCRDM3QTY4MjAxQkIzOUMwMDExNzM0QSAvKiBSZWFkYWJsZVN0cmVhbUNodW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QkQzN0E2
NzIwMUJCMzlDMDAxMTczNEEgLyogUmVhZGFibGVTdHJlYW1DaHVuay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuaCAqLzsgfTsKIAkJOEVDNkM5NjMyMDFBMjUxNjAwRkJGQTUzIC8qIEdhcExlbmd0aC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEVDNkM5NjEyMDFB
MjUwMTAwRkJGQTUzIC8qIEdhcExlbmd0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCThGNjc1NjFCMTI4OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1
ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4RjY3
NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05OTM3LDYgKzk5MzgsNyBAQAogCQk4QUY0
RTU1OTExREM1QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOEFGNEU1NUExMURDNUE2MzAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlVGlt
aW5nLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZVRpbWluZy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThFMzNDRDkzMjAxQTI5QzEwMEUzOTA5MyAvKiBH
YXBMZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2FwTGVu
Z3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEJEMzdBNjcyMDFCQjM5QzAw
MTE3MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1DaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRDOTZEODFBRDQ0
ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCThFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGZXRjaFJlc3BvbnNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThFQzZDOTYxMjAxQTI1MDEwMEZCRkE1MyAvKiBHYXBM
ZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FwTGVuZ3RoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2OCw2ICsxNjU3MCw3IEBACiAJCQkJOTkw
OEIwRjIxQkNBQ0Y5MTAwRUQzNTcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5qcyAqLywK
IAkJCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTU2NzIgLyogUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVz
dC5pZGwgKi8sCiAJCQkJOTkwOEIwRjAxQkNBQ0Y5MTAwRUQ1NjcyIC8qIFJlYWRhYmxlU3RyZWFt
QllPQlJlcXVlc3QuanMgKi8sCisJCQkJOEJEMzdBNjcyMDFCQjM5QzAwMTE3MzRBIC8qIFJlYWRh
YmxlU3RyZWFtQ2h1bmsuaCAqLywKIAkJCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgKi8sCiAJCQkJOTkwOEIwRjAxQkNBQ0Y5
MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuanMgKi8sCiAJCQkJ
NDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5p
ZGwgKi8sCkBAIC0yOTA5Miw2ICsyOTA5NSw3IEBACiAJCQkJQTg0RDgyN0MxMUQzMzNFRDAwOTcy
OTkwIC8qIFJhd0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZG
RTgxQkJEMTJERjAwMEE2MDQzIC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1MDAwQTYwNDMgLyogUmVhZGFi
bGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEJEMzdBNjgyMDFCQjM5QzAw
MTE3MzRBIC8qIFJlYWRhYmxlU3RyZWFtQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMjlD
OUE5MUY1OUM1NkIwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOUM5QUYxRjU5
Q0Y1QjAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcAppbmRleCBkNDQ1YjgxMzFiMTY2ZGQ0NmMzMTljZmQ1ZmY5MzI4
NzM1MDNjNTc0Li5lZTk1ZDY5ZmU2ZGFhZDRhNGEwNzY0NGE1NWU4NjY4MzA0OTI3YzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGZXRj
aEV2ZW50LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNw
b25zZS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQ2h1bmsuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKQEAgLTUzLDE2ICs1NCwxNiBAQCBzdGF0aWMg
dm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEZldGNoUmVzcG9uc2Uq
IHJlc3BvbnNlKQogICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLT5yZXNv
dXJjZVJlc3BvbnNlKCkpOwogCiAgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJsZVN0cmVhbUJv
ZHkoKSkgewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlbmQgdGhlIGJvZHkgYXMgY2h1
bmtzLgotICAgICAgICByZXNwb25zZS0+Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oW2Ns
aWVudCA9IFdURk1vdmUoY2xpZW50KV0gKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21S
ZWFkYWJsZVN0cmVhbShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpXSAoYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgY2xpZW50LT5kaWRGYWlsKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlz
aCgpOworICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkK
KyAgICAgICAgICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNodW5rLT5kYXRhKSwgY2h1bmstPnNp
emUpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjbGllbnQtPmRpZEZpbmlz
aCgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IDcyOTJiYjM1OTg1NjBkM2ZlZDM3MDcxNWJlOGI2MGU5OWM0NDJi
ZGEuLmNjMDk3ZjNkMWQzYWJjZjJmZmEyOTIyZDljODVjNGFiOTU0NmMzNTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAxLTI5ICBPbGVrc2Fu
ZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAgICAgIEZldGNoUmVzcG9u
c2Ugc2hvdWxkIHN1cHBvcnQgQ29uc3VtZURhdGEgY2FsbGJhY2sgb24gY2h1bmsgZGF0YSBpcyBy
ZWNlaXZlZDogaGFuZGxpbmcgUmVhZGFibGVTdHJlYW0gYm9kaWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIwMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFi
bGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVu
dC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1
bmstaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQt
d2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGNv
bnN0LnByb2Nlc3MpOgorICAgICAgICAodGhpcy5zdGVwKToKKyAgICAgICAgKHRoaXMucnVuKToK
KyAgICAgICAgKGNvbnN0LmFzeW5jU3RlcHMpOgorCiAyMDE4LTAxLTI2ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBEaXN0aW5n
dWlzaCBiZXR3ZWVuIGFuIG9taXR0ZWQgYW5kIGEgbnVsbCB0aW1lbGluZSBhcmd1bWVudCB0byB0
aGUgQW5pbWF0aW9uIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9m
ZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFk
YWJsZS1zdHJlYW0tY2h1bmsuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMjg2MDVi
ZmZkNGRiZDE3ZWRmYzFhZjFmYWM0YzMwZmE4YTY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNo
dW5rLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXNwb25kIGJ5
IGNodW5rcyB3aXRoIGEgUmVzcG9uc2UgYnVpbHQgZnJvbSBhIFJlYWRhYmxlU3RyZWFtIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVh
ZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1l
dmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDU0NGE5ZTA4ZjU2MmM5Nzg3MTUzNDcwYzBjYmQ2YTlhZDZmNGRlYQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFk
YWJsZS1zdHJlYW0tY2h1bmsuaHR0cHMuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5yZXNwb25kV2l0aCB3aXRoIGEg
cmVzcG9uc2UgYnVpbHQgZnJvbSBhIFJlYWRhYmxlU3RyZWFtPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJp
Y3QnOworCitjb25zdCBXT1JLRVIgPSAncmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0
aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzJzsKK2NvbnN0IFNDT1BFID0gJ3Jlc291
cmNlcy9mZXRjaC1ldmVudC1yZXNwb25kLXdpdGgtcmVhZGFibGUtc3RyZWFtLWNodW5rLWlmcmFt
ZS5odG1sJzsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHZhciByZWcgPSBhd2Fp
dCBzZXJ2aWNlX3dvcmtlcl91bnJlZ2lzdGVyX2FuZF9yZWdpc3Rlcih0LCBXT1JLRVIsIFNDT1BF
KTsKKyAgICBhZGRfY29tcGxldGlvbl9jYWxsYmFjaygoKSA9PiByZWcudW5yZWdpc3RlcigpKTsK
KyAgICBhd2FpdCB3YWl0X2Zvcl9zdGF0ZSh0LCByZWcuaW5zdGFsbGluZywgJ2FjdGl2YXRlZCcp
OworICAgIGxldCBpZnJhbWUgPSBhd2FpdCB3aXRoX2lmcmFtZShTQ09QRSk7CisgICAgdC5hZGRf
Y2xlYW51cCgoKSA9PiBpZnJhbWUucmVtb3ZlKCkpOworCisgICAgbGV0IHJlc3BvbnNlID0gYXdh
aXQgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZmV0Y2goJ2JvZHktc3RyZWFtJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCByZXNwb25zZS50ZXh0KCksICdjaHVuayAjMSBjaHVuayAjMiBjaHVuayAj
MyBjaHVuayAjNCcpOworfSwgJ1Jlc3BvbmQgYnkgY2h1bmtzIHdpdGggYSBSZXNwb25zZSBidWls
dCBmcm9tIGEgUmVhZGFibGVTdHJlYW0nKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNoLWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1z
dHJlYW0tY2h1bmstd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL2ZldGNo
LWV2ZW50LXJlc3BvbmQtd2l0aC1yZWFkYWJsZS1zdHJlYW0tY2h1bmstd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY5NTRlM2ExOGE1ZTVjYTNiNmI0YjlhOGE2ZmNjOTk1NjkxMTAwN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZmV0Y2gtZXZlbnQtcmVzcG9u
ZC13aXRoLXJlYWRhYmxlLXN0cmVhbS1jaHVuay13b3JrZXIuanMKQEAgLTAsMCArMSw0MCBAQAor
J3VzZSBzdHJpY3QnOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgZXZlbnQgPT4g
eworICAgIGlmICghZXZlbnQucmVxdWVzdC51cmwubWF0Y2goL2JvZHktc3RyZWFtJC8pKQorICAg
ICAgICByZXR1cm47CisKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgY29uc3QgZW5jb2RlciA9
IG5ldyBUZXh0RW5jb2RlcigpOworICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7IHB1bGw6IGNvbnRyb2xsZXIgPT4geworICAgICAgICBzd2l0Y2ggKCsrY291bnRlcikgewor
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5l
bmNvZGUoJycpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjMScpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgY29udHJvbGxl
ci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCcgJykpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjYXNlIDQ6CisgICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNv
ZGUoJ2NodW5rICMyJykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIDU6Cisg
ICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2Rlci5lbmNvZGUoJyAnKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgIGNvbnRyb2xsZXIu
ZW5xdWV1ZShlbmNvZGVyLmVuY29kZSgnY2h1bmsgIzMnKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVy
LmVuY29kZSgnICcpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSA4OgorICAg
ICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZXIuZW5jb2RlKCdjaHVuayAjNCcpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRy
b2xsZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH19KTsKKyAgICBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2Uoc3RyZWFtKSk7Cit9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>