<?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>203633</bug_id>
          
          <creation_ts>2019-10-30 15:21:31 -0700</creation_ts>
          <short_desc>[iOS][WK2] Simplify process assertion handling for the network process and service worker processes</short_desc>
          <delta_ts>2019-11-04 13:37:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1585572</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-30 15:21:31 -0700</bug_when>
    <thetext>Simplify process assertion handling for the network process and service worker processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585590</commentid>
    <comment_count>1</comment_count>
      <attachid>382373</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-30 15:35:08 -0700</bug_when>
    <thetext>Created attachment 382373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585600</commentid>
    <comment_count>2</comment_count>
      <attachid>382375</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-30 15:47:54 -0700</bug_when>
    <thetext>Created attachment 382375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586049</commentid>
    <comment_count>3</comment_count>
      <attachid>382375</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-31 13:31:07 -0700</bug_when>
    <thetext>Comment on attachment 382375
Patch

ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586995</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-04 08:22:02 -0800</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587004</commentid>
    <comment_count>5</comment_count>
      <attachid>382375</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-04 08:34:29 -0800</bug_when>
    <thetext>Comment on attachment 382375
Patch

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

&gt; Source/WebKit/UIProcess/ProcessThrottler.h:95
&gt; +    using ActivityVariant = Variant&lt;std::nullptr_t, std::unique_ptr&lt;BackgroundActivity&gt;, std::unique_ptr&lt;ForegroundActivity&gt;&gt;;

Could you use UniqueRef here?  You use the non-std::nullptr_t types as if they are always non-null, and right now the nullptr constructor is quite ambiguous.  I guess you only use the default constructor, but still...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587006</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-04 08:42:29 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 382375 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382375&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ProcessThrottler.h:95
&gt; &gt; +    using ActivityVariant = Variant&lt;std::nullptr_t, std::unique_ptr&lt;BackgroundActivity&gt;, std::unique_ptr&lt;ForegroundActivity&gt;&gt;;
&gt; 
&gt; Could you use UniqueRef here?  You use the non-std::nullptr_t types as if
&gt; they are always non-null, and right now the nullptr constructor is quite
&gt; ambiguous.  I guess you only use the default constructor, but still...

I am on the fence about this. I think this would mean having backgroundActivity() / foregroundActivity() return a UniqueRef instead of a unique_ptr, and then a lot of call sites would need to call moveToUniquePtr() to store it as a data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587073</commentid>
    <comment_count>7</comment_count>
      <attachid>382754</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-04 11:30:55 -0800</bug_when>
    <thetext>Created attachment 382754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587084</commentid>
    <comment_count>8</comment_count>
      <attachid>382760</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-04 12:29:28 -0800</bug_when>
    <thetext>Created attachment 382760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587128</commentid>
    <comment_count>9</comment_count>
      <attachid>382760</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 13:36:33 -0800</bug_when>
    <thetext>Comment on attachment 382760
Patch

Clearing flags on attachment: 382760

Committed r252011: &lt;https://trac.webkit.org/changeset/252011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587129</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-04 13:36:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587130</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-04 13:37:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/56877865&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382373</attachid>
            <date>2019-10-30 15:35:08 -0700</date>
            <delta_ts>2019-10-30 15:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203633-20191030153508.patch</filename>
            <type>text/plain</type>
            <size>25808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQxNzhhNzYxZGYxMWU3MWFk
ZGExYmE1OTQxZjQ5YWQ5OGM0YjY1N2MuLjMxY2M1NjIyZjI3ZjkzOGJiM2ZhOGZmZDI1MTBjNThi
N2RkZDJmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMTAtMzAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFNpbXBsaWZ5IHBy
b2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzYzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpbXBsaWZ5IHByb2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUg
bmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMuCisgICAgICAgIElu
IHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIDEu
IFB1dCB0aGUgTmV0d29ya1Byb2Nlc3NQcm94eSBpbiBjaGFyZ2Ugb2Yga2VlcGluZyB0aGUgbmV0
d29yayBwcm9jZXNzIHJ1bm5hYmxlIGluc3RlYWQKKyAgICAgICAgICAgb2YgcmVseWluZyBvbiB0
aGUgV2ViUHJvY2Vzc1Bvb2wgdG8gZG8gaXQuCisgICAgICAgIDIuIFB1dCB0aGUgV2ViUHJvY2Vz
c1Byb3h5IGluIGNoYXJnZSBvZiBrZWVwaW5nIHRoZSB3ZWIgcHJvY2VzcyBydW5uYWJsZSBkdWUg
dG8gc2VydmljZQorICAgICAgICAgICB3b3JrZXIgYWN0aXZpdHksIGluc3RlYWQgb2YgcmVseWlu
ZyBvbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgdG8gZG8gaXQuCisgICAgICAgIDMuIEludHJvZHVjZSBh
IG5ldyBWYXJpYW50IGRhdGEgdHlwZSB3aGljaCBjYW4gc3RvcmUgYSBmb3JlZ3JvdW5kIGFjdGl2
aXR5LCBhIGJhY2tncm91bmQKKyAgICAgICAgICAgYWN0aXZpdHkgb3Igbm8gYWN0aXZpdHkuIFRo
aXMgYXZvaWQgaGF2aW5nIDIgc2VwYXJhdGUgYW5kIG11dHVhbGx5LWV4Y2x1c2l2ZSBkYXRhCisg
ICAgICAgICAgIG1lbWJlcnMgZm9yIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgYWN0aXZpdGll
cy4KKyAgICAgICAgNC4gVGhlIG5ldyBjb2RlIGlzIGEgYml0IG1vcmUgY29ycmVjdCBiZWNhdXNl
IGl0IG1ha2VzIHN1cmUgdGhlIHRoZSBhY3Rpdml0eSB3ZSdyZSBob2xkaW5nCisgICAgICAgICAg
IGlzIHZhbGlkLCBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyB0aGF0IGl0IGhhcyBhbiBhY3Rp
dml0eS4gVGhpcyBtZWFucyB0aGF0IGlmIHRoZQorICAgICAgICAgICBwcm9jZXNzIGFzc2VydGlv
biB3YXMgcHJldmlvdXNseSBpbnZhbGlkYXRlZCwgd2Ugd2lsbCBub3cgcHJvcGVybHkgdGFrZSBh
IG5ldyBhY3Rpdml0eSwKKyAgICAgICAgICAgd2hpY2ggd2lsbCByZS10YWtlIGEgcHJvY2VzcyBh
c3NlcnRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlZHVjZXMgdGhlICNpZmRlZmlu
ZyBmb3IgSU9TX0ZBTUlMWSwgc2luY2UgUHJvY2Vzc1Rocm90dGxlciBhbmQKKyAgICAgICAgUHJv
Y2Vzc0Fzc2VydGlvbiBleGlzdCBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
U2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTZXJ2aWNlV29y
a2VyUHJvY2VzcyBjb25zdCk6CisKIDIwMTktMTAtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBXS0ZyYW1lSXNEaXNwbGF5aW5nTWFya3VwRG9jdW1lbnQoKSBz
aG91bGQgcmV0dXJuIHRydWUgYWZ0ZXIgYSB3aW5kb3cub3Blbi9kb2N1bWVudC53cml0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggNjBlMmNiMjQ3MDM2YTAyOGQ0Y2E1Y2U0NzBhN2JkNGJjN2M1N2NkZi4u
ODAyYzBkZjhhMDVmOTE4MWRhNzIwMzA3ZDNlOTZmMzg3MWU2OWUwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xMjA0LDE2ICsxMjA0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWREZXN0
cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnQKIH0KICNlbmRp
ZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRv
Rm9yZWdyb3VuZCgpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nl
c3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCksIDApOwotfQotCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCi17Ci0gICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNr
Z3JvdW5kKCksIDApOwotfQotCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
R2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXM6OkFzeW5jUmVwbHkmJiByZXBseSkKIHsK
QEAgLTEzMzgsNiArMTMyOCwyNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2Fs
U3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKQorewor
ICAgIGlmIChwcm9jZXNzUG9vbCgpLmhhc0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKSkgeworICAg
ICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9h
Y3Rpdml0eUZyb21XZWJQcm9jZXNzZXMpKSB7CisgICAgICAgICAgICBtX2FjdGl2aXR5RnJvbVdl
YlByb2Nlc3NlcyA9IHRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBm
b3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpLCAwKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChwcm9jZXNzUG9vbCgpLmhh
c0JhY2tncm91bmRXZWJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9hY3Rpdml0eUZyb21XZWJQcm9jZXNzZXMp
KSB7CisgICAgICAgICAgICBtX2FjdGl2aXR5RnJvbVdlYlByb2Nlc3NlcyA9IHRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCBiYWNrZ3JvdW5k
IHZpZXcocykiX3MpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCksIDApOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9hY3Rpdml0eUZyb21XZWJQcm9jZXNzZXMgPSBudWxs
cHRyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNDcyNjJlYmZmYjQ2NzRlYjVjNzAwMzY4OTNmN2IwODAzYjRhYzI1ZS4u
Zjk0MjlmOGIwOWM5YzY2YTE4ZDA5MzBjNWFhNDIzYzVhMzg3MjQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTE2MCw4ICsxNjAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIAotICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRUcmFu
c2l0aW9uVG9Gb3JlZ3JvdW5kKCk7Ci0gICAgdm9pZCBzZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0JhY2tncm91bmQoKTsKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9vbCBi
YWNrZ3JvdW5kKTsKIAogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CkBA
IC0xNzIsNiArMTcwLDggQEAgcHVibGljOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5
bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01l
c3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAKICAgICBQcm9j
ZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIHZv
aWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOworCiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKCkgeyByZXR1cm4gbV9wcm9jZXNzUG9vbDsgfQogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKQEAgLTI3OSw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJv
dHRsZXIgbV90aHJvdHRsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eT4gbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBt
X3N5bmNBbGxDb29raWVzQWN0aXZpdHk7CisgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlW
YXJpYW50IG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzOwogICAgIAogICAgIHVuc2lnbmVkIG1f
c3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmluZGV4IDJkZDM5YmZiMmQwNmQ1Zjc5MTFjODI2MjA4MWJl
NDZlNWI2YmZlMjcuLjkyZDU0NzFkMTRjYzJmY2I2ODEzNTI3ZWYwMjYwMTExNDk3YjEyY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0yMDUs
NCArMjA1LDE4IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6dWlBc3NlcnRpb25XaWxsRXhwaXJl
SW1taW5lbnRseSgpCiAgICAgbV9wcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyLnN0b3AoKTsK
IH0KIAorYm9vbCBQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KGNv
bnN0IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCYgYWN0aXZpdHkpCit7CisgICAg
aWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gV1RGOjpnZXQ8c3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6
OkJhY2tncm91bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxpZCgpOworfQorCitib29sIFBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkoY29uc3QgUHJvY2Vzc1Ro
cm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiBhY3Rpdml0eSkKK3sKKyAgICBpZiAoIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8c3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91
bmRBY3Rpdml0eT4+KGFjdGl2aXR5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBXVEY6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFj
dGl2aXR5Pj4oYWN0aXZpdHkpLT5pc1ZhbGlkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCmluZGV4IGVhNzNj
MGZhODI0Yzk0YjFiOWU5Zjc4MDVjNTM1ZTQ0ZTBiODVjNzUuLjE2NDliNDY3YmNjNzkyYTk1NWY3
OGYwOTFiZWNlZDdjZTgxNWNiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC05MCw2ICs5MSwxMCBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBC
YWNrZ3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5cGU6OkJhY2tncm91bmQ+Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0
eShBU0NJSUxpdGVyYWwgbmFtZSk7CisKKyAgICB1c2luZyBBY3Rpdml0eVZhcmlhbnQgPSBWYXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2dyb3VuZEFjdGl2aXR5Piwg
c3RkOjp1bmlxdWVfcHRyPEZvcmVncm91bmRBY3Rpdml0eT4+OworICAgIHN0YXRpYyBib29sIGlz
VmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkoY29uc3QgQWN0aXZpdHlWYXJpYW50Jik7CisgICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBBY3Rpdml0eVZhcmlhbnQm
KTsKICAgICAKICAgICB2b2lkIGRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEKTsKICAgICBi
b29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRBY3Rpdml0
aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRBY3Rpdml0aWVzLnNpemUoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDIzYWM2ZTQ5N2ZhZTczZGEy
N2FjMmVmNTY1MGJiZTRmMjk5NmQzYjAuLjQ1MjM4OTMwNDFlYWE5OTE2ZmQ2NjM1ZTEzNTIzNjk3
Y2RmYmI1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTIzMywxMCArMjMzLDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9oaWRkZW5Q
YWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQp
IHsgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOyB9KQogICAg
ICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YlByb2Nlc3NQb29sOjp1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZUxpbWl0
KQogICAgICwgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NlcykKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9mb3JlZ3JvdW5kV2Vi
UHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNd
KFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQotI2VuZGlm
CiAgICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENh
Y2hlPigqdGhpcykpCiAgICAgLCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlBy
b2Nlc3NDYWNoZT4oKnRoaXMpKQogewpAQCAtNjMxLDEwICs2MjksNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSogd2l0aAogICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0UU9TKG5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUygpLCBuZXR3b3JrUHJvY2Vzc1Ro
cm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAKLSAgICBpZiAobV9kaWROZXR3b3JrUHJvY2Vz
c0NyYXNoKSB7Ci0gICAgICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IGZhbHNlOwotICAg
ICAgICByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKCpuZXR3b3JrUHJvY2Vz
cyk7Ci0gICAgfQorICAgIG5ldHdvcmtQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPmFkZFNlc3Npb24obWFrZVJlZigqd2l0aFdlYnNpdGVEYXRhU3RvcmUpKTsKQEAgLTY1NSw3
ICs2NTAsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcgogewogICAgIEFTU0VSVChtX25ldHdv
cmtQcm9jZXNzKTsKICAgICBBU1NFUlQoJm5ldHdvcmtQcm9jZXNzUHJveHkgPT0gbV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSk7Ci0gICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gdHJ1ZTsKIAog
ICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAg
ICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZSgmbmV0d29ya1Byb2Nlc3NQcm94eSk7CkBA
IC03MzUsNyArNzI5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KIAogICAgICAgICBSRUxF
QVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VX
b3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgJXAs
IHByb2Nlc3MgaWRlbnRpZmllciAlZCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgICAgIHVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIG1fcHJvY2Vzc2Vz
LmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KQEAgLTExMjksNyArMTEy
Miw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5maW5kKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJl
Z2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQo
KSB9KTsKICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5l
bmQoKSAmJiBpdGVyYXRvci0+dmFsdWUgPT0gcHJvY2VzcykKICAgICAgICAgICAgIG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5yZW1vdmUoaXRlcmF0b3IpOwotICAgICAgICB1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpOwogICAgIH0KICNlbmRpZgogCkBAIC0xNzA0LDcgKzE2OTYsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgCiAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+dGVybWluYXRlKCk7CiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxw
dHI7Ci0gICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVz
dGluZygpCkBAIC0yMDQwLDcyICsyMDMxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9y
dFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBhdXRv
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uID0gWyZdIHsKLSAgICAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8g
YmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgdmlzaWJsZSB2aWV3KHMpIl9zKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBt
X2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVy
IG9yaWdpbi4KLSAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9t
YWluKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAg
ICAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclByb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcykpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgICAgICBtX2JhY2tncm91bmRBY3Rp
dml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgIH07Ci0gICAgdXBk
YXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgYXV0byB1
cGRhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvbiA9IFsmXSB7Ci0gICAgICAgIGF1dG8mIG5ldHdv
cmtQcm9jZXNzID0gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLQotICAgICAgICBpZiAobV9mb3Jl
Z3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2Zv
cmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKLSAgICAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kUHJvY2Vzc0RpZFRy
YW5zaXRpb25Ub0ZvcmVncm91bmQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fYmFj
a2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlci52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5Rm9y
TmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZv
ck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
Ci0gICAgICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9u
VG9CYWNrZ3JvdW5kKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
ID0gbnVsbHB0cjsKLSAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2Vz
cyA9IG51bGxwdHI7Ci0gICAgfTsKLSAgICB1cGRhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvbigp
OwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9j
ZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV3TmV0d29ya1Byb2Nlc3NQ
cm94eSkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoZSBuZXR3b3JrIHBy
b2Nlc3MgY3Jhc2hlZDsgdGFrZSBuZXcgYWN0aXZpdGllcyBmb3IgdGhlIG5ldyBuZXR3b3JrIHBy
b2Nlc3MuCi0gICAgaWYgKG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3Jr
UHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBm
b3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKLSAgICBlbHNlIGlmIChtX2ZvcmVncm91bmRBY3Rp
dml0eUZvck5ldHdvcmtQcm9jZXNzKQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5l
dHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50aHJvdHRsZXIoKS5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKKyAgICBmb3IgKGF1
dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVl
cygpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZp
Y2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4ZGEwYjE3MjU5ZjY0ZTBj
NDNiMDNhOTEyMDdmOWVjYTQyZDJmODlhLi44YTk1YmIzODkwNzI0YTVkMjE5YjgxNWM2YmYwMWNl
ODk5ZGYzYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTQ3MSwxMCArNDcxLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdWludDY0X3QgcmVnaXN0ZXJQ
cm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIoRnVuY3Rpb248dm9pZChXZWJQcm9jZXNzUG9vbCYp
PiYmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVhdGlvbkxpc3Rl
bmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4oKSBj
b25zdCB7IHJldHVybiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1fZm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAgICAgQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbiBi
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyByZXR1cm4gQmFja2dyb3VuZFdlYlBy
b2Nlc3NUb2tlbihtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci5jb3VudCgpKTsgfQotI2Vu
ZGlmCisgICAgYm9vbCBoYXNGb3JlZ3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKTsgfQorICAgIGJvb2wgaGFzQmFj
a2dyb3VuZFdlYlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJik+JiYpOwogCkBAIC01NTMsNyArNTUzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nl
c3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUHJveHkmKTsKICNlbmRpZgogCi0gICAg
dm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNz
UHJveHkmKTsKICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlci4KQEAgLTY5NCw3ICs2OTMsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQgeyB0cnVlIH07CiAKLSAgICBib29sIG1f
ZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPj4gbV9kaWN0aW9uYXJ5Q2FsbGJhY2tzOwpA
QCAtNzU3LDE2ICs3NTUsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsK
ICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzVGVybWluYXRpb25UaW1lcjsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9y
ZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwog
ICAgIEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlciBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFj
dGl2aXR5PiBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYmFja2dy
b3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3M7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PiBtX2ZvcmVncm91bmRBY3Rp
dml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dy
b3VuZEFjdGl2aXR5Pj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7Ci0jZW5kaWYKLSNlbmRpZgogCiAgICAgVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2Fj
aGU+IG1fYmFja0ZvcndhcmRDYWNoZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggZWQ1NGQ0YWNjOGNmOTYzZmVjNTg2MmNkZWFlYTg0MzI2NmJi
ZjIyOS4uMWY4NmE1NGJkMzY2OTI5ZjY1NGU2YWE0YTA1NjYyYjZlN2RhYTU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjMwLDEwICsxMjMw
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0
YXRlKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUo
JXUpIiwgdGhpcywgc3RhdGUpOwogCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkg
JiYgIXBhZ2VDb3VudCgpKSB7CisgICAgaWYgKGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdl
YlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoKSByZWxlYXNlIGFsbCBhc3NlcnRp
b25zIGZvciBuZXR3b3JrIHByb2Nlc3MgYmVjYXVzZSB0aGlzIGlzIGEgc2VydmljZSB3b3JrZXIg
cHJvY2VzcyB3aXRob3V0IHBhZ2UiLCB0aGlzKTsKICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW4g
PSBudWxscHRyOwogICAgICAgICBtX2JhY2tncm91bmRUb2tlbiA9IG51bGxwdHI7CkBAIC0xMjQ3
LDggKzEyNDYsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRl
KEFzc2VydGlvblN0YXRlIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShTdXNwZW5k
ZWQpIHJlbGVhc2UgYWxsIGFzc2VydGlvbnMgZm9yIG5ldHdvcmsgcHJvY2VzcyIsIHRoaXMpOwog
ICAgICAgICBtX2ZvcmVncm91bmRUb2tlbiA9IG51bGxwdHI7CiAgICAgICAgIG1fYmFja2dyb3Vu
ZFRva2VuID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdlLT5wcm9j
ZXNzV2lsbEJlY29tZVN1c3BlbmRlZCgpOworI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKQEAgLTEyNjEsOCArMTI2MiwxMCBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUg
c3RhdGUpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEZvcmVncm91bmQpIHRha2luZyBmb3Jl
Z3JvdW5kIGFzc2VydGlvbiBmb3IgbmV0d29yayBwcm9jZXNzIiwgdGhpcyk7CiAgICAgICAgIG1f
Zm9yZWdyb3VuZFRva2VuID0gcHJvY2Vzc1Bvb2woKS5mb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2Vu
KCk7CiAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkp
CiAgICAgICAgICAgICBwYWdlLT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKKyNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICAKICAgICBjYXNlIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nOgpAQCAtMTI3MCw5ICsxMjczLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogICAgIH0KIAogICAg
IEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW4gfHwgIW1fZm9yZWdyb3VuZFRva2VuKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5JikKQEAgLTE1NTUs
NyArMTU1NSwyOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdAogICAgIEFTU0VSVChtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0K
LSNlbmRpZgorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkg
UElEOiAlZCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlIGNvdWxkIGRvIGJldHRlciBp
ZiB3ZSBrbmV3IHdoaWNoIFdlYkNvbnRlbnQgcHJvY2Vzc2VzIG5lZWRlZCB0aGlzIHNlcnZpY2Ug
d29ya2VyIHByb2Nlc3MuCisgICAgaWYgKHByb2Nlc3NQb29sKCkuaGFzRm9yZWdyb3VuZFdlYlBy
b2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVn
cm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRs
ZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocHJvY2Vzc1Bvb2woKS5o
YXNCYWNrZ3JvdW5kV2ViUHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0
bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCisgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZv
ciBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCkKIHsKQEAgLTE1NzYsNyArMTU5Nyw4IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2VycygpCiB7CiAgICAgQVNTRVJUKG1fcmVnaXN0cmFi
bGVEb21haW4gJiYgIW1fcmVnaXN0cmFibGVEb21haW4tPmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geyBXZWJQYWdlUHJveHlJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVBy
b3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIG51
bGxwdHIgfTsKKyAgICB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggMmEyNDZlN2VkMmU2MWM4MTFkYTJmMWIwNzQ1MjFhNGY0ZTQ3YzdkYy4u
MTZkZGVlY2Q1YzEwZTM3ZDIwMDBlZjAxNzRkMDBkNDg3YmY3MDcwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTg4LDE0ICs4OCwxMiBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwog
c3RydWN0IFdlYnNpdGVEYXRhOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGVudW0gRm9y
ZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyVHlwZSB7IH07CiB0eXBlZGVmIFJlZkNvdW50ZXI8Rm9y
ZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyVHlwZT4gRm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVy
OwogdHlwZWRlZiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI6OlRva2VuIEZvcmVncm91bmRX
ZWJQcm9jZXNzVG9rZW47CiBlbnVtIEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlclR5cGUgeyB9
OwogdHlwZWRlZiBSZWZDb3VudGVyPEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlclR5cGU+IEJh
Y2tncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKIHR5cGVkZWYgQmFja2dyb3VuZFdlYlByb2Nlc3ND
b3VudGVyOjpUb2tlbiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuOwotI2VuZGlmCiAKIGNsYXNz
IFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1YmxpYyBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxX
ZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Piwg
cHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE2MCw2ICsxNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhY3RpdmVQYWdlc0RvbWFpbnNGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOyAvLyBUaGlzIGlzIHdoYXQg
aXMgcmVwb3J0ZWQgdG8gQWN0aXZpdHlNb25pdG9yLgogCiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2
aWNlV29ya2VycygpIGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247
IH0KKyAgICBib29sIGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyBy
ZXR1cm4gaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KIAogICAg
IHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAKQEAgLTMzNiw2ICszMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclBy
ZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIGJvb2wgaGFz
U2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlE
KSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9Cisg
ICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpOwogI2VuZGlmCiAK
IHByb3RlY3RlZDoKQEAgLTQ4MCw5ICs0ODAsOSBAQCBwcml2YXRlOgogICAgIGludCBtX251bWJl
ck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkOwogICAgIFByb2Nlc3NUaHJvdHRs
ZXIgbV90aHJvdHRsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJh
Y2tncm91bmRBY3Rpdml0eT4gbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlczsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9mb3Jl
Z3JvdW5kVG9rZW47CiAgICAgQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbiBtX2JhY2tncm91bmRU
b2tlbjsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9oYXNTZW50TWVzc2Fn
ZVRvVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPiBtX3VuZXhwZWN0ZWRBY3Rpdml0
eVRpbWVyOwogI2VuZGlmCkBAIC01MjIsNiArNTIyLDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
U2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsKICAgICAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQ7CiAgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQYWdlSUQ7CisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2
aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICB9OwogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382375</attachid>
            <date>2019-10-30 15:47:54 -0700</date>
            <delta_ts>2019-11-04 11:30:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203633-20191030154754.patch</filename>
            <type>text/plain</type>
            <size>25597</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2NjhkNmE1NzUwY2I4MTI0
