<?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>189284</bug_id>
          
          <creation_ts>2018-09-04 16:38:10 -0700</creation_ts>
          <short_desc>[MediaStream] Simplify logic when changing RealtimeMediaSource settings</short_desc>
          <delta_ts>2018-09-05 08:56:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456518</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-04 16:38:10 -0700</bug_when>
    <thetext>Simplify logic when changing RealtimeMediaSource settings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456519</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-04 16:38:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/44117948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456582</commentid>
    <comment_count>2</comment_count>
      <attachid>348882</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-04 18:21:23 -0700</bug_when>
    <thetext>Created attachment 348882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456599</commentid>
    <comment_count>3</comment_count>
      <attachid>348885</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-04 19:35:07 -0700</bug_when>
    <thetext>Created attachment 348885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456608</commentid>
    <comment_count>4</comment_count>
      <attachid>348888</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-04 20:14:25 -0700</bug_when>
    <thetext>Created attachment 348888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456631</commentid>
    <comment_count>5</comment_count>
      <attachid>348888</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-04 22:11:46 -0700</bug_when>
    <thetext>Comment on attachment 348888
Patch

LGTM, some questions below though.
I would try to move away from calling base class overriden methods settingsDidchange to handle observers.

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

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:204
&gt; +        }

Might be nice to add something like min_element for Vector.

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:134
&gt; +void RealtimeMediaSource::settingsDidChange(OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt;)

I would rename it to notifySettingsDidChange and be non virtual.
Then settingsDidChange() would be virtual and do nothing.

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:427
&gt; +static void applyNumericConstraint(const NumericConstraint&lt;ValueType&gt;&amp; constraint, ValueType current, std::optional&lt;Vector&lt;ValueType&gt;&gt; discreteCapabilityValues, ValueType capabilityMin, ValueType capabilityMax, RealtimeMediaSource* source, void (RealtimeMediaSource::*applier)(ValueType))

Should ideally be a Vector&lt;ValueType&gt;* discreteCapabilityValues
Can source be a RealtimeMediaSource&amp; or better applier be changed to a lambda?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:877
&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::Width);

We might be changing height, should we notify it as well?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:889
&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::Height);

Ditto?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:908
&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::AspectRatio);

Ditto?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:187
&gt; +    virtual std::optional&lt;Vector&lt;int&gt;&gt; discreteSampleRates() const;

Wouldn&apos;t it be better to return const Vector&lt;int&gt;*?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:191
&gt; +    virtual std::optional&lt;Vector&lt;int&gt;&gt; discreteSampleSizes() const;

Ditto?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:72
&gt; +OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt; RealtimeMediaSourceSettings::diff(const RealtimeMediaSourceSettings&amp; that) const

s/diff/difference?

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:74
&gt; +    OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt; diff;

s/diff/difference?

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:276
&gt; +    RealtimeMediaSource::settingsDidChange(settings);

There is something I am not sure about here.
settingsDidChange() is used by GStreamer to apply settings set by the user of the source.
But here, it is used in processNewFrame() so it comes from underneath to the user of the source.

Would it be easier to have something like a RealtimeMediaSource method that would for each change call settingsDidChange that would apply the changes on the source and another that would notify observers?
In processNewFrame, we would just notify observers.

&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:414
&gt;      }

Do we need to return a boolean?

&gt; Source/WebCore/platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:181
&gt; +    MockRealtimeAudioSource::settingsDidChange(settings);

This call to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456703</commentid>
    <comment_count>6</comment_count>
      <attachid>348921</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-05 07:52:34 -0700</bug_when>
    <thetext>Created attachment 348921
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456707</commentid>
    <comment_count>7</comment_count>
      <attachid>348923</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-05 08:04:58 -0700</bug_when>
    <thetext>Created attachment 348923
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456708</commentid>
    <comment_count>8</comment_count>
      <attachid>348888</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-05 08:10:13 -0700</bug_when>
    <thetext>Comment on attachment 348888
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:134
&gt;&gt; +void RealtimeMediaSource::settingsDidChange(OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt;)
&gt; 
&gt; I would rename it to notifySettingsDidChange and be non virtual.
&gt; Then settingsDidChange() would be virtual and do nothing.

The problem is, in addition to notifying observers from the base class, we sometimes need to react to a settings change in more than one derived class. For example MockRealtimeVideoSourceMac -&gt; MockRealtimeVideoSource -&gt; RealtimeMediaSource. I&apos;ll leave this as is for now and we can talk about ways to simplify it further.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:427
&gt;&gt; +static void applyNumericConstraint(const NumericConstraint&lt;ValueType&gt;&amp; constraint, ValueType current, std::optional&lt;Vector&lt;ValueType&gt;&gt; discreteCapabilityValues, ValueType capabilityMin, ValueType capabilityMax, RealtimeMediaSource* source, void (RealtimeMediaSource::*applier)(ValueType))
&gt; 
&gt; Should ideally be a Vector&lt;ValueType&gt;* discreteCapabilityValues
&gt; Can source be a RealtimeMediaSource&amp; or better applier be changed to a lambda?

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:877
&gt;&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::Width);
&gt; 
&gt; We might be changing height, should we notify it as well?

Fixed. BTW, this will go away in a future refactoring.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:889
&gt;&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::Height);
&gt; 
&gt; Ditto?

Ditto.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:908
&gt;&gt; +    settingsDidChange(RealtimeMediaSourceSettings::Flag::AspectRatio);
&gt; 
&gt; Ditto?

Ditto.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:187
&gt;&gt; +    virtual std::optional&lt;Vector&lt;int&gt;&gt; discreteSampleRates() const;
&gt; 
&gt; Wouldn&apos;t it be better to return const Vector&lt;int&gt;*?

Not all derived classes implement this.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:191
&gt;&gt; +    virtual std::optional&lt;Vector&lt;int&gt;&gt; discreteSampleSizes() const;
&gt; 
&gt; Ditto?

Ditto.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:72
&gt;&gt; +OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt; RealtimeMediaSourceSettings::diff(const RealtimeMediaSourceSettings&amp; that) const
&gt; 
&gt; s/diff/difference?

Fixed.

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:74
&gt;&gt; +    OptionSet&lt;RealtimeMediaSourceSettings::Flag&gt; diff;
&gt; 
&gt; s/diff/difference?

Ditto.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:276
&gt;&gt; +    RealtimeMediaSource::settingsDidChange(settings);
&gt; 
&gt; There is something I am not sure about here.
&gt; settingsDidChange() is used by GStreamer to apply settings set by the user of the source.
&gt; But here, it is used in processNewFrame() so it comes from underneath to the user of the source.
&gt; 
&gt; Would it be easier to have something like a RealtimeMediaSource method that would for each change call settingsDidChange that would apply the changes on the source and another that would notify observers?
&gt; In processNewFrame, we would just notify observers.

I&apos;m not sure it would be clearer, so I&apos;m going to leave this for now. We can talk about this when I am back in the office to see if we can come up with something better.

&gt;&gt; Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm:414
&gt;&gt;      }
&gt; 
&gt; Do we need to return a boolean?

No, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456721</commentid>
    <comment_count>9</comment_count>
      <attachid>348923</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-05 08:56:51 -0700</bug_when>
    <thetext>Comment on attachment 348923
Patch for landing.

Clearing flags on attachment: 348923

Committed r235670: &lt;https://trac.webkit.org/changeset/235670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456722</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-05 08:56:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348882</attachid>
            <date>2018-09-04 18:21:23 -0700</date>
            <delta_ts>2018-09-04 19:35:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189284-20180904182121.patch</filename>
            <type>text/plain</type>
            <size>62377</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE4YjZjMTRhZDlhNDFl
ZmIyY2QzM2Q0Yjk0MjVlZWYyNGMzYzVhYi4uMDdiN2UxOWMxY2RjNTJmMTU5M2IyNjdhN2MxYmNk
ZjhhZTZlYjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE4LTA5LTA0ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gU2ltcGxpZnkgbG9naWMgd2hlbiBjaGFuZ2luZyBSZWFsdGltZU1lZGlhU291cmNlIHNldHRp
bmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODky
ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTE3OTQ4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhbGwgImFwcGx5PHNldHRpbmc+
IiBtZXRob2RzIGZyb20gUmVhbHRpbWVNZWRpYVNvdXJjZSBhbmQgZGVyaXZlZCBjbGFzc2VzLCBh
bmQKKyAgICAgICAgYWRkIGEgYml0ZmllbGQgdG8gc2V0dGluZ3NEaWRDaGFuZ2Ugc28gY2xhc3Nl
cyBjYW4gZG8gc2V0dGluZy1zcGVjaWZpYyBzZXR1cCBhbmQKKyAgICAgICAgY29uZmlndXJhdGlv
biBieSBvdmVycmlkaW5nIHNldHRpbmdzRGlkQ2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNSZXNpemVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OmZpdG5lc3NEaXN0YW5jZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6dmFsdWVGb3JEaXNj
cmV0ZUNhcGFiaWxpdHlWYWx1ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rp
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5TnVtZXJpY0NvbnN0cmFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRFY2hvQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZGlmZiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmFsbEZsYWdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZyYW1lUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
c2V0UHJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRG
cmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5
U2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6cHJvY2Vzc05ld0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hv
Q2FuY2VsbGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjphcHBseVNpemUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
YXBwbHlGcmFtZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphcHBs
eVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6YXBwbHlTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2VDb2NvYTo6cHJvY2Vzc05ld1NhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmFwcGx5RnJhbWVSYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoK
KwogMjAxOC0wOS0wMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBTeXN0ZW1QcmV2aWV3IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMgdG8gV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM2YWVlNDhkOTI0NjI0ODJlNzkwNzBiOTZlNWU5YTgxYTI2YmJhN2YuLjk4OTJh
ZjYzZDgwNmMyYTM4MmU3ZWNiZmFiMDQwZTFlYjhlZjA2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTgtMDktMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTaW1wbGlmeSBsb2dpYyB3aGVuIGNoYW5naW5nIFJl
YWx0aW1lTWVkaWFTb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTI4NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQxMTc5
NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6c2V0U2V0dGluZ3MpOgorCiAy
MDE4LTA5LTAzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFN5c3RlbVByZXZpZXcgY29kZSBmcm9tIFdlYktpdEFkZGl0aW9ucyB0byBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMjRiODE2ZDJmMGY4ODYzNTgx
MWQ2M2M2YzM1Yjc5ZWRjNzk4N2I2NS4uY2RkMDRiOTAzYzdiZjI2Y2ZlODlkNjg3OTA3NWIzNDNk
NjQwZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTEx
NCwxMCArMTE0LDE2IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJj
ZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52YXMpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwogCisgICAgT3B0aW9uU2V0PFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICBpZiAobV9jYW52YXMtPndp
ZHRoKCkgIT0gbV9zZXR0aW5ncy53aWR0aCgpKQorICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICBpZiAobV9jYW52YXMtPmhl
aWdodCgpICE9IG1fc2V0dGluZ3MuaGVpZ2h0KCkpCisgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKKwogICAgIG1fc2V0dGluZ3Mu
c2V0V2lkdGgobV9jYW52YXMtPndpZHRoKCkpOwogICAgIG1fc2V0dGluZ3Muc2V0SGVpZ2h0KG1f
Y2FudmFzLT5oZWlnaHQoKSk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRp
bmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzLCBjb25zdCBG
bG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDYzNWI0
YjFjOGE2YzYwN2VkMjg1MWNmMjBmYzRhMGYzZTQwYzQwYWMuLmIwMDZhZjkzYmY0ZDExMjUzZmY3
YzE2ZDIzNzZjMGFlMWMzNGM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpICBmaW5hbDsKICAgICAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRpZXMoKTsgfQogICAgICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQotICAgICAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZhcygpOwog
ICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCA2
NWU5NmFjYTlkYjE3MmRkMjcyOGIzYzVmMTU5MTY3ZGYzM2MyYjZlLi4zMGVjNDFhNjNiODg4ZDE1
YzAzNDVhOTIzMzMwODA0NWQ5MTJhNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0xOTMsNiArMTkzLDE5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjphYnMo
aWRlYWwgLSBtX2lkZWFsLnZhbHVlKCkpKSAvIHN0ZDo6bWF4KHN0ZDo6YWJzKGlkZWFsKSwgc3Rk
OjphYnMobV9pZGVhbC52YWx1ZSgpKSk7CiAgICAgfQogCisgICAgZG91YmxlIGZpdG5lc3NEaXN0
YW5jZShjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKSBj
b25zdAorICAgIHsKKyAgICAgICAgZG91YmxlIG1pbkRpc3RhbmNlID0gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpOworCisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBk
aXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgICAgIGF1dG8gZGlzdGFuY2UgPSBm
aXRuZXNzRGlzdGFuY2UodmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8
IG1pbkRpc3RhbmNlKQorICAgICAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWluRGlzdGFuY2U7CisgICAgfQorCiAgICAgYm9v
bCB2YWxpZEZvclJhbmdlKFZhbHVlVHlwZSByYW5nZU1pbiwgVmFsdWVUeXBlIHJhbmdlTWF4KSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRW1wdHkoKSkKQEAgLTI3Nyw2ICsyOTAsNDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCisgICAgVmFsdWVUeXBlIHZh
bHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZhbHVlVHlwZSBjdXJyZW50LCBjb25zdCBW
ZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAorICAgIHsK
KyAgICAgICAgVmFsdWVUeXBlIHZhbHVlIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZh
bHVlVHlwZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWF4OworCisg
ICAgICAgIGlmIChtX2V4YWN0KSB7CisgICAgICAgICAgICBBU1NFUlQoZGlzY3JldGVDYXBhYmls
aXR5VmFsdWVzLmNvbnRhaW5zKG1fZXhhY3QudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJu
IG1fZXhhY3QudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX21pbikgeworICAg
ICAgICAgICAgYXV0byBpbmRleCA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcy5maW5kTWF0Y2hp
bmcoWyZdKFZhbHVlVHlwZSB2YWx1ZSkgeyByZXR1cm4gbV9taW4udmFsdWUoKSA+PSB2YWx1ZTsg
fSk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgICAg
ICBtaW4gPSB2YWx1ZSA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlc1tpbmRleF07CisKKyAgICAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpZGVhbCwgZG9uJ3QgY2hhbmdlIGlmIG1pbmlt
dW0gaXMgc21hbGxlciB0aGFuIGN1cnJlbnQuCisgICAgICAgICAgICAgICAgaWYgKCFtX2lkZWFs
ICYmIHZhbHVlIDwgY3VycmVudCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjdXJyZW50
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbWF4ICYmIG1fbWF4
LnZhbHVlKCkgPj0gZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzWzBdKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIGRpc2NyZXRlVmFsdWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobV9tYXgudmFsdWUoKSA8PSBkaXNjcmV0ZVZhbHVlKQorICAgICAg
ICAgICAgICAgICAgICBtYXggPSB2YWx1ZSA9IGRpc2NyZXRlVmFsdWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pZGVhbCAmJiBkaXNjcmV0ZUNhcGFiaWxpdHlW
YWx1ZXMuY29udGFpbnMobV9pZGVhbC52YWx1ZSgpKSkgeworICAgICAgICAgICAgdmFsdWUgPSBt
X2lkZWFsLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAobWF4KQorICAgICAgICAgICAgICAgIHZh
bHVlID0gc3RkOjptaW4obWF4LnZhbHVlKCksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChtaW4p
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1heChtaW4udmFsdWUoKSwgdmFsdWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKwogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21pbiAmJiAhbV9tYXggJiYgIW1fZXhhY3QgJiYgIW1f
aWRlYWw7IH0KICAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9taW4gfHwg
bV9tYXggfHwgbV9leGFjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCmlu
ZGV4IDcyNDdiYjgzMzg1N2U0OGU5OWVlNzg2ZTc1ZTRhOTNiYjAwNWQ1ZWQuLjFiMGJmOTRkZjVk
NGM5M2RlZjgwMjRlZmE5MWE1ZTE2NWJmNWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oCkBAIC03MSw4ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFs
OwogCi0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KLQogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2U+IG1fdmlkZW9UcmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMmU5ZDk2
NWExOTliNWIzMjFhZDNmZTMwZTE4MTg4ZjIyZTJiNDFkZi4uNDllOTllNGYyYWNlMjI5N2ZmYzdi
M2ZkZjY4YjUyNmM4NDJiZDZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTUyLDggKzUyLDYgQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5
cGUsIGNvbnN0IFN0cmkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCiB7
Ci0gICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBpbXBsZW1lbnQgZml0bmVzcyBzY29yZSBm
b3IgY29uc3RyYWludHMKLQogICAgIGlmIChtX2lkLmlzRW1wdHkoKSkKICAgICAgICAgbV9pZCA9
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICBtX3BlcnNpc3RlbnRJRCA9IG1faWQ7
CkBAIC0xMzMsMTMgKzEzMSwxMiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5vdGlmeU11
dGVkT2JzZXJ2ZXJzKCkgY29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRp
bmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9wZW5kaW5nU2V0
dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKLQogICAgIG1fcGVu
ZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gdHJ1ZTsKIAogICAgIHNjaGVkdWxl
RGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTYsNiArMzUzLDkgQEAgZG91YmxlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAgICAgaWYgKGF1dG8gZGlzY3JldGVSYXRlcyA9
IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRD
b25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKmRpc2NyZXRlUmF0ZXMpOwor
CiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpOwogICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVzc0Rpc3Rh
bmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQpOwogICAg
ICAgICBicmVhazsKQEAgLTM2Niw2ICszNjYsOSBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAg
ICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNTYW1wbGVTaXplKCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAorICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVNpemVzID0gZGlzY3JldGVT
YW1wbGVTaXplcygpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVTaXplcyk7CisKICAgICAgICAg
YXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7CiAgICAgICAgIHJldHVybiBk
b3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UocmFuZ2Uu
cmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNDIxLDggKzQyNCwxNSBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVz
c0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFp
bnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVU
eXBlIGN1cnJlbnQsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0
eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlLCB2b2lkIChSZWFsdGltZU1lZGlhU291
cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRpYyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0
cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVUeXBlPiYgY29uc3RyYWludCwgVmFs
dWVUeXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRl
Q2FwYWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFiaWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBh
YmlsaXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlKiBzb3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQogeworICAgIGlmIChkaXNjcmV0ZUNhcGFi
aWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgaW50IHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckRp
c2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyhjdXJyZW50LCAqZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVz
KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IGN1cnJlbnQpCisgICAgICAgICAgICAoc291cmNlLT4q
YXBwbGllcikodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgVmFsdWVUeXBl
IHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShjdXJyZW50LCBjYXBh
YmlsaXR5TWluLCBjYXBhYmlsaXR5TWF4KTsKICAgICBpZiAodmFsdWUgIT0gY3VycmVudCkKICAg
ICAgICAgKHNvdXJjZS0+KmFwcGxpZXIpKHZhbHVlKTsKQEAgLTQ0MiwzNSArNDUyLDE3IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3Ry
YWludCYgY29uc3RyYWludCkKIHsKICAgICBhdXRvJiBjYXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBh
YmlsaXRpZXMoKTsKICAgICBzd2l0Y2ggKGNvbnN0cmFpbnQuY29uc3RyYWludFR5cGUoKSkgewot
ICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6IHsKLSAgICAgICAgQVNTRVJUKGNv
bnN0cmFpbnQuaXNJbnQoKSk7Ci0gICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lk
dGgoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJp
bGl0aWVzLndpZHRoKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8
SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNpemUoKS53aWR0aCgpLCByYW5nZS5yYW5nZU1p
bigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50LCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0V2lkdGgpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lkdGg6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdodDogewotICAgICAgICBBU1NFUlQoY29u
c3RyYWludC5pc0ludCgpKTsKLSAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNIZWln
aHQoKSkKLSAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJp
bGl0aWVzLmhlaWdodCgpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0
PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzaXplKCkuaGVpZ2h0KCksIHJhbmdlLnJhbmdl
TWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQsIHRoaXMsICZSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRIZWlnaHQpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGcmFtZVJhdGU6IHsKLSAgICAgICAgQVNT
RVJUKGNvbnN0cmFpbnQuaXNEb3VibGUoKSk7Ci0gICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1
cHBvcnRzRnJhbWVSYXRlKCkpCi0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBy
YW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29u
c3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgZnJhbWVSYXRl
KCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUs
IHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUpOworICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpBc3BlY3RSYXRpbzogewogICAgICAgICBBU1NFUlQoY29uc3RyYWludC5pc0RvdWJsZSgpKTsK
QEAgLTQ3OCw3ICs0NzAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5hc3BlY3RSYXRpbygpOwot
ICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLCBhc3BlY3RSYXRpbygpLCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCBy
YW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
QXNwZWN0UmF0aW8pOworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PERv
dWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3BlY3RSYXRpbygpLCB7IH0sIHJhbmdlLnJh
bmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMsICZSZWFs
dGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRpbyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtNDg4LDcgKzQ4MCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLnZvbHVtZSgpOwotICAg
ICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNv
bnN0cmFpbnQpLCB2b2x1bWUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0RvdWJsZSwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVtZSk7
CisgICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWlu
dD4oY29uc3RyYWludCksIHZvbHVtZSgpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUs
IHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpz
ZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ5OCw3ICs0OTAsNyBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0
cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBy
YW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0Nv
bnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNhbXBsZVJhdGUo
KSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywg
JlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOworICAgICAgICBhcHBseU51bWVy
aWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVS
YXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFu
Z2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBs
ZVJhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTUwOCw3ICs1MDAsNyBAQCB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFp
bnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0
cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNhbXBsZVNpemUoKSwg
cmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUpOworICAgICAgICBhcHBseU51bWVyaWND
b25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVTaXpl
KCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwg
dGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTgyMyw4ICs4MTUsNiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCYgY29uc3RyYWludAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRklYTUU6IGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSBz
aG91bGQgdGFrZSBNZWRpYUNvbnN0cmFpbnQqIGluc3RlYWQgb2Ygc3RkOjpvcHRpb25hbDw+IHNv
IGl0IGNhbiBzZWUgaWYgYSBjb25zdHJhaW50IGlzIGFuIGV4YWN0LCBtaW4sIG1heCwKLSAgICAv
LyBvciBpZGVhbCwgYW5kIGNob29zZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgcHJvcGVydGllcyB3
aXRoIG5vbi1kaXNjcmVldCBjYXBhYmlsaXRpZXMgd2hlbiBuZWNlc3NhcnkuCiAgICAgaWYgKHdp
ZHRoIHx8IGhlaWdodCB8fCBmcmFtZVJhdGUpCiAgICAgICAgIGFwcGx5U2l6ZUFuZEZyYW1lUmF0
ZShXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpLCBXVEZNb3ZlKGZyYW1lUmF0ZSkpOwog
CkBAIC04NjUsMTEgKzg1NSwxNCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghYXBwbHlTaXplKHNpemUpKQotICAgICAgICByZXR1cm47CisgICAg
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAg
ICBpZiAobV9zaXplLndpZHRoKCkgIT0gc2l6ZS53aWR0aCgpKQorICAgICAgICBjaGFuZ2VkLmFk
ZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICBpZiAobV9z
aXplLmhlaWdodCgpICE9IHNpemUuaGVpZ2h0KCkpCisgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKIAogICAgIG1fc2l6ZSA9IHNp
emU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZShjaGFu
Z2VkKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aChpbnQgd2lkdGgp
CkBAIC04NzcsMTUgKzg3MCwxMSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRo
KGludCB3aWR0aCkKICAgICBpZiAod2lkdGggPT0gbV9zaXplLndpZHRoKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGludCBoZWlnaHQgPSBtX2FzcGVjdFJhdGlvID8gd2lkdGggLyBtX2FzcGVj
dFJhdGlvIDogbV9zaXplLmhlaWdodCgpOwotICAgIGlmICghYXBwbHlTaXplKEludFNpemUod2lk
dGgsIGhlaWdodCkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3NpemUuc2V0V2lkdGgod2lk
dGgpOwogICAgIGlmIChtX2FzcGVjdFJhdGlvKQogICAgICAgICBtX3NpemUuc2V0SGVpZ2h0KHdp
ZHRoIC8gbV9hc3BlY3RSYXRpbyk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNl
dHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgp
OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEhlaWdodChpbnQgaGVpZ2h0KQpA
QCAtODkzLDc5ICs4ODIsODUgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQo
aW50IGhlaWdodCkKICAgICBpZiAoaGVpZ2h0ID09IG1fc2l6ZS5oZWlnaHQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW50IHdpZHRoID0gbV9hc3BlY3RSYXRpbyA/IGhlaWdodCAqIG1fYXNw
ZWN0UmF0aW8gOiBtX3NpemUud2lkdGgoKTsKLSAgICBpZiAoIWFwcGx5U2l6ZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fYXNwZWN0UmF0aW8p
Ci0gICAgICAgIG1fc2l6ZS5zZXRXaWR0aCh3aWR0aCk7CisgICAgICAgIG1fc2l6ZS5zZXRXaWR0
aChoZWlnaHQgKiBtX2FzcGVjdFJhdGlvKTsKICAgICBtX3NpemUuc2V0SGVpZ2h0KGhlaWdodCk7
CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKIH0KIAogdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUoZG91YmxlIHJhdGUpCiB7Ci0gICAgaWYgKG1fZnJh
bWVSYXRlID09IHJhdGUgfHwgIWFwcGx5RnJhbWVSYXRlKHJhdGUpKQorICAgIGlmIChtX2ZyYW1l
UmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZyYW1lUmF0ZSA9IHJhdGU7
Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZShSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSk7CiB9CiAKIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8oZG91YmxlIHJhdGlvKQogewotICAgIGlmICht
X2FzcGVjdFJhdGlvID09IHJhdGlvIHx8ICFhcHBseUFzcGVjdFJhdGlvKHJhdGlvKSkKKyAgICBp
ZiAobV9hc3BlY3RSYXRpbyA9PSByYXRpbykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hc3Bl
Y3RSYXRpbyA9IHJhdGlvOwogICAgIG1fc2l6ZS5zZXRIZWlnaHQobV9zaXplLndpZHRoKCkgLyBy
YXRpbyk7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkFzcGVjdFJhdGlvKTsKIH0KIAogdm9p
ZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKG1fZmFjaW5nTW9kZSA9
PSBtb2RlIHx8ICFhcHBseUZhY2luZ01vZGUobW9kZSkpCisgICAgaWYgKG1fZmFjaW5nTW9kZSA9
PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZhY2luZ01vZGUgPSBtb2RlOwotICAg
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGYWNpbmdNb2RlKTsKIH0KIAogdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBpZiAobV92b2x1bWUg
PT0gdm9sdW1lIHx8ICFhcHBseVZvbHVtZSh2b2x1bWUpKQorICAgIGlmIChtX3ZvbHVtZSA9PSB2
b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdm9sdW1lID0gdm9sdW1lOwotICAgIHNl
dHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpWb2x1bWUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiB7Ci0gICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSBy
YXRlIHx8ICFhcHBseVNhbXBsZVJhdGUocmF0ZSkpCisgICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSBy
YXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NhbXBsZVJhdGUgPSByYXRlOwotICAgIHNl
dHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsKK30KKworc3RkOjpvcHRpb25hbDxWZWN0
b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRTYW1wbGVTaXplKGludCBzaXplKQogewotICAgIGlmIChtX3NhbXBsZVNpemUgPT0g
c2l6ZSB8fCAhYXBwbHlTYW1wbGVTaXplKHNpemUpKQorICAgIGlmIChtX3NhbXBsZVNpemUgPT0g
c2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zYW1wbGVTaXplID0gc2l6ZTsKLSAgICBz
ZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlU2l6ZSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25z
dAoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVjaG9DYW5jZWxsYXRpb24pCiB7Ci0gICAg
aWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2FuY2VsbGF0aW9uIHx8ICFhcHBseUVjaG9D
YW5jZWxsYXRpb24oZWNob0NhbmNlbGxhdGlvbikpCisgICAgaWYgKG1fZWNob0NhbmNlbGxhdGlv
biA9PSBlY2hvQ2FuY2VsbGF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2VjaG9DYW5j
ZWxsYXRpb24gPSBlY2hvQ2FuY2VsbGF0aW9uOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7Cisg
ICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpF
Y2hvQ2FuY2VsbGF0aW9uKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzY2hlZHVs
ZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAppbmRleCA0ODQxOWJhZDAxODlmNzI0NjljMjZjY2M2NTQwODQzYTcwMGEyZmUzLi5l
MDhlNjU2ZTNlNzFlMTA2ZDY5ZGZmOTA3Zjc2ODI2YjZhNzQzZDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBB
Qi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTE2OSwzNSArMTY5LDI5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhlaWdodChpbnQp
OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhcHBseVNp
emUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgZnJhbWVS
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KICAgICB2b2lkIHNldEZyYW1lUmF0
ZShkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBt
X2FzcGVjdFJhdGlvOyB9CiAgICAgdm9pZCBzZXRBc3BlY3RSYXRpbyhkb3VibGUpOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJsZSkgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7IH0KICAgICB2b2lkIHNldEZhY2luZ01v
ZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgdm9sdW1lKCkg
Y29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KICAgICB2b2lkIHNldFZvbHVtZShkb3VibGUpOwot
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBpbnQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAg
IHZvaWQgc2V0U2FtcGxlUmF0ZShpbnQpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseVNhbXBsZVJh
dGUoaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0
b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0OwogCiAgICAgaW50IHNhbXBsZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7IH0KICAgICB2b2lkIHNldFNhbXBsZVNp
emUoaW50KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTYW1wbGVTaXplKGludCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IGRpc2NyZXRl
U2FtcGxlU2l6ZXMoKSBjb25zdDsKIAogICAgIGJvb2wgZWNob0NhbmNlbGxhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZWNob0NhbmNlbGxhdGlvbjsgfQogICAgIHZvaWQgc2V0RWNob0NhbmNlbGxh
dGlvbihib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wp
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9IDA7CkBA
IC0yMTAsNyArMjA0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhj
b25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7CiAgICAgYm9vbCBzdXBwb3J0c0NvbnN0
cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pOwogCiAgICAgdmly
dHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0yNzQs
OCArMjY4LDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9maXRuZXNzU2NvcmUgeyBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgfTsKICAgICBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2ZhY2luZ01vZGUgeyBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCi0gICAgYm9vbCBtX2VjaG9DYW5jZWxsYXRpb24geyBm
YWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24g
eyBmYWxzZSB9OworICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBib29sIG1faW50ZXJydXB0ZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYXB0dXJlRGlkRmFpbGVkIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCmluZGV4IDZhNmRjZmVkNWY3YjVhNjI3MzI4
OWVlZWMzMzEzZTFmYmY4Njk4MjQuLmJjMzA0YTk0ODY3ZmY1ZDA4NTY5YzA0YWNmNDU4ZTM4NDE1
YzdlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcApAQCAtNjksNiAr
NjksNDMgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjp2aWRlb0YKICAgICByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCitPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnPiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmRpZmYoY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiB0aGF0KSBjb25zdAoreworICAgIE9wdGlv
blNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IGRpZmY7CisKKyAgICBpZiAo
d2lkdGgoKSAhPSB0aGF0LndpZHRoKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6V2lkdGgpOworICAgIGlmIChoZWlnaHQoKSAhPSB0aGF0LmhlaWdodCgp
KQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkhlaWdodCk7
CisgICAgaWYgKGFzcGVjdFJhdGlvKCkgIT0gdGhhdC5hc3BlY3RSYXRpbygpKQorICAgICAgICBk
aWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkFzcGVjdFJhdGlvKTsKKyAgICBp
ZiAoZnJhbWVSYXRlKCkgIT0gdGhhdC5mcmFtZVJhdGUoKSkKKyAgICAgICAgZGlmZi5hZGQoUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGcmFtZVJhdGUpOworICAgIGlmIChmYWNpbmdNb2Rl
KCkgIT0gdGhhdC5mYWNpbmdNb2RlKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmFjaW5nTW9kZSk7CisgICAgaWYgKHZvbHVtZSgpICE9IHRoYXQudm9s
dW1lKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Vm9s
dW1lKTsKKyAgICBpZiAoc2FtcGxlUmF0ZSgpICE9IHRoYXQuc2FtcGxlUmF0ZSgpKQorICAgICAg
ICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlNhbXBsZVJhdGUpOworICAg
IGlmIChzYW1wbGVTaXplKCkgIT0gdGhhdC5zYW1wbGVTaXplKCkpCisgICAgICAgIGRpZmYuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6U2FtcGxlU2l6ZSk7CisgICAgaWYgKGVjaG9D
YW5jZWxsYXRpb24oKSAhPSB0aGF0LmVjaG9DYW5jZWxsYXRpb24oKSkKKyAgICAgICAgZGlmZi5h
ZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpFY2hvQ2FuY2VsbGF0aW9uKTsKKyAgICBp
ZiAoZGV2aWNlSWQoKSAhPSB0aGF0LmRldmljZUlkKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGV2aWNlSWQpOworICAgIGlmIChncm91cElkKCkgIT0g
dGhhdC5ncm91cElkKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6R3JvdXBJZCk7CisgICAgaWYgKGxhYmVsKCkgIT0gdGhhdC5sYWJlbCgpKQorICAgICAg
ICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxhYmVsKTsKKyAgICBpZiAo
ZGlzcGxheVN1cmZhY2UoKSAhPSB0aGF0LmRpc3BsYXlTdXJmYWNlKCkpCisgICAgICAgIGRpZmYu
YWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2UpOworICAgIGlm
IChsb2dpY2FsU3VyZmFjZSgpICE9IHRoYXQubG9naWNhbFN1cmZhY2UoKSkKKyAgICAgICAgZGlm
Zi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMb2dpY2FsU3VyZmFjZSk7CisKKyAg
ICByZXR1cm4gZGlmZjsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaApp
bmRleCAwMWMxNTIzYjgyMGViOTQ2MDg5MjEzMGQ5NmZkYmJjYWQ2NTNkYjMyLi42YjAwZGQ0MWUw
YzY2ZjVhOWM3ZjZkMDVmYTIwZDA1ZmNmNTA1ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CkBAIC00Myw2ICs0NCwyNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBmYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKICAgICBz
dGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgdmlkZW9G
YWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmKTsKIAorICAgIGVudW0gRmxhZyB7CisgICAgICAg
IFdpZHRoID0gMSA8PCAwLAorICAgICAgICBIZWlnaHQgPSAxIDw8IDEsCisgICAgICAgIEFzcGVj
dFJhdGlvID0gMSA8PCAyLAorICAgICAgICBGcmFtZVJhdGUgPSAxIDw8IDMsCisgICAgICAgIEZh
Y2luZ01vZGUgPSAxIDw8IDQsCisgICAgICAgIFZvbHVtZSA9IDEgPDwgNSwKKyAgICAgICAgU2Ft
cGxlUmF0ZSA9IDEgPDwgNiwKKyAgICAgICAgU2FtcGxlU2l6ZSA9IDEgPDwgNywKKyAgICAgICAg
RWNob0NhbmNlbGxhdGlvbiA9IDEgPDwgOCwKKyAgICAgICAgRGV2aWNlSWQgPSAxIDw8IDksCisg
ICAgICAgIEdyb3VwSWQgPSAxIDw8IDEwLAorICAgICAgICBMYWJlbCA9IDEgPDwgMTEsCisgICAg
ICAgIERpc3BsYXlTdXJmYWNlID0gMSA8PCAxMiwKKyAgICAgICAgTG9naWNhbFN1cmZhY2UgPSAx
IDw8IDEzLAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxGbGFnPiBh
bGxGbGFncygpIHsgcmV0dXJuIHsgV2lkdGgsIEhlaWdodCwgQXNwZWN0UmF0aW8sIEZyYW1lUmF0
ZSwgRmFjaW5nTW9kZSwgVm9sdW1lLCBTYW1wbGVSYXRlLCBTYW1wbGVTaXplLCBFY2hvQ2FuY2Vs
bGF0aW9uLCBEZXZpY2VJZCwgR3JvdXBJZCwgTGFiZWwsIERpc3BsYXlTdXJmYWNlLCBMb2dpY2Fs
U3VyZmFjZSB9OyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8UmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnPiBkaWZmKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncyYpIGNvbnN0OworCiAgICAgZXhwbGljaXQgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
KCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c1dpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dpZHRoKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKaW5kZXggMmQxZmFlYWQxNzlkNzA1ZjQxOThjYzE0ZTUxYmNkODhiMDBmNmQwMy4uZjNm
YzRlYTU1MWI4ZTdiMmEwYjMwMmIwODRkMjAwMWMxN2I1YWI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKQEAgLTEyNSwxNyArMTI1LDYgQEAgSW50U2l6ZSBSZWFsdGltZVZpZGVvU291cmNlOjpi
ZXN0U3VwcG9ydGVkQ2FwdHVyZVNpemVGb3JXaWR0aEFuZEhlaWdodChzdGQ6Om9wdGkKICAgICBy
ZXR1cm4geyB9OwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQotewotICAgIEludFNpemUgc3VwcG9ydGVkU2l6ZSA9IGJlc3RTdXBw
b3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0KHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7Ci0gICAgaWYgKHN1cHBvcnRlZFNpemUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZSglcCksIHVuYWJsZSBmaW5kIG9y
IHNldCBwcmVzZXQgZm9yIHdpZHRoOiAlaSwgaGVpZ2h0OiAlaSIsIHRoaXMsIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemVBbmRG
cmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVp
Z2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVSYXRlKQogewogICAgIGlmICh3aWR0aCB8
fCBoZWlnaHQpIHsKQEAgLTE2OCwxMSArMTU3LDYgQEAgdm9pZCBSZWFsdGltZVZpZGVvU291cmNl
OjpkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmIHNhbXBsZSkKICAg
ICB2aWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUpOwogfQogCi1ib29sIFJlYWx0aW1lVmlkZW9T
b3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRlKQotewotICAgIHJldHVybiBzdXBwb3J0
c0ZyYW1lUmF0ZShyYXRlKTsKLX0KLQogYm9vbCBSZWFsdGltZVZpZGVvU291cmNlOjpzdXBwb3J0
c0ZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogewogICAgIGRvdWJsZSBlcHNpbG9uID0gMC4w
MDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMWMyNTdmNmRkYmE2NzU0MzU1NTAxMTBjMzAwYzAx
ODlkY2JlNjUxMC4uNmEyZDRhMTFmMzJmMGU2NzVkYWQyMDI0ZDk1OWIzZmIyNzBhNjVjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRl
b1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDYsOCArNDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
cmVwYXJlVG9Qcm9kdWNlRGF0YSgpOwogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50
U2l6ZSYpIG92ZXJyaWRlOwotICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0U3VwcG9ydGVkRnJhbWVSYXRlcyhWZWN0b3I8ZG91YmxlPiYmKTsKICAg
ICB2b2lkIHNldFN1cHBvcnRlZENhcHR1cmVTaXplcyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mJiBz
aXplcykgeyBtX3N1cHBvcnRlZENhcHR1cmVTaXplcyA9IHNpemVzOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IDc0OGU0ODAwYzU1MWY4OTUyN2JjYTYwZWI5NjM3YzQ0OTVmNGU3
NjguLjkxMzgzNjA5OGM2ZTE2MTQxMDY5MDdiMWY3NWY3NDNiZjE0OGExYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC03MywxMyArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
KSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7Ci0gICAg
Ym9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIGZpbmFsOworICAgIGJvb2wgc2V0RnJhbWVSYXRl
KGRvdWJsZSk7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAg
ICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTaXpl
QW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+
IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdz
RGlkQ2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAgICAgdm9pZCBtb25p
dG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIGZpbmFsOwogICAgIHZvaWQgYmVn
aW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMTdlMDU1NmQ5YzY3ODEw
MjkzZWUyODlkMWU5ZjAyYTdlY2NhMjA0Zi4uOTE2MTQxMjUzNTFmZjg1ZmY1Mzc2OWI3YTYwMTA0
MDlhMTI2ZTRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjcwLDEwICsy
NzAsMTAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbigp
CiAgICAgICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07CiB9CiAKLXZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3Rk
OjpudWxsb3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7
CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwog
fQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291
cmNlOjpzZXR0aW5ncygpIGNvbnN0CkBAIC0zNTcsMTcgKzM1Nyw2IEBAIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRp
ZXMoKSBjb25zCiAgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KIAotYm9vbCBBVlZpZGVv
Q2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgTlNT
dHJpbmcgKnByZXNldCA9IGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFwcmVzZXQgfHwgIVtzZXNzaW9uKCkg
Y2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkFWVmlk
ZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoJXApLCB1bmFibGUgZmluZCBvciBzZXQgcHJlc2V0
IGZvciB3aWR0aDogJWksIGhlaWdodDogJWkiLCB0aGlzLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNldFBy
ZXNldChwcmVzZXQpOwotfQotCiBJbnRTaXplIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzaXplRm9y
UHJlc2V0KE5TU3RyaW5nKiBwcmVzZXQpCiB7CiAgICAgaWYgKCFwcmVzZXQpCkBAIC00MDUsMTQg
KzM5NCwxNCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQoTlNTdHJpbmcg
KnByZXNldCkKICAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5n
c0RpY3Rpb25hcnldOwogI2VuZGlmCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXpl
KCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0aGlz
LCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4
U3RyaW5nXSk7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQ
cmVzZXQoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIs
IHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25d
IFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShk
b3VibGUgcmF0ZSkKK2Jvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZShkb3Vi
bGUgcmF0ZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwogICAgIGRvdWJsZSBlcHNpbG9u
ID0gMC4wMDAwMTsKQEAgLTQyNSw3ICs0MTQsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICB9CiAKICAgICBpZiAoIWJlc3RGcmFt
ZVJhdGVSYW5nZSB8fCAhaXNGcmFtZVJhdGVTdXBwb3J0ZWQocmF0ZSkpIHsKLSAgICAgICAgTE9H
KE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwgZnJhbWUg
cmF0ZSAlZiBub3Qgc3VwcG9ydGVkIGJ5IHZpZGVvIGRldmljZSIsIHRoaXMsIHJhdGUpOworICAg
ICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVwKSwg
ZnJhbWUgcmF0ZSAlZiBub3Qgc3VwcG9ydGVkIGJ5IHZpZGVvIGRldmljZSIsIHRoaXMsIHJhdGUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00NDIsMTYgKzQzMSwxNiBAQCBi
b29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAg
ICAgICAgICAgIFtkZXZpY2UoKSB1bmxvY2tGb3JDb25maWd1cmF0aW9uXTsKICAgICAgICAgfQog
ICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgTE9HKE1lZGlh
LCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwgZXhjZXB0aW9uIHRo
cm93biBjb25maWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBbW2V4Y2VwdGlvbiBuYW1l
XSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAg
IExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApLCBleGNl
cHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0
aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChlcnJvcikgewotICAgICAg
ICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBm
YWlsZWQgdG8gbG9jayB2aWRlbyBkZXZpY2UgZm9yIGNvbmZpZ3VyYXRpb246ICVzIiwgdGhpcywg
W1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgICAgICBMT0co
TWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVwKSwgZmFpbGVkIHRv
IGxvY2sgdmlkZW8gZGV2aWNlIGZvciBjb25maWd1cmF0aW9uOiAlcyIsIHRoaXMsIFtbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZy
YW1lUmF0ZSglcCkgLSBzZXQgZnJhbWUgcmF0ZSByYW5nZSB0byAlZiIsIHRoaXMsIHJhdGUpOwor
ICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApIC0g
c2V0IGZyYW1lIHJhdGUgcmFuZ2UgdG8gJWYiLCB0aGlzLCByYXRlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNDYxLDcgKzQ1MCw3IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFw
cGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6CiAgICAg
ICAgIHNldFByZXNldChiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhXVEZNb3Zl
KHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpKSk7CiAKICAgICBpZiAoZnJhbWVSYXRlKQotICAgICAg
ICBhcHBseUZyYW1lUmF0ZShmcmFtZVJhdGUudmFsdWUoKSk7CisgICAgICAgIHNldEZyYW1lUmF0
ZShmcmFtZVJhdGUudmFsdWUoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVu
dGF0aW9uKEFWQ2FwdHVyZVZpZGVvT3JpZW50YXRpb24gdmlkZW9PcmllbnRhdGlvbikKQEAgLTYy
NywxMCArNjE2LDE1IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmFt
ZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1CiAgICAgICAgIHN0ZDo6c3dh
cChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCk7CiAKICAgICBpZiAoZGltZW5z
aW9ucy53aWR0aCAhPSBtX3dpZHRoIHx8IGRpbWVuc2lvbnMuaGVpZ2h0ICE9IG1faGVpZ2h0KSB7
CisgICAgICAgIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IGNo
YW5nZWQ7CisgICAgICAgIGlmIChtX3dpZHRoICE9IGRpbWVuc2lvbnMud2lkdGgpCisgICAgICAg
ICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRo
KTsKKyAgICAgICAgaWYgKG1faGVpZ2h0ICE9IGRpbWVuc2lvbnMuaGVpZ2h0KQorICAgICAgICAg
ICAgY2hhbmdlZC5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQp
OworCiAgICAgICAgIG1fd2lkdGggPSBkaW1lbnNpb25zLndpZHRoOwogICAgICAgICBtX2hlaWdo
dCA9IGRpbWVuc2lvbnMuaGVpZ2h0OwotCi0gICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7Cisg
ICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogICAgIH0KIAogICAgIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpLCBt
X3NhbXBsZVJvdGF0aW9uLCBbY29ubmVjdGlvbiBpc1ZpZGVvTWlycm9yZWRdKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNmM3NDQwN2UxNWZkYjE2MTgxZmZhNTU3
YzMxZTYyMWMxMmYyMmEwMi4uN2Q3MjdjY2E2M2I1ZmE4MTY5YzcwMTUzOTJjZjM0YjU3YzVmNTVj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04NzYsMzkgKzg3NiwxOSBA
QCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUo
KTsKIH0KIAotdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgp
Cit2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIG1f
Y3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCk7Ci19Ci0KLWJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYmUgYWJsZSB0byBkZXNjcmliZSBzYW1wbGUgcmF0ZSBhcyBhIGRpc2NyZWV0IHJhbmdlIGNv
bnN0cmFpbnQgc28gdGhhdCB3ZSBvbmx5IGVudGVyIGhlcmUgd2l0aCB2YWx1ZXMgdGhhdCBjYW4g
YmUgYXBwbGllZC4KLSAgICBzd2l0Y2ggKHNhbXBsZVJhdGUpIHsKLSAgICBjYXNlIDgwMDA6Ci0g
ICAgY2FzZSAxNjAwMDoKLSAgICBjYXNlIDMyMDAwOgotICAgIGNhc2UgNDQxMDA6Ci0gICAgY2Fz
ZSA0ODAwMDoKLSAgICBjYXNlIDk2MDAwOgotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RWNob0NhbmNlbGxhdGlvbikpIHsKKyAgICAgICAg
Q29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc2V0RW5hYmxlRWNob0NhbmNlbGxhdGlv
bihlY2hvQ2FuY2VsbGF0aW9uKCkpOworICAgICAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigp
OworICAgIH0KKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKSkgeworICAgICAgICBDb3JlQXVkaW9TaGFyZWRVbml0
OjpzaW5nbGV0b24oKS5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUoKSk7CisgICAgICAgIHNjaGVk
dWxlUmVjb25maWd1cmF0aW9uKCk7CiAgICAgfQogCi0gICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6
c2luZ2xldG9uKCkuc2V0U2FtcGxlUmF0ZShzYW1wbGVSYXRlKTsKLQotICAgIHNjaGVkdWxlUmVj
b25maWd1cmF0aW9uKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6YXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZW5hYmxlRWNob0NhbmNlbGxh
dGlvbikKLXsKLSAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zZXRFbmFibGVF
Y2hvQ2FuY2VsbGF0aW9uKGVuYWJsZUVjaG9DYW5jZWxsYXRpb24pOwotCi0gICAgc2NoZWR1bGVS
ZWNvbmZpZ3VyYXRpb24oKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX2N1cnJlbnRTZXR0aW5n
cyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENo
YW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1
bGVSZWNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXgg
NzkyZWFmMDdlMGNlZmI0Nzg1ZTBmNzZmMjUyNTY5ZjYzNjYxMTQwZS4uYzQwZDNjNmMzNGQ2MGNm
NGJhOWNjZWRiZjAyMWQzZDU5M2QyZGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg0LDEzICs4NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogCi0gICAgYm9v
bCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFw
cGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9u
KGJvb2wpIGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IGRpc2NyZXRlU2Ft
cGxlUmF0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IHsgODAwMCwgMTYwMDAsIDMyMDAwLCA0
NDEwMCwgNDgwMDAsIDk2MDAwIH0gfTsgfQogCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdl
KE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAog
ICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4IGU3NGNiZWU3OTJlZmU1ZGE5NDI0MTdkN2Y0ZTI5
NWM3ZWU4NTIwNzkuLjNlY2Q1Y2EyY2RlZDQxNzVmNWQ0N2ZhMDdlOGM4OTkwOTE2YTIzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTgsMTAgKzk4LDE3IEBA
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6c2V0dGluZ3MoKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1
ZSgpOwogfQogCi12b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hh
bmdlKCkKK3ZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7
CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIu
c3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOworCisgICAgaWYgKHNldHRpbmdzLmNv
bnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCisgICAgICAgIG1fYnVm
ZmVyQXR0cmlidXRlcyA9IG51bGxwdHI7CisKICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6
bnVsbG9wdDsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpOwor
CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwog
fQogCiB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CkBAIC0xMTEsNyArMTE4LDcgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdGFy
dFByb2R1Y2luZ0RhdGEoKQogI2VuZGlmCiAKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwotICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9tcyAqIGxyb3VuZCgxMDAw
IC8gZnJhbWVSYXRlKCkpKTsKKyAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1l
UmF0ZSgpKTsKIH0KIAogdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCkBAIC0xMjksMjMgKzEzNiw2IEBAIFNlY29uZHMgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6ZWxhcHNlZFRpbWUoKQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOwogfQogCi1ib29sIERpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmFwcGx5U2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQotewotICAgIGlm
IChzaXplKCkgPT0gbmV3U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtX2J1ZmZl
ckF0dHJpYnV0ZXMgPSBudWxscHRyOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERpc3Bs
YXlDYXB0dXJlU291cmNlQ29jb2E6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRlKQotewotICAg
IGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmco
MV9tcyAqIGxyb3VuZCgxMDAwIC8gcmF0ZSkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZW1pdEZyYW1lKCkKIHsKICAgICBpZiAobXV0
ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCmluZGV4IDc4NzdlMGJh
YzQ5MGNiMGRmMzJkZTE5MWVjODViNTk1NTNlZjJhMTcuLjQ4NGMxYjBhNzI3ODM5NmNkZTZlMTNl
NGE5OTFlNzJlNTQyZTI5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01NCwyMSArNTQsMjAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEo
KSBvdmVycmlkZTsKIAogICAgIFNlY29uZHMgZWxhcHNlZFRpbWUoKTsKLSAgICBib29sIGFwcGx5
RnJhbWVSYXRlKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50
U2l6ZSYpIG92ZXJyaWRlOwogCiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAjaWYgSEFWRShJT1NV
UkZBQ0UpCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbUlP
U3VyZmFjZShJT1N1cmZhY2VSZWYpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hh
bmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBvdmVycmlk
ZTsKKwogcHJpdmF0ZToKIAogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0dGlu
Z3NEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIHZvaWQgZW1pdEZyYW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKaW5kZXggNmQxNGIwMzUxMTBiM2NlYzY5M2Rk
ZjA3MTkwNTNkYWY4ZTMzYjQwYy4uOTlkNzhlZWM3YzcwMmVjZDE2ZWNmZGEwYjg0ZDBjNTZiOWQ0
ZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsOCArNTAs
OCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTsK
ICAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYyhjb25zdCBTdHJpbmcmIGRldmljZUlELCBj
b25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5h
bDsKLSAgICBib29sIGFwcGx5U2FtcGxlU2l6ZShpbnQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4g
ZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA0NDEwMCwgNDgw
MDAgfSB9OyB9CiAKICAgICB2b2lkIGVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90KTsKICAgICB2
b2lkIHJlbmRlcihTZWNvbmRzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYy5tbQppbmRleCA1YWJiOGYyOGIyNWQ3YTMyNzI4N2MxNjllMzI1YTg1OWNlNDY2M2Zi
Li4wYzhhNGJkZTIwNWM5YjliMmFiMmE4ODg5NzZiYzk3NDljMzM3MWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OCwzMCArMTU4LDI3IEBAIHZvaWQgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcihTZWNvbmRzIGRlbHRhKQogICAgIH0KIH0K
IAotYm9vbCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKGludCBz
YW1wbGVSYXRlKQordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6c2V0dGluZ3NEaWRD
aGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGlu
Z3MpCiB7Ci0gICAgaWYgKHNhbXBsZVJhdGUgPCA0NDEwMCB8fCBzYW1wbGVSYXRlID4gNDgwMDAp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKSkgeworICAgICAgICBtX2Zv
cm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBu
dWxscHRyOwogCi0gICAgaWYgKHNhbXBsZVJhdGUgPT0gdGhpcy0+c2FtcGxlUmF0ZSgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYXV0byByYXRlID0gc2FtcGxlUmF0ZSgpOworICAg
ICAgICBzaXplX3Qgc2FtcGxlQ291bnQgPSAyICogcmF0ZTsKIAotICAgIG1fZm9ybWF0RGVzY3Jp
cHRpb24gPSBudWxscHRyOwotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9iaXBCb3BCdWZmZXIuZ3JvdyhzYW1wbGVDb3VudCk7CisgICAgICAgIG1fYmlwQm9wQnVm
ZmVyLmZpbGwoMCk7CiAKLSAgICBzaXplX3Qgc2FtcGxlQ291bnQgPSAyICogc2FtcGxlUmF0ZTsK
KyAgICAgICAgc2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChCaXBCb3BEdXJhdGlvbiAq
IHJhdGUpOworICAgICAgICBzaXplX3QgYmlwU3RhcnQgPSAwOworICAgICAgICBzaXplX3QgYm9w
U3RhcnQgPSByYXRlOwogCi0gICAgbV9iaXBCb3BCdWZmZXIuZ3JvdyhzYW1wbGVDb3VudCk7Ci0g
ICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsKLQotICAgIHNpemVfdCBiaXBCb3BTYW1wbGVDb3Vu
dCA9IGNlaWwoQmlwQm9wRHVyYXRpb24gKiBzYW1wbGVSYXRlKTsKLSAgICBzaXplX3QgYmlwU3Rh
cnQgPSAwOwotICAgIHNpemVfdCBib3BTdGFydCA9IHNhbXBsZVJhdGU7Ci0KLSAgICBhZGRIdW0o
QmlwQm9wVm9sdW1lLCBCaXBGcmVxdWVuY3ksIHNhbXBsZVJhdGUsIDAsIG1fYmlwQm9wQnVmZmVy
LmRhdGEoKSArIGJpcFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7Ci0gICAgYWRkSHVtKEJpcEJv
cFZvbHVtZSwgQm9wRnJlcXVlbmN5LCBzYW1wbGVSYXRlLCAwLCBtX2JpcEJvcEJ1ZmZlci5kYXRh
KCkgKyBib3BTdGFydCwgYmlwQm9wU2FtcGxlQ291bnQpOworICAgICAgICBhZGRIdW0oQmlwQm9w
Vm9sdW1lLCBCaXBGcmVxdWVuY3ksIHJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJp
cFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7CisgICAgICAgIGFkZEh1bShCaXBCb3BWb2x1bWUs
IEJvcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYm9wU3RhcnQs
IGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5oCmluZGV4IGY1ODM2NzEzMzdkZjA3YWE2NGNhODgzY2JmZjY0ZTBiYWEyN2U5YmUuLjczMTI5
ZTFiZTdjYjZkY2MxNjZmZDU1NmUwMGZkMTk1ZWM0NDM3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZU1hYy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTYW1w
bGVCdWZmZXIoKSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmlu
YWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdl
ZChpbnQgb3JpZW50YXRpb24pIGZpbmFsOwogICAgIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9y
aWVudGF0aW9uTm90aWZpZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQppbmRleCA0Y2NlZTE5MTI2MDc0Y2MwODA3MzEzODBhMjExNzIzMGU5M2MyMGRk
Li4xN2IzNWJhYTE1N2Q1ZjQ0NmJiOTAzOTdjYzMzNjE1MTA5MmZlOGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC0xNTQsMTMgKzE1NCwxMSBAQCB2b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIoKQogICAgIGRp
c3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShz
YW1wbGVCdWZmZXIuZ2V0KCksIG1fZGV2aWNlT3JpZW50YXRpb24pKTsKIH0KIAotYm9vbCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUp
Cit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRp
b25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAg
ICBpZiAoIU1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUobmV3U2l6ZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fYnVmZmVyUG9vbCA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnOjpIZWlnaHQgfSkpCisgICAgICAgIG1fYnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAog
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6b3JpZW50YXRpb25DaGFuZ2VkKGludCBv
cmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQppbmRleCA0YjQyNWY5YmE2MmIwZjNmMDkzYTkwNmZkNGIyYWU0OWMyYTQzYzNlLi5i
YmFjOGRhNWU0MzljOGEyMGEyOGRlY2Y1NzdkZWNkNjYxOGU3YTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3Myw5ICsxNzMsMTUgQEAg
dm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cHJvY2Vzc05ld1NhbXBsZShD
TVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUKIHsKICAgICBtX2J1ZmZlciA9IHNhbXBsZTsKICAgICBp
ZiAod2lkdGggIT0gbV9jdXJyZW50U2V0dGluZ3Mud2lkdGgoKSB8fCBoZWlnaHQgIT0gbV9jdXJy
ZW50U2V0dGluZ3MuaGVpZ2h0KCkpIHsKKyAgICAgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICAgICAgaWYgKHdpZHRoICE9IG1fY3Vy
cmVudFNldHRpbmdzLndpZHRoKCkpCisgICAgICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICAgICAgaWYgKGhlaWdodCAhPSBt
X2N1cnJlbnRTZXR0aW5ncy5oZWlnaHQoKSkKKyAgICAgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKKwogICAgICAgICBtX2N1cnJl
bnRTZXR0aW5ncy5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNl
dEhlaWdodChoZWlnaHQpOwotICAgICAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgICAgICBz
ZXR0aW5nc0RpZENoYW5nZShjaGFuZ2VkKTsKICAgICB9CiAKICAgICB2aWRlb1NhbXBsZUF2YWls
YWJsZShNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGUsIHJvdGF0aW9uKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCmluZGV4IGQyNmEyOTRlMzZl
NzllOGEzYTExOTUwZTJhZjE4ODdjODEyNzQ3OWYuLjBiMWYzZWY5ZjJmOGQ5NGE5YTFlYjg4NmI4
NTQwZTA1OTc2YTM4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJj
ZU1hYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU5LDggKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRlRnJhbWUoKSBm
aW5hbDsKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXpl
JikgZmluYWw7Ci0gICAgYm9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIGZpbmFsOworICAgIHZv
aWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZz4pIGZpbmFsOwogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOwog
CiAgICAgYm9vbCBjcmVhdGVEaXNwbGF5U3RyZWFtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMubW0KaW5kZXggYjE3ZTdjMmI0NWUwZDkwNTIzYTJjNDIyYzZl
OGNjZTc3NzFiYjJkOC4uZTZlNDQ4YzNlY2FhZjA1MDgzNDgwOTMwZDVjZGM0MDMxMGU5OGE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTMsMjEg
KzI1MywxMiBAQCB2b2lkIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3Bs
YXlTdHJlYW0oKQogICAgIG1faXNSdW5uaW5nID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCit2
b2lkIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRp
b25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAg
ICBpZiAoIURpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmFwcGx5U2l6ZShuZXdTaXplKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9kaXNwbGF5U3RyZWFtID0gbnVsbHB0cjsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6
YXBwbHlGcmFtZVJhdGUoZG91YmxlIHJhdGUpCi17Ci0gICAgaWYgKGZyYW1lUmF0ZSgpICE9IHJh
dGUpCisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpI
ZWlnaHQsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlIH0pKQog
ICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOwogCi0gICAgcmV0dXJuIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OmFwcGx5RnJhbWVSYXRlKHJhdGUpOworICAgIHJldHVybiBEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAK
IHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmNvbW1pdENvbmZpZ3VyYXRpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAppbmRleCBmM2M5MzdmZjhhNWJiZDcyZjVmOTgzOWFkN2Q5NmVjMjQ1
MjY3MjVkLi45NjU3MjcwODJjYjMyMzk4OTU5NmI4MWFjNmExM2E2ZDkxMGYxMDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmNwcApAQCAtMTM0LDEwICsxMzQsMTAgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcyYgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGMK
ICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMudmFsdWUoKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6
Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsK
KyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9
CiAKIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmgKaW5kZXggNDQzZGQwNzNmMGI0M2JjNTYyYjRhN2MxYTAzOWQzMjA2NTE1NjM5Ny4u
NzljNjY3OGFkMDE1MzExNmM3YWI3MTc3NDQ5YmE2ODk1MzMyYjJhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApA
QCAtNTQsMTggKzU0LDEzIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyKFNlY29uZHMpIHsgfQorICAgIHZv
aWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZz4pIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIFNlY29uZHMgcmVuZGVySW50ZXJ2YWwo
KSB7IHJldHVybiA2MF9tczsgfQogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91
YmxlKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUo
aW50KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVNpemUo
aW50KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxs
YXRpb24oYm9vbCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAg
ICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIHZvaWQgdGlj
aygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDFlZWM0NDFkNzhlY2FkMTQ1ZDk3ZDAxZjc0OGVj
MDgyZTFiMjZlYTMuLjJhZWFmMmNhZmUxNzM3MjZlNDRkZTYzNzdmMTFmZWExOWJjNWU3ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwCkBAIC0xOTIsMTAgKzE5MiwxNyBAQCBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiB9CiAKLXZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewogICAgIG1fY3VycmVudFNldHRpbmdzID0g
c3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KCk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpI
ZWlnaHQgfSkpIHsKKyAgICAgICAgbV9iYXNlRm9udFNpemUgPSBzaXplKCkuaGVpZ2h0KCkgKiAu
MDg7CisgICAgICAgIG1fYmlwQm9wRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIDIuNTsKKyAg
ICAgICAgbV9zdGF0c0ZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAuNTsKKyAgICAgICAgbV9p
bWFnZUJ1ZmZlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpzdGFydENhcHR1cmVUaW1lcigpCkBAIC0yMjUsMTkgKzIzMiw2IEBAIFNlY29uZHMg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmVsYXBzZWRUaW1lKCkKICAgICByZXR1cm4gbV9lbGFw
c2VkVGltZSArIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fc3RhcnRUaW1lKTsKIH0KIAotYm9v
bCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Ci17Ci0gICAgaWYgKCFSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUoc2l6ZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fYmFzZUZvbnRTaXplID0gc2l6ZS5oZWlnaHQoKSAq
IC4wODsKLSAgICBtX2JpcEJvcEZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAyLjU7Ci0gICAg
bV9zdGF0c0ZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAuNTsKLSAgICBtX2ltYWdlQnVmZmVy
ID0gbnVsbHB0cjsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBmbG9hdCByYWRpdXMgPSBzaXplKCkud2lkdGgoKSAqIC4wOTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCA2
YWM3MzU4ZTc0YzhlMzNhMDAxYjI4ZTA2ZjQ1MjViNzM0MThjNGY2Li45MWY2NTZhZmMxNzcxZGIy
ZjZmZTZjNjg4M2YyZTEyNDAwN2E5MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC02MCwxMiArNjAsMTEg
QEAgcHJvdGVjdGVkOgogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0OwogCiAg
ICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNp
emUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBj
b25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwog
CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9k
dWNpbmdEYXRhKCkgZmluYWw7CkBAIC03NCw5ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQmKTsKICAgICB2b2lkIGRyYXdCb3hlcyhHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIGJvb2wgYXBwbHlGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
Ym9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJsZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
CiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2b2lkIGdlbmVyYXRlRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDgy
NDBkNTBhNTI4MGE0NGZjNzdlZjNjZGYwY2U4MmFkN2FlMjcwYzIuLjI1Y2JmYzNjMTZiNDEyMWVl
ZmMzNzE5NzE1NGYyY2NkNDc5YmRjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCw4ICs3NCw5
IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0U2V0
dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiYgc2V0dGluZ3MpCiAgICAgeworICAg
ICAgICBhdXRvIGNoYW5nZWQgPSBtX3NldHRpbmdzLmRpZmYoc2V0dGluZ3MpOwogICAgICAgICBt
X3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7Ci0gICAgICAgIHNldHRpbmdzRGlkQ2hhbmdl
KCk7CisgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogICAgIH0KIAogICAgIGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc2NyaXB0aW9uOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348885</attachid>
            <date>2018-09-04 19:35:07 -0700</date>
            <delta_ts>2018-09-04 20:14:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189284-20180904193506.patch</filename>
            <type>text/plain</type>
            <size>67480</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE4YjZjMTRhZDlhNDFl
ZmIyY2QzM2Q0Yjk0MjVlZWYyNGMzYzVhYi4uYjZkOTg3ZjlmZTVjZjhiN2M5YzdlZDZmNDhjNTk4
ZDE4ZjM1OGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOS0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJl
YW1dIFNpbXBsaWZ5IGxvZ2ljIHdoZW4gY2hhbmdpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZSBzZXR0
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
Mjg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNzk0OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWxsICJhcHBseTxzZXR0aW5n
PiIgbWV0aG9kcyBmcm9tIFJlYWx0aW1lTWVkaWFTb3VyY2UgYW5kIGRlcml2ZWQgY2xhc3Nlcywg
YW5kCisgICAgICAgIGFkZCBhIGJpdGZpZWxkIHRvIHNldHRpbmdzRGlkQ2hhbmdlIHNvIGNsYXNz
ZXMgY2FuIGRvIHNldHRpbmctc3BlY2lmaWMgc2V0dXAgYW5kCisgICAgICAgIGNvbmZpZ3VyYXRp
b24gYnkgb3ZlcnJpZGluZyBzZXR0aW5nc0RpZENoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpmaXRuZXNzRGlzdGFuY2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnZhbHVlRm9yRGlz
Y3JldGVDYXBhYmlsaXR5VmFsdWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NE
aXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseU51bWVyaWNDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0V2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmRpZmYgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjphbGxGbGFncyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlGcmFtZVJhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0UHJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hvQ2FuY2VsbGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRp
bmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpz
ZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYzo6YXBwbHlTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cHJvY2Vzc05ld1NhbXBs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjphcHBseVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmFwcGx5RnJh
bWVSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKwogMjAxOC0wOS0wMyAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBTeXN0ZW1QcmV2aWV3IGNvZGUgZnJvbSBXZWJL
aXRBZGRpdGlvbnMgdG8gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2YWVlNDhkOTI0NjI0ODJlNzkwNzBi
OTZlNWU5YTgxYTI2YmJhN2YuLjk4OTJhZjYzZDgwNmMyYTM4MmU3ZWNiZmFiMDQwZTFlYjhlZjA2
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTaW1wbGlm
eSBsb2dpYyB3aGVuIGNoYW5naW5nIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2V0dGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI4NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQxMTc5NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNv
dXJjZTo6c2V0U2V0dGluZ3MpOgorCiAyMDE4LTA5LTAzICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFN5c3RlbVByZXZpZXcgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucyB0byBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
aW5kZXggMjRiODE2ZDJmMGY4ODYzNTgxMWQ2M2M2YzM1Yjc5ZWRjNzk4N2I2NS4uY2RkMDRiOTAz
YzdiZjI2Y2ZlODlkNjg3OTA3NWIzNDNkNjQwZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjay5jcHAKQEAgLTExNCwxMCArMTE0LDE2IEBAIHZvaWQgQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52
YXMpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwog
CisgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdl
ZDsKKyAgICBpZiAobV9jYW52YXMtPndpZHRoKCkgIT0gbV9zZXR0aW5ncy53aWR0aCgpKQorICAg
ICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRo
KTsKKyAgICBpZiAobV9jYW52YXMtPmhlaWdodCgpICE9IG1fc2V0dGluZ3MuaGVpZ2h0KCkpCisg
ICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKKwogICAgIG1fc2V0dGluZ3Muc2V0V2lkdGgobV9jYW52YXMtPndpZHRoKCkpOwogICAg
IG1fc2V0dGluZ3Muc2V0SGVpZ2h0KG1fY2FudmFzLT5oZWlnaHQoKSk7CiAKLSAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lk
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2Fu
dmFzQmFzZSYgY2FudmFzLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5oCmluZGV4IDYzNWI0YjFjOGE2YzYwN2VkMjg1MWNmMjBmYzRhMGYzZTQwYzQw
YWMuLmIwMDZhZjkzYmY0ZDExMjUzZmY3YzE2ZDIzNzZjMGFlMWMzNGM0YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKICAgICAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRp
ZXMoKTsgfQogICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgICAgICBib29sIGFw
cGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAg
IHZvaWQgY2FwdHVyZUNhbnZhcygpOwogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmly
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaAppbmRleCA2NWU5NmFjYTlkYjE3MmRkMjcyOGIzYzVmMTU5MTY3ZGYz
M2MyYjZlLi4zMGVjNDFhNjNiODg4ZDE1YzAzNDVhOTIzMzMwODA0NWQ5MTJhNWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5oCkBAIC0xOTMsNiArMTkzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjphYnMoaWRlYWwgLSBtX2lkZWFsLnZhbHVlKCkpKSAvIHN0ZDo6
bWF4KHN0ZDo6YWJzKGlkZWFsKSwgc3RkOjphYnMobV9pZGVhbC52YWx1ZSgpKSk7CiAgICAgfQog
CisgICAgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlz
Y3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgZG91YmxlIG1pbkRp
c3RhbmNlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworCisgICAg
ICAgIGZvciAoYXV0byYgdmFsdWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAg
ICAgICAgIGF1dG8gZGlzdGFuY2UgPSBmaXRuZXNzRGlzdGFuY2UodmFsdWUsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKQorICAgICAgICAgICAgICAgIG1p
bkRpc3RhbmNlID0gZGlzdGFuY2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWluRGlz
dGFuY2U7CisgICAgfQorCiAgICAgYm9vbCB2YWxpZEZvclJhbmdlKFZhbHVlVHlwZSByYW5nZU1p
biwgVmFsdWVUeXBlIHJhbmdlTWF4KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRW1wdHko
KSkKQEAgLTI3Nyw2ICsyOTAsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWU7CiAg
ICAgfQogCisgICAgVmFsdWVUeXBlIHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZh
bHVlVHlwZSBjdXJyZW50LCBjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmls
aXR5VmFsdWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgVmFsdWVUeXBlIHZhbHVlIHsgMCB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWF4OworCisgICAgICAgIGlmIChtX2V4YWN0KSB7CisgICAgICAgICAg
ICBBU1NFUlQoZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzLmNvbnRhaW5zKG1fZXhhY3QudmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuIG1fZXhhY3QudmFsdWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX21pbikgeworICAgICAgICAgICAgYXV0byBpbmRleCA9IGRpc2NyZXRlQ2Fw
YWJpbGl0eVZhbHVlcy5maW5kTWF0Y2hpbmcoWyZdKFZhbHVlVHlwZSB2YWx1ZSkgeyByZXR1cm4g
bV9taW4udmFsdWUoKSA+PSB2YWx1ZTsgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBtaW4gPSB2YWx1ZSA9IGRpc2NyZXRlQ2FwYWJpbGl0
eVZhbHVlc1tpbmRleF07CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpZGVh
bCwgZG9uJ3QgY2hhbmdlIGlmIG1pbmltdW0gaXMgc21hbGxlciB0aGFuIGN1cnJlbnQuCisgICAg
ICAgICAgICAgICAgaWYgKCFtX2lkZWFsICYmIHZhbHVlIDwgY3VycmVudCkKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBjdXJyZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1fbWF4ICYmIG1fbWF4LnZhbHVlKCkgPj0gZGlzY3JldGVDYXBhYmlsaXR5VmFs
dWVzWzBdKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRpc2NyZXRlVmFsdWUgOiBkaXNjcmV0
ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9tYXgudmFsdWUoKSA8
PSBkaXNjcmV0ZVZhbHVlKQorICAgICAgICAgICAgICAgICAgICBtYXggPSB2YWx1ZSA9IGRpc2Ny
ZXRlVmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pZGVh
bCAmJiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMuY29udGFpbnMobV9pZGVhbC52YWx1ZSgpKSkg
eworICAgICAgICAgICAgdmFsdWUgPSBtX2lkZWFsLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAo
bWF4KQorICAgICAgICAgICAgICAgIHZhbHVlID0gc3RkOjptaW4obWF4LnZhbHVlKCksIHZhbHVl
KTsKKyAgICAgICAgICAgIGlmIChtaW4pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1h
eChtaW4udmFsdWUoKSwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21pbiAmJiAh
bV9tYXggJiYgIW1fZXhhY3QgJiYgIW1faWRlYWw7IH0KICAgICBib29sIGlzTWFuZGF0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9taW4gfHwgbV9tYXggfHwgbV9leGFjdDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDcyNDdiYjgzMzg1N2U0OGU5OWVlNzg2ZTc1ZTRh
OTNiYjAwNWQ1ZWQuLjFiMGJmOTRkZjVkNGM5M2RlZjgwMjRlZmE5MWE1ZTE2NWJmNWQ5NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC03MSw4ICs3MSw2IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1fdmlkZW9UcmFjazsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKaW5kZXggMmU5ZDk2NWExOTliNWIzMjFhZDNmZTMwZTE4MTg4ZjIyZTJiNDFk
Zi4uNDllOTllNGYyYWNlMjI5N2ZmYzdiM2ZkZjY4YjUyNmM4NDJiZDZmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTUyLDggKzUyLDYgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShj
b25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmkKICAgICAsIG1fdHlwZSh0eXBl
KQogICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBp
bXBsZW1lbnQgZml0bmVzcyBzY29yZSBmb3IgY29uc3RyYWludHMKLQogICAgIGlmIChtX2lkLmlz
RW1wdHkoKSkKICAgICAgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAg
ICBtX3BlcnNpc3RlbnRJRCA9IG1faWQ7CkBAIC0xMzMsMTMgKzEzMSwxMiBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6Om5vdGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3QKICAgICB9KTsKIH0K
IAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24pCiAgICAg
ICAgIHJldHVybjsKLQogICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9u
ID0gdHJ1ZTsKIAogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTYsNiAr
MzUzLDkgQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVz
LnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAgICAg
aWYgKGF1dG8gZGlzY3JldGVSYXRlcyA9IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlz
dGFuY2UoKmRpc2NyZXRlUmF0ZXMpOworCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRp
ZXMuc2FtcGxlUmF0ZSgpOwogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4o
Y29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdl
LnJhbmdlTWF4KCkuYXNJbnQpOwogICAgICAgICBicmVhazsKQEAgLTM2Niw2ICszNjYsOSBAQCBk
b3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29u
c3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNT
YW1wbGVTaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAorICAgICAgICBpZiAoYXV0byBk
aXNjcmV0ZVNpemVzID0gZGlzY3JldGVTYW1wbGVTaXplcygpKQorICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlz
Y3JldGVTaXplcyk7CisKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVT
aXplKCk7CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50
KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDIxLDggKzQyNCwxNSBAQCBkb3VibGUgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRpYyB2
b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVU
eXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIFZhbHVlVHlwZSBjYXBhYmlsaXR5
TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNl
LCB2b2lkIChSZWFsdGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRp
YyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFs
dWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFi
aWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlKiBz
b3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVkaWFTb3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQog
eworICAgIGlmIChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgaW50IHZhbHVl
ID0gY29uc3RyYWludC52YWx1ZUZvckRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyhjdXJyZW50LCAq
ZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IGN1cnJlbnQp
CisgICAgICAgICAgICAoc291cmNlLT4qYXBwbGllcikodmFsdWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgVmFsdWVUeXBlIHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckNhcGFi
aWxpdHlSYW5nZShjdXJyZW50LCBjYXBhYmlsaXR5TWluLCBjYXBhYmlsaXR5TWF4KTsKICAgICBp
ZiAodmFsdWUgIT0gY3VycmVudCkKICAgICAgICAgKHNvdXJjZS0+KmFwcGxpZXIpKHZhbHVlKTsK
QEAgLTQ0MiwzNSArNDUyLDE3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKICAgICBhdXRvJiBj
YXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBhYmlsaXRpZXMoKTsKICAgICBzd2l0Y2ggKGNvbnN0cmFp
bnQuY29uc3RyYWludFR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lk
dGg6IHsKLSAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNJbnQoKSk7Ci0gICAgICAgIGlmICgh
Y2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lkdGgoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgIGFwcGx5TnVt
ZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
LCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0V2lkdGgpOworICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdo
dDogewotICAgICAgICBBU1NFUlQoY29uc3RyYWludC5pc0ludCgpKTsKLSAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQoKSkKLSAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAgICAgICBhcHBseU51
bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzaXpl
KCkuaGVpZ2h0KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJ
bnQsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOworICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpG
cmFtZVJhdGU6IHsKLSAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNEb3VibGUoKSk7Ci0gICAg
ICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpCi0gICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsK
LSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50
Pihjb25zdHJhaW50KSwgZnJhbWVSYXRlKCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJh
bmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRG
cmFtZVJhdGUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzogewogICAgICAgICBBU1NFUlQo
Y29uc3RyYWludC5pc0RvdWJsZSgpKTsKQEAgLTQ3OCw3ICs0NzAsNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFi
aWxpdGllcy5hc3BlY3RSYXRpbygpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRv
d25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3BlY3RSYXRpbygpLCByYW5n
ZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCB0aGlzLCAm
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8pOworICAgICAgICBhcHBseU51bWVy
aWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3Bl
Y3RSYXRpbygpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4
KCkuYXNEb3VibGUsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRpbyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4MCw3IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHJhbmdlID0gY2Fw
YWJpbGl0aWVzLnZvbHVtZSgpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25j
YXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCB2b2x1bWUoKSwgcmFuZ2UucmFuZ2VN
aW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgdGhpcywgJlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFZvbHVtZSk7CisgICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQo
ZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCksIHZvbHVtZSgpLCB7IH0sIHJh
bmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMs
ICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTQ5OCw3ICs0OTAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7
Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4o
Y29uc3RyYWludCksIHNhbXBsZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2Uu
cmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJh
dGUpOworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFp
bnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVSYXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFu
Z2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTUwOCw3ICs1MDAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7Ci0g
ICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29u
c3RyYWludCksIHNhbXBsZVNpemUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUp
OworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLCBzYW1wbGVTaXplKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwg
cmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNh
bXBsZVNpemUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTgyMyw4ICs4MTUsNiBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVk
Q29uc3RyYWludCYgY29uc3RyYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSBzaG91bGQgdGFrZSBNZWRpYUNvbnN0cmFpbnQqIGluc3Rl
YWQgb2Ygc3RkOjpvcHRpb25hbDw+IHNvIGl0IGNhbiBzZWUgaWYgYSBjb25zdHJhaW50IGlzIGFu
IGV4YWN0LCBtaW4sIG1heCwKLSAgICAvLyBvciBpZGVhbCwgYW5kIGNob29zZSB0aGUgY29ycmVj
dCB2YWx1ZSBmb3IgcHJvcGVydGllcyB3aXRoIG5vbi1kaXNjcmVldCBjYXBhYmlsaXRpZXMgd2hl
biBuZWNlc3NhcnkuCiAgICAgaWYgKHdpZHRoIHx8IGhlaWdodCB8fCBmcmFtZVJhdGUpCiAgICAg
ICAgIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQp
LCBXVEZNb3ZlKGZyYW1lUmF0ZSkpOwogCkBAIC04NjUsMTEgKzg1NSwxNCBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6
ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYXBwbHlTaXplKHNpemUp
KQotICAgICAgICByZXR1cm47CisgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICBpZiAobV9zaXplLndpZHRoKCkgIT0gc2l6ZS53aWR0
aCgpKQorICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc6OldpZHRoKTsKKyAgICBpZiAobV9zaXplLmhlaWdodCgpICE9IHNpemUuaGVpZ2h0KCkpCisg
ICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAg
ICBzZXR0aW5nc0RpZENoYW5nZShjaGFuZ2VkKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRXaWR0aChpbnQgd2lkdGgpCkBAIC04NzcsMTUgKzg3MCwxMSBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRoKGludCB3aWR0aCkKICAgICBpZiAod2lkdGggPT0gbV9z
aXplLndpZHRoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBoZWlnaHQgPSBtX2FzcGVj
dFJhdGlvID8gd2lkdGggLyBtX2FzcGVjdFJhdGlvIDogbV9zaXplLmhlaWdodCgpOwotICAgIGlm
ICghYXBwbHlTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBtX3NpemUuc2V0V2lkdGgod2lkdGgpOwogICAgIGlmIChtX2FzcGVjdFJhdGlvKQogICAg
ICAgICBtX3NpemUuc2V0SGVpZ2h0KHdpZHRoIC8gbV9hc3BlY3RSYXRpbyk7CiAKLSAgICBzZXR0
aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldEhlaWdodChpbnQgaGVpZ2h0KQpAQCAtODkzLDc5ICs4ODIsODUgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRIZWlnaHQoaW50IGhlaWdodCkKICAgICBpZiAoaGVpZ2h0ID09IG1f
c2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IHdpZHRoID0gbV9hc3Bl
Y3RSYXRpbyA/IGhlaWdodCAqIG1fYXNwZWN0UmF0aW8gOiBtX3NpemUud2lkdGgoKTsKLSAgICBp
ZiAoIWFwcGx5U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKG1fYXNwZWN0UmF0aW8pCi0gICAgICAgIG1fc2l6ZS5zZXRXaWR0aCh3aWR0aCk7
CisgICAgICAgIG1fc2l6ZS5zZXRXaWR0aChoZWlnaHQgKiBtX2FzcGVjdFJhdGlvKTsKICAgICBt
X3NpemUuc2V0SGVpZ2h0KGhlaWdodCk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAg
IHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUoZG91Ymxl
IHJhdGUpCiB7Ci0gICAgaWYgKG1fZnJhbWVSYXRlID09IHJhdGUgfHwgIWFwcGx5RnJhbWVSYXRl
KHJhdGUpKQorICAgIGlmIChtX2ZyYW1lUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2ZyYW1lUmF0ZSA9IHJhdGU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBz
ZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1l
UmF0ZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8oZG91
YmxlIHJhdGlvKQogewotICAgIGlmIChtX2FzcGVjdFJhdGlvID09IHJhdGlvIHx8ICFhcHBseUFz
cGVjdFJhdGlvKHJhdGlvKSkKKyAgICBpZiAobV9hc3BlY3RSYXRpbyA9PSByYXRpbykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9hc3BlY3RSYXRpbyA9IHJhdGlvOwogICAgIG1fc2l6ZS5zZXRI
ZWlnaHQobV9zaXplLndpZHRoKCkgLyByYXRpbyk7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsK
KyAgICBzZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkFzcGVjdFJhdGlvKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7
Ci0gICAgaWYgKG1fZmFjaW5nTW9kZSA9PSBtb2RlIHx8ICFhcHBseUZhY2luZ01vZGUobW9kZSkp
CisgICAgaWYgKG1fZmFjaW5nTW9kZSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2ZhY2luZ01vZGUgPSBtb2RlOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGlu
Z3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGYWNpbmdNb2Rl
KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUoZG91YmxlIHZvbHVt
ZSkKIHsKLSAgICBpZiAobV92b2x1bWUgPT0gdm9sdW1lIHx8ICFhcHBseVZvbHVtZSh2b2x1bWUp
KQorICAgIGlmIChtX3ZvbHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dm9sdW1lID0gdm9sdW1lOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NE
aWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpWb2x1bWUpOwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiB7Ci0g
ICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSByYXRlIHx8ICFhcHBseVNhbXBsZVJhdGUocmF0ZSkpCisg
ICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nh
bXBsZVJhdGUgPSByYXRlOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NE
aWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsK
K30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlz
Y3JldGVTYW1wbGVSYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKGludCBzaXplKQogewot
ICAgIGlmIChtX3NhbXBsZVNpemUgPT0gc2l6ZSB8fCAhYXBwbHlTYW1wbGVTaXplKHNpemUpKQor
ICAgIGlmIChtX3NhbXBsZVNpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9z
YW1wbGVTaXplID0gc2l6ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdz
RGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlU2l6ZSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmRp
c2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVj
aG9DYW5jZWxsYXRpb24pCiB7Ci0gICAgaWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2Fu
Y2VsbGF0aW9uIHx8ICFhcHBseUVjaG9DYW5jZWxsYXRpb24oZWNob0NhbmNlbGxhdGlvbikpCisg
ICAgaWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2FuY2VsbGF0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2VjaG9DYW5jZWxsYXRpb24gPSBlY2hvQ2FuY2VsbGF0aW9uOwotICAg
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpFY2hvQ2FuY2VsbGF0aW9uKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA0ODQxOWJhZDAxODlmNzI0Njlj
MjZjY2M2NTQwODQzYTcwMGEyZmUzLi5lMDhlNjU2ZTNlNzFlMTA2ZDY5ZGZmOTA3Zjc2ODI2YjZh
NzQzZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE2OSwzNSArMTY5LDI5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEhlaWdodChpbnQpOwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICBkb3VibGUgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7
IH0KICAgICB2b2lkIHNldEZyYW1lUmF0ZShkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBs
eUZyYW1lUmF0ZShkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgYXNwZWN0
UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CiAgICAgdm9pZCBzZXRBc3Bl
Y3RSYXRpbyhkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJs
ZSkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7
IH0KICAgICB2b2lkIHNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBkb3VibGUgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KICAgICB2
b2lkIHNldFZvbHVtZShkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseVZvbHVtZShkb3Vi
bGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBpbnQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShpbnQpOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNv
bnN0OwogCiAgICAgaW50IHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7
IH0KICAgICB2b2lkIHNldFNhbXBsZVNpemUoaW50KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlT
YW1wbGVTaXplKGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPGludD4+IGRpc2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25zdDsKIAogICAgIGJvb2wg
ZWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZWNob0NhbmNlbGxhdGlvbjsgfQog
ICAgIHZvaWQgc2V0RWNob0NhbmNlbGxhdGlvbihib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBw
bHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCA9IDA7CkBAIC0yMTAsNyArMjA0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7
CiAgICAgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pOwogCiAgICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCkBAIC0yNzQsOCArMjY4LDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bV9maXRuZXNzU2NvcmUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkg
fTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2Zh
Y2luZ01vZGUgeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCi0gICAgYm9v
bCBtX2VjaG9DYW5jZWxsYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGlu
Z3NEaWRDaGFuZ2VOb3RpZmljYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9lY2hvQ2FuY2Vs
bGF0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYXB0dXJlRGlk
RmFpbGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCmlu
ZGV4IDZhNmRjZmVkNWY3YjVhNjI3MzI4OWVlZWMzMzEzZTFmYmY4Njk4MjQuLmJjMzA0YTk0ODY3
ZmY1ZDA4NTY5YzA0YWNmNDU4ZTM4NDE1YzdlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcApAQCAtNjksNiArNjksNDMgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpWaWRlb0ZhY2luZ01vZGUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjp2aWRlb0YK
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCitP
cHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OmRpZmYoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiB0
aGF0KSBjb25zdAoreworICAgIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+IGRpZmY7CisKKyAgICBpZiAod2lkdGgoKSAhPSB0aGF0LndpZHRoKCkpCisgICAgICAg
IGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6V2lkdGgpOworICAgIGlmICho
ZWlnaHQoKSAhPSB0aGF0LmhlaWdodCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkhlaWdodCk7CisgICAgaWYgKGFzcGVjdFJhdGlvKCkgIT0gdGhhdC5h
c3BlY3RSYXRpbygpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkFzcGVjdFJhdGlvKTsKKyAgICBpZiAoZnJhbWVSYXRlKCkgIT0gdGhhdC5mcmFtZVJhdGUo
KSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGcmFtZVJh
dGUpOworICAgIGlmIChmYWNpbmdNb2RlKCkgIT0gdGhhdC5mYWNpbmdNb2RlKCkpCisgICAgICAg
IGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmFjaW5nTW9kZSk7CisgICAg
aWYgKHZvbHVtZSgpICE9IHRoYXQudm9sdW1lKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6Vm9sdW1lKTsKKyAgICBpZiAoc2FtcGxlUmF0ZSgpICE9IHRo
YXQuc2FtcGxlUmF0ZSgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlNhbXBsZVJhdGUpOworICAgIGlmIChzYW1wbGVTaXplKCkgIT0gdGhhdC5zYW1wbGVT
aXplKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6U2Ft
cGxlU2l6ZSk7CisgICAgaWYgKGVjaG9DYW5jZWxsYXRpb24oKSAhPSB0aGF0LmVjaG9DYW5jZWxs
YXRpb24oKSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpF
Y2hvQ2FuY2VsbGF0aW9uKTsKKyAgICBpZiAoZGV2aWNlSWQoKSAhPSB0aGF0LmRldmljZUlkKCkp
CisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGV2aWNlSWQp
OworICAgIGlmIChncm91cElkKCkgIT0gdGhhdC5ncm91cElkKCkpCisgICAgICAgIGRpZmYuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6R3JvdXBJZCk7CisgICAgaWYgKGxhYmVsKCkg
IT0gdGhhdC5sYWJlbCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkxhYmVsKTsKKyAgICBpZiAoZGlzcGxheVN1cmZhY2UoKSAhPSB0aGF0LmRpc3BsYXlT
dXJmYWNlKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RGlzcGxheVN1cmZhY2UpOworICAgIGlmIChsb2dpY2FsU3VyZmFjZSgpICE9IHRoYXQubG9naWNh
bFN1cmZhY2UoKSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpMb2dpY2FsU3VyZmFjZSk7CisKKyAgICByZXR1cm4gZGlmZjsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaAppbmRleCAwMWMxNTIzYjgyMGViOTQ2MDg5MjEzMGQ5NmZk
YmJjYWQ2NTNkYjMyLi42YjAwZGQ0MWUwYzY2ZjVhOWM3ZjZkMDVmYTIwZDA1ZmNmNTA1ZTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00Myw2ICs0NCwyNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlKTsKICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpWaWRlb0ZhY2luZ01vZGUgdmlkZW9GYWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmKTsKIAor
ICAgIGVudW0gRmxhZyB7CisgICAgICAgIFdpZHRoID0gMSA8PCAwLAorICAgICAgICBIZWlnaHQg
PSAxIDw8IDEsCisgICAgICAgIEFzcGVjdFJhdGlvID0gMSA8PCAyLAorICAgICAgICBGcmFtZVJh
dGUgPSAxIDw8IDMsCisgICAgICAgIEZhY2luZ01vZGUgPSAxIDw8IDQsCisgICAgICAgIFZvbHVt
ZSA9IDEgPDwgNSwKKyAgICAgICAgU2FtcGxlUmF0ZSA9IDEgPDwgNiwKKyAgICAgICAgU2FtcGxl
U2l6ZSA9IDEgPDwgNywKKyAgICAgICAgRWNob0NhbmNlbGxhdGlvbiA9IDEgPDwgOCwKKyAgICAg
ICAgRGV2aWNlSWQgPSAxIDw8IDksCisgICAgICAgIEdyb3VwSWQgPSAxIDw8IDEwLAorICAgICAg
ICBMYWJlbCA9IDEgPDwgMTEsCisgICAgICAgIERpc3BsYXlTdXJmYWNlID0gMSA8PCAxMiwKKyAg
ICAgICAgTG9naWNhbFN1cmZhY2UgPSAxIDw8IDEzLAorICAgIH07CisKKyAgICBzdGF0aWMgY29u
c3RleHByIE9wdGlvblNldDxGbGFnPiBhbGxGbGFncygpIHsgcmV0dXJuIHsgV2lkdGgsIEhlaWdo
dCwgQXNwZWN0UmF0aW8sIEZyYW1lUmF0ZSwgRmFjaW5nTW9kZSwgVm9sdW1lLCBTYW1wbGVSYXRl
LCBTYW1wbGVTaXplLCBFY2hvQ2FuY2VsbGF0aW9uLCBEZXZpY2VJZCwgR3JvdXBJZCwgTGFiZWws
IERpc3BsYXlTdXJmYWNlLCBMb2dpY2FsU3VyZmFjZSB9OyB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBkaWZmKGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGNvbnN0OworCiAgICAgZXhwbGljaXQgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0
c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dp
ZHRoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMmQxZmFlYWQxNzlkNzA1ZjQxOThj
YzE0ZTUxYmNkODhiMDBmNmQwMy4uZjNmYzRlYTU1MWI4ZTdiMmEwYjMwMmIwODRkMjAwMWMxN2I1
YWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTEyNSwxNyArMTI1LDYgQEAgSW50U2l6
ZSBSZWFsdGltZVZpZGVvU291cmNlOjpiZXN0U3VwcG9ydGVkQ2FwdHVyZVNpemVGb3JXaWR0aEFu
ZEhlaWdodChzdGQ6Om9wdGkKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmFwcGx5U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEludFNpemUg
c3VwcG9ydGVkU2l6ZSA9IGJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKHN1cHBvcnRlZFNpemUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5
U2l6ZSglcCksIHVuYWJsZSBmaW5kIG9yIHNldCBwcmVzZXQgZm9yIHdpZHRoOiAlaSwgaGVpZ2h0
OiAlaSIsIHRoaXMsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBSZWFsdGltZVZp
ZGVvU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVS
YXRlKQogewogICAgIGlmICh3aWR0aCB8fCBoZWlnaHQpIHsKQEAgLTE2OCwxMSArMTU3LDYgQEAg
dm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUpOwog
fQogCi1ib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRl
KQotewotICAgIHJldHVybiBzdXBwb3J0c0ZyYW1lUmF0ZShyYXRlKTsKLX0KLQogYm9vbCBSZWFs
dGltZVZpZGVvU291cmNlOjpzdXBwb3J0c0ZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogewog
ICAgIGRvdWJsZSBlcHNpbG9uID0gMC4wMDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMWMyNTdm
NmRkYmE2NzU0MzU1NTAxMTBjMzAwYzAxODlkY2JlNjUxMC4uNmEyZDRhMTFmMzJmMGU2NzVkYWQy
MDI0ZDk1OWIzZmIyNzBhNjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDYsOCArNDYsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVG9Qcm9kdWNlRGF0YSgpOwogICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICB2
b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0gICAg
Ym9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIGJvb2wgYXBwbHlG
cmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0U3VwcG9ydGVkRnJhbWVSYXRl
cyhWZWN0b3I8ZG91YmxlPiYmKTsKICAgICB2b2lkIHNldFN1cHBvcnRlZENhcHR1cmVTaXplcyhj
b25zdCBWZWN0b3I8SW50U2l6ZT4mJiBzaXplcykgeyBtX3N1cHBvcnRlZENhcHR1cmVTaXplcyA9
IHNpemVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCmluZGV4IDBkNTdiMjNmNDUyODJmYmIyN2FiYTk3YmI4OTk0ZWVhMDUzMGRmOGIu
LjdlMjE2NzM1ZDhjMTM3YzljNjVjMGIzMzNhNDE1MDExOTkyNTk5NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xNzIsOSAr
MTcyLDEyIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzCiAgICAgcmV0dXJuIG1fY2FwYWJpbGl0
aWVzLnZhbHVlKCk7CiB9CiAKLWJvb2wgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjphcHBs
eVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCit2b2lkIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIG1fY2FwdHVyZXItPnNldFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlUmF0ZSkpCisgICAgICAgIG1fY2FwdHVyZXIt
PnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSgpKTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaApp
bmRleCAzZmE0YTljMmUzMjI1MjI3YTYyZTBjMzEyNjZmMjRiZWQ4ZTI2MGEzLi45ODVhMmU0MmQw
ZjYwYTgwNjkwZGM3MWUyZDU4ZjNmNzRmMDBlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC01MCw5ICs1MCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
PiBtX2N1cnJlbnRTZXR0aW5nczsKIAogcHJpdmF0ZToKLSAgICBib29sIGFwcGx5U2FtcGxlUmF0
ZShpbnQpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4gbV9jYXB0dXJlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA1YTlkZmI1MTdmYTI0
ODdlMWI5MDg0ZGNiNGIyMGUwOGFiNTRkZGIwLi40MDFjNjAzMDJiOGI0Yjg1YmMyMTI3NWJjM2Yx
YWExNDNiNmNlYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlLmNwcApAQCAtMTA3LDE4ICsxMDcsMTQgQEAgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlOjp+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKIH0KIAotYm9vbCBH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZShjb25zdCBJbnRTaXplICZzaXpl
KQordm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9w
dGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewot
ICAgIG1fY2FwdHVyZXItPnNldFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9
KSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CisgICAg
aWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6
RnJhbWVSYXRlKSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgp
KTsKIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIGZyYW1lcmF0ZSkKLXsKLSAgICBtX2NhcHR1cmVy
LT5zZXRGcmFtZVJhdGUoZnJhbWVyYXRlKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMzc5YmE3
ZTBmZDZlNzY3YjNjYjcyOGQ4ZDU4ZGRlMGJjZmMyZWYxOC4uMTYwOWIwMGM0OWI2YmM4MWM4M2I3
YThjNDNmODRmZWNmNDc4Y2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtMzcsNyArMzcsNiBAQCBwdWJsaWM6CiAgICAgR3N0RWxl
bWVudCogcGlwZWxpbmUoKSB7IHJldHVybiBtX2NhcHR1cmVyLT5waXBlbGluZSgpOyB9CiAgICAg
R1N0cmVhbWVyQ2FwdHVyZXIqIGNhcHR1cmVyKCkgeyByZXR1cm4gbV9jYXB0dXJlci5nZXQoKTsg
fQogCi0KIHByb3RlY3RlZDoKICAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3Qg
U3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBnY2hhciAqIHNvdXJj
ZV9mYWN0b3J5KTsKICAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2Fw
dHVyZURldmljZSk7CkBAIC01Miw5ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEdzdEZs
b3dSZXR1cm4gbmV3U2FtcGxlQ2FsbGJhY2soR3N0RWxlbWVudCosIEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZSopOwogCiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFs
OwotICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKLSAgICBib29sIGFwcGx5
QXNwZWN0UmF0aW8oZG91YmxlKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXR0
aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
PikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4g
bV9jYXB0dXJlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDc0OGU0ODAw
YzU1MWY4OTUyN2JjYTYwZWI5NjM3YzQ0OTVmNGU3NjguLjkxMzgzNjA5OGM2ZTE2MTQxMDY5MDdi
MWY3NWY3NDNiZjE0OGExYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Mywx
MyArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBh
YmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYXBwbHlTaXpl
QW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+
IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2l6
ZShjb25zdCBJbnRTaXplJikgZmluYWw7Ci0gICAgYm9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUp
IGZpbmFsOworICAgIGJvb2wgc2V0RnJhbWVSYXRlKGRvdWJsZSk7CiAgICAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
c3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8
aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+KSBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CisgICAgdm9p
ZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPikgZmluYWw7CiAgICAgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25O
b3RpZmllciYpIGZpbmFsOwogICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAg
ICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0KaW5kZXggMTdlMDU1NmQ5YzY3ODEwMjkzZWUyODlkMWU5ZjAyYTdlY2NhMjA0Zi4u
OTE2MTQxMjUzNTFmZjg1ZmY1Mzc2OWI3YTYwMTA0MDlhMTI2ZTRhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5tbQpAQCAtMjcwLDEwICsyNzAsMTAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbigpCiAgICAgICAgIFttX3Nlc3Npb24gY29tbWl0
Q29uZmlndXJhdGlvbl07CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdz
RGlkQ2hhbmdlKCkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQog
ewogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CkBAIC0z
NTcsMTcgKzM1Nyw2IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFW
VmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zCiAgICAgcmV0dXJuICptX2Nh
cGFiaWxpdGllczsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgTlNTdHJpbmcgKnByZXNldCA9IGJlc3RTZXNzaW9u
UHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgaWYgKCFwcmVzZXQgfHwgIVtzZXNzaW9uKCkgY2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRd
KSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUo
JXApLCB1bmFibGUgZmluZCBvciBzZXQgcHJlc2V0IGZvciB3aWR0aDogJWksIGhlaWdodDogJWki
LCB0aGlzLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNldFByZXNldChwcmVzZXQpOwotfQotCiBJbnRTaXpl
IEFWVmlkZW9DYXB0dXJlU291cmNlOjpzaXplRm9yUHJlc2V0KE5TU3RyaW5nKiBwcmVzZXQpCiB7
CiAgICAgaWYgKCFwcmVzZXQpCkBAIC00MDUsMTQgKzM5NCwxNCBAQCBib29sIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpzZXRQcmVzZXQoTlNTdHJpbmcgKnByZXNldCkKICAgICAgICAgW21fdmlkZW9P
dXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnldOwogI2VuZGlmCiAgICAg
fSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0coTWVkaWEsICJB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplKCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25m
aWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3Ry
aW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIExPRyhNZWRp
YSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQoJXApLCBleGNlcHRpb24gdGhyb3du
IGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVU
RjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFWVmlkZW9D
YXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKK2Jvb2wgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICB1c2luZyBuYW1l
c3BhY2UgUEFMOwogICAgIGRvdWJsZSBlcHNpbG9uID0gMC4wMDAwMTsKQEAgLTQyNSw3ICs0MTQs
NyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0
ZSkKICAgICB9CiAKICAgICBpZiAoIWJlc3RGcmFtZVJhdGVSYW5nZSB8fCAhaXNGcmFtZVJhdGVT
dXBwb3J0ZWQocmF0ZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwgZnJhbWUgcmF0ZSAlZiBub3Qgc3VwcG9ydGVkIGJ5IHZp
ZGVvIGRldmljZSIsIHRoaXMsIHJhdGUpOworICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVwKSwgZnJhbWUgcmF0ZSAlZiBub3Qgc3VwcG9ydGVk
IGJ5IHZpZGVvIGRldmljZSIsIHRoaXMsIHJhdGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC00NDIsMTYgKzQzMSwxNiBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjph
cHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICAgICAgICAgIFtkZXZpY2UoKSB1bmxvY2tG
b3JDb25maWd1cmF0aW9uXTsKICAgICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFw
cGx5RnJhbWVSYXRlKCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBkZXZpY2U6IDwl
cz4gJXMiLCB0aGlzLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24g
cmVhc29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXRGcmFtZVJhdGUoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRl
dmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4
Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmIChlcnJvcikgewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBmYWlsZWQgdG8gbG9jayB2aWRlbyBkZXZpY2Ug
Zm9yIGNvbmZpZ3VyYXRpb246ICVzIiwgdGhpcywgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0gVVRGOFN0cmluZ10pOworICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJj
ZTo6c2V0RnJhbWVSYXRlKCVwKSwgZmFpbGVkIHRvIGxvY2sgdmlkZW8gZGV2aWNlIGZvciBjb25m
aWd1cmF0aW9uOiAlcyIsIHRoaXMsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhT
dHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwg
IkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZSglcCkgLSBzZXQgZnJhbWUgcmF0
ZSByYW5nZSB0byAlZiIsIHRoaXMsIHJhdGUpOworICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0
dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApIC0gc2V0IGZyYW1lIHJhdGUgcmFuZ2UgdG8gJWYi
LCB0aGlzLCByYXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDYxLDcgKzQ1MCw3IEBA
IHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6CiAgICAgICAgIHNldFByZXNldChiZXN0U2Vzc2lvblBy
ZXNldEZvclZpZGVvRGltZW5zaW9ucyhXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQpKSk7
CiAKICAgICBpZiAoZnJhbWVSYXRlKQotICAgICAgICBhcHBseUZyYW1lUmF0ZShmcmFtZVJhdGUu
dmFsdWUoKSk7CisgICAgICAgIHNldEZyYW1lUmF0ZShmcmFtZVJhdGUudmFsdWUoKSk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgaW50IHNlbnNvck9yaWVudGF0aW9uKEFWQ2FwdHVyZVZpZGVvT3JpZW50
YXRpb24gdmlkZW9PcmllbnRhdGlvbikKQEAgLTYyNywxMCArNjE2LDE1IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OnByb2Nlc3NOZXdGcmFtZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJS
ZWY+IHNhbXBsZUJ1CiAgICAgICAgIHN0ZDo6c3dhcChkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNp
b25zLmhlaWdodCk7CiAKICAgICBpZiAoZGltZW5zaW9ucy53aWR0aCAhPSBtX3dpZHRoIHx8IGRp
bWVuc2lvbnMuaGVpZ2h0ICE9IG1faGVpZ2h0KSB7CisgICAgICAgIE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IGNoYW5nZWQ7CisgICAgICAgIGlmIChtX3dpZHRo
ICE9IGRpbWVuc2lvbnMud2lkdGgpCisgICAgICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICAgICAgaWYgKG1faGVpZ2h0ICE9
IGRpbWVuc2lvbnMuaGVpZ2h0KQorICAgICAgICAgICAgY2hhbmdlZC5hZGQoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQpOworCiAgICAgICAgIG1fd2lkdGggPSBkaW1l
bnNpb25zLndpZHRoOwogICAgICAgICBtX2hlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0OwotCi0g
ICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNo
YW5nZWQpOwogICAgIH0KIAogICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZG
T2JqQzo6Y3JlYXRlKG1fYnVmZmVyLmdldCgpLCBtX3NhbXBsZVJvdGF0aW9uLCBbY29ubmVjdGlv
biBpc1ZpZGVvTWlycm9yZWRdKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggNmM3NDQwN2UxNWZkYjE2MTgxZmZhNTU3YzMxZTYyMWMxMmYyMmEwMi4uN2Q3MjdjY2E2
M2I1ZmE4MTY5YzcwMTUzOTJjZjM0YjU3YzVmNTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04NzYsMzkgKzg3NiwxOSBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKIH0KIAotdm9pZCBDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3Vy
Y2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxs
b3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7Ci19Ci0K
LWJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVS
YXRlKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkZXNjcmliZSBzYW1w
bGUgcmF0ZSBhcyBhIGRpc2NyZWV0IHJhbmdlIGNvbnN0cmFpbnQgc28gdGhhdCB3ZSBvbmx5IGVu
dGVyIGhlcmUgd2l0aCB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZC4KLSAgICBzd2l0Y2ggKHNh
bXBsZVJhdGUpIHsKLSAgICBjYXNlIDgwMDA6Ci0gICAgY2FzZSAxNjAwMDoKLSAgICBjYXNlIDMy
MDAwOgotICAgIGNhc2UgNDQxMDA6Ci0gICAgY2FzZSA0ODAwMDoKLSAgICBjYXNlIDk2MDAwOgot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6
RWNob0NhbmNlbGxhdGlvbikpIHsKKyAgICAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xl
dG9uKCkuc2V0RW5hYmxlRWNob0NhbmNlbGxhdGlvbihlY2hvQ2FuY2VsbGF0aW9uKCkpOworICAg
ICAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOworICAgIH0KKyAgICBpZiAoc2V0dGluZ3Mu
Y29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKSkg
eworICAgICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zZXRTYW1wbGVSYXRl
KHNhbXBsZVJhdGUoKSk7CisgICAgICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CiAgICAg
fQogCi0gICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc2V0U2FtcGxlUmF0ZShz
YW1wbGVSYXRlKTsKLQotICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hvQ2FuY2Vs
bGF0aW9uKGJvb2wgZW5hYmxlRWNob0NhbmNlbGxhdGlvbikKLXsKLSAgICBDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzaW5nbGV0b24oKS5zZXRFbmFibGVFY2hvQ2FuY2VsbGF0aW9uKGVuYWJsZUVjaG9D
YW5jZWxsYXRpb24pOwotCi0gICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBSZWFs
dGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQg
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggNzkyZWFmMDdlMGNlZmI0Nzg1ZTBmNzZmMjUy
NTY5ZjYzNjYxMTQwZS4uYzQwZDNjNmMzNGQ2MGNmNGJhOWNjZWRiZjAyMWQzZDU5M2QyZGRiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDEzICs4NCwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpIGZpbmFsOwogCi0gICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwot
ICAgIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIGZpbmFsOworICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPGludD4+IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB7IHsgODAwMCwgMTYwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDk2MDAwIH0gfTsgfQog
CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVz
KCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBz
ZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBmaW5h
bDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAogICAgIGJvb2wgaW50ZXJydXB0ZWQoKSBjb25z
dCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCmluZGV4
IGU3NGNiZWU3OTJlZmU1ZGE5NDI0MTdkN2Y0ZTI5NWM3ZWU4NTIwNzkuLjNlY2Q1Y2EyY2RlZDQx
NzVmNWQ0N2ZhMDdlOGM4OTkwOTE2YTIzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtOTgsMTAgKzk4LDE3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3MoKSBjb25zdAogICAg
IHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwogfQogCi12b2lkIERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5z
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3RpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVS
YXRlKCkpOworCisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnOjpIZWlnaHQgfSkpCisgICAgICAgIG1fYnVmZmVyQXR0cmlidXRlcyA9IG51bGxwdHI7CisK
ICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKLSAgICBSZWFsdGltZU1lZGlh
U291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB2b2lkIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCkBAIC0xMTEsNyArMTE4LDcgQEAgdm9pZCBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogI2VuZGlmCiAK
ICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIG1fdGltZXIuc3Rh
cnRSZXBlYXRpbmcoMV9tcyAqIGxyb3VuZCgxMDAwIC8gZnJhbWVSYXRlKCkpKTsKKyAgICBtX3Rp
bWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKIH0KIAogdm9pZCBEaXNwbGF5
Q2FwdHVyZVNvdXJjZUNvY29hOjpzdG9wUHJvZHVjaW5nRGF0YSgpCkBAIC0xMjksMjMgKzEzNiw2
IEBAIFNlY29uZHMgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6ZWxhcHNlZFRpbWUoKQogICAg
IHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRp
bWUpOwogfQogCi1ib29sIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmFwcGx5U2l6ZShjb25z
dCBJbnRTaXplJiBuZXdTaXplKQotewotICAgIGlmIChzaXplKCkgPT0gbmV3U2l6ZSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtX2J1ZmZlckF0dHJpYnV0ZXMgPSBudWxscHRyOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmFwcGx5
RnJhbWVSYXRlKGRvdWJsZSByYXRlKQotewotICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCi0g
ICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9tcyAqIGxyb3VuZCgxMDAwIC8gcmF0ZSkp
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6ZW1pdEZyYW1lKCkKIHsKICAgICBpZiAobXV0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5oCmluZGV4IDc4NzdlMGJhYzQ5MGNiMGRmMzJkZTE5MWVjODViNTk1NTNl
ZjJhMTcuLjQ4NGMxYjBhNzI3ODM5NmNkZTZlMTNlNGE5OTFlNzJlNTQyZTI5NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCwyMSArNTQsMjAgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKIAogICAgIFNlY29uZHMg
ZWxhcHNlZFRpbWUoKTsKLSAgICBib29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogCiAgICAgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBzYW1wbGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQ
aXhlbEJ1ZmZlclJlZik7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbUlPU3VyZmFjZShJT1N1cmZhY2VSZWYpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc+KSBvdmVycmlkZTsKKwogcHJpdmF0ZToKIAogICAgIGJvb2wg
aXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAg
IHZvaWQgZW1pdEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
LmgKaW5kZXggNmQxNGIwMzUxMTBiM2NlYzY5M2RkZjA3MTkwNTNkYWY4ZTMzYjQwYy4uOTlkNzhl
ZWM3YzcwMmVjZDE2ZWNmZGEwYjg0ZDBjNTZiOWQ0ZjNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsOCArNTAsOCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTsKICAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYyhjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAg
Ym9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2FtcGxlU2l6
ZShpbnQpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5n
ZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7Cisg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHsgeyA0NDEwMCwgNDgwMDAgfSB9OyB9CiAKICAgICB2b2lkIGVtaXRT
YW1wbGVCdWZmZXJzKHVpbnQzMl90KTsKICAgICB2b2lkIHJlbmRlcihTZWNvbmRzKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCA1YWJiOGYyOGIy
NWQ3YTMyNzI4N2MxNjllMzI1YTg1OWNlNDY2M2ZiLi4wYzhhNGJkZTIwNWM5YjliMmFiMmE4ODg5
NzZiYzk3NDljMzM3MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE1OCwzMCArMTU4LDI3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJl
bmRlcihTZWNvbmRzIGRlbHRhKQogICAgIH0KIH0KIAotYm9vbCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQordm9pZCBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgaWYgKHNhbXBsZVJhdGUg
PCA0NDEwMCB8fCBzYW1wbGVSYXRlID4gNDgwMDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpTYW1wbGVSYXRlKSkgeworICAgICAgICBtX2Zvcm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBudWxscHRyOwogCi0gICAgaWYgKHNhbXBsZVJh
dGUgPT0gdGhpcy0+c2FtcGxlUmF0ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
YXV0byByYXRlID0gc2FtcGxlUmF0ZSgpOworICAgICAgICBzaXplX3Qgc2FtcGxlQ291bnQgPSAy
ICogcmF0ZTsKIAotICAgIG1fZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOwotICAgIG1fYXVk
aW9CdWZmZXJMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgbV9iaXBCb3BCdWZmZXIuZ3JvdyhzYW1w
bGVDb3VudCk7CisgICAgICAgIG1fYmlwQm9wQnVmZmVyLmZpbGwoMCk7CiAKLSAgICBzaXplX3Qg
c2FtcGxlQ291bnQgPSAyICogc2FtcGxlUmF0ZTsKKyAgICAgICAgc2l6ZV90IGJpcEJvcFNhbXBs
ZUNvdW50ID0gY2VpbChCaXBCb3BEdXJhdGlvbiAqIHJhdGUpOworICAgICAgICBzaXplX3QgYmlw
U3RhcnQgPSAwOworICAgICAgICBzaXplX3QgYm9wU3RhcnQgPSByYXRlOwogCi0gICAgbV9iaXBC
b3BCdWZmZXIuZ3JvdyhzYW1wbGVDb3VudCk7Ci0gICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsK
LQotICAgIHNpemVfdCBiaXBCb3BTYW1wbGVDb3VudCA9IGNlaWwoQmlwQm9wRHVyYXRpb24gKiBz
YW1wbGVSYXRlKTsKLSAgICBzaXplX3QgYmlwU3RhcnQgPSAwOwotICAgIHNpemVfdCBib3BTdGFy
dCA9IHNhbXBsZVJhdGU7Ci0KLSAgICBhZGRIdW0oQmlwQm9wVm9sdW1lLCBCaXBGcmVxdWVuY3ks
IHNhbXBsZVJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJpcFN0YXJ0LCBiaXBCb3BT
YW1wbGVDb3VudCk7Ci0gICAgYWRkSHVtKEJpcEJvcFZvbHVtZSwgQm9wRnJlcXVlbmN5LCBzYW1w
bGVSYXRlLCAwLCBtX2JpcEJvcEJ1ZmZlci5kYXRhKCkgKyBib3BTdGFydCwgYmlwQm9wU2FtcGxl
Q291bnQpOworICAgICAgICBhZGRIdW0oQmlwQm9wVm9sdW1lLCBCaXBGcmVxdWVuY3ksIHJhdGUs
IDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJpcFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7
CisgICAgICAgIGFkZEh1bShCaXBCb3BWb2x1bWUsIEJvcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgbV9i
aXBCb3BCdWZmZXIuZGF0YSgpICsgYm9wU3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICB9
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0dGlu
Z3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCmluZGV4IGY1ODM2NzEzMzdkZjA3YWE2
NGNhODgzY2JmZjY0ZTBiYWEyN2U5YmUuLjczMTI5ZTFiZTdjYjZkY2MxNjZmZDU1NmUwMGZkMTk1
ZWM0NDM3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTYW1wbGVCdWZmZXIoKSBmaW5hbDsKLSAgICBib29s
IGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENo
YW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7
CiAKICAgICB2b2lkIG9yaWVudGF0aW9uQ2hhbmdlZChpbnQgb3JpZW50YXRpb24pIGZpbmFsOwog
ICAgIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCA0Y2NlZTE5MTI2
MDc0Y2MwODA3MzEzODBhMjExNzIzMGU5M2MyMGRkLi4xN2IzNWJhYTE1N2Q1ZjQ0NmJiOTAzOTdj
YzMzNjE1MTA5MmZlOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tCkBAIC0xNTQsMTMgKzE1NCwxMSBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Ojp1cGRhdGVTYW1wbGVCdWZmZXIoKQogICAgIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVy
cyhNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIG1fZGV2aWNl
T3JpZW50YXRpb24pKTsKIH0KIAotYm9vbCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6YXBw
bHlTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCit2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAgICBpZiAoIU1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjphcHBseVNpemUobmV3U2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1f
YnVmZmVyUG9vbCA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHNldHRpbmdz
LmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCisgICAgICAgIG1f
YnVmZmVyUG9vbCA9IG51bGxwdHI7CisgICAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRp
bmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYzo6b3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCA0YjQyNWY5YmE2MmIw
ZjNmMDkzYTkwNmZkNGIyYWU0OWMyYTQzYzNlLi5iYmFjOGRhNWU0MzljOGEyMGEyOGRlY2Y1Nzdk
ZWNkNjYxOGU3YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE3Myw5ICsxNzMsMTUgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYTo6cHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUKIHsK
ICAgICBtX2J1ZmZlciA9IHNhbXBsZTsKICAgICBpZiAod2lkdGggIT0gbV9jdXJyZW50U2V0dGlu
Z3Mud2lkdGgoKSB8fCBoZWlnaHQgIT0gbV9jdXJyZW50U2V0dGluZ3MuaGVpZ2h0KCkpIHsKKyAg
ICAgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdl
ZDsKKyAgICAgICAgaWYgKHdpZHRoICE9IG1fY3VycmVudFNldHRpbmdzLndpZHRoKCkpCisgICAg
ICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6Oldp
ZHRoKTsKKyAgICAgICAgaWYgKGhlaWdodCAhPSBtX2N1cnJlbnRTZXR0aW5ncy5oZWlnaHQoKSkK
KyAgICAgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zzo6SGVpZ2h0KTsKKwogICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCh3aWR0aCk7
CiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldEhlaWdodChoZWlnaHQpOwotICAgICAgICBz
ZXR0aW5nc0RpZENoYW5nZSgpOworICAgICAgICBzZXR0aW5nc0RpZENoYW5nZShjaGFuZ2VkKTsK
ICAgICB9CiAKICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZUFWRk9iakM6OmNy
ZWF0ZShzYW1wbGUsIHJvdGF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYy5oCmluZGV4IGQyNmEyOTRlMzZlNzllOGEzYTExOTUwZTJhZjE4ODdjODEyNzQ3
OWYuLjBiMWYzZWY5ZjJmOGQ5NGE5YTFlYjg4NmI4NTQwZTA1OTc2YTM4YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDggKzU5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UHJvZHVj
aW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAg
ICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7Ci0gICAgYm9vbCBhcHBseUZy
YW1lUmF0ZShkb3VibGUpIGZpbmFsOworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9u
U2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwogICAgIHZvaWQg
Y29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsOwogCiAgICAgYm9vbCBjcmVhdGVEaXNwbGF5U3Ry
ZWFtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KaW5k
ZXggYjE3ZTdjMmI0NWUwZDkwNTIzYTJjNDIyYzZlOGNjZTc3NzFiYjJkOC4uZTZlNDQ4YzNlY2Fh
ZjA1MDgzNDgwOTMwZDVjZGM0MDMxMGU5OGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTMsMjEgKzI1MywxMiBAQCB2b2lkIFNjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjpzdGFydERpc3BsYXlTdHJlYW0oKQogICAgIG1faXNSdW5uaW5n
ID0gdHJ1ZTsKIH0KIAotYm9vbCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6YXBwbHlT
aXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCit2b2lkIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAgICBpZiAoIURpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2E6OmFwcGx5U2l6ZShuZXdTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
bV9kaXNwbGF5U3RyZWFtID0gbnVsbHB0cjsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBT
Y3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIHJhdGUp
Ci17Ci0gICAgaWYgKGZyYW1lUmF0ZSgpICE9IHJhdGUpCisgICAgaWYgKHNldHRpbmdzLmNvbnRh
aW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQsIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlIH0pKQogICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBu
dWxscHRyOwogCi0gICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OmFwcGx5RnJh
bWVSYXRlKHJhdGUpOworICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0
aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCBmM2M5
MzdmZjhhNWJiZDcyZjVmOTgzOWFkN2Q5NmVjMjQ1MjY3MjVkLi45NjU3MjcwODJjYjMyMzk4OTU5
NmI4MWFjNmExM2E2ZDkxMGYxMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtMTM0LDEwICsxMzQs
MTAgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmNhcGFiaWxpdGllcygpIGMKICAgICByZXR1cm4gbV9jYXBhYmlsaXRpZXMu
dmFsdWUoKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UoKQordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7
CiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpz
ZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNDQzZGQwNzNmMGI0
M2JjNTYyYjRhN2MxYTAzOWQzMjA2NTE1NjM5Ny4uNzljNjY3OGFkMDE1MzExNmM3YWI3MTc3NDQ5
YmE2ODk1MzMyYjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNTQsMTggKzU0LDEzIEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyKFNlY29uZHMpIHsgfQorICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9u
U2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOwogCiAgICAg
c3RhdGljIFNlY29uZHMgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiA2MF9tczsgfQogCiBwcml2
YXRlOgotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgYm9vbCBhcHBseVNhbXBsZVNpemUoaW50KSBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
Y2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRD
aGFuZ2UoKSBmaW5hbDsKIAogICAgIHZvaWQgdGljaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4
IDFlZWM0NDFkNzhlY2FkMTQ1ZDk3ZDAxZjc0OGVjMDgyZTFiMjZlYTMuLjJhZWFmMmNhZmUxNzM3
MjZlNDRkZTYzNzdmMTFmZWExOWJjNWU3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xOTIsMTAg
KzE5MiwxNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRp
bmdzLnZhbHVlKCk7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdz
RGlkQ2hhbmdlKCkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hh
bmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdz
KQogewogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1l
VmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRh
aW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpIHsKKyAgICAgICAgbV9iYXNl
Rm9udFNpemUgPSBzaXplKCkuaGVpZ2h0KCkgKiAuMDg7CisgICAgICAgIG1fYmlwQm9wRm9udFNp
emUgPSBtX2Jhc2VGb250U2l6ZSAqIDIuNTsKKyAgICAgICAgbV9zdGF0c0ZvbnRTaXplID0gbV9i
YXNlRm9udFNpemUgKiAuNTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7CisgICAg
fQorCisgICAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3Mp
OwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydENhcHR1cmVUaW1lcigp
CkBAIC0yMjUsMTkgKzIzMiw2IEBAIFNlY29uZHMgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmVs
YXBzZWRUaW1lKCkKICAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChNb25vdG9uaWNUaW1lOjpu
b3coKSAtIG1fc3RhcnRUaW1lKTsKIH0KIAotYm9vbCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
YXBwbHlTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgaWYgKCFSZWFsdGltZVZpZGVv
U291cmNlOjphcHBseVNpemUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1f
YmFzZUZvbnRTaXplID0gc2l6ZS5oZWlnaHQoKSAqIC4wODsKLSAgICBtX2JpcEJvcEZvbnRTaXpl
ID0gbV9iYXNlRm9udFNpemUgKiAyLjU7Ci0gICAgbV9zdGF0c0ZvbnRTaXplID0gbV9iYXNlRm9u
dFNpemUgKiAuNTsKLSAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0cjsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3QW5pbWF0aW9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBmbG9hdCByYWRpdXMgPSBzaXplKCkud2lk
dGgoKSAqIC4wOTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCA2YWM3MzU4ZTc0YzhlMzNhMDAxYjI4ZTA2ZjQ1
MjViNzM0MThjNGY2Li45MWY2NTZhZmMxNzcxZGIyZjZmZTZjNjg4M2YyZTEyNDAwN2E5MTYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCkBAIC02MCwxMiArNjAsMTEgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0OwogCiAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwot
ICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc+KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CkBAIC03NCw5
ICs3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmKTsK
ICAgICB2b2lkIGRyYXdCb3hlcyhHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIGJvb2wgYXBwbHlG
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJs
ZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGdlbmVyYXRlRnJhbWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDgyNDBkNTBhNTI4MGE0NGZjNzdlZjNjZGYwY2U4
MmFkN2FlMjcwYzIuLjI1Y2JmYzNjMTZiNDEyMWVlZmMzNzE5NzE1NGYyY2NkNDc5YmRjMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC03NCw4ICs3NCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiYgc2V0dGluZ3MpCiAgICAgeworICAgICAgICBhdXRvIGNoYW5nZWQgPSBtX3NldHRp
bmdzLmRpZmYoc2V0dGluZ3MpOwogICAgICAgICBtX3NldHRpbmdzID0gV1RGTW92ZShzZXR0aW5n
cyk7Ci0gICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgICAgIHNldHRpbmdzRGlkQ2hh
bmdlKGNoYW5nZWQpOwogICAgIH0KIAogICAgIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9uOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348888</attachid>
            <date>2018-09-04 20:14:25 -0700</date>
            <delta_ts>2018-09-05 07:52:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189284-20180904201423.patch</filename>
            <type>text/plain</type>
            <size>67494</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE4YjZjMTRhZDlhNDFl
ZmIyY2QzM2Q0Yjk0MjVlZWYyNGMzYzVhYi4uYjZkOTg3ZjlmZTVjZjhiN2M5YzdlZDZmNDhjNTk4
ZDE4ZjM1OGYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOS0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJl
YW1dIFNpbXBsaWZ5IGxvZ2ljIHdoZW4gY2hhbmdpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZSBzZXR0
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
Mjg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNzk0OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWxsICJhcHBseTxzZXR0aW5n
PiIgbWV0aG9kcyBmcm9tIFJlYWx0aW1lTWVkaWFTb3VyY2UgYW5kIGRlcml2ZWQgY2xhc3Nlcywg
YW5kCisgICAgICAgIGFkZCBhIGJpdGZpZWxkIHRvIHNldHRpbmdzRGlkQ2hhbmdlIHNvIGNsYXNz
ZXMgY2FuIGRvIHNldHRpbmctc3BlY2lmaWMgc2V0dXAgYW5kCisgICAgICAgIGNvbmZpZ3VyYXRp
b24gYnkgb3ZlcnJpZGluZyBzZXR0aW5nc0RpZENoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpmaXRuZXNzRGlzdGFuY2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnZhbHVlRm9yRGlz
Y3JldGVDYXBhYmlsaXR5VmFsdWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NE
aXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseU51bWVyaWNDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0V2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmRpZmYgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjphbGxGbGFncyk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlGcmFtZVJhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0UHJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFW
VmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZTo6YXBwbHlFY2hvQ2FuY2VsbGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRp
bmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Q2FwdHVy
ZVNvdXJjZUNvY29hOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphcHBseVNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpz
ZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYzo6YXBwbHlTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6cHJvY2Vzc05ld1NhbXBs
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0
dXJlU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjphcHBseVNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmFwcGx5RnJh
bWVSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaDoKKwogMjAxOC0wOS0wMyAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBTeXN0ZW1QcmV2aWV3IGNvZGUgZnJvbSBXZWJL
aXRBZGRpdGlvbnMgdG8gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM2YWVlNDhkOTI0NjI0ODJlNzkwNzBi
OTZlNWU5YTgxYTI2YmJhN2YuLjk4OTJhZjYzZDgwNmMyYTM4MmU3ZWNiZmFiMDQwZTFlYjhlZjA2
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDQgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTaW1wbGlm
eSBsb2dpYyB3aGVuIGNoYW5naW5nIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2V0dGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI4NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDQxMTc5NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNv
dXJjZTo6c2V0U2V0dGluZ3MpOgorCiAyMDE4LTA5LTAzICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFN5c3RlbVByZXZpZXcgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucyB0byBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
aW5kZXggMjRiODE2ZDJmMGY4ODYzNTgxMWQ2M2M2YzM1Yjc5ZWRjNzk4N2I2NS4uY2RkMDRiOTAz
YzdiZjI2Y2ZlODlkNjg3OTA3NWIzNDNkNjQwZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjay5jcHAKQEAgLTExNCwxMCArMTE0LDE2IEBAIHZvaWQgQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52
YXMpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwog
CisgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdl
ZDsKKyAgICBpZiAobV9jYW52YXMtPndpZHRoKCkgIT0gbV9zZXR0aW5ncy53aWR0aCgpKQorICAg
ICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRo
KTsKKyAgICBpZiAobV9jYW52YXMtPmhlaWdodCgpICE9IG1fc2V0dGluZ3MuaGVpZ2h0KCkpCisg
ICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKKwogICAgIG1fc2V0dGluZ3Muc2V0V2lkdGgobV9jYW52YXMtPndpZHRoKCkpOwogICAg
IG1fc2V0dGluZ3Muc2V0SGVpZ2h0KG1fY2FudmFzLT5oZWlnaHQoKSk7CiAKLSAgICBzZXR0aW5n
c0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lk
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2Fu
dmFzQmFzZSYgY2FudmFzLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5oCmluZGV4IDYzNWI0YjFjOGE2YzYwN2VkMjg1MWNmMjBmYzRhMGYzZTQwYzQw
YWMuLmIwMDZhZjkzYmY0ZDExMjUzZmY3YzE2ZDIzNzZjMGFlMWMzNGM0YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKICAgICAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRp
ZXMoKTsgfQogICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgICAgICBib29sIGFw
cGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAg
IHZvaWQgY2FwdHVyZUNhbnZhcygpOwogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmly
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhQ29uc3RyYWludHMuaAppbmRleCA2NWU5NmFjYTlkYjE3MmRkMjcyOGIzYzVmMTU5MTY3ZGYz
M2MyYjZlLi4zMGVjNDFhNjNiODg4ZDE1YzAzNDVhOTIzMzMwODA0NWQ5MTJhNWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50cy5oCkBAIC0xOTMsNiArMTkzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjphYnMoaWRlYWwgLSBtX2lkZWFsLnZhbHVlKCkpKSAvIHN0ZDo6
bWF4KHN0ZDo6YWJzKGlkZWFsKSwgc3RkOjphYnMobV9pZGVhbC52YWx1ZSgpKSk7CiAgICAgfQog
CisgICAgZG91YmxlIGZpdG5lc3NEaXN0YW5jZShjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlz
Y3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgZG91YmxlIG1pbkRp
c3RhbmNlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworCisgICAg
ICAgIGZvciAoYXV0byYgdmFsdWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAg
ICAgICAgIGF1dG8gZGlzdGFuY2UgPSBmaXRuZXNzRGlzdGFuY2UodmFsdWUsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKQorICAgICAgICAgICAgICAgIG1p
bkRpc3RhbmNlID0gZGlzdGFuY2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWluRGlz
dGFuY2U7CisgICAgfQorCiAgICAgYm9vbCB2YWxpZEZvclJhbmdlKFZhbHVlVHlwZSByYW5nZU1p
biwgVmFsdWVUeXBlIHJhbmdlTWF4KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRW1wdHko
KSkKQEAgLTI3Nyw2ICsyOTAsNDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWU7CiAg
ICAgfQogCisgICAgVmFsdWVUeXBlIHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZh
bHVlVHlwZSBjdXJyZW50LCBjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmls
aXR5VmFsdWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgVmFsdWVUeXBlIHZhbHVlIHsgMCB9Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWF4OworCisgICAgICAgIGlmIChtX2V4YWN0KSB7CisgICAgICAgICAg
ICBBU1NFUlQoZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzLmNvbnRhaW5zKG1fZXhhY3QudmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuIG1fZXhhY3QudmFsdWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX21pbikgeworICAgICAgICAgICAgYXV0byBpbmRleCA9IGRpc2NyZXRlQ2Fw
YWJpbGl0eVZhbHVlcy5maW5kTWF0Y2hpbmcoWyZdKFZhbHVlVHlwZSB2YWx1ZSkgeyByZXR1cm4g
bV9taW4udmFsdWUoKSA+PSB2YWx1ZTsgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBtaW4gPSB2YWx1ZSA9IGRpc2NyZXRlQ2FwYWJpbGl0
eVZhbHVlc1tpbmRleF07CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpZGVh
bCwgZG9uJ3QgY2hhbmdlIGlmIG1pbmltdW0gaXMgc21hbGxlciB0aGFuIGN1cnJlbnQuCisgICAg
ICAgICAgICAgICAgaWYgKCFtX2lkZWFsICYmIHZhbHVlIDwgY3VycmVudCkKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBjdXJyZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG1fbWF4ICYmIG1fbWF4LnZhbHVlKCkgPj0gZGlzY3JldGVDYXBhYmlsaXR5VmFs
dWVzWzBdKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRpc2NyZXRlVmFsdWUgOiBkaXNjcmV0
ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9tYXgudmFsdWUoKSA8
PSBkaXNjcmV0ZVZhbHVlKQorICAgICAgICAgICAgICAgICAgICBtYXggPSB2YWx1ZSA9IGRpc2Ny
ZXRlVmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pZGVh
bCAmJiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMuY29udGFpbnMobV9pZGVhbC52YWx1ZSgpKSkg
eworICAgICAgICAgICAgdmFsdWUgPSBtX2lkZWFsLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAo
bWF4KQorICAgICAgICAgICAgICAgIHZhbHVlID0gc3RkOjptaW4obWF4LnZhbHVlKCksIHZhbHVl
KTsKKyAgICAgICAgICAgIGlmIChtaW4pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1h
eChtaW4udmFsdWUoKSwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21pbiAmJiAh
bV9tYXggJiYgIW1fZXhhY3QgJiYgIW1faWRlYWw7IH0KICAgICBib29sIGlzTWFuZGF0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9taW4gfHwgbV9tYXggfHwgbV9leGFjdDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDcyNDdiYjgzMzg1N2U0OGU5OWVlNzg2ZTc1ZTRh
OTNiYjAwNWQ1ZWQuLjFiMGJmOTRkZjVkNGM5M2RlZjgwMjRlZmE5MWE1ZTE2NWJmNWQ5NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC03MSw4ICs3MSw2IEBAIHByaXZh
dGU6CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
JiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50
U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1fdmlkZW9UcmFjazsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKaW5kZXggMmU5ZDk2NWExOTliNWIzMjFhZDNmZTMwZTE4MTg4ZjIyZTJiNDFk
Zi4uNDllOTllNGYyYWNlMjI5N2ZmYzdiM2ZkZjY4YjUyNmM4NDJiZDZmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAg
LTUyLDggKzUyLDYgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShj
b25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmkKICAgICAsIG1fdHlwZSh0eXBl
KQogICAgICwgbV9uYW1lKG5hbWUpCiB7Ci0gICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBp
bXBsZW1lbnQgZml0bmVzcyBzY29yZSBmb3IgY29uc3RyYWludHMKLQogICAgIGlmIChtX2lkLmlz
RW1wdHkoKSkKICAgICAgICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAg
ICBtX3BlcnNpc3RlbnRJRCA9IG1faWQ7CkBAIC0xMzMsMTMgKzEzMSwxMiBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6Om5vdGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3QKICAgICB9KTsKIH0K
IAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAobV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24pCiAgICAg
ICAgIHJldHVybjsKLQogICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9u
ID0gdHJ1ZTsKIAogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTYsNiAr
MzUzLDkgQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVz
LnN1cHBvcnRzU2FtcGxlUmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAgICAg
aWYgKGF1dG8gZGlzY3JldGVSYXRlcyA9IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlz
dGFuY2UoKmRpc2NyZXRlUmF0ZXMpOworCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRp
ZXMuc2FtcGxlUmF0ZSgpOwogICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4o
Y29uc3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdl
LnJhbmdlTWF4KCkuYXNJbnQpOwogICAgICAgICBicmVhazsKQEAgLTM2Niw2ICszNjYsOSBAQCBk
b3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29u
c3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNT
YW1wbGVTaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAorICAgICAgICBpZiAoYXV0byBk
aXNjcmV0ZVNpemVzID0gZGlzY3JldGVTYW1wbGVTaXplcygpKQorICAgICAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlz
Y3JldGVTaXplcyk7CisKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVT
aXplKCk7CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50
KS5maXRuZXNzRGlzdGFuY2UocmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgo
KS5hc0ludCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDIxLDggKzQyNCwxNSBAQCBkb3VibGUgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KLXN0YXRpYyB2
b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFsdWVU
eXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIFZhbHVlVHlwZSBjYXBhYmlsaXR5
TWluLCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNl
LCB2b2lkIChSZWFsdGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKK3N0YXRp
YyB2b2lkIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoY29uc3QgTnVtZXJpY0NvbnN0cmFpbnQ8VmFs
dWVUeXBlPiYgY29uc3RyYWludCwgVmFsdWVUeXBlIGN1cnJlbnQsIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFZhbHVlVHlwZT4+IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcywgVmFsdWVUeXBlIGNhcGFi
aWxpdHlNaW4sIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWF4LCBSZWFsdGltZU1lZGlhU291cmNlKiBz
b3VyY2UsIHZvaWQgKFJlYWx0aW1lTWVkaWFTb3VyY2U6OiphcHBsaWVyKShWYWx1ZVR5cGUpKQog
eworICAgIGlmIChkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgaW50IHZhbHVl
ID0gY29uc3RyYWludC52YWx1ZUZvckRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcyhjdXJyZW50LCAq
ZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IGN1cnJlbnQp
CisgICAgICAgICAgICAoc291cmNlLT4qYXBwbGllcikodmFsdWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgVmFsdWVUeXBlIHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckNhcGFi
aWxpdHlSYW5nZShjdXJyZW50LCBjYXBhYmlsaXR5TWluLCBjYXBhYmlsaXR5TWF4KTsKICAgICBp
ZiAodmFsdWUgIT0gY3VycmVudCkKICAgICAgICAgKHNvdXJjZS0+KmFwcGxpZXIpKHZhbHVlKTsK
QEAgLTQ0MiwzNSArNDUyLDE3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKIHsKICAgICBhdXRvJiBj
YXBhYmlsaXRpZXMgPSB0aGlzLT5jYXBhYmlsaXRpZXMoKTsKICAgICBzd2l0Y2ggKGNvbnN0cmFp
bnQuY29uc3RyYWludFR5cGUoKSkgewotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6V2lk
dGg6IHsKLSAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNJbnQoKSk7Ci0gICAgICAgIGlmICgh
Y2FwYWJpbGl0aWVzLnN1cHBvcnRzV2lkdGgoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLndpZHRoKCk7Ci0gICAgICAgIGFwcGx5TnVt
ZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCksIHNpemUo
KS53aWR0aCgpLCByYW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50
LCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0V2lkdGgpOworICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6V2lkdGg6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdo
dDogewotICAgICAgICBBU1NFUlQoY29uc3RyYWludC5pc0ludCgpKTsKLSAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMuc3VwcG9ydHNIZWlnaHQoKSkKLSAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBhdXRvIHJhbmdlID0gY2FwYWJpbGl0aWVzLmhlaWdodCgpOwotICAgICAgICBhcHBseU51
bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzaXpl
KCkuaGVpZ2h0KCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJ
bnQsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOworICAgIGNhc2UgTWVk
aWFDb25zdHJhaW50VHlwZTo6SGVpZ2h0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpG
cmFtZVJhdGU6IHsKLSAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNEb3VibGUoKSk7Ci0gICAg
ICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzRnJhbWVSYXRlKCkpCi0gICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5mcmFtZVJhdGUoKTsK
LSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVDb25zdHJhaW50
Pihjb25zdHJhaW50KSwgZnJhbWVSYXRlKCksIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJh
bmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRG
cmFtZVJhdGUpOworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAg
Y2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpBc3BlY3RSYXRpbzogewogICAgICAgICBBU1NFUlQo
Y29uc3RyYWludC5pc0RvdWJsZSgpKTsKQEAgLTQ3OCw3ICs0NzAsNyBAQCB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0
cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFi
aWxpdGllcy5hc3BlY3RSYXRpbygpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRv
d25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3BlY3RSYXRpbygpLCByYW5n
ZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCB0aGlzLCAm
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8pOworICAgICAgICBhcHBseU51bWVy
aWNDb25zdHJhaW50KGRvd25jYXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBhc3Bl
Y3RSYXRpbygpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4
KCkuYXNEb3VibGUsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRBc3BlY3RSYXRpbyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4MCw3IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHJhbmdlID0gY2Fw
YWJpbGl0aWVzLnZvbHVtZSgpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25j
YXN0PERvdWJsZUNvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCB2b2x1bWUoKSwgcmFuZ2UucmFuZ2VN
aW4oKS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgdGhpcywgJlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFZvbHVtZSk7CisgICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQo
ZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCksIHZvbHVtZSgpLCB7IH0sIHJh
bmdlLnJhbmdlTWluKCkuYXNEb3VibGUsIHJhbmdlLnJhbmdlTWF4KCkuYXNEb3VibGUsIHRoaXMs
ICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKQEAgLTQ5OCw3ICs0OTAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29u
c3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7
Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4o
Y29uc3RyYWludCksIHNhbXBsZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2Uu
cmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJh
dGUpOworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFp
bnQ+KGNvbnN0cmFpbnQpLCBzYW1wbGVSYXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFu
Z2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTUwOCw3ICs1MDAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3Ry
YWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7Ci0g
ICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29u
c3RyYWludCksIHNhbXBsZVNpemUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFu
Z2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUp
OworICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+
KGNvbnN0cmFpbnQpLCBzYW1wbGVTaXplKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwg
cmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNh
bXBsZVNpemUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTgyMyw4ICs4MTUsNiBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVk
Q29uc3RyYWludCYgY29uc3RyYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZSBzaG91bGQgdGFrZSBNZWRpYUNvbnN0cmFpbnQqIGluc3Rl
YWQgb2Ygc3RkOjpvcHRpb25hbDw+IHNvIGl0IGNhbiBzZWUgaWYgYSBjb25zdHJhaW50IGlzIGFu
IGV4YWN0LCBtaW4sIG1heCwKLSAgICAvLyBvciBpZGVhbCwgYW5kIGNob29zZSB0aGUgY29ycmVj
dCB2YWx1ZSBmb3IgcHJvcGVydGllcyB3aXRoIG5vbi1kaXNjcmVldCBjYXBhYmlsaXRpZXMgd2hl
biBuZWNlc3NhcnkuCiAgICAgaWYgKHdpZHRoIHx8IGhlaWdodCB8fCBmcmFtZVJhdGUpCiAgICAg
ICAgIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWlnaHQp
LCBXVEZNb3ZlKGZyYW1lUmF0ZSkpOwogCkBAIC04NjUsMTEgKzg1NSwxNCBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6
ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYXBwbHlTaXplKHNpemUp
KQotICAgICAgICByZXR1cm47CisgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICBpZiAobV9zaXplLndpZHRoKCkgIT0gc2l6ZS53aWR0
aCgpKQorICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc6OldpZHRoKTsKKyAgICBpZiAobV9zaXplLmhlaWdodCgpICE9IHNpemUuaGVpZ2h0KCkpCisg
ICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKIAogICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAg
ICBzZXR0aW5nc0RpZENoYW5nZShjaGFuZ2VkKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRXaWR0aChpbnQgd2lkdGgpCkBAIC04NzcsMTUgKzg3MCwxMSBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRoKGludCB3aWR0aCkKICAgICBpZiAod2lkdGggPT0gbV9z
aXplLndpZHRoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBoZWlnaHQgPSBtX2FzcGVj
dFJhdGlvID8gd2lkdGggLyBtX2FzcGVjdFJhdGlvIDogbV9zaXplLmhlaWdodCgpOwotICAgIGlm
ICghYXBwbHlTaXplKEludFNpemUod2lkdGgsIGhlaWdodCkpKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBtX3NpemUuc2V0V2lkdGgod2lkdGgpOwogICAgIGlmIChtX2FzcGVjdFJhdGlvKQogICAg
ICAgICBtX3NpemUuc2V0SGVpZ2h0KHdpZHRoIC8gbV9hc3BlY3RSYXRpbyk7CiAKLSAgICBzZXR0
aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldEhlaWdodChpbnQgaGVpZ2h0KQpAQCAtODkzLDc5ICs4ODIsODUgQEAgdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRIZWlnaHQoaW50IGhlaWdodCkKICAgICBpZiAoaGVpZ2h0ID09IG1f
c2l6ZS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IHdpZHRoID0gbV9hc3Bl
Y3RSYXRpbyA/IGhlaWdodCAqIG1fYXNwZWN0UmF0aW8gOiBtX3NpemUud2lkdGgoKTsKLSAgICBp
ZiAoIWFwcGx5U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKG1fYXNwZWN0UmF0aW8pCi0gICAgICAgIG1fc2l6ZS5zZXRXaWR0aCh3aWR0aCk7
CisgICAgICAgIG1fc2l6ZS5zZXRXaWR0aChoZWlnaHQgKiBtX2FzcGVjdFJhdGlvKTsKICAgICBt
X3NpemUuc2V0SGVpZ2h0KGhlaWdodCk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAg
IHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGcmFtZVJhdGUoZG91Ymxl
IHJhdGUpCiB7Ci0gICAgaWYgKG1fZnJhbWVSYXRlID09IHJhdGUgfHwgIWFwcGx5RnJhbWVSYXRl
KHJhdGUpKQorICAgIGlmIChtX2ZyYW1lUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2ZyYW1lUmF0ZSA9IHJhdGU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBz
ZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1l
UmF0ZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0QXNwZWN0UmF0aW8oZG91
YmxlIHJhdGlvKQogewotICAgIGlmIChtX2FzcGVjdFJhdGlvID09IHJhdGlvIHx8ICFhcHBseUFz
cGVjdFJhdGlvKHJhdGlvKSkKKyAgICBpZiAobV9hc3BlY3RSYXRpbyA9PSByYXRpbykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9hc3BlY3RSYXRpbyA9IHJhdGlvOwogICAgIG1fc2l6ZS5zZXRI
ZWlnaHQobV9zaXplLndpZHRoKCkgLyByYXRpbyk7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsK
KyAgICBzZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkFzcGVjdFJhdGlvKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRGYWNpbmdN
b2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1vZGUpCiB7
Ci0gICAgaWYgKG1fZmFjaW5nTW9kZSA9PSBtb2RlIHx8ICFhcHBseUZhY2luZ01vZGUobW9kZSkp
CisgICAgaWYgKG1fZmFjaW5nTW9kZSA9PSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2ZhY2luZ01vZGUgPSBtb2RlOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGlu
Z3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGYWNpbmdNb2Rl
KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRWb2x1bWUoZG91YmxlIHZvbHVt
ZSkKIHsKLSAgICBpZiAobV92b2x1bWUgPT0gdm9sdW1lIHx8ICFhcHBseVZvbHVtZSh2b2x1bWUp
KQorICAgIGlmIChtX3ZvbHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dm9sdW1lID0gdm9sdW1lOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NE
aWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpWb2x1bWUpOwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiB7Ci0g
ICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSByYXRlIHx8ICFhcHBseVNhbXBsZVJhdGUocmF0ZSkpCisg
ICAgaWYgKG1fc2FtcGxlUmF0ZSA9PSByYXRlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nh
bXBsZVJhdGUgPSByYXRlOwotICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NE
aWRDaGFuZ2UoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpTYW1wbGVSYXRlKTsK
K30KKworc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlz
Y3JldGVTYW1wbGVSYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKGludCBzaXplKQogewot
ICAgIGlmIChtX3NhbXBsZVNpemUgPT0gc2l6ZSB8fCAhYXBwbHlTYW1wbGVTaXplKHNpemUpKQor
ICAgIGlmIChtX3NhbXBsZVNpemUgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9z
YW1wbGVTaXplID0gc2l6ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdz
RGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlU2l6ZSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1lTWVkaWFTb3VyY2U6OmRp
c2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVj
aG9DYW5jZWxsYXRpb24pCiB7Ci0gICAgaWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2Fu
Y2VsbGF0aW9uIHx8ICFhcHBseUVjaG9DYW5jZWxsYXRpb24oZWNob0NhbmNlbGxhdGlvbikpCisg
ICAgaWYgKG1fZWNob0NhbmNlbGxhdGlvbiA9PSBlY2hvQ2FuY2VsbGF0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2VjaG9DYW5jZWxsYXRpb24gPSBlY2hvQ2FuY2VsbGF0aW9uOwotICAg
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpFY2hvQ2FuY2VsbGF0aW9uKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpzY2hlZHVsZURlZmVycmVkVGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA0ODQxOWJhZDAxODlmNzI0Njlj
MjZjY2M2NTQwODQzYTcwMGEyZmUzLi5lMDhlNjU2ZTNlNzFlMTA2ZDY5ZGZmOTA3Zjc2ODI2YjZh
NzQzZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE2OSwzNSArMTY5LDI5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEhlaWdodChpbnQpOwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXpl
Jik7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICBkb3VibGUgZnJhbWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7
IH0KICAgICB2b2lkIHNldEZyYW1lUmF0ZShkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBs
eUZyYW1lUmF0ZShkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBkb3VibGUgYXNwZWN0
UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2FzcGVjdFJhdGlvOyB9CiAgICAgdm9pZCBzZXRBc3Bl
Y3RSYXRpbyhkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseUFzcGVjdFJhdGlvKGRvdWJs
ZSkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX2ZhY2luZ01vZGU7
IH0KICAgICB2b2lkIHNldEZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpW
aWRlb0ZhY2luZ01vZGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBkb3VibGUgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7IH0KICAgICB2
b2lkIHNldFZvbHVtZShkb3VibGUpOwotICAgIHZpcnR1YWwgYm9vbCBhcHBseVZvbHVtZShkb3Vi
bGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBpbnQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2FtcGxlUmF0ZTsgfQogICAgIHZvaWQgc2V0U2FtcGxlUmF0ZShpbnQpOwotICAgIHZp
cnR1YWwgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNv
bnN0OwogCiAgICAgaW50IHNhbXBsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVNpemU7
IH0KICAgICB2b2lkIHNldFNhbXBsZVNpemUoaW50KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlT
YW1wbGVTaXplKGludCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPGludD4+IGRpc2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25zdDsKIAogICAgIGJvb2wg
ZWNob0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZWNob0NhbmNlbGxhdGlvbjsgfQog
ICAgIHZvaWQgc2V0RWNob0NhbmNlbGxhdGlvbihib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBw
bHlFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MoKSBjb25zdCA9IDA7CkBAIC0yMTAsNyArMjA0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7
CiAgICAgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pOwogCiAgICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCkBAIC0yNzQsOCArMjY4LDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
bV9maXRuZXNzU2NvcmUgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkg
fTsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2Zh
Y2luZ01vZGUgeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCi0gICAgYm9v
bCBtX2VjaG9DYW5jZWxsYXRpb24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGlu
Z3NEaWRDaGFuZ2VOb3RpZmljYXRpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9lY2hvQ2FuY2Vs
bGF0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9jYXB0dXJlRGlk
RmFpbGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3BwCmlu
ZGV4IDZhNmRjZmVkNWY3YjVhNjI3MzI4OWVlZWMzMzEzZTFmYmY4Njk4MjQuLmJjMzA0YTk0ODY3
ZmY1ZDA4NTY5YzA0YWNmNDU4ZTM4NDE1YzdlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcApAQCAtNjksNiArNjksNDMgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpWaWRlb0ZhY2luZ01vZGUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjp2aWRlb0YK
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwogfQogCitP
cHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OmRpZmYoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiB0
aGF0KSBjb25zdAoreworICAgIE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+IGRpZmY7CisKKyAgICBpZiAod2lkdGgoKSAhPSB0aGF0LndpZHRoKCkpCisgICAgICAg
IGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6V2lkdGgpOworICAgIGlmICho
ZWlnaHQoKSAhPSB0aGF0LmhlaWdodCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkhlaWdodCk7CisgICAgaWYgKGFzcGVjdFJhdGlvKCkgIT0gdGhhdC5h
c3BlY3RSYXRpbygpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkFzcGVjdFJhdGlvKTsKKyAgICBpZiAoZnJhbWVSYXRlKCkgIT0gdGhhdC5mcmFtZVJhdGUo
KSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGcmFtZVJh
dGUpOworICAgIGlmIChmYWNpbmdNb2RlKCkgIT0gdGhhdC5mYWNpbmdNb2RlKCkpCisgICAgICAg
IGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmFjaW5nTW9kZSk7CisgICAg
aWYgKHZvbHVtZSgpICE9IHRoYXQudm9sdW1lKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6Vm9sdW1lKTsKKyAgICBpZiAoc2FtcGxlUmF0ZSgpICE9IHRo
YXQuc2FtcGxlUmF0ZSgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OlNhbXBsZVJhdGUpOworICAgIGlmIChzYW1wbGVTaXplKCkgIT0gdGhhdC5zYW1wbGVT
aXplKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6U2Ft
cGxlU2l6ZSk7CisgICAgaWYgKGVjaG9DYW5jZWxsYXRpb24oKSAhPSB0aGF0LmVjaG9DYW5jZWxs
YXRpb24oKSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpF
Y2hvQ2FuY2VsbGF0aW9uKTsKKyAgICBpZiAoZGV2aWNlSWQoKSAhPSB0aGF0LmRldmljZUlkKCkp
CisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGV2aWNlSWQp
OworICAgIGlmIChncm91cElkKCkgIT0gdGhhdC5ncm91cElkKCkpCisgICAgICAgIGRpZmYuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6R3JvdXBJZCk7CisgICAgaWYgKGxhYmVsKCkg
IT0gdGhhdC5sYWJlbCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkxhYmVsKTsKKyAgICBpZiAoZGlzcGxheVN1cmZhY2UoKSAhPSB0aGF0LmRpc3BsYXlT
dXJmYWNlKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RGlzcGxheVN1cmZhY2UpOworICAgIGlmIChsb2dpY2FsU3VyZmFjZSgpICE9IHRoYXQubG9naWNh
bFN1cmZhY2UoKSkKKyAgICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpMb2dpY2FsU3VyZmFjZSk7CisKKyAgICByZXR1cm4gZGlmZjsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaAppbmRleCAwMWMxNTIzYjgyMGViOTQ2MDg5MjEzMGQ5NmZk
YmJjYWQ2NTNkYjMyLi42YjAwZGQ0MWUwYzY2ZjVhOWM3ZjZkMDVmYTIwZDA1ZmNmNTA1ZTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmgiCiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC00Myw2ICs0NCwyNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBmYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlKTsKICAgICBzdGF0aWMgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpWaWRlb0ZhY2luZ01vZGUgdmlkZW9GYWNpbmdNb2RlRW51bShjb25zdCBTdHJpbmcmKTsKIAor
ICAgIGVudW0gRmxhZyB7CisgICAgICAgIFdpZHRoID0gMSA8PCAwLAorICAgICAgICBIZWlnaHQg
PSAxIDw8IDEsCisgICAgICAgIEFzcGVjdFJhdGlvID0gMSA8PCAyLAorICAgICAgICBGcmFtZVJh
dGUgPSAxIDw8IDMsCisgICAgICAgIEZhY2luZ01vZGUgPSAxIDw8IDQsCisgICAgICAgIFZvbHVt
ZSA9IDEgPDwgNSwKKyAgICAgICAgU2FtcGxlUmF0ZSA9IDEgPDwgNiwKKyAgICAgICAgU2FtcGxl
U2l6ZSA9IDEgPDwgNywKKyAgICAgICAgRWNob0NhbmNlbGxhdGlvbiA9IDEgPDwgOCwKKyAgICAg
ICAgRGV2aWNlSWQgPSAxIDw8IDksCisgICAgICAgIEdyb3VwSWQgPSAxIDw8IDEwLAorICAgICAg
ICBMYWJlbCA9IDEgPDwgMTEsCisgICAgICAgIERpc3BsYXlTdXJmYWNlID0gMSA8PCAxMiwKKyAg
ICAgICAgTG9naWNhbFN1cmZhY2UgPSAxIDw8IDEzLAorICAgIH07CisKKyAgICBzdGF0aWMgY29u
c3RleHByIE9wdGlvblNldDxGbGFnPiBhbGxGbGFncygpIHsgcmV0dXJuIHsgV2lkdGgsIEhlaWdo
dCwgQXNwZWN0UmF0aW8sIEZyYW1lUmF0ZSwgRmFjaW5nTW9kZSwgVm9sdW1lLCBTYW1wbGVSYXRl
LCBTYW1wbGVTaXplLCBFY2hvQ2FuY2VsbGF0aW9uLCBEZXZpY2VJZCwgR3JvdXBJZCwgTGFiZWws
IERpc3BsYXlTdXJmYWNlLCBMb2dpY2FsU3VyZmFjZSB9OyB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBkaWZmKGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIGNvbnN0OworCiAgICAgZXhwbGljaXQgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0
c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJhaW50cy5zdXBwb3J0c1dp
ZHRoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMmQxZmFlYWQxNzlkNzA1ZjQxOThj
YzE0ZTUxYmNkODhiMDBmNmQwMy4uZjNmYzRlYTU1MWI4ZTdiMmEwYjMwMmIwODRkMjAwMWMxN2I1
YWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTEyNSwxNyArMTI1LDYgQEAgSW50U2l6
ZSBSZWFsdGltZVZpZGVvU291cmNlOjpiZXN0U3VwcG9ydGVkQ2FwdHVyZVNpemVGb3JXaWR0aEFu
ZEhlaWdodChzdGQ6Om9wdGkKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFJlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmFwcGx5U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIEludFNpemUg
c3VwcG9ydGVkU2l6ZSA9IGJlc3RTdXBwb3J0ZWRDYXB0dXJlU2l6ZUZvcldpZHRoQW5kSGVpZ2h0
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKHN1cHBvcnRlZFNpemUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5
U2l6ZSglcCksIHVuYWJsZSBmaW5kIG9yIHNldCBwcmVzZXQgZm9yIHdpZHRoOiAlaSwgaGVpZ2h0
OiAlaSIsIHRoaXMsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBSZWFsdGltZVZp
ZGVvU291cmNlOjphcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRo
LCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZnJhbWVS
YXRlKQogewogICAgIGlmICh3aWR0aCB8fCBoZWlnaHQpIHsKQEAgLTE2OCwxMSArMTU3LDYgQEAg
dm9pZCBSZWFsdGltZVZpZGVvU291cmNlOjpkaXNwYXRjaE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMo
TWVkaWFTYW1wbGUmIHNhbXBsZSkKICAgICB2aWRlb1NhbXBsZUF2YWlsYWJsZShzYW1wbGUpOwog
fQogCi1ib29sIFJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRl
KQotewotICAgIHJldHVybiBzdXBwb3J0c0ZyYW1lUmF0ZShyYXRlKTsKLX0KLQogYm9vbCBSZWFs
dGltZVZpZGVvU291cmNlOjpzdXBwb3J0c0ZyYW1lUmF0ZShkb3VibGUgZnJhbWVSYXRlKQogewog
ICAgIGRvdWJsZSBlcHNpbG9uID0gMC4wMDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggMWMyNTdm
NmRkYmE2NzU0MzU1NTAxMTBjMzAwYzAxODlkY2JlNjUxMC4uNmEyZDRhMTFmMzJmMGU2NzVkYWQy
MDI0ZDk1OWIzZmIyNzBhNjVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDYsOCArNDYsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwcmVwYXJlVG9Qcm9kdWNlRGF0YSgpOwogICAgIGJvb2wg
c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpv
cHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAgICB2
b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6
b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7Ci0gICAg
Ym9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIGJvb2wgYXBwbHlG
cmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0U3VwcG9ydGVkRnJhbWVSYXRl
cyhWZWN0b3I8ZG91YmxlPiYmKTsKICAgICB2b2lkIHNldFN1cHBvcnRlZENhcHR1cmVTaXplcyhj
b25zdCBWZWN0b3I8SW50U2l6ZT4mJiBzaXplcykgeyBtX3N1cHBvcnRlZENhcHR1cmVTaXplcyA9
IHNpemVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCmluZGV4IDBkNTdiMjNmNDUyODJmYmIyN2FiYTk3YmI4OTk0ZWVhMDUzMGRmOGIu
LjdlMjE2NzM1ZDhjMTM3YzljNjVjMGIzMzNhNDE1MDExOTkyNTk5NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xNzIsOSAr
MTcyLDEyIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZTo6Y2FwYWJpbGl0aWVzCiAgICAgcmV0dXJuIG1fY2FwYWJpbGl0
aWVzLnZhbHVlKCk7CiB9CiAKLWJvb2wgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjphcHBs
eVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCit2b2lkIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgcmV0dXJuIG1fY2FwdHVyZXItPnNldFNhbXBs
ZVJhdGUoc2FtcGxlUmF0ZSk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6U2FtcGxlUmF0ZSkpCisgICAgICAgIG1fY2FwdHVyZXIt
PnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSgpKTsKKworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaApp
bmRleCAzZmE0YTljMmUzMjI1MjI3YTYyZTBjMzEyNjZmMjRiZWQ4ZTI2MGEzLi45ODVhMmU0MmQw
ZjYwYTgwNjkwZGM3MWUyZDU4ZjNmNzRmMDBlMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCkBAIC01MCw5ICs1MCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
PiBtX2N1cnJlbnRTZXR0aW5nczsKIAogcHJpdmF0ZToKLSAgICBib29sIGFwcGx5U2FtcGxlUmF0
ZShpbnQpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4gbV9jYXB0dXJlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA1YTlkZmI1MTdmYTI0
ODdlMWI5MDg0ZGNiNGIyMGUwOGFiNTRkZGIwLi5iZWE4ZGE5OTMyOWNjMTZiMTNmM2UyOGE5NGZi
YTk2NTEwNjBiZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlLmNwcApAQCAtMTA3LDE4ICsxMDcsMTQgQEAgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlOjp+R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKCkKIHsKIH0KIAotYm9vbCBH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZShjb25zdCBJbnRTaXplICZzaXpl
KQordm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9w
dGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewot
ICAgIG1fY2FwdHVyZXItPnNldFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9
KSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0U2l6ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhl
aWdodCgpKTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUpKQorICAgICAgICBtX2NhcHR1cmVyLT5zZXRGcmFtZVJh
dGUoZnJhbWVSYXRlKCkpOwogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgZnJhbWVyYXRlKQotewot
ICAgIG1fY2FwdHVyZXItPnNldEZyYW1lUmF0ZShmcmFtZXJhdGUpOwotCi0gICAgcmV0dXJuIHRy
dWU7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3Mp
OwogfQogCiB2b2lkIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdE
YXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uu
aAppbmRleCAzNzliYTdlMGZkNmU3NjdiM2NiNzI4ZDhkNThkZGUwYmNmYzJlZjE4Li4xNjA5YjAw
YzQ5YjZiYzgxYzgzYjdhOGM0M2Y4NGZlY2Y0NzhjYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC0zNyw3ICszNyw2IEBAIHB1Ymxp
YzoKICAgICBHc3RFbGVtZW50KiBwaXBlbGluZSgpIHsgcmV0dXJuIG1fY2FwdHVyZXItPnBpcGVs
aW5lKCk7IH0KICAgICBHU3RyZWFtZXJDYXB0dXJlciogY2FwdHVyZXIoKSB7IHJldHVybiBtX2Nh
cHR1cmVyLmdldCgpOyB9CiAKLQogcHJvdGVjdGVkOgogICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IGdjaGFyICogc291cmNlX2ZhY3RvcnkpOwogICAgIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlKTsKQEAgLTUyLDkgKzUxLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgR3N0Rmxvd1JldHVybiBuZXdTYW1wbGVDYWxsYmFjayhHc3RFbGVtZW50KiwgR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKik7CiAKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWw7Ci0gICAgYm9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIGZpbmFsOwot
ICAgIGJvb2wgYXBwbHlBc3BlY3RSYXRpbyhkb3VibGUpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyPiBtX2NhcHR1cmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgK
aW5kZXggNzQ4ZTQ4MDBjNTUxZjg5NTI3YmNhNjBlYjk2MzdjNDQ5NWY0ZTc2OC4uOTEzODM2MDk4
YzZlMTYxNDEwNjkwN2IxZjc1Zjc0M2JmMTQ4YTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmgKQEAgLTczLDEzICs3MywxMiBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6
Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwotICAg
IGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKLSAgICBib29sIGFwcGx5RnJh
bWVSYXRlKGRvdWJsZSkgZmluYWw7CisgICAgYm9vbCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKICAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQ
cm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUo
c3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwotICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKSBm
aW5hbDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKICAgICB2b2lkIG1vbml0b3JPcmllbnRhdGlv
bihPcmllbnRhdGlvbk5vdGlmaWVyJikgZmluYWw7CiAgICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRp
b24oKSBmaW5hbDsKICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxN2UwNTU2ZDljNjc4MTAyOTNlZTI4OWQxZTlm
MDJhN2VjY2EyMDRmLi45MTYxNDEyNTM1MWZmODVmZjUzNzY5YjdhNjAxMDQwOWExMjZlNGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0yNzAsMTAgKzI3MCwxMCBAQCB2b2lk
IEFWVmlkZW9DYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKCkKICAgICAgICAgW21f
c2Vzc2lvbiBjb21taXRDb25maWd1cmF0aW9uXTsKIH0KIAotdm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zz4gc2V0dGluZ3MpCiB7CiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7Ci0g
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdz
KCkgY29uc3QKQEAgLTM1NywxNyArMzU3LDYgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcygpIGNvbnMKICAg
ICByZXR1cm4gKm1fY2FwYWJpbGl0aWVzOwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBOU1N0cmluZyAqcHJlc2V0
ID0gYmVzdFNlc3Npb25QcmVzZXRGb3JWaWRlb0RpbWVuc2lvbnMoc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKLSAgICBpZiAoIXByZXNldCB8fCAhW3Nlc3Npb24oKSBjYW5TZXRTZXNzaW9u
UHJlc2V0OnByZXNldF0pIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmFwcGx5U2l6ZSglcCksIHVuYWJsZSBmaW5kIG9yIHNldCBwcmVzZXQgZm9yIHdpZHRoOiAl
aSwgaGVpZ2h0OiAlaSIsIHRoaXMsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2V0UHJlc2V0KHByZXNldCk7
Ci19Ci0KIEludFNpemUgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNpemVGb3JQcmVzZXQoTlNTdHJp
bmcqIHByZXNldCkKIHsKICAgICBpZiAoIXByZXNldCkKQEAgLTQwNSwxNCArMzk0LDE0IEBAIGJv
b2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFByZXNldChOU1N0cmluZyAqcHJlc2V0KQogICAg
ICAgICBbbV92aWRlb091dHB1dCBzZXRWaWRlb1NldHRpbmdzOnNldHRpbmdzRGljdGlvbmFyeV07
CiAjZW5kaWYKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAg
IExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoJXApLCBleGNlcHRp
b24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9u
IG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAg
ICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldFByZXNldCglcCksIGV4
Y2VwdGlvbiB0aHJvd24gY29uZmlndXJpbmcgZGV2aWNlOiA8JXM+ICVzIiwgdGhpcywgW1tleGNl
cHRpb24gbmFtZV0gVVRGOFN0cmluZ10sIFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10p
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRlKQor
Ym9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKGRvdWJsZSByYXRlKQogewog
ICAgIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAgICAgZG91YmxlIGVwc2lsb24gPSAwLjAwMDAxOwpA
QCAtNDI1LDcgKzQxNCw3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVS
YXRlKGRvdWJsZSByYXRlKQogICAgIH0KIAogICAgIGlmICghYmVzdEZyYW1lUmF0ZVJhbmdlIHx8
ICFpc0ZyYW1lUmF0ZVN1cHBvcnRlZChyYXRlKSkgewotICAgICAgICBMT0coTWVkaWEsICJBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBmcmFtZSByYXRlICVmIG5vdCBz
dXBwb3J0ZWQgYnkgdmlkZW8gZGV2aWNlIiwgdGhpcywgcmF0ZSk7CisgICAgICAgIExPRyhNZWRp
YSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApLCBmcmFtZSByYXRlICVm
IG5vdCBzdXBwb3J0ZWQgYnkgdmlkZW8gZGV2aWNlIiwgdGhpcywgcmF0ZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ0MiwxNiArNDMxLDE2IEBAIGJvb2wgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRlKQogICAgICAgICAgICAgW2Rl
dmljZSgpIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9CiAgICAgfSBAY2F0Y2go
TlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3Vy
aW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmdd
LCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSglcCksIGV4Y2VwdGlvbiB0aHJvd24g
Y29uZmlndXJpbmcgZGV2aWNlOiA8JXM+ICVzIiwgdGhpcywgW1tleGNlcHRpb24gbmFtZV0gVVRG
OFN0cmluZ10sIFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIExPRyhNZWRpYSwg
IkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZSglcCksIGZhaWxlZCB0byBsb2Nr
IHZpZGVvIGRldmljZSBmb3IgY29uZmlndXJhdGlvbjogJXMiLCB0aGlzLCBbW2Vycm9yIGxvY2Fs
aXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApLCBmYWlsZWQgdG8gbG9jayB2aWRlbyBk
ZXZpY2UgZm9yIGNvbmZpZ3VyYXRpb246ICVzIiwgdGhpcywgW1tlcnJvciBsb2NhbGl6ZWREZXNj
cmlwdGlvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKCVwKSAt
IHNldCBmcmFtZSByYXRlIHJhbmdlIHRvICVmIiwgdGhpcywgcmF0ZSk7CisgICAgTE9HKE1lZGlh
LCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSglcCkgLSBzZXQgZnJhbWUgcmF0
ZSByYW5nZSB0byAlZiIsIHRoaXMsIHJhdGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00
NjEsNyArNDUwLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJh
bWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjoKICAgICAgICAgc2V0UHJlc2V0
KGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKFdURk1vdmUod2lkdGgpLCBXVEZN
b3ZlKGhlaWdodCkpKTsKIAogICAgIGlmIChmcmFtZVJhdGUpCi0gICAgICAgIGFwcGx5RnJhbWVS
YXRlKGZyYW1lUmF0ZS52YWx1ZSgpKTsKKyAgICAgICAgc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZS52
YWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2Vuc29yT3JpZW50YXRpb24oQVZDYXB0
dXJlVmlkZW9PcmllbnRhdGlvbiB2aWRlb09yaWVudGF0aW9uKQpAQCAtNjI3LDEwICs2MTYsMTUg
QEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0cjxD
TVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxlQnUKICAgICAgICAgc3RkOjpzd2FwKGRpbWVuc2lvbnMu
d2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0KTsKIAogICAgIGlmIChkaW1lbnNpb25zLndpZHRoICE9
IG1fd2lkdGggfHwgZGltZW5zaW9ucy5oZWlnaHQgIT0gbV9oZWlnaHQpIHsKKyAgICAgICAgT3B0
aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICAg
ICAgaWYgKG1fd2lkdGggIT0gZGltZW5zaW9ucy53aWR0aCkKKyAgICAgICAgICAgIGNoYW5nZWQu
YWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOworICAgICAgICBp
ZiAobV9oZWlnaHQgIT0gZGltZW5zaW9ucy5oZWlnaHQpCisgICAgICAgICAgICBjaGFuZ2VkLmFk
ZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCk7CisKICAgICAgICAg
bV93aWR0aCA9IGRpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgIG1faGVpZ2h0ID0gZGltZW5zaW9u
cy5oZWlnaHQ7Ci0KLSAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2V0dGlu
Z3NEaWRDaGFuZ2UoY2hhbmdlZCk7CiAgICAgfQogCiAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUo
TWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUobV9idWZmZXIuZ2V0KCksIG1fc2FtcGxlUm90YXRp
b24sIFtjb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcAppbmRleCA2Yzc0NDA3ZTE1ZmRiMTYxODFmZmE1NTdjMzFlNjIxYzEyZjIy
YTAyLi43ZDcyN2NjYTYzYjVmYTgxNjljNzAxNTM5MmNmMzRiNTdjNWY1NWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3NiwzOSArODc2LDE5IEBAIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3Mo
KSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwogfQogCi12b2lk
IENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgbV9jdXJyZW50U2V0dGlu
Z3MgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UoKTsKLX0KLQotYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJh
dGUoaW50IHNhbXBsZVJhdGUpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRv
IGRlc2NyaWJlIHNhbXBsZSByYXRlIGFzIGEgZGlzY3JlZXQgcmFuZ2UgY29uc3RyYWludCBzbyB0
aGF0IHdlIG9ubHkgZW50ZXIgaGVyZSB3aXRoIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkLgot
ICAgIHN3aXRjaCAoc2FtcGxlUmF0ZSkgewotICAgIGNhc2UgODAwMDoKLSAgICBjYXNlIDE2MDAw
OgotICAgIGNhc2UgMzIwMDA6Ci0gICAgY2FzZSA0NDEwMDoKLSAgICBjYXNlIDQ4MDAwOgotICAg
IGNhc2UgOTYwMDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnOjpFY2hvQ2FuY2VsbGF0aW9uKSkgeworICAgICAgICBDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzaW5nbGV0b24oKS5zZXRFbmFibGVFY2hvQ2FuY2VsbGF0aW9uKGVjaG9DYW5jZWxs
YXRpb24oKSk7CisgICAgICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7CisgICAgfQorICAg
IGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OlNhbXBsZVJhdGUpKSB7CisgICAgICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigp
LnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgc2NoZWR1bGVSZWNvbmZpZ3Vy
YXRpb24oKTsKICAgICB9CiAKLSAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5z
ZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOwotCi0gICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24o
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjph
cHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCBlbmFibGVFY2hvQ2FuY2VsbGF0aW9uKQotewotICAg
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnNldEVuYWJsZUVjaG9DYW5jZWxsYXRp
b24oZW5hYmxlRWNob0NhbmNlbGxhdGlvbik7Ci0KLSAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlv
bigpOwotICAgIHJldHVybiB0cnVlOworICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxs
b3B0OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdz
KTsKIH0KIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzY2hlZHVsZVJlY29uZmlndXJh
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCA3OTJlYWYwN2UwY2Vm
YjQ3ODVlMGY3NmYyNTI1NjlmNjM2NjExNDBlLi5jNDBkM2M2YzM0ZDYwY2Y0YmE5Y2NlZGJmMDIx
ZDNkNTkzZDJkZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsMTMgKzg0
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAKLSAgICBib29sIGFwcGx5Vm9sdW1l
KGRvdWJsZSkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRl
KGludCkgZmluYWw7Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCkgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwg
OTYwMDAgfSB9OyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwogCiAgICAgYm9vbCBpbnRl
cnJ1cHRlZCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYS5jcHAKaW5kZXggZTc0Y2JlZTc5MmVmZTVkYTk0MjQxN2Q3ZjRlMjk1YzdlZTg1MjA3OS4u
M2VjZDVjYTJjZGVkNDE3NWY1ZDQ3ZmEwN2U4Yzg5OTA5MTZhMjM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9E
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OCwxMCArOTgsMTcgQEAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5n
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiB9CiAKLXZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKKyAgICBpZiAoc2V0
dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJh
dGUpICYmIG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGlu
ZygxX3MgLyBmcmFtZVJhdGUoKSk7CisKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkKKyAgICAgICAgbV9idWZmZXJBdHRyaWJ1dGVz
ID0gbnVsbHB0cjsKKwogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKQEAgLTExMSw3ICsx
MTgsNyBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0
YSgpCiAjZW5kaWYKIAogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0g
ICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX21zICogbHJvdW5kKDEwMDAgLyBmcmFtZVJhdGUo
KSkpOworICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwogfQog
CiB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdEYXRhKCkKQEAg
LTEyOSwyMyArMTM2LDYgQEAgU2Vjb25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbGFw
c2VkVGltZSgpCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX3N0YXJ0VGltZSk7CiB9CiAKLWJvb2wgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
YXBwbHlTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCi17Ci0gICAgaWYgKHNpemUoKSA9PSBu
ZXdTaXplKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIG1fYnVmZmVyQXR0cmlidXRlcyA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIHJhdGUpCi17Ci0gICAgaWYgKG1fdGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX21zICogbHJvdW5k
KDEwMDAgLyByYXRlKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogewogICAgIGlmIChtdXRlZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggNzg3N2UwYmFjNDkwY2IwZGYzMmRl
MTkxZWM4NWI1OTU1M2VmMmExNy4uNDg0YzFiMGE3Mjc4Mzk2Y2RlNmUxM2U0YTk5MWU3MmU1NDJl
Mjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDIxICs1NCwy
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwog
CiAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwotICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91
YmxlKSBvdmVycmlkZTsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJp
ZGU7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1ZmZlckZyb21Q
aXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGcm9tSU9TdXJmYWNlKElPU3Vy
ZmFjZVJlZik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0
PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOworCiBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmls
aXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgp
IGZpbmFsOwogCiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMuaAppbmRleCA2ZDE0YjAzNTExMGIzY2VjNjkzZGRmMDcxOTA1M2RhZjhl
MzNiNDBjLi45OWQ3OGVlYzdjNzAyZWNkMTZlY2ZkYTBiODRkMGM1NmI5ZDRmM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw4ICs1MCw4IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOwogICAgIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwotICAgIGJvb2wg
YXBwbHlTYW1wbGVTaXplKGludCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNl
dHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc+KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBs
ZVJhdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB7IDQ0MTAwLCA0ODAwMCB9IH07IH0KIAog
ICAgIHZvaWQgZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QpOwogICAgIHZvaWQgcmVuZGVyKFNl
Y29uZHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmlu
ZGV4IDVhYmI4ZjI4YjI1ZDdhMzI3Mjg3YzE2OWUzMjVhODU5Y2U0NjYzZmIuLjBjOGE0YmRlMjA1
YzliOWIyYWIyYTg4ODk3NmJjOTc0OWMzMzcxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTU4LDMwICsxNTgsMjcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6cmVuZGVyKFNlY29uZHMgZGVsdGEpCiAgICAgfQogfQogCi1ib29sIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjOjphcHBseVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCit2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25T
ZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAgICBp
ZiAoc2FtcGxlUmF0ZSA8IDQ0MTAwIHx8IHNhbXBsZVJhdGUgPiA0ODAwMCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAgIG1fZm9ybWF0RGVzY3JpcHRp
b24gPSBudWxscHRyOworICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG51bGxwdHI7CiAKLSAg
ICBpZiAoc2FtcGxlUmF0ZSA9PSB0aGlzLT5zYW1wbGVSYXRlKCkpCi0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBhdXRvIHJhdGUgPSBzYW1wbGVSYXRlKCk7CisgICAgICAgIHNpemVfdCBz
YW1wbGVDb3VudCA9IDIgKiByYXRlOwogCi0gICAgbV9mb3JtYXREZXNjcmlwdGlvbiA9IG51bGxw
dHI7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBudWxscHRyOworICAgICAgICBtX2JpcEJvcEJ1
ZmZlci5ncm93KHNhbXBsZUNvdW50KTsKKyAgICAgICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsK
IAotICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiBzYW1wbGVSYXRlOworICAgICAgICBzaXpl
X3QgYmlwQm9wU2FtcGxlQ291bnQgPSBjZWlsKEJpcEJvcER1cmF0aW9uICogcmF0ZSk7CisgICAg
ICAgIHNpemVfdCBiaXBTdGFydCA9IDA7CisgICAgICAgIHNpemVfdCBib3BTdGFydCA9IHJhdGU7
CiAKLSAgICBtX2JpcEJvcEJ1ZmZlci5ncm93KHNhbXBsZUNvdW50KTsKLSAgICBtX2JpcEJvcEJ1
ZmZlci5maWxsKDApOwotCi0gICAgc2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChCaXBC
b3BEdXJhdGlvbiAqIHNhbXBsZVJhdGUpOwotICAgIHNpemVfdCBiaXBTdGFydCA9IDA7Ci0gICAg
c2l6ZV90IGJvcFN0YXJ0ID0gc2FtcGxlUmF0ZTsKLQotICAgIGFkZEh1bShCaXBCb3BWb2x1bWUs
IEJpcEZyZXF1ZW5jeSwgc2FtcGxlUmF0ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYmlw
U3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKLSAgICBhZGRIdW0oQmlwQm9wVm9sdW1lLCBCb3BG
cmVxdWVuY3ksIHNhbXBsZVJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJvcFN0YXJ0
LCBiaXBCb3BTYW1wbGVDb3VudCk7CisgICAgICAgIGFkZEh1bShCaXBCb3BWb2x1bWUsIEJpcEZy
ZXF1ZW5jeSwgcmF0ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYmlwU3RhcnQsIGJpcEJv
cFNhbXBsZUNvdW50KTsKKyAgICAgICAgYWRkSHVtKEJpcEJvcFZvbHVtZSwgQm9wRnJlcXVlbmN5
LCByYXRlLCAwLCBtX2JpcEJvcEJ1ZmZlci5kYXRhKCkgKyBib3BTdGFydCwgYmlwQm9wU2FtcGxl
Q291bnQpOworICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKaW5kZXggZjU4
MzY3MTMzN2RmMDdhYTY0Y2E4ODNjYmZmNjRlMGJhYTI3ZTliZS4uNzMxMjllMWJlN2NiNmRjYzE2
NmZkNTU2ZTAwZmQxOTVlYzQ0Mzc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVNhbXBsZUJ1ZmZlcigpIGZp
bmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKKyAgICB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+KSBmaW5hbDsKIAogICAgIHZvaWQgb3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmllbnRh
dGlvbikgZmluYWw7CiAgICAgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3Rp
ZmllciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmlu
ZGV4IDRjY2VlMTkxMjYwNzRjYzA4MDczMTM4MGEyMTE3MjMwZTkzYzIwZGQuLjE3YjM1YmFhMTU3
ZDVmNDQ2YmI5MDM5N2NjMzM2MTUxMDkyZmU4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMubW0KQEAgLTE1NCwxMyArMTU0LDExIEBAIHZvaWQgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgZGlzcGF0Y2hNZWRpYVNh
bXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5n
ZXQoKSwgbV9kZXZpY2VPcmllbnRhdGlvbikpOwogfQogCi1ib29sIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIGlmICghTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZShuZXdTaXplKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgbV9idWZmZXJQb29sID0gbnVsbHB0cjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9
KSkKKyAgICAgICAgbV9idWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB2b2lkIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjpvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4
IDRiNDI1ZjliYTYyYjBmM2YwOTNhOTA2ZmQ0YjJhZTQ5YzJhNDNjM2UuLmJiYWM4ZGE1ZTQzOWM4
YTIwYTI4ZGVjZjU3N2RlY2Q2NjE4ZTdhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTczLDkgKzE3MywxNSBAQCB2b2lkIFJlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwcm9jZXNzTmV3U2FtcGxlKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZQogewogICAgIG1fYnVmZmVyID0gc2FtcGxlOwogICAgIGlmICh3aWR0aCAhPSBt
X2N1cnJlbnRTZXR0aW5ncy53aWR0aCgpIHx8IGhlaWdodCAhPSBtX2N1cnJlbnRTZXR0aW5ncy5o
ZWlnaHQoKSkgeworICAgICAgICBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPiBjaGFuZ2VkOworICAgICAgICBpZiAod2lkdGggIT0gbV9jdXJyZW50U2V0dGluZ3Mu
d2lkdGgoKSkKKyAgICAgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZzo6V2lkdGgpOworICAgICAgICBpZiAoaGVpZ2h0ICE9IG1fY3VycmVudFNldHRp
bmdzLmhlaWdodCgpKQorICAgICAgICAgICAgY2hhbmdlZC5hZGQoUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQpOworCiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNl
dFdpZHRoKHdpZHRoKTsKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0SGVpZ2h0KGhlaWdo
dCk7Ci0gICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgICAgIHNldHRpbmdzRGlkQ2hh
bmdlKGNoYW5nZWQpOwogICAgIH0KIAogICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZSwgcm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKaW5kZXggZDI2YTI5NGUzNmU3OWU4YTNhMTE5NTBl
MmFmMTg4N2M4MTI3NDc5Zi4uMGIxZjNlZjlmMmY4ZDk0YTlhMWViODg2Yjg1NDBlMDU5NzZhMzhh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Nj
cmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksOCAr
NTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKLSAg
ICBib29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmlu
YWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7CiAKICAgICBib29sIGNy
ZWF0ZURpc3BsYXlTdHJlYW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYy5tbQppbmRleCBiMTdlN2MyYjQ1ZTBkOTA1MjNhMmM0MjJjNmU4Y2NlNzc3MWJiMmQ4
Li5lNmU0NDhjM2VjYWFmMDUwODM0ODA5MzBkNWNkYzQwMzEwZTk4YTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1MywyMSArMjUzLDEyIEBAIHZv
aWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiAg
ICAgbV9pc1J1bm5pbmcgPSB0cnVlOwogfQogCi1ib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIGlmICghRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlTaXplKG5ld1NpemUpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjphcHBseUZyYW1lUmF0
ZShkb3VibGUgcmF0ZSkKLXsKLSAgICBpZiAoZnJhbWVSYXRlKCkgIT0gcmF0ZSkKKyAgICBpZiAo
c2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUgfSkpCiAgICAgICAgIG1fZGlz
cGxheVN0cmVhbSA9IG51bGxwdHI7CiAKLSAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6YXBwbHlGcmFtZVJhdGUocmF0ZSk7CisgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBTY3JlZW5E
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y29tbWl0Q29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Uu
Y3BwCmluZGV4IGYzYzkzN2ZmOGE1YmJkNzJmNWY5ODM5YWQ3ZDk2ZWMyNDUyNjcyNWQuLjk2NTcy
NzA4MmNiMzIzOTg5NTk2YjgxYWM2YTEzYTZkOTEwZjEwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBA
IC0xMzQsMTAgKzEzNCwxMCBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgYwogICAgIHJldHVybiBt
X2NhcGFiaWxpdGllcy52YWx1ZSgpOwogfQogCi12b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
PiBzZXR0aW5ncykKIHsKICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKLSAg
ICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRl
eCA0NDNkZDA3M2YwYjQzYmM1NjJiNGE3YzFhMDM5ZDMyMDY1MTU2Mzk3Li43OWM2Njc4YWQwMTUz
MTE2YzdhYjcxNzc0NDliYTY4OTUzMzJiMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC01NCwxOCArNTQs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKIAog
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoU2Vjb25kcykgeyB9CisgICAgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgb3Zl
cnJpZGU7CiAKICAgICBzdGF0aWMgU2Vjb25kcyByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDYw
X21zOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlU2l6ZShpbnQpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgdm9pZCB0aWNrKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5jcHAKaW5kZXggMWVlYzQ0MWQ3OGVjYWQxNDVkOTdkMDFmNzQ4ZWMwODJlMWIyNmVhMy4u
MmFlYWYyY2FmZTE3MzcyNmU0NGRlNjM3N2YxMWZlYTE5YmM1ZTdkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAKQEAgLTE5MiwxMCArMTkyLDE3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4g
bV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7
Ci0gICAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBpZiAo
c2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkgewor
ICAgICAgICBtX2Jhc2VGb250U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIC4wODsKKyAgICAgICAg
bV9iaXBCb3BGb250U2l6ZSA9IG1fYmFzZUZvbnRTaXplICogMi41OworICAgICAgICBtX3N0YXRz
Rm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41OworICAgICAgICBtX2ltYWdlQnVmZmVyID0g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWFsdGltZVZpZGVvU291cmNlOjpzZXR0aW5nc0RpZENo
YW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0
Q2FwdHVyZVRpbWVyKCkKQEAgLTIyNSwxOSArMjMyLDYgQEAgU2Vjb25kcyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6ZWxhcHNlZFRpbWUoKQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1v
bm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOwogfQogCi1ib29sIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAo
IVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgbV9iYXNlRm9udFNpemUgPSBzaXplLmhlaWdodCgpICogLjA4OwotICAgIG1f
YmlwQm9wRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIDIuNTsKLSAgICBtX3N0YXRzRm9udFNp
emUgPSBtX2Jhc2VGb250U2l6ZSAqIC41OwotICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRy
YXdBbmltYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGZsb2F0IHJhZGl1
cyA9IHNpemUoKS53aWR0aCgpICogLjA5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDZhYzczNThlNzRjOGUz
M2EwMDFiMjhlMDZmNDUyNWI3MzQxOGM0ZjYuLjkxZjY1NmFmYzE3NzFkYjJmNmZlNmM2ODgzZjJl
MTI0MDA3YTkxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTYwLDEyICs2MCwxMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCkgY29uc3Q7CiAKICAgICBTZWNvbmRzIGVs
YXBzZWRUaW1lKCk7Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwog
ICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBm
aW5hbDsKQEAgLTc0LDkgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCYpOwogICAgIHZvaWQgZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYpOwogCi0g
ICAgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5QXNw
ZWN0UmF0aW8oZG91YmxlKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29sIGlz
Q2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQg
Z2VuZXJhdGVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggODI0MGQ1MGE1MjgwYTQ0
ZmM3N2VmM2NkZjBjZTgyYWQ3YWUyNzBjMi4uMjVjYmZjM2MxNmI0MTIxZWVmYzM3MTk3MTU0ZjJj
Y2Q0NzliZGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDggKzc0LDkgQEAgcHVibGljOgog
ICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdm9pZCBzZXRTZXR0aW5ncyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKICAgICB7CisgICAgICAgIGF1dG8gY2hh
bmdlZCA9IG1fc2V0dGluZ3MuZGlmZihzZXR0aW5ncyk7CiAgICAgICAgIG1fc2V0dGluZ3MgPSBX
VEZNb3ZlKHNldHRpbmdzKTsKLSAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICAgICAg
c2V0dGluZ3NEaWRDaGFuZ2UoY2hhbmdlZCk7CiAgICAgfQogCiAgICAgY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRp
b247IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348921</attachid>
            <date>2018-09-05 07:52:34 -0700</date>
            <delta_ts>2018-09-05 08:04:56 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-189284-20180905075232.patch</filename>
            <type>text/plain</type>
            <size>68046</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI1Y2I2NzE3MmQ3MTUz
ZjI4ODgyYmNjNTViNjlhYjA5MTU1NmU5ZS4uZmRhMmM1MmMxYTg3NDAwZjI5ZTZlNmVhMDg4NmRm
Nzc3N2E3OTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOS0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJl
YW1dIFNpbXBsaWZ5IGxvZ2ljIHdoZW4gY2hhbmdpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZSBzZXR0
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
Mjg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNzk0OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlbW92ZSBhbGwgImFwcGx5PHNldHRpbmc+
IiBtZXRob2RzIGZyb20gUmVhbHRpbWVNZWRpYVNvdXJjZSBhbmQgZGVyaXZlZCBjbGFzc2VzLCBh
bmQKKyAgICAgICAgYWRkIGEgYml0ZmllbGQgdG8gc2V0dGluZ3NEaWRDaGFuZ2Ugc28gY2xhc3Nl
cyBjYW4gZG8gc2V0dGluZy1zcGVjaWZpYyBzZXR1cCBhbmQKKyAgICAgICAgY29uZmlndXJhdGlv
biBieSBvdmVycmlkaW5nIHNldHRpbmdzRGlkQ2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNSZXNpemVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OmZpdG5lc3NEaXN0YW5jZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6dmFsdWVGb3JEaXNj
cmV0ZUNhcGFiaWxpdHlWYWx1ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rp
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5TnVtZXJpY0NvbnN0cmFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRFY2hvQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZGlmZiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmFsbEZsYWdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZyYW1lUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRp
bmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjphcHBseUVjaG9DYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGlu
Z3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjphcHBseUZyYW1lUmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VNYWM6OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwcm9jZXNzTmV3U2FtcGxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6YXBwbHlGcmFt
ZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDE4LTA5LTA0ICBGcmVkZXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2NjEwNGM5ZGQwZGNhYzFjN2Y4NjY1YjRkMTUyMTUx
ZTM2ZGE1YjUuLjRjMDU4YWZlMzY1ZjUzOTEyZTFkYTc1NzEwOTM2NjY5YmM0MDA2MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTaW1wbGlmeSBsb2dpYyB3
aGVuIGNoYW5naW5nIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI4NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQxMTc5NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRT
ZXR0aW5ncyk6CisKIDIwMTgtMDktMDQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBTY3JvbGxJbnRvVmlld09wdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMjRiODE2ZDJmMGY4
ODYzNTgxMWQ2M2M2YzM1Yjc5ZWRjNzk4N2I2NS4uY2RkMDRiOTAzYzdiZjI2Y2ZlODlkNjg3OTA3
NWIzNDNkNjQwZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
QEAgLTExNCwxMCArMTE0LDE2IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52YXMpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwogCisgICAgT3B0aW9uU2V0PFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICBpZiAobV9jYW52
YXMtPndpZHRoKCkgIT0gbV9zZXR0aW5ncy53aWR0aCgpKQorICAgICAgICBjaGFuZ2VkLmFkZChS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICBpZiAobV9jYW52
YXMtPmhlaWdodCgpICE9IG1fc2V0dGluZ3MuaGVpZ2h0KCkpCisgICAgICAgIGNoYW5nZWQuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKKwogICAgIG1fc2V0
dGluZ3Muc2V0V2lkdGgobV9jYW52YXMtPndpZHRoKCkpOwogICAgIG1fc2V0dGluZ3Muc2V0SGVp
Z2h0KG1fY2FudmFzLT5oZWlnaHQoKSk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAg
IHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzLCBj
b25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4
IDYzNWI0YjFjOGE2YzYwN2VkMjg1MWNmMjBmYzRhMGYzZTQwYzQwYWMuLmIwMDZhZjkzYmY0ZDEx
MjUzZmY3YzE2ZDIzNzZjMGFlMWMzNGM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpICBmaW5hbDsKICAgICAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRpZXMoKTsgfQogICAgICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgICAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRT
aXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZh
cygpOwogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApp
bmRleCA2NWU5NmFjYTlkYjE3MmRkMjcyOGIzYzVmMTU5MTY3ZGYzM2MyYjZlLi4zMGVjNDFhNjNi
ODg4ZDE1YzAzNDVhOTIzMzMwODA0NWQ5MTJhNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0xOTMsNiAr
MTkzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjphYnMoaWRlYWwgLSBtX2lkZWFsLnZhbHVlKCkpKSAvIHN0ZDo6bWF4KHN0ZDo6YWJzKGlkZWFs
KSwgc3RkOjphYnMobV9pZGVhbC52YWx1ZSgpKSk7CiAgICAgfQogCisgICAgZG91YmxlIGZpdG5l
c3NEaXN0YW5jZShjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFs
dWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgZG91YmxlIG1pbkRpc3RhbmNlID0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworCisgICAgICAgIGZvciAoYXV0byYgdmFs
dWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgICAgIGF1dG8gZGlzdGFu
Y2UgPSBmaXRuZXNzRGlzdGFuY2UodmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChkaXN0
YW5jZSA8IG1pbkRpc3RhbmNlKQorICAgICAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFu
Y2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWluRGlzdGFuY2U7CisgICAgfQorCiAg
ICAgYm9vbCB2YWxpZEZvclJhbmdlKFZhbHVlVHlwZSByYW5nZU1pbiwgVmFsdWVUeXBlIHJhbmdl
TWF4KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRW1wdHkoKSkKQEAgLTI3Nyw2ICsyOTAs
NDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCisgICAgVmFsdWVU
eXBlIHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZhbHVlVHlwZSBjdXJyZW50LCBj
b25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAor
ICAgIHsKKyAgICAgICAgVmFsdWVUeXBlIHZhbHVlIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWF4
OworCisgICAgICAgIGlmIChtX2V4YWN0KSB7CisgICAgICAgICAgICBBU1NFUlQoZGlzY3JldGVD
YXBhYmlsaXR5VmFsdWVzLmNvbnRhaW5zKG1fZXhhY3QudmFsdWUoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fZXhhY3QudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX21pbikg
eworICAgICAgICAgICAgYXV0byBpbmRleCA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcy5maW5k
TWF0Y2hpbmcoWyZdKFZhbHVlVHlwZSB2YWx1ZSkgeyByZXR1cm4gbV9taW4udmFsdWUoKSA+PSB2
YWx1ZTsgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
ICAgICAgICBtaW4gPSB2YWx1ZSA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlc1tpbmRleF07CisK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpZGVhbCwgZG9uJ3QgY2hhbmdlIGlm
IG1pbmltdW0gaXMgc21hbGxlciB0aGFuIGN1cnJlbnQuCisgICAgICAgICAgICAgICAgaWYgKCFt
X2lkZWFsICYmIHZhbHVlIDwgY3VycmVudCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBj
dXJyZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbWF4ICYm
IG1fbWF4LnZhbHVlKCkgPj0gZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzWzBdKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGRpc2NyZXRlVmFsdWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobV9tYXgudmFsdWUoKSA8PSBkaXNjcmV0ZVZhbHVlKQor
ICAgICAgICAgICAgICAgICAgICBtYXggPSB2YWx1ZSA9IGRpc2NyZXRlVmFsdWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pZGVhbCAmJiBkaXNjcmV0ZUNhcGFi
aWxpdHlWYWx1ZXMuY29udGFpbnMobV9pZGVhbC52YWx1ZSgpKSkgeworICAgICAgICAgICAgdmFs
dWUgPSBtX2lkZWFsLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAobWF4KQorICAgICAgICAgICAg
ICAgIHZhbHVlID0gc3RkOjptaW4obWF4LnZhbHVlKCksIHZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChtaW4pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1heChtaW4udmFsdWUoKSwgdmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKwogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21pbiAmJiAhbV9tYXggJiYgIW1fZXhhY3Qg
JiYgIW1faWRlYWw7IH0KICAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9t
aW4gfHwgbV9tYXggfHwgbV9leGFjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oCmluZGV4IDcyNDdiYjgzMzg1N2U0OGU5OWVlNzg2ZTc1ZTRhOTNiYjAwNWQ1ZWQuLjFiMGJm
OTRkZjVkNGM5M2RlZjgwMjRlZmE5MWE1ZTE2NWJmNWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oCkBAIC03MSw4ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
IGZpbmFsOwogCi0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJ
bnRlcmZhY2U+IG1fdmlkZW9UcmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXgg
MmU5ZDk2NWExOTliNWIzMjFhZDNmZTMwZTE4MTg4ZjIyZTJiNDFkZi4uMDcxMTNmZTBhMmU0ZGZm
Nzc3YmNhODhjMGRjNDVhNTlmOWJjMzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDE1IEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTUyLDggKzUyLDYgQEAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBU
eXBlIHR5cGUsIGNvbnN0IFN0cmkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5h
bWUpCiB7Ci0gICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBpbXBsZW1lbnQgZml0bmVzcyBz
Y29yZSBmb3IgY29uc3RyYWludHMKLQogICAgIGlmIChtX2lkLmlzRW1wdHkoKSkKICAgICAgICAg
bV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICBtX3BlcnNpc3RlbnRJRCA9
IG1faWQ7CkBAIC0xMzMsMTMgKzEzMSwxMiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5v
dGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9wZW5k
aW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKLQogICAg
IG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gdHJ1ZTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTYsNiArMzUzLDkgQEAgZG91YmxlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlUmF0
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAgICAgaWYgKGF1dG8gZGlzY3JldGVS
YXRlcyA9IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKmRpc2NyZXRlUmF0
ZXMpOworCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpOwog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVz
c0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQp
OwogICAgICAgICBicmVhazsKQEAgLTM2Niw2ICszNjYsOSBAQCBkb3VibGUgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNTYW1wbGVTaXplKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAorICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVNpemVzID0gZGlz
Y3JldGVTYW1wbGVTaXplcygpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0
cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVTaXplcyk7CisKICAg
ICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7CiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2Uo
cmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDIxLDExICs0MjQsMTggQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci1zdGF0aWMgdm9pZCBhcHBseU51bWVyaWND
b25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFpbnQs
IFZhbHVlVHlwZSBjdXJyZW50LCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1pbiwgVmFsdWVUeXBlIGNh
cGFiaWxpdHlNYXgsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSwgdm9pZCAoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6KmFwcGxpZXIpKFZhbHVlVHlwZSkpCitzdGF0aWMgdm9pZCBhcHBseU51bWVy
aWNDb25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFp
bnQsIFZhbHVlVHlwZSBjdXJyZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWYWx1ZVR5cGU+PiBk
aXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5
cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlLCB2b2lkIChSZWFs
dGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKIHsKKyAgICBpZiAoZGlzY3Jl
dGVDYXBhYmlsaXR5VmFsdWVzKSB7CisgICAgICAgIGludCB2YWx1ZSA9IGNvbnN0cmFpbnQudmFs
dWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMoY3VycmVudCwgKmRpc2NyZXRlQ2FwYWJpbGl0
eVZhbHVlcyk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBjdXJyZW50KQorICAgICAgICAgICAgKHNv
dXJjZS4qYXBwbGllcikodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgVmFs
dWVUeXBlIHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShjdXJyZW50
LCBjYXBhYmlsaXR5TWluLCBjYXBhYmlsaXR5TWF4KTsKICAgICBpZiAodmFsdWUgIT0gY3VycmVu
dCkKLSAgICAgICAgKHNvdXJjZS0+KmFwcGxpZXIpKHZhbHVlKTsKKyAgICAgICAgKHNvdXJjZS4q
YXBwbGllcikodmFsdWUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5U2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCkBAIC00NDIsMzUgKzQ1
MiwxNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgYXV0byYgY2FwYWJpbGl0aWVzID0g
dGhpcy0+Y2FwYWJpbGl0aWVzKCk7CiAgICAgc3dpdGNoIChjb25zdHJhaW50LmNvbnN0cmFpbnRU
eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOiB7Ci0gICAgICAg
IEFTU0VSVChjb25zdHJhaW50LmlzSW50KCkpOwotICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5z
dXBwb3J0c1dpZHRoKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50
KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzaXplKCkud2lkdGgoKSwgcmFu
Z2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRoKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OldpZHRoOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6IHsKLSAgICAgICAg
QVNTRVJUKGNvbnN0cmFpbnQuaXNJbnQoKSk7Ci0gICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1
cHBvcnRzSGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWlu
dChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KSwgc2l6ZSgpLmhlaWdodCgpLCBy
YW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50LCB0aGlzLCAmUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOiB7Ci0g
ICAgICAgIEFTU0VSVChjb25zdHJhaW50LmlzRG91YmxlKCkpOwotICAgICAgICBpZiAoIWNhcGFi
aWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgIGFwcGx5
TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCks
IGZyYW1lUmF0ZSgpLCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgp
LmFzRG91YmxlLCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKTsKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6QXNwZWN0UmF0aW86IHsKICAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNE
b3VibGUoKSk7CkBAIC00NzgsNyArNDcwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjph
cHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0
UmF0aW8oKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVD
b25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgcmFuZ2UucmFuZ2VNaW4oKS5h
c0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgdGhpcywgJlJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChk
b3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgeyB9
LCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCAq
dGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC00ODgsNyArNDgwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjphcHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMudm9s
dW1lKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29u
c3RyYWludD4oY29uc3RyYWludCksIHZvbHVtZSgpLCByYW5nZS5yYW5nZU1pbigpLmFzRG91Ymxl
LCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0Vm9sdW1lKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3Vi
bGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgdm9sdW1lKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4o
KS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgKnRoaXMsICZSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ5OCw3
ICs0OTAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7Ci0gICAgICAgIGFw
cGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCks
IHNhbXBsZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOworICAgICAg
ICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFp
bnQpLCBzYW1wbGVSYXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFuZ2UucmFuZ2VNaW4o
KS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRTYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MDgsNyAr
NTAwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnQoY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgpOwotICAgICAgICBhcHBs
eU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBz
YW1wbGVTaXplKCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJ
bnQsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKTsKKyAgICAgICAg
YXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50
KSwgc2FtcGxlU2l6ZSgpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdl
TWF4KCkuYXNJbnQsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtODIzLDggKzgxNSw2IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50
JiBjb25zdHJhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBGSVhNRTogYXBwbHlTaXpl
QW5kRnJhbWVSYXRlIHNob3VsZCB0YWtlIE1lZGlhQ29uc3RyYWludCogaW5zdGVhZCBvZiBzdGQ6
Om9wdGlvbmFsPD4gc28gaXQgY2FuIHNlZSBpZiBhIGNvbnN0cmFpbnQgaXMgYW4gZXhhY3QsIG1p
biwgbWF4LAotICAgIC8vIG9yIGlkZWFsLCBhbmQgY2hvb3NlIHRoZSBjb3JyZWN0IHZhbHVlIGZv
ciBwcm9wZXJ0aWVzIHdpdGggbm9uLWRpc2NyZWV0IGNhcGFiaWxpdGllcyB3aGVuIG5lY2Vzc2Fy
eS4KICAgICBpZiAod2lkdGggfHwgaGVpZ2h0IHx8IGZyYW1lUmF0ZSkKICAgICAgICAgYXBwbHlT
aXplQW5kRnJhbWVSYXRlKFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUo
ZnJhbWVSYXRlKSk7CiAKQEAgLTg2NSwxMSArODU1LDE0IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmIChzaXplID09IG1fc2l6
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFhcHBseVNpemUoc2l6ZSkpCi0gICAgICAg
IHJldHVybjsKKyAgICBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
PiBjaGFuZ2VkOworICAgIGlmIChtX3NpemUud2lkdGgoKSAhPSBzaXplLndpZHRoKCkpCisgICAg
ICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgp
OworICAgIGlmIChtX3NpemUuaGVpZ2h0KCkgIT0gc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgY2hh
bmdlZC5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQpOwogCiAg
ICAgbV9zaXplID0gc2l6ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdz
RGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFdp
ZHRoKGludCB3aWR0aCkKQEAgLTg3NywxNSArODcwLDExIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0V2lkdGgoaW50IHdpZHRoKQogICAgIGlmICh3aWR0aCA9PSBtX3NpemUud2lkdGgo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGhlaWdodCA9IG1fYXNwZWN0UmF0aW8gPyB3
aWR0aCAvIG1fYXNwZWN0UmF0aW8gOiBtX3NpemUuaGVpZ2h0KCk7Ci0gICAgaWYgKCFhcHBseVNp
emUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fc2l6
ZS5zZXRXaWR0aCh3aWR0aCk7CiAgICAgaWYgKG1fYXNwZWN0UmF0aW8pCiAgICAgICAgIG1fc2l6
ZS5zZXRIZWlnaHQod2lkdGggLyBtX2FzcGVjdFJhdGlvKTsKIAotICAgIHNldHRpbmdzRGlkQ2hh
bmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdo
dCB9KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQoaW50IGhlaWdo
dCkKQEAgLTg5Myw3OSArODgyLDg1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVp
Z2h0KGludCBoZWlnaHQpCiAgICAgaWYgKGhlaWdodCA9PSBtX3NpemUuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCB3aWR0aCA9IG1fYXNwZWN0UmF0aW8gPyBoZWlnaHQgKiBt
X2FzcGVjdFJhdGlvIDogbV9zaXplLndpZHRoKCk7Ci0gICAgaWYgKCFhcHBseVNpemUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX2FzcGVjdFJh
dGlvKQotICAgICAgICBtX3NpemUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICBtX3NpemUuc2V0
V2lkdGgoaGVpZ2h0ICogbV9hc3BlY3RSYXRpbyk7CiAgICAgbV9zaXplLnNldEhlaWdodChoZWln
aHQpOwogCi0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZSh7
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKLSAgICBpZiAobV9mcmFtZVJhdGUg
PT0gcmF0ZSB8fCAhYXBwbHlGcmFtZVJhdGUocmF0ZSkpCisgICAgaWYgKG1fZnJhbWVSYXRlID09
IHJhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKLSAgICBz
ZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRBc3BlY3RSYXRpbyhkb3VibGUgcmF0aW8pCiB7Ci0gICAgaWYgKG1fYXNwZWN0
UmF0aW8gPT0gcmF0aW8gfHwgIWFwcGx5QXNwZWN0UmF0aW8ocmF0aW8pKQorICAgIGlmIChtX2Fz
cGVjdFJhdGlvID09IHJhdGlvKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2FzcGVjdFJhdGlv
ID0gcmF0aW87CiAgICAgbV9zaXplLnNldEhlaWdodChtX3NpemUud2lkdGgoKSAvIHJhdGlvKTsK
LSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKHsgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpBc3BlY3RSYXRpbywgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFj
aW5nTW9kZSBtb2RlKQogewotICAgIGlmIChtX2ZhY2luZ01vZGUgPT0gbW9kZSB8fCAhYXBwbHlG
YWNpbmdNb2RlKG1vZGUpKQorICAgIGlmIChtX2ZhY2luZ01vZGUgPT0gbW9kZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9mYWNpbmdNb2RlID0gbW9kZTsKLSAgICBzZXR0aW5nc0RpZENoYW5n
ZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RmxhZzo6RmFjaW5nTW9kZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9s
dW1lKGRvdWJsZSB2b2x1bWUpCiB7Ci0gICAgaWYgKG1fdm9sdW1lID09IHZvbHVtZSB8fCAhYXBw
bHlWb2x1bWUodm9sdW1lKSkKKyAgICBpZiAobV92b2x1bWUgPT0gdm9sdW1lKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgp
OworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zzo6Vm9sdW1lKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRl
KGludCByYXRlKQogewotICAgIGlmIChtX3NhbXBsZVJhdGUgPT0gcmF0ZSB8fCAhYXBwbHlTYW1w
bGVSYXRlKHJhdGUpKQorICAgIGlmIChtX3NhbXBsZVJhdGUgPT0gcmF0ZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zYW1wbGVSYXRlID0gcmF0ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgp
OworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zzo6U2FtcGxlUmF0ZSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1l
TWVkaWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6
ZShpbnQgc2l6ZSkKIHsKLSAgICBpZiAobV9zYW1wbGVTaXplID09IHNpemUgfHwgIWFwcGx5U2Ft
cGxlU2l6ZShzaXplKSkKKyAgICBpZiAobV9zYW1wbGVTaXplID09IHNpemUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2FtcGxlU2l6ZSA9IHNpemU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2Uo
KTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc6OlNhbXBsZVNpemUpOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVjaG9DYW5j
ZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKQogewotICAgIGlmIChtX2VjaG9DYW5jZWxs
YXRpb24gPT0gZWNob0NhbmNlbGxhdGlvbiB8fCAhYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGVjaG9D
YW5jZWxsYXRpb24pKQorICAgIGlmIChtX2VjaG9DYW5jZWxsYXRpb24gPT0gZWNob0NhbmNlbGxh
dGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0Nh
bmNlbGxhdGlvbjsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RWNob0NhbmNlbGxhdGlvbik7
CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNDg0
MTliYWQwMTg5ZjcyNDY5YzI2Y2NjNjU0MDg0M2E3MDBhMmZlMy4uZTA4ZTY1NmUzZTcxZTEwNmQ2
OWRmZjkwN2Y3NjgyNmI2YTc0M2QyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNjksMzUgKzE2
OSwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsKICAgICB2b2lkIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpOwogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUm
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZG91YmxlIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSYXRlOyB9CiAgICAgdm9pZCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKLSAgICB2
aXJ0dWFsIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgZG91YmxlIGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQog
ICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oZG91YmxlKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlB
c3BlY3RSYXRpbyhkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9mYWNpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlG
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dm9sdW1lOyB9CiAgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlKTsKLSAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlWb2x1bWUoZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgaW50IHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KICAgICB2b2lkIHNldFNhbXBsZVJh
dGUoaW50KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IGRpc2NyZXRl
U2FtcGxlUmF0ZXMoKSBjb25zdDsKIAogICAgIGludCBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVTaXplOyB9CiAgICAgdm9pZCBzZXRTYW1wbGVTaXplKGludCk7Ci0gICAgdmly
dHVhbCBib29sIGFwcGx5U2FtcGxlU2l6ZShpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29u
c3Q7CiAKICAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9D
YW5jZWxsYXRpb247IH0KICAgICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCk7Ci0gICAg
dmlydHVhbCBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwpAQCAtMjEwLDcgKzIwNCw3IEBA
IHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYsIFN0cmluZyYpOwogICAgIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IE1lZGlh
Q29uc3RyYWludCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdl
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xh
dGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtMjc0LDggKzI2OCw4IEBAIHByaXZh
dGU6CiAgICAgZG91YmxlIG1fZml0bmVzc1Njb3JlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGUgbV9mYWNpbmdNb2RlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpV
c2VyfTsKIAotICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJvZHVjaW5n
RGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fY2FwdHVyZURpZEZhaWxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcAppbmRleCA2YTZkY2ZlZDVmN2I1YTYyNzMyODllZWVjMzMxM2UxZmJmODY5
ODI0Li5mYTgzYjIxZjBkMDdhMmJjNDFlOWQwNGZiNjA4MzJjNjg5ZjczMTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKQEAgLTY5LDYgKzY5LDQzIEBAIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dmlkZW9GCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93bjsKIH0KIAorT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zz4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpkaWZmZXJlbmNlKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgdGhhdCkgY29uc3QKK3sKKyAgICBPcHRpb25TZXQ8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBkaWZmZXJlbmNlOworCisgICAgaWYgKHdpZHRo
KCkgIT0gdGhhdC53aWR0aCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OldpZHRoKTsKKyAgICBpZiAoaGVpZ2h0KCkgIT0gdGhhdC5oZWlnaHQoKSkKKyAg
ICAgICAgZGlmZi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpIZWlnaHQpOworICAg
IGlmIChhc3BlY3RSYXRpbygpICE9IHRoYXQuYXNwZWN0UmF0aW8oKSkKKyAgICAgICAgZGlmZi5h
ZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpBc3BlY3RSYXRpbyk7CisgICAgaWYgKGZy
YW1lUmF0ZSgpICE9IHRoYXQuZnJhbWVSYXRlKCkpCisgICAgICAgIGRpZmYuYWRkKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RnJhbWVSYXRlKTsKKyAgICBpZiAoZmFjaW5nTW9kZSgpICE9
IHRoYXQuZmFjaW5nTW9kZSgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZhY2luZ01vZGUpOworICAgIGlmICh2b2x1bWUoKSAhPSB0aGF0LnZvbHVtZSgp
KQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZvbHVtZSk7
CisgICAgaWYgKHNhbXBsZVJhdGUoKSAhPSB0aGF0LnNhbXBsZVJhdGUoKSkKKyAgICAgICAgZGlm
Zi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpTYW1wbGVSYXRlKTsKKyAgICBpZiAo
c2FtcGxlU2l6ZSgpICE9IHRoYXQuc2FtcGxlU2l6ZSgpKQorICAgICAgICBkaWZmLmFkZChSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlNhbXBsZVNpemUpOworICAgIGlmIChlY2hvQ2FuY2Vs
bGF0aW9uKCkgIT0gdGhhdC5lY2hvQ2FuY2VsbGF0aW9uKCkpCisgICAgICAgIGRpZmYuYWRkKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RWNob0NhbmNlbGxhdGlvbik7CisgICAgaWYgKGRl
dmljZUlkKCkgIT0gdGhhdC5kZXZpY2VJZCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkRldmljZUlkKTsKKyAgICBpZiAoZ3JvdXBJZCgpICE9IHRoYXQu
Z3JvdXBJZCgpKQorICAgICAgICBkaWZmLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
Okdyb3VwSWQpOworICAgIGlmIChsYWJlbCgpICE9IHRoYXQubGFiZWwoKSkKKyAgICAgICAgZGlm
Zi5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMYWJlbCk7CisgICAgaWYgKGRpc3Bs
YXlTdXJmYWNlKCkgIT0gdGhhdC5kaXNwbGF5U3VyZmFjZSgpKQorICAgICAgICBkaWZmLmFkZChS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlKTsKKyAgICBpZiAobG9n
aWNhbFN1cmZhY2UoKSAhPSB0aGF0LmxvZ2ljYWxTdXJmYWNlKCkpCisgICAgICAgIGRpZmYuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6TG9naWNhbFN1cmZhY2UpOworCisgICAgcmV0
dXJuIGRpZmY7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKaW5kZXgg
MDFjMTUyM2I4MjBlYjk0NjA4OTIxMzBkOTZmZGJiY2FkNjUzZGIzMi4uYjA0NGM1YzA3ZWQ1ZDkx
MjMwM2NmODdjYWZkODczNTliODY2M2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpA
QCAtNDMsNiArNDQsMjcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9kZShS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3RhdGlj
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFjaW5n
TW9kZUVudW0oY29uc3QgU3RyaW5nJik7CiAKKyAgICBlbnVtIEZsYWcgeworICAgICAgICBXaWR0
aCA9IDEgPDwgMCwKKyAgICAgICAgSGVpZ2h0ID0gMSA8PCAxLAorICAgICAgICBBc3BlY3RSYXRp
byA9IDEgPDwgMiwKKyAgICAgICAgRnJhbWVSYXRlID0gMSA8PCAzLAorICAgICAgICBGYWNpbmdN
b2RlID0gMSA8PCA0LAorICAgICAgICBWb2x1bWUgPSAxIDw8IDUsCisgICAgICAgIFNhbXBsZVJh
dGUgPSAxIDw8IDYsCisgICAgICAgIFNhbXBsZVNpemUgPSAxIDw8IDcsCisgICAgICAgIEVjaG9D
YW5jZWxsYXRpb24gPSAxIDw8IDgsCisgICAgICAgIERldmljZUlkID0gMSA8PCA5LAorICAgICAg
ICBHcm91cElkID0gMSA8PCAxMCwKKyAgICAgICAgTGFiZWwgPSAxIDw8IDExLAorICAgICAgICBE
aXNwbGF5U3VyZmFjZSA9IDEgPDwgMTIsCisgICAgICAgIExvZ2ljYWxTdXJmYWNlID0gMSA8PCAx
MywKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8RmxhZz4gYWxsRmxh
Z3MoKSB7IHJldHVybiB7IFdpZHRoLCBIZWlnaHQsIEFzcGVjdFJhdGlvLCBGcmFtZVJhdGUsIEZh
Y2luZ01vZGUsIFZvbHVtZSwgU2FtcGxlUmF0ZSwgU2FtcGxlU2l6ZSwgRWNob0NhbmNlbGxhdGlv
biwgRGV2aWNlSWQsIEdyb3VwSWQsIExhYmVsLCBEaXNwbGF5U3VyZmFjZSwgTG9naWNhbFN1cmZh
Y2UgfTsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZz4gZGlmZmVyZW5jZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmKSBjb25zdDsKKwogICAgIGV4cGxpY2l0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cygpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgc3VwcG9ydHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcG9ydGVkQ29uc3RyYWludHMuc3VwcG9ydHNXaWR0aCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IDJkMWZhZWFkMTc5ZDcwNWY0MTk4Y2MxNGU1MWJjZDg4YjAwZjZkMDMuLmYz
ZmM0ZWE1NTFiOGU3YjJhMGIzMDJiMDg0ZDIwMDFjMTdiNWFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCkBAIC0xMjUsMTcgKzEyNSw2IEBAIEludFNpemUgUmVhbHRpbWVWaWRlb1NvdXJjZTo6
YmVzdFN1cHBvcnRlZENhcHR1cmVTaXplRm9yV2lkdGhBbmRIZWlnaHQoc3RkOjpvcHRpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYm9vbCBSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBJbnRTaXplIHN1cHBvcnRlZFNpemUgPSBiZXN0U3Vw
cG9ydGVkQ2FwdHVyZVNpemVGb3JXaWR0aEFuZEhlaWdodChzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOwotICAgIGlmIChzdXBwb3J0ZWRTaXplLmlzRW1wdHkoKSkgewotICAgICAgICBMT0co
TWVkaWEsICJSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUoJXApLCB1bmFibGUgZmluZCBv
ciBzZXQgcHJlc2V0IGZvciB3aWR0aDogJWksIGhlaWdodDogJWkiLCB0aGlzLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlTaXplQW5k
RnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhl
aWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGZyYW1lUmF0ZSkKIHsKICAgICBpZiAod2lkdGgg
fHwgaGVpZ2h0KSB7CkBAIC0xNjgsMTEgKzE1Nyw2IEBAIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAg
ICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoc2FtcGxlKTsKIH0KIAotYm9vbCBSZWFsdGltZVZpZGVv
U291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKLXsKLSAgICByZXR1cm4gc3VwcG9y
dHNGcmFtZVJhdGUocmF0ZSk7Ci19Ci0KIGJvb2wgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9y
dHNGcmFtZVJhdGUoZG91YmxlIGZyYW1lUmF0ZSkKIHsKICAgICBkb3VibGUgZXBzaWxvbiA9IDAu
MDAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDFjMjU3ZjZkZGJhNjc1NDM1NTUwMTEwYzMwMGMw
MTg5ZGNiZTY1MTAuLjZhMmQ0YTExZjMyZjBlNjc1ZGFkMjAyNGQ5NTliM2ZiMjcwYTY1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZVZpZGVvU291cmNlLmgKQEAgLTQ2LDggKzQ2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
cHJlcGFyZVRvUHJvZHVjZURhdGEoKTsKICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJh
dGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKLSAgICBib29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7
CiAKICAgICB2b2lkIHNldFN1cHBvcnRlZEZyYW1lUmF0ZXMoVmVjdG9yPGRvdWJsZT4mJik7CiAg
ICAgdm9pZCBzZXRTdXBwb3J0ZWRDYXB0dXJlU2l6ZXMoY29uc3QgVmVjdG9yPEludFNpemU+JiYg
c2l6ZXMpIHsgbV9zdXBwb3J0ZWRDYXB0dXJlU2l6ZXMgPSBzaXplczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCAwZDU3YjIz
ZjQ1MjgyZmJiMjdhYmE5N2JiODk5NGVlYTA1MzBkZjhiLi43ZTIxNjczNWQ4YzEzN2M5YzY1YzBi
MzMzYTQxNTAxMTk5MjU5OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTcyLDkgKzE3MiwxMiBAQCBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmNh
cGFiaWxpdGllcwogICAgIHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgpOwogfQogCi1ib29s
IEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVS
YXRlKQordm9pZCBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQog
ewotICAgIHJldHVybiBtX2NhcHR1cmVyLT5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOworICAg
IGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OlNhbXBsZVJhdGUpKQorICAgICAgICBtX2NhcHR1cmVyLT5zZXRTYW1wbGVSYXRlKHNhbXBsZVJh
dGUoKSk7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0
aW5ncyk7CiB9CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0
dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmgKaW5kZXggM2ZhNGE5YzJlMzIyNTIyN2E2
MmUwYzMxMjY2ZjI0YmVkOGUyNjBhMy4uOTg1YTJlNDJkMGY2MGE4MDY5MGRjNzFlMmQ1OGYzZjc0
ZjAwZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuaApAQCAtNTAsOSArNTAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAK
IHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKICAgICBib29s
IGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29s
IGFwcGx5Vm9sdW1lKGRvdWJsZSkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc2V0
dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zz4pIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+
IG1fY2FwdHVyZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKaW5kZXggNWE5ZGZiNTE3ZmEyNDg3ZTFiOTA4NGRjYjRiMjBlMDhhYjU0
ZGRiMC4uYmVhOGRhOTkzMjljYzE2YjEzZjNlMjhhOTRmYmE5NjUxMDYwYmZkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEw
NywxOCArMTA3LDE0IEBAIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6fkdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZSgpCiB7CiB9CiAKLWJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSAmc2l6ZSkKK3ZvaWQgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAgICBtX2NhcHR1cmVyLT5zZXRTaXpl
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5z
QW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCisgICAgICAgIG1fY2FwdHVyZXIt
PnNldFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSk7CisgICAgaWYgKHNldHRp
bmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRl
KSkKKyAgICAgICAgbV9jYXB0dXJlci0+c2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKIAotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBw
bHlGcmFtZVJhdGUoZG91YmxlIGZyYW1lcmF0ZSkKLXsKLSAgICBtX2NhcHR1cmVyLT5zZXRGcmFt
ZVJhdGUoZnJhbWVyYXRlKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmgKaW5kZXggMzc5YmE3ZTBmZDZlNzY3
YjNjYjcyOGQ4ZDU4ZGRlMGJjZmMyZWYxOC4uMTYwOWIwMGM0OWI2YmM4MWM4M2I3YThjNDNmODRm
ZWNmNDc4Y2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuaApAQCAtMzcsNyArMzcsNiBAQCBwdWJsaWM6CiAgICAgR3N0RWxlbWVudCogcGlw
ZWxpbmUoKSB7IHJldHVybiBtX2NhcHR1cmVyLT5waXBlbGluZSgpOyB9CiAgICAgR1N0cmVhbWVy
Q2FwdHVyZXIqIGNhcHR1cmVyKCkgeyByZXR1cm4gbV9jYXB0dXJlci5nZXQoKTsgfQogCi0KIHBy
b3RlY3RlZDoKICAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBnY2hhciAqIHNvdXJjZV9mYWN0b3J5
KTsKICAgICBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZSk7CkBAIC01Miw5ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEdzdEZsb3dSZXR1cm4g
bmV3U2FtcGxlQ2FsbGJhY2soR3N0RWxlbWVudCosIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZSopOwogCiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwotICAgIGJv
b2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBmaW5hbDsKLSAgICBib29sIGFwcGx5QXNwZWN0UmF0
aW8oZG91YmxlKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENo
YW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4gbV9jYXB0dXJl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDc0OGU0ODAwYzU1MWY4OTUy
N2JjYTYwZWI5NjM3YzQ0OTVmNGU3NjguLmQxMWQxNTNlMTEzNGYzMzcwN2E0MDE2YWU4NTY4ZGJk
ZGIwNDE3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC03MywxMyArNzMsMTIg
QEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVS
YXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwg
c3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWw7Ci0gICAgYm9vbCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RnJhbWVSYXRlKGRvdWJsZSk7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0
aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5h
bDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5n
c0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikg
ZmluYWw7CiAgICAgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYp
IGZpbmFsOwogICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBj
b21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0K
aW5kZXggMTdlMDU1NmQ5YzY3ODEwMjkzZWUyODlkMWU5ZjAyYTdlY2NhMjA0Zi4uNmQ5MDBhOGZk
OWE2ZTI5ZDRkOWJkMWEzOWRiYTliZmY0YWRiMzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5tbQpAQCAtMjcwLDEwICsyNzAsMTAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6
Y29tbWl0Q29uZmlndXJhdGlvbigpCiAgICAgICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJh
dGlvbl07CiB9CiAKLXZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KCkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewogICAgIG1f
Y3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NE
aWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpIGNvbnN0CkBAIC0zNTcsMTcgKzM1
Nyw2IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpjYXBhYmlsaXRpZXMoKSBjb25zCiAgICAgcmV0dXJuICptX2NhcGFiaWxpdGll
czsKIH0KIAotYm9vbCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCi17Ci0gICAgTlNTdHJpbmcgKnByZXNldCA9IGJlc3RTZXNzaW9uUHJlc2V0Rm9y
VmlkZW9EaW1lbnNpb25zKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFw
cmVzZXQgfHwgIVtzZXNzaW9uKCkgY2FuU2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoJXApLCB1bmFi
bGUgZmluZCBvciBzZXQgcHJlc2V0IGZvciB3aWR0aDogJWksIGhlaWdodDogJWkiLCB0aGlzLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHNldFByZXNldChwcmVzZXQpOwotfQotCiBJbnRTaXplIEFWVmlkZW9D
YXB0dXJlU291cmNlOjpzaXplRm9yUHJlc2V0KE5TU3RyaW5nKiBwcmVzZXQpCiB7CiAgICAgaWYg
KCFwcmVzZXQpCkBAIC00MDUsMTQgKzM5NCwxNCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRQcmVzZXQoTlNTdHJpbmcgKnByZXNldCkKICAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0
VmlkZW9TZXR0aW5nczpzZXR0aW5nc0RpY3Rpb25hcnldOwogI2VuZGlmCiAgICAgfSBAY2F0Y2go
TlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6YXBwbHlTaXplKCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBk
ZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tl
eGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3Vy
aW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmdd
LCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJlU291
cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OnNldEZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFM
OwogICAgIGRvdWJsZSBlcHNpbG9uID0gMC4wMDAwMTsKQEAgLTQyNSw4ICs0MTQsOCBAQCBib29s
IEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICB9
CiAKICAgICBpZiAoIWJlc3RGcmFtZVJhdGVSYW5nZSB8fCAhaXNGcmFtZVJhdGVTdXBwb3J0ZWQo
cmF0ZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5
RnJhbWVSYXRlKCVwKSwgZnJhbWUgcmF0ZSAlZiBub3Qgc3VwcG9ydGVkIGJ5IHZpZGVvIGRldmlj
ZSIsIHRoaXMsIHJhdGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIExPRyhNZWRp
YSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApLCBmcmFtZSByYXRlICVm
IG5vdCBzdXBwb3J0ZWQgYnkgdmlkZW8gZGV2aWNlIiwgdGhpcywgcmF0ZSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKQEAgLTQ0MiwxNyArNDMx
LDE3IEBAIGJvb2wgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSBy
YXRlKQogICAgICAgICAgICAgW2RldmljZSgpIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAg
ICAgICB9CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBM
T0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBleGNl
cHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0
aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVwKSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBk
ZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tl
eGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3Vy
Y2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwgZmFpbGVkIHRvIGxvY2sgdmlkZW8gZGV2aWNlIGZvciBj
b25maWd1cmF0aW9uOiAlcyIsIHRoaXMsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBMT0coTWVkaWEsICJB
VlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVwKSwgZmFpbGVkIHRvIGxvY2sgdmlk
ZW8gZGV2aWNlIGZvciBjb25maWd1cmF0aW9uOiAlcyIsIHRoaXMsIFtbZXJyb3IgbG9jYWxpemVk
RGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZSglcCkgLSBz
ZXQgZnJhbWUgcmF0ZSByYW5nZSB0byAlZiIsIHRoaXMsIHJhdGUpOwotICAgIHJldHVybiB0cnVl
OworICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXAp
IC0gc2V0IGZyYW1lIHJhdGUgcmFuZ2UgdG8gJWYiLCB0aGlzLCByYXRlKTsKKyAgICByZXR1cm47
CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCkBAIC00NjEsNyArNDUwLDcgQEAgdm9pZCBBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50
PiB3aWR0aCwgc3RkOjoKICAgICAgICAgc2V0UHJlc2V0KGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlk
ZW9EaW1lbnNpb25zKFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCkpKTsKIAogICAgIGlm
IChmcmFtZVJhdGUpCi0gICAgICAgIGFwcGx5RnJhbWVSYXRlKGZyYW1lUmF0ZS52YWx1ZSgpKTsK
KyAgICAgICAgc2V0RnJhbWVSYXRlKGZyYW1lUmF0ZS52YWx1ZSgpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBpbnQgc2Vuc29yT3JpZW50YXRpb24oQVZDYXB0dXJlVmlkZW9PcmllbnRhdGlvbiB2aWRl
b09yaWVudGF0aW9uKQpAQCAtNjI3LDEwICs2MTYsMTUgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxl
QnUKICAgICAgICAgc3RkOjpzd2FwKGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0
KTsKIAogICAgIGlmIChkaW1lbnNpb25zLndpZHRoICE9IG1fd2lkdGggfHwgZGltZW5zaW9ucy5o
ZWlnaHQgIT0gbV9oZWlnaHQpIHsKKyAgICAgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICAgICAgaWYgKG1fd2lkdGggIT0gZGltZW5z
aW9ucy53aWR0aCkKKyAgICAgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6V2lkdGgpOworICAgICAgICBpZiAobV9oZWlnaHQgIT0gZGltZW5zaW9u
cy5oZWlnaHQpCisgICAgICAgICAgICBjaGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc6OkhlaWdodCk7CisKICAgICAgICAgbV93aWR0aCA9IGRpbWVuc2lvbnMud2lk
dGg7CiAgICAgICAgIG1faGVpZ2h0ID0gZGltZW5zaW9ucy5oZWlnaHQ7Ci0KLSAgICAgICAgc2V0
dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoY2hhbmdlZCk7CiAg
ICAgfQogCiAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVh
dGUobV9idWZmZXIuZ2V0KCksIG1fc2FtcGxlUm90YXRpb24sIFtjb25uZWN0aW9uIGlzVmlkZW9N
aXJyb3JlZF0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA2Yzc0
NDA3ZTE1ZmRiMTYxODFmZmE1NTdjMzFlNjIxYzEyZjIyYTAyLi43ZDcyN2NjYTYzYjVmYTgxNjlj
NzAxNTM5MmNmMzRiNTdjNWY1NWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTg3NiwzOSArODc2LDE5IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKSBjb25zdAogICAgIHJldHVybiBtX2N1
cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwogfQogCi12b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGlu
Z3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4g
c2V0dGluZ3MpCiB7Ci0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7Ci0gICAg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKLX0KLQotYm9vbCBDb3Jl
QXVkaW9DYXB0dXJlU291cmNlOjphcHBseVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCi17Ci0g
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGRlc2NyaWJlIHNhbXBsZSByYXRlIGFz
IGEgZGlzY3JlZXQgcmFuZ2UgY29uc3RyYWludCBzbyB0aGF0IHdlIG9ubHkgZW50ZXIgaGVyZSB3
aXRoIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkLgotICAgIHN3aXRjaCAoc2FtcGxlUmF0ZSkg
ewotICAgIGNhc2UgODAwMDoKLSAgICBjYXNlIDE2MDAwOgotICAgIGNhc2UgMzIwMDA6Ci0gICAg
Y2FzZSA0NDEwMDoKLSAgICBjYXNlIDQ4MDAwOgotICAgIGNhc2UgOTYwMDA6Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2V0dGlu
Z3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpFY2hvQ2FuY2Vs
bGF0aW9uKSkgeworICAgICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zZXRF
bmFibGVFY2hvQ2FuY2VsbGF0aW9uKGVjaG9DYW5jZWxsYXRpb24oKSk7CisgICAgICAgIHNjaGVk
dWxlUmVjb25maWd1cmF0aW9uKCk7CisgICAgfQorICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAg
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0
ZSgpKTsKKyAgICAgICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKICAgICB9CiAKLSAgICBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUp
OwotCi0gICAgc2NoZWR1bGVSZWNvbmZpZ3VyYXRpb24oKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBseUVjaG9DYW5jZWxsYXRpb24oYm9v
bCBlbmFibGVFY2hvQ2FuY2VsbGF0aW9uKQotewotICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNp
bmdsZXRvbigpLnNldEVuYWJsZUVjaG9DYW5jZWxsYXRpb24oZW5hYmxlRWNob0NhbmNlbGxhdGlv
bik7Ci0KLSAgICBzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpOwotICAgIHJldHVybiB0cnVlOwor
ICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjpzY2hlZHVsZVJlY29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0Nh
cHR1cmVTb3VyY2UuaAppbmRleCA3OTJlYWYwN2UwY2VmYjQ3ODVlMGY3NmYyNTI1NjlmNjM2NjEx
NDBlLi5jNDBkM2M2YzM0ZDYwY2Y0YmE5Y2NlZGJmMDIxZDNkNTkzZDJkZGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsMTMgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CiAKLSAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgZmluYWw7Ci0gICAgYm9vbCBh
cHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4
MDAwLCAxNjAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgOTYwMDAgfSB9OyB9CiAKICAgICBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOworICAgIHZv
aWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZz4pIGZpbmFsOwogCiAgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggZTc0Y2JlZTc5
MmVmZTVkYTk0MjQxN2Q3ZjRlMjk1YzdlZTg1MjA3OS4uM2VjZDVjYTJjZGVkNDE3NWY1ZDQ3ZmEw
N2U4Yzg5OTA5MTZhMjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC05OCwxMCArOTgsMTcgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y3VycmVudFNldHRpbmdzLnZhbHVlKCk7CiB9CiAKLXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VD
b2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPiBzZXR0aW5ncykKIHsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUpICYmIG1fdGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX3MgLyBmcmFtZVJhdGUoKSk7CisK
KyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdo
dCB9KSkKKyAgICAgICAgbV9idWZmZXJBdHRyaWJ1dGVzID0gbnVsbHB0cjsKKwogICAgIG1fY3Vy
cmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0Rp
ZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6
c3RhcnRQcm9kdWNpbmdEYXRhKCkKQEAgLTExMSw3ICsxMTgsNyBAQCB2b2lkIERpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAjZW5kaWYKIAogICAgIG1fc3Rh
cnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV90aW1lci5zdGFydFJlcGVhdGlu
ZygxX21zICogbHJvdW5kKDEwMDAgLyBmcmFtZVJhdGUoKSkpOworICAgIG1fdGltZXIuc3RhcnRS
ZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwogfQogCiB2b2lkIERpc3BsYXlDYXB0dXJlU291
cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdEYXRhKCkKQEAgLTEyOSwyMyArMTM2LDYgQEAgU2Vjb25k
cyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbGFwc2VkVGltZSgpCiAgICAgcmV0dXJuIG1f
ZWxhcHNlZFRpbWUgKyAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSk7CiB9CiAK
LWJvb2wgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUm
IG5ld1NpemUpCi17Ci0gICAgaWYgKHNpemUoKSA9PSBuZXdTaXplKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIG1fYnVmZmVyQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUo
ZG91YmxlIHJhdGUpCi17Ci0gICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90
aW1lci5zdGFydFJlcGVhdGluZygxX21zICogbHJvdW5kKDEwMDAgLyByYXRlKSk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJh
bWUoKQogewogICAgIGlmIChtdXRlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hLmgKaW5kZXggNzg3N2UwYmFjNDkwY2IwZGYzMmRlMTkxZWM4NWI1OTU1M2VmMmExNy4uNDg0
YzFiMGE3Mjc4Mzk2Y2RlNmUxM2U0YTk5MWU3MmU1NDJlMjk1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDIxICs1NCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgU2Vjb25kcyBlbGFwc2VkVGlt
ZSgpOwotICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSBvdmVycmlkZTsKLSAgICBib29s
IGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8Q01T
YW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1ZmZlckZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVy
UmVmKTsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXJGcm9tSU9TdXJmYWNlKElPU3VyZmFjZVJlZik7CiAjZW5kaWYKIAorICAg
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pIG92ZXJyaWRlOworCiBwcml2YXRlOgogCiAgICAgYm9vbCBpc0NhcHR1cmVT
b3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgdm9pZCBlbWl0
RnJhbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAppbmRleCA2
ZDE0YjAzNTExMGIzY2VjNjkzZGRmMDcxOTA1M2RhZjhlMzNiNDBjLi45OWQ3OGVlYzdjNzAyZWNk
MTZlY2ZkYTBiODRkMGM1NmI5ZDRmM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MCw4ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOwogICAgIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjKGNvbnN0
IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICBib29sIGFwcGx5
U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTYW1wbGVTaXplKGludCkgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVJhdGVzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4geyB7IDQ0MTAwLCA0ODAwMCB9IH07IH0KIAogICAgIHZvaWQgZW1pdFNhbXBsZUJ1ZmZl
cnModWludDMyX3QpOwogICAgIHZvaWQgcmVuZGVyKFNlY29uZHMpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IDVhYmI4ZjI4YjI1ZDdhMzI3Mjg3
YzE2OWUzMjVhODU5Y2U0NjYzZmIuLjBjOGE0YmRlMjA1YzliOWIyYWIyYTg4ODk3NmJjOTc0OWMz
MzcxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU4LDMw
ICsxNTgsMjcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKFNlY29u
ZHMgZGVsdGEpCiAgICAgfQogfQogCi1ib29sIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjph
cHBseVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKLSAgICBpZiAoc2FtcGxlUmF0ZSA8IDQ0MTAwIHx8
IHNhbXBsZVJhdGUgPiA0ODAwMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzZXR0
aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJh
dGUpKSB7CisgICAgICAgIG1fZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgICAgICBt
X2F1ZGlvQnVmZmVyTGlzdCA9IG51bGxwdHI7CiAKLSAgICBpZiAoc2FtcGxlUmF0ZSA9PSB0aGlz
LT5zYW1wbGVSYXRlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBhdXRvIHJhdGUg
PSBzYW1wbGVSYXRlKCk7CisgICAgICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiByYXRlOwog
Ci0gICAgbV9mb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7Ci0gICAgbV9hdWRpb0J1ZmZlckxp
c3QgPSBudWxscHRyOworICAgICAgICBtX2JpcEJvcEJ1ZmZlci5ncm93KHNhbXBsZUNvdW50KTsK
KyAgICAgICAgbV9iaXBCb3BCdWZmZXIuZmlsbCgwKTsKIAotICAgIHNpemVfdCBzYW1wbGVDb3Vu
dCA9IDIgKiBzYW1wbGVSYXRlOworICAgICAgICBzaXplX3QgYmlwQm9wU2FtcGxlQ291bnQgPSBj
ZWlsKEJpcEJvcER1cmF0aW9uICogcmF0ZSk7CisgICAgICAgIHNpemVfdCBiaXBTdGFydCA9IDA7
CisgICAgICAgIHNpemVfdCBib3BTdGFydCA9IHJhdGU7CiAKLSAgICBtX2JpcEJvcEJ1ZmZlci5n
cm93KHNhbXBsZUNvdW50KTsKLSAgICBtX2JpcEJvcEJ1ZmZlci5maWxsKDApOwotCi0gICAgc2l6
ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0gY2VpbChCaXBCb3BEdXJhdGlvbiAqIHNhbXBsZVJhdGUp
OwotICAgIHNpemVfdCBiaXBTdGFydCA9IDA7Ci0gICAgc2l6ZV90IGJvcFN0YXJ0ID0gc2FtcGxl
UmF0ZTsKLQotICAgIGFkZEh1bShCaXBCb3BWb2x1bWUsIEJpcEZyZXF1ZW5jeSwgc2FtcGxlUmF0
ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYmlwU3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50
KTsKLSAgICBhZGRIdW0oQmlwQm9wVm9sdW1lLCBCb3BGcmVxdWVuY3ksIHNhbXBsZVJhdGUsIDAs
IG1fYmlwQm9wQnVmZmVyLmRhdGEoKSArIGJvcFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7Cisg
ICAgICAgIGFkZEh1bShCaXBCb3BWb2x1bWUsIEJpcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgbV9iaXBC
b3BCdWZmZXIuZGF0YSgpICsgYmlwU3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICAgICAg
YWRkSHVtKEJpcEJvcFZvbHVtZSwgQm9wRnJlcXVlbmN5LCByYXRlLCAwLCBtX2JpcEJvcEJ1ZmZl
ci5kYXRhKCkgKyBib3BTdGFydCwgYmlwQm9wU2FtcGxlQ291bnQpOworICAgIH0KIAotICAgIHJl
dHVybiB0cnVlOworICAgIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5n
ZShzZXR0aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgKaW5kZXggZjU4MzY3MTMzN2RmMDdhYTY0Y2E4ODNjYmZm
NjRlMGJhYTI3ZTliZS4uNzMxMjllMWJlN2NiNmRjYzE2NmZkNTU2ZTAwZmQxOTVlYzQ0Mzc0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKIAogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
ICAgICB2b2lkIHVwZGF0ZVNhbXBsZUJ1ZmZlcigpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTaXpl
KGNvbnN0IEludFNpemUmKSBmaW5hbDsKKyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlv
blNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAogICAgIHZv
aWQgb3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBt
b25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCmluZGV4IDRjY2VlMTkxMjYwNzRjYzA4MDcz
MTM4MGEyMTE3MjMwZTkzYzIwZGQuLjE3YjM1YmFhMTU3ZDVmNDQ2YmI5MDM5N2NjMzM2MTUxMDky
ZmU4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTE1
NCwxMyArMTU0LDExIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNh
bXBsZUJ1ZmZlcigpCiAgICAgZGlzcGF0Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2Ft
cGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSwgbV9kZXZpY2VPcmllbnRhdGlv
bikpOwogfQogCi1ib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjphcHBseVNpemUoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnNl
dHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc+IHNldHRpbmdzKQogewotICAgIGlmICghTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5
U2l6ZShuZXdTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9idWZmZXJQb29s
ID0gbnVsbHB0cjsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNB
bnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkKKyAgICAgICAgbV9idWZmZXJQb29s
ID0gbnVsbHB0cjsKKyAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFu
Z2Uoc2V0dGluZ3MpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpvcmll
bnRhdGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IDRiNDI1ZjliYTYyYjBmM2YwOTNhOTA2
ZmQ0YjJhZTQ5YzJhNDNjM2UuLmJiYWM4ZGE1ZTQzOWM4YTIwYTI4ZGVjZjU3N2RlY2Q2NjE4ZTdh
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2Eu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTczLDkgKzE3MywxNSBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Ojpwcm9jZXNzTmV3U2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZQogewogICAgIG1fYnVm
ZmVyID0gc2FtcGxlOwogICAgIGlmICh3aWR0aCAhPSBtX2N1cnJlbnRTZXR0aW5ncy53aWR0aCgp
IHx8IGhlaWdodCAhPSBtX2N1cnJlbnRTZXR0aW5ncy5oZWlnaHQoKSkgeworICAgICAgICBPcHRp
b25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBjaGFuZ2VkOworICAgICAg
ICBpZiAod2lkdGggIT0gbV9jdXJyZW50U2V0dGluZ3Mud2lkdGgoKSkKKyAgICAgICAgICAgIGNo
YW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOworICAg
ICAgICBpZiAoaGVpZ2h0ICE9IG1fY3VycmVudFNldHRpbmdzLmhlaWdodCgpKQorICAgICAgICAg
ICAgY2hhbmdlZC5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQp
OworCiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFdpZHRoKHdpZHRoKTsKICAgICAgICAg
bV9jdXJyZW50U2V0dGluZ3Muc2V0SGVpZ2h0KGhlaWdodCk7Ci0gICAgICAgIHNldHRpbmdzRGlk
Q2hhbmdlKCk7CisgICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogICAgIH0KIAog
ICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBs
ZSwgcm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFj
LmgKaW5kZXggZDI2YTI5NGUzNmU3OWU4YTNhMTE5NTBlMmFmMTg4N2M4MTI3NDc5Zi4uMGIxZjNl
ZjlmMmY4ZDk0YTlhMWViODg2Yjg1NDBlMDU5NzZhMzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNl
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVl
bkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksOCArNTksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgYXBw
bHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKLSAgICBib29sIGFwcGx5RnJhbWVSYXRlKGRv
dWJsZSkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKCkgZmluYWw7CiAKICAgICBib29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5E
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5tbQppbmRleCBiMTdlN2My
YjQ1ZTBkOTA1MjNhMmM0MjJjNmU4Y2NlNzc3MWJiMmQ4Li5lNmU0NDhjM2VjYWFmMDUwODM0ODA5
MzBkNWNkYzQwMzEwZTk4YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJl
U291cmNlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1MywyMSArMjUzLDEyIEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiAgICAgbV9pc1J1bm5pbmcgPSB0cnVlOwog
fQogCi1ib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjphcHBseVNpemUoY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNl
dHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc+IHNldHRpbmdzKQogewotICAgIGlmICghRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBw
bHlTaXplKG5ld1NpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2Rpc3BsYXlT
dHJlYW0gPSBudWxscHRyOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFNjcmVlbkRpc3Bs
YXlDYXB0dXJlU291cmNlTWFjOjphcHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKLXsKLSAgICBp
ZiAoZnJhbWVSYXRlKCkgIT0gcmF0ZSkKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnOjpGcmFtZVJhdGUgfSkpCiAgICAgICAgIG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7CiAK
LSAgICByZXR1cm4gRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUocmF0
ZSk7CisgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hh
bmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6
Y29tbWl0Q29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGYzYzkzN2ZmOGE1YmJk
NzJmNWY5ODM5YWQ3ZDk2ZWMyNDUyNjcyNWQuLjk2NTcyNzA4MmNiMzIzOTg5NTk2YjgxYWM2YTEz
YTZkOTEwZjEwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6Y2FwYWJpbGl0aWVzKCkgYwogICAgIHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgpOwog
fQogCi12b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKICAgICBtX2N1
cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpz
ZXR0aW5nc0RpZENoYW5nZSgpOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlk
Q2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCA0NDNkZDA3M2YwYjQzYmM1NjJiNGE3
YzFhMDM5ZDMyMDY1MTU2Mzk3Li43OWM2Njc4YWQwMTUzMTE2YzdhYjcxNzc0NDliYTY4OTUzMzJi
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5oCkBAIC01NCwxOCArNTQsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIo
U2Vjb25kcykgeyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgU2Vj
b25kcyByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDYwX21zOyB9CiAKIHByaXZhdGU6Ci0gICAg
Ym9vbCBhcHBseVZvbHVtZShkb3VibGUpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBi
b29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBi
b29sIGFwcGx5U2FtcGxlU2l6ZShpbnQpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBi
b29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0KICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRp
ZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZp
bmFsOwogCiAgICAgdm9pZCB0aWNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMWVlYzQ0MWQ3
OGVjYWQxNDVkOTdkMDFmNzQ4ZWMwODJlMWIyNmVhMy4uMmFlYWYyY2FmZTE3MzcyNmU0NGRlNjM3
N2YxMWZlYTE5YmM1ZTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTE5MiwxMCArMTkyLDE3IEBA
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUo
KTsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
KQordm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9u
U2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAg
bV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkgeworICAgICAgICBtX2Jhc2VGb250U2l6ZSA9
IHNpemUoKS5oZWlnaHQoKSAqIC4wODsKKyAgICAgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFz
ZUZvbnRTaXplICogMi41OworICAgICAgICBtX3N0YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6
ZSAqIC41OworICAgICAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBS
ZWFsdGltZVZpZGVvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZv
aWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0Q2FwdHVyZVRpbWVyKCkKQEAgLTIyNSwx
OSArMjMyLDYgQEAgU2Vjb25kcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZWxhcHNlZFRpbWUo
KQogICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9z
dGFydFRpbWUpOwogfQogCi1ib29sIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAoIVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFw
cGx5U2l6ZShzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9iYXNlRm9udFNp
emUgPSBzaXplLmhlaWdodCgpICogLjA4OwotICAgIG1fYmlwQm9wRm9udFNpemUgPSBtX2Jhc2VG
b250U2l6ZSAqIDIuNTsKLSAgICBtX3N0YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41
OwotICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdBbmltYXRpb24oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIGZsb2F0IHJhZGl1cyA9IHNpemUoKS53aWR0aCgpICogLjA5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oCmluZGV4IDZhYzczNThlNzRjOGUzM2EwMDFiMjhlMDZmNDUyNWI3MzQxOGM0
ZjYuLjkxZjY1NmFmYzE3NzFkYjJmNmZlNmM2ODgzZjJlMTI0MDA3YTkxNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKQEAgLTYwLDEyICs2MCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKCkgY29uc3Q7CiAKICAgICBTZWNvbmRzIGVsYXBzZWRUaW1lKCk7Ci0gICAgYm9vbCBh
cHBseVNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0dGluZ3NEaWRD
aGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdz
RGlkQ2hhbmdlKCkgZmluYWw7CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKQEAgLTc0LDkgKzczLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZvaWQg
ZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgYm9vbCBhcHBseUZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5QXNwZWN0UmF0aW8oZG91YmxlKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKaW5kZXggODI0MGQ1MGE1MjgwYTQ0ZmM3N2VmM2NkZjBjZTgyYWQ3YWUyNzBj
Mi4uYmMzOWRjY2Y1OGUxNDVjNDk4NGJhNThkNGM1MWI2YzY4MzU4ODZhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc0LDggKzc0LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdz
OyB9CiAgICAgdm9pZCBzZXRTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBz
ZXR0aW5ncykKICAgICB7CisgICAgICAgIGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVy
ZW5jZShzZXR0aW5ncyk7CiAgICAgICAgIG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsK
LSAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2Uo
Y2hhbmdlZCk7CiAgICAgfQogCiAgICAgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBk
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRpb247IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348923</attachid>
            <date>2018-09-05 08:04:58 -0700</date>
            <delta_ts>2018-09-05 08:56:51 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-189284-20180905080457.patch</filename>
            <type>text/plain</type>
            <size>68136</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI1Y2I2NzE3MmQ3MTUz
ZjI4ODgyYmNjNTViNjlhYjA5MTU1NmU5ZS4uZmRhMmM1MmMxYTg3NDAwZjI5ZTZlNmVhMDg4NmRm
Nzc3N2E3OTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxOC0wOS0wNCAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJl
YW1dIFNpbXBsaWZ5IGxvZ2ljIHdoZW4gY2hhbmdpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZSBzZXR0
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
Mjg0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDExNzk0OD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFJlbW92ZSBhbGwgImFwcGx5PHNldHRpbmc+
IiBtZXRob2RzIGZyb20gUmVhbHRpbWVNZWRpYVNvdXJjZSBhbmQgZGVyaXZlZCBjbGFzc2VzLCBh
bmQKKyAgICAgICAgYWRkIGEgYml0ZmllbGQgdG8gc2V0dGluZ3NEaWRDaGFuZ2Ugc28gY2xhc3Nl
cyBjYW4gZG8gc2V0dGluZy1zcGVjaWZpYyBzZXR1cCBhbmQKKyAgICAgICAgY29uZmlndXJhdGlv
biBieSBvdmVycmlkaW5nIHNldHRpbmdzRGlkQ2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNSZXNpemVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OmZpdG5lc3NEaXN0YW5jZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6dmFsdWVGb3JEaXNj
cmV0ZUNhcGFiaWxpdHlWYWx1ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rp
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5TnVtZXJpY0NvbnN0cmFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lTWVkaWFTb3VyY2U6OnNldEZhY2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRFY2hvQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6ZGlmZiBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmFsbEZsYWdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZyYW1lUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBVlZp
ZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWVmlkZW9DYXB0dXJlU291cmNlOjpwcm9jZXNzTmV3RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRp
bmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9D
YXB0dXJlU291cmNlOjphcHBseUVjaG9DYW5jZWxsYXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGlu
Z3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVTb3VyY2VDb2Nv
YTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJl
U291cmNlQ29jb2E6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hOjphcHBseUZyYW1lUmF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VNYWM6OmFwcGx5U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnNl
dHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjOjphcHBseVNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwcm9jZXNzTmV3U2FtcGxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6YXBwbHlGcmFt
ZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
c2V0dGluZ3NEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmFwcGx5U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDE4LTA5LTA0ICBGcmVkZXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgU2Nyb2xsSW50
b1ZpZXdPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2NjEwNGM5ZGQwZGNhYzFjN2Y4NjY1YjRkMTUyMTUx
ZTM2ZGE1YjUuLjRjMDU4YWZlMzY1ZjUzOTEyZTFkYTc1NzEwOTM2NjY5YmM0MDA2MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDktMDQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBTaW1wbGlmeSBsb2dpYyB3
aGVuIGNoYW5naW5nIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTI4NAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDQxMTc5NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpzZXRT
ZXR0aW5ncyk6CisKIDIwMTgtMDktMDQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBTY3JvbGxJbnRvVmlld09wdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMjRiODE2ZDJmMGY4
ODYzNTgxMWQ2M2M2YzM1Yjc5ZWRjNzk4N2I2NS4uY2RkMDRiOTAzYzdiZjI2Y2ZlODlkNjg3OTA3
NWIzNDNkNjQwZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAK
QEAgLTExNCwxMCArMTE0LDE2IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FudmFzUmVzaXplZChDYW52YXNCYXNlJiBjYW52YXMpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwogCisgICAgT3B0aW9uU2V0PFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdlZDsKKyAgICBpZiAobV9jYW52
YXMtPndpZHRoKCkgIT0gbV9zZXR0aW5ncy53aWR0aCgpKQorICAgICAgICBjaGFuZ2VkLmFkZChS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoKTsKKyAgICBpZiAobV9jYW52
YXMtPmhlaWdodCgpICE9IG1fc2V0dGluZ3MuaGVpZ2h0KCkpCisgICAgICAgIGNoYW5nZWQuYWRk
KFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0KTsKKwogICAgIG1fc2V0
dGluZ3Muc2V0V2lkdGgobV9jYW52YXMtPndpZHRoKCkpOwogICAgIG1fc2V0dGluZ3Muc2V0SGVp
Z2h0KG1fY2FudmFzLT5oZWlnaHQoKSk7CiAKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAg
IHNldHRpbmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzLCBj
b25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4
IDYzNWI0YjFjOGE2YzYwN2VkMjg1MWNmMjBmYzRhMGYzZTQwYzQwYWMuLmIwMDZhZjkzYmY0ZDEx
MjUzZmY3YzE2ZDIzNzZjMGFlMWMzNGM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmgKQEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpICBmaW5hbDsKICAgICAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVN
ZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmlsaXRpZXMoKTsgfQogICAgICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zZXR0aW5nczsgfQotICAgICAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRT
aXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZh
cygpOwogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApp
bmRleCA2NWU5NmFjYTlkYjE3MmRkMjcyOGIzYzVmMTU5MTY3ZGYzM2MyYjZlLi4zMGVjNDFhNjNi
ODg4ZDE1YzAzNDVhOTIzMzMwODA0NWQ5MTJhNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC0xOTMsNiAr
MTkzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjphYnMoaWRlYWwgLSBtX2lkZWFsLnZhbHVlKCkpKSAvIHN0ZDo6bWF4KHN0ZDo6YWJzKGlkZWFs
KSwgc3RkOjphYnMobV9pZGVhbC52YWx1ZSgpKSk7CiAgICAgfQogCisgICAgZG91YmxlIGZpdG5l
c3NEaXN0YW5jZShjb25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFs
dWVzKSBjb25zdAorICAgIHsKKyAgICAgICAgZG91YmxlIG1pbkRpc3RhbmNlID0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworCisgICAgICAgIGZvciAoYXV0byYgdmFs
dWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMpIHsKKyAgICAgICAgICAgIGF1dG8gZGlzdGFu
Y2UgPSBmaXRuZXNzRGlzdGFuY2UodmFsdWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChkaXN0
YW5jZSA8IG1pbkRpc3RhbmNlKQorICAgICAgICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFu
Y2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWluRGlzdGFuY2U7CisgICAgfQorCiAg
ICAgYm9vbCB2YWxpZEZvclJhbmdlKFZhbHVlVHlwZSByYW5nZU1pbiwgVmFsdWVUeXBlIHJhbmdl
TWF4KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzRW1wdHkoKSkKQEAgLTI3Nyw2ICsyOTAs
NDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCisgICAgVmFsdWVU
eXBlIHZhbHVlRm9yRGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKFZhbHVlVHlwZSBjdXJyZW50LCBj
b25zdCBWZWN0b3I8VmFsdWVUeXBlPiYgZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzKSBjb25zdAor
ICAgIHsKKyAgICAgICAgVmFsdWVUeXBlIHZhbHVlIHsgMCB9OworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZhbHVlVHlwZT4gbWluOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlVHlwZT4gbWF4
OworCisgICAgICAgIGlmIChtX2V4YWN0KSB7CisgICAgICAgICAgICBBU1NFUlQoZGlzY3JldGVD
YXBhYmlsaXR5VmFsdWVzLmNvbnRhaW5zKG1fZXhhY3QudmFsdWUoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fZXhhY3QudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX21pbikg
eworICAgICAgICAgICAgYXV0byBpbmRleCA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlcy5maW5k
TWF0Y2hpbmcoWyZdKFZhbHVlVHlwZSB2YWx1ZSkgeyByZXR1cm4gbV9taW4udmFsdWUoKSA+PSB2
YWx1ZTsgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
ICAgICAgICBtaW4gPSB2YWx1ZSA9IGRpc2NyZXRlQ2FwYWJpbGl0eVZhbHVlc1tpbmRleF07CisK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpZGVhbCwgZG9uJ3QgY2hhbmdlIGlm
IG1pbmltdW0gaXMgc21hbGxlciB0aGFuIGN1cnJlbnQuCisgICAgICAgICAgICAgICAgaWYgKCFt
X2lkZWFsICYmIHZhbHVlIDwgY3VycmVudCkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBj
dXJyZW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbWF4ICYm
IG1fbWF4LnZhbHVlKCkgPj0gZGlzY3JldGVDYXBhYmlsaXR5VmFsdWVzWzBdKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGRpc2NyZXRlVmFsdWUgOiBkaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobV9tYXgudmFsdWUoKSA8PSBkaXNjcmV0ZVZhbHVlKQor
ICAgICAgICAgICAgICAgICAgICBtYXggPSB2YWx1ZSA9IGRpc2NyZXRlVmFsdWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pZGVhbCAmJiBkaXNjcmV0ZUNhcGFi
aWxpdHlWYWx1ZXMuY29udGFpbnMobV9pZGVhbC52YWx1ZSgpKSkgeworICAgICAgICAgICAgdmFs
dWUgPSBtX2lkZWFsLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAobWF4KQorICAgICAgICAgICAg
ICAgIHZhbHVlID0gc3RkOjptaW4obWF4LnZhbHVlKCksIHZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChtaW4pCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1heChtaW4udmFsdWUoKSwgdmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKwogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21pbiAmJiAhbV9tYXggJiYgIW1fZXhhY3Qg
JiYgIW1faWRlYWw7IH0KICAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9t
aW4gfHwgbV9tYXggfHwgbV9leGFjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oCmluZGV4IDcyNDdiYjgzMzg1N2U0OGU5OWVlNzg2ZTc1ZTRhOTNiYjAwNWQ1ZWQuLjFiMGJm
OTRkZjVkNGM5M2RlZjgwMjRlZmE5MWE1ZTE2NWJmNWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oCkBAIC03MSw4ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0
IGZpbmFsOwogCi0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJ
bnRlcmZhY2U+IG1fdmlkZW9UcmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXgg
MmU5ZDk2NWExOTliNWIzMjFhZDNmZTMwZTE4MTg4ZjIyZTJiNDFkZi4uMDcxMTNmZTBhMmU0ZGZm
Nzc3YmNhODhjMGRjNDVhNTlmOWJjMzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDE1IEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTUyLDggKzUyLDYgQEAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBU
eXBlIHR5cGUsIGNvbnN0IFN0cmkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5h
bWUpCiB7Ci0gICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBpbXBsZW1lbnQgZml0bmVzcyBz
Y29yZSBmb3IgY29uc3RyYWludHMKLQogICAgIGlmIChtX2lkLmlzRW1wdHkoKSkKICAgICAgICAg
bV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKICAgICBtX3BlcnNpc3RlbnRJRCA9
IG1faWQ7CkBAIC0xMzMsMTMgKzEzMSwxMiBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5v
dGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3QKICAgICB9KTsKIH0KIAotdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6
OkZsYWc+KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9wZW5k
aW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKLQogICAg
IG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gdHJ1ZTsKIAogICAgIHNj
aGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CkBAIC0zNTYsNiArMzUzLDkgQEAgZG91YmxlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQm
IGNvbnN0cmFpbnQpCiAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1cHBvcnRzU2FtcGxlUmF0
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAgICAgaWYgKGF1dG8gZGlzY3JldGVS
YXRlcyA9IGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2UoKmRpc2NyZXRlUmF0
ZXMpOworCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlUmF0ZSgpOwog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCkuZml0bmVz
c0Rpc3RhbmNlKHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJbnQp
OwogICAgICAgICBicmVhazsKQEAgLTM2Niw2ICszNjYsOSBAQCBkb3VibGUgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6Zml0bmVzc0Rpc3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkKICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMuc3VwcG9ydHNTYW1wbGVTaXplKCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAorICAgICAgICBpZiAoYXV0byBkaXNjcmV0ZVNpemVzID0gZGlz
Y3JldGVTYW1wbGVTaXplcygpKQorICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEludENvbnN0
cmFpbnQ+KGNvbnN0cmFpbnQpLmZpdG5lc3NEaXN0YW5jZSgqZGlzY3JldGVTaXplcyk7CisKICAg
ICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVTaXplKCk7CiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KS5maXRuZXNzRGlzdGFuY2Uo
cmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDIxLDExICs0MjQsMTggQEAgZG91YmxlIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OmZpdG5lc3NEaXN0YW5jZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVR5cGU+Ci1zdGF0aWMgdm9pZCBhcHBseU51bWVyaWND
b25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFpbnQs
IFZhbHVlVHlwZSBjdXJyZW50LCBWYWx1ZVR5cGUgY2FwYWJpbGl0eU1pbiwgVmFsdWVUeXBlIGNh
cGFiaWxpdHlNYXgsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSwgdm9pZCAoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6KmFwcGxpZXIpKFZhbHVlVHlwZSkpCitzdGF0aWMgdm9pZCBhcHBseU51bWVy
aWNDb25zdHJhaW50KGNvbnN0IE51bWVyaWNDb25zdHJhaW50PFZhbHVlVHlwZT4mIGNvbnN0cmFp
bnQsIFZhbHVlVHlwZSBjdXJyZW50LCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWYWx1ZVR5cGU+PiBk
aXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMsIFZhbHVlVHlwZSBjYXBhYmlsaXR5TWluLCBWYWx1ZVR5
cGUgY2FwYWJpbGl0eU1heCwgUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlLCB2b2lkIChSZWFs
dGltZU1lZGlhU291cmNlOjoqYXBwbGllcikoVmFsdWVUeXBlKSkKIHsKKyAgICBpZiAoZGlzY3Jl
dGVDYXBhYmlsaXR5VmFsdWVzKSB7CisgICAgICAgIGludCB2YWx1ZSA9IGNvbnN0cmFpbnQudmFs
dWVGb3JEaXNjcmV0ZUNhcGFiaWxpdHlWYWx1ZXMoY3VycmVudCwgKmRpc2NyZXRlQ2FwYWJpbGl0
eVZhbHVlcyk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBjdXJyZW50KQorICAgICAgICAgICAgKHNv
dXJjZS4qYXBwbGllcikodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgVmFs
dWVUeXBlIHZhbHVlID0gY29uc3RyYWludC52YWx1ZUZvckNhcGFiaWxpdHlSYW5nZShjdXJyZW50
LCBjYXBhYmlsaXR5TWluLCBjYXBhYmlsaXR5TWF4KTsKICAgICBpZiAodmFsdWUgIT0gY3VycmVu
dCkKLSAgICAgICAgKHNvdXJjZS0+KmFwcGxpZXIpKHZhbHVlKTsKKyAgICAgICAgKHNvdXJjZS4q
YXBwbGllcikodmFsdWUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5U2l6
ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50
PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJhdGUpCkBAIC00NDIsMzUgKzQ1
MiwxNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiB7CiAgICAgYXV0byYgY2FwYWJpbGl0aWVzID0g
dGhpcy0+Y2FwYWJpbGl0aWVzKCk7CiAgICAgc3dpdGNoIChjb25zdHJhaW50LmNvbnN0cmFpbnRU
eXBlKCkpIHsKLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOiB7Ci0gICAgICAg
IEFTU0VSVChjb25zdHJhaW50LmlzSW50KCkpOwotICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5z
dXBwb3J0c1dpZHRoKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy53aWR0aCgpOwotICAgICAgICBhcHBseU51bWVyaWNDb25zdHJhaW50
KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBzaXplKCkud2lkdGgoKSwgcmFu
Z2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgdGhpcywgJlJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFdpZHRoKTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6
OldpZHRoOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpIZWlnaHQ6IHsKLSAgICAgICAg
QVNTRVJUKGNvbnN0cmFpbnQuaXNJbnQoKSk7Ci0gICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnN1
cHBvcnRzSGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byByYW5n
ZSA9IGNhcGFiaWxpdGllcy5oZWlnaHQoKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWlu
dChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50KSwgc2l6ZSgpLmhlaWdodCgpLCBy
YW5nZS5yYW5nZU1pbigpLmFzSW50LCByYW5nZS5yYW5nZU1heCgpLmFzSW50LCB0aGlzLCAmUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVpZ2h0KTsKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5
cGU6OkhlaWdodDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOiB7Ci0g
ICAgICAgIEFTU0VSVChjb25zdHJhaW50LmlzRG91YmxlKCkpOwotICAgICAgICBpZiAoIWNhcGFi
aWxpdGllcy5zdXBwb3J0c0ZyYW1lUmF0ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuZnJhbWVSYXRlKCk7Ci0gICAgICAgIGFwcGx5
TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29uc3RyYWludD4oY29uc3RyYWludCks
IGZyYW1lUmF0ZSgpLCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgp
LmFzRG91YmxlLCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RnJhbWVSYXRlKTsKKyAg
ICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZToKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgTWVkaWFDb25z
dHJhaW50VHlwZTo6QXNwZWN0UmF0aW86IHsKICAgICAgICAgQVNTRVJUKGNvbnN0cmFpbnQuaXNE
b3VibGUoKSk7CkBAIC00NzgsNyArNDcwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjph
cHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuYXNwZWN0
UmF0aW8oKTsKLSAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3VibGVD
b25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgcmFuZ2UucmFuZ2VNaW4oKS5h
c0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgdGhpcywgJlJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChk
b3duY2FzdDxEb3VibGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgYXNwZWN0UmF0aW8oKSwgeyB9
LCByYW5nZS5yYW5nZU1pbigpLmFzRG91YmxlLCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCAq
dGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEFzcGVjdFJhdGlvKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC00ODgsNyArNDgwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNl
OjphcHBseUNvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMudm9s
dW1lKCk7Ci0gICAgICAgIGFwcGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8RG91YmxlQ29u
c3RyYWludD4oY29uc3RyYWludCksIHZvbHVtZSgpLCByYW5nZS5yYW5nZU1pbigpLmFzRG91Ymxl
LCByYW5nZS5yYW5nZU1heCgpLmFzRG91YmxlLCB0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6
c2V0Vm9sdW1lKTsKKyAgICAgICAgYXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxEb3Vi
bGVDb25zdHJhaW50Pihjb25zdHJhaW50KSwgdm9sdW1lKCksIHsgfSwgcmFuZ2UucmFuZ2VNaW4o
KS5hc0RvdWJsZSwgcmFuZ2UucmFuZ2VNYXgoKS5hc0RvdWJsZSwgKnRoaXMsICZSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRWb2x1bWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQ5OCw3
ICs0OTAsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFwcGx5Q29uc3RyYWludChjb25z
dCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byByYW5nZSA9IGNhcGFiaWxpdGllcy5zYW1wbGVSYXRlKCk7Ci0gICAgICAgIGFw
cGx5TnVtZXJpY0NvbnN0cmFpbnQoZG93bmNhc3Q8SW50Q29uc3RyYWludD4oY29uc3RyYWludCks
IHNhbXBsZVJhdGUoKSwgcmFuZ2UucmFuZ2VNaW4oKS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5h
c0ludCwgdGhpcywgJlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUpOworICAgICAg
ICBhcHBseU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFp
bnQpLCBzYW1wbGVSYXRlKCksIGRpc2NyZXRlU2FtcGxlUmF0ZXMoKSwgcmFuZ2UucmFuZ2VNaW4o
KS5hc0ludCwgcmFuZ2UucmFuZ2VNYXgoKS5hc0ludCwgKnRoaXMsICZSZWFsdGltZU1lZGlhU291
cmNlOjpzZXRTYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01MDgsNyAr
NTAwLDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphcHBseUNvbnN0cmFpbnQoY29uc3Qg
TWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBjYXBhYmlsaXRpZXMuc2FtcGxlU2l6ZSgpOwotICAgICAgICBhcHBs
eU51bWVyaWNDb25zdHJhaW50KGRvd25jYXN0PEludENvbnN0cmFpbnQ+KGNvbnN0cmFpbnQpLCBz
YW1wbGVTaXplKCksIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdlTWF4KCkuYXNJ
bnQsIHRoaXMsICZSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVTaXplKTsKKyAgICAgICAg
YXBwbHlOdW1lcmljQ29uc3RyYWludChkb3duY2FzdDxJbnRDb25zdHJhaW50Pihjb25zdHJhaW50
KSwgc2FtcGxlU2l6ZSgpLCB7IH0sIHJhbmdlLnJhbmdlTWluKCkuYXNJbnQsIHJhbmdlLnJhbmdl
TWF4KCkuYXNJbnQsICp0aGlzLCAmUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtODIzLDggKzgxNSw2IEBAIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVuZWRDb25zdHJhaW50
JiBjb25zdHJhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBGSVhNRTogYXBwbHlTaXpl
QW5kRnJhbWVSYXRlIHNob3VsZCB0YWtlIE1lZGlhQ29uc3RyYWludCogaW5zdGVhZCBvZiBzdGQ6
Om9wdGlvbmFsPD4gc28gaXQgY2FuIHNlZSBpZiBhIGNvbnN0cmFpbnQgaXMgYW4gZXhhY3QsIG1p
biwgbWF4LAotICAgIC8vIG9yIGlkZWFsLCBhbmQgY2hvb3NlIHRoZSBjb3JyZWN0IHZhbHVlIGZv
ciBwcm9wZXJ0aWVzIHdpdGggbm9uLWRpc2NyZWV0IGNhcGFiaWxpdGllcyB3aGVuIG5lY2Vzc2Fy
eS4KICAgICBpZiAod2lkdGggfHwgaGVpZ2h0IHx8IGZyYW1lUmF0ZSkKICAgICAgICAgYXBwbHlT
aXplQW5kRnJhbWVSYXRlKFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUo
ZnJhbWVSYXRlKSk7CiAKQEAgLTg2NSwxMSArODU1LDE0IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmIChzaXplID09IG1fc2l6
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFhcHBseVNpemUoc2l6ZSkpCi0gICAgICAg
IHJldHVybjsKKyAgICBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
PiBjaGFuZ2VkOworICAgIGlmIChtX3NpemUud2lkdGgoKSAhPSBzaXplLndpZHRoKCkpCisgICAg
ICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgp
OworICAgIGlmIChtX3NpemUuaGVpZ2h0KCkgIT0gc2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgY2hh
bmdlZC5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQpOwogCiAg
ICAgbV9zaXplID0gc2l6ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdz
RGlkQ2hhbmdlKGNoYW5nZWQpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFdp
ZHRoKGludCB3aWR0aCkKQEAgLTg3NywxNSArODcwLDExIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0V2lkdGgoaW50IHdpZHRoKQogICAgIGlmICh3aWR0aCA9PSBtX3NpemUud2lkdGgo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGhlaWdodCA9IG1fYXNwZWN0UmF0aW8gPyB3
aWR0aCAvIG1fYXNwZWN0UmF0aW8gOiBtX3NpemUuaGVpZ2h0KCk7Ci0gICAgaWYgKCFhcHBseVNp
emUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIG1fc2l6
ZS5zZXRXaWR0aCh3aWR0aCk7CiAgICAgaWYgKG1fYXNwZWN0UmF0aW8pCiAgICAgICAgIG1fc2l6
ZS5zZXRIZWlnaHQod2lkdGggLyBtX2FzcGVjdFJhdGlvKTsKIAotICAgIHNldHRpbmdzRGlkQ2hh
bmdlKCk7CisgICAgc2V0dGluZ3NEaWRDaGFuZ2UoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdo
dCB9KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRIZWlnaHQoaW50IGhlaWdo
dCkKQEAgLTg5Myw3OSArODgyLDg1IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0SGVp
Z2h0KGludCBoZWlnaHQpCiAgICAgaWYgKGhlaWdodCA9PSBtX3NpemUuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCB3aWR0aCA9IG1fYXNwZWN0UmF0aW8gPyBoZWlnaHQgKiBt
X2FzcGVjdFJhdGlvIDogbV9zaXplLndpZHRoKCk7Ci0gICAgaWYgKCFhcHBseVNpemUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX2FzcGVjdFJh
dGlvKQotICAgICAgICBtX3NpemUuc2V0V2lkdGgod2lkdGgpOworICAgICAgICBtX3NpemUuc2V0
V2lkdGgoaGVpZ2h0ICogbV9hc3BlY3RSYXRpbyk7CiAgICAgbV9zaXplLnNldEhlaWdodChoZWln
aHQpOwogCi0gICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZSh7
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldEZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKIHsKLSAgICBpZiAobV9mcmFtZVJhdGUg
PT0gcmF0ZSB8fCAhYXBwbHlGcmFtZVJhdGUocmF0ZSkpCisgICAgaWYgKG1fZnJhbWVSYXRlID09
IHJhdGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZnJhbWVSYXRlID0gcmF0ZTsKLSAgICBz
ZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRBc3BlY3RSYXRpbyhkb3VibGUgcmF0aW8pCiB7Ci0gICAgaWYgKG1fYXNwZWN0
UmF0aW8gPT0gcmF0aW8gfHwgIWFwcGx5QXNwZWN0UmF0aW8ocmF0aW8pKQorICAgIGlmIChtX2Fz
cGVjdFJhdGlvID09IHJhdGlvKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2FzcGVjdFJhdGlv
ID0gcmF0aW87CiAgICAgbV9zaXplLnNldEhlaWdodChtX3NpemUud2lkdGgoKSAvIHJhdGlvKTsK
LSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKHsgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpBc3BlY3RSYXRpbywgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0RmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFj
aW5nTW9kZSBtb2RlKQogewotICAgIGlmIChtX2ZhY2luZ01vZGUgPT0gbW9kZSB8fCAhYXBwbHlG
YWNpbmdNb2RlKG1vZGUpKQorICAgIGlmIChtX2ZhY2luZ01vZGUgPT0gbW9kZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9mYWNpbmdNb2RlID0gbW9kZTsKLSAgICBzZXR0aW5nc0RpZENoYW5n
ZSgpOworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RmxhZzo6RmFjaW5nTW9kZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0Vm9s
dW1lKGRvdWJsZSB2b2x1bWUpCiB7Ci0gICAgaWYgKG1fdm9sdW1lID09IHZvbHVtZSB8fCAhYXBw
bHlWb2x1bWUodm9sdW1lKSkKKyAgICBpZiAobV92b2x1bWUgPT0gdm9sdW1lKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgp
OworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zzo6Vm9sdW1lKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRl
KGludCByYXRlKQogewotICAgIGlmIChtX3NhbXBsZVJhdGUgPT0gcmF0ZSB8fCAhYXBwbHlTYW1w
bGVSYXRlKHJhdGUpKQorICAgIGlmIChtX3NhbXBsZVJhdGUgPT0gcmF0ZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9zYW1wbGVSYXRlID0gcmF0ZTsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgp
OworICAgIHNldHRpbmdzRGlkQ2hhbmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zzo6U2FtcGxlUmF0ZSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1l
TWVkaWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlUmF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6
ZShpbnQgc2l6ZSkKIHsKLSAgICBpZiAobV9zYW1wbGVTaXplID09IHNpemUgfHwgIWFwcGx5U2Ft
cGxlU2l6ZShzaXplKSkKKyAgICBpZiAobV9zYW1wbGVTaXplID09IHNpemUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2FtcGxlU2l6ZSA9IHNpemU7Ci0gICAgc2V0dGluZ3NEaWRDaGFuZ2Uo
KTsKKyAgICBzZXR0aW5nc0RpZENoYW5nZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc6OlNhbXBsZVNpemUpOworfQorCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVjaG9DYW5j
ZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKQogewotICAgIGlmIChtX2VjaG9DYW5jZWxs
YXRpb24gPT0gZWNob0NhbmNlbGxhdGlvbiB8fCAhYXBwbHlFY2hvQ2FuY2VsbGF0aW9uKGVjaG9D
YW5jZWxsYXRpb24pKQorICAgIGlmIChtX2VjaG9DYW5jZWxsYXRpb24gPT0gZWNob0NhbmNlbGxh
dGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0Nh
bmNlbGxhdGlvbjsKLSAgICBzZXR0aW5nc0RpZENoYW5nZSgpOworICAgIHNldHRpbmdzRGlkQ2hh
bmdlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RWNob0NhbmNlbGxhdGlvbik7
CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2NoZWR1bGVEZWZlcnJlZFRhc2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggNDg0
MTliYWQwMTg5ZjcyNDY5YzI2Y2NjNjU0MDg0M2E3MDBhMmZlMy4uZTA4ZTY1NmUzZTcxZTEwNmQ2
OWRmZjkwN2Y3NjgyNmI2YTc0M2QyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNjksMzUgKzE2
OSwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsKICAgICB2b2lkIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpOwogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUm
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZG91YmxlIGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVSYXRlOyB9CiAgICAgdm9pZCBzZXRGcmFtZVJhdGUoZG91YmxlKTsKLSAgICB2
aXJ0dWFsIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgZG91YmxlIGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9hc3BlY3RSYXRpbzsgfQog
ICAgIHZvaWQgc2V0QXNwZWN0UmF0aW8oZG91YmxlKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlB
c3BlY3RSYXRpbyhkb3VibGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBmYWNpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9mYWNpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlG
YWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgZG91YmxlIHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dm9sdW1lOyB9CiAgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlKTsKLSAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlWb2x1bWUoZG91YmxlKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgaW50IHNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KICAgICB2b2lkIHNldFNhbXBsZVJh
dGUoaW50KTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlTYW1wbGVSYXRlKGludCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGludD4+IGRpc2NyZXRl
U2FtcGxlUmF0ZXMoKSBjb25zdDsKIAogICAgIGludCBzYW1wbGVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zYW1wbGVTaXplOyB9CiAgICAgdm9pZCBzZXRTYW1wbGVTaXplKGludCk7Ci0gICAgdmly
dHVhbCBib29sIGFwcGx5U2FtcGxlU2l6ZShpbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29u
c3Q7CiAKICAgICBib29sIGVjaG9DYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2VjaG9D
YW5jZWxsYXRpb247IH0KICAgICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCk7Ci0gICAg
dmlydHVhbCBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBj
YXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwpAQCAtMjEwLDcgKzIwNCw3IEBA
IHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJh
aW50cyYsIFN0cmluZyYpOwogICAgIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IE1lZGlh
Q29uc3RyYWludCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdl
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xh
dGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtMjc0LDggKzI2OCw4IEBAIHByaXZh
dGU6CiAgICAgZG91YmxlIG1fZml0bmVzc1Njb3JlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpIH07CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRl
b0ZhY2luZ01vZGUgbV9mYWNpbmdNb2RlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpV
c2VyfTsKIAotICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsKICAgICBib29s
IG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJvZHVjaW5n
RGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2ludGVycnVwdGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fY2FwdHVyZURpZEZhaWxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzLmNwcAppbmRleCA2YTZkY2ZlZDVmN2I1YTYyNzMyODllZWVjMzMxM2UxZmJmODY5
ODI0Li4zYWFkZDI0NmQzMzA3YjNiOTliYTUzYjY0OTA5NjU2MDNiOGRkYzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5jcHAKQEAgLTY5LDYgKzY5LDQzIEBAIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6dmlkZW9GCiAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VW5rbm93bjsKIH0KIAorT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6Rmxh
Zz4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpkaWZmZXJlbmNlKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYgdGhhdCkgY29uc3QKK3sKKyAgICBPcHRpb25TZXQ8UmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBkaWZmZXJlbmNlOworCisgICAgaWYgKHdpZHRo
KCkgIT0gdGhhdC53aWR0aCgpKQorICAgICAgICBkaWZmZXJlbmNlLmFkZChSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OldpZHRoKTsKKyAgICBpZiAoaGVpZ2h0KCkgIT0gdGhhdC5oZWlnaHQo
KSkKKyAgICAgICAgZGlmZmVyZW5jZS5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpI
ZWlnaHQpOworICAgIGlmIChhc3BlY3RSYXRpbygpICE9IHRoYXQuYXNwZWN0UmF0aW8oKSkKKyAg
ICAgICAgZGlmZmVyZW5jZS5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpBc3BlY3RS
YXRpbyk7CisgICAgaWYgKGZyYW1lUmF0ZSgpICE9IHRoYXQuZnJhbWVSYXRlKCkpCisgICAgICAg
IGRpZmZlcmVuY2UuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RnJhbWVSYXRlKTsK
KyAgICBpZiAoZmFjaW5nTW9kZSgpICE9IHRoYXQuZmFjaW5nTW9kZSgpKQorICAgICAgICBkaWZm
ZXJlbmNlLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZhY2luZ01vZGUpOworICAg
IGlmICh2b2x1bWUoKSAhPSB0aGF0LnZvbHVtZSgpKQorICAgICAgICBkaWZmZXJlbmNlLmFkZChS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZvbHVtZSk7CisgICAgaWYgKHNhbXBsZVJhdGUo
KSAhPSB0aGF0LnNhbXBsZVJhdGUoKSkKKyAgICAgICAgZGlmZmVyZW5jZS5hZGQoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpTYW1wbGVSYXRlKTsKKyAgICBpZiAoc2FtcGxlU2l6ZSgpICE9
IHRoYXQuc2FtcGxlU2l6ZSgpKQorICAgICAgICBkaWZmZXJlbmNlLmFkZChSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlNhbXBsZVNpemUpOworICAgIGlmIChlY2hvQ2FuY2VsbGF0aW9uKCkg
IT0gdGhhdC5lY2hvQ2FuY2VsbGF0aW9uKCkpCisgICAgICAgIGRpZmZlcmVuY2UuYWRkKFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RWNob0NhbmNlbGxhdGlvbik7CisgICAgaWYgKGRldmlj
ZUlkKCkgIT0gdGhhdC5kZXZpY2VJZCgpKQorICAgICAgICBkaWZmZXJlbmNlLmFkZChSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkRldmljZUlkKTsKKyAgICBpZiAoZ3JvdXBJZCgpICE9IHRo
YXQuZ3JvdXBJZCgpKQorICAgICAgICBkaWZmZXJlbmNlLmFkZChSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6Okdyb3VwSWQpOworICAgIGlmIChsYWJlbCgpICE9IHRoYXQubGFiZWwoKSkKKyAg
ICAgICAgZGlmZmVyZW5jZS5hZGQoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMYWJlbCk7
CisgICAgaWYgKGRpc3BsYXlTdXJmYWNlKCkgIT0gdGhhdC5kaXNwbGF5U3VyZmFjZSgpKQorICAg
ICAgICBkaWZmZXJlbmNlLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlT
dXJmYWNlKTsKKyAgICBpZiAobG9naWNhbFN1cmZhY2UoKSAhPSB0aGF0LmxvZ2ljYWxTdXJmYWNl
KCkpCisgICAgICAgIGRpZmZlcmVuY2UuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
TG9naWNhbFN1cmZhY2UpOworCisgICAgcmV0dXJuIGRpZmZlcmVuY2U7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKaW5kZXggMDFjMTUyM2I4MjBlYjk0NjA4OTIxMzBk
OTZmZGJiY2FkNjUzZGIzMi4uYjA0NGM1YzA3ZWQ1ZDkxMjMwM2NmODdjYWZkODczNTliODY2M2E0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cy5oIgog
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNDMsNiArNDQsMjcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHJpbmcgZmFjaW5nTW9kZShSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OlZpZGVvRmFjaW5nTW9kZSk7CiAgICAgc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6VmlkZW9GYWNpbmdNb2RlIHZpZGVvRmFjaW5nTW9kZUVudW0oY29uc3QgU3RyaW5nJik7
CiAKKyAgICBlbnVtIEZsYWcgeworICAgICAgICBXaWR0aCA9IDEgPDwgMCwKKyAgICAgICAgSGVp
Z2h0ID0gMSA8PCAxLAorICAgICAgICBBc3BlY3RSYXRpbyA9IDEgPDwgMiwKKyAgICAgICAgRnJh
bWVSYXRlID0gMSA8PCAzLAorICAgICAgICBGYWNpbmdNb2RlID0gMSA8PCA0LAorICAgICAgICBW
b2x1bWUgPSAxIDw8IDUsCisgICAgICAgIFNhbXBsZVJhdGUgPSAxIDw8IDYsCisgICAgICAgIFNh
bXBsZVNpemUgPSAxIDw8IDcsCisgICAgICAgIEVjaG9DYW5jZWxsYXRpb24gPSAxIDw8IDgsCisg
ICAgICAgIERldmljZUlkID0gMSA8PCA5LAorICAgICAgICBHcm91cElkID0gMSA8PCAxMCwKKyAg
ICAgICAgTGFiZWwgPSAxIDw8IDExLAorICAgICAgICBEaXNwbGF5U3VyZmFjZSA9IDEgPDwgMTIs
CisgICAgICAgIExvZ2ljYWxTdXJmYWNlID0gMSA8PCAxMywKKyAgICB9OworCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcHRpb25TZXQ8RmxhZz4gYWxsRmxhZ3MoKSB7IHJldHVybiB7IFdpZHRoLCBI
ZWlnaHQsIEFzcGVjdFJhdGlvLCBGcmFtZVJhdGUsIEZhY2luZ01vZGUsIFZvbHVtZSwgU2FtcGxl
UmF0ZSwgU2FtcGxlU2l6ZSwgRWNob0NhbmNlbGxhdGlvbiwgRGV2aWNlSWQsIEdyb3VwSWQsIExh
YmVsLCBEaXNwbGF5U3VyZmFjZSwgTG9naWNhbFN1cmZhY2UgfTsgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gZGlmZmVy
ZW5jZShjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBjb25zdDsKKwogICAgIGV4
cGxpY2l0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncygpID0gZGVmYXVsdDsKIAogICAgIGJv
b2wgc3VwcG9ydHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHMu
c3VwcG9ydHNXaWR0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDJkMWZhZWFkMTc5
ZDcwNWY0MTk4Y2MxNGU1MWJjZDg4YjAwZjZkMDMuLmYzZmM0ZWE1NTFiOGU3YjJhMGIzMDJiMDg0
ZDIwMDFjMTdiNWFiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0xMjUsMTcgKzEyNSw2
IEBAIEludFNpemUgUmVhbHRpbWVWaWRlb1NvdXJjZTo6YmVzdFN1cHBvcnRlZENhcHR1cmVTaXpl
Rm9yV2lkdGhBbmRIZWlnaHQoc3RkOjpvcHRpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYm9vbCBS
ZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAg
ICBJbnRTaXplIHN1cHBvcnRlZFNpemUgPSBiZXN0U3VwcG9ydGVkQ2FwdHVyZVNpemVGb3JXaWR0
aEFuZEhlaWdodChzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGlmIChzdXBwb3J0
ZWRTaXplLmlzRW1wdHkoKSkgewotICAgICAgICBMT0coTWVkaWEsICJSZWFsdGltZVZpZGVvU291
cmNlOjphcHBseVNpemUoJXApLCB1bmFibGUgZmluZCBvciBzZXQgcHJlc2V0IGZvciB3aWR0aDog
JWksIGhlaWdodDogJWkiLCB0aGlzLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQg
UmVhbHRpbWVWaWRlb1NvdXJjZTo6YXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8
aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGZyYW1lUmF0ZSkKIHsKICAgICBpZiAod2lkdGggfHwgaGVpZ2h0KSB7CkBAIC0xNjgsMTEg
KzE1Nyw2IEBAIHZvaWQgUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZGlzcGF0Y2hNZWRpYVNhbXBsZVRv
T2JzZXJ2ZXJzKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgdmlkZW9TYW1wbGVBdmFpbGFibGUo
c2FtcGxlKTsKIH0KIAotYm9vbCBSZWFsdGltZVZpZGVvU291cmNlOjphcHBseUZyYW1lUmF0ZShk
b3VibGUgcmF0ZSkKLXsKLSAgICByZXR1cm4gc3VwcG9ydHNGcmFtZVJhdGUocmF0ZSk7Ci19Ci0K
IGJvb2wgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3VwcG9ydHNGcmFtZVJhdGUoZG91YmxlIGZyYW1l
UmF0ZSkKIHsKICAgICBkb3VibGUgZXBzaWxvbiA9IDAuMDAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmlu
ZGV4IDFjMjU3ZjZkZGJhNjc1NDM1NTUwMTEwYzMwMGMwMTg5ZGNiZTY1MTAuLjZhMmQ0YTExZjMy
ZjBlNjc1ZGFkMjAyNGQ5NTliM2ZiMjcwYTY1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTQ2
LDggKzQ2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHJlcGFyZVRvUHJvZHVjZURhdGEoKTsK
ICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lk
dGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikgZmlu
YWw7CiAgICAgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+IHdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZp
bmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICBi
b29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7CiAKICAgICB2b2lkIHNldFN1cHBvcnRl
ZEZyYW1lUmF0ZXMoVmVjdG9yPGRvdWJsZT4mJik7CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRDYXB0
dXJlU2l6ZXMoY29uc3QgVmVjdG9yPEludFNpemU+JiYgc2l6ZXMpIHsgbV9zdXBwb3J0ZWRDYXB0
dXJlU2l6ZXMgPSBzaXplczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9DYXB0dXJlU291cmNlLmNwcAppbmRleCAwZDU3YjIzZjQ1MjgyZmJiMjdhYmE5N2JiODk5NGVl
YTA1MzBkZjhiLi43ZTIxNjczNWQ4YzEzN2M5YzY1YzBiMzMzYTQxNTAxMTk5MjU5OTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApA
QCAtMTcyLDkgKzE3MiwxMiBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmNhcGFiaWxpdGllcwogICAgIHJldHVybiBt
X2NhcGFiaWxpdGllcy52YWx1ZSgpOwogfQogCi1ib29sIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQordm9pZCBHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIHJldHVybiBtX2NhcHR1cmVy
LT5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOworICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKQorICAgICAgICBt
X2NhcHR1cmVyLT5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUoKSk7CisKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0
aW5ncygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJl
U291cmNlLmgKaW5kZXggM2ZhNGE5YzJlMzIyNTIyN2E2MmUwYzMxMjY2ZjI0YmVkOGUyNjBhMy4u
OTg1YTJlNDJkMGY2MGE4MDY5MGRjNzFlMmQ1OGYzZjc0ZjAwZTE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAtNTAsOSArNTAsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncz4gbV9jdXJyZW50U2V0dGluZ3M7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBs
eVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0
PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+IG1fY2FwdHVyZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggNWE5
ZGZiNTE3ZmEyNDg3ZTFiOTA4NGRjYjRiMjBlMDhhYjU0ZGRiMC4uYmVhOGRhOTkzMjljYzE2YjEz
ZjNlMjhhOTRmYmE5NjUxMDYwYmZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEwNywxOCArMTA3LDE0IEBAIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6fkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSgpCiB7CiB9
CiAKLWJvb2wgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjphcHBseVNpemUoY29uc3QgSW50
U2l6ZSAmc2l6ZSkKK3ZvaWQgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0Rp
ZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0
aW5ncykKIHsKLSAgICBtX2NhcHR1cmVyLT5zZXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpIZWlnaHQgfSkpCisgICAgICAgIG1fY2FwdHVyZXItPnNldFNpemUoc2l6ZSgpLndpZHRoKCks
IHNpemUoKS5oZWlnaHQoKSk7CisgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSkKKyAgICAgICAgbV9jYXB0dXJlci0+
c2V0RnJhbWVSYXRlKGZyYW1lUmF0ZSgpKTsKIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIGZyYW1l
cmF0ZSkKLXsKLSAgICBtX2NhcHR1cmVyLT5zZXRGcmFtZVJhdGUoZnJhbWVyYXRlKTsKLQotICAg
IHJldHVybiB0cnVlOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KHNldHRpbmdzKTsKIH0KIAogdm9pZCBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OnN0YXJ0
UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmgKaW5kZXggMzc5YmE3ZTBmZDZlNzY3YjNjYjcyOGQ4ZDU4ZGRlMGJjZmMyZWYx
OC4uMTYwOWIwMGM0OWI2YmM4MWM4M2I3YThjNDNmODRmZWNmNDc4Y2I2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtMzcsNyArMzcs
NiBAQCBwdWJsaWM6CiAgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSB7IHJldHVybiBtX2NhcHR1
cmVyLT5waXBlbGluZSgpOyB9CiAgICAgR1N0cmVhbWVyQ2FwdHVyZXIqIGNhcHR1cmVyKCkgeyBy
ZXR1cm4gbV9jYXB0dXJlci5nZXQoKTsgfQogCi0KIHByb3RlY3RlZDoKICAgICBHU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBnY2hhciAqIHNvdXJjZV9mYWN0b3J5KTsKICAgICBHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSk7CkBAIC01Miw5ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIEdzdEZsb3dSZXR1cm4gbmV3U2FtcGxlQ2FsbGJhY2soR3N0RWxl
bWVudCosIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSopOwogCiAgICAgYm9vbCBpc0NhcHR1
cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBhcHBseVNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlGcmFtZVJhdGUoZG91Ymxl
KSBmaW5hbDsKLSAgICBib29sIGFwcGx5QXNwZWN0UmF0aW8oZG91YmxlKSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4gbV9jYXB0dXJlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVy
ZVNvdXJjZS5oCmluZGV4IDc0OGU0ODAwYzU1MWY4OTUyN2JjYTYwZWI5NjM3YzQ0OTVmNGU3Njgu
LmQxMWQxNTNlMTEzNGYzMzcwN2E0MDE2YWU4NTY4ZGJkZGIwNDE3MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVv
Q2FwdHVyZVNvdXJjZS5oCkBAIC03MywxMyArNzMsMTIgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3
aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBm
aW5hbDsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7Ci0gICAgYm9v
bCBhcHBseUZyYW1lUmF0ZShkb3VibGUpIGZpbmFsOworICAgIHZvaWQgc2V0RnJhbWVSYXRlKGRv
dWJsZSk7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5k
RnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhl
aWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdzRGlk
Q2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikgZmluYWw7CiAgICAgdm9pZCBtb25pdG9y
T3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIGZpbmFsOwogICAgIHZvaWQgYmVnaW5D
b25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMTdlMDU1NmQ5YzY3ODEwMjkz
ZWUyODlkMWU5ZjAyYTdlY2NhMjA0Zi4uNmQ5MDBhOGZkOWE2ZTI5ZDRkOWJkMWEzOWRiYTliZmY0
YWRiMzQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjcwLDEwICsyNzAs
MTAgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbigpCiAg
ICAgICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07CiB9CiAKLXZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpu
dWxsb3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7Cisg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQog
CiBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXR0aW5ncygpIGNvbnN0CkBAIC0zNTcsMTcgKzM1Nyw2IEBAIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpjYXBhYmlsaXRpZXMo
KSBjb25zCiAgICAgcmV0dXJuICptX2NhcGFiaWxpdGllczsKIH0KIAotYm9vbCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgTlNTdHJp
bmcgKnByZXNldCA9IGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFwcmVzZXQgfHwgIVtzZXNzaW9uKCkgY2Fu
U2V0U2Vzc2lvblByZXNldDpwcmVzZXRdKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9D
YXB0dXJlU291cmNlOjphcHBseVNpemUoJXApLCB1bmFibGUgZmluZCBvciBzZXQgcHJlc2V0IGZv
ciB3aWR0aDogJWksIGhlaWdodDogJWkiLCB0aGlzLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNldFByZXNl
dChwcmVzZXQpOwotfQotCiBJbnRTaXplIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzaXplRm9yUHJl
c2V0KE5TU3RyaW5nKiBwcmVzZXQpCiB7CiAgICAgaWYgKCFwcmVzZXQpCkBAIC00MDUsMTQgKzM5
NCwxNCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVzZXQoTlNTdHJpbmcgKnBy
ZXNldCkKICAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0VmlkZW9TZXR0aW5nczpzZXR0aW5nc0Rp
Y3Rpb25hcnldOwogI2VuZGlmCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikg
ewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlTaXplKCVw
KSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBb
W2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3Ry
aW5nXSk7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXRQcmVz
ZXQoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3VyaW5nIGRldmljZTogPCVzPiAlcyIsIHRo
aXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVU
RjhTdHJpbmddKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZShkb3Vi
bGUgcmF0ZSkKK3ZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldEZyYW1lUmF0ZShkb3VibGUg
cmF0ZSkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgUEFMOwogICAgIGRvdWJsZSBlcHNpbG9uID0g
MC4wMDAwMTsKQEAgLTQyNSw4ICs0MTQsOCBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjph
cHBseUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKICAgICB9CiAKICAgICBpZiAoIWJlc3RGcmFtZVJh
dGVSYW5nZSB8fCAhaXNGcmFtZVJhdGVTdXBwb3J0ZWQocmF0ZSkpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwgZnJhbWUgcmF0
ZSAlZiBub3Qgc3VwcG9ydGVkIGJ5IHZpZGVvIGRldmljZSIsIHRoaXMsIHJhdGUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0dXJlU291cmNl
OjpzZXRGcmFtZVJhdGUoJXApLCBmcmFtZSByYXRlICVmIG5vdCBzdXBwb3J0ZWQgYnkgdmlkZW8g
ZGV2aWNlIiwgdGhpcywgcmF0ZSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKQEAgLTQ0MiwxNyArNDMxLDE3IEBAIGJvb2wgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKGRvdWJsZSByYXRlKQogICAgICAgICAgICAgW2Rldmlj
ZSgpIHVubG9ja0ZvckNvbmZpZ3VyYXRpb25dOwogICAgICAgICB9CiAgICAgfSBAY2F0Y2goTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewotICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVy
ZVNvdXJjZTo6YXBwbHlGcmFtZVJhdGUoJXApLCBleGNlcHRpb24gdGhyb3duIGNvbmZpZ3VyaW5n
IGRldmljZTogPCVzPiAlcyIsIHRoaXMsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCBb
W2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0RnJhbWVSYXRlKCVw
KSwgZXhjZXB0aW9uIHRocm93biBjb25maWd1cmluZyBkZXZpY2U6IDwlcz4gJXMiLCB0aGlzLCBb
W2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3Ry
aW5nXSk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmFwcGx5RnJhbWVSYXRlKCVwKSwg
ZmFpbGVkIHRvIGxvY2sgdmlkZW8gZGV2aWNlIGZvciBjb25maWd1cmF0aW9uOiAlcyIsIHRoaXMs
IFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBMT0coTWVkaWEsICJBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0
RnJhbWVSYXRlKCVwKSwgZmFpbGVkIHRvIGxvY2sgdmlkZW8gZGV2aWNlIGZvciBjb25maWd1cmF0
aW9uOiAlcyIsIHRoaXMsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmdd
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIkFWVmlkZW9DYXB0
dXJlU291cmNlOjphcHBseUZyYW1lUmF0ZSglcCkgLSBzZXQgZnJhbWUgcmF0ZSByYW5nZSB0byAl
ZiIsIHRoaXMsIHJhdGUpOwotICAgIHJldHVybiB0cnVlOworICAgIExPRyhNZWRpYSwgIkFWVmlk
ZW9DYXB0dXJlU291cmNlOjpzZXRGcmFtZVJhdGUoJXApIC0gc2V0IGZyYW1lIHJhdGUgcmFuZ2Ug
dG8gJWYiLCB0aGlzLCByYXRlKTsKKyAgICByZXR1cm47CiB9CiAKIHZvaWQgQVZWaWRlb0NhcHR1
cmVTb3VyY2U6OmFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgs
IHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBmcmFtZVJh
dGUpCkBAIC00NjEsNyArNDUwLDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6YXBwbHlT
aXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjoKICAgICAgICAg
c2V0UHJlc2V0KGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKFdURk1vdmUod2lk
dGgpLCBXVEZNb3ZlKGhlaWdodCkpKTsKIAogICAgIGlmIChmcmFtZVJhdGUpCi0gICAgICAgIGFw
cGx5RnJhbWVSYXRlKGZyYW1lUmF0ZS52YWx1ZSgpKTsKKyAgICAgICAgc2V0RnJhbWVSYXRlKGZy
YW1lUmF0ZS52YWx1ZSgpKTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc2Vuc29yT3JpZW50YXRp
b24oQVZDYXB0dXJlVmlkZW9PcmllbnRhdGlvbiB2aWRlb09yaWVudGF0aW9uKQpAQCAtNjI3LDEw
ICs2MTYsMTUgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6cHJvY2Vzc05ld0ZyYW1lKFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gc2FtcGxlQnUKICAgICAgICAgc3RkOjpzd2FwKGRp
bWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0KTsKIAogICAgIGlmIChkaW1lbnNpb25z
LndpZHRoICE9IG1fd2lkdGggfHwgZGltZW5zaW9ucy5oZWlnaHQgIT0gbV9oZWlnaHQpIHsKKyAg
ICAgICAgT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gY2hhbmdl
ZDsKKyAgICAgICAgaWYgKG1fd2lkdGggIT0gZGltZW5zaW9ucy53aWR0aCkKKyAgICAgICAgICAg
IGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOwor
ICAgICAgICBpZiAobV9oZWlnaHQgIT0gZGltZW5zaW9ucy5oZWlnaHQpCisgICAgICAgICAgICBj
aGFuZ2VkLmFkZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCk7CisK
ICAgICAgICAgbV93aWR0aCA9IGRpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgIG1faGVpZ2h0ID0g
ZGltZW5zaW9ucy5oZWlnaHQ7Ci0KLSAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICAg
ICAgc2V0dGluZ3NEaWRDaGFuZ2UoY2hhbmdlZCk7CiAgICAgfQogCiAgICAgdmlkZW9TYW1wbGVB
dmFpbGFibGUoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUobV9idWZmZXIuZ2V0KCksIG1fc2Ft
cGxlUm90YXRpb24sIFtjb25uZWN0aW9uIGlzVmlkZW9NaXJyb3JlZF0pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA2Yzc0NDA3ZTE1ZmRiMTYxODFmZmE1NTdjMzFl
NjIxYzEyZjIyYTAyLi43ZDcyN2NjYTYzYjVmYTgxNjljNzAxNTM5MmNmMzRiNTdjNWY1NWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg3NiwzOSArODc2LDE5IEBAIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
c2V0dGluZ3MoKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnRTZXR0aW5ncy52YWx1ZSgpOwog
fQogCi12b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKK3Zv
aWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgbV9jdXJy
ZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
dGluZ3NEaWRDaGFuZ2UoKTsKLX0KLQotYm9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphcHBs
eVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBi
ZSBhYmxlIHRvIGRlc2NyaWJlIHNhbXBsZSByYXRlIGFzIGEgZGlzY3JlZXQgcmFuZ2UgY29uc3Ry
YWludCBzbyB0aGF0IHdlIG9ubHkgZW50ZXIgaGVyZSB3aXRoIHZhbHVlcyB0aGF0IGNhbiBiZSBh
cHBsaWVkLgotICAgIHN3aXRjaCAoc2FtcGxlUmF0ZSkgewotICAgIGNhc2UgODAwMDoKLSAgICBj
YXNlIDE2MDAwOgotICAgIGNhc2UgMzIwMDA6Ci0gICAgY2FzZSA0NDEwMDoKLSAgICBjYXNlIDQ4
MDAwOgotICAgIGNhc2UgOTYwMDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpFY2hvQ2FuY2VsbGF0aW9uKSkgeworICAgICAgICBDb3Jl
QXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zZXRFbmFibGVFY2hvQ2FuY2VsbGF0aW9uKGVj
aG9DYW5jZWxsYXRpb24oKSk7CisgICAgICAgIHNjaGVkdWxlUmVjb25maWd1cmF0aW9uKCk7Cisg
ICAgfQorICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNp
bmdsZXRvbigpLnNldFNhbXBsZVJhdGUoc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgc2NoZWR1bGVS
ZWNvbmZpZ3VyYXRpb24oKTsKICAgICB9CiAKLSAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5n
bGV0b24oKS5zZXRTYW1wbGVSYXRlKHNhbXBsZVJhdGUpOwotCi0gICAgc2NoZWR1bGVSZWNvbmZp
Z3VyYXRpb24oKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBDb3JlQXVkaW9DYXB0dXJl
U291cmNlOjphcHBseUVjaG9DYW5jZWxsYXRpb24oYm9vbCBlbmFibGVFY2hvQ2FuY2VsbGF0aW9u
KQotewotICAgIENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnNldEVuYWJsZUVjaG9D
YW5jZWxsYXRpb24oZW5hYmxlRWNob0NhbmNlbGxhdGlvbik7Ci0KLSAgICBzY2hlZHVsZVJlY29u
ZmlndXJhdGlvbigpOwotICAgIHJldHVybiB0cnVlOworICAgIG1fY3VycmVudFNldHRpbmdzID0g
c3RkOjpudWxsb3B0OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdl
KHNldHRpbmdzKTsKIH0KIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzY2hlZHVsZVJl
Y29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaAppbmRleCA3OTJl
YWYwN2UwY2VmYjQ3ODVlMGY3NmYyNTI1NjlmNjM2NjExNDBlLi5jNDBkM2M2YzM0ZDYwY2Y0YmE5
Y2NlZGJmMDIxZDNkNTkzZDJkZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODQsMTMgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBm
aW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAKLSAgICBib29sIGFw
cGx5Vm9sdW1lKGRvdWJsZSkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgYXBwbHlT
YW1wbGVSYXRlKGludCkgZmluYWw7Ci0gICAgYm9vbCBhcHBseUVjaG9DYW5jZWxsYXRpb24oYm9v
bCkgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8aW50Pj4gZGlzY3JldGVTYW1wbGVS
YXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgeyA4MDAwLCAxNjAwMCwgMzIwMDAsIDQ0MTAw
LCA0ODAwMCwgOTYwMDAgfSB9OyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBz
ZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0
aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIGZpbmFsOwogCiAgICAg
Ym9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggZTc0Y2JlZTc5MmVmZTVkYTk0MjQxN2Q3ZjRlMjk1Yzdl
ZTg1MjA3OS4uM2VjZDVjYTJjZGVkNDE3NWY1ZDQ3ZmEwN2U4Yzg5OTA5MTZhMjM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OCwxMCArOTgsMTcgQEAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
OjpzZXR0aW5ncygpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VycmVudFNldHRpbmdzLnZhbHVlKCk7
CiB9CiAKLXZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c2V0dGluZ3NEaWRDaGFuZ2Uo
KQordm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjpzZXR0aW5nc0RpZENoYW5nZShPcHRp
b25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKKyAg
ICBpZiAoc2V0dGluZ3MuY29udGFpbnMoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpGcmFtZVJhdGUpICYmIG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZygxX3MgLyBmcmFtZVJhdGUoKSk7CisKKyAgICBpZiAoc2V0dGluZ3MuY29udGFp
bnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkKKyAgICAgICAgbV9idWZmZXJB
dHRyaWJ1dGVzID0gbnVsbHB0cjsKKwogICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxs
b3B0OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAg
ICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAK
IHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKQEAg
LTExMSw3ICsxMTgsNyBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCiAjZW5kaWYKIAogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCk7Ci0gICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX21zICogbHJvdW5kKDEwMDAgLyBm
cmFtZVJhdGUoKSkpOworICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRl
KCkpOwogfQogCiB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OnN0b3BQcm9kdWNpbmdE
YXRhKCkKQEAgLTEyOSwyMyArMTM2LDYgQEAgU2Vjb25kcyBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNv
Y29hOjplbGFwc2VkVGltZSgpCiAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAoTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX3N0YXJ0VGltZSk7CiB9CiAKLWJvb2wgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYTo6YXBwbHlTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCi17Ci0gICAgaWYgKHNp
emUoKSA9PSBuZXdTaXplKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIG1fYnVmZmVyQXR0
cmlidXRlcyA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUoZG91YmxlIHJhdGUpCi17Ci0gICAgaWYg
KG1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX21z
ICogbHJvdW5kKDEwMDAgLyByYXRlKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogdm9pZCBE
aXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogewogICAgIGlmIChtdXRlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgKaW5kZXggNzg3N2UwYmFjNDkw
Y2IwZGYzMmRlMTkxZWM4NWI1OTU1M2VmMmExNy4uNDg0YzFiMGE3Mjc4Mzk2Y2RlNmUxM2U0YTk5
MWU3MmU1NDJlMjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0
LDIxICs1NCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92
ZXJyaWRlOwogCiAgICAgU2Vjb25kcyBlbGFwc2VkVGltZSgpOwotICAgIGJvb2wgYXBwbHlGcmFt
ZVJhdGUoZG91YmxlKSBvdmVycmlkZTsKLSAgICBib29sIGFwcGx5U2l6ZShjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IHNhbXBsZUJ1
ZmZlckZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKICNpZiBIQVZFKElPU1VSRkFD
RSkKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGcm9tSU9TdXJm
YWNlKElPU3VyZmFjZVJlZik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2Uo
T3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOwor
CiBwcml2YXRlOgogCiAgICAgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
JiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXR0aW5nc0Rp
ZENoYW5nZSgpIGZpbmFsOwogCiAgICAgdm9pZCBlbWl0RnJhbWUoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAppbmRleCA2ZDE0YjAzNTExMGIzY2VjNjkzZGRmMDcx
OTA1M2RhZjhlMzNiNDBjLi45OWQ3OGVlYzdjNzAyZWNkMTZlY2ZkYTBiODRkMGM1NmI5ZDRmM2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw4ICs1MCw4IEBA
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOwogICAg
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwot
ICAgIGJvb2wgYXBwbHlTYW1wbGVTaXplKGludCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc+KSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBkaXNj
cmV0ZVNhbXBsZVJhdGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyB7IDQ0MTAwLCA0ODAwMCB9
IH07IH0KIAogICAgIHZvaWQgZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QpOwogICAgIHZvaWQg
cmVuZGVyKFNlY29uZHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
TWFjLm1tCmluZGV4IDVhYmI4ZjI4YjI1ZDdhMzI3Mjg3YzE2OWUzMjVhODU5Y2U0NjYzZmIuLjBj
OGE0YmRlMjA1YzliOWIyYWIyYTg4ODk3NmJjOTc0OWMzMzcxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU4LDMwICsxNTgsMjcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKFNlY29uZHMgZGVsdGEpCiAgICAgfQogfQogCi1i
b29sIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphcHBseVNhbXBsZVJhdGUoaW50IHNhbXBs
ZVJhdGUpCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5n
ZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5ncykK
IHsKLSAgICBpZiAoc2FtcGxlUmF0ZSA8IDQ0MTAwIHx8IHNhbXBsZVJhdGUgPiA0ODAwMCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OlNhbXBsZVJhdGUpKSB7CisgICAgICAgIG1fZm9ybWF0
RGVzY3JpcHRpb24gPSBudWxscHRyOworICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG51bGxw
dHI7CiAKLSAgICBpZiAoc2FtcGxlUmF0ZSA9PSB0aGlzLT5zYW1wbGVSYXRlKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBhdXRvIHJhdGUgPSBzYW1wbGVSYXRlKCk7CisgICAgICAg
IHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiByYXRlOwogCi0gICAgbV9mb3JtYXREZXNjcmlwdGlv
biA9IG51bGxwdHI7Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBudWxscHRyOworICAgICAgICBt
X2JpcEJvcEJ1ZmZlci5ncm93KHNhbXBsZUNvdW50KTsKKyAgICAgICAgbV9iaXBCb3BCdWZmZXIu
ZmlsbCgwKTsKIAotICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IDIgKiBzYW1wbGVSYXRlOworICAg
ICAgICBzaXplX3QgYmlwQm9wU2FtcGxlQ291bnQgPSBjZWlsKEJpcEJvcER1cmF0aW9uICogcmF0
ZSk7CisgICAgICAgIHNpemVfdCBiaXBTdGFydCA9IDA7CisgICAgICAgIHNpemVfdCBib3BTdGFy
dCA9IHJhdGU7CiAKLSAgICBtX2JpcEJvcEJ1ZmZlci5ncm93KHNhbXBsZUNvdW50KTsKLSAgICBt
X2JpcEJvcEJ1ZmZlci5maWxsKDApOwotCi0gICAgc2l6ZV90IGJpcEJvcFNhbXBsZUNvdW50ID0g
Y2VpbChCaXBCb3BEdXJhdGlvbiAqIHNhbXBsZVJhdGUpOwotICAgIHNpemVfdCBiaXBTdGFydCA9
IDA7Ci0gICAgc2l6ZV90IGJvcFN0YXJ0ID0gc2FtcGxlUmF0ZTsKLQotICAgIGFkZEh1bShCaXBC
b3BWb2x1bWUsIEJpcEZyZXF1ZW5jeSwgc2FtcGxlUmF0ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0
YSgpICsgYmlwU3RhcnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKLSAgICBhZGRIdW0oQmlwQm9wVm9s
dW1lLCBCb3BGcmVxdWVuY3ksIHNhbXBsZVJhdGUsIDAsIG1fYmlwQm9wQnVmZmVyLmRhdGEoKSAr
IGJvcFN0YXJ0LCBiaXBCb3BTYW1wbGVDb3VudCk7CisgICAgICAgIGFkZEh1bShCaXBCb3BWb2x1
bWUsIEJpcEZyZXF1ZW5jeSwgcmF0ZSwgMCwgbV9iaXBCb3BCdWZmZXIuZGF0YSgpICsgYmlwU3Rh
cnQsIGJpcEJvcFNhbXBsZUNvdW50KTsKKyAgICAgICAgYWRkSHVtKEJpcEJvcFZvbHVtZSwgQm9w
RnJlcXVlbmN5LCByYXRlLCAwLCBtX2JpcEJvcEJ1ZmZlci5kYXRhKCkgKyBib3BTdGFydCwgYmlw
Qm9wU2FtcGxlQ291bnQpOworICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgK
aW5kZXggZjU4MzY3MTMzN2RmMDdhYTY0Y2E4ODNjYmZmNjRlMGJhYTI3ZTliZS4uNzMxMjllMWJl
N2NiNmRjYzE2NmZkNTU2ZTAwZmQxOTVlYzQ0Mzc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVNhbXBsZUJ1
ZmZlcigpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsK
KyAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc+KSBmaW5hbDsKIAogICAgIHZvaWQgb3JpZW50YXRpb25DaGFuZ2VkKGlu
dCBvcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50
YXRpb25Ob3RpZmllciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjLm1tCmluZGV4IDRjY2VlMTkxMjYwNzRjYzA4MDczMTM4MGEyMTE3MjMwZTkzYzIwZGQuLjE3
YjM1YmFhMTU3ZDVmNDQ2YmI5MDM5N2NjMzM2MTUxMDkyZmU4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTE1NCwxMyArMTU0LDExIEBAIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVNhbXBsZUJ1ZmZlcigpCiAgICAgZGlzcGF0
Y2hNZWRpYVNhbXBsZVRvT2JzZXJ2ZXJzKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBs
ZUJ1ZmZlci5nZXQoKSwgbV9kZXZpY2VPcmllbnRhdGlvbikpOwogfQogCi1ib29sIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3Zv
aWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIGlm
ICghTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZShuZXdTaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgbV9idWZmZXJQb29sID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkhlaWdodCB9KSkKKyAgICAgICAgbV9idWZmZXJQb29sID0gbnVsbHB0cjsKKyAgICBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2Uoc2V0dGluZ3MpOwogfQogCiB2b2lk
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjOjpvcmllbnRhdGlvbkNoYW5nZWQoaW50IG9yaWVu
dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tCmluZGV4IDRiNDI1ZjliYTYyYjBmM2YwOTNhOTA2ZmQ0YjJhZTQ5YzJhNDNjM2UuLmJiYWM4
ZGE1ZTQzOWM4YTIwYTI4ZGVjZjU3N2RlY2Q2NjE4ZTdhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTczLDkgKzE3MywxNSBAQCB2b2lk
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwcm9jZXNzTmV3U2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZQogewogICAgIG1fYnVmZmVyID0gc2FtcGxlOwogICAgIGlmICh3
aWR0aCAhPSBtX2N1cnJlbnRTZXR0aW5ncy53aWR0aCgpIHx8IGhlaWdodCAhPSBtX2N1cnJlbnRT
ZXR0aW5ncy5oZWlnaHQoKSkgeworICAgICAgICBPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnPiBjaGFuZ2VkOworICAgICAgICBpZiAod2lkdGggIT0gbV9jdXJyZW50
U2V0dGluZ3Mud2lkdGgoKSkKKyAgICAgICAgICAgIGNoYW5nZWQuYWRkKFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgpOworICAgICAgICBpZiAoaGVpZ2h0ICE9IG1fY3Vy
cmVudFNldHRpbmdzLmhlaWdodCgpKQorICAgICAgICAgICAgY2hhbmdlZC5hZGQoUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQpOworCiAgICAgICAgIG1fY3VycmVudFNl
dHRpbmdzLnNldFdpZHRoKHdpZHRoKTsKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0SGVp
Z2h0KGhlaWdodCk7Ci0gICAgICAgIHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgICAgIHNldHRp
bmdzRGlkQ2hhbmdlKGNoYW5nZWQpOwogICAgIH0KIAogICAgIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZSwgcm90YXRpb24pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKaW5kZXggZDI2YTI5NGUzNmU3OWU4
YTNhMTE5NTBlMmFmMTg4N2M4MTI3NDc5Zi4uMGIxZjNlZjlmMmY4ZDk0YTlhMWViODg2Yjg1NDBl
MDU5NzZhMzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFj
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTksOCArNTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpIGZpbmFs
OwogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBm
aW5hbDsKLSAgICBib29sIGFwcGx5RnJhbWVSYXRlKGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCBz
ZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnPikgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7CiAKICAg
ICBib29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYy5tbQppbmRleCBiMTdlN2MyYjQ1ZTBkOTA1MjNhMmM0MjJjNmU4Y2Nl
Nzc3MWJiMmQ4Li5lNmU0NDhjM2VjYWFmMDUwODM0ODA5MzBkNWNkYzQwMzEwZTk4YTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1MywyMSArMjUz
LDEyIEBAIHZvaWQgU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0RGlzcGxheVN0
cmVhbSgpCiAgICAgbV9pc1J1bm5pbmcgPSB0cnVlOwogfQogCi1ib29sIFNjcmVlbkRpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3ZvaWQg
U2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIGlm
ICghRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6YXBwbHlTaXplKG5ld1NpemUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFjOjphcHBs
eUZyYW1lUmF0ZShkb3VibGUgcmF0ZSkKLXsKLSAgICBpZiAoZnJhbWVSYXRlKCkgIT0gcmF0ZSkK
KyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdo
dCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpGcmFtZVJhdGUgfSkpCiAgICAg
ICAgIG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7CiAKLSAgICByZXR1cm4gRGlzcGxheUNhcHR1
cmVTb3VyY2VDb2NvYTo6YXBwbHlGcmFtZVJhdGUocmF0ZSk7CisgICAgcmV0dXJuIERpc3BsYXlD
YXB0dXJlU291cmNlQ29jb2E6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAogdm9p
ZCBTY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y29tbWl0Q29uZmlndXJhdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwCmluZGV4IGYzYzkzN2ZmOGE1YmJkNzJmNWY5ODM5YWQ3ZDk2ZWMyNDUyNjcy
NWQuLjk2NTcyNzA4MmNiMzIzOTg5NTk2YjgxYWM2YTEzYTZkOTEwZjEwOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzJiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkgYwogICAg
IHJldHVybiBtX2NhcGFiaWxpdGllcy52YWx1ZSgpOwogfQogCi12b2lkIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpGbGFnPiBzZXR0aW5ncykKIHsKICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVs
bG9wdDsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpOworICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKHNldHRpbmdzKTsKIH0KIAog
dm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaAppbmRleCA0NDNkZDA3M2YwYjQzYmM1NjJiNGE3YzFhMDM5ZDMyMDY1MTU2Mzk3Li43OWM2
Njc4YWQwMTUzMTE2YzdhYjcxNzc0NDliYTY4OTUzMzJiMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC01
NCwxOCArNTQsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBm
aW5hbDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoU2Vjb25kcykgeyB9CisgICAgdm9pZCBz
ZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnPikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgU2Vjb25kcyByZW5kZXJJbnRlcnZhbCgpIHsg
cmV0dXJuIDYwX21zOyB9CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5U2FtcGxlU2l6ZShpbnQp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlv
bihib29sKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5hbDsKICAgICBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgZmluYWw7
Ci0gICAgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgdm9pZCB0aWNrKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMWVlYzQ0MWQ3OGVjYWQxNDVkOTdkMDFmNzQ4ZWMwODJl
MWIyNmVhMy4uMmFlYWYyY2FmZTE3MzcyNmU0NGRlNjM3N2YxMWZlYTE5YmM1ZTdkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKQEAgLTE5MiwxMCArMTkyLDE3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzKCkgY29uc3QKICAg
ICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3MudmFsdWUoKTsKIH0KIAotdm9pZCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQordm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6
Om51bGxvcHQ7Ci0gICAgUmVhbHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKTsK
KyAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkhlaWdo
dCB9KSkgeworICAgICAgICBtX2Jhc2VGb250U2l6ZSA9IHNpemUoKS5oZWlnaHQoKSAqIC4wODsK
KyAgICAgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFzZUZvbnRTaXplICogMi41OworICAgICAg
ICBtX3N0YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41OworICAgICAgICBtX2ltYWdl
QnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWFsdGltZVZpZGVvU291cmNlOjpzZXR0
aW5nc0RpZENoYW5nZShzZXR0aW5ncyk7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2U6OnN0YXJ0Q2FwdHVyZVRpbWVyKCkKQEAgLTIyNSwxOSArMjMyLDYgQEAgU2Vjb25kcyBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6ZWxhcHNlZFRpbWUoKQogICAgIHJldHVybiBtX2VsYXBzZWRU
aW1lICsgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9zdGFydFRpbWUpOwogfQogCi1ib29sIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjphcHBseVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICBpZiAoIVJlYWx0aW1lVmlkZW9Tb3VyY2U6OmFwcGx5U2l6ZShzaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgbV9iYXNlRm9udFNpemUgPSBzaXplLmhlaWdodCgpICogLjA4
OwotICAgIG1fYmlwQm9wRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIDIuNTsKLSAgICBtX3N0
YXRzRm9udFNpemUgPSBtX2Jhc2VGb250U2l6ZSAqIC41OwotICAgIG1faW1hZ2VCdWZmZXIgPSBu
dWxscHRyOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6OmRyYXdBbmltYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGZs
b2F0IHJhZGl1cyA9IHNpemUoKS53aWR0aCgpICogLjA5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IDZhYzcz
NThlNzRjOGUzM2EwMDFiMjhlMDZmNDUyNWI3MzQxOGM0ZjYuLjkxZjY1NmFmYzE3NzFkYjJmNmZl
NmM2ODgzZjJlMTI0MDA3YTkxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTYwLDEyICs2MCwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKCkgY29uc3Q7CiAKICAgICBT
ZWNvbmRzIGVsYXBzZWRUaW1lKCk7Ci0gICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldHRpbmdzRGlkQ2hhbmdlKCkgZmluYWw7CiAKICAg
ICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2lu
Z0RhdGEoKSBmaW5hbDsKQEAgLTc0LDkgKzczLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdU
ZXh0KEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZvaWQgZHJhd0JveGVzKEdyYXBoaWNzQ29udGV4
dCYpOwogCi0gICAgYm9vbCBhcHBseUZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpWaWRlb0ZhY2luZ01vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29s
IGFwcGx5QXNwZWN0UmF0aW8oZG91YmxlKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHZvaWQgZ2VuZXJhdGVGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggODI0MGQ1
MGE1MjgwYTQ0ZmM3N2VmM2NkZjBjZTgyYWQ3YWUyNzBjMi4uYmMzOWRjY2Y1OGUxNDVjNDk4NGJh
NThkNGM1MWI2YzY4MzU4ODZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDggKzc0LDkgQEAg
cHVibGljOgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgdm9pZCBzZXRTZXR0aW5n
cyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmJiBzZXR0aW5ncykKICAgICB7CisgICAgICAg
IGF1dG8gY2hhbmdlZCA9IG1fc2V0dGluZ3MuZGlmZmVyZW5jZShzZXR0aW5ncyk7CiAgICAgICAg
IG1fc2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsKLSAgICAgICAgc2V0dGluZ3NEaWRDaGFu
Z2UoKTsKKyAgICAgICAgc2V0dGluZ3NEaWRDaGFuZ2UoY2hhbmdlZCk7CiAgICAgfQogCiAgICAg
Y29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzY3JpcHRpb247IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>