<?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>207747</bug_id>
          
          <creation_ts>2020-02-13 23:24:09 -0800</creation_ts>
          <short_desc>NetworkLoadMetrics should be shared by multiple ResourceResponse instances</short_desc>
          <delta_ts>2020-02-14 11:53:22 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1618881</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-13 23:24:09 -0800</bug_when>
    <thetext>NetworkLoadMetrics should be shared by multiple ResourceResponse instances</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618882</commentid>
    <comment_count>1</comment_count>
      <attachid>390732</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-13 23:40:24 -0800</bug_when>
    <thetext>Created attachment 390732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618883</commentid>
    <comment_count>2</comment_count>
      <attachid>390732</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-13 23:40:57 -0800</bug_when>
    <thetext>Comment on attachment 390732
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        has Vector&lt;ResourceResponse&gt; to replay response dispatching in the case of loading from BackForwardCache. The problem is

Note that this is one of the largest Vector in Membuster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618884</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-13 23:47:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/59452102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618902</commentid>
    <comment_count>4</comment_count>
      <attachid>390737</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 00:59:31 -0800</bug_when>
    <thetext>Created attachment 390737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618904</commentid>
    <comment_count>5</comment_count>
      <attachid>390738</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 01:06:53 -0800</bug_when>
    <thetext>Created attachment 390738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618906</commentid>
    <comment_count>6</comment_count>
      <attachid>390739</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 01:15:31 -0800</bug_when>
    <thetext>Created attachment 390739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618907</commentid>
    <comment_count>7</comment_count>
      <attachid>390740</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 01:21:36 -0800</bug_when>
    <thetext>Created attachment 390740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618908</commentid>
    <comment_count>8</comment_count>
      <attachid>390741</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 01:36:16 -0800</bug_when>
    <thetext>Created attachment 390741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618914</commentid>
    <comment_count>9</comment_count>
      <attachid>390743</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 02:13:33 -0800</bug_when>
    <thetext>Created attachment 390743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618916</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 02:16:01 -0800</bug_when>
    <thetext>I&apos;m also considering that making ResourceResponse RefCounted&lt;&gt;, but as a first step, I&apos;ll do NetworkLoadMetrics part.

I think we could make ResourceResponse RefCounted&lt;&gt; without changing much of things.
Due to WebKit2, we already initialize all the fields of ResourceResponse anyway.
So, we could make almost all part as immutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618936</commentid>
    <comment_count>11</comment_count>
      <attachid>390755</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 04:32:25 -0800</bug_when>
    <thetext>Created attachment 390755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619107</commentid>
    <comment_count>12</comment_count>
      <attachid>390755</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-14 11:33:15 -0800</bug_when>
    <thetext>Comment on attachment 390755
Patch

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

r=me with nits.

&gt; Source/WebCore/ChangeLog:13
&gt; +        While we sometimes copies it to modify some part of it, NetworkLoadMetrics is immutable. It is set when response is created,

nit: copies =&gt; copy

Also, what is &quot;it&quot; in &quot;copies it&quot;? A NeworkLoadMetrics or a ResourceResponse?

&gt; Source/WebCore/ChangeLog:17
&gt; +        This patch puts Box&lt;NetworkLoadMetrics&gt; in ResourceResponse to share it by all copied ResourceResponses. We do not make NetworkLoadMetrics

Nit: share it by =&gt; hare it with.

&gt; Source/WebCore/ChangeLog:18
&gt; +        RefCounted&lt;&gt; for now since some legit data structure embeds NetworkLoadMetrics. This patch adds ArgumentCoder for Box so that we

Nit: data structure embeds =&gt; data structures embed

Or did you mean that there is only on data structure that embed&apos;s NetworkLoadMetrics? If so can you name that class?

&gt; Source/WebCore/platform/network/ResourceResponseBase.h:339
&gt; +    if constexpr (Decoder::isIPCDecoder) {
&gt; +        if (!decoder.decode(response.m_networkLoadMetrics))
&gt; +            return false;
&gt; +    }

Why bother with this change? Seems like the compiler will make this optimization anyway?

&gt; Source/WebCore/platform/network/cocoa/NetworkLoadMetrics.mm:68
&gt; +

Nit: remove newline here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619117</commentid>
    <comment_count>13</comment_count>
      <attachid>390755</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 11:50:28 -0800</bug_when>
    <thetext>Comment on attachment 390755
Patch

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

Thanks!

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        While we sometimes copies it to modify some part of it, NetworkLoadMetrics is immutable. It is set when response is created,
&gt; 
&gt; nit: copies =&gt; copy
&gt; 
&gt; Also, what is &quot;it&quot; in &quot;copies it&quot;? A NeworkLoadMetrics or a ResourceResponse?

Fixed. DocumentLoader for example is copying ResourceResponse.

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +        This patch puts Box&lt;NetworkLoadMetrics&gt; in ResourceResponse to share it by all copied ResourceResponses. We do not make NetworkLoadMetrics
&gt; 
&gt; Nit: share it by =&gt; hare it with.

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        RefCounted&lt;&gt; for now since some legit data structure embeds NetworkLoadMetrics. This patch adds ArgumentCoder for Box so that we
&gt; 
&gt; Nit: data structure embeds =&gt; data structures embed
&gt; 
&gt; Or did you mean that there is only on data structure that embed&apos;s NetworkLoadMetrics? If so can you name that class?

Fixed. Some of multiple classes are embedding NetworkLoadMetrics. So for now, I&apos;m taking an easy path.

&gt;&gt; Source/WebCore/platform/network/ResourceResponseBase.h:339
&gt;&gt; +    }
&gt; 
&gt; Why bother with this change? Seems like the compiler will make this optimization anyway?

Encoder can be persistent coder (which generates bytes for disks).
We can omit implementation of persistent coder&apos;s NetworkLoadMetrics handling if we use `if constexpr`.

&gt;&gt; Source/WebCore/platform/network/cocoa/NetworkLoadMetrics.mm:68
&gt;&gt; +
&gt; 
&gt; Nit: remove newline here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619120</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-14 11:53:22 -0800</bug_when>
    <thetext>Committed r256632: &lt;https://trac.webkit.org/changeset/256632&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390732</attachid>
            <date>2020-02-13 23:40:24 -0800</date>
            <delta_ts>2020-02-14 00:59:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200213234023.patch</filename>
            <type>text/plain</type>
            <size>34877</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uZTJiNGQ0ZWRiMzcyYjc5OTM1ODIxYThjODNmN2Yw
MDUwY2M1Mjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTAyLTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFp
bkxvb2t1cFN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21haW5Mb29rdXBFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OmNvbm5lY3RTdGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5j
ZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmNyb3NzVGhyZWFkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldERlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlUaW1pbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0
aW9uVGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpkaWRS
ZWNlaXZlUmVzcG9uc2U6XSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSBMaW5lTGF5b3V0Q29udGV4dDo6
bV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDZhYjEwNGY5MWE3M2FiYzMy
NzIwYzE5MGNhZTY3YzE2YzQyOTcwLi4zNGRjZDIwMjY5ZGFlMjgwOWQ1MmQxN2FmZTc3ZWRmZWE0
Y2RhNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTEzICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIHNo
b3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1bWVu
dENvZGVyIHN1cHBvcnQgZm9yIEJveDxUPi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+Pjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxCb3g8VD4+OjpkZWNvZGUpOgorCiAyMDIwLTAyLTEy
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNTYwMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2UyZmFhYTNi
NTg5ODM3OGVhODQwODBjMzhiZGRhODQ4ZDIxN2ZlOS4uZWU5ZWRiMzBkZDdiMzQ2MWM0ZDQ5MWRm
YWY3OTI5MDExZDQ5OGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjEzLDI3ICsyMTMsMzIg
QEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVhZGVycyhjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2JqZWN0OwogfQogCi1S
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikKK1JlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWlu
ZywgUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogewogICAgIGF1dG8mIGxvYWRUaW1p
bmcgPSByZXNvdXJjZUxvYWRlci5sb2FkVGltaW5nKCk7CiAKICAgICBhdXRvIGVsYXBzZWRUaW1l
U2luY2UgPSBbJl0gKGNvbnN0IE1vbm90b25pY1RpbWUmIHRpbWUpIHsKICAgICAgICAgcmV0dXJu
IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRUaW1lU2luY2UodGlt
ZSkuc2Vjb25kcygpOwogICAgIH07CisgICAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBl
bXB0eTsKKyAgICBpZiAoIXRpbWluZykgeworICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAg
ICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOworICAgIH0KIAogICAgIHJldHVybiBJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKCkKICAgICAgICAg
LnNldFN0YXJ0VGltZShlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcuc3RhcnRUaW1lKCkpKQog
ICAgICAgICAuc2V0UmVkaXJlY3RTdGFydChlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcucmVk
aXJlY3RTdGFydCgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0RW5kKGVsYXBzZWRUaW1lU2luY2Uo
bG9hZFRpbWluZy5yZWRpcmVjdEVuZCgpKSkKICAgICAgICAgLnNldEZldGNoU3RhcnQoZWxhcHNl
ZFRpbWVTaW5jZShsb2FkVGltaW5nLmZldGNoU3RhcnQoKSkpCi0gICAgICAgIC5zZXREb21haW5M
b29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAg
ICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVuZC5taWxsaXNlY29u
ZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmcuY29ubmVjdFN0YXJ0Lm1pbGxp
c2Vjb25kcygpKQotICAgICAgICAuc2V0Q29ubmVjdEVuZCh0aW1pbmcuY29ubmVjdEVuZC5taWxs
aXNlY29uZHMoKSkKLSAgICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFydCh0aW1pbmcuc2Vj
dXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0UmVxdWVzdFN0
YXJ0KHRpbWluZy5yZXF1ZXN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRSZXNw
b25zZVN0YXJ0KHRpbWluZy5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAu
c2V0UmVzcG9uc2VFbmQodGltaW5nLnJlc3BvbnNlRW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAg
ICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBTdGFydC5taWxsaXNl
Y29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cEVuZCh0aW1pbmctPmRvbWFpbkxvb2t1
cEVuZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmctPmNv
bm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RFbmQodGltaW5n
LT5jb25uZWN0RW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0U2VjdXJlQ29ubmVjdGlv
blN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQorICAg
ICAgICAuc2V0UmVxdWVzdFN0YXJ0KHRpbWluZy0+cmVxdWVzdFN0YXJ0Lm1pbGxpc2Vjb25kcygp
KQorICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmctPnJlc3BvbnNlU3RhcnQubWlsbGlz
ZWNvbmRzKCkpCisgICAgICAgIC5zZXRSZXNwb25zZUVuZCh0aW1pbmctPnJlc3BvbnNlRW5kLm1p
bGxpc2Vjb25kcygpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC0zNTEsNyArMzU2LDcg
QEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAgIGlm
IChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNldFRpbWluZyhidWls
ZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCks
ICpyZXNvdXJjZUxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0VGltaW5nKGJ1
aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NP
ck51bGwoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAKICAgICBpZiAoYXV0byYgY2VydGlmaWNhdGVJ
bmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAgYXV0byBzZWN1cml0
eVBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTZWN1cml0eTo6U2VjdXJpdHk6OmNyZWF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCBhNjhmODQ1MjA3MzY5NzdjOGI5MjE2NjE2YzVhMTc4ZmJm
NTI3NWQ2Li5iMDM4YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUzMjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JOZXR3b3JrQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpOZXR3bwogICAg
IFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+
IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiwgT3B0aW9uYWw8Y29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jj4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9yVGltaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyosIFJlc291cmNlTG9hZGVyJik7CiAgICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IGJ1aWxkT2JqZWN0Rm9yTWV0cmljcyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjRlZTVkZGJjODI1OTI1ZWU1MDQ5MTdl
OGUzMzI1YzQxNDY1NGNjMS4uMzc0MjEyODFjZTIyMThkYmY5ZDI1ZDg3NmQ3NTg2MmY1MDBkZDVh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTYzMCw3ICs2MzAsMTMgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
cmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9
IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9u
cy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBjb25zdCBhdXRv
KiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7
CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAgIGlm
ICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAgICB0
aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBhdXRvIHJlc291cmNl
VGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwg
bV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgKnRpbWluZywgcmVzcG9uc2UsIHNlY3Vy
aXR5T3JpZ2luKCkpOwogICAgICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRvckNvbnRleHQgPT0g
SW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICAgICAgZmluaXNoZWRUaW1pbmdGb3JX
b3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiNzQ4MmFhNGFhZTlmZTBiYmE4
ZGY5N2I2ZTRjNzVhZDQ0N2M2MmFkLi4xNWMwYTcxOThhYzIyMjBiNzg3ODQ5MWI5NzYzY2Q3Y2Zk
MjcxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTY5MSw3ICs2OTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgbGVnYWN5IHBhdGggZm9yIHBsYXRmb3JtcyAoYW5kIFJlc291cmNlSGFuZGxl
IHBhdGhzKSB0aGF0IGRvIG5vdCBwcm92aWRlCiAgICAgICAgIC8vIGNvbXBsZXRlIGxvYWQgbWV0
cmljcyBpbiBkaWRGaW5pc2hMb2FkLiBJbiB0aG9zZSBjYXNlcywgZmFsbCBiYWNrIHRvIHRoZSBw
b3NzaWJpbGl0eQogICAgICAgICAvLyB0aGF0IHRoZXkgcG9wdWxhdGVkIHBhcnRpYWwgbG9hZCB0
aW1pbmcgaW5mb3JtYXRpb24gb24gdGhlIFJlc291cmNlUmVzcG9uc2UuCi0gICAgICAgIHJlcG9y
dFJlc291cmNlVGltaW5nKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcygpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gbV9yZXNvdXJjZS0+
cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CisgICAgICAg
IE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAgIGlmICghdGltaW5n
KSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAgICB0aW1pbmcgPSAm
ZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZygq
dGltaW5nKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJl
c291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VUaW1pbmcuY3BwCmluZGV4IDRlZmQ1NGUwMmQ2OGZhMzJlNmNlZmYwOWYzNWU0NGU3NzhhOWQz
YmEuLjU2YTc1NmRhYmQ3MGE2ZTk1MzhhMTE3MGM4NWI4MDdjNWI3ZGVjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0xMjAsMTQgKzEyMCwxNCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0KCkg
Y29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKICAg
ICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9u
c2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBiZSAtMSB3aGVuIGEg
RE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2lu
ZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAiYmFja2ZpbGwiIHdp
dGggZmV0Y2hTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0IDwgMF9tcykK
KyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0IDwgMF9tcykKICAg
ICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1l
UmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0KTsKKyAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+ZG9tYWluTG9v
a3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRv
bWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CiAgICAgaWYg
KCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCgpOwogICAgIAotICAg
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdoZW4gYSBETlMgcmVx
dWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5nIGEgc3Bl
Y2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmlsbCIgd2l0aCBkb21h
aW5Mb29rdXBTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA8IDBfbXMpCisg
ICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAwX21zKQogICAgICAg
ICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNvdXJjZUxvYWRU
aW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cEVuZCk7CisgICAgcmV0
dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmctPmRvbWFpbkxv
b2t1cEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29u
bmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE1MiwxOCArMTUyLDIwIEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRl
cikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCi0gICAgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0g
bG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsK
ICAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEgbmV0d29yayByZXF1
ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5nIGEgc3BlY2lhbCB2
YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwgd2UgImJhY2tmaWxsIiB3aXRo
IGRvbWFpbkxvb2t1cEVuZC4KLSAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy5jb25u
ZWN0U3RhcnQ7CisgICAgaWYgKCF0aW1pbmcpCisgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBF
bmQoKTsKKyAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29ubmVjdFN0YXJ0Owog
ICAgIGlmIChjb25uZWN0U3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3Vw
RW5kKCk7CiAKICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MncyBjb25uZWN0IHBoYXNlIGluY2x1
ZGVzIEROUywgaG93ZXZlciBOYXZpZ2F0aW9uIFRpbWluZydzCiAgICAgLy8gY29ubmVjdCBwaGFz
ZSBzaG91bGQgbm90LiBTbyBpZiB0aGVyZSBpcyBETlMgdGltZSwgdHJpbSBpdCBmcm9tIHRoZSBz
dGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwX21zICYmIHRpbWluZy5k
b21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5lY3RTdGFydCA9IHRp
bWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgaWYgKHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID49
IDBfbXMgJiYgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCisgICAgICAg
IGNvbm5lY3RTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwogCiAgICAgcmV0dXJuIHJl
c291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydChjb25uZWN0U3RhcnQpOwogfQpAQCAt
MTc0LDE0ICsxNzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpj
b25uZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbm5l
Y3RTdGFydCgpOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2Fk
ZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAvLyBjb25uZWN0RW5kIHdp
bGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRo
ZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNv
bm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0gICAgaWYgKHRpbWlu
Zy5jb25uZWN0RW5kIDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmNvbm5lY3RF
bmQgPCAwX21zKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAKLSAgICByZXR1cm4g
cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5jb25uZWN0RW5kKTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+
Y29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE5MCwxMiArMTkyLDEyIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkg
Y29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1p
bmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVs
bCgpOwogICAgIAotICAgIGlmICh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDwgMF9tcykK
KyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA8IDBfbXMp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2
ZVRvRmV0Y2hTdGFydCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKKyAgICByZXR1cm4g
cmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVj
dGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpy
ZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMjA0LDEwICsyMDYsMTIgQEAgdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdAogICAgIGlmICghbG9h
ZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwogICAgIAotICAgIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3
b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlcXVlc3RTdGFydCA9IDBfbXM7CisgICAg
aWYgKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgp
LmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKSkKKyAgICAgICAgcmVxdWVzdFN0
YXJ0ID0gdGltaW5nLT5yZXF1ZXN0U3RhcnQ7CiAgICAgCi0gICAgQVNTRVJUKHRpbWluZy5yZXF1
ZXN0U3RhcnQgPj0gMF9tcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
RmV0Y2hTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKKyAgICBBU1NFUlQocmVxdWVzdFN0YXJ0
ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3Rh
cnQocmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKQEAgLTIxNiwxMCArMjIwLDEyIEBAIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0CiAgICAg
aWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiByZXF1ZXN0U3RhcnQoKTsKIAotICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlc3BvbnNlU3RhcnQgPSAwX21z
OworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVz
cG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkpCisgICAgICAgIHJl
c3BvbnNlU3RhcnQgPSB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7CiAgICAgCi0gICAgQVNTRVJUKHRp
bWluZy5yZXNwb25zZVN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1l
UmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlc3BvbnNlU3RhcnQpOworICAgIEFTU0VSVChy
ZXNwb25zZVN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0ZldGNoU3RhcnQocmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKaW5kZXggYTM2ZjM0
OTcyNTdkNjg4M2Y1ZWNiOTIxYmNlMmFlMGIzNGQxNmI3MC4uM2M5NDA0Y2MwOTIyZTBiM2JlNzNj
YmQzNjhiMmI0MjA4Njc3YzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4KQEAgLTE4NCw3ICsx
ODUsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgewogfTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRp
bWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworV0VCQ09SRV9FWFBPUlQgQm94PE5ldHdv
cmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhKTsK
ICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDY4MDc0MDRiZmZkYTZmNWRl
ZDU5MDU1Y2YwMWUyYzllNmM0YjI1ZmMuLjE5ZTFhNmI3ZmJjMTkxNGY3MTY3MzlmNTdmOGI2YjY4
ZGZhNzU2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEzMSw5ICsxMzIs
OSBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFu
ZGxlPiwgcHVibGljIEF1dGhlbnRpY2F0aW9uQwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYg
VVNFKENGVVJMQ09OTkVDVElPTikKLSAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRp
YyBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENv
bm5lY3Rpb25SZWYpOwogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShOU1VSTENvbm5lY3Rpb24gKiwgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGlj
IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29u
bmVjdGlvbiAqKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggZTlhY2Nl
YmQ3NzIwYWMzM2E2ODA4N2I0OWIwZjgyZDA5MmJlMmFkMC4uNDg0ZTM5ODc2MTg5NjBiMTk0NTUy
MWU5N2E5YThkZWE5OGQzZjRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTkwLDcgKzkwLDggQEAg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OkNyb3NzVGhyZWFkRGF0YSBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y3Jvc3NUaHJlYWREYXRhKCkgY28KICAgICBkYXRhLmh0dHBWZXJzaW9uID0gaHR0cFZlcnNp
b24oKS5pc29sYXRlZENvcHkoKTsKIAogICAgIGRhdGEuaHR0cEhlYWRlckZpZWxkcyA9IGh0dHBI
ZWFkZXJGaWVsZHMoKS5pc29sYXRlZENvcHkoKTsKLSAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmlj
cyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpOworICAgIGlmIChtX25ldHdv
cmtMb2FkTWV0cmljcykKKyAgICAgICAgZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdv
cmtMb2FkTWV0cmljcy0+aXNvbGF0ZWRDb3B5KCk7CiAgICAgZGF0YS50eXBlID0gbV90eXBlOwog
ICAgIGRhdGEudGFpbnRpbmcgPSBtX3RhaW50aW5nOwogICAgIGRhdGEuaXNSZWRpcmVjdGVkID0g
bV9pc1JlZGlyZWN0ZWQ7CkBAIC0xMTMsNyArMTE0LDEwIEBAIFJlc291cmNlUmVzcG9uc2UgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmZyb21Dcm9zc1RocmVhZERhdGEoQ3Jvc3NUaHJlYWREYXRhJiYg
ZGF0CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFZlcnNpb24oZGF0YS5odHRwVmVyc2lvbik7CiAKICAg
ICByZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVsZHMgPSBXVEZNb3ZlKGRhdGEuaHR0cEhlYWRlckZp
ZWxkcyk7Ci0gICAgcmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBkYXRhLm5ldHdvcmtM
b2FkTWV0cmljczsKKyAgICBpZiAoZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIHJl
c3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEubmV0d29ya0xvYWRNZXRyaWNzLnZhbHVlKCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gbnVsbHB0cjsKICAgICBy
ZXNwb25zZS5tX3R5cGUgPSBkYXRhLnR5cGU7CiAgICAgcmVzcG9uc2UubV90YWludGluZyA9IGRh
dGEudGFpbnRpbmc7CiAgICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBkYXRhLmlzUmVkaXJl
Y3RlZDsKQEAgLTgwOCw4ICs4MTIsMTYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29t
cGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBI
ZWFkZXJGaWVsZHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSAhPSBiLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLm1fbmV0d29ya0xvYWRNZXRyaWNz
LmdldCgpICE9IGIubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFh
Lm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7CisgICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRy
aWNzKCkgIT0gKmIubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCFiLm1fbmV0d29ya0xvYWRNZXRyaWNz
KSB7CisgICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmEubV9uZXR3b3Jr
TG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9IGVsc2UgaWYgKCphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9ICpiLm1fbmV0d29y
a0xvYWRNZXRyaWNzLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKaW5kZXggODg5NDQxNmJlM2I2MTdmMWY3NzM2ZDg5OGVhYzNlOGQ5MTM1NDJmZC4u
NzZlMWYyMDA5OGE5NDNkNjY3Njg1NjVkYzJmOGM2OTRkMzJiNThmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJO
ZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtNjgsNyArNjksNyBAQCBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgICAgIFN0cmluZyBodHRwU3RhdHVzVGV4
dDsKICAgICAgICAgU3RyaW5nIGh0dHBWZXJzaW9uOwogICAgICAgICBIVFRQSGVhZGVyTWFwIGh0
dHBIZWFkZXJGaWVsZHM7Ci0gICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1l
dHJpY3M7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gbmV0d29ya0xvYWRN
ZXRyaWNzOwogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIFRhaW50aW5nIHRhaW50aW5nOwog
ICAgICAgICBib29sIGlzUmVkaXJlY3RlZDsKQEAgLTE2MCw3ICsxNjEsMTYgQEAgY2xhc3MgUmVz
b3VyY2VSZXNwb25zZUJhc2UgewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBlbGltaW5h
dGVkIGZyb20gUmVzb3VyY2VSZXNwb25zZS4KICAgICAvLyBOZXR3b3JrIGxvYWRpbmcgbWV0cmlj
cyBzaG91bGQgYmUgZGVsaXZlcmVkIHZpYSBkaWRGaW5pc2hMb2FkCiAgICAgLy8gYW5kIHNob3Vs
ZCBub3QgYmUgcGFydCBvZiB0aGUgUmVzb3VyY2VSZXNwb25zZS4KLSAgICBOZXR3b3JrTG9hZE1l
dHJpY3MmIGRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCB7IHJldHVybiBtX25l
dHdvcmtMb2FkTWV0cmljczsgfQorICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgICAgICByZXR1cm4gbV9uZXR3b3JrTG9hZE1l
dHJpY3MuZ2V0KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICB2b2lkIHNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz4mJiBt
ZXRyaWNzKQorICAgIHsKKyAgICAgICAgbV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBXVEZNb3ZlKG1l
dHJpY3MpOworICAgIH0KIAogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1h
eSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBwcm92aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9y
eSB1c2FnZSBpbmZvcm1hdGlvbgogICAgIHVuc2lnbmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKQEAg
LTIyMiw3ICsyMzIsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgQXRvbVN0
cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEF0b21TdHJpbmcgbV9odHRwVmVyc2lvbjsKICAg
ICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKLSAgICBtdXRhYmxlIE5ldHdvcmtM
b2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKKyAgICBCb3g8TmV0d29ya0xvYWRNZXRy
aWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIApAQCAtMjc2LDcgKzI4Niw3IEBAIHZvaWQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwdXQgdGhlIG5ldHdvcmtMb2FkTWV0cmljcyBpbmZvCiAg
ICAgLy8gaW50byB0aGUgZGlzayBjYWNoZSwgYmVjYXVzZSB3ZSB3aWxsIG5ldmVyIHVzZSB0aGUg
b2xkIGluZm8uCi0gICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKKyAgICBpZiBjb25zdGV4
cHIgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8PCBtX25ldHdvcmtM
b2FkTWV0cmljczsKIAogICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29kZTsKQEAgLTMxOCw4
ICszMjgsMTAgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNwb24KICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAvLyBUaGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBD
IGFuZCBub3Qgc3RvcmVkIGluIGRpc2sgY2FjaGUuCi0gICAgaWYgKERlY29kZXI6OmlzSVBDRGVj
b2RlciAmJiAhZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgY29uc3RleHByIChEZWNvZGVyOjppc0lQQ0Rl
Y29kZXIpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX25ldHdvcmtM
b2FkTWV0cmljcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJ
bmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5kZXggZmJiOGQ2ODA4OGFkZGJiYzBiNjg3MDEy
ZjhkNDEwYmJlMzkwZGNiMS4uOWRhZmY3ZTk3ZjE4ZjVmMDIxOWVlZjBjNmEyY2YyZmVjMTQxNTY3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAgLTM3LDEwICszNywxMiBAQCBzdGF0aWMgZG91
YmxlIHRpbWluZ1ZhbHVlKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTlNTdHJpbmcgKmtleSkK
ICAgICByZXR1cm4gMC4wOwogfQogICAgIAotdm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25h
cnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQorQm94PE5ldHdvcmtM
b2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhKQogewog
ICAgIGlmICghdGltaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRpbWluZyA9IEJveDxOZXR3b3Jr
TG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKIAogICAgIC8vIFRoaXMgaXMgbm90IHRoZSBuYXZpZ2F0
aW9uU3RhcnQgdGltZSBpbiBtb25vdG9uaWMgdGltZSwgYnV0IHRoZSBvdGhlciB0aW1lcyBhcmUg
cmVsYXRpdmUgdG8gdGhpcyB0aW1lCiAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4gdGltZXMgYXJlIHN0b3JlZC4KQEAgLTU0LDE1ICs1NiwxNyBAQCB2b2lkIGNvcHlUaW1p
bmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1p
bmcpCiAgICAgZG91YmxlIHJlcXVlc3RTdGFydCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAi
X2tDRk5UaW1pbmdEYXRhUmVxdWVzdFN0YXJ0Iik7CiAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQg
PSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQi
KTsKIAotICAgIHRpbWluZy5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3Vw
U3RhcnQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0g
ICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAg
PyAtMSA6IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuY29u
bmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0
IC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBT
ZWNvbmRzKHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9u
U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmNvbm5lY3RFbmQgPSBTZWNvbmRz
KGNvbm5lY3RFbmQgPD0gMCA/IC0xIDogY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAg
ICB0aW1pbmcucmVxdWVzdFN0YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiBy
ZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLnJlc3BvbnNlU3RhcnQg
PSBTZWNvbmRzKHJlc3BvbnNlU3RhcnQgPD0gMCA/IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpOworICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFp
bkxvb2t1cFN0YXJ0IDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpOworICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBF
bmQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwRW5kIC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRp
bWluZy0+Y29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29u
bmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlv
blN0YXJ0ID0gU2Vjb25kcyhzZWN1cmVDb25uZWN0aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJl
Q29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+Y29ubmVjdEVu
ZCA9IFNlY29uZHMoY29ubmVjdEVuZCA8PSAwID8gLTEgOiBjb25uZWN0RW5kIC0gcmVmZXJlbmNl
U3RhcnQpOworICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQg
PD0gMCA/IDAgOiByZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5y
ZXNwb25zZVN0YXJ0ID0gU2Vjb25kcyhyZXNwb25zZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VT
dGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKIAogICAgIC8vIE5PVEU6IHJlc3BvbnNlRW5kIGlzIG5v
dCBwb3B1bGF0ZWQgaW4gdGhpcyBjb2RlIHBhdGguCisKKyAgICByZXR1cm4gdGltaW5nOwogfQog
ICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAwM2ZhMjY4N2Y2ODE4MTM0MTQxZDFjNjk1MThi
Yjg3Zjg4MGNhYjIzLi43NjdjNTc5NDk5OWM5NDYxMTgwYmNmZWYwYzJhMTkyMmZhMTA3MmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUhhbmRsZU1hYy5tbQpAQCAtNjU1LDkgKzY1NSw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5l
dHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQorQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gUmVzb3Vy
Y2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVj
dGlvbikKIHsKLSAgICBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRp
bWluZyk7CisgICAgcmV0dXJuIGNvcHlUaW1pbmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRh
XSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCA4MzBl
ZDA2NzQwNmU1ODE5NTM1MzYxNWY3ZjI2M2EyZGFhMzMwMTIyLi4xOWU2MjA1ODBiNzY4MmY4NmU3
MmNkOTNiN2Q0ZmQ5MzE5ZWFiYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0yNTIsNyArMjUyLDcg
QEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJl
Y2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb24KIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c291cmNlUmVzcG9uc2Uoci5nZXQoKSk7CiAgICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291
cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7Ci0gICAgICAgIFJlc291cmNl
SGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShjb25uZWN0aW9uLmdldCgpLCByZXNvdXJj
ZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIHJlc291
cmNlUmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhSZXNvdXJjZUhhbmRs
ZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbi5nZXQoKSkpOwogCiAgICAgICAg
IG1faGFuZGxlLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwg
W3NlbGYsIHByb3RlY3RlZFNlbGYgPSBXVEZNb3ZlKHByb3RlY3RlZFNlbGYpXSB7CiAgICAgICAg
ICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAyYTM1OTI0
MmE3YjM3N2I4MGFiNjEzOTI0OTc3YTk1Y2VmNmRhOTAwLi5iOWYwMTU0MWVlM2IyYTU0YjRhMzY1
YzRiODAzNTQ3MTRlZmUxODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC04NDksNyArODQ5LDcg
QEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihO
U1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW5u
b3QgYmUgZWxpbWluYXRlZCB1bnRpbCBvdGhlciBjb2RlIG5vIGxvbmdlciByZWxpZXMgb24gUmVz
b3VyY2VSZXNwb25zZSdzCiAgICAgICAgIC8vIE5ldHdvcmtMb2FkTWV0cmljcy4gRm9yIGV4YW1w
bGUsIFBlcmZvcm1hbmNlVGltaW5nLgotICAgICAgICBjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sg
X3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoKSk7CisgICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljcyhXZWJDb3JlOjpjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdKSk7
CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9u
c2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBs
ZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA5ZTQxOTE2NzRhMDU1NTQ2Yzc5
YjFhNjg3Njc5YjEyMjYwMWYxMzQ3Li5iMmRkOWU1MzY2MDZhMWRhZDAxNTdmN2I4MGYwYTZiYTc2
ZGRlYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0zNjcsMTYgKzM2NywxNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBB
U1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwogCisgICAgQm94PE5ldHdvcmtMb2FkTWV0cmlj
cz4gdGltaW5nID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZSgpOworICAgIHRpbWlu
Zy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7Cisg
ICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFp
bkxvb2t1cFN0YXJ0OworICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9h
ZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kOworICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gbV9u
ZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0OworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVj
dGlvblN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0Owor
ICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7
CisgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0
U3RhcnQ7CisgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3Mu
cmVzcG9uc2VTdGFydDsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBub2JvZHkgZGVw
ZW5kcyBvbiBkZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzLgotICAgIE5ldHdvcmtMb2FkTWV0
cmljcyYgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcyA9IG1fcmVzcG9uc2UuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljcygpOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9u
c2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7Ci0gICAgZGVwcmVj
YXRlZFJlc3BvbnNlTWV0cmljcy5kb21haW5Mb29rdXBTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLmRvbWFpbkxvb2t1cFN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuZG9t
YWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kOwotICAg
IGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuY29ubmVjdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1l
dHJpY3MuY29ubmVjdFN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3Muc2VjdXJl
Q29ubmVjdGlvblN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0
YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuY29ubmVjdEVuZCA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5y
ZXF1ZXN0U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7Ci0gICAgZGVw
cmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJp
Y3MucmVzcG9uc2VTdGFydDsKKyAgICBtX3Jlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoV1RGTW92ZSh0aW1pbmcpKTsKIAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
bikgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUg
PT0gU3RhdGU6OkNvbXBsZXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggOWFjZDdmZGFlNDYwMmZiZWU3NTNkNThkZTc0YjkxMGYxMjU1YWE5
Yy4uNThjNDU2NDY4OGM4ZjNmMmVhYzFhYzQ3MDE4MmI4NWFmYWRmYzY2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGls
aXR5PgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KQEAgLTEy
Myw2ICsxMjQsNTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
T3B0aW9uYWw8VD4+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxCb3g8VD4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQm94PFQ+JiBib3gpCisgICAgeworICAgICAgICBpZiAoIWJveCkgewor
ICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCAqYm94
LmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBCb3g8VD4mIGJveCkKKyAgICB7CisgICAgICAgIGJvb2wgaXNFbmdhZ2VkOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdlZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsKKyAgICAgICAgICAgIGJveCA9IG51bGxwdHI7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIEJveDxUPiB2
YWx1ZSA9IEJveDxUPjo6Y3JlYXRlKCk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnZh
bHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBib3ggPSBXVEZNb3Zl
KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlv
bmFsPEJveDxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRp
b25hbDxib29sPiBpc0VuZ2FnZWQ7CisgICAgICAgIGRlY29kZXIgPj4gaXNFbmdhZ2VkOworICAg
ICAgICBpZiAoIWlzRW5nYWdlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7CisgICAgICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsK
KyAgICAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
T3B0aW9uYWw8Qm94PFQ+PihCb3g8VD46OmNyZWF0ZShXVEZNb3ZlKCp2YWx1ZSkpKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8VD4obnVsbHB0cikpOwor
ICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1
bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnBhaXI8VCwgVT4mIHBhaXIpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390737</attachid>
            <date>2020-02-14 00:59:31 -0800</date>
            <delta_ts>2020-02-14 01:06:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214005930.patch</filename>
            <type>text/plain</type>
            <size>48484</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uNjllZTYxMDQ2MjNjNDEwZDQ3Zjg4OTc3YWU5ZmI0
NzZjNDg2N2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0xNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIE5ldHdvcmtMb2FkTWV0
cmljcyBzaG91bGQgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIFJlc291cmNlUmVzcG9uc2UgaW5zdGFu
Y2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc3
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlIGlzIHZhbHVlIGRhdGEsIGFuZCBpdCBpcyBjb3BpZWQgbXVsdGlwbGUgdGlt
ZXMgaW4gdmFyaW91cyBwbGFjZXMsICgxKSB0byBjcmVhdGUgYSBuZXcgUmVzb3VyY2VSZXNwb25z
ZQorICAgICAgICB3aGljaCBoYXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZpZWxkcywgb3IgKDEpIHRv
IGhvbGQgUmVzb3VyY2VSZXNwb25zZSBldmVuIGFmdGVyIGxvYWRpbmcgZmluaXNoZXMuIEZvciBl
eGFtcGxlLCBEb2N1bWVudExvYWRlcgorICAgICAgICBoYXMgVmVjdG9yPFJlc291cmNlUmVzcG9u
c2U+IHRvIHJlcGxheSByZXNwb25zZSBkaXNwYXRjaGluZyBpbiB0aGUgY2FzZSBvZiBsb2FkaW5n
IGZyb20gQmFja0ZvcndhcmRDYWNoZS4gVGhlIHByb2JsZW0gaXMKKyAgICAgICAgdGhhdCBSZXNv
dXJjZVJlc3BvbnNlIGlzIHZlcnkgbGFyZ2U6IDQ0MCBieXRlcy4KKworICAgICAgICBXaGlsZSB3
ZSBzb21ldGltZXMgY29waWVzIGl0IHRvIG1vZGlmeSBzb21lIHBhcnQgb2YgaXQsIE5ldHdvcmtM
b2FkTWV0cmljcyBpcyBpbW11dGFibGUuIEl0IGlzIHNldCB3aGVuIHJlc3BvbnNlIGlzIGNyZWF0
ZWQsCisgICAgICAgIGFuZCBpcyBuZXZlciBjaGFuZ2VkLiBBbmQgTmV0d29ya0xvYWRNZXRyaWNz
IGlzIGxhcmdlOiBzaXplb2YoTmV0d29ya0xvYWRNZXRyaWNzKSBpcyAxODQgYnl0ZXMuIEdpdmVu
IHRoYXQgd2UgaGF2ZSBtdWx0aXBsZQorICAgICAgICBjb3BpZXMgb2YgUmVzb3VyY2VSZXNwb25z
ZSBpbiBXZWJDb3JlLCB3ZSBzaG91bGQgc2hhcmUgTmV0d29ya0xvYWRNZXRyaWNzIGJ5IHRoZW0u
CisKKyAgICAgICAgVGhpcyBwYXRjaCBwdXRzIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGluIFJl
c291cmNlUmVzcG9uc2UgdG8gc2hhcmUgaXQgYnkgYWxsIGNvcGllZCBSZXNvdXJjZVJlc3BvbnNl
cy4gV2UgZG8gbm90IG1ha2UgTmV0d29ya0xvYWRNZXRyaWNzCisgICAgICAgIFJlZkNvdW50ZWQ8
PiBmb3Igbm93IHNpbmNlIHNvbWUgbGVnaXQgZGF0YSBzdHJ1Y3R1cmUgZW1iZWRzIE5ldHdvcmtM
b2FkTWV0cmljcy4gVGhpcyBwYXRjaCBhZGRzIEFyZ3VtZW50Q29kZXIgZm9yIEJveCBzbyB0aGF0
IHdlCisgICAgICAgIGNhbiBlbmNvZGUgLyBkZWNvZGUgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4g
aW4gUmVzb3VyY2VSZXNwb25zZSBpbiBJUEMuIFRvIGVuc3VyZSBOZXR3b3JrTG9hZE1ldHJpY3Mg
aW4gUmVzb3VyY2VSZXNwb25zZSBpbW11dGFibGUsCisgICAgICAgIHdlIGFkZCBSZXNvdXJjZVJl
c3BvbnNlOjpzZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzIGluc3RlYWQgb2YgbW9kaWZ5
aW5nIE5ldHdvcmtMb2FkTWV0cmljcyBhbHJlYWR5IGNyZWF0ZWQgaW4gUmVzb3VyY2VSZXNwb25z
ZS4KKworICAgICAgICBXZSBhbHNvIGF0dGVtcHQgdG8gY29tcGFjdCBSZXNvdXJjZVJlc3BvbnNl
IG1vcmUgYnkgdXNpbmcgYml0LWZpZWxkcy4gQW5kIHJlbW92aW5nIG1faXNWYWxpZCBmaWVsZCBp
biBQYXJzZWRDb250ZW50UmFuZ2Ugc2luY2UKKyAgICAgICAgdGhpcyBjYW4gYmUgcmVwcmVzZW50
ZWQgYnkgdGhlIGRpZmZlcmVudCBmaWVsZC4gVGhlc2UgY2hhbmdlcyBtYWtlIHNpemVvZihSZXNv
dXJjZVJlc3BvbnNlKSBmcm9tIDQ0MCB0byAyNDguCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVj
dEZvclRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwU3RhcnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0RW5kIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3Rh
cnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnJlcXVlc3RT
dGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9u
c2VTdGFydCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1l
dHJpY3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NUaHJl
YWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclJl
c291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbWFpbkxvb2t1cFN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlU3RhcnQgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YXJlQ29udGVudFJhbmdlVmFsdWVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VDb250ZW50UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdl
OjpQYXJzZWRDb250ZW50UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJh
bmdlOjpoZWFkZXJWYWx1ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJz
ZWRDb250ZW50UmFuZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNlZENvbnRlbnRSYW5nZTo6
aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50UmFuZ2U6Omlu
dmFsaWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRDb250ZW50UmFuZ2U6Ok1hcmth
YmxlVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXJzZWRDb250ZW50UmFuZ2U6OlBhcnNlZENvbnRlbnRSYW5nZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjcm9zc1RocmVhZERhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmZyb21Dcm9zc1RocmVhZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
T3JOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpz
ZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmNvcHlUaW1pbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSBMaW5lTGF5
b3V0Q29udGV4dDo6bV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDZhYjEw
NGY5MWE3M2FiYzMyNzIwYzE5MGNhZTY3YzE2YzQyOTcwLi42YWE1MzhkYjlmYzE1NWY1MjcxNDcw
NGE4M2MzYmJkNDFjOWJlMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTE0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBp
bnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBcmd1bWVudENvZGVyIHN1cHBvcnQgZm9yIEJveDxUPi4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25z
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+Pjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxCb3g8VD4+OjpkZWNvZGUpOgor
CiAyMDIwLTAyLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTYwMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggM2UyZmFhYTNiNTg5ODM3OGVhODQwODBjMzhiZGRhODQ4ZDIxN2ZlOS4uZWU5ZWRiMzBkZDdi
MzQ2MWM0ZDQ5MWRmYWY3OTI5MDExZDQ5OGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjEz
LDI3ICsyMTMsMzIgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2Jq
ZWN0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1p
bmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikK
K1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MqIHRpbWluZywgUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogewogICAgIGF1
dG8mIGxvYWRUaW1pbmcgPSByZXNvdXJjZUxvYWRlci5sb2FkVGltaW5nKCk7CiAKICAgICBhdXRv
IGVsYXBzZWRUaW1lU2luY2UgPSBbJl0gKGNvbnN0IE1vbm90b25pY1RpbWUmIHRpbWUpIHsKICAg
ICAgICAgcmV0dXJuIG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRU
aW1lU2luY2UodGltZSkuc2Vjb25kcygpOwogICAgIH07CisgICAgT3B0aW9uYWw8TmV0d29ya0xv
YWRNZXRyaWNzPiBlbXB0eTsKKyAgICBpZiAoIXRpbWluZykgeworICAgICAgICBlbXB0eS5lbXBs
YWNlKCk7CisgICAgICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOworICAgIH0KIAogICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFN0YXJ0VGltZShlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcuc3Rh
cnRUaW1lKCkpKQogICAgICAgICAuc2V0UmVkaXJlY3RTdGFydChlbGFwc2VkVGltZVNpbmNlKGxv
YWRUaW1pbmcucmVkaXJlY3RTdGFydCgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0RW5kKGVsYXBz
ZWRUaW1lU2luY2UobG9hZFRpbWluZy5yZWRpcmVjdEVuZCgpKSkKICAgICAgICAgLnNldEZldGNo
U3RhcnQoZWxhcHNlZFRpbWVTaW5jZShsb2FkVGltaW5nLmZldGNoU3RhcnQoKSkpCi0gICAgICAg
IC5zZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNv
bmRzKCkpCi0gICAgICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmcuY29ubmVj
dFN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0Q29ubmVjdEVuZCh0aW1pbmcuY29u
bmVjdEVuZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFy
dCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAu
c2V0UmVxdWVzdFN0YXJ0KHRpbWluZy5yZXF1ZXN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAg
ICAgIC5zZXRSZXNwb25zZVN0YXJ0KHRpbWluZy5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygp
KQotICAgICAgICAuc2V0UmVzcG9uc2VFbmQodGltaW5nLnJlc3BvbnNlRW5kLm1pbGxpc2Vjb25k
cygpKQorICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBT
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cEVuZCh0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RTdGFy
dCh0aW1pbmctPmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5l
Y3RFbmQodGltaW5nLT5jb25uZWN0RW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0U2Vj
dXJlQ29ubmVjdGlvblN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQorICAgICAgICAuc2V0UmVxdWVzdFN0YXJ0KHRpbWluZy0+cmVxdWVzdFN0YXJ0Lm1p
bGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmctPnJlc3BvbnNl
U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXRSZXNwb25zZUVuZCh0aW1pbmctPnJl
c3BvbnNlRW5kLm1pbGxpc2Vjb25kcygpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC0z
NTEsNyArMzU2LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3Bv
bnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAgICAgLnJlbGVhc2Uo
KTsKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNl
dFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzKCksICpyZXNvdXJjZUxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAKICAgICBpZiAoYXV0byYg
Y2VydGlmaWNhdGVJbmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAg
YXV0byBzZWN1cml0eVBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTZWN1cml0eTo6U2Vj
dXJpdHk6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBhNjhmODQ1MjA3MzY5NzdjOGI5MjE2
NjE2YzVhMTc4ZmJmNTI3NWQ2Li5iMDM4YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUz
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpOZXR3bwogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiwgT3B0aW9uYWw8Y29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jj4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyosIFJlc291cmNlTG9hZGVyJik7CiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IGJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjRlZTVkZGJjODI1
OTI1ZWU1MDQ5MTdlOGUzMzI1YzQxNDY1NGNjMS4uMzc0MjEyODFjZTIyMThkYmY5ZDI1ZDg3NmQ3
NTg2MmY1MDBkZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTYzMCw3ICs2MzAsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byByZXNv
dXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RV
UkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHJlc3BvbnNlLmRlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAg
ICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7
CisgICAgICAgIGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7Cisg
ICAgICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQo
cmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgKnRpbWluZywgcmVz
cG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRv
ckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICAgICAgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICAgICAgZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiNzQ4MmFh
NGFhZTlmZTBiYmE4ZGY5N2I2ZTRjNzVhZDQ0N2M2MmFkLi4xNWMwYTcxOThhYzIyMjBiNzg3ODQ5
MWI5NzYzY2Q3Y2ZkMjcxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTY5MSw3ICs2OTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUK
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGVnYWN5IHBhdGggZm9yIHBsYXRmb3JtcyAoYW5kIFJl
c291cmNlSGFuZGxlIHBhdGhzKSB0aGF0IGRvIG5vdCBwcm92aWRlCiAgICAgICAgIC8vIGNvbXBs
ZXRlIGxvYWQgbWV0cmljcyBpbiBkaWRGaW5pc2hMb2FkLiBJbiB0aG9zZSBjYXNlcywgZmFsbCBi
YWNrIHRvIHRoZSBwb3NzaWJpbGl0eQogICAgICAgICAvLyB0aGF0IHRoZXkgcG9wdWxhdGVkIHBh
cnRpYWwgbG9hZCB0aW1pbmcgaW5mb3JtYXRpb24gb24gdGhlIFJlc291cmNlUmVzcG9uc2UuCi0g
ICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0g
bV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxs
KCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAg
IGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAg
ICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZygqdGltaW5nKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgp
ICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IDRlZmQ1NGUwMmQ2OGZhMzJlNmNlZmYwOWYz
NWU0NGU3NzhhOWQzYmEuLjU2YTc1NmRhYmQ3MGE2ZTk1MzhhMTE3MGM4NWI4MDdjNWI3ZGVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0xMjAsMTQg
KzEyMCwxNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxv
b2t1cFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBi
ZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAi
YmFja2ZpbGwiIHdpdGggZmV0Y2hTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
IDwgMF9tcykKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0
KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNv
bnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCgp
OwogICAgIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdo
ZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4
cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmls
bCIgd2l0aCBkb21haW5Mb29rdXBTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAw
X21zKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE1MiwxOCArMTUyLDIwIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCi0gICAg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3NPck51bGwoKTsKICAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEg
bmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5n
IGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwgd2UgImJh
Y2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9
IHRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgaWYgKCF0aW1pbmcpCisgICAgICAgIHJldHVybiBk
b21haW5Mb29rdXBFbmQoKTsKKyAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29u
bmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0U3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4g
ZG9tYWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MncyBjb25uZWN0
IHBoYXNlIGluY2x1ZGVzIEROUywgaG93ZXZlciBOYXZpZ2F0aW9uIFRpbWluZydzCiAgICAgLy8g
Y29ubmVjdCBwaGFzZSBzaG91bGQgbm90LiBTbyBpZiB0aGVyZSBpcyBETlMgdGltZSwgdHJpbSBp
dCBmcm9tIHRoZSBzdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwX21z
ICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5l
Y3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgaWYgKHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kID49IDBfbXMgJiYgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3Rh
cnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwogCiAg
ICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydChjb25uZWN0U3Rh
cnQpOwogfQpAQCAtMTc0LDE0ICsxNzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpjb25uZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
OworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAvLyBj
b25uZWN0RW5kIHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4K
ICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0
ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0g
ICAgaWYgKHRpbWluZy5jb25uZWN0RW5kIDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1p
bmctPmNvbm5lY3RFbmQgPCAwX21zKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5j
b25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0
YXJ0KHRpbWluZy0+Y29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE5MCwxMiArMTky
LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVj
dGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOwogICAgIAotICAgIGlmICh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMjA0LDEwICsyMDYsMTIgQEAgdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdAog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwogICAgIAotICAg
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlcXVlc3RTdGFydCA9
IDBfbXM7CisgICAgaWYgKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVy
LT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKSkKKyAgICAg
ICAgcmVxdWVzdFN0YXJ0ID0gdGltaW5nLT5yZXF1ZXN0U3RhcnQ7CiAgICAgCi0gICAgQVNTRVJU
KHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMF9tcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRp
bWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKKyAgICBBU1NFUlQo
cmVxdWVzdFN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0ZldGNoU3RhcnQocmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKQEAgLTIxNiwxMCArMjIwLDEy
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgp
IGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiByZXF1ZXN0U3RhcnQoKTsK
IAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlc3BvbnNl
U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9
IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkp
CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7CiAgICAgCi0g
ICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlc3BvbnNlU3RhcnQpOwor
ICAgIEFTU0VSVChyZXNwb25zZVN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQocmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgK
aW5kZXggYTM2ZjM0OTcyNTdkNjg4M2Y1ZWNiOTIxYmNlMmFlMGIzNGQxNmI3MC4uM2M5NDA0Y2Mw
OTIyZTBiM2JlNzNjYmQzNjhiMmI0MjA4Njc3YzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
QEAgLTE4NCw3ICsxODUsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgewogfTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VGltaW5nRGF0YShOU0Rp
Y3Rpb25hcnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworV0VCQ09SRV9FWFBP
UlQgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0
aW1pbmdEYXRhKTsKICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
CmluZGV4IGEzZDRmMDQ0MDU5ZGZkOWE1N2IzMTkyOWRiOGYxMTJjMTVmNjIxMTMuLjE4ZDQ2NzUz
MDE0NmRhNTFkYWJiMzUwYTVmYjY5N2Q0NTRlNjFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKQEAgLTM5LDEx
ICszOSwxMyBAQCBzdGF0aWMgYm9vbCBhcmVDb250ZW50UmFuZ2VWYWx1ZXNWYWxpZChpbnQ2NF90
IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90IGxhc3RCeQogICAgIC8vIG9yIHdob3NlIGluc3Rh
bmNlLWxlbmd0aCB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gaXRzIGxhc3QtYnl0ZS1w
b3MgdmFsdWUsIGlzIGludmFsaWQuCiAgICAgaWYgKGZpcnN0Qnl0ZVBvc2l0aW9uIDwgMCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChmaXJzdEJ5dGVQb3NpdGlvbiA+PSAwKTsK
IAogICAgIGlmIChsYXN0Qnl0ZVBvc2l0aW9uIDwgZmlyc3RCeXRlUG9zaXRpb24pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobGFzdEJ5dGVQb3NpdGlvbiA+PSAwKTsKIAotICAg
IGlmIChpbnN0YW5jZUxlbmd0aCA9PSBQYXJzZWRDb250ZW50UmFuZ2U6OlVua25vd25MZW5ndGgp
CisgICAgaWYgKGluc3RhbmNlTGVuZ3RoID09IFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxl
bmd0aCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbGFzdEJ5dGVQb3NpdGlv
biA8IGluc3RhbmNlTGVuZ3RoOwpAQCAtOTYsNyArOTgsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUNv
bnRlbnRSYW5nZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBpbnQ2NF90JiBmaXJzdEJ5dGVQ
b3NpdAogCiAgICAgU3RyaW5nIGluc3RhbmNlU3RyaW5nID0gaGVhZGVyVmFsdWUuc3Vic3RyaW5n
KGluc3RhbmNlTGVuZ3RoU2VwYXJhdG9yVG9rZW4gKyAxKTsKICAgICBpZiAoaW5zdGFuY2VTdHJp
bmcgPT0gIioiKQotICAgICAgICBpbnN0YW5jZUxlbmd0aCA9IFBhcnNlZENvbnRlbnRSYW5nZTo6
VW5rbm93bkxlbmd0aDsKKyAgICAgICAgaW5zdGFuY2VMZW5ndGggPSBQYXJzZWRDb250ZW50UmFu
Z2U6OnVua25vd25MZW5ndGg7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghaW5zdGFuY2VTdHJp
bmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTEsNyArMTEzLDggQEAgc3RhdGljIGJvb2wgcGFyc2VDb250ZW50
UmFuZ2UoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgaW50NjRfdCYgZmlyc3RCeXRlUG9zaXQK
IAogUGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UoY29uc3QgU3RyaW5nJiBo
ZWFkZXJWYWx1ZSkKIHsKLSAgICBtX2lzVmFsaWQgPSBwYXJzZUNvbnRlbnRSYW5nZShoZWFkZXJW
YWx1ZSwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3RhbmNl
TGVuZ3RoKTsKKyAgICBpZiAoIXBhcnNlQ29udGVudFJhbmdlKGhlYWRlclZhbHVlLCBtX2ZpcnN0
Qnl0ZVBvc2l0aW9uLCBtX2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFuY2VMZW5ndGgpKQorICAg
ICAgICBtX2luc3RhbmNlTGVuZ3RoID0gaW52YWxpZExlbmd0aDsKIH0KIAogUGFyc2VkQ29udGVu
dFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50
NjRfdCBsYXN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKQpAQCAtMTE5LDE0
ICsxMjIsMTUgQEAgUGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UoaW50NjRf
dCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0QnkKICAgICAsIG1fbGFzdEJ5dGVQb3Np
dGlvbihsYXN0Qnl0ZVBvc2l0aW9uKQogICAgICwgbV9pbnN0YW5jZUxlbmd0aChpbnN0YW5jZUxl
bmd0aCkKIHsKLSAgICBtX2lzVmFsaWQgPSBhcmVDb250ZW50UmFuZ2VWYWx1ZXNWYWxpZChtX2Zp
cnN0Qnl0ZVBvc2l0aW9uLCBtX2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFuY2VMZW5ndGgpOwor
ICAgIGlmICghYXJlQ29udGVudFJhbmdlVmFsdWVzVmFsaWQobV9maXJzdEJ5dGVQb3NpdGlvbiwg
bV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3RhbmNlTGVuZ3RoKSkKKyAgICAgICAgbV9pbnN0YW5j
ZUxlbmd0aCA9IGludmFsaWRMZW5ndGg7CiB9CiAKIFN0cmluZyBQYXJzZWRDb250ZW50UmFuZ2U6
OmhlYWRlclZhbHVlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1faXNWYWxpZCkKKyAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGlmIChtX2luc3RhbmNlTGVu
Z3RoID09IFVua25vd25MZW5ndGgpCisgICAgaWYgKG1faW5zdGFuY2VMZW5ndGggPT0gdW5rbm93
bkxlbmd0aCkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImJ5dGVzICIsIG1fZmlyc3RCeXRl
UG9zaXRpb24sICctJywgbV9sYXN0Qnl0ZVBvc2l0aW9uLCAiLyoiKTsKICAgICByZXR1cm4gbWFr
ZVN0cmluZygiYnl0ZXMgIiwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgJy0nLCBtX2xhc3RCeXRlUG9z
aXRpb24sICcvJywgbV9pbnN0YW5jZUxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaAppbmRleCA1YTA3MDRiZDRi
OTZmZGNiYTkwZGMxNGNhNDY2Y2I4ZWZkN2RlNWMwLi5hM2I0YmYzYjcyZDFjY2U4YzAzN2I4YWQw
OTA3MjlhODlmYmU3ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgKQEAgLTIzLDM3ICsyMyw1NCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQYXJzZWRDb250ZW50UmFuZ2VfaAotI2RlZmluZSBQYXJz
ZWRDb250ZW50UmFuZ2VfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFBhcnNlZENvbnRlbnRSYW5nZSB7CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQ2NF90IGludmFsaWRMZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4o
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgdW5rbm93bkxlbmd0aCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgUGFyc2VkQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYpOwotICAgIFBhcnNlZENvbnRlbnRS
YW5nZSgpIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFBhcnNlZENvbnRlbnRSYW5nZShpbnQ2NF90
IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90IGxhc3RCeXRlUG9zaXRpb24sIGludDY0X3QgaW5z
dGFuY2VMZW5ndGgpOworICAgIFBhcnNlZENvbnRlbnRSYW5nZSgpID0gZGVmYXVsdDsKIAotICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQorICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VMZW5ndGggIT0gaW52YWxpZExlbmd0aDsg
fQogICAgIGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0
Qnl0ZVBvc2l0aW9uOyB9CiAgICAgaW50NjRfdCBsYXN0Qnl0ZVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0Qnl0ZVBvc2l0aW9uOyB9CiAgICAgaW50NjRfdCBpbnN0YW5jZUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VMZW5ndGg7IH0KIAorICAgIHN0YXRpYyBQYXJzZWRD
b250ZW50UmFuZ2UgaW52YWxpZFZhbHVlKCkKKyAgICB7CisgICAgICAgIFBhcnNlZENvbnRlbnRS
YW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2UubV9maXJzdEJ5dGVQb3NpdGlvbiA9IGludmFsaWRM
ZW5ndGg7CisgICAgICAgIHJhbmdlLm1fbGFzdEJ5dGVQb3NpdGlvbiA9IGludmFsaWRMZW5ndGg7
CisgICAgICAgIHJhbmdlLm1faW5zdGFuY2VMZW5ndGggPSBpbnZhbGlkTGVuZ3RoOworICAgICAg
ICByZXR1cm4gcmFuZ2U7CisgICAgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGhlYWRl
clZhbHVlKCkgY29uc3Q7CiAKLSAgICBlbnVtIHsgVW5rbm93bkxlbmd0aCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50NjRfdD46Om1heCgpIH07CisgICAgc3RydWN0IE1hcmthYmxlVHJhaXRzIHsK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFBhcnNlZENvbnRlbnRSYW5n
ZSYgcmFuZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhcmFuZ2UuaXNWYWxpZCgp
OworICAgICAgICB9CiAKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGJvb2wgaXNQb3NpdGl2ZShUKTsKKyAgICAgICAgc3RhdGljIFBhcnNlZENvbnRlbnRSYW5nZSBl
bXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFBhcnNlZENvbnRlbnRS
YW5nZTo6aW52YWxpZFZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9OwogCitwcml2YXRlOgogICAg
IGludDY0X3QgbV9maXJzdEJ5dGVQb3NpdGlvbiB7IDAgfTsKICAgICBpbnQ2NF90IG1fbGFzdEJ5
dGVQb3NpdGlvbiB7IDAgfTsKLSAgICBpbnQ2NF90IG1faW5zdGFuY2VMZW5ndGggeyBVbmtub3du
TGVuZ3RoIH07Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OworICAgIGludDY0X3QgbV9p
bnN0YW5jZUxlbmd0aCB7IHVua25vd25MZW5ndGggfTsKIH07CiAKIH0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXgg
NjgwNzQwNGJmZmRhNmY1ZGVkNTkwNTVjZjAxZTJjOWU2YzRiMjVmYy4uMTllMWE2YjdmYmMxOTE0
ZjcxNjczOWY1N2Y4YjZiNjhkZmE3NTY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeS5oIgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtMTMxLDkgKzEzMiw5IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVzb3VyY2VIYW5kbGU+LCBwdWJsaWMgQXV0aGVudGljYXRpb25DCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIHN0YXRpYyB2b2lkIGdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwgTmV0d29ya0xvYWRNZXRy
aWNzJik7CisgICAgc3RhdGljIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGdldENvbm5lY3Rpb25U
aW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIGdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKKyAgICBzdGF0aWMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gZ2V0Q29ubmVjdGlvblRp
bWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICopOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAppbmRleCBlOWFjY2ViZDc3MjBhYzMzYTY4MDg3YjQ5YjBmODJkMDkyYmUyYWQwLi5iYTAy
NDg0MGUwYmYwY2YyMzRmY2FjOWY4MzA4NTllMzYzNzQ2NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApA
QCAtNTUsNyArNTUsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VC
YXNlKCkKICAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihmYWxzZSkKICAgICAs
IG1faGF2ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlcihmYWxzZSkKICAgICAsIG1faXNSZWRpcmVj
dGVkKGZhbHNlKQorICAgICwgbV9pc1JhbmdlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9pc051
bGwodHJ1ZSkKKyAgICAsIG1fdXNlZExlZ2FjeVRMUyhVc2VkTGVnYWN5VExTOjpObykKKyAgICAs
IG1fdGFpbnRpbmcoVGFpbnRpbmc6OkJhc2ljKQorICAgICwgbV9zb3VyY2UoU291cmNlOjpVbmtu
b3duKQorICAgICwgbV90eXBlKFR5cGU6OkRlZmF1bHQpCiB7CiB9CiAKQEAgLTcyLDcgKzc3LDEy
IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiAgICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZp
ZWRIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRDb250ZW50UmFuZ2VIZWFkZXIoZmFs
c2UpCiAgICAgLCBtX2lzUmVkaXJlY3RlZChmYWxzZSkKKyAgICAsIG1faXNSYW5nZVJlcXVlc3Rl
ZChmYWxzZSkKICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICwgbV91c2VkTGVnYWN5VExTKFVz
ZWRMZWdhY3lUTFM6Ok5vKQorICAgICwgbV90YWludGluZyhUYWludGluZzo6QmFzaWMpCisgICAg
LCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCisgICAgLCBtX3R5cGUoVHlwZTo6RGVmYXVsdCkK
IHsKIH0KIApAQCAtOTAsNyArMTAwLDggQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OkNyb3NzVGhy
ZWFkRGF0YSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhKCkgY28KICAgICBk
YXRhLmh0dHBWZXJzaW9uID0gaHR0cFZlcnNpb24oKS5pc29sYXRlZENvcHkoKTsKIAogICAgIGRh
dGEuaHR0cEhlYWRlckZpZWxkcyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5pc29sYXRlZENvcHkoKTsK
LSAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmlzb2xh
dGVkQ29weSgpOworICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAgZGF0YS5u
ZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy0+aXNvbGF0ZWRDb3B5KCk7
CiAgICAgZGF0YS50eXBlID0gbV90eXBlOwogICAgIGRhdGEudGFpbnRpbmcgPSBtX3RhaW50aW5n
OwogICAgIGRhdGEuaXNSZWRpcmVjdGVkID0gbV9pc1JlZGlyZWN0ZWQ7CkBAIC0xMTMsNyArMTI0
LDEwIEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmZyb21Dcm9zc1Ro
cmVhZERhdGEoQ3Jvc3NUaHJlYWREYXRhJiYgZGF0CiAgICAgcmVzcG9uc2Uuc2V0SFRUUFZlcnNp
b24oZGF0YS5odHRwVmVyc2lvbik7CiAKICAgICByZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVsZHMg
PSBXVEZNb3ZlKGRhdGEuaHR0cEhlYWRlckZpZWxkcyk7Ci0gICAgcmVzcG9uc2UubV9uZXR3b3Jr
TG9hZE1ldHJpY3MgPSBkYXRhLm5ldHdvcmtMb2FkTWV0cmljczsKKyAgICBpZiAoZGF0YS5uZXR3
b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0g
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShXVEZNb3ZlKGRhdGEubmV0d29ya0xvYWRN
ZXRyaWNzLnZhbHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3BvbnNlLm1fbmV0d29ya0xv
YWRNZXRyaWNzID0gbnVsbHB0cjsKICAgICByZXNwb25zZS5tX3R5cGUgPSBkYXRhLnR5cGU7CiAg
ICAgcmVzcG9uc2UubV90YWludGluZyA9IGRhdGEudGFpbnRpbmc7CiAgICAgcmVzcG9uc2UubV9p
c1JlZGlyZWN0ZWQgPSBkYXRhLmlzUmVkaXJlY3RlZDsKQEAgLTgwOCw4ICs4MjIsMTYgQEAgYm9v
bCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBh
LCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChhLmh0
dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChhLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSAhPSBiLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChhLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9IGIubV9uZXR3b3JrTG9hZE1ldHJp
Y3MuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFhLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7CisgICAg
ICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmIubV9uZXR3b3JrTG9hZE1ldHJp
Y3MuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2Ug
aWYgKCFiLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7CisgICAgICAgICAgICBpZiAoTmV0d29ya0xv
YWRNZXRyaWNzKCkgIT0gKmEubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCphLm1fbmV0d29ya0xvYWRN
ZXRyaWNzLmdldCgpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggODg5NDQxNmJlM2I2MTdm
MWY3NzM2ZDg5OGVhYzNlOGQ5MTM1NDJmZC4uZGI1ODNlZWUyZTBmNDlkYTVkZTY5NjQ0NGYwZjNj
NjIyYjQxNTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhU
VFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRl
ICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8
d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogYm9vbCBp
c1NjcmlwdEFsbG93ZWRCeU5vc25pZmYoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiBlbnVt
IGNsYXNzIFVzZWRMZWdhY3lUTFMgOiBib29sIHsgTm8sIFllcyB9Oworc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUyA9IDE7CitzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHVuc2lnbmVkPihVc2VkTGVnYWN5VExTOjpZZXMpIDw9ICgoMVUgPDwgYml0V2lk
dGhPZlVzZWRMZWdhY3lUTFMpIC0gMSkpOwogCiAvLyBEbyBub3QgdXNlIHRoaXMgY2xhc3MgZGly
ZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzb3VyY2VSZXNwb25zZSBpbnN0ZWFkCiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZSB7CkBAIC02OCw3ICs3MSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlIHsKICAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0OwogICAgICAgICBTdHJpbmcg
aHR0cFZlcnNpb247CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgaHR0cEhlYWRlckZpZWxkczsKLSAg
ICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljczsKKyAgICAgICAgT3B0
aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBuZXR3b3JrTG9hZE1ldHJpY3M7CiAgICAgICAgIFR5
cGUgdHlwZTsKICAgICAgICAgVGFpbnRpbmcgdGFpbnRpbmc7CiAgICAgICAgIGJvb2wgaXNSZWRp
cmVjdGVkOwpAQCAtMTUwLDYgKzE1Myw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsK
ICAgICBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5nZSgpIGNvbnN0OwogCiAg
ICAgZW51bSBjbGFzcyBTb3VyY2UgOiB1aW50OF90IHsgVW5rbm93biwgTmV0d29yaywgRGlza0Nh
Y2hlLCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24sIE1lbW9yeUNhY2hlLCBNZW1vcnlDYWNoZUFm
dGVyVmFsaWRhdGlvbiwgU2VydmljZVdvcmtlciwgQXBwbGljYXRpb25DYWNoZSwgRE9NQ2FjaGUs
IEluc3BlY3Rvck92ZXJyaWRlIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRX
aWR0aE9mU291cmNlID0gNDsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVk
PihTb3VyY2U6Okluc3BlY3Rvck92ZXJyaWRlKSA8PSAoKDFVIDw8IGJpdFdpZHRoT2ZTb3VyY2Up
IC0gMSkpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlIHNvdXJjZSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U291cmNlKFNvdXJjZSBzb3VyY2UpCiAgICAgewpAQCAtMTYwLDcgKzE2NiwxNiBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGVsaW1pbmF0ZWQgZnJvbSBSZXNvdXJjZVJlc3BvbnNlLgogICAgIC8vIE5ldHdvcmsgbG9h
ZGluZyBtZXRyaWNzIHNob3VsZCBiZSBkZWxpdmVyZWQgdmlhIGRpZEZpbmlzaExvYWQKICAgICAv
LyBhbmQgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBSZXNvdXJjZVJlc3BvbnNlLgotICAgIE5l
dHdvcmtMb2FkTWV0cmljcyYgZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IHsg
cmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9CisgICAgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzKiBkZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAgICAgIHJldHVybiBtX25l
dHdvcmtMb2FkTWV0cmljcy5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHZvaWQgc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRN
ZXRyaWNzPiYmIG1ldHJpY3MpCisgICAgeworICAgICAgICBtX25ldHdvcmtMb2FkTWV0cmljcyA9
IFdURk1vdmUobWV0cmljcyk7CisgICAgfQogCiAgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ug
c3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIHByb3ZpZGUgcGxhdGZvcm0tc3Bl
Y2lmaWMgbWVtb3J5IHVzYWdlIGluZm9ybWF0aW9uCiAgICAgdW5zaWduZWQgbWVtb3J5VXNhZ2Uo
KSBjb25zdApAQCAtMjIyLDcgKzIzNyw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsK
ICAgICBBdG9tU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgQXRvbVN0cmluZyBtX2h0dHBW
ZXJzaW9uOwogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwotICAgIG11dGFi
bGUgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOworICAgIEJveDxOZXR3
b3JrTG9hZE1ldHJpY3M+IG1fbmV0d29ya0xvYWRNZXRyaWNzOwogCiAgICAgbXV0YWJsZSBPcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCkBAIC0yNDEsMTggKzI1
NiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgbXV0YWJsZSBib29sIG1f
aGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1faGF2
ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlciA6IDE7CiAgICAgYm9vbCBtX2lzUmVkaXJlY3RlZCA6
IDE7CisgICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgOiAxOwogcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9pc051bGwgOiAxOwotCisgICAgdW5zaWduZWQgbV9pbml0TGV2ZWwgOiAzOyAvLyBDb250
cm9sbGVkIGJ5IFJlc291cmNlUmVzcG9uc2UuCisgICAgbXV0YWJsZSBVc2VkTGVnYWN5VExTIG1f
dXNlZExlZ2FjeVRMUyA6IGJpdFdpZHRoT2ZVc2VkTGVnYWN5VExTOwogcHJpdmF0ZToKLSAgICBT
b3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsKLSAgICBUeXBlIG1fdHlwZSB7IFR5
cGU6OkRlZmF1bHQgfTsKLSAgICBUYWludGluZyBtX3RhaW50aW5nIHsgVGFpbnRpbmc6OkJhc2lj
IH07Ci0gICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgeyBmYWxzZSB9OwotCisgICAgVGFpbnRp
bmcgbV90YWludGluZyA6IGJpdFdpZHRoT2ZUYWludGluZzsKKyAgICBTb3VyY2UgbV9zb3VyY2Ug
OiBiaXRXaWR0aE9mU291cmNlOworICAgIFR5cGUgbV90eXBlIDogYml0V2lkdGhPZlR5cGU7CiBw
cm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKLSAgICBtdXRhYmxl
IFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIHsgVXNlZExlZ2FjeVRMUzo6Tm8gfTsKIH07
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNv
bXBhcmUoYSwgYik7IH0KQEAgLTI3Niw3ICsyOTAsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gcHV0IHRoZSBuZXR3b3JrTG9hZE1ldHJpY3MgaW5mbwogICAgIC8vIGludG8gdGhlIGRp
c2sgY2FjaGUsIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciB1c2UgdGhlIG9sZCBpbmZvLgotICAgIGlm
IChFbmNvZGVyOjppc0lQQ0VuY29kZXIpCisgICAgaWYgY29uc3RleHByIChFbmNvZGVyOjppc0lQ
Q0VuY29kZXIpCiAgICAgICAgIGVuY29kZXIgPDwgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CiAKICAg
ICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CkBAIC0zMTgsMjQgKzMzMiwzNCBAQCBib29s
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VS
ZXNwb25zZUJhc2UmIHJlc3BvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9o
dHRwSGVhZGVyRmllbGRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBuZXR3
b3JrTG9hZE1ldHJpY3MgaW5mbyBpcyBvbmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9yZWQg
aW4gZGlzayBjYWNoZS4KLSAgICBpZiAoRGVjb2Rlcjo6aXNJUENEZWNvZGVyICYmICFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcykpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiBjb25zdGV4cHIgKERlY29kZXI6OmlzSVBDRGVjb2RlcikgeworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXNwb25zZS5tX2h0dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9jZXJ0aWZpY2F0ZUluZm8pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3Vy
Y2UpKQorICAgIFNvdXJjZSBzb3VyY2UgPSBTb3VyY2U6OlVua25vd247CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0oc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3BvbnNlLm1fdHlwZSkpCisgICAgcmVzcG9uc2UubV9zb3Vy
Y2UgPSBzb3VyY2U7CisgICAgVHlwZSB0eXBlID0gVHlwZTo6RGVmYXVsdDsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3BvbnNlLm1fdGFpbnRpbmcpKQorICAgIHJlc3BvbnNlLm1f
dHlwZSA9IHR5cGU7CisgICAgVGFpbnRpbmcgdGFpbnRpbmcgPSBUYWludGluZzo6QmFzaWM7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odGFpbnRpbmcpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmVzcG9uc2UubV90YWludGluZyA9IHRhaW50aW5nOwogICAgIGJvb2wgaXNSZWRp
cmVjdGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBpc1Jl
ZGlyZWN0ZWQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3VzZWRMZWdhY3lU
TFMpKQorICAgIFVzZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5v
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlZExlZ2FjeVRMUykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwog
ICAgIGJvb2wgaXNSYW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXNSYW5nZVJlcXVlc3RlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5k
ZXggYTlmMzlmMzkzMDEyOGE1MzMzNDA2MWM1Y2M0MGJkZjk0OWEwMzA3MC4uMmFjN2VkYmZhOTc5
Y2RhOTZjMjJjZjU2Y2I3MjFmMzI5MDJjNjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTM5LDMwICszOSwz
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGlj
IFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkK
LSAgICAgICAgOiBtX2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgeworICAgICAgICBtX2luaXRM
ZXZlbCA9IEFsbEZpZWxkczsKICAgICB9CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotICAgICAgICA6
IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgICAgICwgbV9jZlJlc3BvbnNlKGNmUmVz
cG9uc2UpCisgICAgICAgIDogbV9jZlJlc3BvbnNlKGNmUmVzcG9uc2UpCiAgICAgeworICAgICAg
ICBtX2luaXRMZXZlbCA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgIG1faXNOdWxsID0gIWNmUmVz
cG9uc2U7CiAgICAgfQogI2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2Ug
Km5zUmVzcG9uc2UpCi0gICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAg
ICAgLCBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKKyAgICAgICAgOiBtX25zUmVzcG9uc2UobnNS
ZXNwb25zZSkKICAgICB7CisgICAgICAgIG1faW5pdExldmVsID0gVW5pbml0aWFsaXplZDsKICAg
ICAgICAgbV9pc051bGwgPSAhbnNSZXNwb25zZTsKICAgICB9CiAjZW5kaWYKIAogICAgIFJlc291
cmNlUmVzcG9uc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcg
bG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogICAg
ICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3Ro
LCB0ZXh0RW5jb2RpbmdOYW1lKQotICAgICAgICAsIG1faW5pdExldmVsKEFsbEZpZWxkcykKICAg
ICB7CisgICAgICAgIG1faW5pdExldmVsID0gQWxsRmllbGRzOwogICAgIH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpAQCAtMTA2LDggKzEwNiw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBw
dWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1D
b21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGIpOwogCi0gICAgdW5zaWduZWQgbV9pbml0TGV2ZWwgOiAzOwotCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgYm9vbCBtX2lzUXVpY2tMb29rIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJp
Y3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQppbmRleCBmYmI4ZDY4MDg4YWRkYmJjMGI2ODcwMTJmOGQ0MTBiYmUzOTBkY2Ix
Li45ZGFmZjdlOTdmMThmNWYwMjE5ZWVmMGM2YTJjZjJmZWMxNDE1NjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2Fk
TWV0cmljcy5tbQpAQCAtMzcsMTAgKzM3LDEyIEBAIHN0YXRpYyBkb3VibGUgdGltaW5nVmFsdWUo
TlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBOU1N0cmluZyAqa2V5KQogICAgIHJldHVybiAwLjA7
CiB9CiAgICAgCi12b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwg
TmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcpCitCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBjb3B5
VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEpCiB7CiAgICAgaWYgKCF0aW1pbmdE
YXRhKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQm94
PE5ldHdvcmtMb2FkTWV0cmljcz4gdGltaW5nID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNy
ZWF0ZSgpOwogCiAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0aW1lIGlu
IG1vbm90b25pYyB0aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlz
IHRpbWUKICAgICAvLyBhbmQgb25seSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aW1lcyBhcmUg
c3RvcmVkLgpAQCAtNTQsMTUgKzU2LDE3IEBAIHZvaWQgY29weVRpbWluZ0RhdGEoTlNEaWN0aW9u
YXJ5ICp0aW1pbmdEYXRhLCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZykKICAgICBkb3VibGUg
cmVxdWVzdFN0YXJ0ID0gdGltaW5nVmFsdWUodGltaW5nRGF0YSwgQCJfa0NGTlRpbWluZ0RhdGFS
ZXF1ZXN0U3RhcnQiKTsKICAgICBkb3VibGUgcmVzcG9uc2VTdGFydCA9IHRpbWluZ1ZhbHVlKHRp
bWluZ0RhdGEsIEAiX2tDRk5UaW1pbmdEYXRhUmVzcG9uc2VTdGFydCIpOwogCi0gICAgdGltaW5n
LmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8PSAwID8gLTEg
OiBkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuZG9tYWlu
TG9va3VwRW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0gMCA/IC0xIDogZG9tYWluTG9v
a3VwRW5kIC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5jb25uZWN0U3RhcnQgPSBTZWNv
bmRzKGNvbm5lY3RTdGFydCA8PSAwID8gLTEgOiBjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFy
dCk7Ci0gICAgdGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IFNlY29uZHMoc2VjdXJlQ29u
bmVjdGlvblN0YXJ0IDw9IDAgPyAtMSA6IHNlY3VyZUNvbm5lY3Rpb25TdGFydCAtIHJlZmVyZW5j
ZVN0YXJ0KTsKLSAgICB0aW1pbmcuY29ubmVjdEVuZCA9IFNlY29uZHMoY29ubmVjdEVuZCA8PSAw
ID8gLTEgOiBjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5yZXF1ZXN0
U3RhcnQgPSBTZWNvbmRzKHJlcXVlc3RTdGFydCA8PSAwID8gMCA6IHJlcXVlc3RTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcucmVzcG9uc2VTdGFydCA9IFNlY29uZHMocmVzcG9u
c2VTdGFydCA8PSAwID8gMCA6IHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAg
dGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3RhcnQgPD0g
MCA/IC0xIDogZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5n
LT5kb21haW5Mb29rdXBFbmQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZCA8PSAwID8gLTEgOiBk
b21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5jb25uZWN0U3Rh
cnQgPSBTZWNvbmRzKGNvbm5lY3RTdGFydCA8PSAwID8gLTEgOiBjb25uZWN0U3RhcnQgLSByZWZl
cmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRz
KHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
LSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5jb25uZWN0RW5kID0gU2Vjb25kcyhjb25u
ZWN0RW5kIDw9IDAgPyAtMSA6IGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGlt
aW5nLT5yZXF1ZXN0U3RhcnQgPSBTZWNvbmRzKHJlcXVlc3RTdGFydCA8PSAwID8gMCA6IHJlcXVl
c3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSBT
ZWNvbmRzKHJlc3BvbnNlU3RhcnQgPD0gMCA/IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNl
U3RhcnQpOwogCiAgICAgLy8gTk9URTogcmVzcG9uc2VFbmQgaXMgbm90IHBvcHVsYXRlZCBpbiB0
aGlzIGNvZGUgcGF0aC4KKworICAgIHJldHVybiB0aW1pbmc7CiB9CiAgICAgCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCmluZGV4IDAzZmEyNjg3ZjY4MTgxMzQxNDFkMWM2OTUxOGJiODdmODgwY2FiMjMuLjc2
N2M1Nzk0OTk5Yzk0NjExODBiY2ZlZjBjMmExOTIyZmExMDcyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CkBAIC02NTUsOSArNjU1LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDaGFsbGVu
Z2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGMKICAgICBjbGVhckF1
dGhlbnRpY2F0aW9uKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25U
aW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgTmV0d29ya0xvYWRNZXRyaWNz
JiB0aW1pbmcpCitCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uKQogewotICAgIGNv
cHlUaW1pbmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSwgdGltaW5nKTsKKyAgICByZXR1
cm4gY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDgzMGVkMDY3NDA2ZTU4MTk1MzUz
NjE1ZjdmMjYzYTJkYWEzMzAxMjIuLjE5ZTYyMDU4MGI3NjgyZjg2ZTcyY2Q5M2I3ZDRmZDkzMTll
YWJjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTI1Miw3ICsyNTIsNyBAQCAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZVJlc3BvbnNlOihO
U1VSTFJlc3BvbgogCiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzb3VyY2VSZXNwb25zZShy
LmdldCgpKTsKICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNw
b25zZTo6U291cmNlOjpOZXR3b3JrKTsKLSAgICAgICAgUmVzb3VyY2VIYW5kbGU6OmdldENvbm5l
Y3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24uZ2V0KCksIHJlc291cmNlUmVzcG9uc2UuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRE
ZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9u
VGltaW5nRGF0YShjb25uZWN0aW9uLmdldCgpKSk7CiAKICAgICAgICAgbV9oYW5kbGUtPmRpZFJl
Y2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCBbc2VsZiwgcHJvdGVjdGVk
U2VsZiA9IFdURk1vdmUocHJvdGVjdGVkU2VsZildIHsKICAgICAgICAgICAgIG1fc2VtYXBob3Jl
LnNpZ25hbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDJhMzU5MjQyYTdiMzc3YjgwYWI2MTM5
MjQ5NzdhOTVjZWY2ZGE5MDAuLmI5ZjAxNTQxZWUzYjJhNTRiNGEzNjVjNGI4MDM1NDcxNGVmZTE4
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTg0OSw3ICs4NDksNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopZGF0YQogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbm5vdCBiZSBlbGltaW5hdGVk
IHVudGlsIG90aGVyIGNvZGUgbm8gbG9uZ2VyIHJlbGllcyBvbiBSZXNvdXJjZVJlc3BvbnNlJ3MK
ICAgICAgICAgLy8gTmV0d29ya0xvYWRNZXRyaWNzLiBGb3IgZXhhbXBsZSwgUGVyZm9ybWFuY2VU
aW1pbmcuCi0gICAgICAgIGNvcHlUaW1pbmdEYXRhKFtkYXRhVGFzayBfdGltaW5nRGF0YV0sIHJl
c291cmNlUmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAg
cmVzb3VyY2VSZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKFdlYkNvcmU6
OmNvcHlUaW1pbmdEYXRhKFtkYXRhVGFzayBfdGltaW5nRGF0YV0pKTsKIAogICAgICAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc291
cmNlUmVzcG9uc2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5
LCB0YXNrSWRlbnRpZmllcl0oV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCmluZGV4IDllNDE5MTY3NGEwNTU1NDZjNzliMWE2ODc2NzliMTIyNjAx
ZjEzNDcuLmIyZGQ5ZTUzNjYwNmExZGFkMDE1N2Y3YjgwZjBhNmJhNzZkZGVhMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHAKQEAgLTM2NywxNiArMzY3LDE3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKQogewogICAgIEFTU0VSVCghbV9yZXNwb25z
ZS5pc051bGwoKSk7CiAKKyAgICBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiB0aW1pbmcgPSBCb3g8
TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKCk7CisgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0
ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKKyAgICB0aW1pbmctPmRvbWFp
bkxvb2t1cFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQ7Cisg
ICAgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5M
b29rdXBFbmQ7CisgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmlj
cy5jb25uZWN0U3RhcnQ7CisgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBtX25l
dHdvcmtMb2FkTWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7CisgICAgdGltaW5nLT5jb25u
ZWN0RW5kID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdEVuZDsKKyAgICB0aW1pbmctPnJl
cXVlc3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydDsKKyAgICB0aW1p
bmctPnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0Owog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIG5vYm9keSBkZXBlbmRzIG9uIGRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3MuCi0gICAgTmV0d29ya0xvYWRNZXRyaWNzJiBkZXByZWNhdGVk
UmVzcG9uc2VNZXRyaWNzID0gbV9yZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNz
KCk7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXNwb25zZVN0YXJ0ID0gbV9uZXR3
b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRy
aWNzLmRvbWFpbkxvb2t1cFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3Vw
U3RhcnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5kb21haW5Mb29rdXBFbmQgPSBt
X25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBFbmQ7Ci0gICAgZGVwcmVjYXRlZFJlc3Bv
bnNlTWV0cmljcy5jb25uZWN0U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0U3Rh
cnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQg
PSBtX25ldHdvcmtMb2FkTWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7Ci0gICAgZGVwcmVj
YXRlZFJlc3BvbnNlTWV0cmljcy5jb25uZWN0RW5kID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29u
bmVjdEVuZDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlcXVlc3RTdGFydCA9IG1f
bmV0d29ya0xvYWRNZXRyaWNzLnJlcXVlc3RTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VN
ZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0
OworICAgIG1fcmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhXVEZNb3Zl
KHRpbWluZykpOwogCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UobV9y
ZXNwb25zZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CiAgICAgICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxl
dGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRl
eCA5YWNkN2ZkYWU0NjAyZmJlZTc1M2Q1OGRlNzRiOTEwZjEyNTVhYTljLi41OGM0NTY0Njg4Yzhm
M2YyZWFjMWFjNDcwMTgyYjg1YWZhZGZjNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8
d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgpAQCAtMTIzLDYgKzEyNCw1NCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25hbDxUPj4gewog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEJv
eDxUPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBC
b3g8VD4mIGJveCkKKyAgICB7CisgICAgICAgIGlmICghYm94KSB7CisgICAgICAgICAgICBlbmNv
ZGVyIDw8IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOworICAgICAgICBlbmNvZGVyIDw8ICpib3guZ2V0KCk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEJveDxUPiYgYm94KQor
ICAgIHsKKyAgICAgICAgYm9vbCBpc0VuZ2FnZWQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXNFbmdhZ2VkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAo
IWlzRW5nYWdlZCkgeworICAgICAgICAgICAgYm94ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgQm94PFQ+IHZhbHVlID0gQm94PFQ+Ojpj
cmVhdGUoKTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqdmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGJveCA9IFdURk1vdmUodmFsdWUpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8Qm94PFQ+PiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRW5n
YWdlZDsKKyAgICAgICAgZGVjb2RlciA+PiBpc0VuZ2FnZWQ7CisgICAgICAgIGlmICghaXNFbmdh
Z2VkKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCppc0Vu
Z2FnZWQpIHsKKyAgICAgICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVlOworICAgICAgICAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKKyAgICAgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxCb3g8VD4+
KEJveDxUPjo6Y3JlYXRlKFdURk1vdmUoKnZhbHVlKSkpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBPcHRpb25hbDxCb3g8VD4+KEJveDxUPihudWxscHRyKSk7CisgICAgfQorfTsKKwogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpw
YWlyPFQsIFU+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IHN0ZDo6cGFpcjxULCBVPiYgcGFpcikKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390738</attachid>
            <date>2020-02-14 01:06:53 -0800</date>
            <delta_ts>2020-02-14 01:15:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214010652.patch</filename>
            <type>text/plain</type>
            <size>46760</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMTExMDNmOGMzYTM4ODM4NmQwZDIxNDU0MTE2NDg0
NzA2ZTUzMDhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorCiAyMDIwLTAyLTEy
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBS
ZW1vdmUgTGluZUxheW91dENvbnRleHQ6Om1fcGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMWQ2YWIxMDRmOTFhNzNhYmMzMjcyMGMxOTBjYWU2N2MxNmM0Mjk3MC4uNmFhNTM4ZGI5
ZmMxNTVmNTI3MTQ3MDRhODNjM2JiZDQxYzliZTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBzaG91bGQgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIFJlc291
cmNlUmVzcG9uc2UgaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQXJndW1lbnRDb2RlciBzdXBwb3J0IGZvciBCb3g8VD4uCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEJveDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+
Pjo6ZGVjb2RlKToKKwogMjAyMC0wMi0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU2MDEwLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDNlMmZhYWEzYjU4OTgzNzhlYTg0MDgwYzM4YmRkYTg0OGQyMTdmZTku
LmVlOWVkYjMwZGQ3YjM0NjFjNGQ0OTFkZmFmNzkyOTAxMWQ0OThiYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTIxMywyNyArMjEzLDMyIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWls
ZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICByZXR1
cm4gaGVhZGVyc09iamVjdDsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OlJlc291cmNlVGltaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGlt
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nLCBSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
cikKIHsKICAgICBhdXRvJiBsb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkZXIubG9hZFRpbWluZygp
OwogCiAgICAgYXV0byBlbGFwc2VkVGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9uaWNUaW1l
JiB0aW1lKSB7CiAgICAgICAgIHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRj
aCgpLT5lbGFwc2VkVGltZVNpbmNlKHRpbWUpLnNlY29uZHMoKTsKICAgICB9OworICAgIE9wdGlv
bmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgaWYgKCF0aW1pbmcpIHsKKyAgICAg
ICAgZW1wdHkuZW1wbGFjZSgpOworICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoZWxhcHNlZFRpbWVTaW5jZShs
b2FkVGltaW5nLnN0YXJ0VGltZSgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0U3RhcnQoZWxhcHNl
ZFRpbWVTaW5jZShsb2FkVGltaW5nLnJlZGlyZWN0U3RhcnQoKSkpCiAgICAgICAgIC5zZXRSZWRp
cmVjdEVuZChlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcucmVkaXJlY3RFbmQoKSkpCiAgICAg
ICAgIC5zZXRGZXRjaFN0YXJ0KGVsYXBzZWRUaW1lU2luY2UobG9hZFRpbWluZy5mZXRjaFN0YXJ0
KCkpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwRW5kKHRpbWluZy5k
b21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRDb25uZWN0U3RhcnQo
dGltaW5nLmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RF
bmQodGltaW5nLmNvbm5lY3RFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRTZWN1cmVD
b25uZWN0aW9uU3RhcnQodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydC5taWxsaXNlY29uZHMo
KSkKLSAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQotICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmcucmVzcG9uc2VTdGFydC5t
aWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFJlc3BvbnNlRW5kKHRpbWluZy5yZXNwb25zZUVu
ZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cFN0YXJ0KHRpbWluZy0+
ZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXREb21haW5Mb29r
dXBFbmQodGltaW5nLT5kb21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5z
ZXRDb25uZWN0U3RhcnQodGltaW5nLT5jb25uZWN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAg
ICAgIC5zZXRDb25uZWN0RW5kKHRpbWluZy0+Y29ubmVjdEVuZC5taWxsaXNlY29uZHMoKSkKKyAg
ICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmctPnJl
cXVlc3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlc3BvbnNlU3RhcnQodGlt
aW5nLT5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VF
bmQodGltaW5nLT5yZXNwb25zZUVuZC5taWxsaXNlY29uZHMoKSkKICAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIApAQCAtMzUxLDcgKzM1Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNwb25zZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIHJlc3Bv
bnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcocmVzcG9uc2UuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLCAqcmVzb3VyY2VMb2FkZXIpKTsKKyAgICAgICAgcmVz
cG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCksICpyZXNvdXJjZUxvYWRlcikpOwogCiAg
ICAgaWYgKGF1dG8mIGNlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygp
KSB7CiAgICAgICAgIGF1dG8gc2VjdXJpdHlQYXlsb2FkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
U2VjdXJpdHk6OlNlY3VyaXR5OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggYTY4Zjg0NTIw
NzM2OTc3YzhiOTIxNjYxNmM1YTE3OGZiZjUyNzVkNi4uYjAzOGExODc5YzA0M2FhMTdkYWU5NzQy
NTY5M2YyOWJlNDJlMzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xh
c3MgSW5zcGVjdG9yTmV0d29ya0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6TmV0d28KICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJ
ZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCos
IE9wdGlvbmFsPGNvbnN0IFJlc291cmNlUmVxdWVzdCY+ID0gV1RGOjpudWxsb3B0KTsKLSAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2Jq
ZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyJik7
CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqLCBSZXNvdXJjZUxv
YWRlciYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBi
dWlsZE9iamVjdEZvck1ldHJpY3MoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNl
PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDY0ZWU1ZGRiYzgyNTkyNWVlNTA0OTE3ZThlMzMyNWM0MTQ2NTRjYzEuLjM3NDIxMjgxY2UyMjE4
ZGJmOWQyNWQ4NzZkNzU4NjJmNTAwZGQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02MzAsNyArNjMwLDEzIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3Vz
TG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCByZXNwb25z
ZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdp
bigpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1l
dHJpY3M+IGVtcHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHku
ZW1wbGFjZSgpOworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAg
IH0KKyAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3lu
Y2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcs
ICp0aW1pbmcsIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcikKICAgICAg
ICAgICAgIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChyZXNvdXJjZVRpbWluZyk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggYjc0ODJhYTRhYWU5ZmUwYmJhOGRmOTdiNmU0Yzc1YWQ0NDdjNjJhZC4uMTVjMGE3MTk4
YWMyMjIwYjc4Nzg0OTFiOTc2M2NkN2NmZDI3MWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02OTEsNyArNjkxLDEzIEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1lCiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxlZ2FjeSBwYXRoIGZvciBwbGF0
Zm9ybXMgKGFuZCBSZXNvdXJjZUhhbmRsZSBwYXRocykgdGhhdCBkbyBub3QgcHJvdmlkZQogICAg
ICAgICAvLyBjb21wbGV0ZSBsb2FkIG1ldHJpY3MgaW4gZGlkRmluaXNoTG9hZC4gSW4gdGhvc2Ug
Y2FzZXMsIGZhbGwgYmFjayB0byB0aGUgcG9zc2liaWxpdHkKICAgICAgICAgLy8gdGhhdCB0aGV5
IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQgdGltaW5nIGluZm9ybWF0aW9uIG9uIHRoZSBSZXNvdXJj
ZVJlc3BvbnNlLgotICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyhtX3Jlc291cmNlLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGVt
cHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHkuZW1wbGFjZSgp
OworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcoKnRpbWluZyk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVz
b3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCA0ZWZkNTRlMDJkNjhm
YTMyZTZjZWZmMDlmMzVlNDRlNzc4YTlkM2JhLi41NmE3NTZkYWJkNzBhNmU5NTM4YTExNzBjODVi
ODA3YzViN2RlY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNw
cApAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiBmZXRjaFN0YXJ0KCk7CiAgICAgCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmlj
cygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAv
LyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAg
ICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVz
IG5vIEROUywgd2UgImJhY2tmaWxsIiB3aXRoIGZldGNoU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBTdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5kb21h
aW5Mb29rdXBTdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0
Y2hTdGFydCh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQoKSBjb25zdApAQCAtMTM2LDE0
ICsxMzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5M
b29rdXBFbmQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWlu
TG9va3VwU3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWlu
ZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7Cisg
ICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCku
ZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMg
d2lsbCBiZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBS
YXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5T
LCB3ZSAiYmFja2ZpbGwiIHdpdGggZG9tYWluTG9va3VwU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBFbmQgPCAwX21zKQorICAgIGlmICghdGltaW5nIHx8IHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5k
b21haW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Zl
dGNoU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNTIsMTggKzE1
MiwyMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFy
dCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBF
bmQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwg
YmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNvbm5l
Y3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29rdXBFbmQuCi0gICAgU2Vjb25kcyBj
b25uZWN0U3RhcnQgPSB0aW1pbmcuY29ubmVjdFN0YXJ0OworICAgIGlmICghdGltaW5nKQorICAg
ICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7CisgICAgU2Vjb25kcyBjb25uZWN0U3RhcnQg
PSB0aW1pbmctPmNvbm5lY3RTdGFydDsKICAgICBpZiAoY29ubmVjdFN0YXJ0IDwgMF9tcykKICAg
ICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCiAgICAgLy8gTmV0d29ya0xvYWRNZXRy
aWNzJ3MgY29ubmVjdCBwaGFzZSBpbmNsdWRlcyBETlMsIGhvd2V2ZXIgTmF2aWdhdGlvbiBUaW1p
bmcncwogICAgIC8vIGNvbm5lY3QgcGhhc2Ugc2hvdWxkIG5vdC4gU28gaWYgdGhlcmUgaXMgRE5T
IHRpbWUsIHRyaW0gaXQgZnJvbSB0aGUgc3RhcnQuCi0gICAgaWYgKHRpbWluZy5kb21haW5Mb29r
dXBFbmQgPj0gMF9tcyAmJiB0aW1pbmcuZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQot
ICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmcuZG9tYWluTG9va3VwRW5kOworICAgIGlmICh0
aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA+PSAwX21zICYmIHRpbWluZy0+ZG9tYWluTG9va3VwRW5k
ID4gY29ubmVjdFN0YXJ0KQorICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmctPmRvbWFpbkxv
b2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3Rh
cnQoY29ubmVjdFN0YXJ0KTsKIH0KQEAgLTE3NCwxNCArMTc2LDE0IEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCgpIGNvbnN0CiAgICAgaWYgKCFsb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBjb25uZWN0U3RhcnQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAg
ICAgCiAgICAgLy8gY29ubmVjdEVuZCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3Qg
aXMgbm90IG1hZGUuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVl
IHRoYXQgaW5kaWNhdGVzIG5vIG5ldyBjb25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29u
bmVjdFN0YXJ0LgotICAgIGlmICh0aW1pbmcuY29ubmVjdEVuZCA8IDBfbXMpCisgICAgaWYgKCF0
aW1pbmcgfHwgdGltaW5nLT5jb25uZWN0RW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGNvbm5l
Y3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmcuY29ubmVjdEVuZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxh
dGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmctPmNvbm5lY3RFbmQpOwogfQogCiB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CkBA
IC0xOTAsMTIgKzE5MiwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2Fk
ZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKLSAgICBpZiAodGltaW5nLnNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5zZWN1
cmVDb25uZWN0aW9uU3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QKQEAgLTIwNCwxMCAr
MjA2LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbm5lY3RFbmQo
KTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+
cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vjb25kcyBy
ZXF1ZXN0U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRp
bWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JO
dWxsKCkpCisgICAgICAgIHJlcXVlc3RTdGFydCA9IHRpbWluZy0+cmVxdWVzdFN0YXJ0OwogICAg
IAotICAgIEFTU0VSVCh0aW1pbmcucmVxdWVzdFN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlcXVlc3RTdGFydCk7
CisgICAgQVNTRVJUKHJlcXVlc3RTdGFydCA+PSAwX21zKTsKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlcXVlc3RTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0CkBAIC0y
MTYsMTAgKzIyMCwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
c3BvbnNlU3RhcnQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gcmVx
dWVzdFN0YXJ0KCk7CiAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vj
b25kcyByZXNwb25zZVN0YXJ0ID0gMF9tczsKKyAgICBpZiAoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljc09yTnVsbCgpKQorICAgICAgICByZXNwb25zZVN0YXJ0ID0gdGltaW5nLT5yZXNwb25zZVN0
YXJ0OwogICAgIAotICAgIEFTU0VSVCh0aW1pbmcucmVzcG9uc2VTdGFydCA+PSAwX21zKTsKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5yZXNw
b25zZVN0YXJ0KTsKKyAgICBBU1NFUlQocmVzcG9uc2VTdGFydCA+PSAwX21zKTsKKyAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlc3BvbnNlU3RhcnQpOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5oCmluZGV4IGEzNmYzNDk3MjU3ZDY4ODNmNWVjYjkyMWJjZTJhZTBiMzRkMTZi
NzAuLjNjOTQwNGNjMDkyMmUwYjNiZTczY2JkMzY4YjJiNDIwODY3N2M0OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaApA
QCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFw
LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmg+CkBAIC0xODQsNyArMTg1LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
IHsKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRp
bWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
K1dFQkNPUkVfRVhQT1JUIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNvcHlUaW1pbmdEYXRhKE5T
RGljdGlvbmFyeSAqdGltaW5nRGF0YSk7CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFJhbmdlLmNwcAppbmRleCBhM2Q0ZjA0NDA1OWRmZDlhNTdiMzE5MjlkYjhmMTEyYzE1ZjYy
MTEzLi4xOGQ0Njc1MzAxNDZkYTUxZGFiYjM1MGE1ZmI2OTdkNDU0ZTYxYWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2Uu
Y3BwCkBAIC0zOSwxMSArMzksMTMgQEAgc3RhdGljIGJvb2wgYXJlQ29udGVudFJhbmdlVmFsdWVz
VmFsaWQoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0QnkKICAgICAvLyBv
ciB3aG9zZSBpbnN0YW5jZS1sZW5ndGggdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGl0
cyBsYXN0LWJ5dGUtcG9zIHZhbHVlLCBpcyBpbnZhbGlkLgogICAgIGlmIChmaXJzdEJ5dGVQb3Np
dGlvbiA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoZmlyc3RCeXRlUG9z
aXRpb24gPj0gMCk7CiAKICAgICBpZiAobGFzdEJ5dGVQb3NpdGlvbiA8IGZpcnN0Qnl0ZVBvc2l0
aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGxhc3RCeXRlUG9zaXRpb24g
Pj0gMCk7CiAKLSAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0gUGFyc2VkQ29udGVudFJhbmdlOjpV
bmtub3duTGVuZ3RoKQorICAgIGlmIChpbnN0YW5jZUxlbmd0aCA9PSBQYXJzZWRDb250ZW50UmFu
Z2U6OnVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGxh
c3RCeXRlUG9zaXRpb24gPCBpbnN0YW5jZUxlbmd0aDsKQEAgLTk2LDcgKzk4LDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2VDb250ZW50UmFuZ2UoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgaW50NjRf
dCYgZmlyc3RCeXRlUG9zaXQKIAogICAgIFN0cmluZyBpbnN0YW5jZVN0cmluZyA9IGhlYWRlclZh
bHVlLnN1YnN0cmluZyhpbnN0YW5jZUxlbmd0aFNlcGFyYXRvclRva2VuICsgMSk7CiAgICAgaWYg
KGluc3RhbmNlU3RyaW5nID09ICIqIikKLSAgICAgICAgaW5zdGFuY2VMZW5ndGggPSBQYXJzZWRD
b250ZW50UmFuZ2U6OlVua25vd25MZW5ndGg7CisgICAgICAgIGluc3RhbmNlTGVuZ3RoID0gUGFy
c2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoOwogICAgIGVsc2UgewogICAgICAgICBpZiAo
IWluc3RhbmNlU3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0PigpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDcgKzExMyw4IEBAIHN0YXRpYyBib29s
IHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUsIGludDY0X3QmIGZp
cnN0Qnl0ZVBvc2l0CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKGNv
bnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiB7Ci0gICAgbV9pc1ZhbGlkID0gcGFyc2VDb250ZW50
UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3NpdGlv
biwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFwYXJzZUNvbnRlbnRSYW5nZShoZWFkZXJW
YWx1ZSwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3RhbmNl
TGVuZ3RoKSkKKyAgICAgICAgbV9pbnN0YW5jZUxlbmd0aCA9IGludmFsaWRMZW5ndGg7CiB9CiAK
IFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRl
UG9zaXRpb24sIGludDY0X3QgbGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxlbmd0
aCkKQEAgLTExOSwxNCArMTIyLDE1IEBAIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVu
dFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5CiAgICAgLCBt
X2xhc3RCeXRlUG9zaXRpb24obGFzdEJ5dGVQb3NpdGlvbikKICAgICAsIG1faW5zdGFuY2VMZW5n
dGgoaW5zdGFuY2VMZW5ndGgpCiB7Ci0gICAgbV9pc1ZhbGlkID0gYXJlQ29udGVudFJhbmdlVmFs
dWVzVmFsaWQobV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3Rh
bmNlTGVuZ3RoKTsKKyAgICBpZiAoIWFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmlyc3RC
eXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisgICAg
ICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZhbGlkTGVuZ3RoOwogfQogCiBTdHJpbmcgUGFyc2Vk
Q29udGVudFJhbmdlOjpoZWFkZXJWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzVmFsaWQp
CisgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBpZiAo
bV9pbnN0YW5jZUxlbmd0aCA9PSBVbmtub3duTGVuZ3RoKQorICAgIGlmIChtX2luc3RhbmNlTGVu
Z3RoID09IHVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRlcyAi
LCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgIi8qIik7CiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoImJ5dGVzICIsIG1fZmlyc3RCeXRlUG9zaXRpb24sICctJywg
bV9sYXN0Qnl0ZVBvc2l0aW9uLCAnLycsIG1faW5zdGFuY2VMZW5ndGgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgKaW5k
ZXggNWEwNzA0YmQ0Yjk2ZmRjYmE5MGRjMTRjYTQ2NmNiOGVmZDdkZTVjMC4uYTNiNGJmM2I3MmQx
Y2NlOGMwMzdiOGFkMDkwNzI5YTg5ZmJlN2YxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oCkBAIC0yMywzNyArMjMsNTQg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFyc2VkQ29udGVudFJhbmdlX2gK
LSNkZWZpbmUgUGFyc2VkQ29udGVudFJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQYXJzZWRDb250ZW50UmFuZ2UgewogcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgaW50NjRfdCBpbnZhbGlkTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHVua25vd25MZW5n
dGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKKwogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFBhcnNlZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmKTsKLSAgICBQ
YXJzZWRDb250ZW50UmFuZ2UoKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZWRDb250ZW50
UmFuZ2UoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0Qnl0ZVBvc2l0aW9u
LCBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKTsKKyAgICBQYXJzZWRDb250ZW50UmFuZ2UoKSA9IGRl
ZmF1bHQ7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0K
KyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoICE9IGlu
dmFsaWRMZW5ndGg7IH0KICAgICBpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3QgbGFzdEJ5dGVQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3QgaW5z
dGFuY2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoOyB9CiAKKyAgICBz
dGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGludmFsaWRWYWx1ZSgpCisgICAgeworICAgICAgICBQ
YXJzZWRDb250ZW50UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLm1fZmlyc3RCeXRlUG9zaXRp
b24gPSBpbnZhbGlkTGVuZ3RoOworICAgICAgICByYW5nZS5tX2xhc3RCeXRlUG9zaXRpb24gPSBp
bnZhbGlkTGVuZ3RoOworICAgICAgICByYW5nZS5tX2luc3RhbmNlTGVuZ3RoID0gaW52YWxpZExl
bmd0aDsKKyAgICAgICAgcmV0dXJuIHJhbmdlOworICAgIH0KKwogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBoZWFkZXJWYWx1ZSgpIGNvbnN0OwogCi0gICAgZW51bSB7IFVua25vd25MZW5ndGgg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSB9OworICAgIHN0cnVjdCBNYXJr
YWJsZVRyYWl0cyB7CisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBQYXJz
ZWRDb250ZW50UmFuZ2UmIHJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIXJh
bmdlLmlzVmFsaWQoKTsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0YXRpYyBib29sIGlzUG9zaXRpdmUoVCk7CisgICAgICAgIHN0YXRpYyBQYXJzZWRD
b250ZW50UmFuZ2UgZW1wdHlWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBQ
YXJzZWRDb250ZW50UmFuZ2U6OmludmFsaWRWYWx1ZSgpOworICAgICAgICB9CisgICAgfTsKIAor
cHJpdmF0ZToKICAgICBpbnQ2NF90IG1fZmlyc3RCeXRlUG9zaXRpb24geyAwIH07CiAgICAgaW50
NjRfdCBtX2xhc3RCeXRlUG9zaXRpb24geyAwIH07Ci0gICAgaW50NjRfdCBtX2luc3RhbmNlTGVu
Z3RoIHsgVW5rbm93bkxlbmd0aCB9OwotICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKKyAg
ICBpbnQ2NF90IG1faW5zdGFuY2VMZW5ndGggeyB1bmtub3duTGVuZ3RoIH07CiB9OwogCiB9Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCmluZGV4IDY4MDc0MDRiZmZkYTZmNWRlZDU5MDU1Y2YwMWUyYzllNmM0YjI1ZmMuLjE5
ZTFhNmI3ZmJjMTkxNGY3MTY3MzlmNTdmOGI2YjY4ZGZhNzU2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3Rm
L01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTEzMSw5ICsxMzIsOSBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiwgcHVibGljIEF1dGhlbnRpY2F0aW9u
QwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKLSAgICBz
dGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYsIE5l
dHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRpYyBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBn
ZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwogI2Vsc2UKLSAgICBz
dGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKiwgTmV0
d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGljIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqKTsKICNlbmRpZgogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggZTlhY2NlYmQ3NzIwYWMzM2E2ODA4N2I0OWIwZjgyZDA5
MmJlMmFkMC4uYmEwMjQ4NDBlMGJmMGNmMjM0ZmNhYzlmODMwODU5ZTM2Mzc0NjQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAKQEAgLTU1LDcgKzU1LDEyIEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIo
ZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRDb250ZW50UmFuZ2VIZWFkZXIoZmFsc2UpCiAgICAg
LCBtX2lzUmVkaXJlY3RlZChmYWxzZSkKKyAgICAsIG1faXNSYW5nZVJlcXVlc3RlZChmYWxzZSkK
ICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgLCBtX3VzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRM
Uzo6Tm8pCisgICAgLCBtX3RhaW50aW5nKFRhaW50aW5nOjpCYXNpYykKKyAgICAsIG1fc291cmNl
KFNvdXJjZTo6VW5rbm93bikKKyAgICAsIG1fdHlwZShUeXBlOjpEZWZhdWx0KQogewogfQogCkBA
IC03Miw3ICs3NywxMiBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogICAgICwgbV9oYXZlUGFy
c2VkTGFzdE1vZGlmaWVkSGVhZGVyKGZhbHNlKQogICAgICwgbV9oYXZlUGFyc2VkQ29udGVudFJh
bmdlSGVhZGVyKGZhbHNlKQogICAgICwgbV9pc1JlZGlyZWN0ZWQoZmFsc2UpCisgICAgLCBtX2lz
UmFuZ2VSZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2lzTnVsbChmYWxzZSkKKyAgICAsIG1fdXNl
ZExlZ2FjeVRMUyhVc2VkTGVnYWN5VExTOjpObykKKyAgICAsIG1fdGFpbnRpbmcoVGFpbnRpbmc6
OkJhc2ljKQorICAgICwgbV9zb3VyY2UoU291cmNlOjpVbmtub3duKQorICAgICwgbV90eXBlKFR5
cGU6OkRlZmF1bHQpCiB7CiB9CiAKQEAgLTkwLDcgKzEwMCw4IEBAIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpDcm9zc1RocmVhZERhdGEgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNyb3NzVGhyZWFkRGF0
YSgpIGNvCiAgICAgZGF0YS5odHRwVmVyc2lvbiA9IGh0dHBWZXJzaW9uKCkuaXNvbGF0ZWRDb3B5
KCk7CiAKICAgICBkYXRhLmh0dHBIZWFkZXJGaWVsZHMgPSBodHRwSGVhZGVyRmllbGRzKCkuaXNv
bGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2Fk
TWV0cmljcy5pc29sYXRlZENvcHkoKTsKKyAgICBpZiAobV9uZXR3b3JrTG9hZE1ldHJpY3MpCisg
ICAgICAgIGRhdGEubmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MtPmlz
b2xhdGVkQ29weSgpOwogICAgIGRhdGEudHlwZSA9IG1fdHlwZTsKICAgICBkYXRhLnRhaW50aW5n
ID0gbV90YWludGluZzsKICAgICBkYXRhLmlzUmVkaXJlY3RlZCA9IG1faXNSZWRpcmVjdGVkOwpA
QCAtMTEzLDcgKzEyNCwxMCBAQCBSZXNvdXJjZVJlc3BvbnNlIFJlc291cmNlUmVzcG9uc2VCYXNl
Ojpmcm9tQ3Jvc3NUaHJlYWREYXRhKENyb3NzVGhyZWFkRGF0YSYmIGRhdAogICAgIHJlc3BvbnNl
LnNldEhUVFBWZXJzaW9uKGRhdGEuaHR0cFZlcnNpb24pOwogCiAgICAgcmVzcG9uc2UubV9odHRw
SGVhZGVyRmllbGRzID0gV1RGTW92ZShkYXRhLmh0dHBIZWFkZXJGaWVsZHMpOwotICAgIHJlc3Bv
bnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3M7CisgICAg
aWYgKGRhdGEubmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICByZXNwb25zZS5tX25ldHdvcmtM
b2FkTWV0cmljcyA9IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoV1RGTW92ZShkYXRh
Lm5ldHdvcmtMb2FkTWV0cmljcy52YWx1ZSgpKSk7CisgICAgZWxzZQorICAgICAgICByZXNwb25z
ZS5tX25ldHdvcmtMb2FkTWV0cmljcyA9IG51bGxwdHI7CiAgICAgcmVzcG9uc2UubV90eXBlID0g
ZGF0YS50eXBlOwogICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcgPSBkYXRhLnRhaW50aW5nOwogICAg
IHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gZGF0YS5pc1JlZGlyZWN0ZWQ7CkBAIC04MDgsOCAr
ODIyLDE2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzKCkgIT0gYi5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSBiLm1fbmV0
d29ya0xvYWRNZXRyaWNzLmdldCgpKSB7CisgICAgICAgIGlmICghYS5tX25ldHdvcmtMb2FkTWV0
cmljcykgeworICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICpiLm1fbmV0
d29ya0xvYWRNZXRyaWNzLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfSBlbHNlIGlmICghYi5tX25ldHdvcmtMb2FkTWV0cmljcykgeworICAgICAgICAgICAg
aWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICgqYS5t
X25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IDg4
OTQ0MTZiZTNiNjE3ZjFmNzczNmQ4OThlYWMzZThkOTEzNTQyZmQuLmQ1YWYzODhjMzliZWVlYmUy
OTFjNjRkOWNlYWE1MDRmYjg3M2UxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRyaWNz
LmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL0JveC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3NuaWZmKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKIAogZW51bSBjbGFzcyBVc2VkTGVnYWN5VExTIDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhPZlVzZWRMZWdhY3lUTFMgPSAxOworc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVXNlZExlZ2FjeVRMUzo6WWVzKSA8PSAo
KDFVIDw8IGJpdFdpZHRoT2ZVc2VkTGVnYWN5VExTKSAtIDEpKTsKIAogLy8gRG8gbm90IHVzZSB0
aGlzIGNsYXNzIGRpcmVjdGx5LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5zdGVh
ZAogY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewpAQCAtNjgsNyArNzEsNyBAQCBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgICAgIFN0cmluZyBodHRwU3RhdHVzVGV4dDsKICAg
ICAgICAgU3RyaW5nIGh0dHBWZXJzaW9uOwogICAgICAgICBIVFRQSGVhZGVyTWFwIGh0dHBIZWFk
ZXJGaWVsZHM7Ci0gICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3M7
CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gbmV0d29ya0xvYWRNZXRyaWNz
OwogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIFRhaW50aW5nIHRhaW50aW5nOwogICAgICAg
ICBib29sIGlzUmVkaXJlY3RlZDsKQEAgLTE1MCw2ICsxNTMsOSBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlQmFzZSB7CiAgICAgY29uc3QgUGFyc2VkQ29udGVudFJhbmdlJiBjb250ZW50UmFuZ2Uo
KSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIDogdWludDhfdCB7IFVua25vd24sIE5l
dHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uLCBNZW1vcnlDYWNoZSwg
TWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24sIFNlcnZpY2VXb3JrZXIsIEFwcGxpY2F0aW9uQ2Fj
aGUsIERPTUNhY2hlLCBJbnNwZWN0b3JPdmVycmlkZSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgYml0V2lkdGhPZlNvdXJjZSA9IDQ7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oU291cmNlOjpJbnNwZWN0b3JPdmVycmlkZSkgPD0gKCgxVSA8PCBiaXRX
aWR0aE9mU291cmNlKSAtIDEpKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZSBzb3VyY2Uo
KSBjb25zdDsKICAgICB2b2lkIHNldFNvdXJjZShTb3VyY2Ugc291cmNlKQogICAgIHsKQEAgLTE2
MCw3ICsxNjYsMTYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBlbGltaW5hdGVkIGZyb20gUmVzb3VyY2VSZXNwb25zZS4KICAgICAv
LyBOZXR3b3JrIGxvYWRpbmcgbWV0cmljcyBzaG91bGQgYmUgZGVsaXZlcmVkIHZpYSBkaWRGaW5p
c2hMb2FkCiAgICAgLy8gYW5kIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGUgUmVzb3VyY2VSZXNw
b25zZS4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIGRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQorICAgIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyogZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgICAg
ICByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICB2b2lkIHNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoQm94
PE5ldHdvcmtMb2FkTWV0cmljcz4mJiBtZXRyaWNzKQorICAgIHsKKyAgICAgICAgbV9uZXR3b3Jr
TG9hZE1ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOworICAgIH0KIAogICAgIC8vIFRoZSBSZXNv
dXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBwcm92aWRl
IHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1c2FnZSBpbmZvcm1hdGlvbgogICAgIHVuc2lnbmVk
IG1lbW9yeVVzYWdlKCkgY29uc3QKQEAgLTIyMiw3ICsyMzcsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlQmFzZSB7CiAgICAgQXRvbVN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEF0b21T
dHJpbmcgbV9odHRwVmVyc2lvbjsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxk
czsKLSAgICBtdXRhYmxlIE5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsK
KyAgICBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIAogICAg
IG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKIApA
QCAtMjQxLDE4ICsyNTYsMTcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIG11
dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIgOiAxOwogICAgIG11dGFi
bGUgYm9vbCBtX2hhdmVQYXJzZWRDb250ZW50UmFuZ2VIZWFkZXIgOiAxOwogICAgIGJvb2wgbV9p
c1JlZGlyZWN0ZWQgOiAxOworICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIDogMTsKIHByb3Rl
Y3RlZDoKICAgICBib29sIG1faXNOdWxsIDogMTsKLQorICAgIHVuc2lnbmVkIG1faW5pdExldmVs
IDogMzsgLy8gQ29udHJvbGxlZCBieSBSZXNvdXJjZVJlc3BvbnNlLgorICAgIG11dGFibGUgVXNl
ZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lUTFMgOiBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUzsKIHBy
aXZhdGU6Ci0gICAgU291cmNlIG1fc291cmNlIHsgU291cmNlOjpVbmtub3duIH07Ci0gICAgVHlw
ZSBtX3R5cGUgeyBUeXBlOjpEZWZhdWx0IH07Ci0gICAgVGFpbnRpbmcgbV90YWludGluZyB7IFRh
aW50aW5nOjpCYXNpYyB9OwotICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFsc2UgfTsK
LQorICAgIFRhaW50aW5nIG1fdGFpbnRpbmcgOiBiaXRXaWR0aE9mVGFpbnRpbmc7CisgICAgU291
cmNlIG1fc291cmNlIDogYml0V2lkdGhPZlNvdXJjZTsKKyAgICBUeXBlIG1fdHlwZSA6IGJpdFdp
ZHRoT2ZUeXBlOwogcHJvdGVjdGVkOgogICAgIHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAwIH07
Ci0gICAgbXV0YWJsZSBVc2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdhY3lU
TFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CkBAIC0yNzYsNyArMjkwLDcgQEAgdm9pZCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHB1dCB0aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8KICAgICAv
LyBpbnRvIHRoZSBkaXNrIGNhY2hlLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgdXNlIHRoZSBvbGQg
aW5mby4KLSAgICBpZiAoRW5jb2Rlcjo6aXNJUENFbmNvZGVyKQorICAgIGlmIGNvbnN0ZXhwciAo
RW5jb2Rlcjo6aXNJUENFbmNvZGVyKQogICAgICAgICBlbmNvZGVyIDw8IG1fbmV0d29ya0xvYWRN
ZXRyaWNzOwogCiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwpAQCAtMjg1LDcgKzI5
OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIuZW5j
b2RlRW51bShtX3RhaW50aW5nKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwotICAg
IGVuY29kZXIgPDwgbV91c2VkTGVnYWN5VExTOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
VXNlZExlZ2FjeVRMUz4obV91c2VkTGVnYWN5VExTKTsKICAgICBlbmNvZGVyIDw8IG1faXNSYW5n
ZVJlcXVlc3RlZDsKIH0KIApAQCAtMzE4LDI0ICszMzIsMzQgQEAgYm9vbCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNlJiBy
ZXNwb24KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxk
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBUaGUgbmV0d29ya0xvYWRNZXRyaWNz
IGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qgc3RvcmVkIGluIGRpc2sgY2FjaGUu
Ci0gICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAhZGVjb2Rlci5kZWNvZGUocmVzcG9u
c2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
Y29uc3RleHByIChEZWNvZGVyOjppc0lQQ0RlY29kZXIpIHsKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcykpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRw
U3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3BvbnNlLm1fc291cmNlKSkKKyAgICBTb3Vy
Y2Ugc291cmNlID0gU291cmNlOjpVbmtub3duOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShyZXNwb25zZS5tX3R5cGUpKQorICAgIHJlc3BvbnNlLm1fc291cmNlID0gc291cmNlOwor
ICAgIFR5cGUgdHlwZSA9IFR5cGU6OkRlZmF1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0odHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShyZXNwb25zZS5tX3RhaW50aW5nKSkKKyAgICByZXNwb25zZS5tX3R5cGUgPSB0eXBlOwor
ICAgIFRhaW50aW5nIHRhaW50aW5nID0gVGFpbnRpbmc6OkJhc2ljOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHRhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3Bv
bnNlLm1fdGFpbnRpbmcgPSB0YWludGluZzsKICAgICBib29sIGlzUmVkaXJlY3RlZCA9IGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNSZWRpcmVjdGVkKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV91c2VkTGVnYWN5VExTKSkKKyAgICBVc2Vk
TGVnYWN5VExTIHVzZWRMZWdhY3lUTFMgPSBVc2VkTGVnYWN5VExTOjpObzsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVzZWRMZWdhY3lUTFMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmVzcG9uc2UubV91c2VkTGVnYWN5VExTID0gdXNlZExlZ2FjeVRMUzsKICAgICBib29sIGlzUmFu
Z2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmFuZ2VSZXF1
ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IGE5ZjM5ZjM5MzAx
MjhhNTMzMzQwNjFjNWNjNDBiZGY5NDlhMDMwNzAuLjJhYzdlZGJmYTk3OWNkYTk2YzIyY2Y1NmNi
NzIxZjMyOTAyYzY0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zOSwzMCArMzksMzAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3Bv
bnNlQmFzZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogbV9p
bml0TGV2ZWwoQWxsRmllbGRzKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBBbGxGaWVs
ZHM7CiAgICAgfQogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLSAgICAgICAgOiBtX2luaXRMZXZlbChV
bmluaXRpYWxpemVkKQotICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQorICAgICAg
ICA6IG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwg
PSBVbmluaXRpYWxpemVkOwogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAgIH0K
ICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNlKQot
ICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgICAgICwgbV9uc1Jlc3Bv
bnNlKG5zUmVzcG9uc2UpCisgICAgICAgIDogbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCiAgICAg
eworICAgICAgICBtX2luaXRMZXZlbCA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgIG1faXNOdWxs
ID0gIW5zUmVzcG9uc2U7CiAgICAgfQogI2VuZGlmCiAKICAgICBSZXNvdXJjZVJlc3BvbnNlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRM
ZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKICAgICAgICAgOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5n
TmFtZSkKLSAgICAgICAgLCBtX2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgeworICAgICAgICBt
X2luaXRMZXZlbCA9IEFsbEZpZWxkczsKICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTEwNiw4ICsxMDYsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKIAotICAgIHVu
c2lnbmVkIG1faW5pdExldmVsIDogMzsKLQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGJvb2wg
bV9pc1F1aWNrTG9vayB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5k
ZXggZmJiOGQ2ODA4OGFkZGJiYzBiNjg3MDEyZjhkNDEwYmJlMzkwZGNiMS4uOWRhZmY3ZTk3ZjE4
ZjVmMDIxOWVlZjBjNmEyY2YyZmVjMTQxNTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAg
LTM3LDEwICszNywxMiBAQCBzdGF0aWMgZG91YmxlIHRpbWluZ1ZhbHVlKE5TRGljdGlvbmFyeSAq
dGltaW5nRGF0YSwgTlNTdHJpbmcgKmtleSkKICAgICByZXR1cm4gMC4wOwogfQogICAgIAotdm9p
ZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0
cmljcyYgdGltaW5nKQorQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTlNE
aWN0aW9uYXJ5ICp0aW1pbmdEYXRhKQogewogICAgIGlmICghdGltaW5nRGF0YSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEJveDxOZXR3b3JrTG9hZE1l
dHJpY3M+IHRpbWluZyA9IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKIAogICAg
IC8vIFRoaXMgaXMgbm90IHRoZSBuYXZpZ2F0aW9uU3RhcnQgdGltZSBpbiBtb25vdG9uaWMgdGlt
ZSwgYnV0IHRoZSBvdGhlciB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhpcyB0aW1lCiAgICAgLy8g
YW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGltZXMgYXJlIHN0b3JlZC4KQEAgLTU0
LDE1ICs1NiwxNyBAQCB2b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0
YSwgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcpCiAgICAgZG91YmxlIHJlcXVlc3RTdGFydCA9
IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAiX2tDRk5UaW1pbmdEYXRhUmVxdWVzdFN0YXJ0Iik7
CiAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9r
Q0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiKTsKIAotICAgIHRpbWluZy5kb21haW5Mb29rdXBT
dGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3RhcnQgPD0gMCA/IC0xIDogZG9tYWluTG9va3Vw
U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9IFNl
Y29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVy
ZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuY29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3Rh
cnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWlu
Zy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8
PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAg
dGltaW5nLmNvbm5lY3RFbmQgPSBTZWNvbmRzKGNvbm5lY3RFbmQgPD0gMCA/IC0xIDogY29ubmVj
dEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcucmVxdWVzdFN0YXJ0ID0gU2Vjb25k
cyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiByZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7
Ci0gICAgdGltaW5nLnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHJlc3BvbnNlU3RhcnQgPD0gMCA/
IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+ZG9tYWlu
TG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAgPyAtMSA6IGRvbWFp
bkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+ZG9tYWluTG9va3Vw
RW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwRW5k
IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhj
b25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwor
ICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gU2Vjb25kcyhzZWN1cmVDb25uZWN0
aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpOworICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IFNlY29uZHMoY29ubmVjdEVuZCA8PSAwID8g
LTEgOiBjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+cmVxdWVzdFN0
YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiByZXF1ZXN0U3RhcnQgLSByZWZl
cmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gU2Vjb25kcyhyZXNwb25z
ZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKIAogICAg
IC8vIE5PVEU6IHJlc3BvbnNlRW5kIGlzIG5vdCBwb3B1bGF0ZWQgaW4gdGhpcyBjb2RlIHBhdGgu
CisKKyAgICByZXR1cm4gdGltaW5nOwogfQogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAw
M2ZhMjY4N2Y2ODE4MTM0MTQxZDFjNjk1MThiYjg3Zjg4MGNhYjIzLi43NjdjNTc5NDk5OWM5NDYx
MTgwYmNmZWYwYzJhMTkyMmZhMTA3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNjU1LDkgKzY1
NSw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjCiAgICAgY2xlYXJBdXRoZW50aWNhdGlvbigp
OwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VS
TENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQorQm94
PE5ldHdvcmtMb2FkTWV0cmljcz4gUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdE
YXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKIHsKLSAgICBjb3B5VGltaW5nRGF0YShb
Y29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWluZyk7CisgICAgcmV0dXJuIGNvcHlUaW1pbmdE
YXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbQppbmRleCA4MzBlZDA2NzQwNmU1ODE5NTM1MzYxNWY3ZjI2M2EyZGFh
MzMwMTIyLi4xOWU2MjA1ODBiNzY4MmY4NmU3MmNkOTNiN2Q0ZmQ5MzE5ZWFiYzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb24KIAog
ICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uoci5nZXQoKSk7CiAgICAg
ICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
TmV0d29yayk7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0
YShjb25uZWN0aW9uLmdldCgpLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoKSk7CisgICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljcyhSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29u
bmVjdGlvbi5nZXQoKSkpOwogCiAgICAgICAgIG1faGFuZGxlLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
V1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSBXVEZNb3Zl
KHByb3RlY3RlZFNlbGYpXSB7CiAgICAgICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQppbmRleCAyYTM1OTI0MmE3YjM3N2I4MGFiNjEzOTI0OTc3YTk1Y2VmNmRh
OTAwLi5iOWYwMTU0MWVlM2IyYTU0YjRhMzY1YzRiODAzNTQ3MTRlZmUxODRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCkBAIC04NDksNyArODQ5LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNl
c3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKIAog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW5ub3QgYmUgZWxpbWluYXRlZCB1bnRpbCBvdGhlciBj
b2RlIG5vIGxvbmdlciByZWxpZXMgb24gUmVzb3VyY2VSZXNwb25zZSdzCiAgICAgICAgIC8vIE5l
dHdvcmtMb2FkTWV0cmljcy4gRm9yIGV4YW1wbGUsIFBlcmZvcm1hbmNlVGltaW5nLgotICAgICAg
ICBjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3BvbnNl
LmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIHJlc291cmNlUmVzcG9u
c2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhXZWJDb3JlOjpjb3B5VGltaW5nRGF0
YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFu
ZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50aWZp
ZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAppbmRleCA5ZTQxOTE2NzRhMDU1NTQ2Yzc5YjFhNjg3Njc5YjEyMjYwMWYxMzQ3Li5iMmRkOWU1
MzY2MDZhMWRhZDAxNTdmN2I4MGYwYTZiYTc2ZGRlYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBA
IC0zNjcsMTYgKzM2NywxNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkpOwog
CisgICAgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gdGltaW5nID0gQm94PE5ldHdvcmtMb2FkTWV0
cmljcz46OmNyZWF0ZSgpOworICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xv
YWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CisgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9
IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0OworICAgIHRpbWluZy0+ZG9t
YWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kOworICAg
IHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0
OworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJp
Y3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0OworICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IG1fbmV0
d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7CisgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQgPSBt
X25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CisgICAgdGltaW5nLT5yZXNwb25zZVN0
YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKICAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgb25jZSBub2JvZHkgZGVwZW5kcyBvbiBkZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzLgotICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmlj
cyA9IG1fcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOwotICAgIGRlcHJl
Y2F0ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNz
LnJlc3BvbnNlU3RhcnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5kb21haW5Mb29r
dXBTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0OwotICAgIGRl
cHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuZG9tYWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9hZE1l
dHJpY3MuZG9tYWluTG9va3VwRW5kOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuY29u
bmVjdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0OwotICAgIGRlcHJl
Y2F0ZWRSZXNwb25zZU1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gbV9uZXR3b3JrTG9h
ZE1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1l
dHJpY3MuY29ubmVjdEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7Ci0gICAg
ZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0
cmljcy5yZXF1ZXN0U3RhcnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXNwb25z
ZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKKyAgICBtX3Jlc3Bv
bnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV1RGTW92ZSh0aW1pbmcpKTsKIAog
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBOZWdv
dGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggOWFjZDdmZGFlNDYw
MmZiZWU3NTNkNThkZTc0YjkxMGYxMjU1YWE5Yy4uNThjNDU2NDY4OGM4ZjNmMmVhYzFhYzQ3MDE4
MmI4NWFmYWRmYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1NIQTEuaD4KQEAgLTEyMyw2ICsxMjQsNTQgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uYWw8VD4+IHsKICAgICB9CiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxCb3g8VD4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQm94PFQ+JiBib3gpCisg
ICAgeworICAgICAgICBpZiAoIWJveCkgeworICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVuY29kZXIgPDwgdHJ1
ZTsKKyAgICAgICAgZW5jb2RlciA8PCAqYm94LmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBCb3g8VD4mIGJveCkKKyAgICB7CisgICAgICAg
IGJvb2wgaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdlZCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsK
KyAgICAgICAgICAgIGJveCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIEJveDxUPiB2YWx1ZSA9IEJveDxUPjo6Y3JlYXRlKCk7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBib3ggPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEJveDxUPj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CisgICAgICAg
IGRlY29kZXIgPj4gaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWlzRW5nYWdlZCkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7CisgICAg
ICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7
CisgICAgICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8VD46OmNyZWF0
ZShXVEZNb3ZlKCp2YWx1ZSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8
Qm94PFQ+PihCb3g8VD4obnVsbHB0cikpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnBhaXI8
VCwgVT4mIHBhaXIpCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390739</attachid>
            <date>2020-02-14 01:15:31 -0800</date>
            <delta_ts>2020-02-14 01:21:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214011531.patch</filename>
            <type>text/plain</type>
            <size>46947</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMTExMDNmOGMzYTM4ODM4NmQwZDIxNDU0MTE2NDg0
NzA2ZTUzMDhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorCiAyMDIwLTAyLTEy
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBS
ZW1vdmUgTGluZUxheW91dENvbnRleHQ6Om1fcGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMWQ2YWIxMDRmOTFhNzNhYmMzMjcyMGMxOTBjYWU2N2MxNmM0Mjk3MC4uNmFhNTM4ZGI5
ZmMxNTVmNTI3MTQ3MDRhODNjM2JiZDQxYzliZTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBzaG91bGQgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIFJlc291
cmNlUmVzcG9uc2UgaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQXJndW1lbnRDb2RlciBzdXBwb3J0IGZvciBCb3g8VD4uCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEJveDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+
Pjo6ZGVjb2RlKToKKwogMjAyMC0wMi0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU2MDEwLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDNlMmZhYWEzYjU4OTgzNzhlYTg0MDgwYzM4YmRkYTg0OGQyMTdmZTku
LmVlOWVkYjMwZGQ3YjM0NjFjNGQ0OTFkZmFmNzkyOTAxMWQ0OThiYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTIxMywyNyArMjEzLDMyIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWls
ZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICByZXR1
cm4gaGVhZGVyc09iamVjdDsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OlJlc291cmNlVGltaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGlt
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nLCBSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
cikKIHsKICAgICBhdXRvJiBsb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkZXIubG9hZFRpbWluZygp
OwogCiAgICAgYXV0byBlbGFwc2VkVGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9uaWNUaW1l
JiB0aW1lKSB7CiAgICAgICAgIHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRj
aCgpLT5lbGFwc2VkVGltZVNpbmNlKHRpbWUpLnNlY29uZHMoKTsKICAgICB9OworICAgIE9wdGlv
bmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgaWYgKCF0aW1pbmcpIHsKKyAgICAg
ICAgZW1wdHkuZW1wbGFjZSgpOworICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoZWxhcHNlZFRpbWVTaW5jZShs
b2FkVGltaW5nLnN0YXJ0VGltZSgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0U3RhcnQoZWxhcHNl
ZFRpbWVTaW5jZShsb2FkVGltaW5nLnJlZGlyZWN0U3RhcnQoKSkpCiAgICAgICAgIC5zZXRSZWRp
cmVjdEVuZChlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcucmVkaXJlY3RFbmQoKSkpCiAgICAg
ICAgIC5zZXRGZXRjaFN0YXJ0KGVsYXBzZWRUaW1lU2luY2UobG9hZFRpbWluZy5mZXRjaFN0YXJ0
KCkpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwRW5kKHRpbWluZy5k
b21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRDb25uZWN0U3RhcnQo
dGltaW5nLmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RF
bmQodGltaW5nLmNvbm5lY3RFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRTZWN1cmVD
b25uZWN0aW9uU3RhcnQodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydC5taWxsaXNlY29uZHMo
KSkKLSAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQotICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmcucmVzcG9uc2VTdGFydC5t
aWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFJlc3BvbnNlRW5kKHRpbWluZy5yZXNwb25zZUVu
ZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cFN0YXJ0KHRpbWluZy0+
ZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXREb21haW5Mb29r
dXBFbmQodGltaW5nLT5kb21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5z
ZXRDb25uZWN0U3RhcnQodGltaW5nLT5jb25uZWN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAg
ICAgIC5zZXRDb25uZWN0RW5kKHRpbWluZy0+Y29ubmVjdEVuZC5taWxsaXNlY29uZHMoKSkKKyAg
ICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmctPnJl
cXVlc3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlc3BvbnNlU3RhcnQodGlt
aW5nLT5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VF
bmQodGltaW5nLT5yZXNwb25zZUVuZC5taWxsaXNlY29uZHMoKSkKICAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIApAQCAtMzUxLDcgKzM1Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNwb25zZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIHJlc3Bv
bnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcocmVzcG9uc2UuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLCAqcmVzb3VyY2VMb2FkZXIpKTsKKyAgICAgICAgcmVz
cG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCksICpyZXNvdXJjZUxvYWRlcikpOwogCiAg
ICAgaWYgKGF1dG8mIGNlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygp
KSB7CiAgICAgICAgIGF1dG8gc2VjdXJpdHlQYXlsb2FkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
U2VjdXJpdHk6OlNlY3VyaXR5OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggYTY4Zjg0NTIw
NzM2OTc3YzhiOTIxNjYxNmM1YTE3OGZiZjUyNzVkNi4uYjAzOGExODc5YzA0M2FhMTdkYWU5NzQy
NTY5M2YyOWJlNDJlMzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xh
c3MgSW5zcGVjdG9yTmV0d29ya0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6TmV0d28KICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJ
ZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCos
IE9wdGlvbmFsPGNvbnN0IFJlc291cmNlUmVxdWVzdCY+ID0gV1RGOjpudWxsb3B0KTsKLSAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2Jq
ZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyJik7
CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqLCBSZXNvdXJjZUxv
YWRlciYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBi
dWlsZE9iamVjdEZvck1ldHJpY3MoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNl
PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDY0ZWU1ZGRiYzgyNTkyNWVlNTA0OTE3ZThlMzMyNWM0MTQ2NTRjYzEuLjM3NDIxMjgxY2UyMjE4
ZGJmOWQyNWQ4NzZkNzU4NjJmNTAwZGQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02MzAsNyArNjMwLDEzIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3Vz
TG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCByZXNwb25z
ZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdp
bigpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1l
dHJpY3M+IGVtcHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHku
ZW1wbGFjZSgpOworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAg
IH0KKyAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3lu
Y2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcs
ICp0aW1pbmcsIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcikKICAgICAg
ICAgICAgIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChyZXNvdXJjZVRpbWluZyk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggYjc0ODJhYTRhYWU5ZmUwYmJhOGRmOTdiNmU0Yzc1YWQ0NDdjNjJhZC4uMTVjMGE3MTk4
YWMyMjIwYjc4Nzg0OTFiOTc2M2NkN2NmZDI3MWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02OTEsNyArNjkxLDEzIEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1lCiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxlZ2FjeSBwYXRoIGZvciBwbGF0
Zm9ybXMgKGFuZCBSZXNvdXJjZUhhbmRsZSBwYXRocykgdGhhdCBkbyBub3QgcHJvdmlkZQogICAg
ICAgICAvLyBjb21wbGV0ZSBsb2FkIG1ldHJpY3MgaW4gZGlkRmluaXNoTG9hZC4gSW4gdGhvc2Ug
Y2FzZXMsIGZhbGwgYmFjayB0byB0aGUgcG9zc2liaWxpdHkKICAgICAgICAgLy8gdGhhdCB0aGV5
IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQgdGltaW5nIGluZm9ybWF0aW9uIG9uIHRoZSBSZXNvdXJj
ZVJlc3BvbnNlLgotICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyhtX3Jlc291cmNlLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGVt
cHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHkuZW1wbGFjZSgp
OworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcoKnRpbWluZyk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVz
b3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCA0ZWZkNTRlMDJkNjhm
YTMyZTZjZWZmMDlmMzVlNDRlNzc4YTlkM2JhLi41NmE3NTZkYWJkNzBhNmU5NTM4YTExNzBjODVi
ODA3YzViN2RlY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNw
cApAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiBmZXRjaFN0YXJ0KCk7CiAgICAgCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmlj
cygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAv
LyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAg
ICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVz
IG5vIEROUywgd2UgImJhY2tmaWxsIiB3aXRoIGZldGNoU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBTdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5kb21h
aW5Mb29rdXBTdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0
Y2hTdGFydCh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQoKSBjb25zdApAQCAtMTM2LDE0
ICsxMzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5M
b29rdXBFbmQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWlu
TG9va3VwU3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWlu
ZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7Cisg
ICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCku
ZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMg
d2lsbCBiZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBS
YXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5T
LCB3ZSAiYmFja2ZpbGwiIHdpdGggZG9tYWluTG9va3VwU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBFbmQgPCAwX21zKQorICAgIGlmICghdGltaW5nIHx8IHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5k
b21haW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Zl
dGNoU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNTIsMTggKzE1
MiwyMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFy
dCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBF
bmQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwg
YmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNvbm5l
Y3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29rdXBFbmQuCi0gICAgU2Vjb25kcyBj
b25uZWN0U3RhcnQgPSB0aW1pbmcuY29ubmVjdFN0YXJ0OworICAgIGlmICghdGltaW5nKQorICAg
ICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7CisgICAgU2Vjb25kcyBjb25uZWN0U3RhcnQg
PSB0aW1pbmctPmNvbm5lY3RTdGFydDsKICAgICBpZiAoY29ubmVjdFN0YXJ0IDwgMF9tcykKICAg
ICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCiAgICAgLy8gTmV0d29ya0xvYWRNZXRy
aWNzJ3MgY29ubmVjdCBwaGFzZSBpbmNsdWRlcyBETlMsIGhvd2V2ZXIgTmF2aWdhdGlvbiBUaW1p
bmcncwogICAgIC8vIGNvbm5lY3QgcGhhc2Ugc2hvdWxkIG5vdC4gU28gaWYgdGhlcmUgaXMgRE5T
IHRpbWUsIHRyaW0gaXQgZnJvbSB0aGUgc3RhcnQuCi0gICAgaWYgKHRpbWluZy5kb21haW5Mb29r
dXBFbmQgPj0gMF9tcyAmJiB0aW1pbmcuZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQot
ICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmcuZG9tYWluTG9va3VwRW5kOworICAgIGlmICh0
aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA+PSAwX21zICYmIHRpbWluZy0+ZG9tYWluTG9va3VwRW5k
ID4gY29ubmVjdFN0YXJ0KQorICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmctPmRvbWFpbkxv
b2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3Rh
cnQoY29ubmVjdFN0YXJ0KTsKIH0KQEAgLTE3NCwxNCArMTc2LDE0IEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCgpIGNvbnN0CiAgICAgaWYgKCFsb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBjb25uZWN0U3RhcnQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAg
ICAgCiAgICAgLy8gY29ubmVjdEVuZCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3Qg
aXMgbm90IG1hZGUuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVl
IHRoYXQgaW5kaWNhdGVzIG5vIG5ldyBjb25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29u
bmVjdFN0YXJ0LgotICAgIGlmICh0aW1pbmcuY29ubmVjdEVuZCA8IDBfbXMpCisgICAgaWYgKCF0
aW1pbmcgfHwgdGltaW5nLT5jb25uZWN0RW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGNvbm5l
Y3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmcuY29ubmVjdEVuZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxh
dGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmctPmNvbm5lY3RFbmQpOwogfQogCiB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CkBA
IC0xOTAsMTIgKzE5MiwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2Fk
ZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKLSAgICBpZiAodGltaW5nLnNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5zZWN1
cmVDb25uZWN0aW9uU3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QKQEAgLTIwNCwxMCAr
MjA2LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbm5lY3RFbmQo
KTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+
cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vjb25kcyBy
ZXF1ZXN0U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRp
bWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JO
dWxsKCkpCisgICAgICAgIHJlcXVlc3RTdGFydCA9IHRpbWluZy0+cmVxdWVzdFN0YXJ0OwogICAg
IAotICAgIEFTU0VSVCh0aW1pbmcucmVxdWVzdFN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlcXVlc3RTdGFydCk7
CisgICAgQVNTRVJUKHJlcXVlc3RTdGFydCA+PSAwX21zKTsKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlcXVlc3RTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0CkBAIC0y
MTYsMTAgKzIyMCwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
c3BvbnNlU3RhcnQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gcmVx
dWVzdFN0YXJ0KCk7CiAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vj
b25kcyByZXNwb25zZVN0YXJ0ID0gMF9tczsKKyAgICBpZiAoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljc09yTnVsbCgpKQorICAgICAgICByZXNwb25zZVN0YXJ0ID0gdGltaW5nLT5yZXNwb25zZVN0
YXJ0OwogICAgIAotICAgIEFTU0VSVCh0aW1pbmcucmVzcG9uc2VTdGFydCA+PSAwX21zKTsKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5yZXNw
b25zZVN0YXJ0KTsKKyAgICBBU1NFUlQocmVzcG9uc2VTdGFydCA+PSAwX21zKTsKKyAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlc3BvbnNlU3RhcnQpOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5oCmluZGV4IGEzNmYzNDk3MjU3ZDY4ODNmNWVjYjkyMWJjZTJhZTBiMzRkMTZi
NzAuLjZmNjM1MzcwMjU2ZWIzYWMxZGQ3OWQzYWE0MDI5ZDY2MWIzOWU2MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaApA
QCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFw
LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmg+CkBAIC00Nyw2ICs0OCw3IEBAIGVudW0gY2xhc3MgTmV0d29ya0xvYWRQcmlv
cml0eSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3MpOwogcHVibGljOgogICAg
IE5ldHdvcmtMb2FkTWV0cmljcygpCiAgICAgewpAQCAtMTg0LDcgKzE4Niw3IEBAIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljcyB7CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1XRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTmV0d29y
a0xvYWRNZXRyaWNzJik7CitXRUJDT1JFX0VYUE9SVCBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBj
b3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEpOwogI2VuZGlmCiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKaW5kZXggYTNkNGYwNDQwNTlkZmQ5YTU3YjMx
OTI5ZGI4ZjExMmMxNWY2MjExMy4uMThkNDY3NTMwMTQ2ZGE1MWRhYmIzNTBhNWZiNjk3ZDQ1NGU2
MWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRD
b250ZW50UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFy
c2VkQ29udGVudFJhbmdlLmNwcApAQCAtMzksMTEgKzM5LDEzIEBAIHN0YXRpYyBib29sIGFyZUNv
bnRlbnRSYW5nZVZhbHVlc1ZhbGlkKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3Qg
bGFzdEJ5CiAgICAgLy8gb3Igd2hvc2UgaW5zdGFuY2UtbGVuZ3RoIHZhbHVlIGlzIGxlc3MgdGhh
biBvciBlcXVhbCB0byBpdHMgbGFzdC1ieXRlLXBvcyB2YWx1ZSwgaXMgaW52YWxpZC4KICAgICBp
ZiAoZmlyc3RCeXRlUG9zaXRpb24gPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNT
RVJUKGZpcnN0Qnl0ZVBvc2l0aW9uID49IDApOwogCiAgICAgaWYgKGxhc3RCeXRlUG9zaXRpb24g
PCBmaXJzdEJ5dGVQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChs
YXN0Qnl0ZVBvc2l0aW9uID49IDApOwogCi0gICAgaWYgKGluc3RhbmNlTGVuZ3RoID09IFBhcnNl
ZENvbnRlbnRSYW5nZTo6VW5rbm93bkxlbmd0aCkKKyAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0g
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBsYXN0Qnl0ZVBvc2l0aW9uIDwgaW5zdGFuY2VMZW5ndGg7CkBAIC05Niw3
ICs5OCw3IEBAIHN0YXRpYyBib29sIHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVh
ZGVyVmFsdWUsIGludDY0X3QmIGZpcnN0Qnl0ZVBvc2l0CiAKICAgICBTdHJpbmcgaW5zdGFuY2VT
dHJpbmcgPSBoZWFkZXJWYWx1ZS5zdWJzdHJpbmcoaW5zdGFuY2VMZW5ndGhTZXBhcmF0b3JUb2tl
biArIDEpOwogICAgIGlmIChpbnN0YW5jZVN0cmluZyA9PSAiKiIpCi0gICAgICAgIGluc3RhbmNl
TGVuZ3RoID0gUGFyc2VkQ29udGVudFJhbmdlOjpVbmtub3duTGVuZ3RoOworICAgICAgICBpbnN0
YW5jZUxlbmd0aCA9IFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxlbmd0aDsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKCFpbnN0YW5jZVN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
QVNDSUlEaWdpdD4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMSw3ICsxMTMs
OCBAQCBzdGF0aWMgYm9vbCBwYXJzZUNvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmIGhlYWRlclZh
bHVlLCBpbnQ2NF90JiBmaXJzdEJ5dGVQb3NpdAogCiBQYXJzZWRDb250ZW50UmFuZ2U6OlBhcnNl
ZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogewotICAgIG1faXNWYWxp
ZCA9IHBhcnNlQ29udGVudFJhbmdlKGhlYWRlclZhbHVlLCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCBt
X2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFuY2VMZW5ndGgpOworICAgIGlmICghcGFyc2VDb250
ZW50UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3Np
dGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisgICAgICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZh
bGlkTGVuZ3RoOwogfQogCiBQYXJzZWRDb250ZW50UmFuZ2U6OlBhcnNlZENvbnRlbnRSYW5nZShp
bnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90IGxhc3RCeXRlUG9zaXRpb24sIGludDY0
X3QgaW5zdGFuY2VMZW5ndGgpCkBAIC0xMTksMTQgKzEyMiwxNSBAQCBQYXJzZWRDb250ZW50UmFu
Z2U6OlBhcnNlZENvbnRlbnRSYW5nZShpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90
IGxhc3RCeQogICAgICwgbV9sYXN0Qnl0ZVBvc2l0aW9uKGxhc3RCeXRlUG9zaXRpb24pCiAgICAg
LCBtX2luc3RhbmNlTGVuZ3RoKGluc3RhbmNlTGVuZ3RoKQogewotICAgIG1faXNWYWxpZCA9IGFy
ZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQ
b3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFhcmVDb250ZW50UmFuZ2VWYWx1
ZXNWYWxpZChtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCBtX2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFu
Y2VMZW5ndGgpKQorICAgICAgICBtX2luc3RhbmNlTGVuZ3RoID0gaW52YWxpZExlbmd0aDsKIH0K
IAogU3RyaW5nIFBhcnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUoKSBjb25zdAogewotICAg
IGlmICghbV9pc1ZhbGlkKQorICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgaWYgKG1faW5zdGFuY2VMZW5ndGggPT0gVW5rbm93bkxlbmd0aCkKKyAgICBp
ZiAobV9pbnN0YW5jZUxlbmd0aCA9PSB1bmtub3duTGVuZ3RoKQogICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiYnl0ZXMgIiwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgJy0nLCBtX2xhc3RCeXRlUG9z
aXRpb24sICIvKiIpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRlcyAiLCBtX2ZpcnN0Qnl0
ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgJy8nLCBtX2luc3RhbmNlTGVuZ3Ro
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRSYW5nZS5oCmluZGV4IDVhMDcwNGJkNGI5NmZkY2JhOTBkYzE0Y2E0NjZjYjhlZmQ3ZGU1
YzAuLmEzYjRiZjNiNzJkMWNjZThjMDM3YjhhZDA5MDcyOWE4OWZiZTdmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaApA
QCAtMjMsMzcgKzIzLDU0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFBhcnNl
ZENvbnRlbnRSYW5nZV9oCi0jZGVmaW5lIFBhcnNlZENvbnRlbnRSYW5nZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFyc2VkQ29udGVudFJhbmdlIHsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgaW52YWxpZExlbmd0aCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
NjRfdCB1bmtub3duTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7
CisKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQYXJzZWRDb250ZW50UmFuZ2UoY29uc3Qg
U3RyaW5nJik7Ci0gICAgUGFyc2VkQ29udGVudFJhbmdlKCkgeyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3Qg
bGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxlbmd0aCk7CisgICAgUGFyc2VkQ29u
dGVudFJhbmdlKCkgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1ZhbGlkOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
YW5jZUxlbmd0aCAhPSBpbnZhbGlkTGVuZ3RoOyB9CiAgICAgaW50NjRfdCBmaXJzdEJ5dGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RCeXRlUG9zaXRpb247IH0KICAgICBpbnQ2NF90
IGxhc3RCeXRlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RCeXRlUG9zaXRpb247IH0K
ICAgICBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZUxl
bmd0aDsgfQogCisgICAgc3RhdGljIFBhcnNlZENvbnRlbnRSYW5nZSBpbnZhbGlkVmFsdWUoKQor
ICAgIHsKKyAgICAgICAgUGFyc2VkQ29udGVudFJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5t
X2ZpcnN0Qnl0ZVBvc2l0aW9uID0gaW52YWxpZExlbmd0aDsKKyAgICAgICAgcmFuZ2UubV9sYXN0
Qnl0ZVBvc2l0aW9uID0gaW52YWxpZExlbmd0aDsKKyAgICAgICAgcmFuZ2UubV9pbnN0YW5jZUxl
bmd0aCA9IGludmFsaWRMZW5ndGg7CisgICAgICAgIHJldHVybiByYW5nZTsKKyAgICB9CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaGVhZGVyVmFsdWUoKSBjb25zdDsKIAotICAgIGVudW0g
eyBVbmtub3duTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgfTsK
KyAgICBzdHJ1Y3QgTWFya2FibGVUcmFpdHMgeworICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoY29uc3QgUGFyc2VkQ29udGVudFJhbmdlJiByYW5nZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFyYW5nZS5pc1ZhbGlkKCk7CisgICAgICAgIH0KIAotcHJpdmF0ZToKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCBpc1Bvc2l0aXZlKFQpOworICAgICAg
ICBzdGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGVtcHR5VmFsdWUoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gUGFyc2VkQ29udGVudFJhbmdlOjppbnZhbGlkVmFsdWUoKTsKKyAgICAg
ICAgfQorICAgIH07CiAKK3ByaXZhdGU6CiAgICAgaW50NjRfdCBtX2ZpcnN0Qnl0ZVBvc2l0aW9u
IHsgMCB9OwogICAgIGludDY0X3QgbV9sYXN0Qnl0ZVBvc2l0aW9uIHsgMCB9OwotICAgIGludDY0
X3QgbV9pbnN0YW5jZUxlbmd0aCB7IFVua25vd25MZW5ndGggfTsKLSAgICBib29sIG1faXNWYWxp
ZCB7IGZhbHNlIH07CisgICAgaW50NjRfdCBtX2luc3RhbmNlTGVuZ3RoIHsgdW5rbm93bkxlbmd0
aCB9OwogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA2ODA3NDA0YmZmZGE2ZjVkZWQ1OTA1NWNmMDFl
MmM5ZTZjNGIyNWZjLi4xOWUxYTZiN2ZiYzE5MTRmNzE2NzM5ZjU3ZjhiNmI2OGRmYTc1NjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0JveC5o
PgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMzEsOSArMTMyLDkgQEAgY2xhc3Mg
UmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4sIHB1Ymxp
YyBBdXRoZW50aWNhdGlvbkMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxD
b25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgQm94PE5ldHdv
cmtMb2FkTWV0cmljcz4gZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVm
KTsKICNlbHNlCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxD
b25uZWN0aW9uICosIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRpYyBCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPiBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKik7
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGU5YWNjZWJkNzcyMGFjMzNh
NjgwODdiNDliMGY4MmQwOTJiZTJhZDAuLmJhMDI0ODQwZTBiZjBjZjIzNGZjYWM5ZjgzMDg1OWUz
NjM3NDY0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC01NSw3ICs1NSwxMiBAQCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICwgbV9oYXZlUGFyc2VkTGFz
dE1vZGlmaWVkSGVhZGVyKGZhbHNlKQogICAgICwgbV9oYXZlUGFyc2VkQ29udGVudFJhbmdlSGVh
ZGVyKGZhbHNlKQogICAgICwgbV9pc1JlZGlyZWN0ZWQoZmFsc2UpCisgICAgLCBtX2lzUmFuZ2VS
ZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICwgbV91c2VkTGVnYWN5
VExTKFVzZWRMZWdhY3lUTFM6Ok5vKQorICAgICwgbV90YWludGluZyhUYWludGluZzo6QmFzaWMp
CisgICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCisgICAgLCBtX3R5cGUoVHlwZTo6RGVm
YXVsdCkKIHsKIH0KIApAQCAtNzIsNyArNzcsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXAK
ICAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihmYWxzZSkKICAgICAsIG1faGF2
ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlcihmYWxzZSkKICAgICAsIG1faXNSZWRpcmVjdGVkKGZh
bHNlKQorICAgICwgbV9pc1JhbmdlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9pc051bGwoZmFs
c2UpCisgICAgLCBtX3VzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUzo6Tm8pCisgICAgLCBtX3Rh
aW50aW5nKFRhaW50aW5nOjpCYXNpYykKKyAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikK
KyAgICAsIG1fdHlwZShUeXBlOjpEZWZhdWx0KQogewogfQogCkBAIC05MCw3ICsxMDAsOCBAQCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Q3Jvc3NUaHJlYWREYXRhIFJlc291cmNlUmVzcG9uc2VCYXNl
Ojpjcm9zc1RocmVhZERhdGEoKSBjbwogICAgIGRhdGEuaHR0cFZlcnNpb24gPSBodHRwVmVyc2lv
bigpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgZGF0YS5odHRwSGVhZGVyRmllbGRzID0gaHR0cEhl
YWRlckZpZWxkcygpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEubmV0d29ya0xvYWRNZXRyaWNz
ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWYgKG1fbmV0d29y
a0xvYWRNZXRyaWNzKQorICAgICAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLT5pc29sYXRlZENvcHkoKTsKICAgICBkYXRhLnR5cGUgPSBtX3R5cGU7CiAg
ICAgZGF0YS50YWludGluZyA9IG1fdGFpbnRpbmc7CiAgICAgZGF0YS5pc1JlZGlyZWN0ZWQgPSBt
X2lzUmVkaXJlY3RlZDsKQEAgLTExMyw3ICsxMjQsMTAgQEAgUmVzb3VyY2VSZXNwb25zZSBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShDcm9zc1RocmVhZERhdGEmJiBk
YXQKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbihkYXRhLmh0dHBWZXJzaW9uKTsKIAogICAg
IHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcyA9IFdURk1vdmUoZGF0YS5odHRwSGVhZGVyRmll
bGRzKTsKLSAgICByZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcyA9IGRhdGEubmV0d29ya0xv
YWRNZXRyaWNzOworICAgIGlmIChkYXRhLm5ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAgcmVz
cG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MudmFsdWUoKSkpOworICAgIGVsc2UK
KyAgICAgICAgcmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBudWxscHRyOwogICAgIHJl
c3BvbnNlLm1fdHlwZSA9IGRhdGEudHlwZTsKICAgICByZXNwb25zZS5tX3RhaW50aW5nID0gZGF0
YS50YWludGluZzsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IGRhdGEuaXNSZWRpcmVj
dGVkOwpAQCAtODA4LDggKzgyMiwxNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhl
YWRlckZpZWxkcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljcygpICE9IGIuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEubV9uZXR3b3JrTG9hZE1ldHJpY3Mu
Z2V0KCkgIT0gYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkgeworICAgICAgICBpZiAoIWEu
bV9uZXR3b3JrTG9hZE1ldHJpY3MpIHsKKyAgICAgICAgICAgIGlmIChOZXR3b3JrTG9hZE1ldHJp
Y3MoKSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoIWIubV9uZXR3b3JrTG9hZE1ldHJpY3Mp
IHsKKyAgICAgICAgICAgIGlmIChOZXR3b3JrTG9hZE1ldHJpY3MoKSAhPSAqYS5tX25ldHdvcmtM
b2FkTWV0cmljcy5nZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0gZWxzZSBpZiAoKmEubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkgIT0gKmIubV9uZXR3b3Jr
TG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAppbmRleCA4ODk0NDE2YmUzYjYxN2YxZjc3MzZkODk4ZWFjM2U4ZDkxMzU0MmZkLi5k
NWFmMzg4YzM5YmVlZWJlMjkxYzY0ZDljZWFhNTA0ZmI4NzNlMTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC00Miw2ICs0Myw4IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBib29sIGlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKIGVudW0gY2xhc3MgVXNlZExlZ2FjeVRMUyA6IGJvb2wg
eyBObywgWWVzIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoT2ZVc2VkTGVn
YWN5VExTID0gMTsKK3N0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZWRMZWdh
Y3lUTFM6OlllcykgPD0gKCgxVSA8PCBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUykgLSAxKSk7CiAK
IC8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlIGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKQEAgLTY4LDcg
KzcxLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgICAgICBTdHJpbmcgaHR0
cFN0YXR1c1RleHQ7CiAgICAgICAgIFN0cmluZyBodHRwVmVyc2lvbjsKICAgICAgICAgSFRUUEhl
YWRlck1hcCBodHRwSGVhZGVyRmllbGRzOwotICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0
d29ya0xvYWRNZXRyaWNzOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IG5l
dHdvcmtMb2FkTWV0cmljczsKICAgICAgICAgVHlwZSB0eXBlOwogICAgICAgICBUYWludGluZyB0
YWludGluZzsKICAgICAgICAgYm9vbCBpc1JlZGlyZWN0ZWQ7CkBAIC0xNTAsNiArMTUzLDkgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5n
ZSYgY29udGVudFJhbmdlKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFNvdXJjZSA6IHVpbnQ4
X3QgeyBVbmtub3duLCBOZXR3b3JrLCBEaXNrQ2FjaGUsIERpc2tDYWNoZUFmdGVyVmFsaWRhdGlv
biwgTWVtb3J5Q2FjaGUsIE1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uLCBTZXJ2aWNlV29ya2Vy
LCBBcHBsaWNhdGlvbkNhY2hlLCBET01DYWNoZSwgSW5zcGVjdG9yT3ZlcnJpZGUgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoT2ZTb3VyY2UgPSA0OworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUp
IDw9ICgoMVUgPDwgYml0V2lkdGhPZlNvdXJjZSkgLSAxKSk7CisKICAgICBXRUJDT1JFX0VYUE9S
VCBTb3VyY2Ugc291cmNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTb3VyY2UoU291cmNlIHNvdXJj
ZSkKICAgICB7CkBAIC0xNjAsNyArMTY2LDE2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZWxpbWluYXRlZCBmcm9tIFJlc291cmNl
UmVzcG9uc2UuCiAgICAgLy8gTmV0d29yayBsb2FkaW5nIG1ldHJpY3Mgc2hvdWxkIGJlIGRlbGl2
ZXJlZCB2aWEgZGlkRmluaXNoTG9hZAogICAgIC8vIGFuZCBzaG91bGQgbm90IGJlIHBhcnQgb2Yg
dGhlIFJlc291cmNlUmVzcG9uc2UuCi0gICAgTmV0d29ya0xvYWRNZXRyaWNzJiBkZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7
IH0KKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIGRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3NPck51bGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya0xvYWRNZXRy
aWNzKQorICAgICAgICAgICAgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgdm9pZCBzZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+JiYgbWV0cmljcykKKyAgICB7Cisg
ICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gV1RGTW92ZShtZXRyaWNzKTsKKyAgICB9CiAK
ICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBt
ZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1zcGVjaWZpYyBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRp
b24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2FnZSgpIGNvbnN0CkBAIC0yMjIsNyArMjM3LDcgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIEF0b21TdHJpbmcgbV9odHRwU3RhdHVz
VGV4dDsKICAgICBBdG9tU3RyaW5nIG1faHR0cFZlcnNpb247CiAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7Ci0gICAgbXV0YWJsZSBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3
b3JrTG9hZE1ldHJpY3M7CisgICAgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7CiAKICAgICBtdXRhYmxlIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0
aWZpY2F0ZUluZm87CiAKQEAgLTI0MSwxOCArMjU2LDE3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlIHsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVy
IDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkQ29udGVudFJhbmdlSGVhZGVyIDog
MTsKICAgICBib29sIG1faXNSZWRpcmVjdGVkIDogMTsKKyAgICBib29sIG1faXNSYW5nZVJlcXVl
c3RlZCA6IDE7CiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzTnVsbCA6IDE7Ci0KKyAgICB1bnNp
Z25lZCBtX2luaXRMZXZlbCA6IDM7IC8vIENvbnRyb2xsZWQgYnkgUmVzb3VyY2VSZXNwb25zZS4K
KyAgICBtdXRhYmxlIFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIDogYml0V2lkdGhPZlVz
ZWRMZWdhY3lUTFM7CiBwcml2YXRlOgotICAgIFNvdXJjZSBtX3NvdXJjZSB7IFNvdXJjZTo6VW5r
bm93biB9OwotICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6RGVmYXVsdCB9OwotICAgIFRhaW50aW5n
IG1fdGFpbnRpbmcgeyBUYWludGluZzo6QmFzaWMgfTsKLSAgICBib29sIG1faXNSYW5nZVJlcXVl
c3RlZCB7IGZhbHNlIH07Ci0KKyAgICBUYWludGluZyBtX3RhaW50aW5nIDogYml0V2lkdGhPZlRh
aW50aW5nOworICAgIFNvdXJjZSBtX3NvdXJjZSA6IGJpdFdpZHRoT2ZTb3VyY2U7CisgICAgVHlw
ZSBtX3R5cGUgOiBiaXRXaWR0aE9mVHlwZTsKIHByb3RlY3RlZDoKICAgICBzaG9ydCBtX2h0dHBT
dGF0dXNDb2RlIHsgMCB9OwotICAgIG11dGFibGUgVXNlZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lU
TFMgeyBVc2VkTGVnYWN5VExTOjpObyB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJl
dHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQpAQCAtMjc2LDcgKzI5
MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwdXQgdGhlIG5ldHdvcmtMb2FkTWV0
cmljcyBpbmZvCiAgICAgLy8gaW50byB0aGUgZGlzayBjYWNoZSwgYmVjYXVzZSB3ZSB3aWxsIG5l
dmVyIHVzZSB0aGUgb2xkIGluZm8uCi0gICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKKyAg
ICBpZiBjb25zdGV4cHIgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAogICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKQEAgLTI4NSw3ICsyOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90YWludGluZyk7CiAgICAgZW5jb2RlciA8PCBtX2lz
UmVkaXJlY3RlZDsKLSAgICBlbmNvZGVyIDw8IG1fdXNlZExlZ2FjeVRMUzsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PFVzZWRMZWdhY3lUTFM+KG1fdXNlZExlZ2FjeVRMUyk7CiAgICAgZW5j
b2RlciA8PCBtX2lzUmFuZ2VSZXF1ZXN0ZWQ7CiB9CiAKQEAgLTMxOCwyNCArMzMyLDM0IEBAIGJv
b2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSYgcmVzcG9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5t
X2h0dHBIZWFkZXJGaWVsZHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIG5l
dHdvcmtMb2FkTWV0cmljcyBpbmZvIGlzIG9ubHkgc2VuZCBvdmVyIElQQyBhbmQgbm90IHN0b3Jl
ZCBpbiBkaXNrIGNhY2hlLgotICAgIGlmIChEZWNvZGVyOjppc0lQQ0RlY29kZXIgJiYgIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIGNvbnN0ZXhwciAoRGVjb2Rlcjo6aXNJUENEZWNvZGVyKSB7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3BvbnNlLm1faHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3Nv
dXJjZSkpCisgICAgU291cmNlIHNvdXJjZSA9IFNvdXJjZTo6VW5rbm93bjsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bShzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKKyAgICByZXNwb25zZS5tX3Nv
dXJjZSA9IHNvdXJjZTsKKyAgICBUeXBlIHR5cGUgPSBUeXBlOjpEZWZhdWx0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90YWludGluZykpCisgICAgcmVzcG9uc2Uu
bV90eXBlID0gdHlwZTsKKyAgICBUYWludGluZyB0YWludGluZyA9IFRhaW50aW5nOjpCYXNpYzsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0YWludGluZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXNwb25zZS5tX3RhaW50aW5nID0gdGFpbnRpbmc7CiAgICAgYm9vbCBpc1Jl
ZGlyZWN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmVkaXJlY3RlZCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IGlz
UmVkaXJlY3RlZDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fdXNlZExlZ2Fj
eVRMUykpCisgICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTID0gVXNlZExlZ2FjeVRMUzo6
Tm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7
CiAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc1JhbmdlUmVxdWVzdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaApp
bmRleCBhOWYzOWYzOTMwMTI4YTUzMzM0MDYxYzVjYzQwYmRmOTQ5YTAzMDcwLi4yYWM3ZWRiZmE5
NzljZGE5NmMyMmNmNTZjYjcyMWYzMjkwMmM2NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzksMzAgKzM5
LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJs
aWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogcHVibGljOgogICAgIFJlc291cmNlUmVzcG9uc2Uo
KQotICAgICAgICA6IG1faW5pdExldmVsKEFsbEZpZWxkcykKICAgICB7CisgICAgICAgIG1faW5p
dExldmVsID0gQWxsRmllbGRzOwogICAgIH0KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi0gICAgICAg
IDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZS
ZXNwb25zZSkKKyAgICAgICAgOiBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CisgICAg
ICAgIG1faW5pdExldmVsID0gVW5pbml0aWFsaXplZDsKICAgICAgICAgbV9pc051bGwgPSAhY2ZS
ZXNwb25zZTsKICAgICB9CiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25z
ZSAqbnNSZXNwb25zZSkKLSAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAg
ICAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQorICAgICAgICA6IG1fbnNSZXNwb25zZShu
c1Jlc3BvbnNlKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBVbmluaXRpYWxpemVkOwog
ICAgICAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwogICAgIH0KICNlbmRpZgogCiAgICAgUmVz
b3VyY2VSZXNwb25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiAg
ICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUpCi0gICAgICAgICwgbV9pbml0TGV2ZWwoQWxsRmllbGRzKQog
ICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBBbGxGaWVsZHM7CiAgICAgfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0xMDYsOCArMTA2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6
IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9y
bUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYik7CiAKLSAgICB1bnNpZ25lZCBtX2luaXRMZXZlbCA6IDM7Ci0KICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBib29sIG1faXNRdWlja0xvb2sgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0
cmljcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xv
YWRNZXRyaWNzLm1tCmluZGV4IGZiYjhkNjgwODhhZGRiYmMwYjY4NzAxMmY4ZDQxMGJiZTM5MGRj
YjEuLjlkYWZmN2U5N2YxOGY1ZjAyMTllZWYwYzZhMmNmMmZlYzE0MTU2N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xv
YWRNZXRyaWNzLm1tCkBAIC0zNywxMCArMzcsMTIgQEAgc3RhdGljIGRvdWJsZSB0aW1pbmdWYWx1
ZShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIE5TU3RyaW5nICprZXkpCiAgICAgcmV0dXJuIDAu
MDsKIH0KICAgICAKLXZvaWQgY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRh
LCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZykKK0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNv
cHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSkKIHsKICAgICBpZiAoIXRpbWlu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPiB0aW1pbmcgPSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKCk7CiAKICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbmF2aWdhdGlvblN0YXJ0IHRpbWUg
aW4gbW9ub3RvbmljIHRpbWUsIGJ1dCB0aGUgb3RoZXIgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRo
aXMgdGltZQogICAgIC8vIGFuZCBvbmx5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRpbWVzIGFy
ZSBzdG9yZWQuCkBAIC01NCwxNSArNTYsMTcgQEAgdm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rp
b25hcnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQogICAgIGRvdWJs
ZSByZXF1ZXN0U3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0
YVJlcXVlc3RTdGFydCIpOwogICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gdGltaW5nVmFsdWUo
dGltaW5nRGF0YSwgQCJfa0NGTlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Iik7CiAKLSAgICB0aW1p
bmcuZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAgPyAt
MSA6IGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5kb21h
aW5Mb29rdXBFbmQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZCA8PSAwID8gLTEgOiBkb21haW5M
b29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmNvbm5lY3RTdGFydCA9IFNl
Y29uZHMoY29ubmVjdFN0YXJ0IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0
YXJ0KTsKLSAgICB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gU2Vjb25kcyhzZWN1cmVD
b25uZWN0aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpOwotICAgIHRpbWluZy5jb25uZWN0RW5kID0gU2Vjb25kcyhjb25uZWN0RW5kIDw9
IDAgPyAtMSA6IGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLnJlcXVl
c3RTdGFydCA9IFNlY29uZHMocmVxdWVzdFN0YXJ0IDw9IDAgPyAwIDogcmVxdWVzdFN0YXJ0IC0g
cmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0gU2Vjb25kcyhyZXNw
b25zZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAg
ICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8
PSAwID8gLTEgOiBkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6
IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPmNvbm5lY3RT
dGFydCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IFNlY29u
ZHMoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAgPyAtMSA6IHNlY3VyZUNvbm5lY3Rpb25TdGFy
dCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPmNvbm5lY3RFbmQgPSBTZWNvbmRzKGNv
bm5lY3RFbmQgPD0gMCA/IC0xIDogY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0
aW1pbmctPnJlcXVlc3RTdGFydCA9IFNlY29uZHMocmVxdWVzdFN0YXJ0IDw9IDAgPyAwIDogcmVx
dWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9
IFNlY29uZHMocmVzcG9uc2VTdGFydCA8PSAwID8gMCA6IHJlc3BvbnNlU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCk7CiAKICAgICAvLyBOT1RFOiByZXNwb25zZUVuZCBpcyBub3QgcG9wdWxhdGVkIGlu
IHRoaXMgY29kZSBwYXRoLgorCisgICAgcmV0dXJuIHRpbWluZzsKIH0KICAgICAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KaW5kZXggMDNmYTI2ODdmNjgxODEzNDE0MWQxYzY5NTE4YmI4N2Y4ODBjYWIyMy4u
NzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEwNzJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KQEAgLTY1NSw5ICs2NTUsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxs
ZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIGNsZWFy
QXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIHRpbWluZykKK0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IFJlc291cmNlSGFuZGxlOjpnZXRD
b25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiB7Ci0gICAg
Y29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOworICAgIHJl
dHVybiBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggODMwZWQwNjc0MDZlNTgxOTUz
NTM2MTVmN2YyNjNhMmRhYTMzMDEyMi4uMTllNjIwNTgwYjc2ODJmODZlNzJjZDkzYjdkNGZkOTMx
OWVhYmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uCiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNl
KHIuZ2V0KCkpOwogICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbi5nZXQoKSwgcmVzb3VyY2VSZXNwb25zZS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rp
b25UaW1pbmdEYXRhKGNvbm5lY3Rpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX2hhbmRsZS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtzZWxmLCBwcm90ZWN0
ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKV0gewogICAgICAgICAgICAgbV9zZW1hcGhv
cmUuc2lnbmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmEzNTkyNDJhN2IzNzdiODBhYjYx
MzkyNDk3N2E5NWNlZjZkYTkwMC4uYjlmMDE1NDFlZTNiMmE1NGI0YTM2NWM0YjgwMzU0NzE0ZWZl
MTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKilkYXRhCiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGJlIGVsaW1pbmF0
ZWQgdW50aWwgb3RoZXIgY29kZSBubyBsb25nZXIgcmVsaWVzIG9uIFJlc291cmNlUmVzcG9uc2Un
cwogICAgICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MuIEZvciBleGFtcGxlLCBQZXJmb3JtYW5j
ZVRpbWluZy4KLSAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSwg
cmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV2ViQ29y
ZTo6Y29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSkpOwogCiAgICAgICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7
CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVz
b3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxlckNv
cHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKaW5kZXggOWU0MTkxNjc0YTA1NTU0NmM3OWIxYTY4NzY3OWIxMjI2
MDFmMTM0Ny4uYjJkZDllNTM2NjA2YTFkYWQwMTU3ZjdiODBmMGE2YmE3NmRkZWEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtMzY3LDE2ICszNjcsMTcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3Bv
bnNlLmlzTnVsbCgpKTsKIAorICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRpbWluZyA9IEJv
eDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKKyAgICB0aW1pbmctPnJlc3BvbnNlU3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OworICAgIHRpbWluZy0+ZG9t
YWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBTdGFydDsK
KyAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFp
bkxvb2t1cEVuZDsKKyAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLmNvbm5lY3RTdGFydDsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IG1f
bmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKKyAgICB0aW1pbmctPmNv
bm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kOworICAgIHRpbWluZy0+
cmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OworICAgIHRp
bWluZy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugbm9ib2R5IGRlcGVuZHMgb24gZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcy4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIGRlcHJlY2F0
ZWRSZXNwb25zZU1ldHJpY3MgPSBtX3Jlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoKTsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25l
dHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1l
dHJpY3MuZG9tYWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29r
dXBTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCA9
IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZDsKLSAgICBkZXByZWNhdGVkUmVz
cG9uc2VNZXRyaWNzLmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RT
dGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICBkZXBy
ZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmNvbm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5j
b25uZWN0RW5kOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVzdFN0YXJ0ID0g
bV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25z
ZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3Rh
cnQ7CisgICAgbV9yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKFdURk1v
dmUodGltaW5nKSk7CiAKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSht
X3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21w
bGV0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmlu
ZGV4IDlhY2Q3ZmRhZTQ2MDJmYmVlNzUzZDU4ZGU3NGI5MTBmMTI1NWFhOWMuLjU4YzQ1NjQ2ODhj
OGYzZjJlYWMxYWM0NzAxODJiODVhZmFkZmM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRlY29k
ZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CkBAIC0xMjMsNiArMTI0LDU0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7
CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
Qm94PFQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEJveDxUPiYgYm94KQorICAgIHsKKyAgICAgICAgaWYgKCFib3gpIHsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgKmJveC5nZXQoKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQm94PFQ+JiBib3gp
CisgICAgeworICAgICAgICBib29sIGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc0VuZ2FnZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
ICghaXNFbmdhZ2VkKSB7CisgICAgICAgICAgICBib3ggPSBudWxscHRyOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBCb3g8VD4gdmFsdWUgPSBCb3g8VD46
OmNyZWF0ZSgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp2YWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYm94ID0gV1RGTW92ZSh2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxCb3g8VD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNF
bmdhZ2VkOworICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFpc0Vu
Z2FnZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoKmlz
RW5nYWdlZCkgeworICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAgICAgICAgICBk
ZWNvZGVyID4+IHZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEJveDxU
Pj4oQm94PFQ+OjpjcmVhdGUoV1RGTW92ZSgqdmFsdWUpKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPEJveDxUPj4oQm94PFQ+KG51bGxwdHIpKTsKKyAgICB9Cit9OworCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnBhaXI8VCwgVT4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwYWlyKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390740</attachid>
            <date>2020-02-14 01:21:36 -0800</date>
            <delta_ts>2020-02-14 01:36:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214012135.patch</filename>
            <type>text/plain</type>
            <size>49565</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMTExMDNmOGMzYTM4ODM4NmQwZDIxNDU0MTE2NDg0
NzA2ZTUzMDhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorCiAyMDIwLTAyLTEy
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBS
ZW1vdmUgTGluZUxheW91dENvbnRleHQ6Om1fcGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMWQ2YWIxMDRmOTFhNzNhYmMzMjcyMGMxOTBjYWU2N2MxNmM0Mjk3MC4uNmFhNTM4ZGI5
ZmMxNTVmNTI3MTQ3MDRhODNjM2JiZDQxYzliZTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIE5ldHdvcmtMb2FkTWV0cmljcyBzaG91bGQgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIFJlc291
cmNlUmVzcG9uc2UgaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQXJndW1lbnRDb2RlciBzdXBwb3J0IGZvciBCb3g8VD4uCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRS
ZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPEJveDxUPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+
Pjo6ZGVjb2RlKToKKwogMjAyMC0wMi0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU2MDEwLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCmluZGV4IDNlMmZhYWEzYjU4OTgzNzhlYTg0MDgwYzM4YmRkYTg0OGQyMTdmZTku
LmVlOWVkYjMwZGQ3YjM0NjFjNGQ0OTFkZmFmNzkyOTAxMWQ0OThiYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKQEAgLTIxMywyNyArMjEzLDMyIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWls
ZE9iamVjdEZvckhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKICAgICByZXR1
cm4gaGVhZGVyc09iamVjdDsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6
OlJlc291cmNlVGltaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yVGlt
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nLCBSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
cikKIHsKICAgICBhdXRvJiBsb2FkVGltaW5nID0gcmVzb3VyY2VMb2FkZXIubG9hZFRpbWluZygp
OwogCiAgICAgYXV0byBlbGFwc2VkVGltZVNpbmNlID0gWyZdIChjb25zdCBNb25vdG9uaWNUaW1l
JiB0aW1lKSB7CiAgICAgICAgIHJldHVybiBtX2Vudmlyb25tZW50LmV4ZWN1dGlvblN0b3B3YXRj
aCgpLT5lbGFwc2VkVGltZVNpbmNlKHRpbWUpLnNlY29uZHMoKTsKICAgICB9OworICAgIE9wdGlv
bmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgaWYgKCF0aW1pbmcpIHsKKyAgICAg
ICAgZW1wdHkuZW1wbGFjZSgpOworICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAg
ICB9CiAKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VU
aW1pbmc6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGFydFRpbWUoZWxhcHNlZFRpbWVTaW5jZShs
b2FkVGltaW5nLnN0YXJ0VGltZSgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0U3RhcnQoZWxhcHNl
ZFRpbWVTaW5jZShsb2FkVGltaW5nLnJlZGlyZWN0U3RhcnQoKSkpCiAgICAgICAgIC5zZXRSZWRp
cmVjdEVuZChlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcucmVkaXJlY3RFbmQoKSkpCiAgICAg
ICAgIC5zZXRGZXRjaFN0YXJ0KGVsYXBzZWRUaW1lU2luY2UobG9hZFRpbWluZy5mZXRjaFN0YXJ0
KCkpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0RG9tYWluTG9va3VwRW5kKHRpbWluZy5k
b21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRDb25uZWN0U3RhcnQo
dGltaW5nLmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RF
bmQodGltaW5nLmNvbm5lY3RFbmQubWlsbGlzZWNvbmRzKCkpCi0gICAgICAgIC5zZXRTZWN1cmVD
b25uZWN0aW9uU3RhcnQodGltaW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydC5taWxsaXNlY29uZHMo
KSkKLSAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQotICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmcucmVzcG9uc2VTdGFydC5t
aWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFJlc3BvbnNlRW5kKHRpbWluZy5yZXNwb25zZUVu
ZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cFN0YXJ0KHRpbWluZy0+
ZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXREb21haW5Mb29r
dXBFbmQodGltaW5nLT5kb21haW5Mb29rdXBFbmQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5z
ZXRDb25uZWN0U3RhcnQodGltaW5nLT5jb25uZWN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAg
ICAgIC5zZXRDb25uZWN0RW5kKHRpbWluZy0+Y29ubmVjdEVuZC5taWxsaXNlY29uZHMoKSkKKyAg
ICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlcXVlc3RTdGFydCh0aW1pbmctPnJl
cXVlc3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldFJlc3BvbnNlU3RhcnQodGlt
aW5nLT5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VF
bmQodGltaW5nLT5yZXNwb25zZUVuZC5taWxsaXNlY29uZHMoKSkKICAgICAgICAgLnJlbGVhc2Uo
KTsKIH0KIApAQCAtMzUxLDcgKzM1Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpSZXNwb25zZT4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIHJlc3Bv
bnNlT2JqZWN0LT5zZXRUaW1pbmcoYnVpbGRPYmplY3RGb3JUaW1pbmcocmVzcG9uc2UuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpLCAqcmVzb3VyY2VMb2FkZXIpKTsKKyAgICAgICAgcmVz
cG9uc2VPYmplY3QtPnNldFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCksICpyZXNvdXJjZUxvYWRlcikpOwogCiAg
ICAgaWYgKGF1dG8mIGNlcnRpZmljYXRlSW5mbyA9IHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygp
KSB7CiAgICAgICAgIGF1dG8gc2VjdXJpdHlQYXlsb2FkID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6
U2VjdXJpdHk6OlNlY3VyaXR5OjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggYTY4Zjg0NTIw
NzM2OTc3YzhiOTIxNjYxNmM1YTE3OGZiZjUyNzVkNi4uYjAzOGExODc5YzA0M2FhMTdkYWU5NzQy
NTY5M2YyOWJlNDJlMzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgY2xh
c3MgSW5zcGVjdG9yTmV0d29ya0FnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6TmV0d28KICAgICBXZWJTb2NrZXQqIHdlYlNvY2tldEZvclJlcXVlc3RJ
ZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCos
IE9wdGlvbmFsPGNvbnN0IFJlc291cmNlUmVxdWVzdCY+ID0gV1RGOjpudWxsb3B0KTsKLSAgICBS
ZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2Jq
ZWN0Rm9yVGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyJik7
CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc291cmNlVGltaW5nPiBi
dWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqLCBSZXNvdXJjZUxv
YWRlciYpOwogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpNZXRyaWNzPiBi
dWlsZE9iamVjdEZvck1ldHJpY3MoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVjdEZv
clJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
Kik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNl
PiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IDY0ZWU1ZGRiYzgyNTkyNWVlNTA0OTE3ZThlMzMyNWM0MTQ2NTRjYzEuLjM3NDIxMjgxY2UyMjE4
ZGJmOWQyNWQ4NzZkNzU4NjJmNTAwZGQ1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02MzAsNyArNjMwLDEzIEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3Vz
TG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCByZXNwb25z
ZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdp
bigpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1l
dHJpY3M+IGVtcHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHku
ZW1wbGFjZSgpOworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAg
IH0KKyAgICAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3lu
Y2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcs
ICp0aW1pbmcsIHJlc3BvbnNlLCBzZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcikKICAgICAg
ICAgICAgIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChyZXNvdXJjZVRpbWluZyk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggYjc0ODJhYTRhYWU5ZmUwYmJhOGRmOTdiNmU0Yzc1YWQ0NDdjNjJhZC4uMTVjMGE3MTk4
YWMyMjIwYjc4Nzg0OTFiOTc2M2NkN2NmZDI3MWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02OTEsNyArNjkxLDEzIEBAIHZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1lCiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxlZ2FjeSBwYXRoIGZvciBwbGF0
Zm9ybXMgKGFuZCBSZXNvdXJjZUhhbmRsZSBwYXRocykgdGhhdCBkbyBub3QgcHJvdmlkZQogICAg
ICAgICAvLyBjb21wbGV0ZSBsb2FkIG1ldHJpY3MgaW4gZGlkRmluaXNoTG9hZC4gSW4gdGhvc2Ug
Y2FzZXMsIGZhbGwgYmFjayB0byB0aGUgcG9zc2liaWxpdHkKICAgICAgICAgLy8gdGhhdCB0aGV5
IHBvcHVsYXRlZCBwYXJ0aWFsIGxvYWQgdGltaW5nIGluZm9ybWF0aW9uIG9uIHRoZSBSZXNvdXJj
ZVJlc3BvbnNlLgotICAgICAgICByZXBvcnRSZXNvdXJjZVRpbWluZyhtX3Jlc291cmNlLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIGNvbnN0IGF1
dG8qIHRpbWluZyA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IGVt
cHR5OworICAgICAgICBpZiAoIXRpbWluZykgeworICAgICAgICAgICAgZW1wdHkuZW1wbGFjZSgp
OworICAgICAgICAgICAgdGltaW5nID0gJmVtcHR5LnZhbHVlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmVwb3J0UmVzb3VyY2VUaW1pbmcoKnRpbWluZyk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVz
b3VyY2UtPnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCA0ZWZkNTRlMDJkNjhm
YTMyZTZjZWZmMDlmMzVlNDRlNzc4YTlkM2JhLi41NmE3NTZkYWJkNzBhNmU5NTM4YTExNzBjODVi
ODA3YzViN2RlY2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNw
cApAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiBmZXRjaFN0YXJ0KCk7CiAgICAgCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmlj
cygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNw
b25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAv
LyBUaGlzIHdpbGwgYmUgLTEgd2hlbiBhIEROUyByZXF1ZXN0IGlzIG5vdCBwZXJmb3JtZWQuCiAg
ICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVlIHRoYXQgaW5kaWNhdGVz
IG5vIEROUywgd2UgImJhY2tmaWxsIiB3aXRoIGZldGNoU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBTdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5kb21h
aW5Mb29rdXBTdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0
Y2hTdGFydCh0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBFbmQoKSBjb25zdApAQCAtMTM2LDE0
ICsxMzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5M
b29rdXBFbmQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gZG9tYWlu
TG9va3VwU3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWlu
ZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7Cisg
ICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCku
ZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMg
d2lsbCBiZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBS
YXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5T
LCB3ZSAiYmFja2ZpbGwiIHdpdGggZG9tYWluTG9va3VwU3RhcnQuCi0gICAgaWYgKHRpbWluZy5k
b21haW5Mb29rdXBFbmQgPCAwX21zKQorICAgIGlmICghdGltaW5nIHx8IHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5k
b21haW5Mb29rdXBFbmQpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Zl
dGNoU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxv
bmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCgpIGNvbnN0CkBAIC0xNTIsMTggKzE1
MiwyMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFy
dCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBF
bmQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gY29ubmVjdFN0YXJ0IHdpbGwg
YmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gbmV3IGNvbm5l
Y3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBkb21haW5Mb29rdXBFbmQuCi0gICAgU2Vjb25kcyBj
b25uZWN0U3RhcnQgPSB0aW1pbmcuY29ubmVjdFN0YXJ0OworICAgIGlmICghdGltaW5nKQorICAg
ICAgICByZXR1cm4gZG9tYWluTG9va3VwRW5kKCk7CisgICAgU2Vjb25kcyBjb25uZWN0U3RhcnQg
PSB0aW1pbmctPmNvbm5lY3RTdGFydDsKICAgICBpZiAoY29ubmVjdFN0YXJ0IDwgMF9tcykKICAg
ICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCiAgICAgLy8gTmV0d29ya0xvYWRNZXRy
aWNzJ3MgY29ubmVjdCBwaGFzZSBpbmNsdWRlcyBETlMsIGhvd2V2ZXIgTmF2aWdhdGlvbiBUaW1p
bmcncwogICAgIC8vIGNvbm5lY3QgcGhhc2Ugc2hvdWxkIG5vdC4gU28gaWYgdGhlcmUgaXMgRE5T
IHRpbWUsIHRyaW0gaXQgZnJvbSB0aGUgc3RhcnQuCi0gICAgaWYgKHRpbWluZy5kb21haW5Mb29r
dXBFbmQgPj0gMF9tcyAmJiB0aW1pbmcuZG9tYWluTG9va3VwRW5kID4gY29ubmVjdFN0YXJ0KQot
ICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmcuZG9tYWluTG9va3VwRW5kOworICAgIGlmICh0
aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA+PSAwX21zICYmIHRpbWluZy0+ZG9tYWluTG9va3VwRW5k
ID4gY29ubmVjdFN0YXJ0KQorICAgICAgICBjb25uZWN0U3RhcnQgPSB0aW1pbmctPmRvbWFpbkxv
b2t1cEVuZDsKIAogICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3Rh
cnQoY29ubmVjdFN0YXJ0KTsKIH0KQEAgLTE3NCwxNCArMTc2LDE0IEBAIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCgpIGNvbnN0CiAgICAgaWYgKCFsb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBjb25uZWN0U3RhcnQoKTsKIAotICAgIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAg
ICAgCiAgICAgLy8gY29ubmVjdEVuZCB3aWxsIGJlIC0xIHdoZW4gYSBuZXR3b3JrIHJlcXVlc3Qg
aXMgbm90IG1hZGUuCiAgICAgLy8gUmF0aGVyIHRoYW4gZXhwb3NpbmcgYSBzcGVjaWFsIHZhbHVl
IHRoYXQgaW5kaWNhdGVzIG5vIG5ldyBjb25uZWN0aW9uLCB3ZSAiYmFja2ZpbGwiIHdpdGggY29u
bmVjdFN0YXJ0LgotICAgIGlmICh0aW1pbmcuY29ubmVjdEVuZCA8IDBfbXMpCisgICAgaWYgKCF0
aW1pbmcgfHwgdGltaW5nLT5jb25uZWN0RW5kIDwgMF9tcykKICAgICAgICAgcmV0dXJuIGNvbm5l
Y3RTdGFydCgpOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmcuY29ubmVjdEVuZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxh
dGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmctPmNvbm5lY3RFbmQpOwogfQogCiB1bnNpZ25lZCBsb25n
IGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CkBA
IC0xOTAsMTIgKzE5MiwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6
OnNlY3VyZUNvbm5lY3Rpb25TdGFydCgpIGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2Fk
ZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0
ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKLSAgICBpZiAodGltaW5nLnNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5zZWN1
cmVDb25uZWN0aW9uU3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biByZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hT
dGFydCh0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcg
bG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0YXJ0KCkgY29uc3QKQEAgLTIwNCwxMCAr
MjA2LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbm5lY3RFbmQo
KTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+
cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vjb25kcyBy
ZXF1ZXN0U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRp
bWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JO
dWxsKCkpCisgICAgICAgIHJlcXVlc3RTdGFydCA9IHRpbWluZy0+cmVxdWVzdFN0YXJ0OwogICAg
IAotICAgIEFTU0VSVCh0aW1pbmcucmVxdWVzdFN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlcXVlc3RTdGFydCk7
CisgICAgQVNTRVJUKHJlcXVlc3RTdGFydCA+PSAwX21zKTsKKyAgICByZXR1cm4gcmVzb3VyY2VM
b2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlcXVlc3RTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgpIGNvbnN0CkBAIC0y
MTYsMTAgKzIyMCwxMiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJl
c3BvbnNlU3RhcnQoKSBjb25zdAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gcmVx
dWVzdFN0YXJ0KCk7CiAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgU2Vj
b25kcyByZXNwb25zZVN0YXJ0ID0gMF9tczsKKyAgICBpZiAoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljc09yTnVsbCgpKQorICAgICAgICByZXNwb25zZVN0YXJ0ID0gdGltaW5nLT5yZXNwb25zZVN0
YXJ0OwogICAgIAotICAgIEFTU0VSVCh0aW1pbmcucmVzcG9uc2VTdGFydCA+PSAwX21zKTsKLSAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5yZXNw
b25zZVN0YXJ0KTsKKyAgICBBU1NFUlQocmVzcG9uc2VTdGFydCA+PSAwX21zKTsKKyAgICByZXR1
cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHJlc3BvbnNlU3RhcnQpOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc3BvbnNlRW5kKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkTWV0cmljcy5oCmluZGV4IGEzNmYzNDk3MjU3ZDY4ODNmNWVjYjkyMWJjZTJhZTBiMzRkMTZi
NzAuLjZmNjM1MzcwMjU2ZWIzYWMxZGQ3OWQzYWE0MDI5ZDY2MWIzOWU2MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaApA
QCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFw
LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmg+CkBAIC00Nyw2ICs0OCw3IEBAIGVudW0gY2xhc3MgTmV0d29ya0xvYWRQcmlv
cml0eSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChOZXR3b3JrTG9hZE1ldHJpY3MpOwogcHVibGljOgogICAg
IE5ldHdvcmtMb2FkTWV0cmljcygpCiAgICAgewpAQCAtMTg0LDcgKzE4Niw3IEBAIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljcyB7CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1XRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTmV0d29y
a0xvYWRNZXRyaWNzJik7CitXRUJDT1JFX0VYUE9SVCBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBj
b3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEpOwogI2VuZGlmCiAKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKaW5kZXggYTNkNGYwNDQwNTlkZmQ5YTU3YjMx
OTI5ZGI4ZjExMmMxNWY2MjExMy4uMThkNDY3NTMwMTQ2ZGE1MWRhYmIzNTBhNWZiNjk3ZDQ1NGU2
MWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRD
b250ZW50UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFy
c2VkQ29udGVudFJhbmdlLmNwcApAQCAtMzksMTEgKzM5LDEzIEBAIHN0YXRpYyBib29sIGFyZUNv
bnRlbnRSYW5nZVZhbHVlc1ZhbGlkKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3Qg
bGFzdEJ5CiAgICAgLy8gb3Igd2hvc2UgaW5zdGFuY2UtbGVuZ3RoIHZhbHVlIGlzIGxlc3MgdGhh
biBvciBlcXVhbCB0byBpdHMgbGFzdC1ieXRlLXBvcyB2YWx1ZSwgaXMgaW52YWxpZC4KICAgICBp
ZiAoZmlyc3RCeXRlUG9zaXRpb24gPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNT
RVJUKGZpcnN0Qnl0ZVBvc2l0aW9uID49IDApOwogCiAgICAgaWYgKGxhc3RCeXRlUG9zaXRpb24g
PCBmaXJzdEJ5dGVQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChs
YXN0Qnl0ZVBvc2l0aW9uID49IDApOwogCi0gICAgaWYgKGluc3RhbmNlTGVuZ3RoID09IFBhcnNl
ZENvbnRlbnRSYW5nZTo6VW5rbm93bkxlbmd0aCkKKyAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0g
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBsYXN0Qnl0ZVBvc2l0aW9uIDwgaW5zdGFuY2VMZW5ndGg7CkBAIC05Niw3
ICs5OCw3IEBAIHN0YXRpYyBib29sIHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVh
ZGVyVmFsdWUsIGludDY0X3QmIGZpcnN0Qnl0ZVBvc2l0CiAKICAgICBTdHJpbmcgaW5zdGFuY2VT
dHJpbmcgPSBoZWFkZXJWYWx1ZS5zdWJzdHJpbmcoaW5zdGFuY2VMZW5ndGhTZXBhcmF0b3JUb2tl
biArIDEpOwogICAgIGlmIChpbnN0YW5jZVN0cmluZyA9PSAiKiIpCi0gICAgICAgIGluc3RhbmNl
TGVuZ3RoID0gUGFyc2VkQ29udGVudFJhbmdlOjpVbmtub3duTGVuZ3RoOworICAgICAgICBpbnN0
YW5jZUxlbmd0aCA9IFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxlbmd0aDsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKCFpbnN0YW5jZVN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlz
QVNDSUlEaWdpdD4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMSw3ICsxMTMs
OCBAQCBzdGF0aWMgYm9vbCBwYXJzZUNvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmIGhlYWRlclZh
bHVlLCBpbnQ2NF90JiBmaXJzdEJ5dGVQb3NpdAogCiBQYXJzZWRDb250ZW50UmFuZ2U6OlBhcnNl
ZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogewotICAgIG1faXNWYWxp
ZCA9IHBhcnNlQ29udGVudFJhbmdlKGhlYWRlclZhbHVlLCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCBt
X2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFuY2VMZW5ndGgpOworICAgIGlmICghcGFyc2VDb250
ZW50UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3Np
dGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisgICAgICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZh
bGlkTGVuZ3RoOwogfQogCiBQYXJzZWRDb250ZW50UmFuZ2U6OlBhcnNlZENvbnRlbnRSYW5nZShp
bnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90IGxhc3RCeXRlUG9zaXRpb24sIGludDY0
X3QgaW5zdGFuY2VMZW5ndGgpCkBAIC0xMTksMTQgKzEyMiwxNSBAQCBQYXJzZWRDb250ZW50UmFu
Z2U6OlBhcnNlZENvbnRlbnRSYW5nZShpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uLCBpbnQ2NF90
IGxhc3RCeQogICAgICwgbV9sYXN0Qnl0ZVBvc2l0aW9uKGxhc3RCeXRlUG9zaXRpb24pCiAgICAg
LCBtX2luc3RhbmNlTGVuZ3RoKGluc3RhbmNlTGVuZ3RoKQogewotICAgIG1faXNWYWxpZCA9IGFy
ZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQ
b3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFhcmVDb250ZW50UmFuZ2VWYWx1
ZXNWYWxpZChtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCBtX2xhc3RCeXRlUG9zaXRpb24sIG1faW5zdGFu
Y2VMZW5ndGgpKQorICAgICAgICBtX2luc3RhbmNlTGVuZ3RoID0gaW52YWxpZExlbmd0aDsKIH0K
IAogU3RyaW5nIFBhcnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUoKSBjb25zdAogewotICAg
IGlmICghbV9pc1ZhbGlkKQorICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgaWYgKG1faW5zdGFuY2VMZW5ndGggPT0gVW5rbm93bkxlbmd0aCkKKyAgICBp
ZiAobV9pbnN0YW5jZUxlbmd0aCA9PSB1bmtub3duTGVuZ3RoKQogICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiYnl0ZXMgIiwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgJy0nLCBtX2xhc3RCeXRlUG9z
aXRpb24sICIvKiIpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRlcyAiLCBtX2ZpcnN0Qnl0
ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgJy8nLCBtX2luc3RhbmNlTGVuZ3Ro
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENv
bnRlbnRSYW5nZS5oCmluZGV4IDVhMDcwNGJkNGI5NmZkY2JhOTBkYzE0Y2E0NjZjYjhlZmQ3ZGU1
YzAuLmEzYjRiZjNiNzJkMWNjZThjMDM3YjhhZDA5MDcyOWE4OWZiZTdmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaApA
QCAtMjMsMzcgKzIzLDU0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFBhcnNl
ZENvbnRlbnRSYW5nZV9oCi0jZGVmaW5lIFBhcnNlZENvbnRlbnRSYW5nZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFyc2VkQ29udGVudFJhbmdlIHsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgaW52YWxpZExlbmd0aCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
NjRfdCB1bmtub3duTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCk7
CisKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQYXJzZWRDb250ZW50UmFuZ2UoY29uc3Qg
U3RyaW5nJik7Ci0gICAgUGFyc2VkQ29udGVudFJhbmdlKCkgeyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3Qg
bGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxlbmd0aCk7CisgICAgUGFyc2VkQ29u
dGVudFJhbmdlKCkgPSBkZWZhdWx0OwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1ZhbGlkOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
YW5jZUxlbmd0aCAhPSBpbnZhbGlkTGVuZ3RoOyB9CiAgICAgaW50NjRfdCBmaXJzdEJ5dGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RCeXRlUG9zaXRpb247IH0KICAgICBpbnQ2NF90
IGxhc3RCeXRlUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RCeXRlUG9zaXRpb247IH0K
ICAgICBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZUxl
bmd0aDsgfQogCisgICAgc3RhdGljIFBhcnNlZENvbnRlbnRSYW5nZSBpbnZhbGlkVmFsdWUoKQor
ICAgIHsKKyAgICAgICAgUGFyc2VkQ29udGVudFJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5t
X2ZpcnN0Qnl0ZVBvc2l0aW9uID0gaW52YWxpZExlbmd0aDsKKyAgICAgICAgcmFuZ2UubV9sYXN0
Qnl0ZVBvc2l0aW9uID0gaW52YWxpZExlbmd0aDsKKyAgICAgICAgcmFuZ2UubV9pbnN0YW5jZUxl
bmd0aCA9IGludmFsaWRMZW5ndGg7CisgICAgICAgIHJldHVybiByYW5nZTsKKyAgICB9CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaGVhZGVyVmFsdWUoKSBjb25zdDsKIAotICAgIGVudW0g
eyBVbmtub3duTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkgfTsK
KyAgICBzdHJ1Y3QgTWFya2FibGVUcmFpdHMgeworICAgICAgICBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoY29uc3QgUGFyc2VkQ29udGVudFJhbmdlJiByYW5nZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFyYW5nZS5pc1ZhbGlkKCk7CisgICAgICAgIH0KIAotcHJpdmF0ZToKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgYm9vbCBpc1Bvc2l0aXZlKFQpOworICAgICAg
ICBzdGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGVtcHR5VmFsdWUoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gUGFyc2VkQ29udGVudFJhbmdlOjppbnZhbGlkVmFsdWUoKTsKKyAgICAg
ICAgfQorICAgIH07CiAKK3ByaXZhdGU6CiAgICAgaW50NjRfdCBtX2ZpcnN0Qnl0ZVBvc2l0aW9u
IHsgMCB9OwogICAgIGludDY0X3QgbV9sYXN0Qnl0ZVBvc2l0aW9uIHsgMCB9OwotICAgIGludDY0
X3QgbV9pbnN0YW5jZUxlbmd0aCB7IFVua25vd25MZW5ndGggfTsKLSAgICBib29sIG1faXNWYWxp
ZCB7IGZhbHNlIH07CisgICAgaW50NjRfdCBtX2luc3RhbmNlTGVuZ3RoIHsgdW5rbm93bkxlbmd0
aCB9OwogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCA2ODA3NDA0YmZmZGE2ZjVkZWQ1OTA1NWNmMDFl
MmM5ZTZjNGIyNWZjLi4xOWUxYTZiN2ZiYzE5MTRmNzE2NzM5ZjU3ZjhiNmI2OGRmYTc1NjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgog
I2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmgiCisjaW5jbHVkZSA8d3RmL0JveC5o
PgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMzEsOSArMTMyLDkgQEAgY2xhc3Mg
UmVzb3VyY2VIYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUhhbmRsZT4sIHB1Ymxp
YyBBdXRoZW50aWNhdGlvbkMKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmIFVTRShDRlVSTENP
Tk5FQ1RJT04pCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxD
b25uZWN0aW9uUmVmLCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgQm94PE5ldHdv
cmtMb2FkTWV0cmljcz4gZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoQ0ZVUkxDb25uZWN0aW9uUmVm
KTsKICNlbHNlCi0gICAgc3RhdGljIHZvaWQgZ2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxD
b25uZWN0aW9uICosIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRpYyBCb3g8TmV0d29y
a0xvYWRNZXRyaWNzPiBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKik7
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGU5YWNjZWJkNzcyMGFjMzNh
NjgwODdiNDliMGY4MmQwOTJiZTJhZDAuLmJhMDI0ODQwZTBiZjBjZjIzNGZjYWM5ZjgzMDg1OWUz
NjM3NDY0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC01NSw3ICs1NSwxMiBAQCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogICAgICwgbV9oYXZlUGFyc2VkTGFz
dE1vZGlmaWVkSGVhZGVyKGZhbHNlKQogICAgICwgbV9oYXZlUGFyc2VkQ29udGVudFJhbmdlSGVh
ZGVyKGZhbHNlKQogICAgICwgbV9pc1JlZGlyZWN0ZWQoZmFsc2UpCisgICAgLCBtX2lzUmFuZ2VS
ZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICwgbV91c2VkTGVnYWN5
VExTKFVzZWRMZWdhY3lUTFM6Ok5vKQorICAgICwgbV90YWludGluZyhUYWludGluZzo6QmFzaWMp
CisgICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCisgICAgLCBtX3R5cGUoVHlwZTo6RGVm
YXVsdCkKIHsKIH0KIApAQCAtNzIsNyArNzcsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXAK
ICAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihmYWxzZSkKICAgICAsIG1faGF2
ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlcihmYWxzZSkKICAgICAsIG1faXNSZWRpcmVjdGVkKGZh
bHNlKQorICAgICwgbV9pc1JhbmdlUmVxdWVzdGVkKGZhbHNlKQogICAgICwgbV9pc051bGwoZmFs
c2UpCisgICAgLCBtX3VzZWRMZWdhY3lUTFMoVXNlZExlZ2FjeVRMUzo6Tm8pCisgICAgLCBtX3Rh
aW50aW5nKFRhaW50aW5nOjpCYXNpYykKKyAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikK
KyAgICAsIG1fdHlwZShUeXBlOjpEZWZhdWx0KQogewogfQogCkBAIC05MCw3ICsxMDAsOCBAQCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6Q3Jvc3NUaHJlYWREYXRhIFJlc291cmNlUmVzcG9uc2VCYXNl
Ojpjcm9zc1RocmVhZERhdGEoKSBjbwogICAgIGRhdGEuaHR0cFZlcnNpb24gPSBodHRwVmVyc2lv
bigpLmlzb2xhdGVkQ29weSgpOwogCiAgICAgZGF0YS5odHRwSGVhZGVyRmllbGRzID0gaHR0cEhl
YWRlckZpZWxkcygpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEubmV0d29ya0xvYWRNZXRyaWNz
ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuaXNvbGF0ZWRDb3B5KCk7CisgICAgaWYgKG1fbmV0d29y
a0xvYWRNZXRyaWNzKQorICAgICAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLT5pc29sYXRlZENvcHkoKTsKICAgICBkYXRhLnR5cGUgPSBtX3R5cGU7CiAg
ICAgZGF0YS50YWludGluZyA9IG1fdGFpbnRpbmc7CiAgICAgZGF0YS5pc1JlZGlyZWN0ZWQgPSBt
X2lzUmVkaXJlY3RlZDsKQEAgLTExMyw3ICsxMjQsMTAgQEAgUmVzb3VyY2VSZXNwb25zZSBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6ZnJvbUNyb3NzVGhyZWFkRGF0YShDcm9zc1RocmVhZERhdGEmJiBk
YXQKICAgICByZXNwb25zZS5zZXRIVFRQVmVyc2lvbihkYXRhLmh0dHBWZXJzaW9uKTsKIAogICAg
IHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcyA9IFdURk1vdmUoZGF0YS5odHRwSGVhZGVyRmll
bGRzKTsKLSAgICByZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcyA9IGRhdGEubmV0d29ya0xv
YWRNZXRyaWNzOworICAgIGlmIChkYXRhLm5ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAgcmVz
cG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MudmFsdWUoKSkpOworICAgIGVsc2UK
KyAgICAgICAgcmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBudWxscHRyOwogICAgIHJl
c3BvbnNlLm1fdHlwZSA9IGRhdGEudHlwZTsKICAgICByZXNwb25zZS5tX3RhaW50aW5nID0gZGF0
YS50YWludGluZzsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IGRhdGEuaXNSZWRpcmVj
dGVkOwpAQCAtODA4LDggKzgyMiwxNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEuaHR0cEhlYWRlckZpZWxkcygpICE9IGIuaHR0cEhl
YWRlckZpZWxkcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljcygpICE9IGIuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEubV9uZXR3b3JrTG9hZE1ldHJpY3Mu
Z2V0KCkgIT0gYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkgeworICAgICAgICBpZiAoIWEu
bV9uZXR3b3JrTG9hZE1ldHJpY3MpIHsKKyAgICAgICAgICAgIGlmIChOZXR3b3JrTG9hZE1ldHJp
Y3MoKSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAoIWIubV9uZXR3b3JrTG9hZE1ldHJpY3Mp
IHsKKyAgICAgICAgICAgIGlmIChOZXR3b3JrTG9hZE1ldHJpY3MoKSAhPSAqYS5tX25ldHdvcmtM
b2FkTWV0cmljcy5nZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0gZWxzZSBpZiAoKmEubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkgIT0gKmIubV9uZXR3b3Jr
TG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IHJldHVybiBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaAppbmRleCA4ODk0NDE2YmUzYjYxN2YxZjc3MzZkODk4ZWFjM2U4ZDkxMzU0MmZkLi5k
NWFmMzg4YzM5YmVlZWJlMjkxYzY0ZDljZWFhNTA0ZmI4NzNlMTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC00Miw2ICs0Myw4IEBAIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBib29sIGlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKIGVudW0gY2xhc3MgVXNlZExlZ2FjeVRMUyA6IGJvb2wg
eyBObywgWWVzIH07CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoT2ZVc2VkTGVn
YWN5VExTID0gMTsKK3N0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVzZWRMZWdh
Y3lUTFM6OlllcykgPD0gKCgxVSA8PCBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUykgLSAxKSk7CiAK
IC8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlIGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKQEAgLTY4LDcg
KzcxLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgICAgICBTdHJpbmcgaHR0
cFN0YXR1c1RleHQ7CiAgICAgICAgIFN0cmluZyBodHRwVmVyc2lvbjsKICAgICAgICAgSFRUUEhl
YWRlck1hcCBodHRwSGVhZGVyRmllbGRzOwotICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0
d29ya0xvYWRNZXRyaWNzOworICAgICAgICBPcHRpb25hbDxOZXR3b3JrTG9hZE1ldHJpY3M+IG5l
dHdvcmtMb2FkTWV0cmljczsKICAgICAgICAgVHlwZSB0eXBlOwogICAgICAgICBUYWludGluZyB0
YWludGluZzsKICAgICAgICAgYm9vbCBpc1JlZGlyZWN0ZWQ7CkBAIC0xNTAsNiArMTUzLDkgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIGNvbnN0IFBhcnNlZENvbnRlbnRSYW5n
ZSYgY29udGVudFJhbmdlKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFNvdXJjZSA6IHVpbnQ4
X3QgeyBVbmtub3duLCBOZXR3b3JrLCBEaXNrQ2FjaGUsIERpc2tDYWNoZUFmdGVyVmFsaWRhdGlv
biwgTWVtb3J5Q2FjaGUsIE1lbW9yeUNhY2hlQWZ0ZXJWYWxpZGF0aW9uLCBTZXJ2aWNlV29ya2Vy
LCBBcHBsaWNhdGlvbkNhY2hlLCBET01DYWNoZSwgSW5zcGVjdG9yT3ZlcnJpZGUgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdFdpZHRoT2ZTb3VyY2UgPSA0OworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNvdXJjZTo6SW5zcGVjdG9yT3ZlcnJpZGUp
IDw9ICgoMVUgPDwgYml0V2lkdGhPZlNvdXJjZSkgLSAxKSk7CisKICAgICBXRUJDT1JFX0VYUE9S
VCBTb3VyY2Ugc291cmNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTb3VyY2UoU291cmNlIHNvdXJj
ZSkKICAgICB7CkBAIC0xNjAsNyArMTY2LDE2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNl
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZWxpbWluYXRlZCBmcm9tIFJlc291cmNl
UmVzcG9uc2UuCiAgICAgLy8gTmV0d29yayBsb2FkaW5nIG1ldHJpY3Mgc2hvdWxkIGJlIGRlbGl2
ZXJlZCB2aWEgZGlkRmluaXNoTG9hZAogICAgIC8vIGFuZCBzaG91bGQgbm90IGJlIHBhcnQgb2Yg
dGhlIFJlc291cmNlUmVzcG9uc2UuCi0gICAgTmV0d29ya0xvYWRNZXRyaWNzJiBkZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7
IH0KKyAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIGRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3NPck51bGwoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya0xvYWRNZXRy
aWNzKQorICAgICAgICAgICAgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgdm9pZCBzZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+JiYgbWV0cmljcykKKyAgICB7Cisg
ICAgICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gV1RGTW92ZShtZXRyaWNzKTsKKyAgICB9CiAK
ICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBt
ZXRob2QgdG8gcHJvdmlkZSBwbGF0Zm9ybS1zcGVjaWZpYyBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRp
b24KICAgICB1bnNpZ25lZCBtZW1vcnlVc2FnZSgpIGNvbnN0CkBAIC0yMjIsNyArMjM3LDcgQEAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIEF0b21TdHJpbmcgbV9odHRwU3RhdHVz
VGV4dDsKICAgICBBdG9tU3RyaW5nIG1faHR0cFZlcnNpb247CiAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7Ci0gICAgbXV0YWJsZSBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3
b3JrTG9hZE1ldHJpY3M7CisgICAgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7CiAKICAgICBtdXRhYmxlIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0
aWZpY2F0ZUluZm87CiAKQEAgLTI0MSwxOCArMjU2LDE3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlIHsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVy
IDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkQ29udGVudFJhbmdlSGVhZGVyIDog
MTsKICAgICBib29sIG1faXNSZWRpcmVjdGVkIDogMTsKKyAgICBib29sIG1faXNSYW5nZVJlcXVl
c3RlZCA6IDE7CiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzTnVsbCA6IDE7Ci0KKyAgICB1bnNp
Z25lZCBtX2luaXRMZXZlbCA6IDM7IC8vIENvbnRyb2xsZWQgYnkgUmVzb3VyY2VSZXNwb25zZS4K
KyAgICBtdXRhYmxlIFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIDogYml0V2lkdGhPZlVz
ZWRMZWdhY3lUTFM7CiBwcml2YXRlOgotICAgIFNvdXJjZSBtX3NvdXJjZSB7IFNvdXJjZTo6VW5r
bm93biB9OwotICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6RGVmYXVsdCB9OwotICAgIFRhaW50aW5n
IG1fdGFpbnRpbmcgeyBUYWludGluZzo6QmFzaWMgfTsKLSAgICBib29sIG1faXNSYW5nZVJlcXVl
c3RlZCB7IGZhbHNlIH07Ci0KKyAgICBUYWludGluZyBtX3RhaW50aW5nIDogYml0V2lkdGhPZlRh
aW50aW5nOworICAgIFNvdXJjZSBtX3NvdXJjZSA6IGJpdFdpZHRoT2ZTb3VyY2U7CisgICAgVHlw
ZSBtX3R5cGUgOiBiaXRXaWR0aE9mVHlwZTsKIHByb3RlY3RlZDoKICAgICBzaG9ydCBtX2h0dHBT
dGF0dXNDb2RlIHsgMCB9OwotICAgIG11dGFibGUgVXNlZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lU
TFMgeyBVc2VkTGVnYWN5VExTOjpObyB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKSB7IHJl
dHVybiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQpAQCAtMjc2LDcgKzI5
MCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwdXQgdGhlIG5ldHdvcmtMb2FkTWV0
cmljcyBpbmZvCiAgICAgLy8gaW50byB0aGUgZGlzayBjYWNoZSwgYmVjYXVzZSB3ZSB3aWxsIG5l
dmVyIHVzZSB0aGUgb2xkIGluZm8uCi0gICAgaWYgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKKyAg
ICBpZiBjb25zdGV4cHIgKEVuY29kZXI6OmlzSVBDRW5jb2RlcikKICAgICAgICAgZW5jb2RlciA8
PCBtX25ldHdvcmtMb2FkTWV0cmljczsKIAogICAgIGVuY29kZXIgPDwgbV9odHRwU3RhdHVzQ29k
ZTsKQEAgLTI4NSw3ICsyOTksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90eXBlKTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obV90YWludGluZyk7CiAgICAgZW5jb2RlciA8PCBtX2lz
UmVkaXJlY3RlZDsKLSAgICBlbmNvZGVyIDw8IG1fdXNlZExlZ2FjeVRMUzsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PFVzZWRMZWdhY3lUTFM+KG1fdXNlZExlZ2FjeVRMUyk7CiAgICAgZW5j
b2RlciA8PCBtX2lzUmFuZ2VSZXF1ZXN0ZWQ7CiB9CiAKQEAgLTMxOCwyNCArMzMyLDM0IEBAIGJv
b2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSYgcmVzcG9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5t
X2h0dHBIZWFkZXJGaWVsZHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIG5l
dHdvcmtMb2FkTWV0cmljcyBpbmZvIGlzIG9ubHkgc2VuZCBvdmVyIElQQyBhbmQgbm90IHN0b3Jl
ZCBpbiBkaXNrIGNhY2hlLgotICAgIGlmIChEZWNvZGVyOjppc0lQQ0RlY29kZXIgJiYgIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIGNvbnN0ZXhwciAoRGVjb2Rlcjo6aXNJUENEZWNvZGVyKSB7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3BvbnNlLm1faHR0cFN0YXR1c0NvZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2NlcnRpZmljYXRlSW5mbykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3Nv
dXJjZSkpCisgICAgU291cmNlIHNvdXJjZSA9IFNvdXJjZTo6VW5rbm93bjsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bShzb3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90eXBlKSkKKyAgICByZXNwb25zZS5tX3Nv
dXJjZSA9IHNvdXJjZTsKKyAgICBUeXBlIHR5cGUgPSBUeXBlOjpEZWZhdWx0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV90YWludGluZykpCisgICAgcmVzcG9uc2Uu
bV90eXBlID0gdHlwZTsKKyAgICBUYWludGluZyB0YWludGluZyA9IFRhaW50aW5nOjpCYXNpYzsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0YWludGluZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXNwb25zZS5tX3RhaW50aW5nID0gdGFpbnRpbmc7CiAgICAgYm9vbCBpc1Jl
ZGlyZWN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmVkaXJlY3RlZCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5tX2lzUmVkaXJlY3RlZCA9IGlz
UmVkaXJlY3RlZDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fdXNlZExlZ2Fj
eVRMUykpCisgICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVnYWN5VExTID0gVXNlZExlZ2FjeVRMUzo6
Tm87CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VkTGVnYWN5VExTKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdhY3lUTFM7
CiAgICAgYm9vbCBpc1JhbmdlUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc1JhbmdlUmVxdWVzdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaApp
bmRleCBhOWYzOWYzOTMwMTI4YTUzMzM0MDYxYzVjYzQwYmRmOTQ5YTAzMDcwLi4yYWM3ZWRiZmE5
NzljZGE5NmMyMmNmNTZjYjcyMWYzMjkwMmM2NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzksMzAgKzM5
LDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJs
aWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogcHVibGljOgogICAgIFJlc291cmNlUmVzcG9uc2Uo
KQotICAgICAgICA6IG1faW5pdExldmVsKEFsbEZpZWxkcykKICAgICB7CisgICAgICAgIG1faW5p
dExldmVsID0gQWxsRmllbGRzOwogICAgIH0KIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAg
ICAgUmVzb3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi0gICAgICAg
IDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAgICAgLCBtX2NmUmVzcG9uc2UoY2ZS
ZXNwb25zZSkKKyAgICAgICAgOiBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKICAgICB7CisgICAg
ICAgIG1faW5pdExldmVsID0gVW5pbml0aWFsaXplZDsKICAgICAgICAgbV9pc051bGwgPSAhY2ZS
ZXNwb25zZTsKICAgICB9CiAjZWxzZQogICAgIFJlc291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25z
ZSAqbnNSZXNwb25zZSkKLSAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAg
ICAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQorICAgICAgICA6IG1fbnNSZXNwb25zZShu
c1Jlc3BvbnNlKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBVbmluaXRpYWxpemVkOwog
ICAgICAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOwogICAgIH0KICNlbmRpZgogCiAgICAgUmVz
b3VyY2VSZXNwb25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiAg
ICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUpCi0gICAgICAgICwgbV9pbml0TGV2ZWwoQWxsRmllbGRzKQog
ICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBBbGxGaWVsZHM7CiAgICAgfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC0xMDYsOCArMTA2LDYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6
IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9y
bUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYik7CiAKLSAgICB1bnNpZ25lZCBtX2luaXRMZXZlbCA6IDM7Ci0KICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBib29sIG1faXNRdWlja0xvb2sgeyBmYWxzZSB9OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0
cmljcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xv
YWRNZXRyaWNzLm1tCmluZGV4IGZiYjhkNjgwODhhZGRiYmMwYjY4NzAxMmY4ZDQxMGJiZTM5MGRj
YjEuLjlkYWZmN2U5N2YxOGY1ZjAyMTllZWYwYzZhMmNmMmZlYzE0MTU2N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNz
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xv
YWRNZXRyaWNzLm1tCkBAIC0zNywxMCArMzcsMTIgQEAgc3RhdGljIGRvdWJsZSB0aW1pbmdWYWx1
ZShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIE5TU3RyaW5nICprZXkpCiAgICAgcmV0dXJuIDAu
MDsKIH0KICAgICAKLXZvaWQgY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRh
LCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZykKK0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNv
cHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSkKIHsKICAgICBpZiAoIXRpbWlu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPiB0aW1pbmcgPSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKCk7CiAKICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgbmF2aWdhdGlvblN0YXJ0IHRpbWUg
aW4gbW9ub3RvbmljIHRpbWUsIGJ1dCB0aGUgb3RoZXIgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRo
aXMgdGltZQogICAgIC8vIGFuZCBvbmx5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRpbWVzIGFy
ZSBzdG9yZWQuCkBAIC01NCwxNSArNTYsMTcgQEAgdm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rp
b25hcnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQogICAgIGRvdWJs
ZSByZXF1ZXN0U3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0
YVJlcXVlc3RTdGFydCIpOwogICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gdGltaW5nVmFsdWUo
dGltaW5nRGF0YSwgQCJfa0NGTlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Iik7CiAKLSAgICB0aW1p
bmcuZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAgPyAt
MSA6IGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5kb21h
aW5Mb29rdXBFbmQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZCA8PSAwID8gLTEgOiBkb21haW5M
b29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmNvbm5lY3RTdGFydCA9IFNl
Y29uZHMoY29ubmVjdFN0YXJ0IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0
YXJ0KTsKLSAgICB0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gU2Vjb25kcyhzZWN1cmVD
b25uZWN0aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJl
bmNlU3RhcnQpOwotICAgIHRpbWluZy5jb25uZWN0RW5kID0gU2Vjb25kcyhjb25uZWN0RW5kIDw9
IDAgPyAtMSA6IGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLnJlcXVl
c3RTdGFydCA9IFNlY29uZHMocmVxdWVzdFN0YXJ0IDw9IDAgPyAwIDogcmVxdWVzdFN0YXJ0IC0g
cmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5yZXNwb25zZVN0YXJ0ID0gU2Vjb25kcyhyZXNw
b25zZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAg
ICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8
PSAwID8gLTEgOiBkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6
IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPmNvbm5lY3RT
dGFydCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IFNlY29u
ZHMoc2VjdXJlQ29ubmVjdGlvblN0YXJ0IDw9IDAgPyAtMSA6IHNlY3VyZUNvbm5lY3Rpb25TdGFy
dCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPmNvbm5lY3RFbmQgPSBTZWNvbmRzKGNv
bm5lY3RFbmQgPD0gMCA/IC0xIDogY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKKyAgICB0
aW1pbmctPnJlcXVlc3RTdGFydCA9IFNlY29uZHMocmVxdWVzdFN0YXJ0IDw9IDAgPyAwIDogcmVx
dWVzdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9
IFNlY29uZHMocmVzcG9uc2VTdGFydCA8PSAwID8gMCA6IHJlc3BvbnNlU3RhcnQgLSByZWZlcmVu
Y2VTdGFydCk7CiAKICAgICAvLyBOT1RFOiByZXNwb25zZUVuZCBpcyBub3QgcG9wdWxhdGVkIGlu
IHRoaXMgY29kZSBwYXRoLgorCisgICAgcmV0dXJuIHRpbWluZzsKIH0KICAgICAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0KaW5kZXggMDNmYTI2ODdmNjgxODEzNDE0MWQxYzY5NTE4YmI4N2Y4ODBjYWIyMy4u
NzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEwNzJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0KQEAgLTY1NSw5ICs2NTUsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxs
ZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIGNsZWFy
QXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlv
blRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIHRpbWluZykKK0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IFJlc291cmNlSGFuZGxlOjpnZXRD
b25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiB7Ci0gICAg
Y29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOworICAgIHJl
dHVybiBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggODMwZWQwNjc0MDZlNTgxOTUz
NTM2MTVmN2YyNjNhMmRhYTMzMDEyMi4uMTllNjIwNTgwYjc2ODJmODZlNzJjZDkzYjdkNGZkOTMx
OWVhYmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uCiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNl
KHIuZ2V0KCkpOwogICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29u
bmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbi5nZXQoKSwgcmVzb3VyY2VSZXNwb25zZS5kZXBy
ZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rp
b25UaW1pbmdEYXRhKGNvbm5lY3Rpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX2hhbmRsZS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtzZWxmLCBwcm90ZWN0
ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKV0gewogICAgICAgICAgICAgbV9zZW1hcGhv
cmUuc2lnbmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmEzNTkyNDJhN2IzNzdiODBhYjYx
MzkyNDk3N2E5NWNlZjZkYTkwMC4uYjlmMDE1NDFlZTNiMmE1NGI0YTM2NWM0YjgwMzU0NzE0ZWZl
MTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIC0gKHZvaWQpVVJM
U2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0
YVRhc2sgKilkYXRhCiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGJlIGVsaW1pbmF0
ZWQgdW50aWwgb3RoZXIgY29kZSBubyBsb25nZXIgcmVsaWVzIG9uIFJlc291cmNlUmVzcG9uc2Un
cwogICAgICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MuIEZvciBleGFtcGxlLCBQZXJmb3JtYW5j
ZVRpbWluZy4KLSAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSwg
cmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAg
ICByZXNvdXJjZVJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV2ViQ29y
ZTo6Y29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSkpOwogCiAgICAgICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7
CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVz
b3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxlckNv
cHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKaW5kZXggOWU0MTkxNjc0YTA1NTU0NmM3OWIxYTY4NzY3OWIxMjI2
MDFmMTM0Ny4uYjJkZDllNTM2NjA2YTFkYWQwMTU3ZjdiODBmMGE2YmE3NmRkZWEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtMzY3LDE2ICszNjcsMTcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3Bv
bnNlLmlzTnVsbCgpKTsKIAorICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRpbWluZyA9IEJv
eDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKKyAgICB0aW1pbmctPnJlc3BvbnNlU3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OworICAgIHRpbWluZy0+ZG9t
YWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBTdGFydDsK
KyAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFp
bkxvb2t1cEVuZDsKKyAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLmNvbm5lY3RTdGFydDsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IG1f
bmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKKyAgICB0aW1pbmctPmNv
bm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kOworICAgIHRpbWluZy0+
cmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OworICAgIHRp
bWluZy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugbm9ib2R5IGRlcGVuZHMgb24gZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcy4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIGRlcHJlY2F0
ZWRSZXNwb25zZU1ldHJpY3MgPSBtX3Jlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoKTsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25l
dHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1l
dHJpY3MuZG9tYWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29r
dXBTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCA9
IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZDsKLSAgICBkZXByZWNhdGVkUmVz
cG9uc2VNZXRyaWNzLmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RT
dGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICBkZXBy
ZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmNvbm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5j
b25uZWN0RW5kOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVzdFN0YXJ0ID0g
bV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25z
ZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3Rh
cnQ7CisgICAgbV9yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKFdURk1v
dmUodGltaW5nKSk7CiAKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSht
X3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21w
bGV0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmlu
ZGV4IDlhY2Q3ZmRhZTQ2MDJmYmVlNzUzZDU4ZGU3NGI5MTBmMTI1NWFhOWMuLjU4YzQ1NjQ2ODhj
OGYzZjJlYWMxYWM0NzAxODJiODVhZmFkZmM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRlY29k
ZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CkBAIC0xMjMsNiArMTI0LDU0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7
CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
Qm94PFQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEJveDxUPiYgYm94KQorICAgIHsKKyAgICAgICAgaWYgKCFib3gpIHsKKyAgICAgICAgICAgIGVu
Y29kZXIgPDwgZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgKmJveC5nZXQoKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQm94PFQ+JiBib3gp
CisgICAgeworICAgICAgICBib29sIGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc0VuZ2FnZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
ICghaXNFbmdhZ2VkKSB7CisgICAgICAgICAgICBib3ggPSBudWxscHRyOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBCb3g8VD4gdmFsdWUgPSBCb3g8VD46
OmNyZWF0ZSgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp2YWx1ZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYm94ID0gV1RGTW92ZSh2YWx1ZSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxCb3g8VD4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNF
bmdhZ2VkOworICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFpc0Vu
Z2FnZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoKmlz
RW5nYWdlZCkgeworICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAgICAgICAgICBk
ZWNvZGVyID4+IHZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEJveDxU
Pj4oQm94PFQ+OjpjcmVhdGUoV1RGTW92ZSgqdmFsdWUpKSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPEJveDxUPj4oQm94PFQ+KG51bGxwdHIpKTsKKyAgICB9Cit9OworCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnBhaXI8VCwgVT4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwYWlyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0Y2ZhNmYzZmU1OGQ0Y2EyOWIzZTJmZGEw
YWE3MjExZWVhNjUwMTY5Li4zNjg1ODg2NjRhZDg1MTk5ZGU2ZmJlMGU4NDBjYTk3Njg0YTdkMDMw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjAtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIGJlIHNoYXJlZCBieSBtdWx0
aXBsZSBSZXNvdXJjZVJlc3BvbnNlIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFy
c2VkQ29udGVudFJhbmdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIwLTAyLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6IEFsbG93IGluc2VjdXJlIHJlcXVlc3RzIG9uIHVw
bG9hZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNl
ZENvbnRlbnRSYW5nZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFy
c2VkQ29udGVudFJhbmdlLmNwcAppbmRleCA5ODYzODgzMDJkOTA4ZTBjM2JjMjVhODhhM2E5ZDMw
OTk2YWRmNmYxLi4yMGE5NTdlNTljODUxNjBjODA4MzE3ZTE1YjAxMDI4ZDVmYTliNDU4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJh
bmdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29u
dGVudFJhbmdlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBURVNUKFdlYkNvcmUsIFBhcnNlZENvbnRl
bnRSYW5nZUZyb21TdHJpbmcpCiAgICAgQVNTRVJUX0VRKDAsIFBhcnNlZENvbnRlbnRSYW5nZSgi
Ynl0ZXMgMC0xLzIiKS5maXJzdEJ5dGVQb3NpdGlvbigpKTsKICAgICBBU1NFUlRfRVEoMSwgUGFy
c2VkQ29udGVudFJhbmdlKCJieXRlcyAwLTEvMiIpLmxhc3RCeXRlUG9zaXRpb24oKSk7CiAgICAg
QVNTRVJUX0VRKDIsIFBhcnNlZENvbnRlbnRSYW5nZSgiYnl0ZXMgMC0xLzIiKS5pbnN0YW5jZUxl
bmd0aCgpKTsKLSAgICBBU1NFUlRfRVEoUGFyc2VkQ29udGVudFJhbmdlOjpVbmtub3duTGVuZ3Ro
LCBQYXJzZWRDb250ZW50UmFuZ2UoImJ5dGVzIDAtMS8qIikuaW5zdGFuY2VMZW5ndGgoKSk7Cisg
ICAgQVNTRVJUX0VRKFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxlbmd0aCwgUGFyc2VkQ29u
dGVudFJhbmdlKCJieXRlcyAwLTEvKiIpLmluc3RhbmNlTGVuZ3RoKCkpOwogCiAgICAgLy8gV2hp
dGVzcGFjZSBlcnJvcnMKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29udGVudFJhbmdlKCJieXRl
cyAgMC0xLyoiKS5pc1ZhbGlkKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBURVNUKFdlYkNvcmUsIFBh
cnNlZENvbnRlbnRSYW5nZUZyb21TdHJpbmcpCiBURVNUKFdlYkNvcmUsIFBhcnNlZENvbnRlbnRS
YW5nZUZyb21WYWx1ZXMpCiB7CiAgICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVudFJhbmdlKDAs
IDEsIDIpLmlzVmFsaWQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVudFJhbmdlKDAs
IDEsIFBhcnNlZENvbnRlbnRSYW5nZTo6VW5rbm93bkxlbmd0aCkuaXNWYWxpZCgpKTsKKyAgICBB
U1NFUlRfVFJVRShQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29udGVudFJhbmdlOjp1
bmtub3duTGVuZ3RoKS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50
UmFuZ2UoKS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50UmFuZ2Uo
MSwgMCwgMikuaXNWYWxpZCgpKTsKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29udGVudFJhbmdl
KDAsIDIsIDEpLmlzVmFsaWQoKSk7CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoV2ViQ29yZSwgUGFy
c2VkQ29udGVudFJhbmdlRnJvbVZhbHVlcykKIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJh
bmdlVG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUX1NUUkVRKCJieXRlcyAwLTEvMiIsIFBhcnNlZENv
bnRlbnRSYW5nZSgwLCAxLCAyKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFT
U0VSVF9TVFJFUSgiYnl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2Vk
Q29udGVudFJhbmdlOjpVbmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkp
OworICAgIEFTU0VSVF9TVFJFUSgiYnl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50UmFuZ2UoMCwg
MSwgUGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1ZSgpLnV0Zjgo
KS5kYXRhKCkpOwogICAgIEFTU0VSVF9TVFJFUSgiIiwgUGFyc2VkQ29udGVudFJhbmdlKCkuaGVh
ZGVyVmFsdWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390741</attachid>
            <date>2020-02-14 01:36:16 -0800</date>
            <delta_ts>2020-02-14 02:13:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214013615.patch</filename>
            <type>text/plain</type>
            <size>52346</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMmM0NTFlMGY5NDUyNjk5ZDVlY2Y3MzM4YTZlNzgx
NTMyNmQ3MDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXREZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSBMaW5lTGF5
b3V0Q29udGV4dDo6bV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDZhYjEw
NGY5MWE3M2FiYzMyNzIwYzE5MGNhZTY3YzE2YzQyOTcwLi42YWE1MzhkYjlmYzE1NWY1MjcxNDcw
NGE4M2MzYmJkNDFjOWJlMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTE0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBp
bnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBcmd1bWVudENvZGVyIHN1cHBvcnQgZm9yIEJveDxUPi4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25z
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+Pjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxCb3g8VD4+OjpkZWNvZGUpOgor
CiAyMDIwLTAyLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTYwMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggM2UyZmFhYTNiNTg5ODM3OGVhODQwODBjMzhiZGRhODQ4ZDIxN2ZlOS4uZWU5ZWRiMzBkZDdi
MzQ2MWM0ZDQ5MWRmYWY3OTI5MDExZDQ5OGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjEz
LDI3ICsyMTMsMzIgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2Jq
ZWN0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1p
bmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikK
K1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MqIHRpbWluZywgUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogewogICAgIGF1
dG8mIGxvYWRUaW1pbmcgPSByZXNvdXJjZUxvYWRlci5sb2FkVGltaW5nKCk7CiAKICAgICBhdXRv
IGVsYXBzZWRUaW1lU2luY2UgPSBbJl0gKGNvbnN0IE1vbm90b25pY1RpbWUmIHRpbWUpIHsKICAg
ICAgICAgcmV0dXJuIG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRU
aW1lU2luY2UodGltZSkuc2Vjb25kcygpOwogICAgIH07CisgICAgT3B0aW9uYWw8TmV0d29ya0xv
YWRNZXRyaWNzPiBlbXB0eTsKKyAgICBpZiAoIXRpbWluZykgeworICAgICAgICBlbXB0eS5lbXBs
YWNlKCk7CisgICAgICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOworICAgIH0KIAogICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFN0YXJ0VGltZShlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcuc3Rh
cnRUaW1lKCkpKQogICAgICAgICAuc2V0UmVkaXJlY3RTdGFydChlbGFwc2VkVGltZVNpbmNlKGxv
YWRUaW1pbmcucmVkaXJlY3RTdGFydCgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0RW5kKGVsYXBz
ZWRUaW1lU2luY2UobG9hZFRpbWluZy5yZWRpcmVjdEVuZCgpKSkKICAgICAgICAgLnNldEZldGNo
U3RhcnQoZWxhcHNlZFRpbWVTaW5jZShsb2FkVGltaW5nLmZldGNoU3RhcnQoKSkpCi0gICAgICAg
IC5zZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNv
bmRzKCkpCi0gICAgICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmcuY29ubmVj
dFN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0Q29ubmVjdEVuZCh0aW1pbmcuY29u
bmVjdEVuZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFy
dCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAu
c2V0UmVxdWVzdFN0YXJ0KHRpbWluZy5yZXF1ZXN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAg
ICAgIC5zZXRSZXNwb25zZVN0YXJ0KHRpbWluZy5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygp
KQotICAgICAgICAuc2V0UmVzcG9uc2VFbmQodGltaW5nLnJlc3BvbnNlRW5kLm1pbGxpc2Vjb25k
cygpKQorICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBT
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cEVuZCh0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RTdGFy
dCh0aW1pbmctPmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5l
Y3RFbmQodGltaW5nLT5jb25uZWN0RW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0U2Vj
dXJlQ29ubmVjdGlvblN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQorICAgICAgICAuc2V0UmVxdWVzdFN0YXJ0KHRpbWluZy0+cmVxdWVzdFN0YXJ0Lm1p
bGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmctPnJlc3BvbnNl
U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXRSZXNwb25zZUVuZCh0aW1pbmctPnJl
c3BvbnNlRW5kLm1pbGxpc2Vjb25kcygpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC0z
NTEsNyArMzU2LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3Bv
bnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAgICAgLnJlbGVhc2Uo
KTsKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNl
dFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzKCksICpyZXNvdXJjZUxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAKICAgICBpZiAoYXV0byYg
Y2VydGlmaWNhdGVJbmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAg
YXV0byBzZWN1cml0eVBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTZWN1cml0eTo6U2Vj
dXJpdHk6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBhNjhmODQ1MjA3MzY5NzdjOGI5MjE2
NjE2YzVhMTc4ZmJmNTI3NWQ2Li5iMDM4YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUz
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpOZXR3bwogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiwgT3B0aW9uYWw8Y29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jj4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyosIFJlc291cmNlTG9hZGVyJik7CiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IGJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjRlZTVkZGJjODI1
OTI1ZWU1MDQ5MTdlOGUzMzI1YzQxNDY1NGNjMS4uMzc0MjEyODFjZTIyMThkYmY5ZDI1ZDg3NmQ3
NTg2MmY1MDBkZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTYzMCw3ICs2MzAsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byByZXNv
dXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RV
UkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHJlc3BvbnNlLmRlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAg
ICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7
CisgICAgICAgIGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7Cisg
ICAgICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQo
cmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgKnRpbWluZywgcmVz
cG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRv
ckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICAgICAgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICAgICAgZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiNzQ4MmFh
NGFhZTlmZTBiYmE4ZGY5N2I2ZTRjNzVhZDQ0N2M2MmFkLi4xNWMwYTcxOThhYzIyMjBiNzg3ODQ5
MWI5NzYzY2Q3Y2ZkMjcxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTY5MSw3ICs2OTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUK
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGVnYWN5IHBhdGggZm9yIHBsYXRmb3JtcyAoYW5kIFJl
c291cmNlSGFuZGxlIHBhdGhzKSB0aGF0IGRvIG5vdCBwcm92aWRlCiAgICAgICAgIC8vIGNvbXBs
ZXRlIGxvYWQgbWV0cmljcyBpbiBkaWRGaW5pc2hMb2FkLiBJbiB0aG9zZSBjYXNlcywgZmFsbCBi
YWNrIHRvIHRoZSBwb3NzaWJpbGl0eQogICAgICAgICAvLyB0aGF0IHRoZXkgcG9wdWxhdGVkIHBh
cnRpYWwgbG9hZCB0aW1pbmcgaW5mb3JtYXRpb24gb24gdGhlIFJlc291cmNlUmVzcG9uc2UuCi0g
ICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0g
bV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxs
KCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAg
IGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAg
ICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZygqdGltaW5nKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgp
ICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IDRlZmQ1NGUwMmQ2OGZhMzJlNmNlZmYwOWYz
NWU0NGU3NzhhOWQzYmEuLjU2YTc1NmRhYmQ3MGE2ZTk1MzhhMTE3MGM4NWI4MDdjNWI3ZGVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0xMjAsMTQg
KzEyMCwxNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxv
b2t1cFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBi
ZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAi
YmFja2ZpbGwiIHdpdGggZmV0Y2hTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
IDwgMF9tcykKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0
KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNv
bnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCgp
OwogICAgIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdo
ZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4
cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmls
bCIgd2l0aCBkb21haW5Mb29rdXBTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAw
X21zKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE1MiwxOCArMTUyLDIwIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCi0gICAg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3NPck51bGwoKTsKICAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEg
bmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5n
IGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwgd2UgImJh
Y2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9
IHRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgaWYgKCF0aW1pbmcpCisgICAgICAgIHJldHVybiBk
b21haW5Mb29rdXBFbmQoKTsKKyAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29u
bmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0U3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4g
ZG9tYWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MncyBjb25uZWN0
IHBoYXNlIGluY2x1ZGVzIEROUywgaG93ZXZlciBOYXZpZ2F0aW9uIFRpbWluZydzCiAgICAgLy8g
Y29ubmVjdCBwaGFzZSBzaG91bGQgbm90LiBTbyBpZiB0aGVyZSBpcyBETlMgdGltZSwgdHJpbSBp
dCBmcm9tIHRoZSBzdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwX21z
ICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5l
Y3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgaWYgKHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kID49IDBfbXMgJiYgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3Rh
cnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwogCiAg
ICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydChjb25uZWN0U3Rh
cnQpOwogfQpAQCAtMTc0LDE0ICsxNzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpjb25uZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
OworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAvLyBj
b25uZWN0RW5kIHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4K
ICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0
ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0g
ICAgaWYgKHRpbWluZy5jb25uZWN0RW5kIDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1p
bmctPmNvbm5lY3RFbmQgPCAwX21zKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5j
b25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0
YXJ0KHRpbWluZy0+Y29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE5MCwxMiArMTky
LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVj
dGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOwogICAgIAotICAgIGlmICh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMjA0LDEwICsyMDYsMTIgQEAgdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdAog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwogICAgIAotICAg
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlcXVlc3RTdGFydCA9
IDBfbXM7CisgICAgaWYgKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVy
LT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKSkKKyAgICAg
ICAgcmVxdWVzdFN0YXJ0ID0gdGltaW5nLT5yZXF1ZXN0U3RhcnQ7CiAgICAgCi0gICAgQVNTRVJU
KHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMF9tcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRp
bWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKKyAgICBBU1NFUlQo
cmVxdWVzdFN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0ZldGNoU3RhcnQocmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKQEAgLTIxNiwxMCArMjIwLDEy
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgp
IGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiByZXF1ZXN0U3RhcnQoKTsK
IAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlc3BvbnNl
U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9
IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkp
CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7CiAgICAgCi0g
ICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlc3BvbnNlU3RhcnQpOwor
ICAgIEFTU0VSVChyZXNwb25zZVN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQocmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgK
aW5kZXggYTM2ZjM0OTcyNTdkNjg4M2Y1ZWNiOTIxYmNlMmFlMGIzNGQxNmI3MC4uNmY2MzUzNzAy
NTZlYjNhYzFkZDc5ZDNhYTQwMjlkNjYxYjM5ZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
QEAgLTQ3LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBOZXR3b3JrTG9hZFByaW9yaXR5IDogdWludDhf
dCB7CiB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKE5ldHdvcmtMb2FkTWV0cmljcyk7CiBwdWJsaWM6CiAgICAgTmV0d29ya0xvYWRN
ZXRyaWNzKCkKICAgICB7CkBAIC0xODQsNyArMTg2LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzIHsKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKK1dFQkNPUkVfRVhQT1JUIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNvcHlUaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSk7CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcAppbmRleCBhM2Q0ZjA0NDA1OWRmZDlhNTdiMzE5MjlkYjhmMTEyYzE1
ZjYyMTEzLi4xOGQ0Njc1MzAxNDZkYTUxZGFiYjM1MGE1ZmI2OTdkNDU0ZTYxYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCkBAIC0zOSwxMSArMzksMTMgQEAgc3RhdGljIGJvb2wgYXJlQ29udGVudFJhbmdlVmFs
dWVzVmFsaWQoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0QnkKICAgICAv
LyBvciB3aG9zZSBpbnN0YW5jZS1sZW5ndGggdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
IGl0cyBsYXN0LWJ5dGUtcG9zIHZhbHVlLCBpcyBpbnZhbGlkLgogICAgIGlmIChmaXJzdEJ5dGVQ
b3NpdGlvbiA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoZmlyc3RCeXRl
UG9zaXRpb24gPj0gMCk7CiAKICAgICBpZiAobGFzdEJ5dGVQb3NpdGlvbiA8IGZpcnN0Qnl0ZVBv
c2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGxhc3RCeXRlUG9zaXRp
b24gPj0gMCk7CiAKLSAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0gUGFyc2VkQ29udGVudFJhbmdl
OjpVbmtub3duTGVuZ3RoKQorICAgIGlmIChpbnN0YW5jZUxlbmd0aCA9PSBQYXJzZWRDb250ZW50
UmFuZ2U6OnVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGxhc3RCeXRlUG9zaXRpb24gPCBpbnN0YW5jZUxlbmd0aDsKQEAgLTk2LDcgKzk4LDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VDb250ZW50UmFuZ2UoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgaW50
NjRfdCYgZmlyc3RCeXRlUG9zaXQKIAogICAgIFN0cmluZyBpbnN0YW5jZVN0cmluZyA9IGhlYWRl
clZhbHVlLnN1YnN0cmluZyhpbnN0YW5jZUxlbmd0aFNlcGFyYXRvclRva2VuICsgMSk7CiAgICAg
aWYgKGluc3RhbmNlU3RyaW5nID09ICIqIikKLSAgICAgICAgaW5zdGFuY2VMZW5ndGggPSBQYXJz
ZWRDb250ZW50UmFuZ2U6OlVua25vd25MZW5ndGg7CisgICAgICAgIGluc3RhbmNlTGVuZ3RoID0g
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoOwogICAgIGVsc2UgewogICAgICAgICBp
ZiAoIWluc3RhbmNlU3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0Pigp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDcgKzExMyw4IEBAIHN0YXRpYyBi
b29sIHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUsIGludDY0X3Qm
IGZpcnN0Qnl0ZVBvc2l0CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdl
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiB7Ci0gICAgbV9pc1ZhbGlkID0gcGFyc2VDb250
ZW50UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3Np
dGlvbiwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFwYXJzZUNvbnRlbnRSYW5nZShoZWFk
ZXJWYWx1ZSwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3Rh
bmNlTGVuZ3RoKSkKKyAgICAgICAgbV9pbnN0YW5jZUxlbmd0aCA9IGludmFsaWRMZW5ndGg7CiB9
CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RC
eXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxl
bmd0aCkKQEAgLTExOSwxNCArMTIyLDE1IEBAIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29u
dGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5CiAgICAg
LCBtX2xhc3RCeXRlUG9zaXRpb24obGFzdEJ5dGVQb3NpdGlvbikKICAgICAsIG1faW5zdGFuY2VM
ZW5ndGgoaW5zdGFuY2VMZW5ndGgpCiB7Ci0gICAgbV9pc1ZhbGlkID0gYXJlQ29udGVudFJhbmdl
VmFsdWVzVmFsaWQobV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2lu
c3RhbmNlTGVuZ3RoKTsKKyAgICBpZiAoIWFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmly
c3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisg
ICAgICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZhbGlkTGVuZ3RoOwogfQogCiBTdHJpbmcgUGFy
c2VkQ29udGVudFJhbmdlOjpoZWFkZXJWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCisgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBp
ZiAobV9pbnN0YW5jZUxlbmd0aCA9PSBVbmtub3duTGVuZ3RoKQorICAgIGlmIChtX2luc3RhbmNl
TGVuZ3RoID09IHVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRl
cyAiLCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgIi8qIik7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImJ5dGVzICIsIG1fZmlyc3RCeXRlUG9zaXRpb24sICct
JywgbV9sYXN0Qnl0ZVBvc2l0aW9uLCAnLycsIG1faW5zdGFuY2VMZW5ndGgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgK
aW5kZXggNWEwNzA0YmQ0Yjk2ZmRjYmE5MGRjMTRjYTQ2NmNiOGVmZDdkZTVjMC4uYTNiNGJmM2I3
MmQxY2NlOGMwMzdiOGFkMDkwNzI5YTg5ZmJlN2YxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oCkBAIC0yMywzNyArMjMs
NTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFyc2VkQ29udGVudFJhbmdl
X2gKLSNkZWZpbmUgUGFyc2VkQ29udGVudFJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQYXJzZWRDb250ZW50UmFuZ2UgewogcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBpbnZhbGlkTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHVua25vd25M
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFBhcnNlZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmKTsKLSAg
ICBQYXJzZWRDb250ZW50UmFuZ2UoKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZWRDb250
ZW50UmFuZ2UoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0Qnl0ZVBvc2l0
aW9uLCBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKTsKKyAgICBQYXJzZWRDb250ZW50UmFuZ2UoKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoICE9
IGludmFsaWRMZW5ndGg7IH0KICAgICBpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3QgbGFzdEJ5dGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3Qg
aW5zdGFuY2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoOyB9CiAKKyAg
ICBzdGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGludmFsaWRWYWx1ZSgpCisgICAgeworICAgICAg
ICBQYXJzZWRDb250ZW50UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLm1fZmlyc3RCeXRlUG9z
aXRpb24gPSBpbnZhbGlkTGVuZ3RoOworICAgICAgICByYW5nZS5tX2xhc3RCeXRlUG9zaXRpb24g
PSBpbnZhbGlkTGVuZ3RoOworICAgICAgICByYW5nZS5tX2luc3RhbmNlTGVuZ3RoID0gaW52YWxp
ZExlbmd0aDsKKyAgICAgICAgcmV0dXJuIHJhbmdlOworICAgIH0KKwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBoZWFkZXJWYWx1ZSgpIGNvbnN0OwogCi0gICAgZW51bSB7IFVua25vd25MZW5n
dGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSB9OworICAgIHN0cnVjdCBN
YXJrYWJsZVRyYWl0cyB7CisgICAgICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBQ
YXJzZWRDb250ZW50UmFuZ2UmIHJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
IXJhbmdlLmlzVmFsaWQoKTsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBib29sIGlzUG9zaXRpdmUoVCk7CisgICAgICAgIHN0YXRpYyBQYXJz
ZWRDb250ZW50UmFuZ2UgZW1wdHlWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBQYXJzZWRDb250ZW50UmFuZ2U6OmludmFsaWRWYWx1ZSgpOworICAgICAgICB9CisgICAgfTsK
IAorcHJpdmF0ZToKICAgICBpbnQ2NF90IG1fZmlyc3RCeXRlUG9zaXRpb24geyAwIH07CiAgICAg
aW50NjRfdCBtX2xhc3RCeXRlUG9zaXRpb24geyAwIH07Ci0gICAgaW50NjRfdCBtX2luc3RhbmNl
TGVuZ3RoIHsgVW5rbm93bkxlbmd0aCB9OwotICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsK
KyAgICBpbnQ2NF90IG1faW5zdGFuY2VMZW5ndGggeyB1bmtub3duTGVuZ3RoIH07CiB9OwogCiB9
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCmluZGV4IDY4MDc0MDRiZmZkYTZmNWRlZDU5MDU1Y2YwMWUyYzllNmM0YjI1ZmMu
LjE5ZTFhNmI3ZmJjMTkxNGY3MTY3MzlmNTdmOGI2YjY4ZGZhNzU2NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEzMSw5ICsxMzIsOSBAQCBjbGFzcyBSZXNvdXJjZUhhbmRs
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlSGFuZGxlPiwgcHVibGljIEF1dGhlbnRpY2F0
aW9uQwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKLSAg
ICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYs
IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHN0YXRpYyBCb3g8TmV0d29ya0xvYWRNZXRyaWNz
PiBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShDRlVSTENvbm5lY3Rpb25SZWYpOwogI2Vsc2UKLSAg
ICBzdGF0aWMgdm9pZCBnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKiwg
TmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGljIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
IGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqKTsKICNlbmRpZgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggZTlhY2NlYmQ3NzIwYWMzM2E2ODA4N2I0OWIwZjgy
ZDA5MmJlMmFkMC4uYmEwMjQ4NDBlMGJmMGNmMjM0ZmNhYzlmODMwODU5ZTM2Mzc0NjQ1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKQEAgLTU1LDcgKzU1LDEyIEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZSgpCiAgICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFk
ZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRDb250ZW50UmFuZ2VIZWFkZXIoZmFsc2UpCiAg
ICAgLCBtX2lzUmVkaXJlY3RlZChmYWxzZSkKKyAgICAsIG1faXNSYW5nZVJlcXVlc3RlZChmYWxz
ZSkKICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgLCBtX3VzZWRMZWdhY3lUTFMoVXNlZExlZ2Fj
eVRMUzo6Tm8pCisgICAgLCBtX3RhaW50aW5nKFRhaW50aW5nOjpCYXNpYykKKyAgICAsIG1fc291
cmNlKFNvdXJjZTo6VW5rbm93bikKKyAgICAsIG1fdHlwZShUeXBlOjpEZWZhdWx0KQogewogfQog
CkBAIC03Miw3ICs3NywxMiBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogICAgICwgbV9oYXZl
UGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyKGZhbHNlKQogICAgICwgbV9oYXZlUGFyc2VkQ29udGVu
dFJhbmdlSGVhZGVyKGZhbHNlKQogICAgICwgbV9pc1JlZGlyZWN0ZWQoZmFsc2UpCisgICAgLCBt
X2lzUmFuZ2VSZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2lzTnVsbChmYWxzZSkKKyAgICAsIG1f
dXNlZExlZ2FjeVRMUyhVc2VkTGVnYWN5VExTOjpObykKKyAgICAsIG1fdGFpbnRpbmcoVGFpbnRp
bmc6OkJhc2ljKQorICAgICwgbV9zb3VyY2UoU291cmNlOjpVbmtub3duKQorICAgICwgbV90eXBl
KFR5cGU6OkRlZmF1bHQpCiB7CiB9CiAKQEAgLTkwLDcgKzEwMCw4IEBAIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpDcm9zc1RocmVhZERhdGEgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNyb3NzVGhyZWFk
RGF0YSgpIGNvCiAgICAgZGF0YS5odHRwVmVyc2lvbiA9IGh0dHBWZXJzaW9uKCkuaXNvbGF0ZWRD
b3B5KCk7CiAKICAgICBkYXRhLmh0dHBIZWFkZXJGaWVsZHMgPSBodHRwSGVhZGVyRmllbGRzKCku
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtM
b2FkTWV0cmljcy5pc29sYXRlZENvcHkoKTsKKyAgICBpZiAobV9uZXR3b3JrTG9hZE1ldHJpY3Mp
CisgICAgICAgIGRhdGEubmV0d29ya0xvYWRNZXRyaWNzID0gbV9uZXR3b3JrTG9hZE1ldHJpY3Mt
Pmlzb2xhdGVkQ29weSgpOwogICAgIGRhdGEudHlwZSA9IG1fdHlwZTsKICAgICBkYXRhLnRhaW50
aW5nID0gbV90YWludGluZzsKICAgICBkYXRhLmlzUmVkaXJlY3RlZCA9IG1faXNSZWRpcmVjdGVk
OwpAQCAtMTEzLDcgKzEyNCwxMCBAQCBSZXNvdXJjZVJlc3BvbnNlIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpmcm9tQ3Jvc3NUaHJlYWREYXRhKENyb3NzVGhyZWFkRGF0YSYmIGRhdAogICAgIHJlc3Bv
bnNlLnNldEhUVFBWZXJzaW9uKGRhdGEuaHR0cFZlcnNpb24pOwogCiAgICAgcmVzcG9uc2UubV9o
dHRwSGVhZGVyRmllbGRzID0gV1RGTW92ZShkYXRhLmh0dHBIZWFkZXJGaWVsZHMpOwotICAgIHJl
c3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3M7Cisg
ICAgaWYgKGRhdGEubmV0d29ya0xvYWRNZXRyaWNzKQorICAgICAgICByZXNwb25zZS5tX25ldHdv
cmtMb2FkTWV0cmljcyA9IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoV1RGTW92ZShk
YXRhLm5ldHdvcmtMb2FkTWV0cmljcy52YWx1ZSgpKSk7CisgICAgZWxzZQorICAgICAgICByZXNw
b25zZS5tX25ldHdvcmtMb2FkTWV0cmljcyA9IG51bGxwdHI7CiAgICAgcmVzcG9uc2UubV90eXBl
ID0gZGF0YS50eXBlOwogICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcgPSBkYXRhLnRhaW50aW5nOwog
ICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gZGF0YS5pc1JlZGlyZWN0ZWQ7CkBAIC04MDgs
OCArODIyLDE2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoYS5odHRwSGVhZGVyRmllbGRzKCkgIT0gYi5odHRwSGVhZGVyRmllbGRzKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5kZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKCkgIT0gYi5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoYS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSBiLm1f
bmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKSB7CisgICAgICAgIGlmICghYS5tX25ldHdvcmtMb2Fk
TWV0cmljcykgeworICAgICAgICAgICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICpiLm1f
bmV0d29ya0xvYWRNZXRyaWNzLmdldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfSBlbHNlIGlmICghYi5tX25ldHdvcmtMb2FkTWV0cmljcykgeworICAgICAgICAg
ICAgaWYgKE5ldHdvcmtMb2FkTWV0cmljcygpICE9ICphLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdl
dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmICgq
YS5tX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKSAhPSAqYi5tX25ldHdvcmtMb2FkTWV0cmljcy5n
ZXQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4
IDg4OTQ0MTZiZTNiNjE3ZjFmNzczNmQ4OThlYWMzZThkOTEzNTQyZmQuLmQ1YWYzODhjMzliZWVl
YmUyOTFjNjRkOWNlYWE1MDRmYjg3M2UxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRNZXRy
aWNzLmgiCiAjaW5jbHVkZSAiUGFyc2VkQ29udGVudFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL0Jv
eC5oPgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGJvb2wgaXNTY3JpcHRBbGxvd2VkQnlOb3NuaWZmKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKIAogZW51bSBjbGFzcyBVc2VkTGVnYWN5VExTIDogYm9vbCB7IE5vLCBZZXMgfTsK
K3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0V2lkdGhPZlVzZWRMZWdhY3lUTFMgPSAxOwor
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVXNlZExlZ2FjeVRMUzo6WWVzKSA8
PSAoKDFVIDw8IGJpdFdpZHRoT2ZVc2VkTGVnYWN5VExTKSAtIDEpKTsKIAogLy8gRG8gbm90IHVz
ZSB0aGlzIGNsYXNzIGRpcmVjdGx5LCB1c2UgdGhlIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgaW5z
dGVhZAogY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewpAQCAtNjgsNyArNzEsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgICAgIFN0cmluZyBodHRwU3RhdHVzVGV4dDsK
ICAgICAgICAgU3RyaW5nIGh0dHBWZXJzaW9uOwogICAgICAgICBIVFRQSGVhZGVyTWFwIGh0dHBI
ZWFkZXJGaWVsZHM7Ci0gICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJp
Y3M7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gbmV0d29ya0xvYWRNZXRy
aWNzOwogICAgICAgICBUeXBlIHR5cGU7CiAgICAgICAgIFRhaW50aW5nIHRhaW50aW5nOwogICAg
ICAgICBib29sIGlzUmVkaXJlY3RlZDsKQEAgLTE1MCw2ICsxNTMsOSBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSB7CiAgICAgY29uc3QgUGFyc2VkQ29udGVudFJhbmdlJiBjb250ZW50UmFu
Z2UoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIDogdWludDhfdCB7IFVua25vd24s
IE5ldHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJWYWxpZGF0aW9uLCBNZW1vcnlDYWNo
ZSwgTWVtb3J5Q2FjaGVBZnRlclZhbGlkYXRpb24sIFNlcnZpY2VXb3JrZXIsIEFwcGxpY2F0aW9u
Q2FjaGUsIERPTUNhY2hlLCBJbnNwZWN0b3JPdmVycmlkZSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgYml0V2lkdGhPZlNvdXJjZSA9IDQ7CisgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oU291cmNlOjpJbnNwZWN0b3JPdmVycmlkZSkgPD0gKCgxVSA8PCBi
aXRXaWR0aE9mU291cmNlKSAtIDEpKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZSBzb3Vy
Y2UoKSBjb25zdDsKICAgICB2b2lkIHNldFNvdXJjZShTb3VyY2Ugc291cmNlKQogICAgIHsKQEAg
LTE2MCw3ICsxNjYsMTYgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBlbGltaW5hdGVkIGZyb20gUmVzb3VyY2VSZXNwb25zZS4KICAg
ICAvLyBOZXR3b3JrIGxvYWRpbmcgbWV0cmljcyBzaG91bGQgYmUgZGVsaXZlcmVkIHZpYSBkaWRG
aW5pc2hMb2FkCiAgICAgLy8gYW5kIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGUgUmVzb3VyY2VS
ZXNwb25zZS4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIGRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQorICAgIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyogZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAg
ICAgICByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICB2b2lkIHNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz4mJiBtZXRyaWNzKQorICAgIHsKKyAgICAgICAgbV9uZXR3
b3JrTG9hZE1ldHJpY3MgPSBXVEZNb3ZlKG1ldHJpY3MpOworICAgIH0KIAogICAgIC8vIFRoZSBS
ZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBwcm92
aWRlIHBsYXRmb3JtLXNwZWNpZmljIG1lbW9yeSB1c2FnZSBpbmZvcm1hdGlvbgogICAgIHVuc2ln
bmVkIG1lbW9yeVVzYWdlKCkgY29uc3QKQEAgLTIyMiw3ICsyMzcsNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSB7CiAgICAgQXRvbVN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEF0
b21TdHJpbmcgbV9odHRwVmVyc2lvbjsKICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZp
ZWxkczsKLSAgICBtdXRhYmxlIE5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmlj
czsKKyAgICBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBtX25ldHdvcmtMb2FkTWV0cmljczsKIAog
ICAgIG11dGFibGUgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsK
IApAQCAtMjQxLDE4ICsyNTYsMTcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAg
IG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIgOiAxOwogICAgIG11
dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRDb250ZW50UmFuZ2VIZWFkZXIgOiAxOwogICAgIGJvb2wg
bV9pc1JlZGlyZWN0ZWQgOiAxOworICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIDogMTsKIHBy
b3RlY3RlZDoKICAgICBib29sIG1faXNOdWxsIDogMTsKLQorICAgIHVuc2lnbmVkIG1faW5pdExl
dmVsIDogMzsgLy8gQ29udHJvbGxlZCBieSBSZXNvdXJjZVJlc3BvbnNlLgorICAgIG11dGFibGUg
VXNlZExlZ2FjeVRMUyBtX3VzZWRMZWdhY3lUTFMgOiBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUzsK
IHByaXZhdGU6Ci0gICAgU291cmNlIG1fc291cmNlIHsgU291cmNlOjpVbmtub3duIH07Ci0gICAg
VHlwZSBtX3R5cGUgeyBUeXBlOjpEZWZhdWx0IH07Ci0gICAgVGFpbnRpbmcgbV90YWludGluZyB7
IFRhaW50aW5nOjpCYXNpYyB9OwotICAgIGJvb2wgbV9pc1JhbmdlUmVxdWVzdGVkIHsgZmFsc2Ug
fTsKLQorICAgIFRhaW50aW5nIG1fdGFpbnRpbmcgOiBiaXRXaWR0aE9mVGFpbnRpbmc7CisgICAg
U291cmNlIG1fc291cmNlIDogYml0V2lkdGhPZlNvdXJjZTsKKyAgICBUeXBlIG1fdHlwZSA6IGJp
dFdpZHRoT2ZUeXBlOwogcHJvdGVjdGVkOgogICAgIHNob3J0IG1faHR0cFN0YXR1c0NvZGUgeyAw
IH07Ci0gICAgbXV0YWJsZSBVc2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyB7IFVzZWRMZWdh
Y3lUTFM6Ok5vIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJuIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CkBAIC0yNzYsNyArMjkwLDcgQEAgdm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHB1dCB0aGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8KICAg
ICAvLyBpbnRvIHRoZSBkaXNrIGNhY2hlLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgdXNlIHRoZSBv
bGQgaW5mby4KLSAgICBpZiAoRW5jb2Rlcjo6aXNJUENFbmNvZGVyKQorICAgIGlmIGNvbnN0ZXhw
ciAoRW5jb2Rlcjo6aXNJUENFbmNvZGVyKQogICAgICAgICBlbmNvZGVyIDw8IG1fbmV0d29ya0xv
YWRNZXRyaWNzOwogCiAgICAgZW5jb2RlciA8PCBtX2h0dHBTdGF0dXNDb2RlOwpAQCAtMjg1LDcg
KzI5OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bShtX3R5cGUpOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShtX3RhaW50aW5nKTsKICAgICBlbmNvZGVyIDw8IG1faXNSZWRpcmVjdGVkOwot
ICAgIGVuY29kZXIgPDwgbV91c2VkTGVnYWN5VExTOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8VXNlZExlZ2FjeVRMUz4obV91c2VkTGVnYWN5VExTKTsKICAgICBlbmNvZGVyIDw8IG1faXNS
YW5nZVJlcXVlc3RlZDsKIH0KIApAQCAtMzE4LDI0ICszMzIsMzQgQEAgYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2VCYXNl
JiByZXNwb24KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1faHR0cEhlYWRlckZp
ZWxkcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBUaGUgbmV0d29ya0xvYWRNZXRy
aWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBub3Qgc3RvcmVkIGluIGRpc2sgY2Fj
aGUuCi0gICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAmJiAhZGVjb2Rlci5kZWNvZGUocmVz
cG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgY29uc3RleHByIChEZWNvZGVyOjppc0lQQ0RlY29kZXIpIHsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0cmljcykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9o
dHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3BvbnNlLm1fc291cmNlKSkKKyAgICBT
b3VyY2Ugc291cmNlID0gU291cmNlOjpVbmtub3duOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShyZXNwb25zZS5tX3R5cGUpKQorICAgIHJlc3BvbnNlLm1fc291cmNlID0gc291cmNl
OworICAgIFR5cGUgdHlwZSA9IFR5cGU6OkRlZmF1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0odHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShyZXNwb25zZS5tX3RhaW50aW5nKSkKKyAgICByZXNwb25zZS5tX3R5cGUgPSB0eXBl
OworICAgIFRhaW50aW5nIHRhaW50aW5nID0gVGFpbnRpbmc6OkJhc2ljOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKHRhaW50aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
c3BvbnNlLm1fdGFpbnRpbmcgPSB0YWludGluZzsKICAgICBib29sIGlzUmVkaXJlY3RlZCA9IGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNSZWRpcmVjdGVkKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1faXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV91c2VkTGVnYWN5VExTKSkKKyAgICBV
c2VkTGVnYWN5VExTIHVzZWRMZWdhY3lUTFMgPSBVc2VkTGVnYWN5VExTOjpObzsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHVzZWRMZWdhY3lUTFMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmVzcG9uc2UubV91c2VkTGVnYWN5VExTID0gdXNlZExlZ2FjeVRMUzsKICAgICBib29sIGlz
UmFuZ2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzUmFuZ2VS
ZXF1ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IGE5ZjM5ZjM5
MzAxMjhhNTMzMzQwNjFjNWNjNDBiZGY5NDlhMDMwNzAuLjJhYzdlZGJmYTk3OWNkYTk2YzIyY2Y1
NmNiNzIxZjMyOTAyYzY0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zOSwzMCArMzksMzAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJl
c3BvbnNlQmFzZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDog
bV9pbml0TGV2ZWwoQWxsRmllbGRzKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBBbGxG
aWVsZHM7CiAgICAgfQogCiAjaWYgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXNvdXJjZVJl
c3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKLSAgICAgICAgOiBtX2luaXRMZXZl
bChVbmluaXRpYWxpemVkKQotICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQorICAg
ICAgICA6IG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAgIHsKKyAgICAgICAgbV9pbml0TGV2
ZWwgPSBVbmluaXRpYWxpemVkOwogICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOwogICAg
IH0KICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VSTFJlc3BvbnNlICpuc1Jlc3BvbnNl
KQotICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6ZWQpCi0gICAgICAgICwgbV9uc1Jl
c3BvbnNlKG5zUmVzcG9uc2UpCisgICAgICAgIDogbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCiAg
ICAgeworICAgICAgICBtX2luaXRMZXZlbCA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgIG1faXNO
dWxsID0gIW5zUmVzcG9uc2U7CiAgICAgfQogI2VuZGlmCiAKICAgICBSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKICAgICAgICAgOiBSZXNv
dXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29k
aW5nTmFtZSkKLSAgICAgICAgLCBtX2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgeworICAgICAg
ICBtX2luaXRMZXZlbCA9IEFsbEZpZWxkczsKICAgICB9CiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTEwNiw4ICsxMDYsNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291
cmNlUmVzcG9uc2VCYXNlIHsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKIAotICAg
IHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsKLQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGJv
b2wgbV9pc1F1aWNrTG9vayB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0K
aW5kZXggZmJiOGQ2ODA4OGFkZGJiYzBiNjg3MDEyZjhkNDEwYmJlMzkwZGNiMS4uOWRhZmY3ZTk3
ZjE4ZjVmMDIxOWVlZjBjNmEyY2YyZmVjMTQxNTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0K
QEAgLTM3LDEwICszNywxMiBAQCBzdGF0aWMgZG91YmxlIHRpbWluZ1ZhbHVlKE5TRGljdGlvbmFy
eSAqdGltaW5nRGF0YSwgTlNTdHJpbmcgKmtleSkKICAgICByZXR1cm4gMC4wOwogfQogICAgIAot
dm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEsIE5ldHdvcmtMb2Fk
TWV0cmljcyYgdGltaW5nKQorQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEo
TlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhKQogewogICAgIGlmICghdGltaW5nRGF0YSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEJveDxOZXR3b3JrTG9h
ZE1ldHJpY3M+IHRpbWluZyA9IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKIAog
ICAgIC8vIFRoaXMgaXMgbm90IHRoZSBuYXZpZ2F0aW9uU3RhcnQgdGltZSBpbiBtb25vdG9uaWMg
dGltZSwgYnV0IHRoZSBvdGhlciB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhpcyB0aW1lCiAgICAg
Ly8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGltZXMgYXJlIHN0b3JlZC4KQEAg
LTU0LDE1ICs1NiwxNyBAQCB2b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5n
RGF0YSwgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcpCiAgICAgZG91YmxlIHJlcXVlc3RTdGFy
dCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAiX2tDRk5UaW1pbmdEYXRhUmVxdWVzdFN0YXJ0
Iik7CiAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBA
Il9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiKTsKIAotICAgIHRpbWluZy5kb21haW5Mb29r
dXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3RhcnQgPD0gMCA/IC0xIDogZG9tYWluTG9v
a3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmRvbWFpbkxvb2t1cEVuZCA9
IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cEVuZCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuY29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0
U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRp
bWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKHNlY3VyZUNvbm5lY3Rpb25TdGFy
dCA8PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0g
ICAgdGltaW5nLmNvbm5lY3RFbmQgPSBTZWNvbmRzKGNvbm5lY3RFbmQgPD0gMCA/IC0xIDogY29u
bmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcucmVxdWVzdFN0YXJ0ID0gU2Vj
b25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiByZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFy
dCk7Ci0gICAgdGltaW5nLnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHJlc3BvbnNlU3RhcnQgPD0g
MCA/IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+ZG9t
YWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAgPyAtMSA6IGRv
bWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+ZG9tYWluTG9v
a3VwRW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0gMCA/IC0xIDogZG9tYWluTG9va3Vw
RW5kIC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gU2Vjb25k
cyhjb25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQp
OworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gU2Vjb25kcyhzZWN1cmVDb25u
ZWN0aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJlQ29ubmVjdGlvblN0YXJ0IC0gcmVmZXJlbmNl
U3RhcnQpOworICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IFNlY29uZHMoY29ubmVjdEVuZCA8PSAw
ID8gLTEgOiBjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+cmVxdWVz
dFN0YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiByZXF1ZXN0U3RhcnQgLSBy
ZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5yZXNwb25zZVN0YXJ0ID0gU2Vjb25kcyhyZXNw
b25zZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKIAog
ICAgIC8vIE5PVEU6IHJlc3BvbnNlRW5kIGlzIG5vdCBwb3B1bGF0ZWQgaW4gdGhpcyBjb2RlIHBh
dGguCisKKyAgICByZXR1cm4gdGltaW5nOwogfQogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggNjE3OWM4ZWU5MzFjM2Q4MjFmOWMxNjg4OTA1ZmRiODk1
YjU2ZTA0YS4uMjFkYzQ0NmE0MDk4YjdlZjAxZjQwYmEwMmM2MzQyMThkZWZjZjQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJs
UmVxdWVzdCYgcmVxdWVzdCwgQ3UKIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
KHJlY2VpdmVkUmVzcG9uc2UpOwogICAgIG1fcmVzcG9uc2Uuc2V0Q2VydGlmaWNhdGVJbmZvKFdU
Rk1vdmUocmVjZWl2ZWRSZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8pKTsKLSAgICBtX3Jlc3BvbnNl
LnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV1RGTW92ZShyZWNlaXZlZFJlc3BvbnNl
Lm5ldHdvcmtMb2FkTWV0cmljcykpOworICAgIG1fcmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKFdURk1vdmUocmVj
ZWl2ZWRSZXNwb25zZS5uZXR3b3JrTG9hZE1ldHJpY3MpKSk7CiAKICAgICBoYW5kbGVDb29raWVI
ZWFkZXJzKGQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgcmVjZWl2ZWRSZXNwb25zZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZS5oCmluZGV4IDdmNTc4OGY0YjIyNjBjZDQzYjJmMTJhYjFmOTg2M2FjMTYz
YjRiM2EuLjUwMThlMzg1ODUxMTNkZjY2NDQ1MTFiODI0NzU0ZTRkMzZiMGFlN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZVJl
c3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICB2b2lkIGFwcGVuZEhU
VFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJ
bmZvKENlcnRpZmljYXRlSW5mbyYmKTsKLSAgICB2b2lkIHNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiYpOwogCiAgICAgYm9vbCBzaG91bGRSZWRpcmVj
dCgpOwogICAgIGJvb2wgaXNNb3ZlZFBlcm1hbmVudGx5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9u
c2VDdXJsLmNwcAppbmRleCAxOTBhMGYyMGMzMGE1YWI3MzdhNWFkMWVhNmJlNWY3MDllMGNmY2Fj
Li5hMGYzOTRmYzIxNzQ1ZThkNDkyYTUwMGI4NmFmODI1NWMxMGI0MzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlQ3VybC5jcHAKQEAgLTE1MSwxMSArMTUxLDYgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpzZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZvJiYgY2VydGlmaWNhdGVJbmZvKQog
ICAgIG1fY2VydGlmaWNhdGVJbmZvID0gV1RGTW92ZShjZXJ0aWZpY2F0ZUluZm8pOwogfQogCi12
b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoTmV0
d29ya0xvYWRNZXRyaWNzJiYgbmV0d29ya0xvYWRNZXRyaWNzKQotewotICAgIG1fbmV0d29ya0xv
YWRNZXRyaWNzID0gV1RGTW92ZShuZXR3b3JrTG9hZE1ldHJpY3MpOwotfQotCiBTdHJpbmcgUmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5k
ZXggMDNmYTI2ODdmNjgxODEzNDE0MWQxYzY5NTE4YmI4N2Y4ODBjYWIyMy4uNzY3YzU3OTQ5OTlj
OTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEwNzJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTY1NSw5
ICs2NTUsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwogICAgIGNsZWFyQXV0aGVudGljYXRp
b24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEo
TlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZykK
K0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGlt
aW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24pCiB7Ci0gICAgY29weVRpbWluZ0Rh
dGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcpOworICAgIHJldHVybiBjb3B5VGlt
aW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggODMwZWQwNjc0MDZlNTgxOTUzNTM2MTVmN2YyNjNh
MmRhYTMzMDEyMi4uMTllNjIwNTgwYjc2ODJmODZlNzJjZDkzYjdkNGZkOTMxOWVhYmM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9u
CiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJjZVJlc3BvbnNlKHIuZ2V0KCkpOwog
ICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6Ok5ldHdvcmspOwotICAgICAgICBSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWlu
Z0RhdGEoY29ubmVjdGlvbi5nZXQoKSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKCkpOworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldERlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1pbmdEYXRh
KGNvbm5lY3Rpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX2hhbmRsZS0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtzZWxmLCBwcm90ZWN0ZWRTZWxmID0gV1RG
TW92ZShwcm90ZWN0ZWRTZWxmKV0gewogICAgICAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmEzNTkyNDJhN2IzNzdiODBhYjYxMzkyNDk3N2E5NWNl
ZjZkYTkwMC4uYjlmMDE1NDFlZTNiMmE1NGI0YTM2NWM0YjgwMzU0NzE0ZWZlMTg0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGJlIGVsaW1pbmF0ZWQgdW50aWwgb3Ro
ZXIgY29kZSBubyBsb25nZXIgcmVsaWVzIG9uIFJlc291cmNlUmVzcG9uc2UncwogICAgICAgICAv
LyBOZXR3b3JrTG9hZE1ldHJpY3MuIEZvciBleGFtcGxlLCBQZXJmb3JtYW5jZVRpbWluZy4KLSAg
ICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSwgcmVzb3VyY2VSZXNw
b25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICByZXNvdXJjZVJl
c3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV2ViQ29yZTo6Y29weVRpbWlu
Z0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSkpOwogCiAgICAgICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgICAgIG5l
dHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25z
ZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9uSGFuZGxlckNvcHksIHRhc2tJZGVu
dGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggOWU0MTkxNjc0YTA1NTU0NmM3OWIxYTY4NzY3OWIxMjI2MDFmMTM0Ny4uYjJk
ZDllNTM2NjA2YTFkYWQwMTU3ZjdiODBmMGE2YmE3NmRkZWEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cApAQCAtMzY3LDE2ICszNjcsMTcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgQVNTRVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgp
KTsKIAorICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRpbWluZyA9IEJveDxOZXR3b3JrTG9h
ZE1ldHJpY3M+OjpjcmVhdGUoKTsKKyAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSBtX25ldHdv
cmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OworICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBTdGFydDsKKyAgICB0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZDsK
KyAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RT
dGFydDsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IG1fbmV0d29ya0xvYWRN
ZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKKyAgICB0aW1pbmctPmNvbm5lY3RFbmQgPSBt
X25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kOworICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0
ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OworICAgIHRpbWluZy0+cmVzcG9u
c2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG9uY2Ugbm9ib2R5IGRlcGVuZHMgb24gZGVwcmVjYXRlZE5ldHdvcmtM
b2FkTWV0cmljcy4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3MmIGRlcHJlY2F0ZWRSZXNwb25zZU1l
dHJpY3MgPSBtX3Jlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKLSAgICBk
ZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0
cmljcy5yZXNwb25zZVN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuZG9tYWlu
TG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBTdGFydDsKLSAg
ICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCA9IG1fbmV0d29ya0xv
YWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNz
LmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RTdGFydDsKLSAgICBk
ZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9u
c2VNZXRyaWNzLmNvbm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kOwot
ICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9h
ZE1ldHJpY3MucmVxdWVzdFN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVz
cG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CisgICAgbV9y
ZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKFdURk1vdmUodGltaW5nKSk7
CiAKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSwg
TmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDlhY2Q3ZmRh
ZTQ2MDJmYmVlNzUzZDU4ZGU3NGI5MTBmMTI1NWFhOWMuLjU4YzQ1NjQ2ODhjOGYzZjJlYWMxYWM0
NzAxODJiODVhZmFkZmM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNs
dWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvQm94Lmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CkBAIC0xMjMsNiArMTI0LDU0IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgfQogfTsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Qm94PFQ+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEJveDxUPiYgYm94
KQorICAgIHsKKyAgICAgICAgaWYgKCFib3gpIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBlbmNvZGVyIDw8
IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgKmJveC5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQm94PFQ+JiBib3gpCisgICAgeworICAg
ICAgICBib29sIGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0VuZ2Fn
ZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghaXNFbmdhZ2Vk
KSB7CisgICAgICAgICAgICBib3ggPSBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBCb3g8VD4gdmFsdWUgPSBCb3g8VD46OmNyZWF0ZSgpOwor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgYm94ID0gV1RGTW92ZSh2YWx1ZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxCb3g8VD4+IGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNFbmdhZ2VkOworICAg
ICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFpc0VuZ2FnZWQpCisgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBpZiAoKmlzRW5nYWdlZCkgewor
ICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAgICAgICAgICBkZWNvZGVyID4+IHZh
bHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEJveDxUPj4oQm94PFQ+Ojpj
cmVhdGUoV1RGTW92ZSgqdmFsdWUpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPEJveDxUPj4oQm94PFQ+KG51bGxwdHIpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjpw
YWlyPFQsIFU+JiBwYWlyKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0Y2ZhNmYzZmU1OGQ0Y2EyOWIzZTJmZGEwYWE3MjExZWVhNjUw
MTY5Li4zNjg1ODg2NjRhZDg1MTk5ZGU2ZmJlMGU4NDBjYTk3Njg0YTdkMDMwIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBOZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIGJlIHNoYXJlZCBieSBtdWx0aXBsZSBSZXNvdXJj
ZVJlc3BvbnNlIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJh
bmdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTAyLTEyICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHM6IEFsbG93IGluc2VjdXJlIHJlcXVlc3RzIG9uIHVwbG9hZApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRlbnRSYW5n
ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJh
bmdlLmNwcAppbmRleCA5ODYzODgzMDJkOTA4ZTBjM2JjMjVhODhhM2E5ZDMwOTk2YWRmNmYxLi4y
MGE5NTdlNTljODUxNjBjODA4MzE3ZTE1YjAxMDI4ZDVmYTliNDU4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBURVNUKFdlYkNvcmUsIFBhcnNlZENvbnRlbnRSYW5nZUZyb21T
dHJpbmcpCiAgICAgQVNTRVJUX0VRKDAsIFBhcnNlZENvbnRlbnRSYW5nZSgiYnl0ZXMgMC0xLzIi
KS5maXJzdEJ5dGVQb3NpdGlvbigpKTsKICAgICBBU1NFUlRfRVEoMSwgUGFyc2VkQ29udGVudFJh
bmdlKCJieXRlcyAwLTEvMiIpLmxhc3RCeXRlUG9zaXRpb24oKSk7CiAgICAgQVNTRVJUX0VRKDIs
IFBhcnNlZENvbnRlbnRSYW5nZSgiYnl0ZXMgMC0xLzIiKS5pbnN0YW5jZUxlbmd0aCgpKTsKLSAg
ICBBU1NFUlRfRVEoUGFyc2VkQ29udGVudFJhbmdlOjpVbmtub3duTGVuZ3RoLCBQYXJzZWRDb250
ZW50UmFuZ2UoImJ5dGVzIDAtMS8qIikuaW5zdGFuY2VMZW5ndGgoKSk7CisgICAgQVNTRVJUX0VR
KFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxlbmd0aCwgUGFyc2VkQ29udGVudFJhbmdlKCJi
eXRlcyAwLTEvKiIpLmluc3RhbmNlTGVuZ3RoKCkpOwogCiAgICAgLy8gV2hpdGVzcGFjZSBlcnJv
cnMKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29udGVudFJhbmdlKCJieXRlcyAgMC0xLyoiKS5p
c1ZhbGlkKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBURVNUKFdlYkNvcmUsIFBhcnNlZENvbnRlbnRS
YW5nZUZyb21TdHJpbmcpCiBURVNUKFdlYkNvcmUsIFBhcnNlZENvbnRlbnRSYW5nZUZyb21WYWx1
ZXMpCiB7CiAgICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVudFJhbmdlKDAsIDEsIDIpLmlzVmFs
aWQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVudFJhbmdlKDAsIDEsIFBhcnNlZENv
bnRlbnRSYW5nZTo6VW5rbm93bkxlbmd0aCkuaXNWYWxpZCgpKTsKKyAgICBBU1NFUlRfVFJVRShQ
YXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3Ro
KS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50UmFuZ2UoKS5pc1Zh
bGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50UmFuZ2UoMSwgMCwgMikuaXNW
YWxpZCgpKTsKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29udGVudFJhbmdlKDAsIDIsIDEpLmlz
VmFsaWQoKSk7CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJh
bmdlRnJvbVZhbHVlcykKIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJhbmdlVG9TdHJpbmcp
CiB7CiAgICAgQVNTRVJUX1NUUkVRKCJieXRlcyAwLTEvMiIsIFBhcnNlZENvbnRlbnRSYW5nZSgw
LCAxLCAyKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVF9TVFJFUSgi
Ynl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29udGVudFJhbmdl
OjpVbmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIEFTU0VS
VF9TVFJFUSgiYnl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29u
dGVudFJhbmdlOjp1bmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIEFTU0VSVF9TVFJFUSgiIiwgUGFyc2VkQ29udGVudFJhbmdlKCkuaGVhZGVyVmFsdWUoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390743</attachid>
            <date>2020-02-14 02:13:33 -0800</date>
            <delta_ts>2020-02-14 04:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214021333.patch</filename>
            <type>text/plain</type>
            <size>52174</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMmM0NTFlMGY5NDUyNjk5ZDVlY2Y3MzM4YTZlNzgx
NTMyNmQ3MDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXREZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSBMaW5lTGF5
b3V0Q29udGV4dDo6bV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDZhYjEw
NGY5MWE3M2FiYzMyNzIwYzE5MGNhZTY3YzE2YzQyOTcwLi42YWE1MzhkYjlmYzE1NWY1MjcxNDcw
NGE4M2MzYmJkNDFjOWJlMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTE0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBp
bnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBcmd1bWVudENvZGVyIHN1cHBvcnQgZm9yIEJveDxUPi4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25z
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+Pjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxCb3g8VD4+OjpkZWNvZGUpOgor
CiAyMDIwLTAyLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTYwMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggM2UyZmFhYTNiNTg5ODM3OGVhODQwODBjMzhiZGRhODQ4ZDIxN2ZlOS4uZWU5ZWRiMzBkZDdi
MzQ2MWM0ZDQ5MWRmYWY3OTI5MDExZDQ5OGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjEz
LDI3ICsyMTMsMzIgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2Jq
ZWN0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1p
bmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikK
K1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MqIHRpbWluZywgUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogewogICAgIGF1
dG8mIGxvYWRUaW1pbmcgPSByZXNvdXJjZUxvYWRlci5sb2FkVGltaW5nKCk7CiAKICAgICBhdXRv
IGVsYXBzZWRUaW1lU2luY2UgPSBbJl0gKGNvbnN0IE1vbm90b25pY1RpbWUmIHRpbWUpIHsKICAg
ICAgICAgcmV0dXJuIG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRU
aW1lU2luY2UodGltZSkuc2Vjb25kcygpOwogICAgIH07CisgICAgT3B0aW9uYWw8TmV0d29ya0xv
YWRNZXRyaWNzPiBlbXB0eTsKKyAgICBpZiAoIXRpbWluZykgeworICAgICAgICBlbXB0eS5lbXBs
YWNlKCk7CisgICAgICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOworICAgIH0KIAogICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFN0YXJ0VGltZShlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcuc3Rh
cnRUaW1lKCkpKQogICAgICAgICAuc2V0UmVkaXJlY3RTdGFydChlbGFwc2VkVGltZVNpbmNlKGxv
YWRUaW1pbmcucmVkaXJlY3RTdGFydCgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0RW5kKGVsYXBz
ZWRUaW1lU2luY2UobG9hZFRpbWluZy5yZWRpcmVjdEVuZCgpKSkKICAgICAgICAgLnNldEZldGNo
U3RhcnQoZWxhcHNlZFRpbWVTaW5jZShsb2FkVGltaW5nLmZldGNoU3RhcnQoKSkpCi0gICAgICAg
IC5zZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNv
bmRzKCkpCi0gICAgICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmcuY29ubmVj
dFN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0Q29ubmVjdEVuZCh0aW1pbmcuY29u
bmVjdEVuZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFy
dCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAu
c2V0UmVxdWVzdFN0YXJ0KHRpbWluZy5yZXF1ZXN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAg
ICAgIC5zZXRSZXNwb25zZVN0YXJ0KHRpbWluZy5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygp
KQotICAgICAgICAuc2V0UmVzcG9uc2VFbmQodGltaW5nLnJlc3BvbnNlRW5kLm1pbGxpc2Vjb25k
cygpKQorICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBT
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cEVuZCh0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RTdGFy
dCh0aW1pbmctPmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5l
Y3RFbmQodGltaW5nLT5jb25uZWN0RW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0U2Vj
dXJlQ29ubmVjdGlvblN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQorICAgICAgICAuc2V0UmVxdWVzdFN0YXJ0KHRpbWluZy0+cmVxdWVzdFN0YXJ0Lm1p
bGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmctPnJlc3BvbnNl
U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXRSZXNwb25zZUVuZCh0aW1pbmctPnJl
c3BvbnNlRW5kLm1pbGxpc2Vjb25kcygpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC0z
NTEsNyArMzU2LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3Bv
bnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAgICAgLnJlbGVhc2Uo
KTsKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNl
dFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzKCksICpyZXNvdXJjZUxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAKICAgICBpZiAoYXV0byYg
Y2VydGlmaWNhdGVJbmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAg
YXV0byBzZWN1cml0eVBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTZWN1cml0eTo6U2Vj
dXJpdHk6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBhNjhmODQ1MjA3MzY5NzdjOGI5MjE2
NjE2YzVhMTc4ZmJmNTI3NWQ2Li5iMDM4YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUz
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpOZXR3bwogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiwgT3B0aW9uYWw8Y29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jj4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyosIFJlc291cmNlTG9hZGVyJik7CiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IGJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjRlZTVkZGJjODI1
OTI1ZWU1MDQ5MTdlOGUzMzI1YzQxNDY1NGNjMS4uMzc0MjEyODFjZTIyMThkYmY5ZDI1ZDg3NmQ3
NTg2MmY1MDBkZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTYzMCw3ICs2MzAsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byByZXNv
dXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RV
UkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHJlc3BvbnNlLmRlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAg
ICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7
CisgICAgICAgIGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7Cisg
ICAgICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQo
cmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgKnRpbWluZywgcmVz
cG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRv
ckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICAgICAgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICAgICAgZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiNzQ4MmFh
NGFhZTlmZTBiYmE4ZGY5N2I2ZTRjNzVhZDQ0N2M2MmFkLi4xNWMwYTcxOThhYzIyMjBiNzg3ODQ5
MWI5NzYzY2Q3Y2ZkMjcxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTY5MSw3ICs2OTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUK
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGVnYWN5IHBhdGggZm9yIHBsYXRmb3JtcyAoYW5kIFJl
c291cmNlSGFuZGxlIHBhdGhzKSB0aGF0IGRvIG5vdCBwcm92aWRlCiAgICAgICAgIC8vIGNvbXBs
ZXRlIGxvYWQgbWV0cmljcyBpbiBkaWRGaW5pc2hMb2FkLiBJbiB0aG9zZSBjYXNlcywgZmFsbCBi
YWNrIHRvIHRoZSBwb3NzaWJpbGl0eQogICAgICAgICAvLyB0aGF0IHRoZXkgcG9wdWxhdGVkIHBh
cnRpYWwgbG9hZCB0aW1pbmcgaW5mb3JtYXRpb24gb24gdGhlIFJlc291cmNlUmVzcG9uc2UuCi0g
ICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0g
bV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxs
KCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAg
IGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAg
ICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZygqdGltaW5nKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgp
ICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IDRlZmQ1NGUwMmQ2OGZhMzJlNmNlZmYwOWYz
NWU0NGU3NzhhOWQzYmEuLjU2YTc1NmRhYmQ3MGE2ZTk1MzhhMTE3MGM4NWI4MDdjNWI3ZGVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0xMjAsMTQg
KzEyMCwxNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxv
b2t1cFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBi
ZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAi
YmFja2ZpbGwiIHdpdGggZmV0Y2hTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
IDwgMF9tcykKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0
KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNv
bnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCgp
OwogICAgIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdo
ZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4
cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmls
bCIgd2l0aCBkb21haW5Mb29rdXBTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAw
X21zKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE1MiwxOCArMTUyLDIwIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCi0gICAg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3NPck51bGwoKTsKICAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEg
bmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5n
IGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwgd2UgImJh
Y2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9
IHRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgaWYgKCF0aW1pbmcpCisgICAgICAgIHJldHVybiBk
b21haW5Mb29rdXBFbmQoKTsKKyAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29u
bmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0U3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4g
ZG9tYWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MncyBjb25uZWN0
IHBoYXNlIGluY2x1ZGVzIEROUywgaG93ZXZlciBOYXZpZ2F0aW9uIFRpbWluZydzCiAgICAgLy8g
Y29ubmVjdCBwaGFzZSBzaG91bGQgbm90LiBTbyBpZiB0aGVyZSBpcyBETlMgdGltZSwgdHJpbSBp
dCBmcm9tIHRoZSBzdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwX21z
ICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5l
Y3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgaWYgKHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kID49IDBfbXMgJiYgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3Rh
cnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwogCiAg
ICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydChjb25uZWN0U3Rh
cnQpOwogfQpAQCAtMTc0LDE0ICsxNzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpjb25uZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
OworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAvLyBj
b25uZWN0RW5kIHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4K
ICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0
ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0g
ICAgaWYgKHRpbWluZy5jb25uZWN0RW5kIDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1p
bmctPmNvbm5lY3RFbmQgPCAwX21zKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5j
b25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0
YXJ0KHRpbWluZy0+Y29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE5MCwxMiArMTky
LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVj
dGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOwogICAgIAotICAgIGlmICh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMjA0LDEwICsyMDYsMTIgQEAgdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdAog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwogICAgIAotICAg
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlcXVlc3RTdGFydCA9
IDBfbXM7CisgICAgaWYgKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVy
LT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKSkKKyAgICAg
ICAgcmVxdWVzdFN0YXJ0ID0gdGltaW5nLT5yZXF1ZXN0U3RhcnQ7CiAgICAgCi0gICAgQVNTRVJU
KHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMF9tcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRp
bWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKKyAgICBBU1NFUlQo
cmVxdWVzdFN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0ZldGNoU3RhcnQocmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKQEAgLTIxNiwxMCArMjIwLDEy
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgp
IGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiByZXF1ZXN0U3RhcnQoKTsK
IAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlc3BvbnNl
U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9
IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkp
CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7CiAgICAgCi0g
ICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlc3BvbnNlU3RhcnQpOwor
ICAgIEFTU0VSVChyZXNwb25zZVN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQocmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgK
aW5kZXggYTM2ZjM0OTcyNTdkNjg4M2Y1ZWNiOTIxYmNlMmFlMGIzNGQxNmI3MC4uNmY2MzUzNzAy
NTZlYjNhYzFkZDc5ZDNhYTQwMjlkNjYxYjM5ZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
QEAgLTQ3LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBOZXR3b3JrTG9hZFByaW9yaXR5IDogdWludDhf
dCB7CiB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKE5ldHdvcmtMb2FkTWV0cmljcyk7CiBwdWJsaWM6CiAgICAgTmV0d29ya0xvYWRN
ZXRyaWNzKCkKICAgICB7CkBAIC0xODQsNyArMTg2LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzIHsKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKK1dFQkNPUkVfRVhQT1JUIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNvcHlUaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSk7CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcAppbmRleCBhM2Q0ZjA0NDA1OWRmZDlhNTdiMzE5MjlkYjhmMTEyYzE1
ZjYyMTEzLi4xOGQ0Njc1MzAxNDZkYTUxZGFiYjM1MGE1ZmI2OTdkNDU0ZTYxYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCkBAIC0zOSwxMSArMzksMTMgQEAgc3RhdGljIGJvb2wgYXJlQ29udGVudFJhbmdlVmFs
dWVzVmFsaWQoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0QnkKICAgICAv
LyBvciB3aG9zZSBpbnN0YW5jZS1sZW5ndGggdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
IGl0cyBsYXN0LWJ5dGUtcG9zIHZhbHVlLCBpcyBpbnZhbGlkLgogICAgIGlmIChmaXJzdEJ5dGVQ
b3NpdGlvbiA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoZmlyc3RCeXRl
UG9zaXRpb24gPj0gMCk7CiAKICAgICBpZiAobGFzdEJ5dGVQb3NpdGlvbiA8IGZpcnN0Qnl0ZVBv
c2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGxhc3RCeXRlUG9zaXRp
b24gPj0gMCk7CiAKLSAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0gUGFyc2VkQ29udGVudFJhbmdl
OjpVbmtub3duTGVuZ3RoKQorICAgIGlmIChpbnN0YW5jZUxlbmd0aCA9PSBQYXJzZWRDb250ZW50
UmFuZ2U6OnVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGxhc3RCeXRlUG9zaXRpb24gPCBpbnN0YW5jZUxlbmd0aDsKQEAgLTk2LDcgKzk4LDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VDb250ZW50UmFuZ2UoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgaW50
NjRfdCYgZmlyc3RCeXRlUG9zaXQKIAogICAgIFN0cmluZyBpbnN0YW5jZVN0cmluZyA9IGhlYWRl
clZhbHVlLnN1YnN0cmluZyhpbnN0YW5jZUxlbmd0aFNlcGFyYXRvclRva2VuICsgMSk7CiAgICAg
aWYgKGluc3RhbmNlU3RyaW5nID09ICIqIikKLSAgICAgICAgaW5zdGFuY2VMZW5ndGggPSBQYXJz
ZWRDb250ZW50UmFuZ2U6OlVua25vd25MZW5ndGg7CisgICAgICAgIGluc3RhbmNlTGVuZ3RoID0g
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoOwogICAgIGVsc2UgewogICAgICAgICBp
ZiAoIWluc3RhbmNlU3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0Pigp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDcgKzExMyw4IEBAIHN0YXRpYyBi
b29sIHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUsIGludDY0X3Qm
IGZpcnN0Qnl0ZVBvc2l0CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdl
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiB7Ci0gICAgbV9pc1ZhbGlkID0gcGFyc2VDb250
ZW50UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3Np
dGlvbiwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFwYXJzZUNvbnRlbnRSYW5nZShoZWFk
ZXJWYWx1ZSwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3Rh
bmNlTGVuZ3RoKSkKKyAgICAgICAgbV9pbnN0YW5jZUxlbmd0aCA9IGludmFsaWRMZW5ndGg7CiB9
CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RC
eXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxl
bmd0aCkKQEAgLTExOSwxNCArMTIyLDE1IEBAIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29u
dGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5CiAgICAg
LCBtX2xhc3RCeXRlUG9zaXRpb24obGFzdEJ5dGVQb3NpdGlvbikKICAgICAsIG1faW5zdGFuY2VM
ZW5ndGgoaW5zdGFuY2VMZW5ndGgpCiB7Ci0gICAgbV9pc1ZhbGlkID0gYXJlQ29udGVudFJhbmdl
VmFsdWVzVmFsaWQobV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2lu
c3RhbmNlTGVuZ3RoKTsKKyAgICBpZiAoIWFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmly
c3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisg
ICAgICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZhbGlkTGVuZ3RoOwogfQogCiBTdHJpbmcgUGFy
c2VkQ29udGVudFJhbmdlOjpoZWFkZXJWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCisgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBp
ZiAobV9pbnN0YW5jZUxlbmd0aCA9PSBVbmtub3duTGVuZ3RoKQorICAgIGlmIChtX2luc3RhbmNl
TGVuZ3RoID09IHVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRl
cyAiLCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgIi8qIik7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImJ5dGVzICIsIG1fZmlyc3RCeXRlUG9zaXRpb24sICct
JywgbV9sYXN0Qnl0ZVBvc2l0aW9uLCAnLycsIG1faW5zdGFuY2VMZW5ndGgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgK
aW5kZXggNWEwNzA0YmQ0Yjk2ZmRjYmE5MGRjMTRjYTQ2NmNiOGVmZDdkZTVjMC4uNDUyNTgxZjU4
MzAwMTZiYzA4N2JjN2NiYzhmOGYyYzc5YzdiNDQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oCkBAIC0yMywzNyArMjMs
NTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFyc2VkQ29udGVudFJhbmdl
X2gKLSNkZWZpbmUgUGFyc2VkQ29udGVudFJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQYXJzZWRDb250ZW50UmFuZ2UgewogcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBpbnZhbGlkTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHVua25vd25M
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFBhcnNlZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmKTsKLSAg
ICBQYXJzZWRDb250ZW50UmFuZ2UoKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZWRDb250
ZW50UmFuZ2UoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0Qnl0ZVBvc2l0
aW9uLCBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKTsKKyAgICBQYXJzZWRDb250ZW50UmFuZ2UoKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoICE9
IGludmFsaWRMZW5ndGg7IH0KICAgICBpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3QgbGFzdEJ5dGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3Qg
aW5zdGFuY2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoOyB9CiAKKyAg
ICBzdGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGludmFsaWRWYWx1ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gUGFyc2VkQ29udGVudFJhbmdlKCk7CisgICAgfQorCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGhlYWRlclZhbHVlKCkgY29uc3Q7CiAKLSAgICBlbnVtIHsgVW5rbm93bkxlbmd0
aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH07CisgICAgc3RydWN0IE1h
cmthYmxlVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFBh
cnNlZENvbnRlbnRSYW5nZSYgcmFuZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAh
cmFuZ2UuaXNWYWxpZCgpOworICAgICAgICB9CiAKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNQb3NpdGl2ZShUKTsKKyAgICAgICAgc3RhdGljIFBhcnNl
ZENvbnRlbnRSYW5nZSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IFBhcnNlZENvbnRlbnRSYW5nZTo6aW52YWxpZFZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9Owog
Citwcml2YXRlOgogICAgIGludDY0X3QgbV9maXJzdEJ5dGVQb3NpdGlvbiB7IDAgfTsKICAgICBp
bnQ2NF90IG1fbGFzdEJ5dGVQb3NpdGlvbiB7IDAgfTsKLSAgICBpbnQ2NF90IG1faW5zdGFuY2VM
ZW5ndGggeyBVbmtub3duTGVuZ3RoIH07Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9Owor
ICAgIGludDY0X3QgbV9pbnN0YW5jZUxlbmd0aCB7IGludmFsaWRMZW5ndGggfTsKIH07CiAKIH0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKaW5kZXggNjgwNzQwNGJmZmRhNmY1ZGVkNTkwNTVjZjAxZTJjOWU2YzRiMjVmYy4u
MTllMWE2YjdmYmMxOTE0ZjcxNjczOWY1N2Y4YjZiNjhkZmE3NTY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTMxLDkgKzEzMiw5IEBAIGNsYXNzIFJlc291cmNlSGFuZGxl
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+LCBwdWJsaWMgQXV0aGVudGljYXRp
b25DCiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAg
IHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwg
TmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGljIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
IGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7CiAjZWxzZQotICAg
IHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4g
Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICopOwogI2VuZGlmCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBlOWFjY2ViZDc3MjBhYzMzYTY4MDg3YjQ5YjBmODJk
MDkyYmUyYWQwLi5iYTAyNDg0MGUwYmYwY2YyMzRmY2FjOWY4MzA4NTllMzYzNzQ2NDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcApAQCAtNTUsNyArNTUsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKCkKICAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRl
cihmYWxzZSkKICAgICAsIG1faGF2ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlcihmYWxzZSkKICAg
ICAsIG1faXNSZWRpcmVjdGVkKGZhbHNlKQorICAgICwgbV9pc1JhbmdlUmVxdWVzdGVkKGZhbHNl
KQogICAgICwgbV9pc051bGwodHJ1ZSkKKyAgICAsIG1fdXNlZExlZ2FjeVRMUyhVc2VkTGVnYWN5
VExTOjpObykKKyAgICAsIG1fdGFpbnRpbmcoVGFpbnRpbmc6OkJhc2ljKQorICAgICwgbV9zb3Vy
Y2UoU291cmNlOjpVbmtub3duKQorICAgICwgbV90eXBlKFR5cGU6OkRlZmF1bHQpCiB7CiB9CiAK
QEAgLTcyLDcgKzc3LDEyIEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiAgICAgLCBtX2hhdmVQ
YXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRDb250ZW50
UmFuZ2VIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2lzUmVkaXJlY3RlZChmYWxzZSkKKyAgICAsIG1f
aXNSYW5nZVJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICwgbV91
c2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFM6Ok5vKQorICAgICwgbV90YWludGluZyhUYWludGlu
Zzo6QmFzaWMpCisgICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCisgICAgLCBtX3R5cGUo
VHlwZTo6RGVmYXVsdCkKIHsKIH0KIApAQCAtOTAsNyArMTAwLDggQEAgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OkNyb3NzVGhyZWFkRGF0YSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWRE
YXRhKCkgY28KICAgICBkYXRhLmh0dHBWZXJzaW9uID0gaHR0cFZlcnNpb24oKS5pc29sYXRlZENv
cHkoKTsKIAogICAgIGRhdGEuaHR0cEhlYWRlckZpZWxkcyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5p
c29sYXRlZENvcHkoKTsKLSAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xv
YWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpOworICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykK
KyAgICAgICAgZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy0+
aXNvbGF0ZWRDb3B5KCk7CiAgICAgZGF0YS50eXBlID0gbV90eXBlOwogICAgIGRhdGEudGFpbnRp
bmcgPSBtX3RhaW50aW5nOwogICAgIGRhdGEuaXNSZWRpcmVjdGVkID0gbV9pc1JlZGlyZWN0ZWQ7
CkBAIC0xMTMsNyArMTI0LDEwIEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmZyb21Dcm9zc1RocmVhZERhdGEoQ3Jvc3NUaHJlYWREYXRhJiYgZGF0CiAgICAgcmVzcG9u
c2Uuc2V0SFRUUFZlcnNpb24oZGF0YS5odHRwVmVyc2lvbik7CiAKICAgICByZXNwb25zZS5tX2h0
dHBIZWFkZXJGaWVsZHMgPSBXVEZNb3ZlKGRhdGEuaHR0cEhlYWRlckZpZWxkcyk7Ci0gICAgcmVz
cG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBkYXRhLm5ldHdvcmtMb2FkTWV0cmljczsKKyAg
ICBpZiAoZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIHJlc3BvbnNlLm1fbmV0d29y
a0xvYWRNZXRyaWNzID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShXVEZNb3ZlKGRh
dGEubmV0d29ya0xvYWRNZXRyaWNzLnZhbHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3Bv
bnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gbnVsbHB0cjsKICAgICByZXNwb25zZS5tX3R5cGUg
PSBkYXRhLnR5cGU7CiAgICAgcmVzcG9uc2UubV90YWludGluZyA9IGRhdGEudGFpbnRpbmc7CiAg
ICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBkYXRhLmlzUmVkaXJlY3RlZDsKQEAgLTgwOCw4
ICs4MjIsMTYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoKSAhPSBiLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChhLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9IGIubV9u
ZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFhLm1fbmV0d29ya0xvYWRN
ZXRyaWNzKSB7CisgICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmIubV9u
ZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9IGVsc2UgaWYgKCFiLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7CisgICAgICAgICAg
ICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmEubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCph
Lm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdl
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXgg
ODg5NDQxNmJlM2I2MTdmMWY3NzM2ZDg5OGVhYzNlOGQ5MTM1NDJmZC4uZDVhZjM4OGMzOWJlZWVi
ZTI5MWM2NGQ5Y2VhYTUwNGZiODczZTE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJp
Y3MuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvQm94
Lmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogYm9vbCBpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMgOiBib29sIHsgTm8sIFllcyB9Owor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUyA9IDE7Citz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihVc2VkTGVnYWN5VExTOjpZZXMpIDw9
ICgoMVUgPDwgYml0V2lkdGhPZlVzZWRMZWdhY3lUTFMpIC0gMSkpOwogCiAvLyBEbyBub3QgdXNl
IHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzb3VyY2VSZXNwb25zZSBpbnN0
ZWFkCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CkBAIC02OCw3ICs3MSw3IEBAIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0Owog
ICAgICAgICBTdHJpbmcgaHR0cFZlcnNpb247CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgaHR0cEhl
YWRlckZpZWxkczsKLSAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmlj
czsKKyAgICAgICAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBuZXR3b3JrTG9hZE1ldHJp
Y3M7CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAgVGFpbnRpbmcgdGFpbnRpbmc7CiAgICAg
ICAgIGJvb2wgaXNSZWRpcmVjdGVkOwpAQCAtMTUwLDYgKzE1Myw5IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5n
ZSgpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBTb3VyY2UgOiB1aW50OF90IHsgVW5rbm93biwg
TmV0d29yaywgRGlza0NhY2hlLCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24sIE1lbW9yeUNhY2hl
LCBNZW1vcnlDYWNoZUFmdGVyVmFsaWRhdGlvbiwgU2VydmljZVdvcmtlciwgQXBwbGljYXRpb25D
YWNoZSwgRE9NQ2FjaGUsIEluc3BlY3Rvck92ZXJyaWRlIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBiaXRXaWR0aE9mU291cmNlID0gNDsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihTb3VyY2U6Okluc3BlY3Rvck92ZXJyaWRlKSA8PSAoKDFVIDw8IGJp
dFdpZHRoT2ZTb3VyY2UpIC0gMSkpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlIHNvdXJj
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U291cmNlKFNvdXJjZSBzb3VyY2UpCiAgICAgewpAQCAt
MTYwLDcgKzE2NiwxNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGVsaW1pbmF0ZWQgZnJvbSBSZXNvdXJjZVJlc3BvbnNlLgogICAg
IC8vIE5ldHdvcmsgbG9hZGluZyBtZXRyaWNzIHNob3VsZCBiZSBkZWxpdmVyZWQgdmlhIGRpZEZp
bmlzaExvYWQKICAgICAvLyBhbmQgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBSZXNvdXJjZVJl
c3BvbnNlLgotICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9CisgICAgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzKiBkZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAg
ICAgIHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIHZvaWQgc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPiYmIG1ldHJpY3MpCisgICAgeworICAgICAgICBtX25ldHdv
cmtMb2FkTWV0cmljcyA9IFdURk1vdmUobWV0cmljcyk7CisgICAgfQogCiAgICAgLy8gVGhlIFJl
c291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIHByb3Zp
ZGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVtb3J5IHVzYWdlIGluZm9ybWF0aW9uCiAgICAgdW5zaWdu
ZWQgbWVtb3J5VXNhZ2UoKSBjb25zdApAQCAtMjIyLDcgKzIzNyw3IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBBdG9tU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgQXRv
bVN0cmluZyBtX2h0dHBWZXJzaW9uOwogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmll
bGRzOwotICAgIG11dGFibGUgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNz
OworICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IG1fbmV0d29ya0xvYWRNZXRyaWNzOwogCiAg
ICAgbXV0YWJsZSBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
CkBAIC0yNDEsMTggKzI1NiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAg
bXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7CiAgICAgbXV0
YWJsZSBib29sIG1faGF2ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlciA6IDE7CiAgICAgYm9vbCBt
X2lzUmVkaXJlY3RlZCA6IDE7CisgICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgOiAxOwogcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9pc051bGwgOiAxOwotCisgICAgdW5zaWduZWQgbV9pbml0TGV2
ZWwgOiAzOyAvLyBDb250cm9sbGVkIGJ5IFJlc291cmNlUmVzcG9uc2UuCisgICAgbXV0YWJsZSBV
c2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyA6IGJpdFdpZHRoT2ZVc2VkTGVnYWN5VExTOwog
cHJpdmF0ZToKLSAgICBTb3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsKLSAgICBU
eXBlIG1fdHlwZSB7IFR5cGU6OkRlZmF1bHQgfTsKLSAgICBUYWludGluZyBtX3RhaW50aW5nIHsg
VGFpbnRpbmc6OkJhc2ljIH07Ci0gICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgeyBmYWxzZSB9
OwotCisgICAgVGFpbnRpbmcgbV90YWludGluZyA6IGJpdFdpZHRoT2ZUYWludGluZzsKKyAgICBT
b3VyY2UgbV9zb3VyY2UgOiBiaXRXaWR0aE9mU291cmNlOworICAgIFR5cGUgbV90eXBlIDogYml0
V2lkdGhPZlR5cGU7CiBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAg
fTsKLSAgICBtdXRhYmxlIFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIHsgVXNlZExlZ2Fj
eVRMUzo6Tm8gfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KQEAgLTI3Niw3ICsyOTAsNyBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcHV0IHRoZSBuZXR3b3JrTG9hZE1ldHJpY3MgaW5mbwogICAg
IC8vIGludG8gdGhlIGRpc2sgY2FjaGUsIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciB1c2UgdGhlIG9s
ZCBpbmZvLgotICAgIGlmIChFbmNvZGVyOjppc0lQQ0VuY29kZXIpCisgICAgaWYgY29uc3RleHBy
IChFbmNvZGVyOjppc0lQQ0VuY29kZXIpCiAgICAgICAgIGVuY29kZXIgPDwgbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7CiAKICAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CkBAIC0yODUsNyAr
Mjk5LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKG1fdGFpbnRpbmcpOwogICAgIGVuY29kZXIgPDwgbV9pc1JlZGlyZWN0ZWQ7Ci0g
ICAgZW5jb2RlciA8PCBtX3VzZWRMZWdhY3lUTFM7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDxVc2VkTGVnYWN5VExTPihtX3VzZWRMZWdhY3lUTFMpOwogICAgIGVuY29kZXIgPDwgbV9pc1Jh
bmdlUmVxdWVzdGVkOwogfQogCkBAIC0zMTgsMjQgKzMzMiwzNCBAQCBib29sIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZUJhc2Um
IHJlc3BvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9odHRwSGVhZGVyRmll
bGRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIFRoZSBuZXR3b3JrTG9hZE1ldHJp
Y3MgaW5mbyBpcyBvbmx5IHNlbmQgb3ZlciBJUEMgYW5kIG5vdCBzdG9yZWQgaW4gZGlzayBjYWNo
ZS4KLSAgICBpZiAoRGVjb2Rlcjo6aXNJUENEZWNvZGVyICYmICFkZWNvZGVyLmRlY29kZShyZXNw
b25zZS5tX25ldHdvcmtMb2FkTWV0cmljcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiBjb25zdGV4cHIgKERlY29kZXI6OmlzSVBDRGVjb2RlcikgeworICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3BvbnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX2h0
dHBTdGF0dXNDb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzcG9uc2UubV9jZXJ0aWZpY2F0ZUluZm8pKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzcG9uc2UubV9zb3VyY2UpKQorICAgIFNv
dXJjZSBzb3VyY2UgPSBTb3VyY2U6OlVua25vd247CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0oc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKHJlc3BvbnNlLm1fdHlwZSkpCisgICAgcmVzcG9uc2UubV9zb3VyY2UgPSBzb3VyY2U7
CisgICAgVHlwZSB0eXBlID0gVHlwZTo6RGVmYXVsdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bSh0eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKHJlc3BvbnNlLm1fdGFpbnRpbmcpKQorICAgIHJlc3BvbnNlLm1fdHlwZSA9IHR5cGU7
CisgICAgVGFpbnRpbmcgdGFpbnRpbmcgPSBUYWludGluZzo6QmFzaWM7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0odGFpbnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVz
cG9uc2UubV90YWludGluZyA9IHRhaW50aW5nOwogICAgIGJvb2wgaXNSZWRpcmVjdGVkID0gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1JlZGlyZWN0ZWQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMpKQorICAgIFVz
ZWRMZWdhY3lUTFMgdXNlZExlZ2FjeVRMUyA9IFVzZWRMZWdhY3lUTFM6Ok5vOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodXNlZExlZ2FjeVRMUykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXNwb25zZS5tX3VzZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTOwogICAgIGJvb2wgaXNS
YW5nZVJlcXVlc3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNSYW5nZVJl
cXVlc3RlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggYTlmMzlmMzkz
MDEyOGE1MzMzNDA2MWM1Y2M0MGJkZjk0OWEwMzA3MC4uMmFjN2VkYmZhOTc5Y2RhOTZjMjJjZjU2
Y2I3MjFmMzI5MDJjNjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTM5LDMwICszOSwzMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVz
cG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBt
X2luaXRMZXZlbChBbGxGaWVsZHMpCiAgICAgeworICAgICAgICBtX2luaXRMZXZlbCA9IEFsbEZp
ZWxkczsKICAgICB9CiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJlc291cmNlUmVz
cG9uc2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotICAgICAgICA6IG1faW5pdExldmVs
KFVuaW5pdGlhbGl6ZWQpCi0gICAgICAgICwgbV9jZlJlc3BvbnNlKGNmUmVzcG9uc2UpCisgICAg
ICAgIDogbV9jZlJlc3BvbnNlKGNmUmVzcG9uc2UpCiAgICAgeworICAgICAgICBtX2luaXRMZXZl
bCA9IFVuaW5pdGlhbGl6ZWQ7CiAgICAgICAgIG1faXNOdWxsID0gIWNmUmVzcG9uc2U7CiAgICAg
fQogI2Vsc2UKICAgICBSZXNvdXJjZVJlc3BvbnNlKE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2Up
Ci0gICAgICAgIDogbV9pbml0TGV2ZWwoVW5pbml0aWFsaXplZCkKLSAgICAgICAgLCBtX25zUmVz
cG9uc2UobnNSZXNwb25zZSkKKyAgICAgICAgOiBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKICAg
ICB7CisgICAgICAgIG1faW5pdExldmVsID0gVW5pbml0aWFsaXplZDsKICAgICAgICAgbV9pc051
bGwgPSAhbnNSZXNwb25zZTsKICAgICB9CiAjZW5kaWYKIAogICAgIFJlc291cmNlUmVzcG9uc2Uo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3Rl
ZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogICAgICAgICA6IFJlc291
cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2Rp
bmdOYW1lKQotICAgICAgICAsIG1faW5pdExldmVsKEFsbEZpZWxkcykKICAgICB7CisgICAgICAg
IG1faW5pdExldmVsID0gQWxsRmllbGRzOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMTA2LDggKzEwNiw2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3Vy
Y2VSZXNwb25zZUJhc2UgewogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwogCi0gICAg
dW5zaWduZWQgbV9pbml0TGV2ZWwgOiAzOwotCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgYm9v
bCBtX2lzUXVpY2tMb29rIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQpp
bmRleCBmYmI4ZDY4MDg4YWRkYmJjMGI2ODcwMTJmOGQ0MTBiYmUzOTBkY2IxLi45ZGFmZjdlOTdm
MThmNWYwMjE5ZWVmMGM2YTJjZjJmZWMxNDE1NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQpA
QCAtMzcsMTAgKzM3LDEyIEBAIHN0YXRpYyBkb3VibGUgdGltaW5nVmFsdWUoTlNEaWN0aW9uYXJ5
ICp0aW1pbmdEYXRhLCBOU1N0cmluZyAqa2V5KQogICAgIHJldHVybiAwLjA7CiB9CiAgICAgCi12
b2lkIGNvcHlUaW1pbmdEYXRhKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTmV0d29ya0xvYWRN
ZXRyaWNzJiB0aW1pbmcpCitCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBjb3B5VGltaW5nRGF0YShO
U0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEpCiB7CiAgICAgaWYgKCF0aW1pbmdEYXRhKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQm94PE5ldHdvcmtMb2Fk
TWV0cmljcz4gdGltaW5nID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZSgpOwogCiAg
ICAgLy8gVGhpcyBpcyBub3QgdGhlIG5hdmlnYXRpb25TdGFydCB0aW1lIGluIG1vbm90b25pYyB0
aW1lLCBidXQgdGhlIG90aGVyIHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUKICAgICAv
LyBhbmQgb25seSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aW1lcyBhcmUgc3RvcmVkLgpAQCAt
NTQsMTUgKzU2LDE3IEBAIHZvaWQgY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdE
YXRhLCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZykKICAgICBkb3VibGUgcmVxdWVzdFN0YXJ0
ID0gdGltaW5nVmFsdWUodGltaW5nRGF0YSwgQCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQi
KTsKICAgICBkb3VibGUgcmVzcG9uc2VTdGFydCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAi
X2tDRk5UaW1pbmdEYXRhUmVzcG9uc2VTdGFydCIpOwogCi0gICAgdGltaW5nLmRvbWFpbkxvb2t1
cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8PSAwID8gLTEgOiBkb21haW5Mb29r
dXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuZG9tYWluTG9va3VwRW5kID0g
U2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwRW5kIC0gcmVm
ZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5jb25uZWN0U3RhcnQgPSBTZWNvbmRzKGNvbm5lY3RT
dGFydCA8PSAwID8gLTEgOiBjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGlt
aW5nLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IFNlY29uZHMoc2VjdXJlQ29ubmVjdGlvblN0YXJ0
IDw9IDAgPyAtMSA6IHNlY3VyZUNvbm5lY3Rpb25TdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAg
ICB0aW1pbmcuY29ubmVjdEVuZCA9IFNlY29uZHMoY29ubmVjdEVuZCA8PSAwID8gLTEgOiBjb25u
ZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5yZXF1ZXN0U3RhcnQgPSBTZWNv
bmRzKHJlcXVlc3RTdGFydCA8PSAwID8gMCA6IHJlcXVlc3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0
KTsKLSAgICB0aW1pbmcucmVzcG9uc2VTdGFydCA9IFNlY29uZHMocmVzcG9uc2VTdGFydCA8PSAw
ID8gMCA6IHJlc3BvbnNlU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5kb21h
aW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3RhcnQgPD0gMCA/IC0xIDogZG9t
YWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5kb21haW5Mb29r
dXBFbmQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZCA8PSAwID8gLTEgOiBkb21haW5Mb29rdXBF
bmQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5jb25uZWN0U3RhcnQgPSBTZWNvbmRz
KGNvbm5lY3RTdGFydCA8PSAwID8gLTEgOiBjb25uZWN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7
CisgICAgdGltaW5nLT5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRzKHNlY3VyZUNvbm5l
Y3Rpb25TdGFydCA8PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgLSByZWZlcmVuY2VT
dGFydCk7CisgICAgdGltaW5nLT5jb25uZWN0RW5kID0gU2Vjb25kcyhjb25uZWN0RW5kIDw9IDAg
PyAtMSA6IGNvbm5lY3RFbmQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5yZXF1ZXN0
U3RhcnQgPSBTZWNvbmRzKHJlcXVlc3RTdGFydCA8PSAwID8gMCA6IHJlcXVlc3RTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKKyAgICB0aW1pbmctPnJlc3BvbnNlU3RhcnQgPSBTZWNvbmRzKHJlc3Bv
bnNlU3RhcnQgPD0gMCA/IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwogCiAg
ICAgLy8gTk9URTogcmVzcG9uc2VFbmQgaXMgbm90IHBvcHVsYXRlZCBpbiB0aGlzIGNvZGUgcGF0
aC4KKworICAgIHJldHVybiB0aW1pbmc7CiB9CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcAppbmRleCA2MTc5YzhlZTkzMWMzZDgyMWY5YzE2ODg5MDVmZGI4OTVi
NTZlMDRhLi4yMWRjNDQ2YTQwOThiN2VmMDFmNDBiYTAyYzYzNDIxOGRlZmNmNDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxS
ZXF1ZXN0JiByZXF1ZXN0LCBDdQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2Uo
cmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgbV9yZXNwb25zZS5zZXRDZXJ0aWZpY2F0ZUluZm8oV1RG
TW92ZShyZWNlaXZlZFJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbykpOwotICAgIG1fcmVzcG9uc2Uu
c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhXVEZNb3ZlKHJlY2VpdmVkUmVzcG9uc2Uu
bmV0d29ya0xvYWRNZXRyaWNzKSk7CisgICAgbV9yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoV1RGTW92ZShyZWNl
aXZlZFJlc3BvbnNlLm5ldHdvcmtMb2FkTWV0cmljcykpKTsKIAogICAgIGhhbmRsZUNvb2tpZUhl
YWRlcnMoZCgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZWNlaXZlZFJlc3BvbnNlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlc3BvbnNlLmgKaW5kZXggN2Y1Nzg4ZjRiMjI2MGNkNDNiMmYxMmFiMWY5ODYzYWMxNjNi
NGIzYS4uNTAxOGUzODU4NTExM2RmNjY0NDUxMWI4MjQ3NTRlNGQzNmIwYWU3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZS5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlUmVz
cG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIHZvaWQgYXBwZW5kSFRU
UEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUlu
Zm8oQ2VydGlmaWNhdGVJbmZvJiYpOwotICAgIHZvaWQgc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmJik7CiAKICAgICBib29sIHNob3VsZFJlZGlyZWN0
KCk7CiAgICAgYm9vbCBpc01vdmVkUGVybWFuZW50bHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25z
ZUN1cmwuY3BwCmluZGV4IDE5MGEwZjIwYzMwYTVhYjczN2E1YWQxZWE2YmU1ZjcwOWUwY2ZjYWMu
LmEwZjM5NGZjMjE3NDVlOGQ0OTJhNTAwYjg2YWY4MjU1YzEwYjQzNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2VDdXJsLmNwcApAQCAtMTUxLDExICsxNTEsNiBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6
OnNldENlcnRpZmljYXRlSW5mbyhDZXJ0aWZpY2F0ZUluZm8mJiBjZXJ0aWZpY2F0ZUluZm8pCiAg
ICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSBXVEZNb3ZlKGNlcnRpZmljYXRlSW5mbyk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhOZXR3
b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCi17Ci0gICAgbV9uZXR3b3JrTG9h
ZE1ldHJpY3MgPSBXVEZNb3ZlKG5ldHdvcmtMb2FkTWV0cmljcyk7Ci19Ci0KIFN0cmluZyBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRl
eCAwM2ZhMjY4N2Y2ODE4MTM0MTQxZDFjNjk1MThiYjg3Zjg4MGNhYjIzLi43NjdjNTc5NDk5OWM5
NDYxMTgwYmNmZWYwYzJhMTkyMmZhMTA3MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNjU1LDkg
KzY1NSw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2hhbGxlbmdlUmVqZWN0aW9u
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjCiAgICAgY2xlYXJBdXRoZW50aWNhdGlv
bigpOwogfQogCi12b2lkIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShO
U1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQor
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz4gUmVzb3VyY2VIYW5kbGU6OmdldENvbm5lY3Rpb25UaW1p
bmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbikKIHsKLSAgICBjb3B5VGltaW5nRGF0
YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0sIHRpbWluZyk7CisgICAgcmV0dXJuIGNvcHlUaW1p
bmdEYXRhKFtjb25uZWN0aW9uIF90aW1pbmdEYXRhXSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCA4MzBlZDA2NzQwNmU1ODE5NTM1MzYxNWY3ZjI2M2Ey
ZGFhMzMwMTIyLi4xOWU2MjA1ODBiNzY4MmY4NmU3MmNkOTNiN2Q0ZmQ5MzE5ZWFiYzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VS
TENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb24K
IAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc291cmNlUmVzcG9uc2Uoci5nZXQoKSk7CiAg
ICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6TmV0d29yayk7Ci0gICAgICAgIFJlc291cmNlSGFuZGxlOjpnZXRDb25uZWN0aW9uVGltaW5n
RGF0YShjb25uZWN0aW9uLmdldCgpLCByZXNvdXJjZVJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7CisgICAgICAgIHJlc291cmNlUmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljcyhSZXNvdXJjZUhhbmRsZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEo
Y29ubmVjdGlvbi5nZXQoKSkpOwogCiAgICAgICAgIG1faGFuZGxlLT5kaWRSZWNlaXZlUmVzcG9u
c2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgW3NlbGYsIHByb3RlY3RlZFNlbGYgPSBXVEZN
b3ZlKHByb3RlY3RlZFNlbGYpXSB7CiAgICAgICAgICAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQppbmRleCAyYTM1OTI0MmE3YjM3N2I4MGFiNjEzOTI0OTc3YTk1Y2Vm
NmRhOTAwLi5iOWYwMTU0MWVlM2IyYTU0YjRhMzY1YzRiODAzNTQ3MTRlZmUxODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCkBAIC04NDksNyArODQ5LDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VS
TFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEK
IAogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW5ub3QgYmUgZWxpbWluYXRlZCB1bnRpbCBvdGhl
ciBjb2RlIG5vIGxvbmdlciByZWxpZXMgb24gUmVzb3VyY2VSZXNwb25zZSdzCiAgICAgICAgIC8v
IE5ldHdvcmtMb2FkTWV0cmljcy4gRm9yIGV4YW1wbGUsIFBlcmZvcm1hbmNlVGltaW5nLgotICAg
ICAgICBjb3B5VGltaW5nRGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdLCByZXNvdXJjZVJlc3Bv
bnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgICAgIHJlc291cmNlUmVz
cG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhXZWJDb3JlOjpjb3B5VGltaW5n
RGF0YShbZGF0YVRhc2sgX3RpbWluZ0RhdGFdKSk7CiAKICAgICAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgbmV0
d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNl
KSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgdGFza0lkZW50
aWZpZXJdKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcAppbmRleCA5ZTQxOTE2NzRhMDU1NTQ2Yzc5YjFhNjg3Njc5YjEyMjYwMWYxMzQ3Li5iMmRk
OWU1MzY2MDZhMWRhZDAxNTdmN2I4MGYwYTZiYTc2ZGRlYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3Bw
CkBAIC0zNjcsMTYgKzM2NywxNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsKICAgICBBU1NFUlQoIW1fcmVzcG9uc2UuaXNOdWxsKCkp
OwogCisgICAgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gdGltaW5nID0gQm94PE5ldHdvcmtMb2Fk
TWV0cmljcz46OmNyZWF0ZSgpOworICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLnJlc3BvbnNlU3RhcnQ7CisgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFy
dCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0OworICAgIHRpbWluZy0+
ZG9tYWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kOwor
ICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0
YXJ0OworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1l
dHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0OworICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IG1f
bmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7CisgICAgdGltaW5nLT5yZXF1ZXN0U3RhcnQg
PSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXF1ZXN0U3RhcnQ7CisgICAgdGltaW5nLT5yZXNwb25z
ZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSBub2JvZHkgZGVwZW5kcyBvbiBkZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzLgotICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgZGVwcmVjYXRlZFJlc3BvbnNlTWV0
cmljcyA9IG1fcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOwotICAgIGRl
cHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLnJlc3BvbnNlU3RhcnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5kb21haW5M
b29rdXBTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0OwotICAg
IGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MuZG9tYWluTG9va3VwRW5kID0gbV9uZXR3b3JrTG9h
ZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3Mu
Y29ubmVjdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0OwotICAgIGRl
cHJlY2F0ZWRSZXNwb25zZU1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gbV9uZXR3b3Jr
TG9hZE1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0OwotICAgIGRlcHJlY2F0ZWRSZXNwb25z
ZU1ldHJpY3MuY29ubmVjdEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmNvbm5lY3RFbmQ7Ci0g
ICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXF1ZXN0U3RhcnQgPSBtX25ldHdvcmtMb2Fk
TWV0cmljcy5yZXF1ZXN0U3RhcnQ7Ci0gICAgZGVwcmVjYXRlZFJlc3BvbnNlTWV0cmljcy5yZXNw
b25zZVN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVzcG9uc2VTdGFydDsKKyAgICBtX3Jl
c3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV1RGTW92ZSh0aW1pbmcpKTsK
IAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlKG1fcmVzcG9uc2UpLCBO
ZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewogICAgICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggOWFjZDdmZGFl
NDYwMmZiZWU3NTNkNThkZTc0YjkxMGYxMjU1YWE5Yy4uNThjNDU2NDY4OGM4ZjNmMmVhYzFhYzQ3
MDE4MmI4NWFmYWRmYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1
ZGUgIkVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KQEAgLTEyMyw2ICsxMjQsNTQgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9uYWw8VD4+IHsKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxCb3g8VD4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQm94PFQ+JiBib3gp
CisgICAgeworICAgICAgICBpZiAoIWJveCkgeworICAgICAgICAgICAgZW5jb2RlciA8PCBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGVuY29kZXIgPDwg
dHJ1ZTsKKyAgICAgICAgZW5jb2RlciA8PCAqYm94LmdldCgpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBCb3g8VD4mIGJveCkKKyAgICB7CisgICAg
ICAgIGJvb2wgaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5nYWdl
ZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKCFpc0VuZ2FnZWQp
IHsKKyAgICAgICAgICAgIGJveCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIEJveDxUPiB2YWx1ZSA9IEJveDxUPjo6Y3JlYXRlKCk7Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBib3ggPSBXVEZNb3ZlKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPEJveDxUPj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CisgICAg
ICAgIGRlY29kZXIgPj4gaXNFbmdhZ2VkOworICAgICAgICBpZiAoIWlzRW5nYWdlZCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7Cisg
ICAgICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gdmFs
dWU7CisgICAgICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8VD46OmNy
ZWF0ZShXVEZNb3ZlKCp2YWx1ZSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gT3B0aW9u
YWw8Qm94PFQ+PihCb3g8VD4obnVsbHB0cikpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnBh
aXI8VCwgVT4mIHBhaXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDRjZmE2ZjNmZTU4ZDRjYTI5YjNlMmZkYTBhYTcyMTFlZWE2NTAx
NjkuLjM2ODU4ODY2NGFkODUxOTlkZTZmYmUwZTg0MGNhOTc2ODRhN2QwMzAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IE5ldHdvcmtMb2FkTWV0cmljcyBzaG91bGQgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIFJlc291cmNl
UmVzcG9uc2UgaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDItMTIgIEpv
bmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJ1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0czogQWxsb3cgaW5zZWN1cmUgcmVxdWVzdHMgb24gdXBsb2FkCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdl
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCmluZGV4IDk4NjM4ODMwMmQ5MDhlMGMzYmMyNWE4OGEzYTlkMzA5OTZhZGY2ZjEuLjIw
YTk1N2U1OWM4NTE2MGM4MDgzMTdlMTViMDEwMjhkNWZhOWI0NTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJhbmdlRnJvbVN0
cmluZykKICAgICBBU1NFUlRfRVEoMCwgUGFyc2VkQ29udGVudFJhbmdlKCJieXRlcyAwLTEvMiIp
LmZpcnN0Qnl0ZVBvc2l0aW9uKCkpOwogICAgIEFTU0VSVF9FUSgxLCBQYXJzZWRDb250ZW50UmFu
Z2UoImJ5dGVzIDAtMS8yIikubGFzdEJ5dGVQb3NpdGlvbigpKTsKICAgICBBU1NFUlRfRVEoMiwg
UGFyc2VkQ29udGVudFJhbmdlKCJieXRlcyAwLTEvMiIpLmluc3RhbmNlTGVuZ3RoKCkpOwotICAg
IEFTU0VSVF9FUShQYXJzZWRDb250ZW50UmFuZ2U6OlVua25vd25MZW5ndGgsIFBhcnNlZENvbnRl
bnRSYW5nZSgiYnl0ZXMgMC0xLyoiKS5pbnN0YW5jZUxlbmd0aCgpKTsKKyAgICBBU1NFUlRfRVEo
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoLCBQYXJzZWRDb250ZW50UmFuZ2UoImJ5
dGVzIDAtMS8qIikuaW5zdGFuY2VMZW5ndGgoKSk7CiAKICAgICAvLyBXaGl0ZXNwYWNlIGVycm9y
cwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50UmFuZ2UoImJ5dGVzICAwLTEvKiIpLmlz
VmFsaWQoKSk7CkBAIC03Nyw3ICs3Nyw3IEBAIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJh
bmdlRnJvbVN0cmluZykKIFRFU1QoV2ViQ29yZSwgUGFyc2VkQ29udGVudFJhbmdlRnJvbVZhbHVl
cykKIHsKICAgICBBU1NFUlRfVFJVRShQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgMikuaXNWYWxp
ZCgpKTsKLSAgICBBU1NFUlRfVFJVRShQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29u
dGVudFJhbmdlOjpVbmtub3duTGVuZ3RoKS5pc1ZhbGlkKCkpOworICAgIEFTU0VSVF9UUlVFKFBh
cnNlZENvbnRlbnRSYW5nZSgwLCAxLCBQYXJzZWRDb250ZW50UmFuZ2U6OnVua25vd25MZW5ndGgp
LmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKFBhcnNlZENvbnRlbnRSYW5nZSgpLmlzVmFs
aWQoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKFBhcnNlZENvbnRlbnRSYW5nZSgxLCAwLCAyKS5pc1Zh
bGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250ZW50UmFuZ2UoMCwgMiwgMSkuaXNW
YWxpZCgpKTsKQEAgLTkxLDcgKzkxLDcgQEAgVEVTVChXZWJDb3JlLCBQYXJzZWRDb250ZW50UmFu
Z2VGcm9tVmFsdWVzKQogVEVTVChXZWJDb3JlLCBQYXJzZWRDb250ZW50UmFuZ2VUb1N0cmluZykK
IHsKICAgICBBU1NFUlRfU1RSRVEoImJ5dGVzIDAtMS8yIiwgUGFyc2VkQ29udGVudFJhbmdlKDAs
IDEsIDIpLmhlYWRlclZhbHVlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgQVNTRVJUX1NUUkVRKCJi
eXRlcyAwLTEvKiIsIFBhcnNlZENvbnRlbnRSYW5nZSgwLCAxLCBQYXJzZWRDb250ZW50UmFuZ2U6
OlVua25vd25MZW5ndGgpLmhlYWRlclZhbHVlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgQVNTRVJU
X1NUUkVRKCJieXRlcyAwLTEvKiIsIFBhcnNlZENvbnRlbnRSYW5nZSgwLCAxLCBQYXJzZWRDb250
ZW50UmFuZ2U6OnVua25vd25MZW5ndGgpLmhlYWRlclZhbHVlKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUX1NUUkVRKCIiLCBQYXJzZWRDb250ZW50UmFuZ2UoKS5oZWFkZXJWYWx1ZSgpLnV0
ZjgoKS5kYXRhKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390755</attachid>
            <date>2020-02-14 04:32:25 -0800</date>
            <delta_ts>2020-02-14 11:33:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207747-20200214043224.patch</filename>
            <type>text/plain</type>
            <size>52196</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIzYjJmNmVlOWJmMDg5
YmI3NzgyMWRmYzZhMjk1OTQ2M2FlMzdiMS4uMmM0NTFlMGY5NDUyNjk5ZDVlY2Y3MzM4YTZlNzgx
NTMyNmQ3MDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIwLTAyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRy
aWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgaXMgdmFsdWUgZGF0YSwgYW5kIGl0IGlzIGNvcGllZCBtdWx0aXBsZSB0aW1l
cyBpbiB2YXJpb3VzIHBsYWNlcywgKDEpIHRvIGNyZWF0ZSBhIG5ldyBSZXNvdXJjZVJlc3BvbnNl
CisgICAgICAgIHdoaWNoIGhhcyBzbGlnaHRseSBkaWZmZXJlbnQgZmllbGRzLCBvciAoMSkgdG8g
aG9sZCBSZXNvdXJjZVJlc3BvbnNlIGV2ZW4gYWZ0ZXIgbG9hZGluZyBmaW5pc2hlcy4gRm9yIGV4
YW1wbGUsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGhhcyBWZWN0b3I8UmVzb3VyY2VSZXNwb25z
ZT4gdG8gcmVwbGF5IHJlc3BvbnNlIGRpc3BhdGNoaW5nIGluIHRoZSBjYXNlIG9mIGxvYWRpbmcg
ZnJvbSBCYWNrRm9yd2FyZENhY2hlLiBUaGUgcHJvYmxlbSBpcworICAgICAgICB0aGF0IFJlc291
cmNlUmVzcG9uc2UgaXMgdmVyeSBsYXJnZTogNDQwIGJ5dGVzLgorCisgICAgICAgIFdoaWxlIHdl
IHNvbWV0aW1lcyBjb3BpZXMgaXQgdG8gbW9kaWZ5IHNvbWUgcGFydCBvZiBpdCwgTmV0d29ya0xv
YWRNZXRyaWNzIGlzIGltbXV0YWJsZS4gSXQgaXMgc2V0IHdoZW4gcmVzcG9uc2UgaXMgY3JlYXRl
ZCwKKyAgICAgICAgYW5kIGlzIG5ldmVyIGNoYW5nZWQuIEFuZCBOZXR3b3JrTG9hZE1ldHJpY3Mg
aXMgbGFyZ2U6IHNpemVvZihOZXR3b3JrTG9hZE1ldHJpY3MpIGlzIDE4NCBieXRlcy4gR2l2ZW4g
dGhhdCB3ZSBoYXZlIG11bHRpcGxlCisgICAgICAgIGNvcGllcyBvZiBSZXNvdXJjZVJlc3BvbnNl
IGluIFdlYkNvcmUsIHdlIHNob3VsZCBzaGFyZSBOZXR3b3JrTG9hZE1ldHJpY3MgYnkgdGhlbS4K
KworICAgICAgICBUaGlzIHBhdGNoIHB1dHMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gaW4gUmVz
b3VyY2VSZXNwb25zZSB0byBzaGFyZSBpdCBieSBhbGwgY29waWVkIFJlc291cmNlUmVzcG9uc2Vz
LiBXZSBkbyBub3QgbWFrZSBOZXR3b3JrTG9hZE1ldHJpY3MKKyAgICAgICAgUmVmQ291bnRlZDw+
IGZvciBub3cgc2luY2Ugc29tZSBsZWdpdCBkYXRhIHN0cnVjdHVyZSBlbWJlZHMgTmV0d29ya0xv
YWRNZXRyaWNzLiBUaGlzIHBhdGNoIGFkZHMgQXJndW1lbnRDb2RlciBmb3IgQm94IHNvIHRoYXQg
d2UKKyAgICAgICAgY2FuIGVuY29kZSAvIGRlY29kZSBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBp
biBSZXNvdXJjZVJlc3BvbnNlIGluIElQQy4gVG8gZW5zdXJlIE5ldHdvcmtMb2FkTWV0cmljcyBp
biBSZXNvdXJjZVJlc3BvbnNlIGltbXV0YWJsZSwKKyAgICAgICAgd2UgYWRkIFJlc291cmNlUmVz
cG9uc2U6OnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgaW5zdGVhZCBvZiBtb2RpZnlp
bmcgTmV0d29ya0xvYWRNZXRyaWNzIGFscmVhZHkgY3JlYXRlZCBpbiBSZXNvdXJjZVJlc3BvbnNl
LgorCisgICAgICAgIFdlIGFsc28gYXR0ZW1wdCB0byBjb21wYWN0IFJlc291cmNlUmVzcG9uc2Ug
bW9yZSBieSB1c2luZyBiaXQtZmllbGRzLiBBbmQgcmVtb3ZpbmcgbV9pc1ZhbGlkIGZpZWxkIGlu
IFBhcnNlZENvbnRlbnRSYW5nZSBzaW5jZQorICAgICAgICB0aGlzIGNhbiBiZSByZXByZXNlbnRl
ZCBieSB0aGUgZGlmZmVyZW50IGZpZWxkLiBUaGVzZSBjaGFuZ2VzIG1ha2Ugc2l6ZW9mKFJlc291
cmNlUmVzcG9uc2UpIGZyb20gNDQwIHRvIDI0OC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVp
bGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21haW5Mb29rdXBTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWluTG9va3VwRW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpjb25uZWN0U3RhcnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6OnNlY3VyZUNvbm5lY3Rpb25TdGFy
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6cmVxdWVzdFN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpyZXNwb25z
ZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNl
ZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cnNlZENvbnRlbnRSYW5nZTo6aGVhZGVyVmFsdWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRD
b250ZW50UmFuZ2U6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29u
dGVudFJhbmdlOjppbnZhbGlkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkQ29udGVu
dFJhbmdlOjpNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRSYW5nZTo6TWFya2FibGVUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyc2VkQ29udGVudFJhbmdlOjpQYXJzZWRDb250ZW50UmFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWREYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmcm9tQ3Jvc3NU
aHJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVwcmVjYXRlZE5ldHdv
cmtMb2FkTWV0cmljc09yTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25z
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXREZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisKIDIwMjAtMDItMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlbW92ZSBMaW5lTGF5
b3V0Q29udGV4dDo6bV9wYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxZDZhYjEw
NGY5MWE3M2FiYzMyNzIwYzE5MGNhZTY3YzE2YzQyOTcwLi42YWE1MzhkYjlmYzE1NWY1MjcxNDcw
NGE4M2MzYmJkNDFjOWJlMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTE0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTmV0d29ya0xv
YWRNZXRyaWNzIHNob3VsZCBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgUmVzb3VyY2VSZXNwb25zZSBp
bnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBcmd1bWVudENvZGVyIHN1cHBvcnQgZm9yIEJveDxUPi4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVSZXNwb25z
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8Qm94PFQ+Pjo6
ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxCb3g8VD4+OjpkZWNvZGUpOgor
CiAyMDIwLTAyLTEyICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTYwMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggM2UyZmFhYTNiNTg5ODM3OGVhODQwODBjMzhiZGRhODQ4ZDIxN2ZlOS4uZWU5ZWRiMzBkZDdi
MzQ2MWM0ZDQ5MWRmYWY3OTI5MDExZDQ5OGJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMjEz
LDI3ICsyMTMsMzIgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9ySGVh
ZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogICAgIHJldHVybiBoZWFkZXJzT2Jq
ZWN0OwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1p
bmc+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6YnVpbGRPYmplY3RGb3JUaW1pbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcsIFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikK
K1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpidWlsZE9iamVjdEZvclRpbWluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MqIHRpbWluZywgUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyKQogewogICAgIGF1
dG8mIGxvYWRUaW1pbmcgPSByZXNvdXJjZUxvYWRlci5sb2FkVGltaW5nKCk7CiAKICAgICBhdXRv
IGVsYXBzZWRUaW1lU2luY2UgPSBbJl0gKGNvbnN0IE1vbm90b25pY1RpbWUmIHRpbWUpIHsKICAg
ICAgICAgcmV0dXJuIG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCktPmVsYXBzZWRU
aW1lU2luY2UodGltZSkuc2Vjb25kcygpOwogICAgIH07CisgICAgT3B0aW9uYWw8TmV0d29ya0xv
YWRNZXRyaWNzPiBlbXB0eTsKKyAgICBpZiAoIXRpbWluZykgeworICAgICAgICBlbXB0eS5lbXBs
YWNlKCk7CisgICAgICAgIHRpbWluZyA9ICZlbXB0eS52YWx1ZSgpOworICAgIH0KIAogICAgIHJl
dHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZzo6Y3JlYXRl
KCkKICAgICAgICAgLnNldFN0YXJ0VGltZShlbGFwc2VkVGltZVNpbmNlKGxvYWRUaW1pbmcuc3Rh
cnRUaW1lKCkpKQogICAgICAgICAuc2V0UmVkaXJlY3RTdGFydChlbGFwc2VkVGltZVNpbmNlKGxv
YWRUaW1pbmcucmVkaXJlY3RTdGFydCgpKSkKICAgICAgICAgLnNldFJlZGlyZWN0RW5kKGVsYXBz
ZWRUaW1lU2luY2UobG9hZFRpbWluZy5yZWRpcmVjdEVuZCgpKSkKICAgICAgICAgLnNldEZldGNo
U3RhcnQoZWxhcHNlZFRpbWVTaW5jZShsb2FkVGltaW5nLmZldGNoU3RhcnQoKSkpCi0gICAgICAg
IC5zZXREb21haW5Mb29rdXBTdGFydCh0aW1pbmcuZG9tYWluTG9va3VwU3RhcnQubWlsbGlzZWNv
bmRzKCkpCi0gICAgICAgIC5zZXREb21haW5Mb29rdXBFbmQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldENvbm5lY3RTdGFydCh0aW1pbmcuY29ubmVj
dFN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAuc2V0Q29ubmVjdEVuZCh0aW1pbmcuY29u
bmVjdEVuZC5taWxsaXNlY29uZHMoKSkKLSAgICAgICAgLnNldFNlY3VyZUNvbm5lY3Rpb25TdGFy
dCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vjb25kcygpKQotICAgICAgICAu
c2V0UmVxdWVzdFN0YXJ0KHRpbWluZy5yZXF1ZXN0U3RhcnQubWlsbGlzZWNvbmRzKCkpCi0gICAg
ICAgIC5zZXRSZXNwb25zZVN0YXJ0KHRpbWluZy5yZXNwb25zZVN0YXJ0Lm1pbGxpc2Vjb25kcygp
KQotICAgICAgICAuc2V0UmVzcG9uc2VFbmQodGltaW5nLnJlc3BvbnNlRW5kLm1pbGxpc2Vjb25k
cygpKQorICAgICAgICAuc2V0RG9tYWluTG9va3VwU3RhcnQodGltaW5nLT5kb21haW5Mb29rdXBT
dGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldERvbWFpbkxvb2t1cEVuZCh0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5lY3RTdGFy
dCh0aW1pbmctPmNvbm5lY3RTdGFydC5taWxsaXNlY29uZHMoKSkKKyAgICAgICAgLnNldENvbm5l
Y3RFbmQodGltaW5nLT5jb25uZWN0RW5kLm1pbGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0U2Vj
dXJlQ29ubmVjdGlvblN0YXJ0KHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0Lm1pbGxpc2Vj
b25kcygpKQorICAgICAgICAuc2V0UmVxdWVzdFN0YXJ0KHRpbWluZy0+cmVxdWVzdFN0YXJ0Lm1p
bGxpc2Vjb25kcygpKQorICAgICAgICAuc2V0UmVzcG9uc2VTdGFydCh0aW1pbmctPnJlc3BvbnNl
U3RhcnQubWlsbGlzZWNvbmRzKCkpCisgICAgICAgIC5zZXRSZXNwb25zZUVuZCh0aW1pbmctPnJl
c3BvbnNlRW5kLm1pbGxpc2Vjb25kcygpKQogICAgICAgICAucmVsZWFzZSgpOwogfQogCkBAIC0z
NTEsNyArMzU2LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3Bv
bnNlPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkT2JqZWMKICAgICAgICAgLnJlbGVhc2Uo
KTsKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlcikKLSAgICAgICAgcmVzcG9uc2VPYmplY3QtPnNl
dFRpbWluZyhidWlsZE9iamVjdEZvclRpbWluZyhyZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xv
YWRNZXRyaWNzKCksICpyZXNvdXJjZUxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGltaW5nKHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3NPck51bGwoKSwgKnJlc291cmNlTG9hZGVyKSk7CiAKICAgICBpZiAoYXV0byYg
Y2VydGlmaWNhdGVJbmZvID0gcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCkpIHsKICAgICAgICAg
YXV0byBzZWN1cml0eVBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpTZWN1cml0eTo6U2Vj
dXJpdHk6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCBhNjhmODQ1MjA3MzY5NzdjOGI5MjE2
NjE2YzVhMTc4ZmJmNTI3NWQ2Li5iMDM4YTE4NzljMDQzYWExN2RhZTk3NDI1NjkzZjI5YmU0MmUz
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9y
OjpOZXR3bwogICAgIFdlYlNvY2tldCogd2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkKTsKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3Jr
OjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50KiwgT3B0aW9uYWw8Y29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jj4gPSBXVEY6Om51bGxvcHQpOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpSZXNvdXJjZVRpbWluZz4gYnVpbGRPYmplY3RGb3JUaW1pbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXImKTsKKyAgICBSZWY8SW5z
cGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzb3VyY2VUaW1pbmc+IGJ1aWxkT2JqZWN0Rm9y
VGltaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyosIFJlc291cmNlTG9hZGVyJik7CiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok1ldHJpY3M+IGJ1aWxkT2JqZWN0Rm9y
TWV0cmljcyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0
Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNjRlZTVkZGJjODI1
OTI1ZWU1MDQ5MTdlOGUzMzI1YzQxNDY1NGNjMS4uMzc0MjEyODFjZTIyMThkYmY5ZDI1ZDg3NmQ3
NTg2MmY1MDBkZDVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTYzMCw3ICs2MzAsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNl
Y3VyaXR5Q2gKICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwogCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkucmVzb3VyY2VUaW1pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byByZXNv
dXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RV
UkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHJlc3BvbnNlLmRlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAg
ICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7
CisgICAgICAgIGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7Cisg
ICAgICAgICAgICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21TeW5jaHJvbm91c0xvYWQo
cmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWluZywgKnRpbWluZywgcmVz
cG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBpZiAob3B0aW9ucygpLmluaXRpYXRv
ckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6V29ya2VyKQogICAgICAgICAgICAgZmluaXNo
ZWRUaW1pbmdGb3JXb3JrZXJMb2FkKHJlc291cmNlVGltaW5nKTsKICAgICAgICAgZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiNzQ4MmFh
NGFhZTlmZTBiYmE4ZGY5N2I2ZTRjNzVhZDQ0N2M2MmFkLi4xNWMwYTcxOThhYzIyMjBiNzg3ODQ5
MWI5NzYzY2Q3Y2ZkMjcxZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTY5MSw3ICs2OTEsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUK
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGVnYWN5IHBhdGggZm9yIHBsYXRmb3JtcyAoYW5kIFJl
c291cmNlSGFuZGxlIHBhdGhzKSB0aGF0IGRvIG5vdCBwcm92aWRlCiAgICAgICAgIC8vIGNvbXBs
ZXRlIGxvYWQgbWV0cmljcyBpbiBkaWRGaW5pc2hMb2FkLiBJbiB0aG9zZSBjYXNlcywgZmFsbCBi
YWNrIHRvIHRoZSBwb3NzaWJpbGl0eQogICAgICAgICAvLyB0aGF0IHRoZXkgcG9wdWxhdGVkIHBh
cnRpYWwgbG9hZCB0aW1pbmcgaW5mb3JtYXRpb24gb24gdGhlIFJlc291cmNlUmVzcG9uc2UuCi0g
ICAgICAgIHJlcG9ydFJlc291cmNlVGltaW5nKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcygpKTsKKyAgICAgICAgY29uc3QgYXV0byogdGltaW5nID0g
bV9yZXNvdXJjZS0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxs
KCk7CisgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gZW1wdHk7CisgICAgICAg
IGlmICghdGltaW5nKSB7CisgICAgICAgICAgICBlbXB0eS5lbXBsYWNlKCk7CisgICAgICAgICAg
ICB0aW1pbmcgPSAmZW1wdHkudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXBvcnRSZXNv
dXJjZVRpbWluZygqdGltaW5nKTsKICAgICB9CiAKICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgp
ICE9IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4IDRlZmQ1NGUwMmQ2OGZhMzJlNmNlZmYwOWYz
NWU0NGU3NzhhOWQzYmEuLjU2YTc1NmRhYmQ3MGE2ZTk1MzhhMTE3MGM4NWI4MDdjNWI3ZGVjYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0xMjAsMTQg
KzEyMCwxNCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxv
b2t1cFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQoKTsKICAgICAKLSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxv
YWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAgIAogICAgIC8vIFRoaXMgd2lsbCBi
ZSAtMSB3aGVuIGEgRE5TIHJlcXVlc3QgaXMgbm90IHBlcmZvcm1lZC4KICAgICAvLyBSYXRoZXIg
dGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgbm8gRE5TLCB3ZSAi
YmFja2ZpbGwiIHdpdGggZmV0Y2hTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cFN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
IDwgMF9tcykKICAgICAgICAgcmV0dXJuIGZldGNoU3RhcnQoKTsKIAotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0
KTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWlu
Zy0+ZG9tYWluTG9va3VwU3RhcnQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNvbnN0CkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmRvbWFpbkxvb2t1cEVuZCgpIGNv
bnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCgp
OwogICAgIAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5y
ZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgCiAgICAgLy8gVGhpcyB3aWxsIGJlIC0xIHdo
ZW4gYSBETlMgcmVxdWVzdCBpcyBub3QgcGVyZm9ybWVkLgogICAgIC8vIFJhdGhlciB0aGFuIGV4
cG9zaW5nIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBETlMsIHdlICJiYWNrZmls
bCIgd2l0aCBkb21haW5Mb29rdXBTdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCA8IDBfbXMpCisgICAgaWYgKCF0aW1pbmcgfHwgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPCAw
X21zKQogICAgICAgICByZXR1cm4gZG9tYWluTG9va3VwU3RhcnQoKTsKIAotICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLmRvbWFpbkxvb2t1cEVu
ZCk7CisgICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1p
bmctPmRvbWFpbkxvb2t1cEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKQEAgLTE1MiwxOCArMTUyLDIwIEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdFN0YXJ0KCkgY29uc3QKICAg
ICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cEVuZCgpOwogCi0gICAg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygpOworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3NPck51bGwoKTsKICAgICAKICAgICAvLyBjb25uZWN0U3RhcnQgd2lsbCBiZSAtMSB3aGVuIGEg
bmV0d29yayByZXF1ZXN0IGlzIG5vdCBtYWRlLgogICAgIC8vIFJhdGhlciB0aGFuIGV4cG9zaW5n
IGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGluZGljYXRlcyBubyBuZXcgY29ubmVjdGlvbiwgd2UgImJh
Y2tmaWxsIiB3aXRoIGRvbWFpbkxvb2t1cEVuZC4KLSAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9
IHRpbWluZy5jb25uZWN0U3RhcnQ7CisgICAgaWYgKCF0aW1pbmcpCisgICAgICAgIHJldHVybiBk
b21haW5Mb29rdXBFbmQoKTsKKyAgICBTZWNvbmRzIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+Y29u
bmVjdFN0YXJ0OwogICAgIGlmIChjb25uZWN0U3RhcnQgPCAwX21zKQogICAgICAgICByZXR1cm4g
ZG9tYWluTG9va3VwRW5kKCk7CiAKICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MncyBjb25uZWN0
IHBoYXNlIGluY2x1ZGVzIEROUywgaG93ZXZlciBOYXZpZ2F0aW9uIFRpbWluZydzCiAgICAgLy8g
Y29ubmVjdCBwaGFzZSBzaG91bGQgbm90LiBTbyBpZiB0aGVyZSBpcyBETlMgdGltZSwgdHJpbSBp
dCBmcm9tIHRoZSBzdGFydC4KLSAgICBpZiAodGltaW5nLmRvbWFpbkxvb2t1cEVuZCA+PSAwX21z
ICYmIHRpbWluZy5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3RhcnQpCi0gICAgICAgIGNvbm5l
Y3RTdGFydCA9IHRpbWluZy5kb21haW5Mb29rdXBFbmQ7CisgICAgaWYgKHRpbWluZy0+ZG9tYWlu
TG9va3VwRW5kID49IDBfbXMgJiYgdGltaW5nLT5kb21haW5Mb29rdXBFbmQgPiBjb25uZWN0U3Rh
cnQpCisgICAgICAgIGNvbm5lY3RTdGFydCA9IHRpbWluZy0+ZG9tYWluTG9va3VwRW5kOwogCiAg
ICAgcmV0dXJuIHJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydChjb25uZWN0U3Rh
cnQpOwogfQpAQCAtMTc0LDE0ICsxNzYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpjb25uZWN0RW5kKCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbm5lY3RTdGFydCgpOwogCi0gICAgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiB0
aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcygp
OworICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKTsKICAgICAKICAgICAvLyBj
b25uZWN0RW5kIHdpbGwgYmUgLTEgd2hlbiBhIG5ldHdvcmsgcmVxdWVzdCBpcyBub3QgbWFkZS4K
ICAgICAvLyBSYXRoZXIgdGhhbiBleHBvc2luZyBhIHNwZWNpYWwgdmFsdWUgdGhhdCBpbmRpY2F0
ZXMgbm8gbmV3IGNvbm5lY3Rpb24sIHdlICJiYWNrZmlsbCIgd2l0aCBjb25uZWN0U3RhcnQuCi0g
ICAgaWYgKHRpbWluZy5jb25uZWN0RW5kIDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1p
bmctPmNvbm5lY3RFbmQgPCAwX21zKQogICAgICAgICByZXR1cm4gY29ubmVjdFN0YXJ0KCk7CiAK
LSAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy5j
b25uZWN0RW5kKTsKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0
YXJ0KHRpbWluZy0+Y29ubmVjdEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3Jt
YW5jZVRpbWluZzo6c2VjdXJlQ29ubmVjdGlvblN0YXJ0KCkgY29uc3QKQEAgLTE5MCwxMiArMTky
LDEyIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29ubmVj
dGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIHRpbWluZyA9IGxvYWRlci0+cmVzcG9uc2Uo
KS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzKiB0aW1pbmcgPSBsb2FkZXItPnJlc3BvbnNlKCkuZGVwcmVjYXRlZE5ldHdvcmtMb2Fk
TWV0cmljc09yTnVsbCgpOwogICAgIAotICAgIGlmICh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0
YXJ0IDwgMF9tcykKKyAgICBpZiAoIXRpbWluZyB8fCB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA8IDBfbXMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHJlc291cmNlTG9h
ZFRpbWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcuc2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsK
KyAgICByZXR1cm4gcmVzb3VyY2VMb2FkVGltZVJlbGF0aXZlVG9GZXRjaFN0YXJ0KHRpbWluZy0+
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1h
bmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdApAQCAtMjA0LDEwICsyMDYsMTIgQEAgdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXF1ZXN0U3RhcnQoKSBjb25zdAog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm4gY29ubmVjdEVuZCgpOwogICAgIAotICAg
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25zZSgpLmRl
cHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlcXVlc3RTdGFydCA9
IDBfbXM7CisgICAgaWYgKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyogdGltaW5nID0gbG9hZGVy
LT5yZXNwb25zZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NPck51bGwoKSkKKyAgICAg
ICAgcmVxdWVzdFN0YXJ0ID0gdGltaW5nLT5yZXF1ZXN0U3RhcnQ7CiAgICAgCi0gICAgQVNTRVJU
KHRpbWluZy5yZXF1ZXN0U3RhcnQgPj0gMF9tcyk7Ci0gICAgcmV0dXJuIHJlc291cmNlTG9hZFRp
bWVSZWxhdGl2ZVRvRmV0Y2hTdGFydCh0aW1pbmcucmVxdWVzdFN0YXJ0KTsKKyAgICBBU1NFUlQo
cmVxdWVzdFN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxvYWRUaW1lUmVsYXRp
dmVUb0ZldGNoU3RhcnQocmVxdWVzdFN0YXJ0KTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBl
cmZvcm1hbmNlVGltaW5nOjpyZXNwb25zZVN0YXJ0KCkgY29uc3QKQEAgLTIxNiwxMCArMjIwLDEy
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VTdGFydCgp
IGNvbnN0CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiByZXF1ZXN0U3RhcnQoKTsK
IAotICAgIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nID0gbG9hZGVyLT5yZXNwb25z
ZSgpLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKTsKKyAgICBTZWNvbmRzIHJlc3BvbnNl
U3RhcnQgPSAwX21zOworICAgIGlmIChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MqIHRpbWluZyA9
IGxvYWRlci0+cmVzcG9uc2UoKS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkp
CisgICAgICAgIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmctPnJlc3BvbnNlU3RhcnQ7CiAgICAgCi0g
ICAgQVNTRVJUKHRpbWluZy5yZXNwb25zZVN0YXJ0ID49IDBfbXMpOwotICAgIHJldHVybiByZXNv
dXJjZUxvYWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQodGltaW5nLnJlc3BvbnNlU3RhcnQpOwor
ICAgIEFTU0VSVChyZXNwb25zZVN0YXJ0ID49IDBfbXMpOworICAgIHJldHVybiByZXNvdXJjZUxv
YWRUaW1lUmVsYXRpdmVUb0ZldGNoU3RhcnQocmVzcG9uc2VTdGFydCk7CiB9CiAKIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgK
aW5kZXggYTM2ZjM0OTcyNTdkNjg4M2Y1ZWNiOTIxYmNlMmFlMGIzNGQxNmI3MC4uNmY2MzUzNzAy
NTZlYjNhYzFkZDc5ZDNhYTQwMjlkNjYxYjM5ZTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRl
IDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaD4K
QEAgLTQ3LDYgKzQ4LDcgQEAgZW51bSBjbGFzcyBOZXR3b3JrTG9hZFByaW9yaXR5IDogdWludDhf
dCB7CiB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3MgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEKE5ldHdvcmtMb2FkTWV0cmljcyk7CiBwdWJsaWM6CiAgICAgTmV0d29ya0xvYWRN
ZXRyaWNzKCkKICAgICB7CkBAIC0xODQsNyArMTg2LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzIHsKIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLVdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKK1dFQkNPUkVfRVhQT1JUIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNvcHlUaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSk7CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcAppbmRleCBhM2Q0ZjA0NDA1OWRmZDlhNTdiMzE5MjlkYjhmMTEyYzE1
ZjYyMTEzLi4xOGQ0Njc1MzAxNDZkYTUxZGFiYjM1MGE1ZmI2OTdkNDU0ZTYxYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCkBAIC0zOSwxMSArMzksMTMgQEAgc3RhdGljIGJvb2wgYXJlQ29udGVudFJhbmdlVmFs
dWVzVmFsaWQoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0QnkKICAgICAv
LyBvciB3aG9zZSBpbnN0YW5jZS1sZW5ndGggdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRv
IGl0cyBsYXN0LWJ5dGUtcG9zIHZhbHVlLCBpcyBpbnZhbGlkLgogICAgIGlmIChmaXJzdEJ5dGVQ
b3NpdGlvbiA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQoZmlyc3RCeXRl
UG9zaXRpb24gPj0gMCk7CiAKICAgICBpZiAobGFzdEJ5dGVQb3NpdGlvbiA8IGZpcnN0Qnl0ZVBv
c2l0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKGxhc3RCeXRlUG9zaXRp
b24gPj0gMCk7CiAKLSAgICBpZiAoaW5zdGFuY2VMZW5ndGggPT0gUGFyc2VkQ29udGVudFJhbmdl
OjpVbmtub3duTGVuZ3RoKQorICAgIGlmIChpbnN0YW5jZUxlbmd0aCA9PSBQYXJzZWRDb250ZW50
UmFuZ2U6OnVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGxhc3RCeXRlUG9zaXRpb24gPCBpbnN0YW5jZUxlbmd0aDsKQEAgLTk2LDcgKzk4LDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VDb250ZW50UmFuZ2UoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSwgaW50
NjRfdCYgZmlyc3RCeXRlUG9zaXQKIAogICAgIFN0cmluZyBpbnN0YW5jZVN0cmluZyA9IGhlYWRl
clZhbHVlLnN1YnN0cmluZyhpbnN0YW5jZUxlbmd0aFNlcGFyYXRvclRva2VuICsgMSk7CiAgICAg
aWYgKGluc3RhbmNlU3RyaW5nID09ICIqIikKLSAgICAgICAgaW5zdGFuY2VMZW5ndGggPSBQYXJz
ZWRDb250ZW50UmFuZ2U6OlVua25vd25MZW5ndGg7CisgICAgICAgIGluc3RhbmNlTGVuZ3RoID0g
UGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoOwogICAgIGVsc2UgewogICAgICAgICBp
ZiAoIWluc3RhbmNlU3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0Pigp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExLDcgKzExMyw4IEBAIHN0YXRpYyBi
b29sIHBhcnNlQ29udGVudFJhbmdlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUsIGludDY0X3Qm
IGZpcnN0Qnl0ZVBvc2l0CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdl
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiB7Ci0gICAgbV9pc1ZhbGlkID0gcGFyc2VDb250
ZW50UmFuZ2UoaGVhZGVyVmFsdWUsIG1fZmlyc3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3Np
dGlvbiwgbV9pbnN0YW5jZUxlbmd0aCk7CisgICAgaWYgKCFwYXJzZUNvbnRlbnRSYW5nZShoZWFk
ZXJWYWx1ZSwgbV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2luc3Rh
bmNlTGVuZ3RoKSkKKyAgICAgICAgbV9pbnN0YW5jZUxlbmd0aCA9IGludmFsaWRMZW5ndGg7CiB9
CiAKIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29udGVudFJhbmdlKGludDY0X3QgZmlyc3RC
eXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBpbnN0YW5jZUxl
bmd0aCkKQEAgLTExOSwxNCArMTIyLDE1IEBAIFBhcnNlZENvbnRlbnRSYW5nZTo6UGFyc2VkQ29u
dGVudFJhbmdlKGludDY0X3QgZmlyc3RCeXRlUG9zaXRpb24sIGludDY0X3QgbGFzdEJ5CiAgICAg
LCBtX2xhc3RCeXRlUG9zaXRpb24obGFzdEJ5dGVQb3NpdGlvbikKICAgICAsIG1faW5zdGFuY2VM
ZW5ndGgoaW5zdGFuY2VMZW5ndGgpCiB7Ci0gICAgbV9pc1ZhbGlkID0gYXJlQ29udGVudFJhbmdl
VmFsdWVzVmFsaWQobV9maXJzdEJ5dGVQb3NpdGlvbiwgbV9sYXN0Qnl0ZVBvc2l0aW9uLCBtX2lu
c3RhbmNlTGVuZ3RoKTsKKyAgICBpZiAoIWFyZUNvbnRlbnRSYW5nZVZhbHVlc1ZhbGlkKG1fZmly
c3RCeXRlUG9zaXRpb24sIG1fbGFzdEJ5dGVQb3NpdGlvbiwgbV9pbnN0YW5jZUxlbmd0aCkpCisg
ICAgICAgIG1faW5zdGFuY2VMZW5ndGggPSBpbnZhbGlkTGVuZ3RoOwogfQogCiBTdHJpbmcgUGFy
c2VkQ29udGVudFJhbmdlOjpoZWFkZXJWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCisgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBp
ZiAobV9pbnN0YW5jZUxlbmd0aCA9PSBVbmtub3duTGVuZ3RoKQorICAgIGlmIChtX2luc3RhbmNl
TGVuZ3RoID09IHVua25vd25MZW5ndGgpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJieXRl
cyAiLCBtX2ZpcnN0Qnl0ZVBvc2l0aW9uLCAnLScsIG1fbGFzdEJ5dGVQb3NpdGlvbiwgIi8qIik7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImJ5dGVzICIsIG1fZmlyc3RCeXRlUG9zaXRpb24sICct
JywgbV9sYXN0Qnl0ZVBvc2l0aW9uLCAnLycsIG1faW5zdGFuY2VMZW5ndGgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFJhbmdlLmgK
aW5kZXggNWEwNzA0YmQ0Yjk2ZmRjYmE5MGRjMTRjYTQ2NmNiOGVmZDdkZTVjMC4uNDUyNTgxZjU4
MzAwMTZiYzA4N2JjN2NiYzhmOGYyYzc5YzdiNDQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRSYW5nZS5oCkBAIC0yMywzNyArMjMs
NTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFyc2VkQ29udGVudFJhbmdl
X2gKLSNkZWZpbmUgUGFyc2VkQ29udGVudFJhbmdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQYXJzZWRDb250ZW50UmFuZ2UgewogcHVibGljOgorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBpbnZhbGlkTGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ2NF90Pjo6bWluKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IHVua25vd25M
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFBhcnNlZENvbnRlbnRSYW5nZShjb25zdCBTdHJpbmcmKTsKLSAg
ICBQYXJzZWRDb250ZW50UmFuZ2UoKSB7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZWRDb250
ZW50UmFuZ2UoaW50NjRfdCBmaXJzdEJ5dGVQb3NpdGlvbiwgaW50NjRfdCBsYXN0Qnl0ZVBvc2l0
aW9uLCBpbnQ2NF90IGluc3RhbmNlTGVuZ3RoKTsKKyAgICBQYXJzZWRDb250ZW50UmFuZ2UoKSA9
IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoICE9
IGludmFsaWRMZW5ndGg7IH0KICAgICBpbnQ2NF90IGZpcnN0Qnl0ZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3QgbGFzdEJ5dGVQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEJ5dGVQb3NpdGlvbjsgfQogICAgIGludDY0X3Qg
aW5zdGFuY2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlTGVuZ3RoOyB9CiAKKyAg
ICBzdGF0aWMgUGFyc2VkQ29udGVudFJhbmdlIGludmFsaWRWYWx1ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gUGFyc2VkQ29udGVudFJhbmdlKCk7CisgICAgfQorCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGhlYWRlclZhbHVlKCkgY29uc3Q7CiAKLSAgICBlbnVtIHsgVW5rbm93bkxlbmd0
aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpIH07CisgICAgc3RydWN0IE1h
cmthYmxlVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFBh
cnNlZENvbnRlbnRSYW5nZSYgcmFuZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAh
cmFuZ2UuaXNWYWxpZCgpOworICAgICAgICB9CiAKLXByaXZhdGU6Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGJvb2wgaXNQb3NpdGl2ZShUKTsKKyAgICAgICAgc3RhdGljIFBhcnNl
ZENvbnRlbnRSYW5nZSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IFBhcnNlZENvbnRlbnRSYW5nZTo6aW52YWxpZFZhbHVlKCk7CisgICAgICAgIH0KKyAgICB9Owog
Citwcml2YXRlOgogICAgIGludDY0X3QgbV9maXJzdEJ5dGVQb3NpdGlvbiB7IDAgfTsKICAgICBp
bnQ2NF90IG1fbGFzdEJ5dGVQb3NpdGlvbiB7IDAgfTsKLSAgICBpbnQ2NF90IG1faW5zdGFuY2VM
ZW5ndGggeyBVbmtub3duTGVuZ3RoIH07Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9Owor
ICAgIGludDY0X3QgbV9pbnN0YW5jZUxlbmd0aCB7IGludmFsaWRMZW5ndGggfTsKIH07CiAKIH0K
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKaW5kZXggNjgwNzQwNGJmZmRhNmY1ZGVkNTkwNTVjZjAxZTJjOWU2YzRiMjVmYy4u
MTllMWE2YjdmYmMxOTE0ZjcxNjczOWY1N2Y4YjZiNjhkZmE3NTY3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeS5oIgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgpAQCAtMTMxLDkgKzEzMiw5IEBAIGNsYXNzIFJlc291cmNlSGFuZGxl
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VIYW5kbGU+LCBwdWJsaWMgQXV0aGVudGljYXRp
b25DCiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAg
IHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZiwg
TmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgc3RhdGljIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
IGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKENGVVJMQ29ubmVjdGlvblJlZik7CiAjZWxzZQotICAg
IHN0YXRpYyB2b2lkIGdldENvbm5lY3Rpb25UaW1pbmdEYXRhKE5TVVJMQ29ubmVjdGlvbiAqLCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICBzdGF0aWMgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4g
Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICopOwogI2VuZGlmCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBlOWFjY2ViZDc3MjBhYzMzYTY4MDg3YjQ5YjBmODJk
MDkyYmUyYWQwLi5iYTAyNDg0MGUwYmYwY2YyMzRmY2FjOWY4MzA4NTllMzYzNzQ2NDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcApAQCAtNTUsNyArNTUsMTIgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJl
c291cmNlUmVzcG9uc2VCYXNlKCkKICAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRl
cihmYWxzZSkKICAgICAsIG1faGF2ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlcihmYWxzZSkKICAg
ICAsIG1faXNSZWRpcmVjdGVkKGZhbHNlKQorICAgICwgbV9pc1JhbmdlUmVxdWVzdGVkKGZhbHNl
KQogICAgICwgbV9pc051bGwodHJ1ZSkKKyAgICAsIG1fdXNlZExlZ2FjeVRMUyhVc2VkTGVnYWN5
VExTOjpObykKKyAgICAsIG1fdGFpbnRpbmcoVGFpbnRpbmc6OkJhc2ljKQorICAgICwgbV9zb3Vy
Y2UoU291cmNlOjpVbmtub3duKQorICAgICwgbV90eXBlKFR5cGU6OkRlZmF1bHQpCiB7CiB9CiAK
QEAgLTcyLDcgKzc3LDEyIEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiAgICAgLCBtX2hhdmVQ
YXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRDb250ZW50
UmFuZ2VIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2lzUmVkaXJlY3RlZChmYWxzZSkKKyAgICAsIG1f
aXNSYW5nZVJlcXVlc3RlZChmYWxzZSkKICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICwgbV91
c2VkTGVnYWN5VExTKFVzZWRMZWdhY3lUTFM6Ok5vKQorICAgICwgbV90YWludGluZyhUYWludGlu
Zzo6QmFzaWMpCisgICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCisgICAgLCBtX3R5cGUo
VHlwZTo6RGVmYXVsdCkKIHsKIH0KIApAQCAtOTAsNyArMTAwLDggQEAgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OkNyb3NzVGhyZWFkRGF0YSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y3Jvc3NUaHJlYWRE
YXRhKCkgY28KICAgICBkYXRhLmh0dHBWZXJzaW9uID0gaHR0cFZlcnNpb24oKS5pc29sYXRlZENv
cHkoKTsKIAogICAgIGRhdGEuaHR0cEhlYWRlckZpZWxkcyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5p
c29sYXRlZENvcHkoKTsKLSAgICBkYXRhLm5ldHdvcmtMb2FkTWV0cmljcyA9IG1fbmV0d29ya0xv
YWRNZXRyaWNzLmlzb2xhdGVkQ29weSgpOworICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykK
KyAgICAgICAgZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MgPSBtX25ldHdvcmtMb2FkTWV0cmljcy0+
aXNvbGF0ZWRDb3B5KCk7CiAgICAgZGF0YS50eXBlID0gbV90eXBlOwogICAgIGRhdGEudGFpbnRp
bmcgPSBtX3RhaW50aW5nOwogICAgIGRhdGEuaXNSZWRpcmVjdGVkID0gbV9pc1JlZGlyZWN0ZWQ7
CkBAIC0xMTMsNyArMTI0LDEwIEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OmZyb21Dcm9zc1RocmVhZERhdGEoQ3Jvc3NUaHJlYWREYXRhJiYgZGF0CiAgICAgcmVzcG9u
c2Uuc2V0SFRUUFZlcnNpb24oZGF0YS5odHRwVmVyc2lvbik7CiAKICAgICByZXNwb25zZS5tX2h0
dHBIZWFkZXJGaWVsZHMgPSBXVEZNb3ZlKGRhdGEuaHR0cEhlYWRlckZpZWxkcyk7Ci0gICAgcmVz
cG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MgPSBkYXRhLm5ldHdvcmtMb2FkTWV0cmljczsKKyAg
ICBpZiAoZGF0YS5uZXR3b3JrTG9hZE1ldHJpY3MpCisgICAgICAgIHJlc3BvbnNlLm1fbmV0d29y
a0xvYWRNZXRyaWNzID0gQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShXVEZNb3ZlKGRh
dGEubmV0d29ya0xvYWRNZXRyaWNzLnZhbHVlKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3Bv
bnNlLm1fbmV0d29ya0xvYWRNZXRyaWNzID0gbnVsbHB0cjsKICAgICByZXNwb25zZS5tX3R5cGUg
PSBkYXRhLnR5cGU7CiAgICAgcmVzcG9uc2UubV90YWludGluZyA9IGRhdGEudGFpbnRpbmc7CiAg
ICAgcmVzcG9uc2UubV9pc1JlZGlyZWN0ZWQgPSBkYXRhLmlzUmVkaXJlY3RlZDsKQEAgLTgwOCw4
ICs4MjIsMTYgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3AKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChhLmh0dHBIZWFkZXJGaWVsZHMoKSAhPSBiLmh0dHBIZWFkZXJGaWVsZHMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1l
dHJpY3MoKSAhPSBiLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChhLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9IGIubV9u
ZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpIHsKKyAgICAgICAgaWYgKCFhLm1fbmV0d29ya0xvYWRN
ZXRyaWNzKSB7CisgICAgICAgICAgICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmIubV9u
ZXR3b3JrTG9hZE1ldHJpY3MuZ2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9IGVsc2UgaWYgKCFiLm1fbmV0d29ya0xvYWRNZXRyaWNzKSB7CisgICAgICAgICAg
ICBpZiAoTmV0d29ya0xvYWRNZXRyaWNzKCkgIT0gKmEubV9uZXR3b3JrTG9hZE1ldHJpY3MuZ2V0
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKCph
Lm1fbmV0d29ya0xvYWRNZXRyaWNzLmdldCgpICE9ICpiLm1fbmV0d29ya0xvYWRNZXRyaWNzLmdl
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXgg
ODg5NDQxNmJlM2I2MTdmMWY3NzM2ZDg5OGVhYzNlOGQ5MTM1NDJmZC4uMDljNzViMzZlYmFmOGIx
ZDUzNjA5YmVmMzYwYzQwYTkzYmE4YzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJp
Y3MuaCIKICNpbmNsdWRlICJQYXJzZWRDb250ZW50UmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvQm94
Lmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogYm9vbCBpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMgOiBib29sIHsgTm8sIFllcyB9Owor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRXaWR0aE9mVXNlZExlZ2FjeVRMUyA9IDE7Citz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihVc2VkTGVnYWN5VExTOjpZZXMpIDw9
ICgoMVUgPDwgYml0V2lkdGhPZlVzZWRMZWdhY3lUTFMpIC0gMSkpOwogCiAvLyBEbyBub3QgdXNl
IHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzb3VyY2VSZXNwb25zZSBpbnN0
ZWFkCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CkBAIC02OCw3ICs3MSw3IEBAIGNsYXNz
IFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICAgICAgU3RyaW5nIGh0dHBTdGF0dXNUZXh0Owog
ICAgICAgICBTdHJpbmcgaHR0cFZlcnNpb247CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgaHR0cEhl
YWRlckZpZWxkczsKLSAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmlj
czsKKyAgICAgICAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBuZXR3b3JrTG9hZE1ldHJp
Y3M7CiAgICAgICAgIFR5cGUgdHlwZTsKICAgICAgICAgVGFpbnRpbmcgdGFpbnRpbmc7CiAgICAg
ICAgIGJvb2wgaXNSZWRpcmVjdGVkOwpAQCAtMTUwLDYgKzE1Myw5IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBjb25zdCBQYXJzZWRDb250ZW50UmFuZ2UmIGNvbnRlbnRSYW5n
ZSgpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBTb3VyY2UgOiB1aW50OF90IHsgVW5rbm93biwg
TmV0d29yaywgRGlza0NhY2hlLCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24sIE1lbW9yeUNhY2hl
LCBNZW1vcnlDYWNoZUFmdGVyVmFsaWRhdGlvbiwgU2VydmljZVdvcmtlciwgQXBwbGljYXRpb25D
YWNoZSwgRE9NQ2FjaGUsIEluc3BlY3Rvck92ZXJyaWRlIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBiaXRXaWR0aE9mU291cmNlID0gNDsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihTb3VyY2U6Okluc3BlY3Rvck92ZXJyaWRlKSA8PSAoKDFVIDw8IGJp
dFdpZHRoT2ZTb3VyY2UpIC0gMSkpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlIHNvdXJj
ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U291cmNlKFNvdXJjZSBzb3VyY2UpCiAgICAgewpAQCAt
MTYwLDcgKzE2NiwxNiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGVsaW1pbmF0ZWQgZnJvbSBSZXNvdXJjZVJlc3BvbnNlLgogICAg
IC8vIE5ldHdvcmsgbG9hZGluZyBtZXRyaWNzIHNob3VsZCBiZSBkZWxpdmVyZWQgdmlhIGRpZEZp
bmlzaExvYWQKICAgICAvLyBhbmQgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoZSBSZXNvdXJjZVJl
c3BvbnNlLgotICAgIE5ldHdvcmtMb2FkTWV0cmljcyYgZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0
cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNzOyB9CisgICAgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzKiBkZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX25ldHdvcmtMb2FkTWV0cmljcykKKyAgICAgICAg
ICAgIHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljcy5nZXQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIHZvaWQgc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhC
b3g8TmV0d29ya0xvYWRNZXRyaWNzPiYmIG1ldHJpY3MpCisgICAgeworICAgICAgICBtX25ldHdv
cmtMb2FkTWV0cmljcyA9IFdURk1vdmUobWV0cmljcyk7CisgICAgfQogCiAgICAgLy8gVGhlIFJl
c291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIHByb3Zp
ZGUgcGxhdGZvcm0tc3BlY2lmaWMgbWVtb3J5IHVzYWdlIGluZm9ybWF0aW9uCiAgICAgdW5zaWdu
ZWQgbWVtb3J5VXNhZ2UoKSBjb25zdApAQCAtMjIyLDcgKzIzNyw3IEBAIGNsYXNzIFJlc291cmNl
UmVzcG9uc2VCYXNlIHsKICAgICBBdG9tU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgQXRv
bVN0cmluZyBtX2h0dHBWZXJzaW9uOwogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmll
bGRzOwotICAgIG11dGFibGUgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNz
OworICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IG1fbmV0d29ya0xvYWRNZXRyaWNzOwogCiAg
ICAgbXV0YWJsZSBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
CkBAIC0yNDEsMTggKzI1NiwxNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAg
bXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7CiAgICAgbXV0
YWJsZSBib29sIG1faGF2ZVBhcnNlZENvbnRlbnRSYW5nZUhlYWRlciA6IDE7CiAgICAgYm9vbCBt
X2lzUmVkaXJlY3RlZCA6IDE7CisgICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgOiAxOwogcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9pc051bGwgOiAxOwotCisgICAgdW5zaWduZWQgbV9pbml0TGV2
ZWwgOiAzOyAvLyBDb250cm9sbGVkIGJ5IFJlc291cmNlUmVzcG9uc2UuCisgICAgbXV0YWJsZSBV
c2VkTGVnYWN5VExTIG1fdXNlZExlZ2FjeVRMUyA6IGJpdFdpZHRoT2ZVc2VkTGVnYWN5VExTOwog
cHJpdmF0ZToKLSAgICBTb3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsKLSAgICBU
eXBlIG1fdHlwZSB7IFR5cGU6OkRlZmF1bHQgfTsKLSAgICBUYWludGluZyBtX3RhaW50aW5nIHsg
VGFpbnRpbmc6OkJhc2ljIH07Ci0gICAgYm9vbCBtX2lzUmFuZ2VSZXF1ZXN0ZWQgeyBmYWxzZSB9
OwotCisgICAgVGFpbnRpbmcgbV90YWludGluZyA6IGJpdFdpZHRoT2ZUYWludGluZzsKKyAgICBT
b3VyY2UgbV9zb3VyY2UgOiBiaXRXaWR0aE9mU291cmNlOworICAgIFR5cGUgbV90eXBlIDogYml0
V2lkdGhPZlR5cGU7CiBwcm90ZWN0ZWQ6CiAgICAgc2hvcnQgbV9odHRwU3RhdHVzQ29kZSB7IDAg
fTsKLSAgICBtdXRhYmxlIFVzZWRMZWdhY3lUTFMgbV91c2VkTGVnYWN5VExTIHsgVXNlZExlZ2Fj
eVRMUzo6Tm8gfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KQEAgLTI3Niw3ICsyOTAsNyBAQCB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcHV0IHRoZSBuZXR3b3JrTG9hZE1ldHJpY3MgaW5mbwogICAg
IC8vIGludG8gdGhlIGRpc2sgY2FjaGUsIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciB1c2UgdGhlIG9s
ZCBpbmZvLgotICAgIGlmIChFbmNvZGVyOjppc0lQQ0VuY29kZXIpCisgICAgaWYgY29uc3RleHBy
IChFbmNvZGVyOjppc0lQQ0VuY29kZXIpCiAgICAgICAgIGVuY29kZXIgPDwgbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7CiAKICAgICBlbmNvZGVyIDw8IG1faHR0cFN0YXR1c0NvZGU7CkBAIC0yODUsNyAr
Mjk5LDggQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1fdHlwZSk7CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKG1fdGFpbnRpbmcpOwogICAgIGVuY29kZXIgPDwgbV9pc1JlZGlyZWN0ZWQ7Ci0g
ICAgZW5jb2RlciA8PCBtX3VzZWRMZWdhY3lUTFM7CisgICAgVXNlZExlZ2FjeVRMUyB1c2VkTGVn
YWN5VExTID0gbV91c2VkTGVnYWN5VExTOworICAgIGVuY29kZXIgPDwgdXNlZExlZ2FjeVRMUzsK
ICAgICBlbmNvZGVyIDw8IG1faXNSYW5nZVJlcXVlc3RlZDsKIH0KIApAQCAtMzE4LDI0ICszMzMs
MzQgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFJlc291cmNlUmVzcG9uc2VCYXNlJiByZXNwb24KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAv
LyBUaGUgbmV0d29ya0xvYWRNZXRyaWNzIGluZm8gaXMgb25seSBzZW5kIG92ZXIgSVBDIGFuZCBu
b3Qgc3RvcmVkIGluIGRpc2sgY2FjaGUuCi0gICAgaWYgKERlY29kZXI6OmlzSVBDRGVjb2RlciAm
JiAhZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV9uZXR3b3JrTG9hZE1ldHJpY3MpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgY29uc3RleHByIChEZWNvZGVyOjppc0lQQ0RlY29kZXIp
IHsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZS5tX25ldHdvcmtMb2FkTWV0
cmljcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzcG9uc2UubV9odHRwU3RhdHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlLm1fY2VydGlmaWNhdGVJbmZvKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3Bv
bnNlLm1fc291cmNlKSkKKyAgICBTb3VyY2Ugc291cmNlID0gU291cmNlOjpVbmtub3duOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3R5cGUpKQorICAgIHJlc3Bv
bnNlLm1fc291cmNlID0gc291cmNlOworICAgIFR5cGUgdHlwZSA9IFR5cGU6OkRlZmF1bHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXNwb25zZS5tX3RhaW50aW5nKSkKKyAgICBy
ZXNwb25zZS5tX3R5cGUgPSB0eXBlOworICAgIFRhaW50aW5nIHRhaW50aW5nID0gVGFpbnRpbmc6
OkJhc2ljOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHRhaW50aW5nKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJlc3BvbnNlLm1fdGFpbnRpbmcgPSB0YWludGluZzsKICAgICBi
b29sIGlzUmVkaXJlY3RlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNSZWRp
cmVjdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLm1faXNSZWRpcmVj
dGVkID0gaXNSZWRpcmVjdGVkOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UubV91
c2VkTGVnYWN5VExTKSkKKyAgICBVc2VkTGVnYWN5VExTIHVzZWRMZWdhY3lUTFMgPSBVc2VkTGVn
YWN5VExTOjpObzsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZWRMZWdhY3lUTFMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzcG9uc2UubV91c2VkTGVnYWN5VExTID0gdXNlZExl
Z2FjeVRMUzsKICAgICBib29sIGlzUmFuZ2VSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlzUmFuZ2VSZXF1ZXN0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNw
b25zZS5oCmluZGV4IGE5ZjM5ZjM5MzAxMjhhNTMzMzQwNjFjNWNjNDBiZGY5NDlhMDMwNzAuLjJh
YzdlZGJmYTk3OWNkYTk2YzIyY2Y1NmNiNzIxZjMyOTAyYzY0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0z
OSwzMCArMzksMzAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSgpCi0gICAgICAgIDogbV9pbml0TGV2ZWwoQWxsRmllbGRzKQogICAgIHsKKyAgICAg
ICAgbV9pbml0TGV2ZWwgPSBBbGxGaWVsZHM7CiAgICAgfQogCiAjaWYgVVNFKENGVVJMQ09OTkVD
VElPTikKICAgICBSZXNvdXJjZVJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkK
LSAgICAgICAgOiBtX2luaXRMZXZlbChVbmluaXRpYWxpemVkKQotICAgICAgICAsIG1fY2ZSZXNw
b25zZShjZlJlc3BvbnNlKQorICAgICAgICA6IG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQogICAg
IHsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBVbmluaXRpYWxpemVkOwogICAgICAgICBtX2lzTnVs
bCA9ICFjZlJlc3BvbnNlOwogICAgIH0KICNlbHNlCiAgICAgUmVzb3VyY2VSZXNwb25zZShOU1VS
TFJlc3BvbnNlICpuc1Jlc3BvbnNlKQotICAgICAgICA6IG1faW5pdExldmVsKFVuaW5pdGlhbGl6
ZWQpCi0gICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCisgICAgICAgIDogbV9uc1Jl
c3BvbnNlKG5zUmVzcG9uc2UpCiAgICAgeworICAgICAgICBtX2luaXRMZXZlbCA9IFVuaW5pdGlh
bGl6ZWQ7CiAgICAgICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7CiAgICAgfQogI2VuZGlmCiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBl
Y3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSkKLSAgICAgICAgLCBtX2luaXRMZXZlbChBbGxG
aWVsZHMpCiAgICAgeworICAgICAgICBtX2luaXRMZXZlbCA9IEFsbEZpZWxkczsKICAgICB9CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwNiw4ICsxMDYsNiBAQCBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIAogICAgIHN0YXRpYyBib29s
IHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBiKTsKIAotICAgIHVuc2lnbmVkIG1faW5pdExldmVsIDogMzsKLQogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIGJvb2wgbV9pc1F1aWNrTG9vayB7IGZhbHNlIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a0xvYWRNZXRyaWNzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5kZXggZmJiOGQ2ODA4OGFkZGJiYzBiNjg3MDEyZjhkNDEw
YmJlMzkwZGNiMS4uOWRhZmY3ZTk3ZjE4ZjVmMDIxOWVlZjBjNmEyY2YyZmVjMTQxNTY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9h
ZE1ldHJpY3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAgLTM3LDEwICszNywxMiBAQCBzdGF0aWMgZG91YmxlIHRp
bWluZ1ZhbHVlKE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTlNTdHJpbmcgKmtleSkKICAgICBy
ZXR1cm4gMC4wOwogfQogICAgIAotdm9pZCBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRp
bWluZ0RhdGEsIE5ldHdvcmtMb2FkTWV0cmljcyYgdGltaW5nKQorQm94PE5ldHdvcmtMb2FkTWV0
cmljcz4gY29weVRpbWluZ0RhdGEoTlNEaWN0aW9uYXJ5ICp0aW1pbmdEYXRhKQogewogICAgIGlm
ICghdGltaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRpbWluZyA9IEJveDxOZXR3b3JrTG9hZE1l
dHJpY3M+OjpjcmVhdGUoKTsKIAogICAgIC8vIFRoaXMgaXMgbm90IHRoZSBuYXZpZ2F0aW9uU3Rh
cnQgdGltZSBpbiBtb25vdG9uaWMgdGltZSwgYnV0IHRoZSBvdGhlciB0aW1lcyBhcmUgcmVsYXRp
dmUgdG8gdGhpcyB0aW1lCiAgICAgLy8gYW5kIG9ubHkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4g
dGltZXMgYXJlIHN0b3JlZC4KQEAgLTU0LDE1ICs1NiwxNyBAQCB2b2lkIGNvcHlUaW1pbmdEYXRh
KE5TRGljdGlvbmFyeSAqdGltaW5nRGF0YSwgTmV0d29ya0xvYWRNZXRyaWNzJiB0aW1pbmcpCiAg
ICAgZG91YmxlIHJlcXVlc3RTdGFydCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAiX2tDRk5U
aW1pbmdEYXRhUmVxdWVzdFN0YXJ0Iik7CiAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSB0aW1p
bmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiKTsKIAot
ICAgIHRpbWluZy5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3RhcnQg
PD0gMCA/IC0xIDogZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGlt
aW5nLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6
IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1pbmcuY29ubmVjdFN0
YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVm
ZXJlbmNlU3RhcnQpOwotICAgIHRpbWluZy5zZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBTZWNvbmRz
KHNlY3VyZUNvbm5lY3Rpb25TdGFydCA8PSAwID8gLTEgOiBzZWN1cmVDb25uZWN0aW9uU3RhcnQg
LSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLmNvbm5lY3RFbmQgPSBTZWNvbmRzKGNvbm5l
Y3RFbmQgPD0gMCA/IC0xIDogY29ubmVjdEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKLSAgICB0aW1p
bmcucmVxdWVzdFN0YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/IDAgOiByZXF1ZXN0
U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7Ci0gICAgdGltaW5nLnJlc3BvbnNlU3RhcnQgPSBTZWNv
bmRzKHJlc3BvbnNlU3RhcnQgPD0gMCA/IDAgOiByZXNwb25zZVN0YXJ0IC0gcmVmZXJlbmNlU3Rh
cnQpOworICAgIHRpbWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1
cFN0YXJ0IDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwor
ICAgIHRpbWluZy0+ZG9tYWluTG9va3VwRW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0g
MCA/IC0xIDogZG9tYWluTG9va3VwRW5kIC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+
Y29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0
YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+c2VjdXJlQ29ubmVjdGlvblN0YXJ0
ID0gU2Vjb25kcyhzZWN1cmVDb25uZWN0aW9uU3RhcnQgPD0gMCA/IC0xIDogc2VjdXJlQ29ubmVj
dGlvblN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOworICAgIHRpbWluZy0+Y29ubmVjdEVuZCA9IFNl
Y29uZHMoY29ubmVjdEVuZCA8PSAwID8gLTEgOiBjb25uZWN0RW5kIC0gcmVmZXJlbmNlU3RhcnQp
OworICAgIHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gU2Vjb25kcyhyZXF1ZXN0U3RhcnQgPD0gMCA/
IDAgOiByZXF1ZXN0U3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CisgICAgdGltaW5nLT5yZXNwb25z
ZVN0YXJ0ID0gU2Vjb25kcyhyZXNwb25zZVN0YXJ0IDw9IDAgPyAwIDogcmVzcG9uc2VTdGFydCAt
IHJlZmVyZW5jZVN0YXJ0KTsKIAogICAgIC8vIE5PVEU6IHJlc3BvbnNlRW5kIGlzIG5vdCBwb3B1
bGF0ZWQgaW4gdGhpcyBjb2RlIHBhdGguCisKKyAgICByZXR1cm4gdGltaW5nOwogfQogICAgIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggNjE3OWM4ZWU5MzFj
M2Q4MjFmOWMxNjg4OTA1ZmRiODk1YjU2ZTA0YS4uMjFkYzQ0NmE0MDk4YjdlZjAxZjQwYmEwMmM2
MzQyMThkZWZjZjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKIAogICAgIG1fcmVzcG9u
c2UgPSBSZXNvdXJjZVJlc3BvbnNlKHJlY2VpdmVkUmVzcG9uc2UpOwogICAgIG1fcmVzcG9uc2Uu
c2V0Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZS5jZXJ0aWZpY2F0ZUlu
Zm8pKTsKLSAgICBtX3Jlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoV1RG
TW92ZShyZWNlaXZlZFJlc3BvbnNlLm5ldHdvcmtMb2FkTWV0cmljcykpOworICAgIG1fcmVzcG9u
c2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNz
Pjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZS5uZXR3b3JrTG9hZE1ldHJpY3MpKSk7
CiAKICAgICBoYW5kbGVDb29raWVIZWFkZXJzKGQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVjZWl2ZWRSZXNwb25zZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDdmNTc4OGY0YjIyNjBj
ZDQzYjJmMTJhYjFmOTg2M2FjMTYzYjRiM2EuLjUwMThlMzg1ODUxMTNkZjY2NDQ1MTFiODI0NzU0
ZTRkMzZiMGFlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNl
IHsKICAgICB2b2lkIGFwcGVuZEhUVFBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IHZvaWQgc2V0Q2VydGlmaWNhdGVJbmZvKENlcnRpZmljYXRlSW5mbyYmKTsKLSAgICB2b2lkIHNl
dERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiYpOwogCiAg
ICAgYm9vbCBzaG91bGRSZWRpcmVjdCgpOwogICAgIGJvb2wgaXNNb3ZlZFBlcm1hbmVudGx5KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAppbmRleCAxOTBhMGYyMGMzMGE1YWI3Mzdh
NWFkMWVhNmJlNWY3MDllMGNmY2FjLi5hMGYzOTRmYzIxNzQ1ZThkNDkyYTUwMGI4NmFmODI1NWMx
MGI0MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTE1MSwxMSArMTUxLDYgQEAg
dm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRDZXJ0aWZpY2F0ZUluZm8oQ2VydGlmaWNhdGVJbmZv
JiYgY2VydGlmaWNhdGVJbmZvKQogICAgIG1fY2VydGlmaWNhdGVJbmZvID0gV1RGTW92ZShjZXJ0
aWZpY2F0ZUluZm8pOwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldERlcHJlY2F0ZWRO
ZXR3b3JrTG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiYgbmV0d29ya0xvYWRNZXRyaWNz
KQotewotICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gV1RGTW92ZShuZXR3b3JrTG9hZE1ldHJp
Y3MpOwotfQotCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1TdWdnZXN0ZWRGaWxl
bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9z
aXRpb24oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlzcG9zaXRpb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KaW5kZXggMDNmYTI2ODdmNjgxODEzNDE0MWQxYzY5NTE4YmI4N2Y4
ODBjYWIyMy4uNzY3YzU3OTQ5OTljOTQ2MTE4MGJjZmVmMGMyYTE5MjJmYTEwNzJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KQEAgLTY1NSw5ICs2NTUsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYwog
ICAgIGNsZWFyQXV0aGVudGljYXRpb24oKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Z2V0
Q29ubmVjdGlvblRpbWluZ0RhdGEoTlNVUkxDb25uZWN0aW9uICpjb25uZWN0aW9uLCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIHRpbWluZykKK0JveDxOZXR3b3JrTG9hZE1ldHJpY3M+IFJlc291cmNlSGFu
ZGxlOjpnZXRDb25uZWN0aW9uVGltaW5nRGF0YShOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb24p
CiB7Ci0gICAgY29weVRpbWluZ0RhdGEoW2Nvbm5lY3Rpb24gX3RpbWluZ0RhdGFdLCB0aW1pbmcp
OworICAgIHJldHVybiBjb3B5VGltaW5nRGF0YShbY29ubmVjdGlvbiBfdGltaW5nRGF0YV0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggODMwZWQwNjc0
MDZlNTgxOTUzNTM2MTVmN2YyNjNhMmRhYTMzMDEyMi4uMTllNjIwNTgwYjc2ODJmODZlNzJjZDkz
YjdkNGZkOTMxOWVhYmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIC0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZl
UmVzcG9uc2U6KE5TVVJMUmVzcG9uCiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNvdXJj
ZVJlc3BvbnNlKHIuZ2V0KCkpOwogICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwotICAgICAgICBSZXNvdXJjZUhhbmRs
ZTo6Z2V0Q29ubmVjdGlvblRpbWluZ0RhdGEoY29ubmVjdGlvbi5nZXQoKSwgcmVzb3VyY2VSZXNw
b25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICByZXNvdXJjZVJl
c3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3MoUmVzb3VyY2VIYW5kbGU6Omdl
dENvbm5lY3Rpb25UaW1pbmdEYXRhKGNvbm5lY3Rpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX2hh
bmRsZS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIFtzZWxm
LCBwcm90ZWN0ZWRTZWxmID0gV1RGTW92ZShwcm90ZWN0ZWRTZWxmKV0gewogICAgICAgICAgICAg
bV9zZW1hcGhvcmUuc2lnbmFsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMmEzNTkyNDJhN2Iz
NzdiODBhYjYxMzkyNDk3N2E5NWNlZjZkYTkwMC4uYjlmMDE1NDFlZTNiMmE1NGI0YTM2NWM0Yjgw
MzU0NzE0ZWZlMTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGJl
IGVsaW1pbmF0ZWQgdW50aWwgb3RoZXIgY29kZSBubyBsb25nZXIgcmVsaWVzIG9uIFJlc291cmNl
UmVzcG9uc2UncwogICAgICAgICAvLyBOZXR3b3JrTG9hZE1ldHJpY3MuIEZvciBleGFtcGxlLCBQ
ZXJmb3JtYW5jZVRpbWluZy4KLSAgICAgICAgY29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1p
bmdEYXRhXSwgcmVzb3VyY2VSZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKCkp
OworICAgICAgICByZXNvdXJjZVJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJp
Y3MoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEoW2RhdGFUYXNrIF90aW1pbmdEYXRhXSkpOwogCiAg
ICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9u
SGFuZGxlcik7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKFdU
Rk1vdmUocmVzb3VyY2VSZXNwb25zZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFtjb21wbGV0aW9u
SGFuZGxlckNvcHksIHRhc2tJZGVudGlmaWVyXShXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggOWU0MTkxNjc0YTA1NTU0NmM3OWIxYTY4
NzY3OWIxMjI2MDFmMTM0Ny4uYjJkZDllNTM2NjA2YTFkYWQwMTU3ZjdiODBmMGE2YmE3NmRkZWEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMzY3LDE2ICszNjcsMTcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpCiB7CiAgICAgQVNTRVJU
KCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAorICAgIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IHRp
bWluZyA9IEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUoKTsKKyAgICB0aW1pbmctPnJl
c3BvbnNlU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OworICAgIHRp
bWluZy0+ZG9tYWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29r
dXBTdGFydDsKKyAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IG1fbmV0d29ya0xvYWRNZXRy
aWNzLmRvbWFpbkxvb2t1cEVuZDsKKyAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IG1fbmV0d29y
a0xvYWRNZXRyaWNzLmNvbm5lY3RTdGFydDsKKyAgICB0aW1pbmctPnNlY3VyZUNvbm5lY3Rpb25T
dGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsKKyAgICB0
aW1pbmctPmNvbm5lY3RFbmQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0RW5kOworICAg
IHRpbWluZy0+cmVxdWVzdFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0
OworICAgIHRpbWluZy0+cmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJlc3Bv
bnNlU3RhcnQ7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugbm9ib2R5IGRlcGVuZHMg
b24gZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcy4KLSAgICBOZXR3b3JrTG9hZE1ldHJpY3Mm
IGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MgPSBtX3Jlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3Jr
TG9hZE1ldHJpY3MoKTsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnJlc3BvbnNlU3Rh
cnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0YXJ0OwotICAgIGRlcHJlY2F0ZWRS
ZXNwb25zZU1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQgPSBtX25ldHdvcmtMb2FkTWV0cmljcy5k
b21haW5Mb29rdXBTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmRvbWFpbkxv
b2t1cEVuZCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZDsKLSAgICBkZXBy
ZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmNvbm5lY3RTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNz
LmNvbm5lY3RTdGFydDsKLSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLnNlY3VyZUNvbm5l
Y3Rpb25TdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydDsK
LSAgICBkZXByZWNhdGVkUmVzcG9uc2VNZXRyaWNzLmNvbm5lY3RFbmQgPSBtX25ldHdvcmtMb2Fk
TWV0cmljcy5jb25uZWN0RW5kOwotICAgIGRlcHJlY2F0ZWRSZXNwb25zZU1ldHJpY3MucmVxdWVz
dFN0YXJ0ID0gbV9uZXR3b3JrTG9hZE1ldHJpY3MucmVxdWVzdFN0YXJ0OwotICAgIGRlcHJlY2F0
ZWRSZXNwb25zZU1ldHJpY3MucmVzcG9uc2VTdGFydCA9IG1fbmV0d29ya0xvYWRNZXRyaWNzLnJl
c3BvbnNlU3RhcnQ7CisgICAgbV9yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzKFdURk1vdmUodGltaW5nKSk7CiAKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZShtX3Jlc3BvbnNlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIHsK
ICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0
YXRlOjpDb21wbGV0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCmluZGV4IDlhY2Q3ZmRhZTQ2MDJmYmVlNzUzZDU4ZGU3NGI5MTBmMTI1NWFhOWMuLjU4
YzQ1NjQ2ODhjOGYzZjJlYWMxYWM0NzAxODJiODVhZmFkZmM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4K
KyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CkBAIC0xMjMsNiAr
MTI0LDU0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlv
bmFsPFQ+PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8Qm94PFQ+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEJveDxUPiYgYm94KQorICAgIHsKKyAgICAgICAgaWYgKCFib3gpIHsKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBlbmNvZGVyIDw8IHRydWU7CisgICAgICAgIGVuY29kZXIgPDwgKmJveC5nZXQo
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQm94
PFQ+JiBib3gpCisgICAgeworICAgICAgICBib29sIGlzRW5nYWdlZDsKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpc0VuZ2FnZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGlmICghaXNFbmdhZ2VkKSB7CisgICAgICAgICAgICBib3ggPSBudWxscHRyOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBCb3g8VD4gdmFsdWUg
PSBCb3g8VD46OmNyZWF0ZSgpOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCp2YWx1ZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYm94ID0gV1RGTW92ZSh2YWx1
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBPcHRpb25hbDxC
b3g8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaXNFbmdhZ2VkOworICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKKyAgICAgICAg
aWYgKCFpc0VuZ2FnZWQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICBpZiAoKmlzRW5nYWdlZCkgeworICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CisgICAg
ICAgICAgICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPEJveDxUPj4oQm94PFQ+OjpjcmVhdGUoV1RGTW92ZSgqdmFsdWUpKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEJveDxUPj4oQm94PFQ+KG51bGxwdHIpKTsKKyAgICB9
Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3Qgc3RkOjpwYWlyPFQsIFU+JiBwYWlyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0Y2ZhNmYzZmU1OGQ0Y2Ey
OWIzZTJmZGEwYWE3MjExZWVhNjUwMTY5Li4zNjg1ODg2NjRhZDg1MTk5ZGU2ZmJlMGU4NDBjYTk3
Njg0YTdkMDMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIGJlIHNoYXJl
ZCBieSBtdWx0aXBsZSBSZXNvdXJjZVJlc3BvbnNlIGluc3RhbmNlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NzQ3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDIwLTAyLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4K
IAogICAgICAgICBydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6IEFsbG93IGluc2VjdXJlIHJlcXVl
c3RzIG9uIHVwbG9hZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcAppbmRleCA5ODYzODgzMDJkOTA4ZTBjM2JjMjVh
ODhhM2E5ZDMwOTk2YWRmNmYxLi4yMGE5NTdlNTljODUxNjBjODA4MzE3ZTE1YjAxMDI4ZDVmYTli
NDU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2Vk
Q29udGVudFJhbmdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UGFyc2VkQ29udGVudFJhbmdlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBURVNUKFdlYkNvcmUsIFBh
cnNlZENvbnRlbnRSYW5nZUZyb21TdHJpbmcpCiAgICAgQVNTRVJUX0VRKDAsIFBhcnNlZENvbnRl
bnRSYW5nZSgiYnl0ZXMgMC0xLzIiKS5maXJzdEJ5dGVQb3NpdGlvbigpKTsKICAgICBBU1NFUlRf
RVEoMSwgUGFyc2VkQ29udGVudFJhbmdlKCJieXRlcyAwLTEvMiIpLmxhc3RCeXRlUG9zaXRpb24o
KSk7CiAgICAgQVNTRVJUX0VRKDIsIFBhcnNlZENvbnRlbnRSYW5nZSgiYnl0ZXMgMC0xLzIiKS5p
bnN0YW5jZUxlbmd0aCgpKTsKLSAgICBBU1NFUlRfRVEoUGFyc2VkQ29udGVudFJhbmdlOjpVbmtu
b3duTGVuZ3RoLCBQYXJzZWRDb250ZW50UmFuZ2UoImJ5dGVzIDAtMS8qIikuaW5zdGFuY2VMZW5n
dGgoKSk7CisgICAgQVNTRVJUX0VRKFBhcnNlZENvbnRlbnRSYW5nZTo6dW5rbm93bkxlbmd0aCwg
UGFyc2VkQ29udGVudFJhbmdlKCJieXRlcyAwLTEvKiIpLmluc3RhbmNlTGVuZ3RoKCkpOwogCiAg
ICAgLy8gV2hpdGVzcGFjZSBlcnJvcnMKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29udGVudFJh
bmdlKCJieXRlcyAgMC0xLyoiKS5pc1ZhbGlkKCkpOwpAQCAtNzcsNyArNzcsNyBAQCBURVNUKFdl
YkNvcmUsIFBhcnNlZENvbnRlbnRSYW5nZUZyb21TdHJpbmcpCiBURVNUKFdlYkNvcmUsIFBhcnNl
ZENvbnRlbnRSYW5nZUZyb21WYWx1ZXMpCiB7CiAgICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVu
dFJhbmdlKDAsIDEsIDIpLmlzVmFsaWQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoUGFyc2VkQ29udGVu
dFJhbmdlKDAsIDEsIFBhcnNlZENvbnRlbnRSYW5nZTo6VW5rbm93bkxlbmd0aCkuaXNWYWxpZCgp
KTsKKyAgICBBU1NFUlRfVFJVRShQYXJzZWRDb250ZW50UmFuZ2UoMCwgMSwgUGFyc2VkQ29udGVu
dFJhbmdlOjp1bmtub3duTGVuZ3RoKS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJz
ZWRDb250ZW50UmFuZ2UoKS5pc1ZhbGlkKCkpOwogICAgIEFTU0VSVF9GQUxTRShQYXJzZWRDb250
ZW50UmFuZ2UoMSwgMCwgMikuaXNWYWxpZCgpKTsKICAgICBBU1NFUlRfRkFMU0UoUGFyc2VkQ29u
dGVudFJhbmdlKDAsIDIsIDEpLmlzVmFsaWQoKSk7CkBAIC05MSw3ICs5MSw3IEBAIFRFU1QoV2Vi
Q29yZSwgUGFyc2VkQ29udGVudFJhbmdlRnJvbVZhbHVlcykKIFRFU1QoV2ViQ29yZSwgUGFyc2Vk
Q29udGVudFJhbmdlVG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUX1NUUkVRKCJieXRlcyAwLTEvMiIs
IFBhcnNlZENvbnRlbnRSYW5nZSgwLCAxLCAyKS5oZWFkZXJWYWx1ZSgpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIEFTU0VSVF9TVFJFUSgiYnl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50UmFuZ2UoMCwg
MSwgUGFyc2VkQ29udGVudFJhbmdlOjpVbmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1ZSgpLnV0Zjgo
KS5kYXRhKCkpOworICAgIEFTU0VSVF9TVFJFUSgiYnl0ZXMgMC0xLyoiLCBQYXJzZWRDb250ZW50
UmFuZ2UoMCwgMSwgUGFyc2VkQ29udGVudFJhbmdlOjp1bmtub3duTGVuZ3RoKS5oZWFkZXJWYWx1
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9TVFJFUSgiIiwgUGFyc2VkQ29udGVudFJh
bmdlKCkuaGVhZGVyVmFsdWUoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAo=
</data>
<flag name="review"
          id="406359"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>