NmY4ZDQ0YzhjZGI1OWQ4MWY2NDRlNDYuLjRiZTgwN2YwMjBmNjA3NzBhMzdlY2UwZWQ0NjM3MGFh
YWY3OThhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMTAtMzAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFNpbXBsaWZ5IHBy
b2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzYzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpbXBsaWZ5IHByb2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUg
bmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMuCisgICAgICAgIElu
IHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGU6CisgICAgICAgIDEu
IFB1dCB0aGUgTmV0d29ya1Byb2Nlc3NQcm94eSBpbiBjaGFyZ2Ugb2Yga2VlcGluZyB0aGUgbmV0
d29yayBwcm9jZXNzIHJ1bm5hYmxlIGluc3RlYWQKKyAgICAgICAgICAgb2YgcmVseWluZyBvbiB0
aGUgV2ViUHJvY2Vzc1Bvb2wgdG8gZG8gaXQuCisgICAgICAgIDIuIFB1dCB0aGUgV2ViUHJvY2Vz
c1Byb3h5IGluIGNoYXJnZSBvZiBrZWVwaW5nIHRoZSB3ZWIgcHJvY2VzcyBydW5uYWJsZSBkdWUg
dG8gc2VydmljZQorICAgICAgICAgICB3b3JrZXIgYWN0aXZpdHksIGluc3RlYWQgb2YgcmVseWlu
ZyBvbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgdG8gZG8gaXQuCisgICAgICAgIDMuIEludHJvZHVjZSBh
IG5ldyBWYXJpYW50IGRhdGEgdHlwZSB3aGljaCBjYW4gc3RvcmUgYSBmb3JlZ3JvdW5kIGFjdGl2
aXR5LCBhIGJhY2tncm91bmQKKyAgICAgICAgICAgYWN0aXZpdHkgb3Igbm8gYWN0aXZpdHkuIFRo
aXMgYXZvaWQgaGF2aW5nIDIgc2VwYXJhdGUgYW5kIG11dHVhbGx5LWV4Y2x1c2l2ZSBkYXRhCisg
ICAgICAgICAgIG1lbWJlcnMgZm9yIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgYWN0aXZpdGll
cy4KKyAgICAgICAgNC4gVGhlIG5ldyBjb2RlIGlzIGEgYml0IG1vcmUgY29ycmVjdCBiZWNhdXNl
IGl0IG1ha2VzIHN1cmUgdGhlIHRoZSBhY3Rpdml0eSB3ZSdyZSBob2xkaW5nCisgICAgICAgICAg
IGlzIHZhbGlkLCBpbnN0ZWFkIG9mIHNpbXBseSBjaGVja2luZyB0aGF0IGl0IGhhcyBhbiBhY3Rp
dml0eS4gVGhpcyBtZWFucyB0aGF0IGlmIHRoZQorICAgICAgICAgICBwcm9jZXNzIGFzc2VydGlv
biB3YXMgcHJldmlvdXNseSBpbnZhbGlkYXRlZCwgd2Ugd2lsbCBub3cgcHJvcGVybHkgdGFrZSBh
IG5ldyBhY3Rpdml0eSwKKyAgICAgICAgICAgd2hpY2ggd2lsbCByZS10YWtlIGEgcHJvY2VzcyBh
c3NlcnRpb24uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlZHVjZXMgdGhlICNpZmRlZmlu
ZyBmb3IgSU9TX0ZBTUlMWSwgc2luY2UgUHJvY2Vzc1Rocm90dGxlciBhbmQKKyAgICAgICAgUHJv
Y2Vzc0Fzc2VydGlvbiBleGlzdCBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
U2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc1N0YW5kYWxvbmVTZXJ2aWNlV29y
a2VyUHJvY2VzcyBjb25zdCk6CisKIDIwMTktMTAtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXS0NvbnRlbnRSdWxlTGlzdHMgc2hvdWxk
IGJsb2NrIHJlcXVlc3RzIGZyb20gc2VydmljZSB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2
MGUyY2IyNDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmLi44MDJjMGRmOGEwNWY5MTgx
ZGE3MjAzMDdkM2U5NmYzODcxZTY5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyMDQsMTYgKzEy
MDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKLXsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5zaXRpb25U
b0ZvcmVncm91bmQoKSwgMCk7Ci19Ci0KLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKSwgMCk7Ci19
Ci0KICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGF0aHMsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpHZXRTYW5kYm94RXh0ZW5z
aW9uc0ZvckJsb2JGaWxlczo6QXN5bmNSZXBseSYmIHJlcGx5KQogewpAQCAtMTMzOCw2ICsxMzI4
LDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNz
aW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpCit7CisgICAgaWYgKHByb2Nlc3NQ
b29sKCkuaGFzRm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX2FjdGl2aXR5RnJvbVdlYlBy
b2Nlc3NlcykpIHsKKyAgICAgICAgICAgIG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzID0gdGhy
b3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZp
ZXcocykiX3MpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBy
b2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCksIDApOworICAgICAgICB9CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKHByb2Nlc3NQb29sKCkuaGFzQmFja2dyb3VuZFdlYlBy
b2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tn
cm91bmRBY3Rpdml0eShtX2FjdGl2aXR5RnJvbVdlYlByb2Nlc3NlcykpIHsKKyAgICAgICAgICAg
IG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7Cisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5z
aXRpb25Ub0JhY2tncm91bmQoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2FjdGl2aXR5RnJvbVdlYlByb2Nlc3NlcyA9IG51bGxwdHI7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0
NzI2MmViZmZiNDY3NGViNWM3MDAzNjg5M2Y3YjA4MDNiNGFjMjVlLi5mOTQyOWY4YjA5YzljNjZh
MThkMDkzMGM1YWE0MjNjNWEzODcyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTYwLDggKzE2MCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
I2VuZGlmCiAgICAgCi0gICAgdm9pZCBzZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91
bmQoKTsKLSAgICB2b2lkIHNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpOwog
ICAgIHZvaWQgc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwogCiAg
ICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKQEAgLTE3Miw2ICsxNzAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYmKTsKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRo
cm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgdm9pZCB1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9uKCk7CisKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7IHJldHVy
biBtX3Byb2Nlc3NQb29sOyB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAt
Mjc5LDYgKzI3OSw3IEBAIHByaXZhdGU6CiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tpZXNB
Y3Rpdml0eTsKKyAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgbV9hY3Rpdml0
eUZyb21XZWJQcm9jZXNzZXM7CiAgICAgCiAgICAgdW5zaWduZWQgbV9zeW5jQWxsQ29va2llc0Nv
dW50ZXIgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAKaW5kZXggMmRkMzliZmIyZDA2ZDVmNzkxMWM4MjYyMDgxYmU0NmU1YjZiZmUyNy4uOTJk
NTQ3MWQxNGNjMmZjYjY4MTM1MjdlZjAyNjAxMTE0OTdiMTJjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKQEAgLTIwNSw0ICsyMDUsMTggQEAgdm9p
ZCBQcm9jZXNzVGhyb3R0bGVyOjp1aUFzc2VydGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCkKICAg
ICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXIuc3RvcCgpOwogfQogCitib29sIFByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkoY29uc3QgUHJvY2Vzc1Rocm90
dGxlcjo6QWN0aXZpdHlWYXJpYW50JiBhY3Rpdml0eSkKK3sKKyAgICBpZiAoIVdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRB
Y3Rpdml0eT4+KGFjdGl2aXR5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBX
VEY6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5Pj4oYWN0aXZpdHkpLT5pc1ZhbGlkKCk7Cit9CisKK2Jvb2wgUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eVZhcmlhbnQmIGFjdGl2aXR5KQoreworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxz
dGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5Pj4oYWN0
aXZpdHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6Z2V0PHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0
eSktPmlzVmFsaWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggNWVjZDYyYWI0ZGNlNWQ3ZTQ5ODc0
OWY2MDk5YzY1OTYzZTI4MzM1Ny4uZTRlMmJhMjNjYzJjYmUxOWVkNGFjZGYxNWVlZWQyM2E2YjUz
ZDQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTkwLDYgKzkxLDEwIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEJhY2tncm91bmRBY3Rpdml0
eSA9IEFjdGl2aXR5PEFjdGl2aXR5VHlwZTo6QmFja2dyb3VuZD47CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEJhY2tncm91bmRBY3Rpdml0eT4gYmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBu
YW1lKTsKKworICAgIHVzaW5nIEFjdGl2aXR5VmFyaWFudCA9IFZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZ3JvdW5kQWN0aXZpdHk+LCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9yZWdyb3VuZEFjdGl2aXR5Pj47CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEJhY2tncm91bmRB
Y3Rpdml0eShjb25zdCBBY3Rpdml0eVZhcmlhbnQmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
Rm9yZWdyb3VuZEFjdGl2aXR5KGNvbnN0IEFjdGl2aXR5VmFyaWFudCYpOwogICAgIAogICAgIHZv
aWQgZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQpOwogICAgIGJvb2wgc2hvdWxkQmVSdW5u
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpIHx8IG1f
YmFja2dyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNTYzOWViYjFjMzQ4MGViMWM4ZGFhZWI2NTIxYTVhOTI1
MmZmYzk2Zi4uODFmNzdjODBiODUyZTgxYzcwODI3NTVhOWZhYmQ3NjU0NTI4Y2I1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjM0LDEwICsyMzQs
OCBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nQXV0
b0luY3JlYXNlc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyBtX2hpZGRlblBhZ2VU
aHJvdHRsaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VU
aHJvdHRsaW5nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQpCiAgICAgLCBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcihb
dGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCiAg
ICAgLCBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50
KSB7IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7IH0pCi0jZW5kaWYKICAgICAsIG1fYmFja0Zv
cndhcmRDYWNoZShtYWtlVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2FjaGU+KCp0aGlzKSkKICAg
ICAsIG1fd2ViUHJvY2Vzc0NhY2hlKG1ha2VVbmlxdWVSZWY8V2ViUHJvY2Vzc0NhY2hlPigqdGhp
cykpCiB7CkBAIC02MzIsMTAgKzYzMCw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAg
bmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRRT1MobmV0
d29ya1Byb2Nlc3NMYXRlbmN5UU9TKCksIG5ldHdvcmtQcm9jZXNzVGhyb3VnaHB1dFFPUygpKSwg
MCk7CiAjZW5kaWYKIAotICAgIGlmIChtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2gpIHsKLSAgICAg
ICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gZmFsc2U7Ci0gICAgICAgIHJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoKm5ldHdvcmtQcm9jZXNzKTsKLSAgICB9CisgICAg
bmV0d29ya1Byb2Nlc3MtPnVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAogICAgIGlmICh3aXRo
V2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+YWRkU2Vzc2lvbiht
YWtlUmVmKCp3aXRoV2Vic2l0ZURhdGFTdG9yZSkpOwpAQCAtNjU2LDcgKzY1MSw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBuZXR3b3JrUHJvY2Vzc1ByCiB7CiAgICAgQVNTRVJUKG1fbmV0d29ya1Byb2Nlc3MpOwogICAg
IEFTU0VSVCgmbmV0d29ya1Byb2Nlc3NQcm94eSA9PSBtX25ldHdvcmtQcm9jZXNzLmdldCgpKTsK
LSAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2ggPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBz
dXBwbGVtZW50IDogbV9zdXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVudC0+
cHJvY2Vzc0RpZENsb3NlKCZuZXR3b3JrUHJvY2Vzc1Byb3h5KTsKQEAgLTczNiw3ICs3MzAsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogCiAgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Np
b25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIldlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
Y3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCwgcHJvY2VzcyBpZGVudGlm
aWVyICVkIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKTsKICAgICAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5
LCB3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUo
bmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTIzLDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQog
ICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmZpbmQoUmVn
aXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4o
KSwgcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOwogICAgICAgICBp
ZiAoaXRlcmF0b3IgIT0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmVuZCgpICYmIGl0ZXJhdG9y
LT52YWx1ZSA9PSBwcm9jZXNzKQogICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnJlbW92ZShpdGVyYXRvcik7Ci0gICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAg
ICAgfQogI2VuZGlmCiAKQEAgLTE3MDksNyArMTcwMSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKICAgICAKICAgICBtX25ldHdvcmtQcm9jZXNzLT50
ZXJtaW5hdGUoKTsKICAgICBtX25ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAgICBtX2RpZE5l
dHdvcmtQcm9jZXNzQ3Jhc2ggPSB0cnVlOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZW5k
TmV0d29ya1Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nKCkKQEAgLTIwNDUs
NzIgKzIwMzYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRp
bWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKIAogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGF1dG8gdXBkYXRlU2VydmljZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24gPSBbJl0gewotICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFs
dWUoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgdGhhbiB0aGlz
IG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCi0gICAgICAgICAgICBmb3IgKGF1dG8q
IHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygp
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgICAgICAgICAgICAgIGlmICghbV9m
b3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKQotICAgICAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0
aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHko
IlNlcnZpY2UgV29ya2VyIGZvciB2aXNpYmxlIHZpZXcocykiX3MpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fYmFja2dyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8g
YmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9i
YWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCB2aWV3KHMpIl9z
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmNsZWFyKCk7Ci0gICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7Ci0gICAgfTsKLSAgICB1cGRhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbigpOwotI2VuZGlmCi0KLSAgICBhdXRvIHVwZGF0ZU5ldHdvcmtQcm9j
ZXNzQXNzZXJ0aW9uID0gWyZdIHsKLSAgICAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBlbnN1
cmVOZXR3b3JrUHJvY2VzcygpOwotCi0gICAgICAgIGlmIChtX2ZvcmVncm91bmRXZWJQcm9jZXNz
Q291bnRlci52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFjdGl2aXR5
Rm9yTmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0
eUZvck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwotICAgICAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdy
b3VuZCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlG
b3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsK
LSAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2Vzcykg
ewotICAgICAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3Mg
PSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtp
bmcgZm9yIGZvcmVncm91bmQgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKLSAgICAgICAgICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29y
a1Byb2Nlc3MgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAg
ICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAg
ICB9OwotICAgIHVwZGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0
ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KQotewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkOyB0
YWtlIG5ldyBhY3Rpdml0aWVzIGZvciB0aGUgbmV3IG5ldHdvcmsgcHJvY2Vzcy4KLSAgICBpZiAo
bV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcykKLSAgICAgICAgbV9iYWNrZ3Jv
dW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBiYWNrZ3JvdW5kIHZp
ZXcocykiX3MpOwotICAgIGVsc2UgaWYgKG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1By
b2Nlc3MpCi0gICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBu
ZXdOZXR3b3JrUHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiTmV0
d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKG5ld05ldHdvcmtQcm9jZXNzUHJveHkpOworICAgIGZvciAoYXV0byogc2VydmljZVdvcmtl
clByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpCisgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzLT51cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigp
OwogI2VuZGlmCisgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS51cGRhdGVQcm9jZXNzQXNzZXJ0
aW9uKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGZlMTlkZmZjMjllZmNhOGQ2YTQyMjYyYzdmYzRjOWQw
YTIwMjYzNTcuLjhmODAwZmZjMzZjMjE3MjUwZmUxZDUyYmIwMDQyOTYyYjA0ZGZiODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDcyLDEwICs0NzIsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyB1aW50NjRfdCByZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRp
b25MaXN0ZW5lcihGdW5jdGlvbjx2b2lkKFdlYlByb2Nlc3NQb29sJik+JiYpOwogICAgIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJQcm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIodWludDY0X3QgaWRl
bnRpZmllcik7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQ
cm9jZXNzVG9rZW4gZm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEZv
cmVncm91bmRXZWJQcm9jZXNzVG9rZW4obV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIuY291
bnQoKSk7IH0KICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGJhY2tncm91bmRXZWJQcm9j
ZXNzVG9rZW4oKSBjb25zdCB7IHJldHVybiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1fYmFj
a2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9Ci0jZW5kaWYKKyAgICBib29sIGhh
c0ZvcmVncm91bmRXZWJQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRXZWJQ
cm9jZXNzQ291bnRlci52YWx1ZSgpOyB9CisgICAgYm9vbCBoYXNCYWNrZ3JvdW5kV2ViUHJvY2Vz
c2VzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUo
KTsgfQogCiAgICAgdm9pZCBwcm9jZXNzRm9yTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBjb25z
dCBBUEk6Ok5hdmlnYXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNvdXJjZVByb2Nlc3Ms
IGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJik7CiAKQEAg
LTU1NCw3ICs1NTQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1N0b3BwZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogICAgIHZv
aWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLgpAQCAtNjk2LDcgKzY5NSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc1Rl
cm1pbmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKIAotICAgIGJvb2wgbV9kaWROZXR3b3JrUHJvY2Vz
c0NyYXNoIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Byb2Nlc3NQcm94
eT4gbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEaWN0
aW9uYXJ5Q2FsbGJhY2s+PiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CkBAIC03NTksMTYgKzc1Nyw4
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdl
UHJveHlJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRp
bWVyOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vz
c0NvdW50ZXIgbV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiAgICAgQmFja2dyb3VuZFdl
YlByb2Nlc3NDb3VudGVyIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1fZm9yZWdy
b3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3M7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JO
ZXR3b3JrUHJvY2VzczsKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRs
ZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4s
IHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PiBt
X2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSNlbmRpZgot
I2VuZGlmCiAKICAgICBVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4gbV9iYWNrRm9yd2Fy
ZENhY2hlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBlOWIwN2M2MjZhODU5OGM5NTk5NTljYTQ2NmUwZjIzNTkxN2Y3NTA0Li5jYjMwMTM4MzY4
YTQ1OWY1ODI3MDIzODNmZTIwZDZhNWM2MDFkYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEyMzAsMTAgKzEyMzAsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiB7Ci0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZSgldSkiLCB0aGlzLCBzdGF0
ZSk7CiAKLSAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSAmJiAhcGFnZUNvdW50KCkp
IHsKKyAgICBpZiAoaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSkgewogICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRTZXRBc3NlcnRpb25TdGF0ZSgpIHJlbGVhc2UgYWxsIGFzc2VydGlvbnMgZm9yIG5ldHdvcmsg
cHJvY2VzcyBiZWNhdXNlIHRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdpdGhvdXQg
cGFnZSIsIHRoaXMpOwogICAgICAgICBtX2ZvcmVncm91bmRUb2tlbiA9IG51bGxwdHI7CiAgICAg
ICAgIG1fYmFja2dyb3VuZFRva2VuID0gbnVsbHB0cjsKQEAgLTEyNDcsOCArMTI0NiwxMCBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUg
c3RhdGUpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKFN1c3BlbmRlZCkgcmVsZWFzZSBhbGwg
YXNzZXJ0aW9ucyBmb3IgbmV0d29yayBwcm9jZXNzIiwgdGhpcyk7CiAgICAgICAgIG1fZm9yZWdy
b3VuZFRva2VuID0gbnVsbHB0cjsKICAgICAgICAgbV9iYWNrZ3JvdW5kVG9rZW4gPSBudWxscHRy
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1f
cGFnZU1hcC52YWx1ZXMoKSkKICAgICAgICAgICAgIHBhZ2UtPnByb2Nlc3NXaWxsQmVjb21lU3Vz
cGVuZGVkKCk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFzc2VydGlvblN0
YXRlOjpCYWNrZ3JvdW5kOgpAQCAtMTI2MSw4ICsxMjYyLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSBzdGF0ZSkKICAgICAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlk
U2V0QXNzZXJ0aW9uU3RhdGUoRm9yZWdyb3VuZCkgdGFraW5nIGZvcmVncm91bmQgYXNzZXJ0aW9u
IGZvciBuZXR3b3JrIHByb2Nlc3MiLCB0aGlzKTsKICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW4g
PSBwcm9jZXNzUG9vbCgpLmZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4oKTsKICAgICAgICAgbV9i
YWNrZ3JvdW5kVG9rZW4gPSBudWxscHRyOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKICAgICAgICAgICAgIHBh
Z2UtPnByb2Nlc3NXaWxsQmVjb21lRm9yZWdyb3VuZCgpOworI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIAogICAgIGNhc2UgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmc6CkBA
IC0xMjcwLDkgKzEyNzMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9u
U3RhdGUoQXNzZXJ0aW9uU3RhdGUgc3RhdGUpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX2JhY2tn
cm91bmRUb2tlbiB8fCAhbV9mb3JlZ3JvdW5kVG9rZW4pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlTWVk
aWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmKQpAQCAtMTU1NSw3ICsxNTU1LDI4IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0CiAgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQotI2VuZGlmCisKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbigpCit7
CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94
eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKSBQSUQ6ICVkIiwgdGhpcywg
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKTsKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBGSVhNRTogV2UgY291bGQgZG8gYmV0dGVyIGlmIHdlIGtuZXcgd2hpY2gg
V2ViQ29udGVudCBwcm9jZXNzZXMgbmVlZGVkIHRoaXMgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4K
KyAgICBpZiAocHJvY2Vzc1Bvb2woKS5oYXNGb3JlZ3JvdW5kV2ViUHJvY2Vzc2VzKCkpIHsKKyAg
ICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCisgICAgICAgICAgICBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0
aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChwcm9jZXNzUG9vbCgpLmhhc0JhY2tncm91bmRXZWJQ
cm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKKyAg
ICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0
bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgdmll
dyhzKSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKK30KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMo
KQogewpAQCAtMTYwMyw3ICsxNjI0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNl
cnZpY2VXb3JrZXJzKGNvbnN0IE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlckkKICAgICAg
ICAgICAgIGNvbnRlbnRSdWxlTGlzdHNGcm9tSWRlbnRpZmllcih1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKSwKICNlbmRpZgogICAgICAgICB9LAorICAgICAgICBudWxscHRyLAogICAg
IH07CisgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDQ5NDEzMDUzMjAxNGFlNjAzZDdmNGFkNTllZWVmZDA5MTAzMTdlYTUuLmIxNTM2
ZGYyMjM2NzU0ODkyNjJiYWQ4OWZkMDY4NjRmZmI2NmFjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05MSwxNCArOTEsMTIgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVj
dCBXZWJzaXRlRGF0YTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBlbnVtIEZvcmVncm91
bmRXZWJQcm9jZXNzQ291bnRlclR5cGUgeyB9OwogdHlwZWRlZiBSZWZDb3VudGVyPEZvcmVncm91
bmRXZWJQcm9jZXNzQ291bnRlclR5cGU+IEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKIHR5
cGVkZWYgRm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyOjpUb2tlbiBGb3JlZ3JvdW5kV2ViUHJv
Y2Vzc1Rva2VuOwogZW51bSBCYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXJUeXBlIHsgfTsKIHR5
cGVkZWYgUmVmQ291bnRlcjxCYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXJUeXBlPiBCYWNrZ3Jv
dW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiB0eXBlZGVmIEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRl
cjo6VG9rZW4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbjsKLSNlbmRpZgogCiBjbGFzcyBXZWJQ
cm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJv
Y2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHByaXZh
dGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xNjMsNiArMTYxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgYWN0aXZlUGFnZXNEb21haW5zRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsgLy8gVGhpcyBpcyB3aGF0IGlzIHJl
cG9ydGVkIHRvIEFjdGl2aXR5TW9uaXRvci4KIAogICAgIGJvb2wgaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOyB9Cisg
ICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBhZ2VDb3VudCgpOyB9CiAKICAgICB2b2lk
IGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCkBA
IC0zMzksNiArMzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJl
bmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICBib29sIGhhc1NlcnZp
Y2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQorICAgIHZv
aWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6CkBAIC00ODMsOSArNDgzLDkgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1f
dGhyb3R0bGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHk+IG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fZm9yZWdyb3Vu
ZFRva2VuOwogICAgIEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW47
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1faGFzU2VudE1lc3NhZ2VUb1Vu
YmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4gbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1l
cjsKICNlbmRpZgpAQCAtNTI2LDYgKzUyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQcm94eUlEOwogICAgICAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFnZUlEOwogICAgICAgICBTZXJ2aWNlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YTsKKyAgICAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2aXR5OwogICAgIH07CiAgICAgT3B0aW9u
YWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsK
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382754</attachid>
            <date>2019-11-04 11:30:55 -0800</date>
            <delta_ts>2019-11-04 12:29:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203633-20191104113053.patch</filename>
            <type>text/plain</type>
            <size>38731</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZTU3Mjk0OTBlZTdjNzUy
NzZkNzY1NjBhMGYwMjUxNGM0MTNlYzguLjhlYjg0NjA5ZjQ4YTdjN2VhNmEyZjg5NjZlZmFiYTA4
MTJiOWE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMTEtMDQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFNpbXBsaWZ5IHBy
b2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzYzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgU2ltcGxpZnkgcHJvY2VzcyBhc3NlcnRpb24gaGFuZGxpbmcgZm9yIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Nlcy4KKyAgICAgICAg
SW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAg
MS4gUHV0IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGluIGNoYXJnZSBvZiBrZWVwaW5nIHRoZSBu
ZXR3b3JrIHByb2Nlc3MgcnVubmFibGUgaW5zdGVhZAorICAgICAgICAgICBvZiByZWx5aW5nIG9u
IHRoZSBXZWJQcm9jZXNzUG9vbCB0byBkbyBpdC4KKyAgICAgICAgMi4gUHV0IHRoZSBXZWJQcm9j
ZXNzUHJveHkgaW4gY2hhcmdlIG9mIGtlZXBpbmcgdGhlIHdlYiBwcm9jZXNzIHJ1bm5hYmxlIGR1
ZSB0byBzZXJ2aWNlCisgICAgICAgICAgIHdvcmtlciBhY3Rpdml0eSwgaW5zdGVhZCBvZiByZWx5
aW5nIG9uIHRoZSBXZWJQcm9jZXNzUG9vbCB0byBkbyBpdC4KKyAgICAgICAgMy4gSW50cm9kdWNl
IGEgbmV3IFZhcmlhbnQgZGF0YSB0eXBlIHdoaWNoIGNhbiBzdG9yZSBhIGZvcmVncm91bmQgYWN0
aXZpdHksIGEgYmFja2dyb3VuZAorICAgICAgICAgICBhY3Rpdml0eSBvciBubyBhY3Rpdml0eS4g
VGhpcyBhdm9pZCBoYXZpbmcgMiBzZXBhcmF0ZSBhbmQgbXV0dWFsbHktZXhjbHVzaXZlIGRhdGEK
KyAgICAgICAgICAgbWVtYmVycyBmb3IgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBhY3Rpdml0
aWVzLgorICAgICAgICA0LiBUaGUgbmV3IGNvZGUgaXMgYSBiaXQgbW9yZSBjb3JyZWN0IGJlY2F1
c2UgaXQgbWFrZXMgc3VyZSB0aGUgdGhlIGFjdGl2aXR5IHdlJ3JlIGhvbGRpbmcKKyAgICAgICAg
ICAgaXMgdmFsaWQsIGluc3RlYWQgb2Ygc2ltcGx5IGNoZWNraW5nIHRoYXQgaXQgaGFzIGFuIGFj
dGl2aXR5LiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlCisgICAgICAgICAgIHByb2Nlc3MgYXNzZXJ0
aW9uIHdhcyBwcmV2aW91c2x5IGludmFsaWRhdGVkLCB3ZSB3aWxsIG5vdyBwcm9wZXJseSB0YWtl
IGEgbmV3IGFjdGl2aXR5LAorICAgICAgICAgICB3aGljaCB3aWxsIHJlLXRha2UgYSBwcm9jZXNz
IGFzc2VydGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVkdWNlcyB0aGUgI2lmZGVm
aW5nIGZvciBJT1NfRkFNSUxZLCBzaW5jZSBQcm9jZXNzVGhyb3R0bGVyIGFuZAorICAgICAgICBQ
cm9jZXNzQXNzZXJ0aW9uIGV4aXN0IG9uIGFsbCBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzU3RhbmRhbG9uZVNlcnZpY2VX
b3JrZXJQcm9jZXNzIGNvbnN0KToKKwogMjAxOS0xMS0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gQ3RhcEF1dGhlbnRpY2F0b3I6OnRy
eURvd25ncmFkZSBzaG91bGQgZGlzdGluZ3Vpc2ggcmVxdWVzdERhdGEoKS5vcHRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDY1
MWI3MDE0YmVmNTk2NDI5YWMxNWJjNzgzZTkxZDg0N2ZiMDk2ZTEuLjY0ZTM2NWVkY2ZmYWNkYTVh
ZWFjNjcwOTAwMzZmOWZlMTBiZjRkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBEb3dubG9h
ZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBwcmV2
aWV3IiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7Ci0gICAgICAgIG1fYWN0
aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CisgICAgICAgIG1fYWN0aXZpdHkgPSB3ZWJQ
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeXN0ZW0gcHJl
dmlldyBkb3dubG9hZCJfcykubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgfQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTZmOTBkNzM1NDhmNzdmYTgzYjFlNjM2
MGQ5ODI1MDRmZTExM2I2NC4uM2U5ODRjMWVlZjc1Yjc1MjlhM2M0M2Q4MjM2NjJhYWM5MDViNzMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5n
ZUlzTG9hZGluZygpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFtX25ldHdvcmtBY3Rpdml0eSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3Rh
dGUgaXMgdGFraW5nIGEgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBs
b2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93
ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
UGFnZSBMb2FkIl9zKTsKKyAgICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3
LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBM
b2FkIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9u
ZXR3b3JrQWN0aXZpdHkpIHsKICAgICAgICAgLy8gVGhlIGFwcGxpY2F0aW9uIGlzIHZpc2libGUg
c28gd2UgZGVsYXkgcmVsZWFzaW5nIHRoZSBiYWNrZ3JvdW5kIGFjdGl2aXR5IGZvciAzIHNlY29u
ZHMgdG8gZ2l2ZSBpdCBhIGNoYW5jZSB0byBzdGFydCBhbm90aGVyIG5hdmlnYXRpb24KQEAgLTEz
NDcsNyArMTM0Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2Vz
KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91ciBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9uZS4KICAgICBp
ZiAobV9uZXR3b3JrQWN0aXZpdHkpCi0gICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJW
aWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFn
ZSBMb2FkIl9zKTsKKyAgICAgICAgbV9uZXR3b3JrQWN0aXZpdHkgPSBtX3dlYlZpZXctPl9wYWdl
LT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIExvYWQiX3Mp
Lm1vdmVUb1VuaXF1ZVB0cigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKaW5kZXggNDk3
YWI3MjIwMGNkN2RkYWZiMTYzYzZjNmQ3ZWE2NzZiMjdjMDRjMS4uNGM3NTM5YmY1MTQ2ZGQ3YjJk
YTNjZTEzOTljOTk2MTYyM2MwZDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHk+IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRB
Y3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9wYWdlLnByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkobmFtZSk7CisgICAgcmV0dXJuIG1fcGFn
ZS5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogfQogCiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJl
Z2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2Vi
UGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBhOTM1Y2ZlZGI4NDU0MGFkOTVkOGRlY2EwODBiNGIwMTFlNjBmMWY5Li5lYWIyZjAw
NjJjOGVmMDRiYWRiZTk1MTMyY2JiZTMzNWM5NGUwMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RydWN0IFR5cGVUYWcgeyB9OwogICAgIHR5cGVkZWYgY29uc3QgVHlwZVRhZyogVHlwZTsKIAot
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCisgICAgZXhwbGlj
aXQgQ2FsbGJhY2tCYXNlKFR5cGUgdHlwZSwgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJp
YW50JiYgYWN0aXZpdHkpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9jYWxs
YmFja0lEKENhbGxiYWNrSUQ6OmdlbmVyYXRlSUQoKSkKICAgICAgICAgLCBtX2FjdGl2aXR5KFdU
Rk1vdmUoYWN0aXZpdHkpKQpAQCAtNzksNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0aXZp
dHk7CisgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHk7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBHZW5l
cmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEZ1bmN0aW9uPHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJhY2tGdW5jdGlvbjsKIAotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxi
YWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5
PiYmIGFjdGl2aXR5ID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4g
Y3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgUHJvY2Vzc1Rocm90dGxlcjo6QWN0
aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGFjdGl2aXR5KSkpOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIEdlbmVyaWNDYWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJh
Y2ssIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+
JiYgYWN0aXZpdHkpCisgICAgR2VuZXJpY0NhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxs
YmFjaywgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkpCiAgICAg
ICAgIDogQ2FsbGJhY2tCYXNlKHR5cGUoKSwgV1RGTW92ZShhY3Rpdml0eSkpCiAgICAgICAgICwg
bV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICB7CkBAIC0xODksNyArMTg5LDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxi
YWNrSUQgcHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCisgICAg
Q2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbiwgVW5pcXVlUmVm
PFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4mJiBhY3Rpdml0eSkKICAgICB7
CiAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihU
KSwgVC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgV1RGTW92ZShhY3Rpdml0
eSkpOwogICAgICAgICByZXR1cm4gcHV0KFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDYwZTJjYjI0NzAzNmEwMjhkNGNhNWNlNDcwYTdiZDRiYzdjNTdjZGYuLmUwZTM5ZmI3
Y2IxZGZhMjcyMWQ5NzhiZGIwMDZjMGQ0NzQ2ZDEzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA5
OCw3ICsxMDk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KICAgICBpZiAoIW1fYWN0
aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIik7Ci0g
ICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNr
Z3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZpbGVzIl9zKTsKKyAgICAgICAgbV9hY3Rp
dml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0
eSgiSG9sZGluZyBsb2NrZWQgZmlsZXMiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgIH0KIH0K
IApAQCAtMTExMSw3ICsxMTExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxs
Q29va2llcygpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgc3luY2luZyBjb29r
aWVzIiwgdGhpcyk7Ci0gICAgbV9zeW5jQWxsQ29va2llc0FjdGl2aXR5ID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJTeW5jaW5nIGNvb2tpZXMiX3MpOworICAgIG1fc3luY0FsbENv
b2tpZXNBY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU3luY2luZyBj
b29raWVzIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKIH0KICAgICAKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZGlkU3luY0FsbENvb2tpZXMoKQpAQCAtMTIwNCwxNiArMTIwNCw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYlVzZXJDb250ZW50CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZW5kUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQotewotICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgp
LCAwKTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFRyYW5z
aXRpb25Ub0JhY2tncm91bmQoKQotewotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpLCAwKTsKLX0KLQogI2lmIEVOQUJM
RShTQU5EQk9YX0VYVEVOU0lPTlMpCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocywgTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZp
bGVzOjpBc3luY1JlcGx5JiYgcmVwbHkpCiB7CkBAIC0xMzM4LDYgKzEzMjgsMjUgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCkKK3sKKyAgICBpZiAocHJvY2Vzc1Bvb2woKS5oYXNGb3Jl
Z3JvdW5kV2ViUHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzKSkgewor
ICAgICAgICAgICAgbV9hY3Rpdml0eUZyb21XZWJQcm9jZXNzZXMgPSB0aHJvdHRsZXIoKS5mb3Jl
Z3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Cisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5z
aXRpb25Ub0ZvcmVncm91bmQoKSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAocHJvY2Vzc1Bvb2woKS5oYXNCYWNrZ3JvdW5kV2ViUHJvY2Vzc2VzKCkpIHsK
KyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5
KG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzKSkgeworICAgICAgICAgICAgbV9hY3Rpdml0eUZy
b21XZWJQcm9jZXNzZXMgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtp
bmcgZm9yIGZvcmVncm91bmQgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKKyAgICAgICAgICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dy
b3VuZCgpLCAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fYWN0
aXZpdHlGcm9tV2ViUHJvY2Vzc2VzID0gbnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDQ3MjYyZWJmZmI0Njc0
ZWI1YzcwMDM2ODkzZjdiMDgwM2I0YWMyNWUuLmY5NDI5ZjhiMDljOWM2NmExOGQwOTMwYzVhYTQy
M2M1YTM4NzI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNjAsOCArMTYwLDYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKICAgICAK
LSAgICB2b2lkIHNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpOwotICAgIHZv
aWQgc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7CiAgICAgdm9pZCBzeW50
aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CiAKICAgICB2b2lkIHNldElz
SG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwpAQCAtMTcyLDYgKzE3MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5
RGVsYXllZFJlcGx5JiYpOwogCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KKyAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsK
KwogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIHsgcmV0dXJuIG1fcHJvY2Vzc1Bv
b2w7IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0yNzksNiArMjc5LDcg
QEAgcHJpdmF0ZToKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0aXZp
dHlGb3JIb2xkaW5nTG9ja2VkRmlsZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4gbV9zeW5jQWxsQ29va2llc0FjdGl2aXR5OworICAg
IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBtX2FjdGl2aXR5RnJvbVdlYlByb2Nl
c3NlczsKICAgICAKICAgICB1bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7IDAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAy
ZGQzOWJmYjJkMDZkNWY3OTExYzgyNjIwODFiZTQ2ZTViNmJmZTI3Li44MmQzZjE3MDdjNDcxOTlj
ZDIyNWI0ZGJjMmYzMGQwNjA2ZmVmMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMjA1LDQgKzIwNSwxOCBAQCB2b2lkIFByb2Nlc3NUaHJv
dHRsZXI6OnVpQXNzZXJ0aW9uV2lsbEV4cGlyZUltbWluZW50bHkoKQogICAgIG1fcHJlcGFyZVRv
U3VzcGVuZFRpbWVvdXRUaW1lci5zdG9wKCk7CiB9CiAKK2Jvb2wgUHJvY2Vzc1Rocm90dGxlcjo6
aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0
eVZhcmlhbnQmIGFjdGl2aXR5KQoreworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxV
bmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6Z2V0PFVuaXF1ZVJlZjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlzVmFsaWQo
KTsKK30KKworYm9vbCBQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5
KGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCYgYWN0aXZpdHkpCit7Cisg
ICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVy
OjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gV1RGOjpnZXQ8VW5pcXVlUmVmPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91
bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxpZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAppbmRleCA1
ZWNkNjJhYjRkY2U1ZDdlNDk4NzQ5ZjYwOTljNjU5NjNlMjgzMzU3Li5lODdkYjc0NTYwZTY0ODg2
MDQ3Mjg1ZTYzOGFiNTdlMGFkMjViNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
Y2Vzc1Rocm90dGxlci5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJ
RC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg2LDEw
ICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHVzaW5nIEZvcmVncm91bmRBY3Rpdml0
eSA9IEFjdGl2aXR5PEFjdGl2aXR5VHlwZTo6Rm9yZWdyb3VuZD47Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPEZvcmVncm91bmRBY3Rpdml0eT4gZm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBu
YW1lKTsKKyAgICBVbmlxdWVSZWY8Rm9yZWdyb3VuZEFjdGl2aXR5PiBmb3JlZ3JvdW5kQWN0aXZp
dHkoQVNDSUlMaXRlcmFsIG5hbWUpOwogCiAgICAgdXNpbmcgQmFja2dyb3VuZEFjdGl2aXR5ID0g
QWN0aXZpdHk8QWN0aXZpdHlUeXBlOjpCYWNrZ3JvdW5kPjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUp
OworICAgIFVuaXF1ZVJlZjxCYWNrZ3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShB
U0NJSUxpdGVyYWwgbmFtZSk7CisKKyAgICB1c2luZyBBY3Rpdml0eVZhcmlhbnQgPSBWYXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBVbmlxdWVSZWY8QmFja2dyb3VuZEFjdGl2aXR5PiwgVW5pcXVlUmVm
PEZvcmVncm91bmRBY3Rpdml0eT4+OworICAgIHN0YXRpYyBib29sIGlzVmFsaWRCYWNrZ3JvdW5k
QWN0aXZpdHkoY29uc3QgQWN0aXZpdHlWYXJpYW50Jik7CisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBBY3Rpdml0eVZhcmlhbnQmKTsKICAgICAKICAgICB2
b2lkIGRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEKTsKICAgICBib29sIHNob3VsZEJlUnVu
bmFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBt
X2JhY2tncm91bmRBY3Rpdml0aWVzLnNpemUoKTsgfQpAQCAtMTI0LDE0ICsxMzAsMTQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbjsKIH07CiAK
LWlubGluZSBhdXRvIFByb2Nlc3NUaHJvdHRsZXI6OmZvcmVncm91bmRBY3Rpdml0eShBU0NJSUxp
dGVyYWwgbmFtZSkgLT4gc3RkOjp1bmlxdWVfcHRyPEZvcmVncm91bmRBY3Rpdml0eT4KK2lubGlu
ZSBhdXRvIFByb2Nlc3NUaHJvdHRsZXI6OmZvcmVncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwg
bmFtZSkgLT4gVW5pcXVlUmVmPEZvcmVncm91bmRBY3Rpdml0eT4KIHsKLSAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb3JlZ3JvdW5kQWN0aXZpdHk+KCp0aGlzLCBuYW1lKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxGb3JlZ3JvdW5kQWN0aXZpdHk+KCp0aGlzLCBuYW1lKTsKIH0KIAotaW5saW5l
IGF1dG8gUHJvY2Vzc1Rocm90dGxlcjo6YmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBu
YW1lKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2dyb3VuZEFjdGl2aXR5PgoraW5saW5lIGF1dG8g
UHJvY2Vzc1Rocm90dGxlcjo6YmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKSAt
PiBVbmlxdWVSZWY8QmFja2dyb3VuZEFjdGl2aXR5PgogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PEJhY2tncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
UmVmPEJhY2tncm91bmRBY3Rpdml0eT4oKnRoaXMsIG5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oCmluZGV4IGIxNGNkYzM2ZTAzNjc4M2U4Mzc4NjE0ODJkODUwYjFkMzBhOGNjYTAuLjdkYmNl
ZjlkMWQ1NTM1YTgzNTRkN2JhZTBjNjAxMWEwYTUxYjkxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTQzLDcgKzE0Myw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYWNjZXNzaWJpbGl0eVRva2VuOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Ro
cm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5Owor
ICAgIFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+IG1fcHJv
dmlzaW9uYWxMb2FkQWN0aXZpdHk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IGVhYmVmOWE3OGQwMTQ3NmM4NGJl
MzRlN2ExMWU0NDE2YjEyNTBhMDEuLjMxZDUyZDgzNDBmMzhhMGZjZjBiNmQ2Y2QyNTc3NDRiNzA4
YTIxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFn
ZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBt
X3Nob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZShzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpCiAgICAgLCBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmU3VzcGVuZGVkUGFnZVByb3h5OjpzdXNwZW5zaW9uVGltZWRPdXQpCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAsIG1fc3VzcGVuc2lvbkFjdGl2aXR5KG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIHN1c3BlbnNpb24gZm9yIGJhY2svZm9yd2Fy
ZCBjYWNoZSJfcykpCisgICAgLCBtX3N1c3BlbnNpb25BY3Rpdml0eShtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBzdXNwZW5zaW9uIGZvciBiYWNrL2Zvcndh
cmQgY2FjaGUiX3MpLm1vdmVUb1VuaXF1ZVB0cigpKQogI2VuZGlmCiB7CiAgICAgYWxsU3VzcGVu
ZGVkUGFnZXMoKS5hZGQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBjNmI2Njc0NmIxODMxZWZiYTE5MTc4YzE3ZGRlMGFiN2RlN2ZkYWM5Li44ZWM4
ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE5MzUsNyArMTkzNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICBpZiAoaXNWaWV3VmlzaWJsZSgpKSB7
CiAgICAgICAgIGlmICghbV9pc1Zpc2libGVBY3Rpdml0eSB8fCAhbV9pc1Zpc2libGVBY3Rpdml0
eS0+aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBh
IGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgdmlzaWJsZSIpOwotICAg
ICAgICAgICAgbV9pc1Zpc2libGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIHZpc2libGUiX3MpOworICAgICAgICAgICAgbV9pc1Zp
c2libGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5
KCJWaWV3IGlzIHZpc2libGUiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX2lzVmlzaWJsZUFjdGl2aXR5KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nl
c3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgdmlldyBp
cyBubyBsb25nZXIgdmlzaWJsZSIpOwpAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogICAgIGlmIChpc0F1ZGlibGUpIHsKICAgICAg
ICAgaWYgKCFtX2lzQXVkaWJsZUFjdGl2aXR5IHx8ICFtX2lzQXVkaWJsZUFjdGl2aXR5LT5pc1Zh
bGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3Bl
bnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3MgaXMgdGFraW5nIGEgZm9yZWdy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBhcmUgcGxheWluZyBhdWRpbyIpOwotICAgICAgICAg
ICAgbV9pc0F1ZGlibGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJWaWV3IGlzIHBsYXlpbmcgYXVkaW8iX3MpOworICAgICAgICAgICAgbV9pc0F1
ZGlibGVBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5
KCJWaWV3IGlzIHBsYXlpbmcgYXVkaW8iX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2lzQXVkaWJsZUFjdGl2aXR5KSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBV
SVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB3ZSBh
cmUgbm8gbG9uZ2VyIHBsYXlpbmcgYXVkaW8iKTsKQEAgLTE5NTcsNyArMTk1Nyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAgICBpZiAoaXNDYXB0dXJpbmdN
ZWRpYSkgewogICAgICAgICBpZiAoIW1faXNDYXB0dXJpbmdBY3Rpdml0eSB8fCAhbV9pc0NhcHR1
cmluZ0FjdGl2aXR5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVByb2Nlc3Mg
aXMgdGFraW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtZWRpYSBjYXB0dXJlIGlz
IGFjdGl2ZSIpOwotICAgICAgICAgICAgbV9pc0NhcHR1cmluZ0FjdGl2aXR5ID0gbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIlZpZXcgaXMgY2FwdHVyaW5nIG1lZGlh
Il9zKTsKKyAgICAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcyku
bW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1faXNDYXB0dXJp
bmdBY3Rpdml0eSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNw
ZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGZv
cmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBubyBsb25nZXIgYWN0
aXZlIik7CkBAIC0xOTY3LDcgKzE5NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVGhy
b3R0bGVTdGF0ZSgpCiAgICAgaWYgKG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5KSB7
CiAgICAgICAgIGlmICghbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSB8
fCAhbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eS0+aXNWYWxpZCgpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgaXMgdHJ1ZSIp
OwotICAgICAgICAgICAgbV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGFsd2F5cyBy
dW5zIGF0IGZvcmVncm91bmQgcHJpb3JpdHkiX3MpOworICAgICAgICAgICAgbV9hbHdheXNSdW5z
QXRGb3JlZ3JvdW5kUHJpb3JpdHlBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGFsd2F5cyBydW5zIGF0IGZvcmVncm91bmQgcHJpb3JpdHki
X3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eUFjdGl2aXR5KSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVUaHJvdHRsZVN0YXRlOiBVSVBy
b2Nlc3MgaXMgcmVsZWFzaW5nIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBtX2Fsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBpcyBubyBsb25nZXIgdHJ1ZSIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDU2MzllYmIxYzM0ODBlYjFj
OGRhYWViNjUyMWE1YTkyNTJmZmM5NmYuLjgxZjc3YzgwYjg1MmU4MWM3MDgyNzU1YTlmYWJkNzY1
NDUyOGNiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTIzNCwxMCArMjM0LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9oaWRkZW5Q
YWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQp
IHsgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOyB9KQogICAg
ICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldl
YlByb2Nlc3NQb29sOjp1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZUxpbWl0
KQogICAgICwgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NlcykKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9mb3JlZ3JvdW5kV2Vi
UHJvY2Vzc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpOyB9KQogICAgICwgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIoW3RoaXNd
KFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOyB9KQotI2VuZGlm
CiAgICAgLCBtX2JhY2tGb3J3YXJkQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENh
Y2hlPigqdGhpcykpCiAgICAgLCBtX3dlYlByb2Nlc3NDYWNoZShtYWtlVW5pcXVlUmVmPFdlYlBy
b2Nlc3NDYWNoZT4oKnRoaXMpKQogewpAQCAtNjMyLDEwICs2MzAsNyBAQCBOZXR3b3JrUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSogd2l0aAogICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0UU9TKG5ldHdvcmtQcm9jZXNzTGF0ZW5jeVFPUygpLCBuZXR3b3JrUHJvY2Vzc1Ro
cm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAKLSAgICBpZiAobV9kaWROZXR3b3JrUHJvY2Vz
c0NyYXNoKSB7Ci0gICAgICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IGZhbHNlOwotICAg
ICAgICByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKCpuZXR3b3JrUHJvY2Vz
cyk7Ci0gICAgfQorICAgIG5ldHdvcmtQcm9jZXNzLT51cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7
CiAKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPmFkZFNlc3Npb24obWFrZVJlZigqd2l0aFdlYnNpdGVEYXRhU3RvcmUpKTsKQEAgLTY1Niw3
ICs2NTEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0
d29ya1Byb2Nlc3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcgogewogICAgIEFTU0VSVChtX25ldHdv
cmtQcm9jZXNzKTsKICAgICBBU1NFUlQoJm5ldHdvcmtQcm9jZXNzUHJveHkgPT0gbV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSk7Ci0gICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gdHJ1ZTsKIAog
ICAgIGZvciAoYXV0byYgc3VwcGxlbWVudCA6IG1fc3VwcGxlbWVudHMudmFsdWVzKCkpCiAgICAg
ICAgIHN1cHBsZW1lbnQtPnByb2Nlc3NEaWRDbG9zZSgmbmV0d29ya1Byb2Nlc3NQcm94eSk7CkBA
IC03MzYsNyArNzMwLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KIAogICAgICAgICBSRUxF
QVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VX
b3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgJXAs
IHByb2Nlc3MgaWRlbnRpZmllciAlZCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgICAgIHVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIG1fcHJvY2Vzc2Vz
LmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KQEAgLTExMzAsNyArMTEy
Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5maW5kKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJl
Z2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQo
KSB9KTsKICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5l
bmQoKSAmJiBpdGVyYXRvci0+dmFsdWUgPT0gcHJvY2VzcykKICAgICAgICAgICAgIG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5yZW1vdmUoaXRlcmF0b3IpOwotICAgICAgICB1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpOwogICAgIH0KICNlbmRpZgogCkBAIC0xNzA5LDcgKzE3MDEsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgCiAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+dGVybWluYXRlKCk7CiAgICAgbV9uZXR3b3JrUHJvY2VzcyA9IG51bGxw
dHI7Ci0gICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2VuZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVz
dGluZygpCkBAIC0yMDQ1LDcyICsyMDM2LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9y
dFdlYkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBhdXRv
IHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uID0gWyZdIHsKLSAgICAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8g
YmV0dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9yZWdyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAgICAgICAgICAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgdmlzaWJsZSB2aWV3KHMpIl9zKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBt
X2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVy
IG9yaWdpbi4KLSAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9t
YWluKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAg
ICAgICAgICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclByb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tn
cm91bmQgdmlldyhzKSJfcykpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9mb3JlZ3Jv
dW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0aWVzRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgICAgICBtX2JhY2tncm91bmRBY3Rp
dml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwotICAgIH07Ci0gICAgdXBk
YXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgotCi0gICAgYXV0byB1
cGRhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvbiA9IFsmXSB7Ci0gICAgICAgIGF1dG8mIG5ldHdv
cmtQcm9jZXNzID0gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLQotICAgICAgICBpZiAobV9mb3Jl
Z3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAgaWYgKCFtX2Zv
cmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICAgICAgbV9m
b3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG5ldHdvcmtQcm9jZXNzLnRocm90
dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBmb3IgZm9yZWdyb3VuZCB2aWV3
KHMpIl9zKTsKLSAgICAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kUHJvY2Vzc0RpZFRy
YW5zaXRpb25Ub0ZvcmVncm91bmQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fYmFj
a2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlci52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fYmFja2dyb3VuZEFjdGl2aXR5Rm9y
TmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0eUZv
ck5ldHdvcmtQcm9jZXNzID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7
Ci0gICAgICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9u
VG9CYWNrZ3JvdW5kKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZvcmVncm91bmRB
Y3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
ID0gbnVsbHB0cjsKLSAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2Vz
cyA9IG51bGxwdHI7Ci0gICAgfTsKLSAgICB1cGRhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvbigp
OwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9j
ZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV3TmV0d29ya1Byb2Nlc3NQ
cm94eSkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8vIFRoZSBuZXR3b3JrIHBy
b2Nlc3MgY3Jhc2hlZDsgdGFrZSBuZXcgYWN0aXZpdGllcyBmb3IgdGhlIG5ldyBuZXR3b3JrIHBy
b2Nlc3MuCi0gICAgaWYgKG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MpCi0g
ICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBuZXdOZXR3b3Jr
UHJvY2Vzc1Byb3h5LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya2luZyBm
b3IgYmFja2dyb3VuZCB2aWV3KHMpIl9zKTsKLSAgICBlbHNlIGlmIChtX2ZvcmVncm91bmRBY3Rp
dml0eUZvck5ldHdvcmtQcm9jZXNzKQotICAgICAgICBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5l
dHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50aHJvdHRsZXIoKS5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShuZXdOZXR3b3JrUHJvY2Vzc1Byb3h5KTsKKyAgICBmb3IgKGF1
dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVl
cygpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dXBkYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oKTsKICNlbmRpZgorICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkudXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZp
Y2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmZTE5ZGZmYzI5ZWZjYThk
NmE0MjI2MmM3ZmM0YzlkMGEyMDI2MzU3Li44ZjgwMGZmYzM2YzIxNzI1MGZlMWQ1MmJiMDA0Mjk2
MmIwNGRmYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTQ3MiwxMCArNDcyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdWludDY0X3QgcmVnaXN0ZXJQ
cm9jZXNzUG9vbENyZWF0aW9uTGlzdGVuZXIoRnVuY3Rpb248dm9pZChXZWJQcm9jZXNzUG9vbCYp
PiYmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVhdGlvbkxpc3Rl
bmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIGZvcmVncm91bmRXZWJQcm9jZXNzVG9rZW4oKSBj
b25zdCB7IHJldHVybiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKG1fZm9yZWdyb3VuZFdlYlBy
b2Nlc3NDb3VudGVyLmNvdW50KCkpOyB9CiAgICAgQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbiBi
YWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyByZXR1cm4gQmFja2dyb3VuZFdlYlBy
b2Nlc3NUb2tlbihtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci5jb3VudCgpKTsgfQotI2Vu
ZGlmCisgICAgYm9vbCBoYXNGb3JlZ3JvdW5kV2ViUHJvY2Vzc2VzKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKTsgfQorICAgIGJvb2wgaGFzQmFj
a2dyb3VuZFdlYlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCk7IH0KIAogICAgIHZvaWQgcHJvY2Vzc0Zvck5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgY29uc3QgQVBJOjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBzb3VyY2VQcm9jZXNzLCBjb25zdCBVUkwmIHNvdXJjZVVSTCwgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmPFdlYnNpdGVEYXRhU3RvcmU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgU3VzcGVuZGVkUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJik+JiYpOwogCkBAIC01NTQsNyArNTU0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nl
c3NTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUHJveHkmKTsKICNlbmRpZgogCi0gICAg
dm9pZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNz
UHJveHkmKTsKICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlci4KQEAgLTY5Niw3ICs2OTUsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQgeyB0cnVlIH07CiAKLSAgICBib29sIG1f
ZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCB7IGZhbHNlIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CiAKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPj4gbV9kaWN0aW9uYXJ5Q2FsbGJhY2tzOwpA
QCAtNzU5LDE2ICs3NTcsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsK
ICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzVGVybWluYXRpb25UaW1lcjsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9y
ZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwog
ICAgIEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlciBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291
bnRlcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFj
dGl2aXR5PiBtX2ZvcmVncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYmFja2dy
b3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3M7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PiBtX2ZvcmVncm91bmRBY3Rp
dml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dy
b3VuZEFjdGl2aXR5Pj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXM7Ci0jZW5kaWYKLSNlbmRpZgogCiAgICAgVW5pcXVlUmVmPFdlYkJhY2tGb3J3YXJkQ2Fj
aGU+IG1fYmFja0ZvcndhcmRDYWNoZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggNzEzNTllZjA3NjQxNDI5MzdkMjQwM2NkNzQyNjM3NjQ4YzNk
ZjBjOS4uYTk2Zjk1ODMyOGU5N2I0Y2EyYmFlMjE2ZmFlMjcyMzMyNTRkNTgzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjMyLDEwICsxMjMy
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKIAogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0
YXRlKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUo
JXUpIiwgdGhpcywgc3RhdGUpOwogCi0gICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkg
JiYgIXBhZ2VDb3VudCgpKSB7CisgICAgaWYgKGlzU3RhbmRhbG9uZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdl
YlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoKSByZWxlYXNlIGFsbCBhc3NlcnRp
b25zIGZvciBuZXR3b3JrIHByb2Nlc3MgYmVjYXVzZSB0aGlzIGlzIGEgc2VydmljZSB3b3JrZXIg
cHJvY2VzcyB3aXRob3V0IHBhZ2UiLCB0aGlzKTsKICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW4g
PSBudWxscHRyOwogICAgICAgICBtX2JhY2tncm91bmRUb2tlbiA9IG51bGxwdHI7CkBAIC0xMjQ5
LDggKzEyNDgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRl
KEFzc2VydGlvblN0YXRlIHN0YXRlKQogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShTdXNwZW5k
ZWQpIHJlbGVhc2UgYWxsIGFzc2VydGlvbnMgZm9yIG5ldHdvcmsgcHJvY2VzcyIsIHRoaXMpOwog
ICAgICAgICBtX2ZvcmVncm91bmRUb2tlbiA9IG51bGxwdHI7CiAgICAgICAgIG1fYmFja2dyb3Vu
ZFRva2VuID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICBwYWdlLT5wcm9j
ZXNzV2lsbEJlY29tZVN1c3BlbmRlZCgpOworI2VuZGlmCiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDoKQEAgLTEyNjMsOCArMTI2NCwxMCBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUg
c3RhdGUpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEZvcmVncm91bmQpIHRha2luZyBmb3Jl
Z3JvdW5kIGFzc2VydGlvbiBmb3IgbmV0d29yayBwcm9jZXNzIiwgdGhpcyk7CiAgICAgICAgIG1f
Zm9yZWdyb3VuZFRva2VuID0gcHJvY2Vzc1Bvb2woKS5mb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2Vu
KCk7CiAgICAgICAgIG1fYmFja2dyb3VuZFRva2VuID0gbnVsbHB0cjsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkp
CiAgICAgICAgICAgICBwYWdlLT5wcm9jZXNzV2lsbEJlY29tZUZvcmVncm91bmQoKTsKKyNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICAKICAgICBjYXNlIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nOgpAQCAtMTI3Miw5ICsxMjc1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogICAgIH0KIAogICAg
IEFTU0VSVCghbV9iYWNrZ3JvdW5kVG9rZW4gfHwgIW1fZm9yZWdyb3VuZFRva2VuKTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5JikKQEAgLTEyOTks
NyArMTI5OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KICAgICBpZiAoIW1fYWN0aXZpdHlG
b3JIb2xkaW5nTG9ja2VkRmlsZXMpIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIik7Ci0gICAg
ICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2VkIGZpbGVzIl9zKTsKKyAgICAgICAgbV9hY3Rpdml0
eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgi
SG9sZGluZyBsb2NrZWQgZmlsZXMiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgIH0KIH0KIApA
QCAtMTU1Nyw3ICsxNTU3LDI4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0CiAgICAgQVNTRVJU
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0s
IDApOwogfQotI2VuZGlmCisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbigpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKSBQSUQ6ICVkIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgQVNTRVJU
KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2UgY291bGQgZG8g
YmV0dGVyIGlmIHdlIGtuZXcgd2hpY2ggV2ViQ29udGVudCBwcm9jZXNzZXMgbmVlZGVkIHRoaXMg
c2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICBpZiAocHJvY2Vzc1Bvb2woKS5oYXNGb3JlZ3Jv
dW5kV2ViUHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkRm9yZWdyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0
eSkpCisgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBmb3JlZ3Jv
dW5kIHZpZXcocykiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChwcm9jZXNz
UG9vbCgpLmhhc0JhY2tncm91bmRXZWJQcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoIVByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmFjdGl2aXR5KSkKKyAgICAgICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBX
b3JrZXIgZm9yIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbnVsbHB0cjsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQogewpAQCAtMTYwNSw3ICsxNjI2LDkgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IE9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlckkKICAgICAgICAgICAgIGNvbnRlbnRSdWxlTGlzdHNGcm9tSWRlbnRp
Zmllcih1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSwKICNlbmRpZgogICAgICAgICB9
LAorICAgICAgICBudWxscHRyLAogICAgIH07CisgICAgdXBkYXRlU2VydmljZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQ5NDEzMDUzMjAxNGFlNjAzZDdmNGFk
NTllZWVmZDA5MTAzMTdlYTUuLmIxNTM2ZGYyMjM2NzU0ODkyNjJiYWQ4OWZkMDY4NjRmZmI2NmFj
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05MSwx
NCArOTEsMTIgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBlbnVtIEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlclR5cGUgeyB9OwogdHlw
ZWRlZiBSZWZDb3VudGVyPEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlclR5cGU+IEZvcmVncm91
bmRXZWJQcm9jZXNzQ291bnRlcjsKIHR5cGVkZWYgRm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVy
OjpUb2tlbiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuOwogZW51bSBCYWNrZ3JvdW5kV2ViUHJv
Y2Vzc0NvdW50ZXJUeXBlIHsgfTsKIHR5cGVkZWYgUmVmQ291bnRlcjxCYWNrZ3JvdW5kV2ViUHJv
Y2Vzc0NvdW50ZXJUeXBlPiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7CiB0eXBlZGVmIEJh
Y2tncm91bmRXZWJQcm9jZXNzQ291bnRlcjo6VG9rZW4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tl
bjsKLSNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJs
aWM6CkBAIC0xNjMsNiArMTYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWN0aXZlUGFnZXNEb21h
aW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsgLy8gVGhpcyBpcyB3aGF0IGlzIHJlcG9ydGVkIHRvIEFjdGl2aXR5TW9uaXRvci4KIAogICAg
IGJvb2wgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSBjb25zdCB7IHJldHVybiAhIW1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uOyB9CisgICAgYm9vbCBpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkgJiYgIXBh
Z2VDb3VudCgpOyB9CiAKICAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogCkBAIC0zMzksNiArMzM4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVw
ZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24g
JiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCA9
PSBwYWdlUHJveHlJRDsgfQorICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC00ODMsOSArNDgzLDkgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9udW1iZXJPZlRpbWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsK
ICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0aXZpdHlGb3JIb2xkaW5n
TG9ja2VkRmlsZXM7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGb3JlZ3JvdW5kV2Vi
UHJvY2Vzc1Rva2VuIG1fZm9yZWdyb3VuZFRva2VuOwogICAgIEJhY2tncm91bmRXZWJQcm9jZXNz
VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW47CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBi
b29sIG1faGFzU2VudE1lc3NhZ2VUb1VuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVyIHsgZmFsc2Ug
fTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4g
bV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lcjsKICNlbmRpZgpAQCAtNTI2LDYgKzUyNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VQ
cm94eUlEOwogICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUGFn
ZUlEOwogICAgICAgICBTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0
aW9uRGF0YTsKKyAgICAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IGFjdGl2
aXR5OwogICAgIH07CiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckluZm9ybWF0aW9uPiBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382760</attachid>
            <date>2019-11-04 12:29:28 -0800</date>
            <delta_ts>2019-11-04 13:36:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203633-20191104122927.patch</filename>
            <type>text/plain</type>
            <size>38717</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxOTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFiZTU3Mjk0OTBlZTdjNzUy
NzZkNzY1NjBhMGYwMjUxNGM0MTNlYzguLjhlYjg0NjA5ZjQ4YTdjN2VhNmEyZjg5NjZlZmFiYTA4
MTJiOWE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMTEtMDQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFNpbXBsaWZ5IHBy
b2Nlc3MgYXNzZXJ0aW9uIGhhbmRsaW5nIGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMzYzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgU2ltcGxpZnkgcHJvY2VzcyBhc3NlcnRpb24gaGFuZGxpbmcgZm9yIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgYW5kIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Nlcy4KKyAgICAgICAg
SW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZToKKyAgICAgICAg
MS4gUHV0IHRoZSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGluIGNoYXJnZSBvZiBrZWVwaW5nIHRoZSBu
ZXR3b3JrIHByb2Nlc3MgcnVubmFibGUgaW5zdGVhZAorICAgICAgICAgICBvZiByZWx5aW5nIG9u
IHRoZSBXZWJQcm9jZXNzUG9vbCB0byBkbyBpdC4KKyAgICAgICAgMi4gUHV0IHRoZSBXZWJQcm9j
ZXNzUHJveHkgaW4gY2hhcmdlIG9mIGtlZXBpbmcgdGhlIHdlYiBwcm9jZXNzIHJ1bm5hYmxlIGR1
ZSB0byBzZXJ2aWNlCisgICAgICAgICAgIHdvcmtlciBhY3Rpdml0eSwgaW5zdGVhZCBvZiByZWx5
aW5nIG9uIHRoZSBXZWJQcm9jZXNzUG9vbCB0byBkbyBpdC4KKyAgICAgICAgMy4gSW50cm9kdWNl
IGEgbmV3IFZhcmlhbnQgZGF0YSB0eXBlIHdoaWNoIGNhbiBzdG9yZSBhIGZvcmVncm91bmQgYWN0
aXZpdHksIGEgYmFja2dyb3VuZAorICAgICAgICAgICBhY3Rpdml0eSBvciBubyBhY3Rpdml0eS4g
VGhpcyBhdm9pZCBoYXZpbmcgMiBzZXBhcmF0ZSBhbmQgbXV0dWFsbHktZXhjbHVzaXZlIGRhdGEK
KyAgICAgICAgICAgbWVtYmVycyBmb3IgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBhY3Rpdml0
aWVzLgorICAgICAgICA0LiBUaGUgbmV3IGNvZGUgaXMgYSBiaXQgbW9yZSBjb3JyZWN0IGJlY2F1
c2UgaXQgbWFrZXMgc3VyZSB0aGUgdGhlIGFjdGl2aXR5IHdlJ3JlIGhvbGRpbmcKKyAgICAgICAg
ICAgaXMgdmFsaWQsIGluc3RlYWQgb2Ygc2ltcGx5IGNoZWNraW5nIHRoYXQgaXQgaGFzIGFuIGFj
dGl2aXR5LiBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlCisgICAgICAgICAgIHByb2Nlc3MgYXNzZXJ0
aW9uIHdhcyBwcmV2aW91c2x5IGludmFsaWRhdGVkLCB3ZSB3aWxsIG5vdyBwcm9wZXJseSB0YWtl
IGEgbmV3IGFjdGl2aXR5LAorICAgICAgICAgICB3aGljaCB3aWxsIHJlLXRha2UgYSBwcm9jZXNz
IGFzc2VydGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVkdWNlcyB0aGUgI2lmZGVm
aW5nIGZvciBJT1NfRkFNSUxZLCBzaW5jZSBQcm9jZXNzVGhyb3R0bGVyIGFuZAorICAgICAgICBQ
cm9jZXNzQXNzZXJ0aW9uIGV4aXN0IG9uIGFsbCBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90
dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzU3RhbmRhbG9uZVNlcnZpY2VX
b3JrZXJQcm9jZXNzIGNvbnN0KToKKwogMjAxOS0xMS0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gQ3RhcEF1dGhlbnRpY2F0b3I6OnRy
eURvd25ncmFkZSBzaG91bGQgZGlzdGluZ3Vpc2ggcmVxdWVzdERhdGEoKS5vcHRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDY1
MWI3MDE0YmVmNTk2NDI5YWMxNWJjNzgzZTkxZDg0N2ZiMDk2ZTEuLjY0ZTM2NWVkY2ZmYWNkYTVh
ZWFjNjcwOTAwMzZmOWZlMTBiZjRkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBEb3dubG9h
ZENsaWVudDo6dGFrZUFjdGl2aXR5VG9rZW4oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBwcmV2
aWV3IiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVCghbV9hY3Rpdml0eSk7Ci0gICAgICAgIG1fYWN0
aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcyk7CisgICAgICAgIG1fYWN0aXZpdHkgPSB3ZWJQ
YWdlLT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeXN0ZW0gcHJl
dmlldyBkb3dubG9hZCJfcykubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgfQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOTZmOTBkNzM1NDhmNzdmYTgzYjFlNjM2
MGQ5ODI1MDRmZTExM2I2NC4uM2U5ODRjMWVlZjc1Yjc1MjlhM2M0M2Q4MjM2NjJhYWM5MDViNzMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OmRpZENoYW5n
ZUlzTG9hZGluZygpCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFtX25ldHdvcmtBY3Rpdml0eSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYobV93ZWJWaWV3LT5fcGFnZS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOYXZpZ2F0aW9uU3Rh
dGUgaXMgdGFraW5nIGEgcHJvY2VzcyBuZXR3b3JrIGFzc2VydGlvbiBiZWNhdXNlIGEgcGFnZSBs
b2FkIHN0YXJ0ZWQiLCB0aGlzKTsKLSAgICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93
ZWJWaWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
UGFnZSBMb2FkIl9zKTsKKyAgICAgICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJWaWV3
LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBM
b2FkIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9u
ZXR3b3JrQWN0aXZpdHkpIHsKICAgICAgICAgLy8gVGhlIGFwcGxpY2F0aW9uIGlzIHZpc2libGUg
c28gd2UgZGVsYXkgcmVsZWFzaW5nIHRoZSBiYWNrZ3JvdW5kIGFjdGl2aXR5IGZvciAzIHNlY29u
ZHMgdG8gZ2l2ZSBpdCBhIGNoYW5jZSB0byBzdGFydCBhbm90aGVyIG5hdmlnYXRpb24KQEAgLTEz
NDcsNyArMTM0Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpkaWRTd2FwV2ViUHJvY2Vzc2Vz
KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIFRyYW5zZmVyIG91ciBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBmcm9tIHRoZSBvbGQgcHJvY2VzcyB0byB0aGUgbmV3IG9uZS4KICAgICBp
ZiAobV9uZXR3b3JrQWN0aXZpdHkpCi0gICAgICAgIG1fbmV0d29ya0FjdGl2aXR5ID0gbV93ZWJW
aWV3LT5fcGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFn
ZSBMb2FkIl9zKTsKKyAgICAgICAgbV9uZXR3b3JrQWN0aXZpdHkgPSBtX3dlYlZpZXctPl9wYWdl
LT5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJQYWdlIExvYWQiX3Mp
Lm1vdmVUb1VuaXF1ZVB0cigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKaW5kZXggNDk3
YWI3MjIwMGNkN2RkYWZiMTYzYzZjNmQ3ZWE2NzZiMjdjMDRjMS4uNGM3NTM5YmY1MTQ2ZGQ3YjJk
YTNjZTEzOTljOTk2MTYyM2MwZDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVy
OjpCYWNrZ3JvdW5kQWN0aXZpdHk+IFVJUmVtb3RlT2JqZWN0UmVnaXN0cnk6OmJhY2tncm91bmRB
Y3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9wYWdlLnByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkobmFtZSk7CisgICAgcmV0dXJuIG1fcGFn
ZS5wcm9jZXNzKCkudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KG5hbWUpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogfQogCiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpVSVJlbW90ZU9iamVjdFJl
Z2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3RSZWdpc3RyeSwgV2Vi
UGFnZVByb3h5JiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2su
aAppbmRleCBhOTM1Y2ZlZGI4NDU0MGFkOTVkOGRlY2EwODBiNGIwMTFlNjBmMWY5Li4zODMyMDJm
ZWQzYjYyMzYwNjMzMDEzZDE5YjYzMDk3ZWQzNjRmMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RydWN0IFR5cGVUYWcgeyB9OwogICAgIHR5cGVkZWYgY29uc3QgVHlwZVRhZyogVHlwZTsKIAot
ICAgIGV4cGxpY2l0IENhbGxiYWNrQmFzZShUeXBlIHR5cGUsIHN0ZDo6dW5pcXVlX3B0cjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCisgICAgZXhwbGlj
aXQgQ2FsbGJhY2tCYXNlKFR5cGUgdHlwZSwgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJp
YW50JiYgYWN0aXZpdHkpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9jYWxs
YmFja0lEKENhbGxiYWNrSUQ6OmdlbmVyYXRlSUQoKSkKICAgICAgICAgLCBtX2FjdGl2aXR5KFdU
Rk1vdmUoYWN0aXZpdHkpKQpAQCAtNzksNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIFR5cGUgbV90eXBlOwogICAgIENhbGxiYWNrSUQgbV9jYWxsYmFja0lEOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0aXZp
dHk7CisgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHk7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgpAQCAtODcsNyArODcsNyBAQCBjbGFzcyBHZW5l
cmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCYXNlIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEZ1bmN0aW9uPHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJhY2tGdW5jdGlvbjsKIAotICAgIHN0
YXRpYyBSZWY8R2VuZXJpY0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxi
YWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5
PiYmIGFjdGl2aXR5ID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4g
Y3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgUHJvY2Vzc1Rocm90dGxlcjo6QWN0
aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGFjdGl2aXR5KSkpOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIEdlbmVyaWNDYWxsYmFjayhDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJh
Y2ssIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+
JiYgYWN0aXZpdHkpCisgICAgR2VuZXJpY0NhbGxiYWNrKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxs
YmFjaywgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkpCiAgICAg
ICAgIDogQ2FsbGJhY2tCYXNlKHR5cGUoKSwgV1RGTW92ZShhY3Rpdml0eSkpCiAgICAgICAgICwg
bV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKICAgICB7CkBAIC0xODksNyArMTg5LDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIENhbGxi
YWNrSUQgcHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIHN0ZDo6dW5pcXVlX3B0
cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+JiYgYWN0aXZpdHkpCisgICAg
Q2FsbGJhY2tJRCBwdXQoRnVuY3Rpb248dm9pZChULi4uKT4mJiBmdW5jdGlvbiwgUHJvY2Vzc1Ro
cm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkpCiAgICAgewogICAgICAgICBhdXRv
IGNhbGxiYWNrID0gR2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBl
OjpjcmVhdGUoV1RGTW92ZShmdW5jdGlvbiksIFdURk1vdmUoYWN0aXZpdHkpKTsKICAgICAgICAg
cmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2MGUyY2Iy
NDcwMzZhMDI4ZDRjYTVjZTQ3MGE3YmQ0YmM3YzU3Y2RmLi5lMGUzOWZiN2NiMWRmYTI3MjFkOTc4
YmRiMDA2YzBkNDc0NmQxM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBp
c0hvbGRpbmdMb2NrZWRGaWxlcykKICAgICB9CiAgICAgaWYgKCFtX2FjdGl2aXR5Rm9ySG9sZGlu
Z0xvY2tlZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
VUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5l
dHdvcmsgcHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX2FjdGl2
aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5
KCJIb2xkaW5nIGxvY2tlZCBmaWxlcyJfcyk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5n
TG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9j
a2VkIGZpbGVzIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICB9CiB9CiAKQEAgLTExMTEsNyAr
MTExMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY0FsbENvb2tpZXMoKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIHN5bmNpbmcgY29va2llcyIsIHRoaXMpOwot
ICAgIG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eSgiU3luY2luZyBjb29raWVzIl9zKTsKKyAgICBtX3N5bmNBbGxDb29raWVzQWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIlN5bmNpbmcgY29va2llcyJfcykubW92
ZVRvVW5pcXVlUHRyKCk7CiB9CiAgICAgCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFN5
bmNBbGxDb29raWVzKCkKQEAgLTEyMDQsMTYgKzEyMDQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29u
dGVudAogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NE
aWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKSwgMCk7Ci19Ci0KLXZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3Jv
dW5kKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRy
YW5zaXRpb25Ub0JhY2tncm91bmQoKSwgMCk7Ci19Ci0KICNpZiBFTkFCTEUoU0FOREJPWF9FWFRF
TlNJT05TKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0Zv
ckJsb2JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMsIE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlczo6QXN5bmNSZXBs
eSYmIHJlcGx5KQogewpAQCAtMTMzOCw2ICsxMzI4LDI1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0
TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRlUHJvY2Vzc0Fz
c2VydGlvbigpCit7CisgICAgaWYgKHByb2Nlc3NQb29sKCkuaGFzRm9yZWdyb3VuZFdlYlByb2Nl
c3NlcygpKSB7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91
bmRBY3Rpdml0eShtX2FjdGl2aXR5RnJvbVdlYlByb2Nlc3NlcykpIHsKKyAgICAgICAgICAgIG1f
YWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzID0gdGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5
KCJOZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3Jv
dW5kKCksIDApOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHBy
b2Nlc3NQb29sKCkuaGFzQmFja2dyb3VuZFdlYlByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICgh
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShtX2FjdGl2aXR5RnJv
bVdlYlByb2Nlc3NlcykpIHsKKyAgICAgICAgICAgIG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2Vz
ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JraW5nIGZvciBmb3JlZ3Jv
dW5kIGJhY2tncm91bmQgdmlldyhzKSJfcyk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tncm91bmQoKSwgMCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2FjdGl2aXR5RnJvbVdlYlBy
b2Nlc3NlcyA9IG51bGxwdHI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
TUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0NzI2MmViZmZiNDY3NGViNWM3MDAzNjg5M2Y3
YjA4MDNiNGFjMjVlLi5mOTQyOWY4YjA5YzljNjZhMThkMDkzMGM1YWE0MjNjNWEzODcyNDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTYwLDggKzE2MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAgICAgCi0gICAgdm9pZCBzZW5k
UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKTsKLSAgICB2b2lkIHNlbmRQcm9jZXNz
RGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpOwogICAgIHZvaWQgc3ludGhlc2l6ZUFwcElzQmFj
a2dyb3VuZChib29sIGJhY2tncm91bmQpOwogCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyhib29sKTsKQEAgLTE3Miw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJv
Y2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNz
SW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYm
KTsKIAogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0
bGVyOyB9CisgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CisKICAgICBXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMjc5LDYgKzI3OSw3IEBAIHByaXZhdGU6CiAg
ICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xv
Y2tlZEZpbGVzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHk+IG1fc3luY0FsbENvb2tpZXNBY3Rpdml0eTsKKyAgICBQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eVZhcmlhbnQgbV9hY3Rpdml0eUZyb21XZWJQcm9jZXNzZXM7CiAgICAgCiAg
ICAgdW5zaWduZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMmRkMzliZmIyZDA2ZDVm
NzkxMWM4MjYyMDgxYmU0NmU1YjZiZmUyNy4uODJkM2YxNzA3YzQ3MTk5Y2QyMjViNGRiYzJmMzBk
MDYwNmZlZjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAKQEAgLTIwNSw0ICsyMDUsMTggQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjp1aUFzc2Vy
dGlvbldpbGxFeHBpcmVJbW1pbmVudGx5KCkKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0
VGltZXIuc3RvcCgpOwogfQogCitib29sIFByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3Jv
dW5kQWN0aXZpdHkoY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiBhY3Rp
dml0eSkKK3sKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VW5pcXVlUmVmPFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4+KGFjdGl2aXR5KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBXVEY6OmdldDxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkpLT5pc1ZhbGlkKCk7Cit9CisKK2Jvb2wg
UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBQcm9jZXNz
VGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQmIGFjdGl2aXR5KQoreworICAgIGlmICghV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFj
dGl2aXR5Pj4oYWN0aXZpdHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdU
Rjo6Z2V0PFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+Pihh
Y3Rpdml0eSktPmlzVmFsaWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggNWVjZDYyYWI0ZGNlNWQ3
ZTQ5ODc0OWY2MDk5YzY1OTYzZTI4MzM1Ny4uZTg3ZGI3NDU2MGU2NDg4NjA0NzI4NWU2MzhhYjU3
ZTBhZDI1YjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIu
aApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NiwxMCArODgsMTQgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB1c2luZyBGb3JlZ3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxB
Y3Rpdml0eVR5cGU6OkZvcmVncm91bmQ+OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxGb3JlZ3JvdW5k
QWN0aXZpdHk+IGZvcmVncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSk7CisgICAgVW5p
cXVlUmVmPEZvcmVncm91bmRBY3Rpdml0eT4gZm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJh
bCBuYW1lKTsKIAogICAgIHVzaW5nIEJhY2tncm91bmRBY3Rpdml0eSA9IEFjdGl2aXR5PEFjdGl2
aXR5VHlwZTo6QmFja2dyb3VuZD47Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tncm91bmRBY3Rp
dml0eT4gYmFja2dyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKTsKKyAgICBVbmlxdWVS
ZWY8QmFja2dyb3VuZEFjdGl2aXR5PiBiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5h
bWUpOworCisgICAgdXNpbmcgQWN0aXZpdHlWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgVW5pcXVlUmVmPEJhY2tncm91bmRBY3Rpdml0eT4sIFVuaXF1ZVJlZjxGb3JlZ3JvdW5kQWN0
aXZpdHk+PjsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KGNvbnN0
IEFjdGl2aXR5VmFyaWFudCYpOworICAgIHN0YXRpYyBib29sIGlzVmFsaWRGb3JlZ3JvdW5kQWN0
aXZpdHkoY29uc3QgQWN0aXZpdHlWYXJpYW50Jik7CiAgICAgCiAgICAgdm9pZCBkaWRDb25uZWN0
VG9Qcm9jZXNzKFByb2Nlc3NJRCk7CiAgICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkgfHwgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5zaXplKCk7IH0KQEAgLTEyNCwxNCArMTMwLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CiB9OwogCi1pbmxpbmUgYXV0byBQ
cm9jZXNzVGhyb3R0bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+
IHN0ZDo6dW5pcXVlX3B0cjxGb3JlZ3JvdW5kQWN0aXZpdHk+CitpbmxpbmUgYXV0byBQcm9jZXNz
VGhyb3R0bGVyOjpmb3JlZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5hbWUpIC0+IFVuaXF1
ZVJlZjxGb3JlZ3JvdW5kQWN0aXZpdHk+CiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9yZWdy
b3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8Rm9y
ZWdyb3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKLWlubGluZSBhdXRvIFByb2Nlc3NU
aHJvdHRsZXI6OmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSkgLT4gc3RkOjp1
bmlxdWVfcHRyPEJhY2tncm91bmRBY3Rpdml0eT4KK2lubGluZSBhdXRvIFByb2Nlc3NUaHJvdHRs
ZXI6OmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSkgLT4gVW5pcXVlUmVmPEJh
Y2tncm91bmRBY3Rpdml0eT4KIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNrZ3JvdW5kQWN0
aXZpdHk+KCp0aGlzLCBuYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxCYWNrZ3JvdW5k
QWN0aXZpdHk+KCp0aGlzLCBuYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCBiMTRj
ZGMzNmUwMzY3ODNlODM3ODYxNDgyZDg1MGIxZDMwYThjY2EwLi43ZGJjZWY5ZDFkNTUzNWE4MzU0
ZDdiYWUwYzYwMTFhMGE1MWI5MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2FjY2Vzc2liaWxpdHlUb2tlbjsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVn
cm91bmRBY3Rpdml0eT4gbV9wcm92aXNpb25hbExvYWRBY3Rpdml0eTsKKyAgICBVbmlxdWVSZWY8
UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5PiBtX3Byb3Zpc2lvbmFsTG9hZEFj
dGl2aXR5OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVu
ZGVkUGFnZVByb3h5LmNwcAppbmRleCBlYWJlZjlhNzhkMDE0NzZjODRiZTM0ZTdhMTFlNDQxNmIx
MjUwYTAxLi4zMWQ1MmQ4MzQwZjM4YTBmY2YwYjZkNmNkMjU3NzQ0YjcwOGEyMTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTEwMiw3
ICsxMDIsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdl
UHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgICwgbV9zaG91bGREZWxheUNs
b3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoc2hvdWxkRGVsYXlD
bG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKQogICAgICwgbV9z
dXNwZW5zaW9uVGltZW91dFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlN1c3BlbmRlZFBh
Z2VQcm94eTo6c3VzcGVuc2lvblRpbWVkT3V0KQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgLCBtX3N1c3BlbnNpb25BY3Rpdml0eShtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiUGFnZSBzdXNwZW5zaW9uIGZvciBiYWNrL2ZvcndhcmQgY2FjaGUiX3MpKQor
ICAgICwgbV9zdXNwZW5zaW9uQWN0aXZpdHkobV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIlBhZ2Ugc3VzcGVuc2lvbiBmb3IgYmFjay9mb3J3YXJkIGNhY2hlIl9zKS5t
b3ZlVG9VbmlxdWVQdHIoKSkKICNlbmRpZgogewogICAgIGFsbFN1c3BlbmRlZFBhZ2VzKCkuYWRk
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzZi
NjY3NDZiMTgzMWVmYmExOTE3OGMxN2RkZTBhYjdkZTdmZGFjOS4uOGVjOGZhZTc0ZTNmNzkyYzBj
ZjY3MDg4ZGJlNjIwYzMxNWNkODBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0xOTM1LDcgKzE5MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRl
VGhyb3R0bGVTdGF0ZSgpCiAgICAgaWYgKGlzVmlld1Zpc2libGUoKSkgewogICAgICAgICBpZiAo
IW1faXNWaXNpYmxlQWN0aXZpdHkgfHwgIW1faXNWaXNpYmxlQWN0aXZpdHktPmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwg
InVwZGF0ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIHRoZSB2aWV3IGlzIHZpc2libGUiKTsKLSAgICAgICAgICAgIG1faXNW
aXNpYmxlQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eSgiVmlldyBpcyB2aXNpYmxlIl9zKTsKKyAgICAgICAgICAgIG1faXNWaXNpYmxlQWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyB2aXNp
YmxlIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9p
c1Zpc2libGVBY3Rpdml0eSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVhc2lu
ZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIHZpZXcgaXMgbm8gbG9uZ2VyIHZp
c2libGUiKTsKQEAgLTE5NDYsNyArMTk0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVU
aHJvdHRsZVN0YXRlKCkKICAgICBpZiAoaXNBdWRpYmxlKSB7CiAgICAgICAgIGlmICghbV9pc0F1
ZGlibGVBY3Rpdml0eSB8fCAhbV9pc0F1ZGlibGVBY3Rpdml0eS0+aXNWYWxpZCgpKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRl
VGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9u
IGJlY2F1c2Ugd2UgYXJlIHBsYXlpbmcgYXVkaW8iKTsKLSAgICAgICAgICAgIG1faXNBdWRpYmxl
QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmll
dyBpcyBwbGF5aW5nIGF1ZGlvIl9zKTsKKyAgICAgICAgICAgIG1faXNBdWRpYmxlQWN0aXZpdHkg
PSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBpcyBwbGF5
aW5nIGF1ZGlvIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAobV9pc0F1ZGlibGVBY3Rpdml0eSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJl
bGVhc2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ugd2UgYXJlIG5vIGxvbmdlciBw
bGF5aW5nIGF1ZGlvIik7CkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiAgICAgaWYgKGlzQ2FwdHVyaW5nTWVkaWEpIHsKICAgICAg
ICAgaWYgKCFtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgfHwgIW1faXNDYXB0dXJpbmdBY3Rpdml0eS0+
aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
dXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHRha2luZyBhIGZv
cmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUiKTsKLSAg
ICAgICAgICAgIG1faXNDYXB0dXJpbmdBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5KCJWaWV3IGlzIGNhcHR1cmluZyBtZWRpYSJfcyk7CisgICAgICAg
ICAgICBtX2lzQ2FwdHVyaW5nQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eSgiVmlldyBpcyBjYXB0dXJpbmcgbWVkaWEiX3MpLm1vdmVUb1VuaXF1ZVB0
cigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2lzQ2FwdHVyaW5nQWN0aXZpdHkpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0
ZVRocm90dGxlU3RhdGU6IFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBmb3JlZ3JvdW5kIGFzc2Vy
dGlvbiBiZWNhdXNlIG1lZGlhIGNhcHR1cmUgaXMgbm8gbG9uZ2VyIGFjdGl2ZSIpOwpAQCAtMTk2
Nyw3ICsxOTY3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVRocm90dGxlU3RhdGUoKQog
ICAgIGlmIChtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSkgewogICAgICAgICBpZiAo
IW1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHkgfHwgIW1fYWx3YXlzUnVu
c0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHktPmlzVmFsaWQoKSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVRocm90dGxl
U3RhdGU6IFVJUHJvY2VzcyBpcyB0YWtpbmcgYSBmb3JlZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5IGlzIHRydWUiKTsKLSAgICAgICAgICAg
IG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiVmlldyBhbHdheXMgcnVucyBhdCBmb3JlZ3Jv
dW5kIHByaW9yaXR5Il9zKTsKKyAgICAgICAgICAgIG1fYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFBy
aW9yaXR5QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eSgiVmlldyBhbHdheXMgcnVucyBhdCBmb3JlZ3JvdW5kIHByaW9yaXR5Il9zKS5tb3ZlVG9Vbmlx
dWVQdHIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHlBY3Rpdml0eSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlVGhyb3R0bGVTdGF0ZTogVUlQcm9jZXNzIGlzIHJlbGVh
c2luZyBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgbV9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgaXMgbm8gbG9uZ2VyIHRydWUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1NjM5ZWJiMWMzNDgwZWIxYzhkYWFlYjY1MjFhNWE5
MjUyZmZjOTZmLi44MWY3N2M4MGI4NTJlODFjNzA4Mjc1NWE5ZmFiZDc2NTQ1MjhjYjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzQsMTAgKzIz
NCw4IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1faGlkZGVuUGFnZVRocm90dGxpbmdB
dXRvSW5jcmVhc2VzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IG1faGlkZGVuUGFn
ZVRocm90dGxpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsgfSkKICAgICAsIG1faGlkZGVuUGFn
ZVRocm90dGxpbmdUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6
dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VMaW1pdCkKICAgICAsIG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fZm9yZWdyb3VuZFdlYlByb2Nlc3NDb3VudGVy
KFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkK
ICAgICAsIG1fYmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZl
bnQpIHsgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsgfSkKLSNlbmRpZgogICAgICwgbV9iYWNr
Rm9yd2FyZENhY2hlKG1ha2VVbmlxdWVSZWY8V2ViQmFja0ZvcndhcmRDYWNoZT4oKnRoaXMpKQog
ICAgICwgbV93ZWJQcm9jZXNzQ2FjaGUobWFrZVVuaXF1ZVJlZjxXZWJQcm9jZXNzQ2FjaGU+KCp0
aGlzKSkKIHsKQEAgLTYzMiwxMCArNjMwLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICBuZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFFPUyhu
ZXR3b3JrUHJvY2Vzc0xhdGVuY3lRT1MoKSwgbmV0d29ya1Byb2Nlc3NUaHJvdWdocHV0UU9TKCkp
LCAwKTsKICNlbmRpZgogCi0gICAgaWYgKG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCkgewotICAg
ICAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2ggPSBmYWxzZTsKLSAgICAgICAgcmVpbnN0YXRl
TmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZSgqbmV0d29ya1Byb2Nlc3MpOwotICAgIH0KKyAg
ICBuZXR3b3JrUHJvY2Vzcy0+dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogCiAgICAgaWYgKHdp
dGhXZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5hZGRTZXNzaW9u
KG1ha2VSZWYoKndpdGhXZWJzaXRlRGF0YVN0b3JlKSk7CkBAIC02NTYsNyArNjUxLDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJv
eHkmIG5ldHdvcmtQcm9jZXNzUHIKIHsKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CiAg
ICAgQVNTRVJUKCZuZXR3b3JrUHJvY2Vzc1Byb3h5ID09IG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCkp
OwotICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8m
IHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50
LT5wcm9jZXNzRGlkQ2xvc2UoJm5ldHdvcmtQcm9jZXNzUHJveHkpOwpAQCAtNzM2LDcgKzczMCw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvCiAKICAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vz
c2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzICVwLCBwcm9jZXNzIGlkZW50
aWZpZXIgJWQiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgICAgICB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpOwogICAgICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJv
eHksIHdlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92
ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CkBAIC0xMTMwLDcgKzExMjMsNiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuZmluZChS
ZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFp
bigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfSk7CiAgICAgICAg
IGlmIChpdGVyYXRvciAhPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuZW5kKCkgJiYgaXRlcmF0
b3ItPnZhbHVlID09IHByb2Nlc3MpCiAgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsK
ICAgICB9CiAjZW5kaWYKIApAQCAtMTcwOSw3ICsxNzAxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIAogICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnRlcm1pbmF0ZSgpOwogICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwotICAgIG1fZGlk
TmV0d29ya1Byb2Nlc3NDcmFzaCA9IHRydWU7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
bmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQpAQCAtMjA0
NSw3MiArMjAzNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BV
VGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgYXV0byB1cGRhdGVTZXJ2aWNl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbiA9IFsmXSB7Ci0gICAgICAgIGlmICghbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci52
YWx1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlciB0aGFuIHRo
aXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdpbi4KLSAgICAgICAgICAgIGZvciAoYXV0
byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVz
KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gc2VydmljZVdv
cmtlclByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFt
X2ZvcmVncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhy
ZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2
aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKSwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0
eSgiU2VydmljZSBXb3JrZXIgZm9yIHZpc2libGUgdmlldyhzKSJfcykpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkgJiYgbV9iYWNrZ3JvdW5kV2Vi
UHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGNhbiBk
byBiZXR0ZXIgdGhhbiB0aGlzIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzIHBlciBvcmlnaW4uCi0gICAg
ICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZWdpc3RyYWJsZURv
bWFpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgICAg
ICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICAgICAgICAgICAgICBt
X2JhY2tncm91bmRBY3Rpdml0aWVzRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHZpZXcocyki
X3MpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXNG
b3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY2xlYXIoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKLSAgICB9OwotICAgIHVwZGF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKCk7Ci0jZW5kaWYKLQotICAgIGF1dG8gdXBkYXRlTmV0d29ya1By
b2Nlc3NBc3NlcnRpb24gPSBbJl0gewotICAgICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IGVu
c3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0KLSAgICAgICAgaWYgKG1fZm9yZWdyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9mb3JlZ3JvdW5kQWN0aXZp
dHlGb3JOZXR3b3JrUHJvY2VzcykgewotICAgICAgICAgICAgICAgIG1fZm9yZWdyb3VuZEFjdGl2
aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Ci0gICAg
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3Jl
Z3JvdW5kKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2JhY2tncm91bmRBY3Rpdml0
eUZvck5ldHdvcmtQcm9jZXNzID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIudmFsdWUoKSkg
ewotICAgICAgICAgICAgaWYgKCFtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNz
KSB7Ci0gICAgICAgICAgICAgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2Vz
cyA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29y
a2luZyBmb3IgZm9yZWdyb3VuZCBiYWNrZ3JvdW5kIHZpZXcocykiX3MpOwotICAgICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3
b3JrUHJvY2VzcyA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9IG51bGxwdHI7Ci0g
ICAgICAgIG1fYmFja2dyb3VuZEFjdGl2aXR5Rm9yTmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwot
ICAgIH07Ci0gICAgdXBkYXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb24oKTsKLSNlbmRpZgotfQot
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0
YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ld05ldHdvcmtQcm9jZXNzUHJveHkpCi17Ci0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBUaGUgbmV0d29yayBwcm9jZXNzIGNyYXNoZWQ7
IHRha2UgbmV3IGFjdGl2aXRpZXMgZm9yIHRoZSBuZXcgbmV0d29yayBwcm9jZXNzLgotICAgIGlm
IChtX2JhY2tncm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzKQotICAgICAgICBtX2JhY2tn
cm91bmRBY3Rpdml0eUZvck5ldHdvcmtQcm9jZXNzID0gbmV3TmV0d29ya1Byb2Nlc3NQcm94eS50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtpbmcgZm9yIGJhY2tncm91bmQg
dmlldyhzKSJfcyk7Ci0gICAgZWxzZSBpZiAobV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3Jr
UHJvY2VzcykKLSAgICAgICAgbV9mb3JlZ3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzcyA9
IG5ld05ldHdvcmtQcm9jZXNzUHJveHkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJO
ZXR3b3JraW5nIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obmV3TmV0d29ya1Byb2Nlc3NQcm94eSk7CisgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29y
a2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkKKyAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3MtPnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
KCk7CiAjZW5kaWYKKyAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpLnVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb24oKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNlV29ya2VyUGFnZUlE
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZmUxOWRmZmMyOWVmY2E4ZDZhNDIyNjJjN2ZjNGM5
ZDBhMjAyNjM1Ny4uOGY4MDBmZmMzNmMyMTcyNTBmZTFkNTJiYjAwNDI5NjJiMDRkZmI4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00NzIsMTAgKzQ3Miwx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHVpbnQ2NF90IHJlZ2lzdGVyUHJvY2Vzc1Bvb2xDcmVh
dGlvbkxpc3RlbmVyKEZ1bmN0aW9uPHZvaWQoV2ViUHJvY2Vzc1Bvb2wmKT4mJik7CiAgICAgc3Rh
dGljIHZvaWQgdW5yZWdpc3RlclByb2Nlc3NQb29sQ3JlYXRpb25MaXN0ZW5lcih1aW50NjRfdCBp
ZGVudGlmaWVyKTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9yZWdyb3VuZFdl
YlByb2Nlc3NUb2tlbiBmb3JlZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuKCkgY29uc3QgeyByZXR1cm4g
Rm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbihtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlci5j
b3VudCgpKTsgfQogICAgIEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW4gYmFja2dyb3VuZFdlYlBy
b2Nlc3NUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW4obV9i
YWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXIuY291bnQoKSk7IH0KLSNlbmRpZgorICAgIGJvb2wg
aGFzRm9yZWdyb3VuZFdlYlByb2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZFdl
YlByb2Nlc3NDb3VudGVyLnZhbHVlKCk7IH0KKyAgICBib29sIGhhc0JhY2tncm91bmRXZWJQcm9j
ZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1
ZSgpOyB9CiAKICAgICB2b2lkIHByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIGNv
bnN0IEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgc291cmNlUHJvY2Vz
cywgY29uc3QgVVJMJiBzb3VyY2VVUkwsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZjxXZWJzaXRlRGF0YVN0b3JlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFN1c3BlbmRlZFBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpPiYmKTsKIApA
QCAtNTU0LDcgKzU1NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU3RvcHBlZFVzaW5n
R2FtZXBhZHMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVpbnN0YXRl
TmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CiAgICAg
dm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIuCkBAIC02OTYsNyArNjk1LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNz
VGVybWluYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwogCi0gICAgYm9vbCBtX2RpZE5ldHdvcmtQcm9j
ZXNzQ3Jhc2ggeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUHJvY2Vzc1By
b3h5PiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERp
Y3Rpb25hcnlDYWxsYmFjaz4+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKQEAgLTc1OSwxNiArNzU3
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6
VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9u
VGltZXI7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZvcmVncm91bmRXZWJQcm9j
ZXNzQ291bnRlciBtX2ZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjsKICAgICBCYWNrZ3JvdW5k
V2ViUHJvY2Vzc0NvdW50ZXIgbV9iYWNrZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXI7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4gbV9mb3Jl
Z3JvdW5kQWN0aXZpdHlGb3JOZXR3b3JrUHJvY2VzczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2JhY2tncm91bmRBY3Rpdml0eUZv
ck5ldHdvcmtQcm9jZXNzOwotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFw
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90
dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5Pj4gbV9mb3JlZ3JvdW5kQWN0aXZpdGllc0ZvclNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgc3RkOjp1bmlxdWVfcHRyPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4+
IG1fYmFja2dyb3VuZEFjdGl2aXRpZXNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotI2VuZGlm
Ci0jZW5kaWYKIAogICAgIFVuaXF1ZVJlZjxXZWJCYWNrRm9yd2FyZENhY2hlPiBtX2JhY2tGb3J3
YXJkQ2FjaGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDcxMzU5ZWYwNzY0MTQyOTM3ZDI0MDNjZDc0MjYzNzY0OGMzZGYwYzkuLmE5NmY5NTgz
MjhlOTdiNGNhMmJhZTIxNmZhZTI3MjMzMjU0ZDU4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIzMiwxMCArMTIzMiw5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCiAKIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSBzdGF0ZSkKIHsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBXZWJQcm9jZXNzUHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKCV1KSIsIHRoaXMsIHN0
YXRlKTsKIAotICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQo
KSkgeworICAgIGlmIChpc1N0YW5kYWxvbmVTZXJ2aWNlV29ya2VyUHJvY2VzcygpKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6
OmRpZFNldEFzc2VydGlvblN0YXRlKCkgcmVsZWFzZSBhbGwgYXNzZXJ0aW9ucyBmb3IgbmV0d29y
ayBwcm9jZXNzIGJlY2F1c2UgdGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mgd2l0aG91
dCBwYWdlIiwgdGhpcyk7CiAgICAgICAgIG1fZm9yZWdyb3VuZFRva2VuID0gbnVsbHB0cjsKICAg
ICAgICAgbV9iYWNrZ3JvdW5kVG9rZW4gPSBudWxscHRyOwpAQCAtMTI0OSw4ICsxMjQ4LDEwIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0
ZSBzdGF0ZSkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdl
YlByb2Nlc3NQcm94eTo6ZGlkU2V0QXNzZXJ0aW9uU3RhdGUoU3VzcGVuZGVkKSByZWxlYXNlIGFs
bCBhc3NlcnRpb25zIGZvciBuZXR3b3JrIHByb2Nlc3MiLCB0aGlzKTsKICAgICAgICAgbV9mb3Jl
Z3JvdW5kVG9rZW4gPSBudWxscHRyOwogICAgICAgICBtX2JhY2tncm91bmRUb2tlbiA9IG51bGxw
dHI7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgcGFnZS0+cHJvY2Vzc1dpbGxCZWNvbWVT
dXNwZW5kZWQoKTsKKyNlbmRpZgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXNzZXJ0aW9u
U3RhdGU6OkJhY2tncm91bmQ6CkBAIC0xMjYzLDggKzEyNjQsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlIHN0YXRlKQogICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRTZXRBc3NlcnRpb25TdGF0ZShGb3JlZ3JvdW5kKSB0YWtpbmcgZm9yZWdyb3VuZCBhc3NlcnRp
b24gZm9yIG5ldHdvcmsgcHJvY2VzcyIsIHRoaXMpOwogICAgICAgICBtX2ZvcmVncm91bmRUb2tl
biA9IHByb2Nlc3NQb29sKCkuZm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbigpOwogICAgICAgICBt
X2JhY2tncm91bmRUb2tlbiA9IG51bGxwdHI7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQogICAgICAgICAgICAg
cGFnZS0+cHJvY2Vzc1dpbGxCZWNvbWVGb3JlZ3JvdW5kKCk7CisjZW5kaWYKICAgICAgICAgYnJl
YWs7CiAgICAgCiAgICAgY2FzZSBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZzoK
QEAgLTEyNzIsOSArMTI3NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTZXRBc3NlcnRp
b25TdGF0ZShBc3NlcnRpb25TdGF0ZSBzdGF0ZSkKICAgICB9CiAKICAgICBBU1NFUlQoIW1fYmFj
a2dyb3VuZFRva2VuIHx8ICFtX2ZvcmVncm91bmRUb2tlbik7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7Ci0jZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2VN
ZWRpYVN0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYpCkBAIC0xMjk5LDcgKzEyOTksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykKICAgICB9CiAgICAgaWYgKCFtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tl
ZEZpbGVzKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9j
ZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwotICAgICAgICBtX2FjdGl2aXR5
Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJI
b2xkaW5nIGxvY2tlZCBmaWxlcyJfcyk7CisgICAgICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9j
a2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkhvbGRpbmcgbG9ja2Vk
IGZpbGVzIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICB9CiB9CiAKQEAgLTE1NTcsNyArMTU1
NywyOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdAogICAgIEFTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KLSNlbmRp
ZgorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtlclByb2Nlc3NBc3Nl
cnRpb24oKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCkgUElEOiAl
ZCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbik7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlIGNvdWxkIGRvIGJldHRlciBpZiB3ZSBr
bmV3IHdoaWNoIFdlYkNvbnRlbnQgcHJvY2Vzc2VzIG5lZWRlZCB0aGlzIHNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MuCisgICAgaWYgKHByb2Nlc3NQb29sKCkuaGFzRm9yZWdyb3VuZFdlYlByb2Nlc3Nl
cygpKSB7CisgICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRB
Y3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQorICAgICAgICAg
ICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9y
ZWdyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9z
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocHJvY2Vzc1Bvb2woKS5oYXNCYWNr
Z3JvdW5kV2ViUHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjpp
c1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCisgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkg
PSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNr
Z3JvdW5kIHZpZXcocykiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7Cit9CisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJzKCkKIHsKQEAgLTE2MDUsNyArMTYyNiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJCiAgICAgICAgICAgICBjb250ZW50UnVsZUxpc3RzRnJvbUlkZW50aWZpZXIodXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciksCiAjZW5kaWYKICAgICAgICAgfSwKKyAgICAgICAgbnVs
bHB0ciwKICAgICB9OworICAgIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCA0OTQxMzA1MzIwMTRhZTYwM2Q3ZjRhZDU5ZWVlZmQwOTEwMzE3
ZWE1Li5iMTUzNmRmMjIzNjc1NDg5MjYyYmFkODlmZDA2ODY0ZmZiNjZhYzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtOTEsMTQgKzkxLDEyIEBAIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogZW51
bSBGb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXJUeXBlIHsgfTsKIHR5cGVkZWYgUmVmQ291bnRl
cjxGb3JlZ3JvdW5kV2ViUHJvY2Vzc0NvdW50ZXJUeXBlPiBGb3JlZ3JvdW5kV2ViUHJvY2Vzc0Nv
dW50ZXI7CiB0eXBlZGVmIEZvcmVncm91bmRXZWJQcm9jZXNzQ291bnRlcjo6VG9rZW4gRm9yZWdy
b3VuZFdlYlByb2Nlc3NUb2tlbjsKIGVudW0gQmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyVHlw
ZSB7IH07CiB0eXBlZGVmIFJlZkNvdW50ZXI8QmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyVHlw
ZT4gQmFja2dyb3VuZFdlYlByb2Nlc3NDb3VudGVyOwogdHlwZWRlZiBCYWNrZ3JvdW5kV2ViUHJv
Y2Vzc0NvdW50ZXI6OlRva2VuIEJhY2tncm91bmRXZWJQcm9jZXNzVG9rZW47Ci0jZW5kaWYKIAog
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVi
bGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJv
eHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgpAQCAtMTYzLDYg
KzE2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7IC8vIFRoaXMgaXMg
d2hhdCBpcyByZXBvcnRlZCB0byBBY3Rpdml0eU1vbml0b3IuCiAKICAgICBib29sIGlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsgfQorICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQoKTsgfQog
CiAgICAgdm9pZCBkaWRDcmVhdGVXZWJQYWdlSW5Qcm9jZXNzKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKIApAQCAtMzM5LDYgKzMzOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcnZpY2VX
b3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgYm9v
bCBoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
b3h5SUQpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7
IH0KKyAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKCk7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpAQCAtNDgzLDkgKzQ4Myw5IEBAIHByaXZhdGU6CiAgICAgaW50IG1f
bnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CiAgICAgUHJvY2Vzc1Ro
cm90dGxlciBtX3Rocm90dGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOwot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRm9yZWdyb3VuZFdlYlByb2Nlc3NUb2tlbiBt
X2ZvcmVncm91bmRUb2tlbjsKICAgICBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuIG1fYmFja2dy
b3VuZFRva2VuOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2hhc1NlbnRN
ZXNzYWdlVG9VbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlciB7IGZhbHNlIH07CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+IG1fdW5leHBlY3RlZEFj
dGl2aXR5VGltZXI7CiAjZW5kaWYKQEAgLTUyNiw2ICs1MjYsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRDsKICAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgc2VydmljZVdvcmtlclBhZ2VJRDsKICAgICAgICAg
U2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGE7CisgICAg
ICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBhY3Rpdml0eTsKICAgICB9Owog
ICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbj4gbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>