<?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>223175</bug_id>
          
          <creation_ts>2021-03-15 01:17:37 -0700</creation_ts>
          <short_desc>[css-scroll-snap] Properly handle overflowing snap areas</short_desc>
          <delta_ts>2021-03-17 03:15:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>223021</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739325</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-15 01:17:37 -0700</bug_when>
    <thetext>When a snap area overflows the snapper, the specification details some specific handling. From https://www.w3.org/TR/css-scroll-snap-1/#snap-overflow:
  
  If the snap area is larger than the snapport in a particular axis, then any scroll position
  in which the snap area covers the snapport, and the distance between the geometrically
  previous and subsequent snap positions in that axis is larger than size of the snapport in
  that axis, is a valid snap position in that axis. The UA may use the specified alignment as a
  more precise target for certain scroll operations (e.g. explicit paging).

This implies that we keep snap area dimension around when we didn&apos;t before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739373</commentid>
    <comment_count>1</comment_count>
      <attachid>423157</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-15 04:53:12 -0700</bug_when>
    <thetext>Created attachment 423157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739403</commentid>
    <comment_count>2</comment_count>
      <attachid>423166</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-15 06:04:41 -0700</bug_when>
    <thetext>Created attachment 423166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739481</commentid>
    <comment_count>3</comment_count>
      <attachid>423189</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-15 09:41:56 -0700</bug_when>
    <thetext>Created attachment 423189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739881</commentid>
    <comment_count>4</comment_count>
      <attachid>423311</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-16 02:41:50 -0700</bug_when>
    <thetext>Created attachment 423311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739910</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-16 06:00:08 -0700</bug_when>
    <thetext>Here&apos;s some background on these changes as they are a bit larger and more complicated than normal:

Before this change when snap points were calculated after a layout and a ScrollSnapOffsetsInfo was created with both the offsets of the snap points and a set of ranges of offsets where no snapping occurred. These ranges were useful because it made it simple to determine if a particular offset was subject to snapping. With the implementation of this part of the specification, the range-based approach is not as suitable because snap areas (which may overlap) now affect whether or not a scroll will snap to a snap point.

Instead, this change take a lazier approach. During scrolling, we walk through each potential snap offset and look at the associated snap area. This information to determine if the destination scroll offset falls onto a snap area that overflows the snapport or if it is subject to proximity snapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740638</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-17 03:15:46 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 223021 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423157</attachid>
            <date>2021-03-15 04:53:12 -0700</date>
            <delta_ts>2021-03-15 06:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223175-20210315125310.patch</filename>
            <type>text/plain</type>
            <size>163958</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDhjNWZmNDM5ZDE3NGI4NzkyZWZhZWVhNDEwZTVkMzNkZjUxYzM1Li42NTliZjMyZmVmZjNhYjBm
Njc5NDZjYzNhYWRhZTU2ZGU5Yzk4MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAyMS0wMy0xMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgQ2FjaGUgY3Jvc3Mtb3JpZ2luIG1ldGhvZHMgLyBhY2Nlc3NvcnMg
b2YgV2luZG93IGFuZCBMb2NhdGlvbiBwZXIgbGV4aWNhbCBnbG9iYWwgb2JqZWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAxLiBBZGQgV2Vha0dDTWFwOjpl
bnN1cmUoKSB0byBhdm9pZCBkb3VibGUgaGFzaGluZyBhbmQgY2xlYW4gdXAgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5RGVzY3JpcHRvcigpLgorICAgICAgICAyLiBBc3NlcnQgZWFybHkgdGhhdCBK
U0N1c3RvbXtHZXR0ZXIsU2V0dGVyfUZ1bmN0aW9uIGlzIGNyZWF0ZWQgd2l0aCBub24tbnVsbCBm
dW5jdGlvbiBwb2ludGVyLgorICAgICAgICAzLiBSZW5hbWUgZ2V0Q3VzdG9te0dldHRlcixTZXR0
ZXJ9RnVuY3Rpb24oKSB0byBhbGlnbiB3aXRoIG5ld2x5LWFkZGVkIEpTRE9NR2xvYmFsT2JqZWN0
IG1ldGhvZHMuCisKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlND
OjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
dXN0b21TZXR0ZXJGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUN1
c3RvbUdldHRlckZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQ3VzdG9tU2V0dGVyRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpnZXRDdXN0b21TZXR0ZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6bm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9u
R2V0dGVySW1wbCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9XZWFrR0NNYXAuaDoKKwog
MjAyMS0wMy0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gQnVtcCBBUEkgdmVyc2lvbiB3aGVuIGJ1aWxkaW5nIHdpdGggbGlic291
cDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMjc1YmU3ZDZmY2M0ODhlNWE1N2YwOGI4NGRlNzg4MTRjMGI0MmM1Zi4uODljNTA1
MjkyNTg5OWFjNDdkN2ZkZWZkMGY4MjU0MDBjYjY0OTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0wMy0xMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZG9wdCBERE1hY0FjdGlvbiBpbnN0ZWFkIG9mIEREQWN0aW9uIG9uIG1hY09TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNDUKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzcwMTI3NTEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1lZ2Fu
IEdhcmRuZXIuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjEtMDMtMTIg
IExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjc0MzI3KSBbR0xJQl0gMkQgQ2FudmFzIHRlc3RzIHRpbWluZyBvdXQgYWZ0ZXIgZW5hYmxpbmcg
R1BVUHJvY2VzIGluIHRlc3RpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDY5ZWRkNjI5MWM3MmFmYjA2NmJk
YWFmZWVjYjBjZjI1NzY3NDdhLi42OGQyMGFiMTViMGM2YWE5NzEyNDE2ODk3ZjFiMjI1ZjE3Y2I2
ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2IEBACisyMDIxLTAzLTE1ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFw
XSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgaGFuZGxlIG92ZXJmbG93
aW5nIHNuYXAgYXJlYXMuIFRoaXMgcmVxdWlyZXMgcmV3cml0aW5nIHRoZSBzbmFwcGluZworICAg
ICAgICBhbGdvcml0aG0uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBub3cgc3RvcmUgc25hcCBhcmVh
IHJlY3RhbmdsZXMsIHdoaWNoIGFyZQorICAgICAgICB1c2VkIHRvIGhhbmRsZSBvdmVyZmxvd2lu
ZyBzbmFwIGFyZWFzLiBJbiBhZGRpdGlvbiwgc25hcCBvZmZzZXQgcmFuZ2VzIGFyZSBubworICAg
ICAgICBsb25nZXIga2VwdCB0byBoYW5kbGUgcHJveGltaXR5LiBJbnN0ZWFkIHRoaXMgaXMgZG9u
ZSB3aGVuIGNob29zaW5nIGNhbmRpZGF0ZQorICAgICAgICBzbmFwIG9mZnNldHMuCisKKyAgICAg
ICAgQmVjYXVzZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm93IGNvbnRhaW5zIGEgcmVjdGFuZ2xl
IHR5cGUsIGl0cyB0ZW1wbGF0ZSBuZWVkcworICAgICAgICB0aGlzIHR5cGUgYXMgd2VsbC4gSW4g
b3JkZXIgdG8gbWFrZSBpdCBzaW1wbGVyIHRvIHVzZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gdGhp
cworICAgICAgICBjaGFuZ2UgZXhwb3NlcyB0d28gdHlwZSBhbGlhc2VzLCBGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbyBhbmQgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvCisgICAgICAgIHdo
aWNoIGFyZSB1c2VkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNo
YW5nZSBmaXhlcyB0aGUgV1BUIHRlc3Q6CisgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0bWwK
KworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
OiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJzdFNuYXBT
dG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKTogVXBkYXRlZCB0byByZXR1cm4g
YW4gb2Zmc2V0L2luZGV4CisgICAgICAgIHBhaXIgc28gdGhlIHJldHVybiB0eXBlIG9mIHRoaXMg
ZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgY2FsY3VsYXRlQ2xvc2VzdFNuYXBP
ZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVB
cmVhKTogTm8gbG9uZ2VyIHN0b3JlIG9mZnNldCByYW5nZXMgZm9yIHByb3hpbWl0eSBzbmFwcGlu
ZworICAgICAgICBhbmQgYWxzbyBzdG9yZSBzbmFwIGFyZWFzIGNvbnZlcnRlZCB0byAib2Zmc2V0
IiBjb29yZGluYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJbmZvKTogTm8g
bG9uZ2VyIG5lZWQgdG8gY29udmVydCBvZmZzZXQgcmFuZ2VzLCBidXQgdGhpcyBkb2VzIG5vdwor
ICAgICAgICByZXF1aXJlIGNvbnZlcnRpbmcgb2Zmc2V0IGFyZWFzLgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyBjb25zdCk6IFVzZSB0
aGUgbmV3IHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjptYXhGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggZ2V0cyB0aGUgbWF4aW11bSBp
biBhIHBhcnRpY3VsYXIgYXhpcyBnaXZlbiB0aGUgYXhpcy4KKyAgICAgICAgKFdlYkNvcmU6Om1p
bkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzTmVhckVub3VnaFRvT2Zmc2V0
Rm9yUHJveGltaXR5KTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggcmVwbGFjZXMgY29tcHV0ZUF4
aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
Q2xvc2VzdFNuYXBPZmZzZXQpOiBUaGlzIHJlcGxhY2VzIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9m
ZnNldHNBbmRSYW5nZXMsIGJ1dCBhbHNvCisgICAgICAgIGFuZCBpbmRpY2VzT2ZOZWFyZXN0U25h
cE9mZnNldHMuIE5vdyB3cml0dGVuIHVzaW5nIHNuYXAgYXJlYXMgZnJvbSB0aGUgZGF0YSBzdHJ1
Y3R1cmUgYXMgd2VsbCBhcworICAgICAgICB3aXRoIHByb3BlciBoYW5kbGluZyBmb3Igb3ZlcmZs
b3dpbmcgc25hcCBhcmVhcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3QpOiBVcGRhdGUgZm9yIG5ldyBtZXRob2Qg
bmFtZXMgYW5kIHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2Nyb2xsU25h
cE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6IERpdHRvLgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvOjppc0VxdWFsIGNvbnN0KTogTm8gbG9uZ2VyIGxvb2sg
YXQgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgZG8gdGFrZSBpbnRvCisgICAgICAgIGNvbnNpZGVy
YXRpb24gdGhlIHNuYXAgYXJlYXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwT2Zmc2V0
c0luZm86Om9mZnNldHNGb3JBeGlzIGNvbnN0KTogUmVuYW1lZCB0aGUgdGVtcGxhdGUgYXJndW1l
bnQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOiBVc2UgdGhlIG5l
dyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZS5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRl
RnJvbVN0YXRlTm9kZSk6IGNvbnZlcnRVbml0cyBub3cgdGFrZXMgdHdvIHRlbXBsYXRlIGFyZ3Vt
ZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOiBQYXNz
IGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gc2VsZWN0aW5nIHNuYXAgcG9pbnRzLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRpb24pOiBE
aXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmg6IFVzZSB0aGUgbmV3
IHR5cGUgYWxpYXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5p
bWF0aW9uRm9yU3RhdGUpOiBQYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFy
Z2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOiBObyBsb25nZXIgcHJpbnQgc25hcCBvZmZzZXQgcmFuZ2VzLgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmg6IFJlbW92ZWQgbWV0aG9kIGRl
YWxpbmcgd2l0aCByYW5nZXMuIE5vdyBwYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0
Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOiBV
c2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
OiBEaXR0by4KKworMjAyMS0wMy0xMyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBOb24tdW5pZmllZCBidWlsZHMgY2FuJ3QgY29tcGlsZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6IGVycm9yOiBtZW1iZXIgYWNjZXNzIGludG8gaW5jb21w
bGV0ZSB0eXBlICdXZWJDb3JlOjpXZWJHTFNhbXBsZXInCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNDIKKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oOiBBZGRlZCBzb21lIG1pc3NpbmcgaGVhZGVyIGluY2x1c2lvbnMuCisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOiBGaXhlZCBhIHJlY3Vyc2l2ZSBoZWFk
ZXIgaW5jbHVzaW9uIHdpdGggV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oLgorCisyMDIxLTAzLTEz
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
YmFzaWMgKG5vbi1tb21lbnR1bSkgd2hlZWwgZXZlbnQgaGFuZGxpbmcgZm9yIHNjcm9sbCBzbmFw
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1OTQK
KworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdDogY3Nz
My9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC13aGVlbC1ldmVudC5odG1sCisKKyAgICAgICAgRW5h
YmxlIHNjcm9sbCBzbmFwcGluZyBmb3IgYmFzaWMgd2hlZWwgZXZlbnRzIG9uIEdUSysgYW5kIFdQ
RS4gVGhlIE1hYyBwb3J0CisgICAgICAgIGhhcyBzcGVjaWFsIHdoZWVsIGhhbmRsaW5nIGR1ZSB0
byBtb21lbnR1bSBzY3JvbGxpbmcuIE90aGVyIHNjcm9sbC1zbmFwLWVuYWJsZWQKKyAgICAgICAg
cG9ydHMgY2FuIGp1c3QgdXNlIGEgYmFzaWMgdmVyc2lvbi4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGwpOiBBY2NlcHQgYSBiaXRtYXNrIG9mIG9wdGlvbnMgbm93LiBUaGlzCisgICAgICAgIHdp
bGwgYWxsb3cgdXNpbmcgdGhpcyBtZXRob2Qgd2hlbiBoYW5kbGluZyB3aGVlbCBldmVudHMgdGhh
dCBkbyBub3QgYW5pbWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpoYW5k
bGVXaGVlbEV2ZW50KTogVHJpZ2dlciA6OnNjcm9sbCB3aXRoCisgICAgICAgIHNjcm9sbCBzbmFw
cGluZyBlbmFibGVkIGFuZCBwYXNzIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdG8gZGlzYWJsZSBh
bmltYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnByb2Nlc3NXaGVl
bEV2ZW50Rm9yU2Nyb2xsU25hcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmlt
YXRvcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKTogTWFkZQorICAgICAgICB0aGlz
IGEgbWV0aG9kIHRoYXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDogQWRkZWQgcHJvY2Vzc1doZWVsRXZl
bnRGb3JTY3JvbGxTbmFwLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwpOiBQYXkg
YXR0ZW50aW9uIHRvIHRoZSBOZXZlckFuaW1hdGUgYml0bWFzayBub3cuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKTog
QWRkZWQuCisKKzIwMjEtMDMtMTMgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9m
IFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRm9yIGNyb3NzLW9yaWdpbiBtZXRo
b2RzIC8gYWNjZXNzb3JzLCBXaW5kb3cgYW5kIExvY2F0aW9uIG9iamVjdHMgcmV0dXJuIGRpZmZl
cmVudCBKU0Z1bmN0aW9uCisgICAgICAgIGluc3RhbmNlcyBvbiBldmVyeSBbW0dldF1dLiBUaGUg
aW50ZW50IHdhcyB0byBlbnN1cmUgaXNvbGF0aW9uIGJ5IHN1cHBseWluZyBkaWZmZXJlbnQgUmVh
bG1zIHdpdGgKKyAgICAgICAgZGlmZmVyZW50IGZ1bmN0aW9uIG9iamVjdHMuIEhvd2V2ZXIsIHdp
dGhpbiB0aGUgc2FtZSBjYWxsZWUgUmVhbG0sIHRoaXMgbWFrZXMgc3Vic2VxdWVudCBsb29rdXBz
CisgICAgICAgIG9mIGEgY3Jvc3Mtb3JpZ2luIG1ldGhvZCAvIGFjY2Vzc29yIGZhaWwgcmVmZXJl
bmNlIGVxdWFsaXR5IHRlc3QsIHdoaWNoIGlzIHJhdGhlciBjb25mdXNpbmc6CisKKyAgICAgICAg
ICAgIGBjcm9zc09yaWdpbldpbmRvdy5mb2N1cyA9PT0gY3Jvc3NPcmlnaW5XaW5kb3cuZm9jdXMg
Ly8gPT4gZmFsc2VgCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFtbQ3Jvc3NPcmln
aW5Qcm9wZXJ0eURlc2NyaXB0b3JNYXBdXSwgYnJpbmdpbmcgY29uc2lzdGVudCBmdW5jdGlvbiBp
ZGVudGl0eQorICAgICAgICBhbmQgYWxpZ25pbmcgV2ViS2l0IHdpdGggdGhlIHNwZWMgWzFdLCBC
bGluaywgYW5kIEdlY2tvLiBGb3IgY29udmVuaWVuY2UsIGNhY2hlIG1hcHMgYXJlIGFkZGVkIHRv
CisgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0ICh0byBhY2NvbW1vZGF0ZSBSZW1vdGVET01XaW5k
b3cpIGFuZCBjb3ZlciBib3RoIFdpbmRvdyBhbmQgTG9jYXRpb24gb2JqZWN0cy4KKworICAgICAg
ICBBcyBhIGNhY2hlIG1hcCBrZXksIGEgcGFpciBvZiBsZXhpY2FsIGdsb2JhbCBvYmplY3QgYW5k
IHJhdyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQsIHdoaWNoIGd1YXJhbnRlZXMKKyAgICAgICAg
Y29ycmVjdG5lc3MgZXZlbiBpZiBXaW5kb3cgYW5kIExvY2F0aW9uIHdvdWxkIGV4cG9zZSBjcm9z
cy1vcmlnaW4gcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZS4KKworICAgICAgICBUaGlzIHBhdGNo
IHJlbW92ZXMgOSBjdXN0b20gZ2V0dGVycywgYWRkcyBydW50aW1lIGxvb2t1cCBmb3IgInNob3dN
b2RhbERpYWxvZyIgKHdoaWNoIGlzIHJhcmUpLAorICAgICAgICBhbmQgcmVtb3ZlcyBbRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcl0gZXh0ZW5kZWQgYXR0cmlidXRlIGFzIGl0J3Mgbm93IHVudXNlZCBh
bmQgbm9uLXRyaXZpYWwgdG8gZ2VuZXJhdGUuCisKKyAgICAgICAgQWxzbywgZml4ZXMgY3Jvc3Mt
cmVhbG0gYHBvc3RNZXNzYWdlLmxlbmd0aGAgdG8gZXF1YWwgMSBhcyBwZXIgV2ViSURMLgorCisg
ICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2Vy
cy5odG1sI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVydHloZWxwZXItKC1vLC1wLSkKKworICAgICAg
ICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
YWNoaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2lu
LW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTUdsb2JhbE9iamVjdDo6SlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmNyZWF0ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
RE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE93blBy
b3BlcnR5U2xvdENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b246CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBhZ2UvSGlzdG9y
eS5pZGw6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisgICAgICAgICogcGFnZS9SZW1v
dGVET01XaW5kb3cuaWRsOgorCiAyMDIxLTAzLTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtb3JlIE1lZGlhU3RyZWFtIGxvZ2dpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IGYzNDkwZGYwMTU0MDg5NjdhMjQ1YmY5ZjM5YzM4ZGY1ZGFkNDA0
YTEuLjkxNDhmOGFkMmEzY2E4OGYzYjFlMmFmOTk5YzBkM2Q4N2FmZDU2MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTEzICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IERETWFjQWN0aW9uIGluc3RlYWQg
b2YgRERBY3Rpb24gb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzE0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAxMjc1MTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWVnYW4gR2FyZG5lci4KKworICAgICAgICAqIHBhbC9zcGkv
bWFjL0RhdGFEZXRlY3RvcnNTUEkuaDoKKwogMjAyMS0wMy0xMiAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gTW9iaWxlQXNzZXQgZm9u
dHMgYXJlIGJyb2tlbiBpbiBSZWFkZXIgbW9kZSBpbiBTYWZhcmkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWZiYmFm
OTk0NzQ1ODRmYzc1MmU3NjE5N2QxNWVjYTYyNWM1M2QxNy4uMDlkZWVmMTdjMDMyNTgzZjQ2ZjE2
MzYwODMzYjViYjk1YjgwZmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0wMy0x
NSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW2Nz
cy1zY3JvbGwtc25hcF0gUHJvcGVybHkgaGFuZGxlIG92ZXJmbG93aW5nIHNuYXAgYXJlYXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzE3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBubyBsb25nZXIgaG9sZHMgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgaXMgYWxz
byB0ZW1wbGF0ZWQgb2ZmCisgICAgICAgIG9mIGEgcmVjdCB0eXBlLiBJbiBXZWJLaXQgd2Ugc3dp
dGNoIHRvIHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBhbGlhcy4KKyAgICAg
ICAgQWRkaXRpb25hbGx5LCB3ZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHZpZXdwb3J0IHNpemUgd2hl
biByZXF1ZXN0aW5nIGEgc25hcCBvZmZzZXQKKyAgICAgICAgcG9zaXRpb24uCisKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU+OjpkZWNvZGUpOiBTd2l0Y2ggdG8gdXNpbmcgdGhlIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvIGFsaWFzLgorICAgICAgICAoQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbz46OmVuY29kZSk6IERpdHRvLiBBbHNvIHdlIG5vIGxvbmdlciBuZWVkIHRvIGVuY29k
ZSB0aGUgcmFuZ2VzLgorICAgICAgICAoQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbz46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZy
YW1lU2Nyb2xsaW5nIGNvbnN0KTogUGFzcyBpbiB0aGUgdmlld3BvcnQgc2l6ZSBub3cuCisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmll
d0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdldENv
bnRlbnRPZmZzZXQ6XSk6IERpdHRvLgorCisyMDIxLTAzLTEzICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IERETWFjQWN0aW9uIGluc3RlYWQg
b2YgRERBY3Rpb24gb24gbWFjT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMzE0NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAxMjc1MTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTWVnYW4gR2FyZG5lci4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9NZW51VXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViS2l0OjphY3Rpb25Gb3JNZW51SXRl
bSk6CisgICAgICAgIChXZWJLaXQ6Om1lbnVJdGVtRm9yVGVsZXBob25lTnVtYmVyKToKKyAgICAg
ICAgKFdlYktpdDo6bWVudUZvclRlbGVwaG9uZU51bWJlcik6CisgICAgICAgIEFkb3B0IHRoZSBu
ZXcgY2xhc3MgbmFtZSwgd2hlbiBhdmFpbGFibGUuCisKIDIwMjEtMDMtMTIgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXVtXZWJNXSBIYW5nIHdoZW4g
cmVsb2FkaW5nIHBhZ2UgYmVmb3JlIFdlYk0gY29udGVudCBpcyBsb2FkZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5j
cHAKaW5kZXggYmE3MTM2NTViYWFmZTA5MTI4YzA1OWNlMzE2NmU4ZTIwZjZjZDYwZS4uOGQ1MzQ2
Yjg4M2RmYWQxN2E3ZWJhZWU3NjNhNzc5OWM3NWMxNjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKQEAg
LTQwLDkgKzQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdldHRlckZ1bmN0
aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKLQogICAgIEdldFZhbHVlRnVuYyBnZXR0ZXIgPSBj
dXN0b21HZXR0ZXJGdW5jdGlvbi0+Z2V0dGVyKCk7Ci0gICAgQVNTRVJUKGdldHRlcik7CiAKICAg
ICBpZiAoYXV0byBkb21BdHRyaWJ1dGUgPSBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+ZG9tQXR0cmli
dXRlKCkpIHsKICAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0
ZS0+Y2xhc3NJbmZvKSkKQEAgLTYyLDYgKzYwLDcgQEAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGEK
IAogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0
ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKIHsKKyAgICBBU1NFUlQoZ2V0dGVyKTsKICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbUdl
dHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0N1c3RvbUdldHRlckZ1bmN0aW9uPih2bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgZ2V0
dGVyLCBkb21BdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcAppbmRleCBmZTE0YTYxYTM3Zjg5ODUy
YTE4YWMxNDFhMjg5MDRjYjhiNzBiMmM5Li4wMzFiMTE3MjlmZjhjZDhmMGE3Y2NhMjJlNTliZjE3
ZDJkZWU4MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1
c3RvbVNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcApAQCAtMzYsNyArMzYsNiBAQCBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwpOwogSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbVNldHRlckZ1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKICAgICBQdXRWYWx1
ZUZ1bmMgc2V0dGVyID0ganNDYXN0PEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkpLT5zZXR0ZXIoKTsKLSAgICBBU1NFUlQoc2V0dGVyKTsKICAgICBzZXR0ZXIo
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSksIEpT
VmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQ5LDYgKzQ4LDcgQEAgSlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbjo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGEKIAogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCiB7Cisg
ICAgQVNTRVJUKHNldHRlcik7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0ZXJGdW5jdGlv
blN0cnVjdHVyZSgpOwogICAgIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkp
IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBzZXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCmluZGV4IDcyNTliNWQzMTQwNzE1ZGU5ODMyMmY1YzQwYWEzOTMyMGQ5Njc2ZDguLmU2MGY5
ZmU3MDczODczZGEwYWJmZDFiMTc1YmUwZTk0MGIzMTBmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTM1MjEsMjQgKzM1MjEsMTggQEAgQnV0dGVy
Zmx5KiBKU09iamVjdDo6YWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZShWTSYgdm0sIHNpemVf
dCBvbGRTaXplLCBzaXplX3QKICAgICByZXR1cm4gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dQcm9w
ZXJ0eVN0b3JhZ2UoYnV0dGVyZmx5KCksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXpl
LCBuZXdTaXplKTsKIH0KIAotc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGdldEN1c3Rv
bUdldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0
dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK3N0YXRpYyBKU0N1c3RvbUdldHRlckZ1
bmN0aW9uKiBjcmVhdGVDdXN0b21HZXR0ZXJGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWVG
dW5jLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCiB7Ci0g
ICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxP
YmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KGdldFZhbHVlRnVuYyk7Ci0gICAg
aWYgKCFjdXN0b21HZXR0ZXJGdW5jdGlvbikgewotICAgICAgICBjdXN0b21HZXR0ZXJGdW5jdGlv
biA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXRWYWx1ZUZ1bmMsIGRvbUF0dHJpYnV0ZSk7Ci0g
ICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5zZXQoZ2V0VmFs
dWVGdW5jLCBjdXN0b21HZXR0ZXJGdW5jdGlvbik7Ci0gICAgfQotICAgIHJldHVybiBjdXN0b21H
ZXR0ZXJGdW5jdGlvbjsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5j
dGlvbk1hcCgpLmVuc3VyZShnZXRWYWx1ZUZ1bmMsIFsmXSB7CisgICAgICAgIHJldHVybiBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5jLCBkb21BdHRyaWJ1dGUpOworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotc3RhdGljIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24q
IGdldEN1c3RvbVNldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZUZ1bmMpCitzdGF0
aWMgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogY3JlYXRlQ3VzdG9tU2V0dGVyRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHV0
VmFsdWVGdW5jIHB1dFZhbHVlRnVuYykKIHsKLSAgICBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBj
dXN0b21TZXR0ZXJGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25N
YXAoKS5nZXQocHV0VmFsdWVGdW5jKTsKLSAgICBpZiAoIWN1c3RvbVNldHRlckZ1bmN0aW9uKSB7
Ci0gICAgICAgIGN1c3RvbVNldHRlckZ1bmN0aW9uID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHB1
dFZhbHVlRnVuYyk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25N
YXAoKS5zZXQocHV0VmFsdWVGdW5jLCBjdXN0b21TZXR0ZXJGdW5jdGlvbik7Ci0gICAgfQotICAg
IHJldHVybiBjdXN0b21TZXR0ZXJGdW5jdGlvbjsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5j
dXN0b21TZXR0ZXJGdW5jdGlvbk1hcCgpLmVuc3VyZShwdXRWYWx1ZUZ1bmMsIFsmXSB7CisgICAg
ICAgIHJldHVybiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52
bSgpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgcHV0VmFsdWVGdW5jKTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkBAIC0zNTU5LDkgKzM1
NTMsOSBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYQogICAgICAgICBkZXNjcmlwdG9yLnNldEFj
Y2Vzc29yRGVzY3JpcHRvcigoc2xvdC5hdHRyaWJ1dGVzKCkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
QWNjZXNzb3IpICYgflByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CiAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBzbG90QmFzZUdsb2JhbE9iamVjdCA9IHNsb3Quc2xvdEJhc2UoKS0+
Z2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgaWYgKHNsb3QuY3VzdG9tR2V0dGVyKCkpCi0gICAg
ICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihzbG90
QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigpLCBzbG90
LmRvbUF0dHJpYnV0ZSgpKSk7CisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihjcmVh
dGVDdXN0b21HZXR0ZXJGdW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
LCBzbG90LmN1c3RvbUdldHRlcigpLCBzbG90LmRvbUF0dHJpYnV0ZSgpKSk7CiAgICAgICAgIGlm
IChzbG90LmN1c3RvbVNldHRlcigpKQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIo
Z2V0Q3VzdG9tU2V0dGVyRnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdC5jdXN0b21TZXR0ZXIoKSkpOworICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0
ZXIoY3JlYXRlQ3VzdG9tU2V0dGVyRnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdC5jdXN0b21TZXR0ZXIoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaAppbmRleCBjZDY1ZmRmOTk0MzMwN2Y5ODg0OWQwYTk3NmYz
NTYzMzM4ODZmNjQyLi40ZmZjNzIyMGQ0ZDgwZWQ2ZmEwNDVkNjhjNTQ0ODUyNDI1MzI2OWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaApAQCAtNDE0LDkgKzQxNCw0IEBA
IGlubGluZSB2b2lkIHJlaWZ5U3RhdGljUHJvcGVydGllcyhWTSYgdm0sIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvLCBjb25zdCBIYXNoCiAgICAgfQogfQogCi10ZW1wbGF0ZTxSYXdOYXRpdmVG
dW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gRW5jb2RlZEpTVmFsdWUgbm9uQ2Fj
aGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBs
ZW5ndGgsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG5hdGl2ZUZ1bmN0aW9uKSk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha0dDTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NN
YXAuaAppbmRleCA5MTJjZDQxOTZiNTkwMjNjNTNlYzY1YmU1MTU4ZTIyZDJlYjA1NDY1Li5lNjUz
NTU4MjllNjY2OWQ2OTI0NDc3OTdmNmE1NzExOTVjYWFmNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrR0NNYXAuaApAQCAtNjQsNiArNjQsMTIgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgQWRkUmVzdWx0IGVuc3VyZShjb25zdCBL
ZXlUeXBlJiBrZXksIEZ1bmN0b3ImJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bWFwLmVuc3VyZShrZXksIHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSk7CisgICAgfQor
CiAgICAgYm9vbCByZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fbWFwLnJlbW92ZShrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAppbmRleCA1YjBmNDRhMzlk
MTU3OTc1ODgyNjc1NjM5NWM0MzIxNTFjMjlhZjEyLi4zNDE3MTgzM2UzY2MxNDY2ODgwZjI0YThi
ZTVjZjIwODY4ZTcwOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtOTE2LDYgKzkxNiw3IEBA
CiAKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTIwMDAwCiAjZGVmaW5lIEhBVkVfU1RBVElDX0ZPTlRfUkVHSVNUUlkgMQorI2RlZmluZSBI
QVZFX0RBVEFfREVURUNUT1JTX01BQ19BQ1RJT04gMQogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMCkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9EYXRhRGV0ZWN0b3JzU1BJLmgKaW5k
ZXggMDJhOTgyOGU3ZmZhNDQzNDNhZDdiYzIwNTJlNDJhODM3MjA1YTZiMy4uZDVmNzViYTc1NjM0
MGI2OTk2MGI3YTYxYjQ5NzZlYjNmM2I4NDZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvbWFjL0RhdGFEZXRlY3RvcnNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9tYWMvRGF0YURldGVjdG9yc1NQSS5oCkBAIC0zOSw2ICszOSwxMCBAQAogI2lt
cG9ydCA8RGF0YURldGVjdG9ycy9EREFjdGlvbnNNYW5hZ2VyLmg+CiAjaW1wb3J0IDxEYXRhRGV0
ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZy5oPgogCisjaWYgSEFWRShEQVRBX0RFVEVDVE9SU19N
QUNfQUNUSU9OKQorI2ltcG9ydCA8RGF0YURldGVjdG9ycy9ERE1hY0FjdGlvbi5oPgorI2VuZGlm
CisKICNlbHNlIC8vICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCiBAaW50ZXJmYWNlIEREQWN0
aW9uQ29udGV4dCA6IE5TT2JqZWN0IDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPgpAQCAtOTgs
MTkgKzEwMiwyNiBAQCBXVEZfRVhURVJOX0NfRU5ECiB0eXBlZGVmIHN0cnVjdCBfX0RESGlnaGxp
Z2h0ICpEREhpZ2hsaWdodFJlZjsKIHR5cGVkZWYgTlNVSW50ZWdlciBEREhpZ2hsaWdodFN0eWxl
OwogCisjaWYgIUhBVkUoREFUQV9ERVRFQ1RPUlNfTUFDX0FDVElPTikKIEBpbnRlcmZhY2UgRERB
Y3Rpb24gOiBOU09iamVjdAogCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1N0cmluZyAqYWN0aW9u
VVRJOwogCiBAZW5kCisjZW5kaWYKIAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElP
TkFMKERhdGFEZXRlY3RvcnMpCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUktfT1BUSU9OQUwo
RGF0YURldGVjdG9yc0NvcmUpCiAKLVNPRlRfTElOS19DTEFTU19PUFRJT05BTChEYXRhRGV0ZWN0
b3JzLCBEREFjdGlvbikKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChEYXRhRGV0ZWN0b3JzLCBE
REFjdGlvbkNvbnRleHQpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoRGF0YURldGVjdG9ycywg
RERBY3Rpb25zTWFuYWdlcikKIAorI2lmIEhBVkUoREFUQV9ERVRFQ1RPUlNfTUFDX0FDVElPTikK
K1NPRlRfTElOS19DTEFTU19PUFRJT05BTChEYXRhRGV0ZWN0b3JzLCBERE1hY0FjdGlvbikKKyNl
bHNlCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoRGF0YURldGVjdG9ycywgRERBY3Rpb24pCisj
ZW5kaWYKKwogU09GVF9MSU5LX0NPTlNUQU5UKERhdGFEZXRlY3RvcnNDb3JlLCBEREJpbmRlclBo
b25lTnVtYmVyS2V5LCBDRlN0cmluZ1JlZikKICNpZiBIQVZFKEREX0hJR0hMSUdIVF9DUkVBVEVf
V0lUSF9TQ0FMRSkKIFNPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodENyZWF0ZVdp
dGhSZWN0c0luVmlzaWJsZVJlY3RXaXRoU3R5bGVTY2FsZUFuZERpcmVjdGlvbiwgRERIaWdobGln
aHRSZWYsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENHUmVjdCogcmVjdHMsIENGSW5kZXgg
Y291bnQsIENHUmVjdCBnbG9iYWxWaXNpYmxlUmVjdCwgRERIaWdobGlnaHRTdHlsZSBzdHlsZSwg
Qm9vbGVhbiB3aXRoQnV0dG9uLCBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiwg
Qm9vbGVhbiBlbmRzV2l0aEVPTCwgQm9vbGVhbiBmbGlwcGVkLCBDR0Zsb2F0IHNjYWxlKSwgKGFs
bG9jYXRvciwgcmVjdHMsIGNvdW50LCBnbG9iYWxWaXNpYmxlUmVjdCwgc3R5bGUsIHdpdGhCdXR0
b24sIHdyaXRpbmdEaXJlY3Rpb24sIGVuZHNXaXRoRU9MLCBmbGlwcGVkLCBzY2FsZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXgg
Mzk5OGFhYzBhYzgyMDNhNDExZDcxYTE5MjY4Mjg2NTlkMmMwNWZlNi4uNWU4YjI2ZWYzZDViYTNl
NWMwMDE3MzE0OTFlOWIwMWU0OGEyMWFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNTQsOSArNTQsMTMgQEAKICNpbmNsdWRl
ICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGlu
TmFtZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
dXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJu
YWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJlSW5saW5lcy5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxlci5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTc1LDYgKzc5LDggQEAgSlNET01HbG9i
YWxPYmplY3Q6OkpTRE9NR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZjxET01XcmFwcGUKICAgICAsIG1fd29ybGQoV1RGTW92ZSh3b3JsZCkpCiAgICAgLCBtX3dv
cmxkSXNOb3JtYWwobV93b3JsZC0+aXNOb3JtYWwoKSkKICAgICAsIG1fYnVpbHRpbkludGVybmFs
RnVuY3Rpb25zKHZtKQorICAgICwgbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwKHZtKQorICAgICwg
bV9jcm9zc09yaWdpbkdldHRlclNldHRlck1hcCh2bSkKIHsKIH0KIApAQCAtMjk4LDYgKzMwNCwy
NiBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjpjbGVhckRPTUd1YXJkZWRPYmplY3RzKCkKICAg
ICAgICAgZ3VhcmRlZC0+Y2xlYXIoKTsKIH0KIAorSlNGdW5jdGlvbiogSlNET01HbG9iYWxPYmpl
Y3Q6OmNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUZ1bmN0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQ3Jvc3NPcmlnaW5NYXBLZXkga2V5
ID0gc3RkOjptYWtlX3BhaXIobGV4aWNhbEdsb2JhbE9iamVjdCwgbmF0aXZlRnVuY3Rpb24ucmF3
UG9pbnRlcigpKTsKKyAgICByZXR1cm4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwLmVuc3VyZShr
ZXksIFsmXSB7CisgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUobGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbik7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpOworfQorCitHZXR0ZXJTZXR0ZXIqIEpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDcm9zc09y
aWdpbkdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldHRlciwgUHV0VmFsdWVGdW5j
IHNldHRlcikKK3sKKyAgICBBU1NFUlQoZ2V0dGVyIHx8IHNldHRlcik7CisgICAgQ3Jvc3NPcmln
aW5NYXBLZXkga2V5ID0gc3RkOjptYWtlX3BhaXIobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2V0dGVy
ID8gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0dGVyKSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHNldHRlcikpOworICAgIHJldHVybiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwLmVu
c3VyZShrZXksIFsmXSB7CisgICAgICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICAgICAgcmV0dXJuIEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LAorICAgICAgICAgICAgZ2V0dGVyID8gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlcikgOiBu
dWxscHRyLAorICAgICAgICAgICAgc2V0dGVyID8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNldHRlcikgOiBudWxs
cHRyKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAvLyBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkv
aW5kZXguaHRtbCNjb21waWxlLWEtcG90ZW50aWFsLXdlYmFzc2VtYmx5LXJlc3BvbnNlCiBzdGF0
aWMgSlNDOjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgc291cmNlLCBKU0M6Oldh
c206OkNvbXBpbGVyTW9kZSBjb21waWxlck1vZGUsIEpTQzo6SlNPYmplY3QqIGltcG9ydE9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmlu
ZGV4IGQ0OTczZDA5MzViNzM4ZWVkNmViM2ExZmYyNjA3MWZkNjBmNmViNWMuLmNmMGZkODIxYzY4
Y2EyYjljNDU0OThiNDdkN2NjZGU0ODM1MDg0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3RJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9ja0R1cmlu
Z01hcmtpbmcuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWFrR0NNYXAuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Myw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6
SlNQcm94eSYgcHJveHkoKSBjb25zdCB7IEFTU0VSVChtX3Byb3h5KTsgcmV0dXJuICptX3Byb3h5
LmdldCgpOyB9CiAKKyAgICBKU0M6OkpTRnVuY3Rpb24qIGNyZWF0ZUNyb3NzT3JpZ2luRnVuY3Rp
b24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6Ok5hdGl2ZUZ1
bmN0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEpTQzo6R2V0dGVyU2V0dGVyKiBjcmVhdGVD
cm9zc09yaWdpbkdldHRlclNldHRlcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6R2V0VmFsdWVGdW5jLCBKU0M6OlB1dFZhbHVlRnVuYyk7CisKIHB1YmxpYzoK
ICAgICB+SlNET01HbG9iYWxPYmplY3QoKTsKIApAQCAtMTI0LDcgKzEyOCwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkQnVpbHRpbkdsb2JhbHMoSlNDOjpWTSYpOwogICAgIGZyaWVuZCB2b2lk
IEpTQnVpbHRpbkludGVybmFsRnVuY3Rpb25zOjppbml0aWFsaXplKEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAKKyAgICB1c2luZyBDcm9zc09yaWdpbk1hcEtleSA9IHN0ZDo6cGFpcjxKU0M6OkpTR2xv
YmFsT2JqZWN0Kiwgdm9pZCo+OworCiAgICAgSlNCdWlsdGluSW50ZXJuYWxGdW5jdGlvbnMgbV9i
dWlsdGluSW50ZXJuYWxGdW5jdGlvbnM7CisgICAgSlNDOjpXZWFrR0NNYXA8Q3Jvc3NPcmlnaW5N
YXBLZXksIEpTQzo6SlNGdW5jdGlvbj4gbV9jcm9zc09yaWdpbkZ1bmN0aW9uTWFwOworICAgIEpT
Qzo6V2Vha0dDTWFwPENyb3NzT3JpZ2luTWFwS2V5LCBKU0M6OkdldHRlclNldHRlcj4gbV9jcm9z
c09yaWdpbkdldHRlclNldHRlck1hcDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9y
Q2xhc3M+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKaW5kZXggNTI5NmU2NjhmZWIyZDkxNWM0NWExYmUyZmYxNmE1YThhNDliOTdhNS4uNGY4
MGU4ZTY4NWE0MzY1YTQwZmYwMWIzMmViZTY0Njk3Mjk4YjIwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDgsMTIgKzQ4LDkg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9I
ZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnRlcm5hbEZ1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTWljcm90YXNrLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9va3VwLmg+CkBAIC02Nyw1OCArNjQsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRh
YmFzZSk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5nKTsK
LXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93SW5zdGFu
Y2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcpOwotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlTm9uQ2FjaGluZyk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fZm9jdXNOb25DYWNoaW5nKTsKLXN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcpOwotc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
X3Bvc3RNZXNzYWdlTm9uQ2FjaGluZyk7Ci1zdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nKTsKICNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNET01XaW5kb3dfd2Via2l0KTsKICNlbmRpZgogCi1KU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rp
b25HZXR0ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9ibHVyLCAwPihn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fYmx1ck5vbkNhY2hpbmcsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8
anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXIsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzUmVtb3RlRE9NV2luZG93
SW5zdGFuY2VGdW5jdGlvbl9jbG9zZU5vbkNhY2hpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0g
ICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlckltcGw8anNSZW1vdGVET01X
aW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3NlLCAwPihnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc0RPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fY2xvc2VOb25DYWNoaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBu
b25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsPGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9jbG9zZSwgMD4oZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIoanNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3Vz
Tm9uQ2FjaGluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0
YXRpY0Z1bmN0aW9uR2V0dGVySW1wbDxqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25f
Zm9jdXMsIDA+KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQotSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9mb2N1c05vbkNhY2hpbmcs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlv
bkdldHRlckltcGw8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2ZvY3VzLCAwPihnbG9iYWxP
YmplY3QsIHByb3BlcnR5TmFtZSk7Ci19Ci0KLUpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Jl
bW90ZURPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpKQotewotICAgIHJldHVybiBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0
ZXJJbXBsPGpzUmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZSwgMD4o
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCi1KU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX3Bvc3RNZXNzYWdlTm9uQ2FjaGluZywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKSkKLXsKLSAgICByZXR1cm4gbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0
dGVySW1wbDxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2UsIDI+KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
IHZvaWQgSlNET01XaW5kb3c6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3ImIHZpc2l0
b3IpCiB7CkBAIC0xNTcsNDUgKzEwNiwzNCBAQCBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVy
dHlTbG90UmVzdHJpY3RlZEFjY2VzcyhKU0RPTUdsb2JhbE9iamVjdCogdGhpc09iamVjdAogICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2Nyb3Nzb3JpZ2luZ2V0b3ducHJvcGVy
dHloZWxwZXItKC1vLC1wLSkKIAogICAgIC8vIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdlIGFs
bG93IGFjY2VzcyB0byBjcm9zcy1vcmlnaW4gKERvTm90Q2hlY2tTZWN1cml0eSBpbiBJREwpLgot
ICAgIC8vIEFsd2F5cyBwcm92aWRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgb24gYSBmcmVzaCB1
bmNhY2hlZCBmdW5jdGlvbiBvYmplY3QuCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGlu
TmFtZXMuYmx1clB1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIHdpbmRvd1R5cGUgPT0gRE9N
V2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Js
dXJOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2JsdXJOb25DYWNoaW5n
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
YnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9t
KHRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgd2luZG93VHlw
ZSA9PSBET01XaW5kb3dUeXBlOjpSZW1vdGUgPyBqc1JlbW90ZURPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25fY2xvc2VOb25DYWNoaW5nIDoganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX2Nsb3Nl
Tm9uQ2FjaGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAocHJvcGVy
dHlOYW1lID09IGJ1aWx0aW5OYW1lcy5mb2N1c1B1YmxpY05hbWUoKSkgewotICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IHdpbmRvd1R5cGUgPT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8ganNSZW1vdGVET01XaW5kb3dJ
bnN0YW5jZUZ1bmN0aW9uX2ZvY3VzTm9uQ2FjaGluZyA6IGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvbl9mb2N1c05vbkNhY2hpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucG9zdE1lc3NhZ2VQdWJsaWNOYW1lKCkp
IHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IGpz
UmVtb3RlRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9wb3N0TWVzc2FnZU5vbkNhY2hpbmcgOiBq
c0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fcG9zdE1lc3NhZ2VOb25DYWNoaW5nKTsKKyAgICBh
dXRvKiBjbGFzc0luZm8gPSB3aW5kb3dUeXBlID09IERPTVdpbmRvd1R5cGU6OlJlbW90ZSA/IEpT
UmVtb3RlRE9NV2luZG93OjppbmZvKCkgOiBKU0RPTVdpbmRvdzo6aW5mbygpOworICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpCisgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZm9jdXNQdWJsaWNOYW1lKCkKKyAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5ibHVyUHVibGljTmFtZSgpCisgICAgICAg
IHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucG9zdE1lc3NhZ2VQdWJsaWNOYW1lKCkp
IHsKKyAgICAgICAgYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUt
PmVudHJ5KHByb3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIGpzRnVuY3Rpb24gPSB0aGlzT2Jq
ZWN0LT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSk7Cisg
ICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBqc0Z1bmN0aW9uKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8gV2hlbiBhY2Nlc3NpbmcgY3Jvc3Mtb3JpZ2lu
IGtub3duIFdpbmRvdyBwcm9wZXJ0aWVzLCB3ZSBhbHdheXMgdXNlIHRoZSBvcmlnaW5hbCBwcm9w
ZXJ0eSBnZXR0ZXIsCiAgICAgLy8gZXZlbiBpZiB0aGUgcHJvcGVydHkgd2FzIHJlbW92ZWQgLyBy
ZWRlZmluZWQuIEFzIG9mIGVhcmx5IDIwMTYsIHRoaXMgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJv
bWUncwogICAgIC8vIGJlaGF2aW9yLgotICAgIGF1dG8qIGNsYXNzSW5mbyA9IHdpbmRvd1R5cGUg
PT0gRE9NV2luZG93VHlwZTo6UmVtb3RlID8gSlNSZW1vdGVET01XaW5kb3c6OmluZm8oKSA6IEpT
RE9NV2luZG93OjppbmZvKCk7Ci0gICAgaWYgKGF1dG8qIGVudHJ5ID0gY2xhc3NJbmZvLT5zdGF0
aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIC8vIE9ubHkg
YWxsb3cgYWNjZXNzIHRvIHRoZXNlIHNwZWNpZmljIHByb3BlcnRpZXMuCi0gICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpCi0gICAgICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlZFB1YmxpY05hbWUoKQot
ICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aAot
ICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5zZWxmUHVibGljTmFt
ZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLndpbmRvd1B1
YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5m
cmFtZXNQdWJsaWNOYW1lKCkKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGlu
TmFtZXMub3BlbmVyUHVibGljTmFtZSgpCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0g
YnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKQotICAgICAgICAgICAgfHwgcHJvcGVydHlO
YW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgICAgIGF1dG8q
IGdldHRlciA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwotICAgICAg
ICAgICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlv
blB1YmxpY05hbWUoKSA/IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpIDog
bnVsbHB0cjsKLSAgICAgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2V0dGVyLCBzZXR0ZXIpOwotICAgICAg
ICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpB
Y2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwgZ2V0dGVyU2V0dGVyKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKHByb3BlcnR5TmFtZSA9
PSBidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMuc2VsZlB1YmxpY05hbWUoKQorICAgICAgICB8fCBwcm9wZXJ0eU5h
bWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpCisgICAgICAgIHx8IHByb3Bl
cnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpCisgICAgICAgIHx8IHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuZnJhbWVzUHVibGljTmFtZSgpCisgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKKyAgICAgICAgfHwgcHJv
cGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwgcHJv
cGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNOYW1lKCkKKyAgICAgICAgfHwg
cHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1lKCkpIHsKKyAgICAg
ICAgYXV0byogZW50cnkgPSBjbGFzc0luZm8tPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIGF1dG8qIHNldHRlciA9IHByb3BlcnR5TmFtZSA9PSBidWls
dGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSA6
IG51bGxwdHI7CisgICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IHRoaXNPYmplY3QtPmNyZWF0
ZUNyb3NzT3JpZ2luR2V0dGVyU2V0dGVyKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzZXR0ZXIpOworICAgICAgICBzbG90LnNldEdl
dHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3IgY2hpbGQgZnJhbWVzIGJ5IG5hbWUgYmVmb3Jl
IGJ1aWx0LWluIHByb3BlcnRpZXMgdG8gbWF0Y2ggTW96aWxsYS4gVGhpcyBkb2VzCkBAIC0yNjUs
NyArMjAzLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2wKICAgICAgICAgLy8gRGV0ZWN0IHdo
ZW4gd2UncmUgZ2V0dGluZyB0aGUgcHJvcGVydHkgJ3Nob3dNb2RhbERpYWxvZycsIHRoaXMgaXMg
ZGlzYWJsZWQsIGFuZCBoYXMgaXRzIG9yaWdpbmFsIHZhbHVlLgogICAgICAgICBib29sIGlzU2hv
d01vZGFsRGlhbG9nQW5kU2hvdWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCkuY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLnNob3dNb2RhbERpYWxvZ1B1YmxpY05hbWUoKQogICAgICAgICAgICAgJiYg
KCFmcmFtZSB8fCAhRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZyYW1lKSkKLSAgICAg
ICAgICAgICYmIHNsb3QuaXNWYWx1ZSgpICYmIGlzSG9zdEZ1bmN0aW9uKHNsb3QuZ2V0VmFsdWUo
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uX3Nob3dNb2RhbERpYWxvZyk7CisgICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUoKSAm
JiBpc0hvc3RGdW5jdGlvbihzbG90LmdldFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSksIHNfaW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUp
LT5mdW5jdGlvbigpKTsKICAgICAgICAgLy8gVW5sZXNzIHdlJ3JlIGluIHRoZSBzaG93TW9kYWxE
aWFsb2cgc3BlY2lhbCBjYXNlLCB3ZSdyZSBkb25lLgogICAgICAgICBpZiAoIWlzU2hvd01vZGFs
RGlhbG9nQW5kU2hvdWxkSGlkZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA2YjQzYjNl
YjQxMWEyYjUyZWNhMTUxOWVjYTc1ZGZlZjg0MjJjNTY1Li43ZjdmZGYxZmFhZTY1MTNiMzdmOGJm
ZTdmOTE1N2IxYjkwMDA0Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMjksMjEgKzI5LDEyIEBACiAjaW5jbHVkZSAiSlNET01X
aW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
R2V0dGVyU2V0dGVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNM
b2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hpbmcpOwotCi1KU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIoanNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZU5vbkNhY2hp
bmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkpCi17Ci0gICAgcmV0dXJuIG5vbkNhY2hpbmdTdGF0aWNGdW5j
dGlvbkdldHRlckltcGw8anNMb2NhdGlvbkluc3RhbmNlRnVuY3Rpb25fcmVwbGFjZSwgMT4oZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwotfQotCiBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3RDb21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CkBAIC02NCw3
ICs1NSw5IEBAIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0xvY2F0aW9u
JiB0aGlzT2JqZWN0LCBKU0dsb2JhbE9iamVjdCYgbGV4CiAKICAgICAvLyBXZSBvbmx5IGFsbG93
IGFjY2VzcyB0byBMb2NhdGlvbi5yZXBsYWNlKCkgY3Jvc3Mgb3JpZ2luLgogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+cmVwbGFjZSkgewotICAgICAgICBzbG90LnNl
dEN1c3RvbSgmdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGpzTG9jYXRpb25J
bnN0YW5jZUZ1bmN0aW9uX3JlcGxhY2VOb25DYWNoaW5nKTsKKyAgICAgICAgYXV0byogZW50cnkg
PSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5
TmFtZSk7CisgICAgICAgIGF1dG8qIGpzRnVuY3Rpb24gPSB0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpLT5jcmVhdGVDcm9zc09yaWdpbkZ1bmN0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSk7Cisg
ICAgICAgIHNsb3Quc2V0VmFsdWUoJnRoaXNPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSwganNGdW5jdGlvbik7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNzIsOCArNjUsNyBAQCBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMb2NhdGlvbiYgdGhpc09iamVjdCwgSlNHbG9iYWxPYmpl
Y3QmIGxleAogICAgIC8vIGEgZGVzY3JpcHRvciB0aGF0IGhhcyBhIHNldHRlciBidXQgbm8gZ2V0
dGVyLgogICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
aHJlZlB1YmxpY05hbWUoKSkgewogICAgICAgICBhdXRvKiBlbnRyeSA9IEpTTG9jYXRpb246Omlu
Zm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKLSAgICAgICAg
YXV0byogc2V0dGVyID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7Ci0g
ICAgICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgbnVsbHB0ciwgc2V0dGVyKTsKKyAgICAgICAgYXV0byogZ2V0dGVy
U2V0dGVyID0gdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKS0+Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0
ZXJTZXR0ZXIoJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgbnVsbHB0ciwgZW50
cnktPnByb3BlcnR5UHV0dGVyKCkpOwogICAgICAgICBzbG90LnNldEdldHRlclNsb3QoJnRoaXNP
YmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSwgZ2V0dGVyU2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA4ZjlmOWEzNzFmNmZmZTM4NGYwZGMxNGExOGNkNTRhZTAzMjQwMjJlLi5hNjg0ZDkyZmRh
ZDk4Mzc3NzFkZjM5ZjMxZDhmODNmODkzZmUwMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzA2Niw5ICszMDY2LDYg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgbXkgJG51bUN1c3RvbU9wZXJhdGlvbnMgPSAwOwog
ICAgIG15ICRudW1DdXN0b21BdHRyaWJ1dGVzID0gMDsKIAotICAgIG15ICRoYXNGb3J3YXJkRGVj
bGFyaW5nT3BlcmF0aW9ucyA9IDA7Ci0gICAgbXkgJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1
dGVzID0gMDsKLQogICAgIG15ICRoYXNET01KSVRBdHRyaWJ1dGVzID0gMDsKIAogICAgICMgQXR0
cmlidXRlIGFuZCBmdW5jdGlvbiBlbnVtcwpAQCAtMzA4NCw4ICszMDgxLDYgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgJGhh
c0RPTUpJVEF0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RPTUpJVH07Ci0KLSAgICAgICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRlcyA9
IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhl
YWRlcn07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxNDQsNyArMzEzOSw2IEBAIHN1YiBHZW5l
cmF0ZUhlYWRlcgogCiAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9w
ZXJhdGlvbnN9KSB7CiAgICAgICAgICRudW1DdXN0b21PcGVyYXRpb25zKysgaWYgSGFzQ3VzdG9t
TWV0aG9kKCRvcGVyYXRpb24pOwotICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlv
bnMgPSAxIGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJl
SW5IZWFkZXJ9OwogICAgIH0KIAogICAgIGlmICgkbnVtQ3VzdG9tT3BlcmF0aW9ucyA+IDApIHsK
QEAgLTMyNzAsNTIgKzMyNjQsNiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJm
YWNlKSBpZiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCi0g
ICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucykgewotICAgICAgICBteSAkaW5B
cHBsZUNvcHlyaWdodCA9IDA7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0
aW9uc1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2Ut
Pm9wZXJhdGlvbnN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotICAgICAgICAgICAg
bmV4dCB1bmxlc3MgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xh
cmVJbkhlYWRlcn07Ci0KLSAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxl
Q29weXJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICRi
ZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwotICAgICAgICAgICAgICAgICAgICAk
aW5BcHBsZUNvcHlyaWdodCA9IDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBl
bHNpZiAoJGluQXBwbGVDb3B5cmlnaHQpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOwotICAgICAgICAgICAgICAgICRpbkFwcGxlQ29w
eXJpZ2h0ID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
QXR0cmlidXRlID0gR2V0Q29uZGl0aW9uYWxGb3JPcGVyYXRpb25Db25zaWRlcmluZ092ZXJsb2Fk
cygkb3BlcmF0aW9uKTsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25k
aXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKLSAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7Ci0g
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tigke2Z1bmN0aW9uTmFtZX0pO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIH0KLQotICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29w
eXJpZ2h0OwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCJcbiIpOwotICAgIH0KLQotICAg
IGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMpIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwiLy8gQXR0cmlidXRlc1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVu
bGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVh
ZGVyfTsKLQotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKCR7Z2V0dGVy
fSk7XG4iKTsKLSAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewotICAg
ICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICJKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKCR7c2V0dGVyfSk7XG4iKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgfQotICAgIH0KLQogICAgICMgQ2hlY2tK
U0Nhc3QgU25pcHBldCBmdW5jdGlvbi4KICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RE9NSklUfSkgewogICAgICAgICAkaGVhZGVySW5jbHVkZXN7IjxKYXZhU2NyaXB0
Q29yZS9TbmlwcGV0Lmg+In0gPSAxOwpAQCAtNDMwNyw3ICs0MjU1LDYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIi8vIEZ1bmN0aW9uc1xu
XG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJh
dGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4
fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwotICAgICAgICAgICAgbmV4dCBp
ZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVy
fTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlv
bik7CiAgICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPm5hbWUgZXEgIltTeW1ib2wuSXRl
cmF0b3JdIjsKIApAQCAtNDM1Myw3ICs0MzAwLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJm
YWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5l
eHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRleCAyYTVhZGFkNDJjZDgxZGNkZThhNTZiOWJm
NTNkZGEyZDExNmM1YWQ1Li4yOWI2YjY5YTc5NzQ4NzBkMDY2ZjQyMTE0MDg2YjNjZGZmYThjN2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgpAQCAtMjIzLDkgKzIyMyw2IEBACiAgICAgICAgICAgICAgICAgInVybCI6ICJodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNFeHBvc2VkIgogICAgICAgICAgICAgfQogICAg
ICAgICB9LAotICAgICAgICAiRm9yd2FyZERlY2xhcmVJbkhlYWRlciI6IHsKLSAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQotICAgICAgICB9
LAogICAgICAgICAiR2VuZXJhdGVJc1JlYWNoYWJsZSI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiIiwgIklt
cGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIsICJJbXBs
RG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25lck5vZGVSb290IiwgIkltcGxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAiUmVhY2hh
YmxlRnJvbU5hdmlnYXRvciJdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggOGYzNjE2YjdjOGEzNjMyMGJmNGZi
OWFiYTAzMTAxOTI5YzcxYzJkZC4uYTFiNDlkZTM3NmE3NTg1ZDczYzFhMDMyM2UxNjNiZDVkMjM4
OTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNTAsNiArNTAsOCBAQAogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAKICNpZiBFTkFCTEUoV0VCR0wyKQorI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgorI2lu
Y2x1ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFy
cmF5T2JqZWN0LmgiCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCA1YWU4YTI3YTUxYTE4ZWRhMTFh
ZWY5ZTZlYzRkNzFlYzQwNzljNWMzLi4xM2U2NDk2ZTJlYTY1N2Q2YzY2YmIyNThmYTlkZjlkY2Vl
NzJkN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRy
YW5zZm9ybUZlZWRiYWNrLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJHTDIp
CiAjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgogCisjaW5jbHVkZSAiV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMQ29udGV4dEdyb3VwLmgiCi0jaW5j
bHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0Fic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKaW5kZXggZjAzNWEwNWE4ZTMwODM1NmZiODJm
MzBhYzY4ZjNiYTUxMWRlOTRkMS4uNjA1MWVkZDBiNWRiNzg3YzZmZmE0ZmQ1ZGVkZjgzZWM5Yjky
ZWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdMMikKIAot
I2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTFNoYXJl
ZE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDYgKzM5LDEwIEBAIGNsYXNzIEFi
c3RyYWN0TG9ja2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ7CitjbGFzcyBXZWJHTEJ1ZmZlcjsKK2NsYXNzIFdlYkdMUHJvZ3JhbTsKKwog
Y2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDY5ZGViYWY4MTZmMjc4ZTc0YjhkZjU0NTAw
NWI4ZWZkOGIwYzI3NmMuLmI4NTJlYmU0ZDIxYjdmMGViNDM2Mzk4MjhhNDZlZDFlNjEwMDhkZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTYyLDExICs2MiwxMSBAQAogICAgIFtS
ZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3Agc3RhdHVzYmFyOwogICAgIFtS
ZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEJhclByb3AgdG9vbGJhcjsKICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHN0YXR1czsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0
aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNs
b3NlKCk7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0g
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2xvc2VkOworICAgIFtEb05vdENoZWNrU2VjdXJp
dHksIENhbGxXaXRoPUluY3VtYmVudERvY3VtZW50XSB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICBb
RG9Ob3RDaGVja1NlY3VyaXR5XSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjbG9zZWQ7CiAg
ICAgdW5kZWZpbmVkIHN0b3AoKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1J
bmN1bWJlbnRXaW5kb3csIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5lZCBmb2N1cygp
OwotICAgIFtEb05vdENoZWNrU2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVm
aW5lZCBibHVyKCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ2FsbFdpdGg9SW5jdW1iZW50
V2luZG93XSB1bmRlZmluZWQgZm9jdXMoKTsKKyAgICBbRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRl
ZmluZWQgYmx1cigpOwogCiAgICAgLy8gb3RoZXIgYnJvd3NpbmcgY29udGV4dHMKICAgICBbUmVw
bGFjZWFibGUsIERvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyLCBDdXN0b21HZXR0ZXJdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBXaW5kb3dQcm94eSBmcmFtZXM7CkBAIC05MSw4ICs5MSw4IEBACiAgICAg
RE9NU3RyaW5nPyBwcm9tcHQob3B0aW9uYWwgRE9NU3RyaW5nIG1lc3NhZ2UgPSAiIiwgb3B0aW9u
YWwgRE9NU3RyaW5nIGRlZmF1bHRWYWx1ZSA9ICIiKTsKICAgICB1bmRlZmluZWQgcHJpbnQoKTsK
IAotICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHksIEZvcndhcmREZWNsYXJlSW5IZWFkZXIsIE1heVRocm93RXhjZXB0aW9uXSB1bmRl
ZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9w
dGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7Ci0gICAgW0NhbGxXaXRoPUds
b2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eSwgRm9yd2FyZERl
Y2xhcmVJbkhlYWRlciwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlvbnMpOwor
ICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93LCBEb05vdENoZWNrU2Vj
dXJpdHksIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3Nh
Z2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4sIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJh
bnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPUdsb2JhbE9iamVjdCZJbmN1bWJlbnRXaW5kb3cs
IERvTm90Q2hlY2tTZWN1cml0eSwgTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgV2luZG93UG9zdE1lc3NhZ2VPcHRpb25zIG9wdGlv
bnMpOwogCiAKICAgICAvLyBPYnNvbGV0ZTogU3RpbGwgcGFydCBvZiB0aGUgSFRNTCBzcGVjaWZp
Y2F0aW9uIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNXaW5kb3ctcGFydGlhbCkuCkBA
IC0xMTksNyArMTE5LDcgQEAKICAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9SU9TX0dF
U1RVUkVfRVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZ2VzdHVyZXN0YXJ0OwogCiAg
ICAgLy8gTm9uLXN0YW5kYXJkOiBUaGlzIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgSFRNTCBz
cGVjaWZpY2F0aW9uIGFuZCBieSBvdGhlciBicm93c2Vycy4KLSAgICBbQ3VzdG9tLCBGb3J3YXJk
RGVjbGFyZUluSGVhZGVyXSBhbnkgc2hvd01vZGFsRGlhbG9nKERPTVN0cmluZyB1cmwsIG9wdGlv
bmFsIGFueSBkaWFsb2dBcmdzLCBvcHRpb25hbCBET01TdHJpbmcgZmVhdHVyZUFyZ3MpOworICAg
IFtDdXN0b21dIGFueSBzaG93TW9kYWxEaWFsb2coRE9NU3RyaW5nIHVybCwgb3B0aW9uYWwgYW55
IGRpYWxvZ0FyZ3MsIG9wdGlvbmFsIERPTVN0cmluZyBmZWF0dXJlQXJncyk7CiAKICAgICAvLyBO
b24tc3RhbmRhcmQ6IHNob3VsZCBwcm9iYWJseSBkZXByZWNhdGUgdGhpcyAoaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjUzKS4KICAgICAvLyBCbGluayBhbHJlYWR5
IGRlcHJlY2F0ZWQgaXQgKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1
ZXMvZGV0YWlsP2lkPTQzNzU2OSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmlkbAppbmRleCA5YTJiNzQw
NDI3MzJhNzM1ZDI1ODZkZWE4ZjNkMzljODg4ZjRhZjExLi4yYTUzZWE5NmQ0ZDAxNDQ1N2RhNzBh
MDhlODJiZTMxMmUxZWM2NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3Rv
cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5pZGwKQEAgLTMzLDkgKzMz
LDkgQEAKICAgICBhdHRyaWJ1dGUgU2Nyb2xsUmVzdG9yYXRpb24gc2Nyb2xsUmVzdG9yYXRpb247
CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBzdGF0ZTsKIAotICAgIFtDYWxs
V2l0aD1Eb2N1bWVudCwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJhY2soKTsK
LSAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIEZvcndhcmREZWNsYXJlSW5IZWFkZXJdIHVuZGVmaW5l
ZCBmb3J3YXJkKCk7Ci0gICAgW0NhbGxXaXRoPURvY3VtZW50LCBGb3J3YXJkRGVjbGFyZUluSGVh
ZGVyXSB1bmRlZmluZWQgZ28ob3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOworICAgIFtDYWxsV2l0
aD1Eb2N1bWVudF0gdW5kZWZpbmVkIGJhY2soKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIHVu
ZGVmaW5lZCBmb3J3YXJkKCk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50XSB1bmRlZmluZWQgZ28o
b3B0aW9uYWwgbG9uZyBkZWx0YSA9IDApOwogCiAgICAgLy8gRklYTUU6IHRpdGxlIHNob3VsZCBu
b3QgYmUgbnVsbGFibGUgYXMgcGVyIHRoZSBIVE1MIHNwZWNpZmljYXRpb24uCiAgICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcHVzaFN0YXRlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBk
YXRhLCBET01TdHJpbmc/IHRpdGxlLCBvcHRpb25hbCBVU1ZTdHJpbmc/IHVybCA9IG51bGwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2F0aW9uLmlkbAppbmRleCA0NmQyMDA4ZDU2NjNmNzc3NDU4ZGRlMGE0ZGQw
OWMyMjNlZGJjNzc2Li5mODhhMDhjNjQ2ZmY3ZTA0MGZiNzcwNDE1ZDNkOGYyNTFkYzEyMDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbApAQCAtNDUsOSArNDUsOSBAQAogXSBpbnRlcmZhY2Ug
TG9jYXRpb24gewogICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3cs
IERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1dGUgVVNWU3Ry
aW5nIGhyZWY7CiAKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlU
aHJvd0V4Y2VwdGlvbiwgRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGFzc2lnbihV
U1ZTdHJpbmcgdXJsKTsKLSAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDYWxsV2l0aD1BY3RpdmVX
aW5kb3cmRmlyc3RXaW5kb3csIE1heVRocm93RXhjZXB0aW9uLCBGb3J3YXJkRGVjbGFyZUluSGVh
ZGVyXSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0
aXZlV2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgcmVsb2FkKCk7Cisg
ICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgTWF5VGhyb3dFeGNlcHRpb25d
IHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7CisgICAgW0RvTm90Q2hlY2tTZWN1cml0
eSwgQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dW5kZWZpbmVkIHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUFjdGl2ZVdp
bmRvd10gdW5kZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29tcG9zaXRpb24gYXR0
cmlidXRlcwogICAgIFtTZXR0ZXJDYWxsV2l0aD1BY3RpdmVXaW5kb3cmRmlyc3RXaW5kb3ddIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgcHJvdG9jb2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZURPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdp
bmRvdy5pZGwKaW5kZXggMTU0NjJmMzQ2MjJjNjA1NjNmYTBmNmUwNDljYzBkMzY4NjNlY2MxNC4u
MjUyM2MyMTIxYzZkZDgwMmQ4MDJlOTUyMjIyYjIzYmFmYjU0YjZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVtb3RlRE9NV2luZG93LmlkbApAQCAtNDYsMTQgKzQ2LDE0IEBACiAgICAgW0xlZ2Fj
eVVuZm9yZ2VhYmxlLCBJbXBsZW1lbnRlZEFzPXNlbGZdIHJlYWRvbmx5IGF0dHJpYnV0ZSBXaW5k
b3dQcm94eSB3aW5kb3c7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2lu
ZG93UHJveHkgc2VsZjsKICAgICBbUHV0Rm9yd2FyZHM9aHJlZiwgTGVnYWN5VW5mb3JnZWFibGVd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBMb2NhdGlvbj8gbG9jYXRpb247IC8vIEZJWE1FOiBTaG91bGQg
bm90IGJlIG51bGxhYmxlLgotICAgIFtDYWxsV2l0aD1JbmN1bWJlbnREb2N1bWVudCwgRm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGNsb3NlKCk7Ci0gICAgW0ZvcndhcmREZWNsYXJl
SW5IZWFkZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKLSAgICBbQ2FsbFdp
dGg9SW5jdW1iZW50V2luZG93LCBGb3J3YXJkRGVjbGFyZUluSGVhZGVyXSB1bmRlZmluZWQgZm9j
dXMoKTsKLSAgICBbRm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIGJsdXIoKTsKKyAg
ICBbQ2FsbFdpdGg9SW5jdW1iZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNsb3NlZDsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50
V2luZG93XSB1bmRlZmluZWQgZm9jdXMoKTsKKyAgICB1bmRlZmluZWQgYmx1cigpOwogICAgIFtS
ZXBsYWNlYWJsZSwgSW1wbGVtZW50ZWRBcz1zZWxmXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93
UHJveHkgZnJhbWVzOwogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOwogICAgIFtMZWdhY3lVbmZvcmdlYWJsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIFdpbmRvd1Byb3h5PyB0b3A7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdpbmRvd1Byb3h5
PyBvcGVuZXI7CiAgICAgW1JlcGxhY2VhYmxlXSByZWFkb25seSBhdHRyaWJ1dGUgV2luZG93UHJv
eHk/IHBhcmVudDsKLSAgICBbQ2FsbFdpdGg9R2xvYmFsT2JqZWN0JkluY3VtYmVudFdpbmRvdywg
Rm9yd2FyZERlY2xhcmVJbkhlYWRlcl0gdW5kZWZpbmVkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdl
LCBVU1ZTdHJpbmcgdGFyZ2V0T3JpZ2luLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5z
ZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QmSW5jdW1iZW50V2luZG93XSB1
bmRlZmluZWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIFVTVlN0cmluZyB0YXJnZXRPcmlnaW4s
IG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2QxNTg0NzQwMDQ3OWI3Yzk3
Li40ODBmZTk1ZDgyYjI5MTQ5NzlmYTA1OWI2NmI5M2U3MWE4Zjc4MTFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtOTIsMTUgKzkyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFBsCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5lIHZvaWQg
c2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9m
ZnNldEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIGlmICghb2Zmc2V0SW5m
bykgewotICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88ZmxvYXQ+KCkpOworICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRv
IGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhl
cmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KLSAgICBub2RlLnNl
dFNuYXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8ZmxvYXQ+KGRldmljZVNj
YWxlRmFjdG9yKSk7CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8ob2Zmc2V0SW5mby0+Y29u
dmVydFVuaXRzPGZsb2F0LCBGbG9hdFJlY3Q+KGRldmljZVNjYWxlRmFjdG9yKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5jcHAKaW5kZXggYWNmZWQwZjM4Mzc4ZWI0ZTJlYzJhNTFiNDEwMjhmNTIw
M2Q1N2NiNC4uMDEwMjFhNGNjM2ZkMDM0YjZkNjExMDRhMzIzNjM3NTI3MTY3MzE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uY3BwCkBAIC00MSw2OCArNDEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJl
c3RTbmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U2Nyb2xs
T2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCB1bnNpZ25lZCYgbG93
ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5
cGU+CitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4+IGZpbmRG
aXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKGNvbnN0IFZlY3Rv
cjxTbmFwT2Zmc2V0PFVuaXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBVbml0VHlwZSBzY3JvbGxPcmln
aW5PZmZzZXQsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIGlmIChz
bmFwT2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxp
ZFNuYXBPZmZzZXRJbmRleDsKLSAgICAgICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgbG93ZXJJbmRleEFzSW50
ID0gLTE7Ci0gICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgp
OwotICAgIGRvIHsKLSAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxvd2VySW5kZXhBc0ludCAr
IHVwcGVySW5kZXhBc0ludCkgLyAyOwotICAgICAgICBhdXRvJiByYW5nZSA9IHNuYXBPZmZzZXRS
YW5nZXNbbWlkZGxlSW5kZXhdOwotICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPCBvZmZzZXQgJiYg
b2Zmc2V0IDwgcmFuZ2UuZW5kKSB7Ci0gICAgICAgICAgICBsb3dlckluZGV4QXNJbnQgPSBtaWRk
bGVJbmRleDsKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zmc2V0ID4gcmFuZ2Uu
ZW5kKQotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgIH0g
d2hpbGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAtIDEpOwotCi0gICAgaWYg
KG9mZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQpCi0gICAgICAgIGxvd2Vy
SW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UKLSAgICAgICAgbG93ZXJJ
bmRleCA9IGxvd2VySW5kZXhBc0ludDsKLQotICAgIGlmIChvZmZzZXQgPj0gc25hcE9mZnNldFJh
bmdlcy5sYXN0KCkuZW5kKQotICAgICAgICB1cHBlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJ
bmRleDsKLSAgICBlbHNlCi0gICAgICAgIHVwcGVySW5kZXggPSB1cHBlckluZGV4QXNJbnQ7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHZvaWQgaW5kaWNlc09m
TmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U25hcE9m
ZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5z
aWduZWQmIHVwcGVySW5kZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRl
eCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBl
ckluZGV4IC0gMSkgewotICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVw
cGVySW5kZXgpIC8gMjsKLSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBzbmFwT2Zmc2V0c1tt
aWRkbGVJbmRleF0ub2Zmc2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09IG1pZGRsZU9mZnNldCkg
ewotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgbG93
ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAgICAgICAgbG93ZXJJbmRl
eCA9IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cHBlckluZGV4ID0g
bWlkZGxlSW5kZXg7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4K
LXN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVu
T3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+
JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNlID0g
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CisgICAgVW5pdFR5
cGUgZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0gc2Nyb2xsT3JpZ2luT2Zm
c2V0OwogICAgIGlmICghZGlmZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IApAQCAtMTEzLDcgKzU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RT
bmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICAgICAgaXRl
cmF0aW9uID0gLTE7CiAgICAgfQogCi0gICAgYXV0byBpc1Bhc3QgPSBbZGlmZmVyZW5jZV0oTGF5
b3V0VHlwZSBtYXJrLCBMYXlvdXRUeXBlIGNhbmRpZGF0ZSkgeworICAgIGF1dG8gaXNQYXN0ID0g
W2RpZmZlcmVuY2VdKFVuaXRUeXBlIG1hcmssIFVuaXRUeXBlIGNhbmRpZGF0ZSkgewogICAgICAg
ICByZXR1cm4gKGRpZmZlcmVuY2UgPiAwICYmIGNhbmRpZGF0ZSA+IG1hcmspIHx8IChkaWZmZXJl
bmNlIDwgMCAmJiBjYW5kaWRhdGUgPCBtYXJrKTsKICAgICB9OwogCkBAIC0xMjQsNjUgKzY2LDEy
IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3
ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGlmIChzbmFwT2Zmc2V0c1tpXS5z
dG9wICE9IFNjcm9sbFNuYXBTdG9wOjpBbHdheXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGlzUGFzdChzY3JvbGxPcmlnaW5PZmZzZXQsIG9mZnNldCkpCi0gICAgICAgICAg
ICByZXR1cm4gaTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgc3RkOjpwYWly
PExheW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5kUmFu
Z2VzKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9mZnNldHMsIGNv
bnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRSYW5n
ZXMsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxMYXlvdXRUeXBlPiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcp
Ci17Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4
KTsKLQotICAgIGlmIChvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFzVmFs
dWUoKSkgewotICAgICAgICBhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCA9IGZpbmRGaXJz
dFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKHNuYXBPZmZzZXRzLCAq
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCk7Ci0gICAgICAgIGlmIChmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXguaGFzVmFsdWUoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0c1sqZmlyc3RTbmFw
U3RvcE9mZnNldEluZGV4XS5vZmZzZXQsICpmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwotICAg
IH0KLQotICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7Ci0gICAgdW5zaWdu
ZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9m
ZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNl
dFJhbmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJ
bmRleCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zm
c2V0UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAgICBpZiAoc2Nyb2xsRGVz
dGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCwgMHUpOwotCi0g
ICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZz
ZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5sYXN0KCkub2Zm
c2V0LCBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxKTsKLQotICAgIHVuc2lnbmVkIGxvd2VySW5kZXg7
Ci0gICAgdW5zaWduZWQgdXBwZXJJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNl
dHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNuYXBPZmZzZXRzLCBsb3dl
ckluZGV4LCB1cHBlckluZGV4KTsKLSAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0g
c25hcE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwotICAgIExheW91dFR5cGUgdXBwZXJTbmFw
UG9zaXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7Ci0gICAgaWYgKCFzdGQ6
OmFicyh2ZWxvY2l0eSkpIHsKLSAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRp
b24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVwcGVy
U25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIHJldHVybiBp
c0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3Np
dGlvbiwgbG93ZXJJbmRleCkgOiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBw
ZXJJbmRleCk7Ci0gICAgfQotCi0gICAgLy8gTm9uLXplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEg
ZmxpY2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCB3ZSBz
aG91bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVy
ZQotICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2UgZG9lcyBub3Qg
bGllIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhlIHRhcmdldGVkIHNuYXAg
b2Zmc2V0LiBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0aW9uYWwKLSAgICAvLyBzbmFwcGluZywgd2Ug
c2hvdWxkIG5ldmVyIHNuYXAgdG8gYSBwb2ludCB0aGF0IHdhcyBvbiB0aGUgb3RoZXIgc2lkZSBv
ZiB0aGUgb3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiB0aGlz
IHNjcm9sbC4KLSAgICAvLyBUaGlzIGFsbG93cyBkaXJlY3Rpb25hbCBzY3JvbGxpbmcgdG8gZXNj
YXBlIHNuYXAgcG9pbnRzLgotICAgIGlmICh2ZWxvY2l0eSA8IDApIHsKLSAgICAgICAgaWYgKGxv
d2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCB8fCBsb3dl
clNuYXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNldFJhbmdlSW5k
ZXhdLmVuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3Np
dGlvbiwgbG93ZXJJbmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rp
b25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxT
bmFwcGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldElu
ZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uc3RhcnQg
Pj0gdXBwZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
dXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgICAgICBpZiAoIW9yaWdpbmFsT2Zm
c2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZv
ckRpcmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBp
bnZhbGlkU25hcE9mZnNldEluZGV4KTsKLX0KLQogZW51bSBjbGFzcyBJbnNldE9yT3V0c2V0IHsK
ICAgICBJbnNldCwKICAgICBPdXRzZXQKQEAgLTIxOSwzMCArMTA4LDYgQEAgc3RhdGljIExheW91
dFVuaXQgY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChMYXlvdXRVbml0IG1pbkxvY2F0aW9u
LCBMYXlvdXRVbmkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGltaXR5
U25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRVbml0Pj4mIHNu
YXBPZmZzZXRzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRS
YW5nZXMsIExheW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCi17Ci0gICAgLy8gVGhpcyBp
cyBhbiBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1p
dHkiIG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCi0gICAgLy8g
dGhpcyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0
aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7
Ci0gICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZzZXQgcmFuZ2VzIGlu
IGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRpYWwgc25hcCBvZmZz
ZXQKLSAgICAvLyBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgdXNlciBzY3JvbGxz
IHdpdGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNuYXAgb2Zmc2V0LCBzdWNo
IHRoYXQgdGhlCi0gICAgLy8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBpcyBzdGlsbCB3
aXRoaW4gcHJveGltaXR5IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhpcyBjYXNlLCB0aGUgcmVn
dWxhciAobWFuZGF0b3J5Ci0gICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBiZWhhdmlvciB3b3VsZCBi
ZSB0byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1vbWVudHVt
IHNjcm9sbGluZywgYnV0Ci0gICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9yZSBpbnR1aXRpdmUgdG8g
ZWl0aGVyIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbiAod2hpY2ggd2UgYXJi
aXRyYXJpbHkgY2hvb3NlIGhlcmUpCi0gICAgLy8gb3Igc2Nyb2xsIGp1c3Qgb3V0c2lkZSBvZiB0
aGUgc25hcCBvZmZzZXQgcmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5vciBiZWhhdmlvciB0d2Vh
ayB0aGF0IHdlIHNob3VsZCBwbGF5IGFyb3VuZAotICAgIC8vIHdpdGggdG8gc2VlIHdoYXQgZmVl
bHMgYmVzdC4KLSAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlIHsgcmF0aW9PZlNjcm9s
bFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhp
c0xlbmd0aCB9OwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBzbmFwT2Zmc2V0
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNuYXBPZmZz
ZXRzW2luZGV4IC0gMV0ub2Zmc2V0ICsgcHJveGltaXR5RGlzdGFuY2U7Ci0gICAgICAgIGF1dG8g
ZW5kT2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXhdLm9mZnNldCAtIHByb3hpbWl0eURpc3RhbmNl
OwotICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpCi0gICAgICAgICAgICBvZmZz
ZXRSYW5nZXMuYXBwZW5kKHsgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9KTsKLSAgICB9Ci19Ci0K
IHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29u
c3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9y
dFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKQogewogICAgIGF1dG8gc2Nyb2xsU25hcFR5cGUg
PSBzY3JvbGxpbmdFbGVtZW50U3R5bGUuc2Nyb2xsU25hcFR5cGUoKTsKQEAgLTI2Miw2ICsxMjcs
NyBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBSZQogCiAgICAgSGFzaE1hcDxmbG9hdCwgU25hcE9m
ZnNldDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsKICAgICBIYXNoTWFwPGZs
b2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNNYXA7Cisg
ICAgVmVjdG9yPExheW91dFJlY3Q+IHNuYXBBcmVhczsKICAgICBib29sIGhhc0hvcml6b250YWxT
bmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OkJvdGgg
fHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WEF4aXMgfHwgc2Nyb2xs
U25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6SW5saW5lOwogICAgIGJvb2wgaGFzVmVy
dGljYWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6
OkJvdGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WUF4aXMgfHwg
c2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6QmxvY2s7CiAKQEAgLTI4OCwx
NyArMTU0LDI5IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAKICAgICAgICAgc2Nyb2xsU25h
cEFyZWEgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNjcm9sbFNuYXBBcmVhLCBj
aGlsZC0+c3R5bGUoKS5zY3JvbGxNYXJnaW4oKSwgSW5zZXRPck91dHNldDo6T3V0c2V0KTsKICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiICAgIENvbnNpZGVy
aW5nIHNjcm9sbCBzbmFwIHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25hcEFyZWEpOworCiAgICAg
ICAgIGF1dG8gYWxpZ25tZW50ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xsU25hcEFsaWduKCk7Cisg
ICAgICAgIGJvb2wgc25hcHNIb3Jpem9udGFsbHkgPSBoYXNIb3Jpem9udGFsU25hcE9mZnNldHMg
JiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7CisgICAgICAg
IGJvb2wgc25hcHNWZXJ0aWNhbGx5ID0gaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1l
bnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAgICAgICAgaWYgKCFzbmFw
c0hvcml6b250YWxseSAmJiAhc25hcHNWZXJ0aWNhbGx5KQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgLy8gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGVmaW5lZCB2aWEgaXRzIHNj
cm9sbCBwb3NpdGlvbiwgc28gY29udmVydCBldmVyeXRoaW5nIHRvIHNjcm9sbCBvZmZldHNzIGhl
cmUuCisgICAgICAgIGF1dG8gc25hcEFyZWFPcmlnaW5SZWxhdGl2ZVRvQm9yZGVyRWRnZSA9IHNj
cm9sbFNuYXBBcmVhLmxvY2F0aW9uKCkgLSBzY3JvbGxTbmFwUG9ydC5sb2NhdGlvbigpOworICAg
ICAgICBMYXlvdXRSZWN0IHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKHNjcm9sbGFibGVBcmVhLnNj
cm9sbE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoc25hcEFyZWFPcmlnaW5SZWxh
dGl2ZVRvQm9yZGVyRWRnZSkpLCBzY3JvbGxTbmFwQXJlYS5zaXplKCkpOworICAgICAgICBzbmFw
QXJlYXMuYXBwZW5kKHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKTsKKyAgICAgICAgdW5zaWduZWQg
c25hcEFyZWFJbmRleCA9IHNuYXBBcmVhcy5zaXplKCkgLSAxOworCiAgICAgICAgIGF1dG8gc3Rv
cCA9IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBTdG9wKCk7Ci0gICAgICAgIGlmIChoYXNIb3Jp
em9udGFsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5
cGU6Ok5vbmUpIHsKKyAgICAgICAgaWYgKHNuYXBzSG9yaXpvbnRhbGx5KSB7CiAgICAgICAgICAg
ICBhdXRvIGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9m
ZnNldChzY3JvbGxTbmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLm1heFgoKSwgYWxpZ25tZW50
LngsIHNjcm9sbGVySXNSVEwpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxT
bmFwUG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVy
SXNSVEwpOwogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88
aW50PihzY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyByb3VuZFRvSW50
KGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uKSwgMCB9KS54KCksIDAsIG1heFNjcm9sbE9mZnNldC54
KCkpOwotICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFs
U25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAg
ICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxTbmFwT2Zmc2V0c01h
cCwgeyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwgc25hcEFyZWFJbmRleCB9KTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueSAh
PSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoc25hcHNWZXJ0
aWNhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9uID0gY29t
cHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9sbFNuYXBB
cmVhLm1heFkoKSwgYWxpZ25tZW50LnksIGZhbHNlKSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25P
ZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIGFsaWdubWVu
dC55LCBmYWxzZSk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xh
bXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IDAsIHJv
dW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zm
c2V0LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRp
Y2FsU25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAg
ICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2FsU25hcE9mZnNldHNN
YXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AsIHNuYXBBcmVhSW5kZXggfSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTMwOCwzMiArMTg2LDI1IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0
IFJlCiAgICAgfTsKIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9u
dGFsU25hcE9mZnNldHMgPSBjb3B5VG9WZWN0b3IoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwLnZh
bHVlcygpKTsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIGlmICghaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmlz
RW1wdHkoKSkgewogICAgICAgICBzdGQ6OnNvcnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmJlZ2lu
KCksIGhvcml6b250YWxTbmFwT2Zmc2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAg
ICAgICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5l
c3M6OlByb3hpbWl0eSkKLSAgICAgICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNl
dFJhbmdlcyhob3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
LCBzY3JvbGxTbmFwUG9ydC53aWR0aCgpKTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsU25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBv
ZmZzZXRzOiAiIDw8IGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9s
bCBzbmFwIG9mZnNldCByYW5nZXM6ICIgPDwgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOwog
ICAgIH0KIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBP
ZmZzZXRzID0gY29weVRvVmVjdG9yKHZlcnRpY2FsU25hcE9mZnNldHNNYXAudmFsdWVzKCkpOwot
ICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzOwogICAgIGlmICghdmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgc3RkOjpzb3J0KHZlcnRpY2FsU25hcE9mZnNldHMuYmVnaW4oKSwgdmVydGljYWxTbmFw
T2Zmc2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAgICAgICAgaWYgKHNjcm9sbFNu
YXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKLSAg
ICAgICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyh2ZXJ0aWNhbFNu
YXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbFNuYXBQb3J0LmhlaWdo
dCgpKTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIg
PT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogIiA8PCB2ZXJ0aWNhbFNu
YXBPZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8
PCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICIgPDwg
dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9CiAKKyAgICBpZiAoIXNuYXBBcmVhcy5p
c0VtcHR5KCkpCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwg
IiA9PiBDb21wdXRlZCBzbmFwIGFyZWFzOiAiIDw8IHNuYXBBcmVhcyk7CisKICAgICBzY3JvbGxh
YmxlQXJlYS5zZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyh7CisgICAgICAgIHNjcm9sbFNuYXBUeXBl
LnN0cmljdG5lc3MsCiAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0cywKICAgICAgICAgdmVy
dGljYWxTbmFwT2Zmc2V0cywKLSAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCi0g
ICAgICAgIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcworICAgICAgICBzbmFwQXJlYXMsCiAgICAg
fSk7CiB9CiAKQEAgLTM0Nyw1NyArMjE4LDE3OSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb252ZXJ0
T2Zmc2V0VW5pdChmbG9hdCBpbnB1dCwgZmxvYXQgLyogc2NhbGVGYWN0b3IgKi8pCiAgICAgcmV0
dXJuIExheW91dFVuaXQoaW5wdXQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRUeXBl
LCB0eXBlbmFtZSBPdXRwdXRUeXBlPgotc3RhdGljIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRw
dXRUeXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88SW5w
dXRUeXBlPiYgaW5wdXQsIGZsb2F0IHNjYWxlRmFjdG9yID0gMC4wKQordGVtcGxhdGUgPHR5cGVu
YW1lIElucHV0VHlwZSwgdHlwZW5hbWUgSW5wdXRSZWN0VHlwZSwgdHlwZW5hbWUgT3V0cHV0VHlw
ZSwgdHlwZW5hbWUgT3V0cHV0UmVjdFR5cGU+CitzdGF0aWMgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PE91dHB1dFR5cGUsIE91dHB1dFJlY3RUeXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88SW5wdXRUeXBlLCBJbnB1dFJlY3RUeXBlPiYgaW5wdXQsIGZsb2F0
IHNjYWxlRmFjdG9yID0gMC4wKQogewogICAgIGF1dG8gY29udmVydE9mZnNldHMgPSBbc2NhbGVG
YWN0b3JdKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PElucHV0VHlwZT4+JiBpbnB1dCkKICAgICB7
CiAgICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+PiBvdXRwdXQ7CiAgICAgICAg
IG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7CiAgICAgICAgIGZv
ciAoYXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBw
ZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVGYWN0b3IpLCBvZmZz
ZXQuc3RvcCB9KTsKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoeyBjb252ZXJ0
T2Zmc2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3RvciksIG9mZnNldC5zdG9wLCBvZmZz
ZXQuc25hcEFyZWFJbmRleCB9KTsKICAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICB9OwogCi0g
ICAgYXV0byBjb252ZXJ0T2Zmc2V0UmFuZ2VzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8
U2Nyb2xsT2Zmc2V0UmFuZ2U8SW5wdXRUeXBlPj4mIGlucHV0KQorICAgIGF1dG8gY29udmVydFJl
Y3RzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8SW5wdXRSZWN0VHlwZT4mIGlucHV0KQog
ICAgIHsKLSAgICAgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPE91dHB1dFR5cGU+PiBvdXRw
dXQ7CisgICAgICAgIFZlY3RvcjxPdXRwdXRSZWN0VHlwZT4gb3V0cHV0OwogICAgICAgICBvdXRw
dXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dC5zaXplKCkpOwotICAgICAgICBmb3IgKGF1
dG8mIHJhbmdlIDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHsg
Y29udmVydE9mZnNldFVuaXQocmFuZ2Uuc3RhcnQsIHNjYWxlRmFjdG9yKSwgY29udmVydE9mZnNl
dFVuaXQocmFuZ2UuZW5kLCBzY2FsZUZhY3RvcikgfSk7CisgICAgICAgIGZvciAoYXV0byYgcmVj
dCA6IGlucHV0KSB7CisgICAgICAgICAgICBPdXRwdXRSZWN0VHlwZSBvdXRwdXRSZWN0KAorICAg
ICAgICAgICAgICAgIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QueCgpLCBzY2FsZUZhY3RvciksIGNv
bnZlcnRPZmZzZXRVbml0KHJlY3QueSgpLCBzY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAg
Y29udmVydE9mZnNldFVuaXQocmVjdC53aWR0aCgpLCBzY2FsZUZhY3RvciksIGNvbnZlcnRPZmZz
ZXRVbml0KHJlY3QuaGVpZ2h0KCksIHNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKG91dHB1dFJlY3QpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBv
dXRwdXQ7CiAgICAgfTsKIAogICAgIHJldHVybiB7CisgICAgICAgIGlucHV0LnN0cmljdG5lc3Ms
CiAgICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0cyksCiAg
ICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0LnZlcnRpY2FsU25hcE9mZnNldHMpLAotICAgICAg
ICBjb252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSwK
LSAgICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMpCisgICAgICAgIGNvbnZlcnRSZWN0cyhpbnB1dC5zbmFwQXJlYXMpLAogICAgIH07CiB9CiAK
IHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5p
dD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVu
dXNlZFNjYWxlRmFjdG9yICovKSBjb25zdAorTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvIEZs
b2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2VkU2Nh
bGVGYWN0b3IgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0
LCBMYXlvdXRVbml0PigqdGhpcyk7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0
LCBGbG9hdFJlY3QsIExheW91dFVuaXQsIExheW91dFJlY3Q+KCp0aGlzKTsKIH0KIAogdGVtcGxh
dGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4gU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpIGNvbnN0CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QK
IHsKLSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0VW5pdCwgZmxvYXQ+KCp0aGlz
LCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPExheW91
dFVuaXQsIExheW91dFJlY3QsIGZsb2F0LCBGbG9hdFJlY3Q+KCp0aGlzLCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CiB9CiAKLXRlbXBsYXRlIDw+Ci1zdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGly
ZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlw
ZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWF4Rm9yQXhpcyhSZWN0VHlwZSByZWN0
LCBTY3JvbGxFdmVudEF4aXMgYXhpcykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRX
aXRoT2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9yQXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9y
QXhpcyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBv
c2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcmVjdC5tYXhYKCkgOiByZWN0Lm1heFkoKTsKIH0KIAot
dGVtcGxhdGUgPD4KLXN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9h
dCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0
PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRl
IDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUg
bWluRm9yQXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4aXMgYXhpcykKK3sKKyAgICBy
ZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByZWN0LngoKSA6IHJl
Y3QueSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+CitzdGF0aWMgYm9vbCBp
c05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShTY3JvbGxTbmFwU3RyaWN0bmVzcyBzdHJp
Y3RuZXNzLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbiwgVW5pdFR5cGUgY2FuZGlkYXRlU25h
cE9mZnNldCwgVW5pdFR5cGUgdmlld3BvcnRMZW5ndGgpCit7CisgICAgaWYgKHN0cmljdG5lc3Mg
IT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFyeSBjaG9pY2UgZm9yIHdoYXQgaXQgbWVhbnMg
dG8gYmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFwIG9mZnNldC4gV2Ugc2hvdWxkIHBsYXkgYXJv
dW5kIHdpdGgKKyAgICAvLyB0aGlzIGFuZCBzZWUgd2hhdCBmZWVscyBiZXN0LgorICAgIHN0YXRp
YyBjb25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZv
clByb3hpbWl0eSA9IDAuMzsKKyAgICByZXR1cm4gc3RkOjphYnMoZmxvYXQge2NhbmRpZGF0ZVNu
YXBPZmZzZXQgLSBzY3JvbGxEZXN0aW5hdGlvbn0pIDw9ICh2aWV3cG9ydExlbmd0aCAqIHJhdGlv
T2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5KTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZSwgdHlwZW5hbWUg
U2l6ZVR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4gY2FsY3VsYXRl
Q2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPFVuaXRUeXBlLCBS
ZWN0VHlwZT4mIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmll
d3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2Np
dHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbE9mZnNldCkKK3sKKyAgICBjb25zdCBhdXRv
JiBzbmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CisgICAgYXV0byBwYWly
Rm9yTm9TbmFwcGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBp
bnZhbGlkU25hcE9mZnNldEluZGV4KTsKKyAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisKKyAgICAvLyBUaGUgZmlyc3Qgc25h
cCBwb2ludCB3aXRoIGBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXNgIGJldHdlZW4gdGhlIG9yaWdp
bmFsIHBvc2l0aW9uIGFuZCBkZXN0aW5hdGlvbiB0YWtlcyBwcmVjZWRlbmNlLgorICAgIGlmIChv
cmlnaW5hbE9mZnNldCkgeworICAgICAgICBpZiAoYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0ID0g
ZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oc25hcE9m
ZnNldHMsICpvcmlnaW5hbE9mZnNldCwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQorICAgICAg
ICAgICAgcmV0dXJuICpmaXJzdFNuYXBTdG9wT2Zmc2V0OworICAgIH0KKworICAgIGF1dG8gdmll
d3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHZpZXdw
b3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgpOworICAgIGJvb2wgbGFuZGVk
SW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCA9IGZhbHNlOworICAgIE9wdGlvbmFs
PHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91cywgbmV4dDsKKyAgICBPcHRp
b25hbDxSZWN0VHlwZT4gcHJldmlvdXNTbmFwQXJlYSwgbmV4dFNuYXBBcmVhOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzbmFwT2Zmc2V0cy5zaXplKCk7IGkrKykgeworICAgICAgICBj
b25zdCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3NuYXBPZmZzZXRzW2ldLnNuYXBB
cmVhSW5kZXhdOworICAgICAgICBsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdw
b3J0IHw9IChtaW5Gb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwgYXhpcykgPD0gc2Nyb2xsRGVz
dGluYXRpb25PZmZzZXQgJiYgbWF4Rm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIGF4aXMpID49
IChzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCArIHZpZXdwb3J0TGVuZ3RoKSk7CisgICAgICAgIC8v
IElmIHRoZSBzY3JvbGwgbGFuZGVkIGV4YWN0bHkgb24gYSBzbmFwIG9mZnNldCwgY2hvb3NlIHRo
YXQgb25lLgorICAgICAgICBVbml0VHlwZSBwb3RlbnRpYWxTbmFwT2Zmc2V0ID0gc25hcE9mZnNl
dHNbaV0ub2Zmc2V0OworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA9PSBzY3JvbGxE
ZXN0aW5hdGlvbk9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihwb3Rl
bnRpYWxTbmFwT2Zmc2V0LCBpKTsKKworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA8
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBwcmV2aW91cyA9IHN0ZDo6
bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAgcHJldmlvdXNT
bmFwQXJlYSA9IHNuYXBBcmVhOworICAgICAgICB9IGVsc2UgaWYgKCFuZXh0ICYmIHBvdGVudGlh
bFNuYXBPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkgeworICAgICAgICAgICAgbmV4
dCA9IHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAg
bmV4dFNuYXBBcmVhID0gc25hcEFyZWE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGcm9t
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nyb2xsLXNuYXAtMS8jc25hcC1vdmVyZmxvdwor
ICAgIC8vICJJZiB0aGUgc25hcCBhcmVhIGlzIGxhcmdlciB0aGFuIHRoZSBzbmFwcG9ydCBpbiBh
IHBhcnRpY3VsYXIgYXhpcywgdGhlbiBhbnkgc2Nyb2xsIHBvc2l0aW9uCisgICAgLy8gaW4gd2hp
Y2ggdGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0LCBhbmQgdGhlIGRpc3RhbmNlIGJl
dHdlZW4gdGhlIGdlb21ldHJpY2FsbHkKKyAgICAvLyBwcmV2aW91cyBhbmQgc3Vic2VxdWVudCBz
bmFwIHBvc2l0aW9ucyBpbiB0aGF0IGF4aXMgaXMgbGFyZ2VyIHRoYW4gc2l6ZSBvZiB0aGUgc25h
cHBvcnQgaW4KKyAgICAvLyB0aGF0IGF4aXMsIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiBpbiB0
aGF0IGF4aXMuIFRoZSBVQSBtYXkgdXNlIHRoZSBzcGVjaWZpZWQgYWxpZ25tZW50IGFzIGEKKyAg
ICAvLyBtb3JlIHByZWNpc2UgdGFyZ2V0IGZvciBjZXJ0YWluIHNjcm9sbCBvcGVyYXRpb25zIChl
LmcuIGV4cGxpY2l0IHBhZ2luZykuIgorICAgIGlmIChsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRD
b25zdW1lc1ZpZXdwb3J0ICYmICghcHJldmlvdXMgfHwgIW5leHQgfHwgKCgqbmV4dCkuZmlyc3Qg
LSAoKnByZXZpb3VzKS5maXJzdCkgPj0gdmlld3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4g
cGFpckZvck5vU25hcHBpbmc7CisKKyAgICBpZiAob3JpZ2luYWxPZmZzZXQpIHsKKyAgICAgICAg
Ly8gSWYgdGhpcyBpcyBhIGRpcmVjdGlvbmFsIHNjcm9sbCBhbmQgdGhlcmUgYXJlIG5vIHNjcm9s
bCBzdG9wcyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLAorICAgICAgICAvLyBkb24ndCBzY3Jv
bGwgcGFzdCB0aGUgZWRnZSBvZiB0aGUgc2Nyb2xsIGFyZWEuCisgICAgICAgIGlmICghbmV4dCAm
JiBwcmV2aW91cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om1heCgo
KnByZXZpb3VzKS5maXJzdCwgbWF4Rm9yQXhpczxVbml0VHlwZT4oKnByZXZpb3VzU25hcEFyZWEs
IGF4aXMpIC0gdmlld3BvcnRMZW5ndGgpLCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKKyAgICAg
ICAgaWYgKCFwcmV2aW91cyAmJiBuZXh0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKG1pbkZvckF4aXM8VW5pdFR5cGU+KCpuZXh0U25hcEFyZWEsIGF4aXMpLCBpbnZhbGlkU25h
cE9mZnNldEluZGV4KTsKKworICAgICAgICAvLyBGcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3Mtc2Nyb2xsLXNuYXAtMS8jY2hvb3NpbmcKKyAgICAgICAgLy8gIlVzZXIgYWdlbnRzIG11c3Qg
ZW5zdXJlIHRoYXQgYSB1c2VyIGNhbiDigJxlc2NhcGXigJ0gYSBzbmFwIHBvc2l0aW9uLCByZWdh
cmRsZXNzIG9mIHRoZSBzY3JvbGwKKyAgICAgICAgLy8gbWV0aG9kLiBGb3IgZXhhbXBsZSwgaWYg
dGhlIHNuYXAgdHlwZSBpcyBtYW5kYXRvcnkgYW5kIHRoZSBuZXh0IHNuYXAgcG9zaXRpb24gaXMg
bW9yZSB0aGFuCisgICAgICAgIC8vIHR3byBzY3JlZW4td2lkdGhzIGF3YXksIGEgbmHDr3ZlIOKA
nGFsd2F5cyBzbmFwIHRvIG5lYXJlc3TigJ0gc2VsZWN0aW9uIGFsZ29yaXRobSBtaWdodCDigJx0
cmFw4oCdIHRoZQorICAgICAgICAvLyB1c2VyIGlmIHRoZWlyIGVuZCBwb3NpdGlvbiB3YXMgb25s
eSBvbmUgc2NyZWVuLXdpZHRoIGF3YXkuIEluc3RlYWQsIGEgc21hcnRlciBhbGdvcml0aG0gdGhh
dAorICAgICAgICAvLyBvbmx5IHJldHVybmVkIHRvIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9u
IGlmIHRoZSBlbmQtcG9pbnQgd2FzIGEgZmFpcmx5IHNtYWxsIGRpc3RhbmNlIGZyb20KKyAgICAg
ICAgLy8gaXQsIGFuZCBvdGhlcndpc2UgaWdub3JlZCB0aGUgc3RhcnRpbmcgc25hcCBwb3NpdGlv
biwgd291bGQgZ2l2ZSBiZXR0ZXIgYmVoYXZpb3IuIgorICAgICAgICAvLyBXZSBvbmx5IGRvIHRo
aXMgaWYgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGFyZSBjaG9vc2luZyBiZXR3ZWVu
IHR3byBjb21wYXRpYmxlCisgICAgICAgIC8vIHNuYXAgb2Zmc2V0cy4KKyAgICAgICAgaWYgKCpv
cmlnaW5hbE9mZnNldCA8IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmICgqcHJldmlvdXMpLmZp
cnN0IDw9ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIHByZXZpb3VzLnJlc2V0KCk7Cisg
ICAgICAgIGlmICgqb3JpZ2luYWxPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAmJiAo
Km5leHQpLmZpcnN0ID49ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIG5leHQucmVzZXQo
KTsKKyAgICB9CisKKyAgICBpZiAobmV4dCAmJiAhaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94
aW1pdHkoaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgKCpuZXh0KS5m
aXJzdCwgdmlld3BvcnRMZW5ndGgpKQorICAgICAgICBuZXh0LnJlc2V0KCk7CisgICAgaWYgKHBy
ZXZpb3VzICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShpbmZvLnN0cmljdG5l
c3MsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKnByZXZpb3VzKS5maXJzdCwgdmlld3BvcnRM
ZW5ndGgpKQorICAgICAgICBwcmV2aW91cy5yZXNldCgpOworCisgICAgLy8gSWYgd2UgZG9uJ3Qg
aGF2ZSBjb21wYXRpYmxlIG9mZnNldHMgdG8gY2hvb3NlIGJldHdlZW4sIGp1c3QgZG8gdGhlIG9i
dmlvdXMgdGhpbmcKKyAgICAvLyBhbmQgZG8gbm8gc25hcHBpbmcgb3Igb25seSBzZWxlY3QgdGhl
IHNpbmdsZSBjb21wYXRpYmxlIG9mZnNldC4KKyAgICBpZiAoIXByZXZpb3VzICYmICFuZXh0KQor
ICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisgICAgaWYgKCFwcmV2aW91cykKKyAg
ICAgICAgcmV0dXJuICpuZXh0OworICAgIGlmICghbmV4dCkKKyAgICAgICAgcmV0dXJuICpwcmV2
aW91czsKKworICAgIC8vIElmIHRoaXMgc2Nyb2xsIGlzbid0IGRpcmVjdGlvbmFsLCB0aGVuIGNo
b29zZSB3aGF0ZXZlciBzbmFwIHBvaW50IGlzIGNsb3Nlci4KKyAgICBVbml0VHlwZSBwcmV2aW91
c1NuYXBPZmZzZXQgPSAoKnByZXZpb3VzKS5maXJzdDsKKyAgICBVbml0VHlwZSBuZXh0U25hcE9m
ZnNldCA9ICgqbmV4dCkuZmlyc3Q7CisgICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKKyAg
ICAgICAgYm9vbCBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXggPSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCAtIHByZXZpb3VzU25hcE9mZnNldCA8PSBuZXh0U25hcE9mZnNldCAtIHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0OworICAgICAgICByZXR1cm4gaXNDbG9zZXJUb1ByZXZpb3VzU25hcElu
ZGV4ID8gKnByZXZpb3VzIDogKm5leHQ7CisgICAgfQorCisgICAgLy8gRmluYWxseSwgaWYgd2Ug
aGF2ZSBhIGRpcmVjdGlvbmFsIHNjcm9sbCBwcmVmZXIgdGhlIHNuYXAgcG9pbnQgdGhhdCBpcyBp
biB0aGUgc2Nyb2xsIGRpcmVjdGlvbi4KKyAgICByZXR1cm4gdmVsb2NpdHkgPCAwID8gKnByZXZp
b3VzIDogKm5leHQ7Cit9CisKKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxM
YXlvdXRVbml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0
U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3Bv
cnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0
eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBw
aW5nKSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxMYXlv
dXRVbml0LCBMYXlvdXRSZWN0LCBMYXlvdXRTaXplPigqdGhpcywgYXhpcywgdmlld3BvcnRTaXpl
LCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0Rm9yRGly
ZWN0aW9uYWxTbmFwcGluZyk7Cit9CisKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CitzdGQ6OnBh
aXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNu
YXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRT
aXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlv
bmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMob2Zmc2V0
c0ZvckF4aXMoYXhpcyksIG9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBp
bmcpOworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxmbG9hdCwgRmxvYXRS
ZWN0LCBGbG9hdFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5n
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAyMGE2NDdmZWExMmM2Y2M4YjU1NTc5YzUxYmQwYTM2
MDVmZGNlNWU2Li5iOTkyYmFmZTA3N2M3NjJmNTJlZThkNGI3YjRkMDFkMzA0NzQ0ZmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaApAQCAtMjcsNiArMjcsMTAgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIkxh
eW91dFVuaXQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlN0eWxlU2Ny
b2xsU25hcFBvaW50cy5oIgpAQCAtMzUsMzkgKzM5LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgUmVu
ZGVyQm94OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgordGVt
cGxhdGUgPHR5cGVuYW1lIE9mZnNldFR5cGU+CiBzdHJ1Y3QgU25hcE9mZnNldCB7Ci0gICAgVCBv
ZmZzZXQ7CisgICAgT2Zmc2V0VHlwZSBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsK
KyAgICB1bnNpZ25lZCBzbmFwQXJlYUluZGV4OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewotICAgIFQgc3RhcnQ7Ci0gICAgVCBlbmQ7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBl
LCB0eXBlbmFtZSBSZWN0VHlwZT4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBWZWN0b3I8U25hcE9mZnNldDxU
Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxTbmFwT2Zmc2V0PFQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3M7CiAK
LSAgICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSByYW5nZXMgb2Yg
c2Nyb2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVyIHNjcm9sbCBz
bmFwcGluZy4KLSAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgxKSBmb3IgcHJv
eGltaXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMgYmV0d2VlbiBh
ZGphY2VudCBzbmFwIG9mZnNldHMKLSAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNldCByYW5nZXMs
IGFuZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0
aGUgc25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCi0gICAgLy8gd2hlcmUgdGhlIHNuYXAg
cG9ydCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRvIGJlIHZhbGlk
IHNuYXAgcG9zaXRpb25zLgotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpv
bnRhbFNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlw
ZT4+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRU
eXBlPj4gdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8UmVjdFR5cGU+IHNuYXBBcmVh
czsKIAotICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90
aGVyKSBjb25zdAorICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
T2Zmc2V0VHlwZSwgUmVjdFR5cGU+JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBob3Jpem9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYm
IHZlcnRpY2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzOworICAgICAgICByZXR1cm4gc3RyaWN0bmVzcyA9PSBvdGhlci5zdHJpY3RuZXNzICYm
IGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldHMgJiYg
dmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZzZXRzICYmIHNuYXBB
cmVhcyA9PSBvdGhlci5zbmFwQXJlYXM7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKQEAgLTc1LDI5ICs2OSwyNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAg
ICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxT
bmFwT2Zmc2V0cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNuYXBPZmZzZXQ8VD4+
IG9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIFZlY3RvcjxT
bmFwT2Zmc2V0PE9mZnNldFR5cGU+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhp
cykgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6
VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwog
ICAgIH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gb2Zmc2V0UmFuZ2VzRm9y
QXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
eGlzID09IFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMgOiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdXRwdXRUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29u
dmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8VCwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9s
bEV2ZW50QXhpcywgVCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9w
dGlvbmFsPFQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpu
dWxsb3B0KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlLCB0eXBlbmFt
ZSBPdXRwdXRSZWN0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1
dFJlY3RUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNv
bnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8T2Zmc2V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgT2Zmc2V0VHlwZSBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPE9mZnNldFR5cGU+IG9yaWdp
bmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0KSBjb25zdDsK
IH07CiAKK3VzaW5nIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsKK3VzaW5nIEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OworCiB0
ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVz
ZWRTY2FsZUZhY3RvciAqLykgY29uc3Q7Ci10ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xv
c2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9y
RGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8g
RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRT
Y2FsZUZhY3RvciAqLykgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorV0VCQ09SRV9F
WFBPUlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2
aWV3cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0
eSwgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5n
KSBjb25zdDsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMo
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQ
T1JUIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIExheW91dFVu
aXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlv
dXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNv
bnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0
ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVk
PiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
b3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBjb25zdCB1
bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTEwNiw3ICs5
OCw3IEBAIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsK
IC8vIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBkYXRlU25h
cE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJlbmRlckJv
eCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1l
bnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKTsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2V0PFQ+IG9mZnNldCkKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBPZmZzZXRUeXBlPiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiB0cywgU25hcE9mZnNldDxPZmZzZXRUeXBlPiBvZmZzZXQpCiB7CiAgICAgdHMgPDwgb2Zmc2V0
Lm9mZnNldDsKICAgICBpZiAob2Zmc2V0LnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykK
QEAgLTExNCwxMyArMTA2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKICAgICByZXR1cm4g
dHM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxUPiYgcmFuZ2UpCi17Ci0gICAg
dHMgPDwgInN0YXJ0OiAiIDw8IHJhbmdlLnN0YXJ0IDw8ICIgZW5kOiAiIDw8IHJhbmdlLmVuZDsK
LSAgICByZXR1cm4gdHM7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
ZjQwODE5YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkwNTk4NzVmODBlMS4uODQzMjg4MWM4OWYxNmM1
N2I0Njc0YzI0YmI0YTk4Mzg2ZDdhYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBA
IC0xNTcsNyArMTU3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNj
cm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
bmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykK
K3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29u
c3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9m
ZnNldHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdiNDE2NDA0NC4uYzVk
NzYzOWNmMWNhZTBjN2UwMzdmYzM1OTlmMjI1ODFiYWFkYWJlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlLmgKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZz
ZXRzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0PiYgbmV3T2Zmc2V0c0luZm8pOworICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRz
SW5mbzsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdPZmZzZXRzSW5mbyk7CiAKICAgICB1bnNp
Z25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
IG1fc25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25h
cE9mZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4
IHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYzI4
YzA4Mjg4MzFhNThjMjJmM2M1MWNlNjdkMTBlNy4uOGI2MzRlMWFkNjRmMjQxOWJmMmJhOTA4NDMx
YzgzN2M5N2Q2ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzI3LDcgKzMyNyw3
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQotY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Citjb25zdCBGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbyYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5m
bygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKaW5kZXggYmU0OWQwYjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNi4u
NTViY2VkM2UwZTYxMjEwNmQ5M2Y4NTJlZWY3ZDQ2NDIxMDUyNTQzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTY3JvbGxi
YXJzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRh
bFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQ
YXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0K
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHVuc2ln
bmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0g
aW5kZXg7IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9j
dXJyZW50U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
IG1fc25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25h
cE9mZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4
IHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCmluZGV4IGE1YjQ4YzIwMzQxNWFiN2IwOWNlOWMzZmE5OWMxNWVhNjM3NDBlNDUu
LjNlMjQ1NzRhYjAwZWZmNDVlMGY4Y2ExMGYxMzA4NTFhODFhZWE3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0
YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCi0gICAgICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zm
c2V0c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CisgICAgICAgIG1fc2Nyb2xs
Q29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFw
T2Zmc2V0c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKSk7CiAK
ICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKaW5kZXggNjRjODQzYjU5NzUyNDY0YWNmN2Y3NDRiNWJiZTU3OGIyN2Q0
OGY4NC4uYWMyYzIyOThmYjM0NzBkN2MyNDkzM2FlOWFlNjUxMDBiZjJmOGIzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtODEsMTggKzgxLDE5IEBA
IFNjcm9sbEFuaW1hdG9yOjp+U2Nyb2xsQW5pbWF0b3IoKQogI2VuZGlmCiB9CiAKLWJvb2wgU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIs
IFNjcm9sbEJlaGF2aW9yIGJlaGF2aW9yKQorYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgT3B0aW9uU2V0PFNjcm9sbEJlaGF2
aW9yPiBiZWhhdmlvcikKIHsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmIChi
ZWhhdmlvciA9PSBTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKSB7CisgICAg
aWYgKGJlaGF2aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBp
bmcpKSB7CiAgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbE9m
ZnNldEZyb21Qb3NpdGlvbihwb3NpdGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0
aXBsaWVyKSwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSkpOwog
ICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNl
dCgpOworICAgICAgICBiZWhhdmlvci5yZW1vdmUoU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9u
YWxTbmFwcGluZyk7CiAgICAgICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSB7CiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0WChtX3Njcm9sbENvbnRyb2xsZXIuYWRq
dXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZz
ZXQueCgpLCBtdWx0aXBsaWVyLCBjdXJyZW50T2Zmc2V0LngoKSkpOwotICAgICAgICAgICAgcmV0
dXJuIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgbmV3T2Zmc2V0Lngo
KSAtIGN1cnJlbnRPZmZzZXQueCgpLCAxLjApOworICAgICAgICAgICAgcmV0dXJuIHNjcm9sbChI
b3Jpem9udGFsU2Nyb2xsYmFyLCBncmFudWxhcml0eSwgbmV3T2Zmc2V0LngoKSAtIGN1cnJlbnRP
ZmZzZXQueCgpLCAxLjAsIGJlaGF2aW9yKTsKICAgICAgICAgfQogICAgICAgICBuZXdPZmZzZXQu
c2V0WShtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgbmV3T2Zmc2V0LnkoKSwgbXVsdGlwbGllciwgY3VycmVudE9mZnNl
dC55KCkpKTsKLSAgICAgICAgcmV0dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVs
YXJpdHksIG5ld09mZnNldC55KCkgLSBjdXJyZW50T2Zmc2V0LnkoKSwgMS4wKTsKKyAgICAgICAg
cmV0dXJuIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgZ3JhbnVsYXJpdHksIG5ld09mZnNldC55
KCkgLSBjdXJyZW50T2Zmc2V0LnkoKSwgMS4wLCBiZWhhdmlvcik7CiAgICAgfQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZ3JhbnVsYXJpdHkpOwpAQCAtMTAwLDcgKzEwMSw3IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Ny
b2xsR3JhbnVsYXJpdHkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFu
aW1hdG9yRW5hYmxlZCgpKSB7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKCkgJiYgIWJlaGF2aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFu
aW1hdGUpKSB7CiAgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24o
bV9jdXJyZW50UG9zaXRpb24pOwogICAgICAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRpb24tPnNj
cm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwogICAgIH0K
QEAgLTE2MCwxMCArMTYxLDYgQEAgRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6cG9zaXRpb25G
cm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgZmwKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAjaWYgUExBVEZPUk0oTUFDKQotYm9vbCBTY3JvbGxBbmltYXRv
cjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLnByb2Nlc3NX
aGVlbEV2ZW50Rm9yU2Nyb2xsU25hcCh3aGVlbEV2ZW50KTsKLX0KICNlbmRpZgogCiBib29sIFNj
cm9sbEFuaW1hdG9yOjphY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdApAQCAt
MTc5LDEwICsxNzYsMTEgQEAgdW5zaWduZWQgU2Nyb2xsQW5pbWF0b3I6OmFjdGl2ZVNjcm9sbFNu
YXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnMKIAogYm9vbCBTY3JvbGxB
bmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiB7
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkgJiYgUExBVEZPUk0oTUFDKQotICAgIGlmICht
X3Njcm9sbENvbnRyb2xsZXIucHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGUpKQorI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCisgICAgaWYgKHByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcChlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAvLyBFdmVudHMgaW4gdGhlIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpN
YXlCZWdpbiBwaGFzZSBoYXZlIG5vIGRlbHRhcywgYW5kIHRoZXJlZm9yZSBuZXZlciBwYXNzZXMg
dGhyb3VnaCB0aGUgc2Nyb2xsIGhhbmRsaW5nIGxvZ2ljIGJlbG93LgogICAgIC8vIFRoaXMgY2F1
c2VzIHVzIHRvIHJldHVybiB3aXRoIGFuICd1bmhhbmRsZWQnIHJldHVybiBzdGF0ZSwgZXZlbiB0
aG91Z2ggdGhpcyBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC4KQEAgLTIwMyw3ICsy
MDEsNiBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgZSkKIAogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogCi0gICAgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsOwogICAgIEludFNpemUg
bWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKTsKICAgICBJbnRTaXpl
IG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbFBvc2l0aW9u
KCkgLSBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpOwogICAgIGlmICgo
ZGVsdGFYIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSA+IDApCkBAIC0yMTIs
NiArMjA5LDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBtYXhCYWNr
d2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkpIHsKICAgICAgICAgaGFuZGxlZCA9IHRydWU7
CiAKKyAgICAgICAgT3B0aW9uU2V0PFNjcm9sbEJlaGF2aW9yPiBiZWhhdmlvcihTY3JvbGxCZWhh
dmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICAgICAgaWYgKGUuaGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcygpKQorICAgICAgICAgICAgYmVoYXZpb3IuYWRkKFNjcm9sbEJlaGF2aW9y
OjpOZXZlckFuaW1hdGUpOworCiAgICAgICAgIGlmIChkZWx0YVkpIHsKICAgICAgICAgICAgIGlm
IChlLmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewogICAgICAgICAg
ICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwpAQCAtMjE5LDEwICsyMjAsNyBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZSkKICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAg
ICAgIGRlbHRhWSA9IC1kZWx0YVk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZS5o
YXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsVG9Qb3Np
dGlvbldpdGhvdXRBbmltYXRpb24ocG9zaXRpb25Gcm9tU3RlcChWZXJ0aWNhbFNjcm9sbGJhciwg
dmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgc2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBncmFudWxhcml0
eSwgdmVydGljYWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZKTsKKyAgICAgICAgICAg
IHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgdmVydGljYWxTY3JvbGxi
YXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZLCBiZWhhdmlvcik7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoZGVsdGFYKSB7CkBAIC0yMzIsMTAgKzIzMCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICAg
ICAgICAgIGlmIChuZWdhdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWRlbHRh
WDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlLmhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlv
bihwb3NpdGlvbkZyb21TdGVwKEhvcml6b250YWxTY3JvbGxiYXIsIGhvcml6b250YWxTY3JvbGxi
YXItPnBpeGVsU3RlcCgpLCAtZGVsdGFYKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc2Nyb2xsKEhvcml6b250YWxTY3JvbGxiYXIsIGdyYW51bGFyaXR5LCBob3Jpem9udGFs
U2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCk7CisgICAgICAgICAgICBzY3JvbGwoSG9y
aXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgaG9yaXpvbnRhbFNjcm9sbGJhci0+cGl4
ZWxTdGVwKCksIC1kZWx0YVgsIGJlaGF2aW9yKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gaGFuZGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4
IDZlYjE0MDY3N2QxMzhiZWQwNTRlNmU3MGYxMGIzZjE4Njg1Yjg4ZDguLmU5Nzc5ZDExYWUxN2My
MDUyNWZiZjVkZmQ0MDA3OTcxZDk5MGRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuaApAQCAtNjksMTUgKzY5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
Y3JvbGxBbmltYXRvcigpOwogCiAgICAgZW51bSBTY3JvbGxCZWhhdmlvciB7Ci0gICAgICAgIERl
ZmF1bHQsCi0gICAgICAgIERvRGlyZWN0aW9uYWxTbmFwcGluZywKKyAgICAgICAgRGVmYXVsdCA9
IDAsCisgICAgICAgIERvRGlyZWN0aW9uYWxTbmFwcGluZyA9IDEgPDwgMSwKKyAgICAgICAgTmV2
ZXJBbmltYXRlID0gMSA8PCAyLAogICAgIH07CiAKICAgICAvLyBDb21wdXRlcyBhIHNjcm9sbCBk
ZXN0aW5hdGlvbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnMuICBSZXR1cm5zIGZhbHNlIGlmCiAg
ICAgLy8gYWxyZWFkeSBhdCB0aGUgZGVzdGluYXRpb24uICBPdGhlcndpc2UsIHN0YXJ0cyBzY3Jv
bGxpbmcgdG93YXJkcyB0aGUKICAgICAvLyBkZXN0aW5hdGlvbiBhbmQgcmV0dXJucyB0cnVlLiAg
U2Nyb2xsaW5nIG1heSBiZSBpbW1lZGlhdGUgb3IgYW5pbWF0ZWQuCiAgICAgLy8gVGhlIGJhc2Ug
Y2xhc3MgaW1wbGVtZW50YXRpb24gYWx3YXlzIHNjcm9sbHMgaW1tZWRpYXRlbHksIG5ldmVyIGFu
aW1hdGVzLgotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNj
cm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBTY3JvbGxCZWhh
dmlvciA9IFNjcm9sbEJlaGF2aW9yOjpEZWZhdWx0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xs
KFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxv
YXQgbXVsdGlwbGllciwgT3B0aW9uU2V0PFNjcm9sbEJlaGF2aW9yPik7CiAKICAgICBib29sIHNj
cm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsQ2xh
bXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7CiAgICAgdmlydHVhbCBib29sIHNjcm9s
bFRvUG9zaXRpb25XaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBT
Y3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKTsKQEAgLTE0OSw5ICsxNTAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotI2VuZGlmCisgICAgdmlydHVhbCBib29sIHByb2Nl
c3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CiAgICAgYm9v
bCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBh
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCmluZGV4IGMzZWM2YzQ0
MWQzMTJmNTg1MmJiZDZmMmI0OTBlMjdjYjVlMzEzYWUuLjY1NTAwZDEwZmVmMzgxMDc0MjJlMjlm
Yjk5YzA1NmUwNjEyNWRiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENv
bnRyb2xsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBk
YXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAg
ICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygqc25hcE9mZnNldEluZm8pOwogfQogCi12b2lkIFNj
cm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zmc2V0SW5mbykKK3ZvaWQgU2Nyb2xsQ29udHJv
bGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mIHNuYXBPZmZzZXRJbmZvKQogewogICAgIGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5
KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBudWxscHRyOwpAQCAtMTE1LDggKzEx
NSw4IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZv
ckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzCiAgICAgICAgIHJldHVybjsKIAogICAgIExh
eW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zm
c2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCksIHNuYXBPZmZz
ZXRzLmxhc3QoKS5vZmZzZXQpOwotCi0gICAgdW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3Rh
dGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCBjbGFtcGVkT2Zmc2V0
LCAwKS5zZWNvbmQ7CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3Bv
cnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAg
IHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2Vz
dFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7
CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhp
cykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM3LDcgKzEzNyw5IEBAIGZsb2F0IFNjcm9sbENv
bnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBm
bG9hdCBkZXN0CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRJbkxheW91
dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9mZnNldC5oYXNWYWx1ZSgpKQogICAgICAgICBvcmln
aW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KCpvcmlnaW5hbE9mZnNldCAvIG1f
Y2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBT
dGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQo
ZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5
LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpLmZpcnN0OworCisgICAgTGF5b3V0U2l6ZSB2
aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRl
LnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBM
YXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkp
LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJzdDsKICAgICByZXR1
cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAppbmRleCBkOTI1ZmQ0NTU4NGMwMTExYzll
ZjBjMjg5MWY3Yzc1MTY2MTBlYjdiLi5kZDUzYWRhOTBhMmY1ZjI5MDg4MDEwMjNjM2U1YTNjNDMx
ZWY2MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCkBA
IC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2Vk
KCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xs
U25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mKTsKKyAg
ICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvJik7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpcywgdW5zaWduZWQpOwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGlj
ZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0KTsKICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRl
eERpZENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hh
bmdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZS5jcHAKaW5kZXggN2Q2OGQ1MGRkZTc2ZTg5MDk2Y2QzZTU4ZjNmYzM5MWZmYzY3MTc3
Yy4uMWVlNzQxNjdiODE5ODNmNDcwMmQ4MzZhNmY5NzcwNzcyNDcyMDkxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAt
NTEsOCArNTEsOCBAQCB2b2lkIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlv
bkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNh
bGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNp
emUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxv
Y2l0eSk7CiAgICAgYXV0byBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3Vs
YXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZz
ZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxP
ZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0
aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRP
ZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0
aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRp
YWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwg
aW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRh
cmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0
U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0Lndp
ZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4
WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0
KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVp
Z2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0
ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgp
LCBtX2FjdGl2ZVNuYXBJbmRleFkpOwogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAg
ICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRl
ID0gc3RhdGU7CkBAIC05MSwxMCArOTEsMTEgQEAgRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAg
ICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRp
bWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFy
Z2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNj
cm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFw
SW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0
Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9h
dCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1
bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdAogewogICAgIExheW91dFVuaXQgcHJv
cG9zZWRPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJ
bmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRV
bml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxEZWx0YSk7CisgICAgTGF5
b3V0U2l6ZSB2aWV3cG9ydExheW91dFNpemUodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0
U2l6ZS5oZWlnaHQoKSk7CisgICAgc3RkOjp0aWUocHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNu
YXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3
cG9ydExheW91dFNpemUsIExheW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwg
aW5pdGlhbERlbHRhKTsKICAgICBpZiAob3V0QWN0aXZlU25hcEluZGV4ICE9IGludmFsaWRTbmFw
T2Zmc2V0SW5kZXgpCiAgICAgICAgIHJldHVybiBwYWdlU2NhbGUgKiBwcm9wb3NlZE9mZnNldDsK
ICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3RhcnRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNl
dCk7CkBAIC0xMDUsMTEgKzEwNiw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJiBzdGF0ZSkKICAgICB0cyA8PCAi
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZz
ZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgeSIsIHN0YXRlLnNuYXBP
ZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0gICAgaWYgKCFzdGF0
ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLmlz
RW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHgi
LCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBPZmZzZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFw
IG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAgICB0cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFw
IGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWN0aXZlIHNuYXAgaW5kZXggeSIs
IHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0NGM2MzliNGFmZjBjMjQyNjk1ODIxNDk5Li42YjZk
MjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2NjVkNjE0Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTU3LDI0ICs1Nyw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jp
em9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzIDogbV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0czsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fc25hcE9mZnNldHNJbmZvLmhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5m
bzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsg
fQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBz
bmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYg
c25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0gICAgICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpv
bnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRz
SW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9IHNuYXBPZmZzZXRSYW5nZXM7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFwT2Zmc2V0UmFuZ2VzOwotICAgICAgICB9Ci0gICAg
fQorICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8o
KSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9m
ZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdJbmZvKSB7IG1f
c25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQogCiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJl
bnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFN0YXRlOyB9CiAKQEAgLTEwMCwxMyAr
ODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVk
U3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNl
dChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZz
ZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFs
RGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRh
cmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVs
dGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRv
d25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmlt
YXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3Rh
dGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9Owog
Ci0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IG1fc25hcE9mZnNldHNJbmZv
OworICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKIAog
ICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4WCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2Fj
dGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4u
MTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZhNTkxNjk2MWY2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDc5LDE5ICs0NzksMTkgQEAgU3Ry
aW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNv
bnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkK
K0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBP
ZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9z
bmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPExheW91dFNj
cm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAgICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwog
fQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVB
cmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0Citjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgpOwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpz
ZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5m
byhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKGlu
Zm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFyU25hcE9mZnNldHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDdlYjdiNTQwMjgyODQwYWI3YjVmMzFm
ZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzljZGI3ZjY3OTM5OGE3Yzg3NzMxMmVkNDk3YzE2ZmU4
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtOTEsOSAr
OTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzU2Nyb2xsU25hcCgpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRJbmZvKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zm
c2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIHsg
fTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAgIHZvaWQgc2V0U2Nyb2xsU25hcE9mZnNldEluZm8o
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgdm9pZCBjbGVhclNuYXBP
ZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAg
IHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkg
eyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPSBpbmRleDsgfQpAQCAtMzg1LDgg
KzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5p
bWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
ICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJ
bmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZv
JiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAppbmRleCA2NDliNGNmNTQ0NTA5
OGEzMzEyMjgzODUwYjUxNzJjYTFjZDMyNzhiLi40YTVlM2YyZTJmOTZkNmU1NThjZmEzZmRiMWE3
MjllY2VjYjViNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIFRpbWVyIG1fc2Vu
ZENvbnRlbnRBcmVhU2Nyb2xsZWRUaW1lcjsKICAgICBGbG9hdFNpemUgbV9jb250ZW50QXJlYVNj
cm9sbGVkVGltZXJTY3JvbGxEZWx0YTsKIAotICAgIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVu
dGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwg
U2Nyb2xsQmVoYXZpb3IpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVu
dGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwg
T3B0aW9uU2V0PFNjcm9sbEJlaGF2aW9yPikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzY3JvbGxUb1Bv
c2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCkgb3ZlcnJpZGU7
CiAKQEAgLTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBob3Jpem9udGFsU2Ny
b2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHZlcnRpY2Fs
U2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgZmluYWw7CiAKKyAgICBib29sIHByb2Nl
c3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVy
cmlkZTsKKwogICAgIC8vIFNjcm9sbENvbnRyb2xsZXJDbGllbnQuCiAjaWYgRU5BQkxFKFJVQkJF
Ul9CQU5ESU5HKQogICAgIEludFNpemUgc3RyZXRjaEFtb3VudCgpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4
IDhlMDBiZDcxOGJmNTBiNjM0ZDhiMjk2NjY4Y2NkZWI1YmM4NDI5ZWUuLmQ0NTIxZDY1OGMzM2Zh
ZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTc1MSwxNiArNzUxLDE3IEBAIHN0YXRp
YyBib29sIHJ1YmJlckJhbmRpbmdFbmFibGVkRm9yU3lzdGVtKCkKIH0KICNlbmRpZgogCi1ib29s
IFNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0
aXBsaWVyLCBTY3JvbGxCZWhhdmlvciBiZWhhdmlvcikKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6
OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIsIE9wdGlvblNldDxT
Y3JvbGxCZWhhdmlvcj4gYmVoYXZpb3IpCiB7CiAgICAgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VM
b2FkID0gdHJ1ZTsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGRvZXNuJ3QgZG8gZGlyZWN0aW9uYWwg
c25hcHBpbmcsIGJ1dCBvdXIgYmFzZSBjbGFzcyBkb2VzLiBJdCB3aWxsIGNhbGwgaW50bwogICAg
IC8vIFNjcm9sbEFuaW1hdG9yTWFjOjpzY3JvbGwgYWdhaW4gd2l0aCB0aGUgc25hcHBlZCBwb3Np
dGlvbnMgYW5kIFNjcm9sbEJlaGF2aW9yOjpEZWZhdWx0LgotICAgIGlmIChiZWhhdmlvciA9PSBT
Y3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKQorICAgIGlmIChiZWhhdmlvci5j
b250YWlucyhTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKSkKICAgICAgICAg
cmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBz
dGVwLCBtdWx0aXBsaWVyLCBiZWhhdmlvcik7CiAKLSAgICBib29sIHNob3VsZEFuaW1hdGUgPSBz
Y3JvbGxBbmltYXRpb25FbmFibGVkRm9yU3lzdGVtKCkgJiYgbV9zY3JvbGxhYmxlQXJlYS5zY3Jv
bGxBbmltYXRvckVuYWJsZWQoKSAmJiBncmFudWxhcml0eSAhPSBTY3JvbGxCeVBpeGVsOworICAg
IGJvb2wgc2hvdWxkQW5pbWF0ZSA9IHNjcm9sbEFuaW1hdGlvbkVuYWJsZWRGb3JTeXN0ZW0oKSAm
JiBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYmIGdyYW51bGFyaXR5
ICE9IFNjcm9sbEJ5UGl4ZWwKKyAgICAgICAgJiYgIWJlaGF2aW9yLmNvbnRhaW5zKFNjcm9sbEJl
aGF2aW9yOjpOZXZlckFuaW1hdGUpOwogICAgIEZsb2F0UG9pbnQgbmV3UG9zaXRpb24gPSBwb3Np
dGlvbkZyb21TdGVwKG9yaWVudGF0aW9uLCBzdGVwLCBtdWx0aXBsaWVyKTsKICAgICBuZXdQb3Np
dGlvbiA9IG5ld1Bvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihzY3JvbGxhYmxlQXJlYSgpLm1p
bmltdW1TY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxhYmxlQXJlYSgpLm1heGltdW1TY3JvbGxQb3Np
dGlvbigpKTsKIApAQCAtMTI3Nyw3ICsxMjc4LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6
aXNQaW5uZWRGb3JTY3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLXN0YXRpYyBib29sIGdlc3R1cmVTaG91bGRC
ZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxFdmVu
dEF4aXMgYXhpcywgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBvZmZz
ZXRJbmZvKQorc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJlZ2luU25hcChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9mZnNldEluZm8pCiB7CiAgICAgaWYgKCFvZmZzZXRJ
bmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAwLDYgKzE1MDEsMTEgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJl
Y3QmIHNjcm9sbGVyVGh1bWIKICAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9IHJlY3RJ
blZpZXdDb29yZGluYXRlczsKIH0KIAorYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6cHJvY2Vzc1do
ZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLnByb2Nlc3NXaGVlbEV2ZW50Rm9y
U2Nyb2xsU25hcCh3aGVlbEV2ZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9tYWMvTWVudVV0aWxpdGllcy5tbQppbmRleCBjZGE4YjBlOTAyYzY0ZmM0NGZjN2M4YzMwMGU1
Y2I5NGJiN2RiOTZmLi4xMmY1ZDIyYTY5MDllN2VlOTM4ZjdmZDljMjZkZjdlNjc3MWNkMTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9NZW51VXRpbGl0aWVzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL01lbnVVdGlsaXRpZXMubW0KQEAgLTQ5LDYg
KzQ5LDI5IEBAIE5TU3RyaW5nICptZW51SXRlbVRpdGxlRm9yVGVsZXBob25lTnVtYmVyR3JvdXAo
KQogICAgIHJldHVybiBbZ2V0VFVDYWxsQ2xhc3MoKSBzdXBwbGVtZW50YWxEaWFsVGVsZXBob255
Q2FsbFN0cmluZ107CiB9CiAKKyNpZiBIQVZFKERBVEFfREVURUNUT1JTX01BQ19BQ1RJT04pCitz
dGF0aWMgRERNYWNBY3Rpb24gKmFjdGlvbkZvck1lbnVJdGVtKE5TTWVudUl0ZW0gKml0ZW0pCisj
ZWxzZQorc3RhdGljIEREQWN0aW9uICphY3Rpb25Gb3JNZW51SXRlbShOU01lbnVJdGVtICppdGVt
KQorI2VuZGlmCit7CisgICAgTlNEaWN0aW9uYXJ5ICpyZXByZXNlbnRlZE9iamVjdCA9IGl0ZW0u
cmVwcmVzZW50ZWRPYmplY3Q7CisgICAgaWYgKCFbcmVwcmVzZW50ZWRPYmplY3QgaXNLaW5kT2ZD
bGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBp
ZCBhY3Rpb24gPSBbcmVwcmVzZW50ZWRPYmplY3Qgb2JqZWN0Rm9yS2V5OkAiRERBY3Rpb24iXTsK
KworI2lmIEhBVkUoREFUQV9ERVRFQ1RPUlNfTUFDX0FDVElPTikKKyAgICBpZiAoIVthY3Rpb24g
aXNLaW5kT2ZDbGFzczpnZXRERE1hY0FjdGlvbkNsYXNzKCldKQorICAgICAgICByZXR1cm4gbmls
OworI2Vsc2UKKyAgICBpZiAoIVthY3Rpb24gaXNLaW5kT2ZDbGFzczpnZXREREFjdGlvbkNsYXNz
KCldKQorICAgICAgICByZXR1cm4gbmlsOworI2VuZGlmCisKKyAgICByZXR1cm4gYWN0aW9uOwor
fQorCiBOU01lbnVJdGVtICptZW51SXRlbUZvclRlbGVwaG9uZU51bWJlcihjb25zdCBTdHJpbmcm
IHRlbGVwaG9uZU51bWJlcikKIHsKICAgICBpZiAoIURhdGFEZXRlY3RvcnNMaWJyYXJ5KCkpCkBA
IC01OSwxNSArODIsOCBAQCBOU01lbnVJdGVtICptZW51SXRlbUZvclRlbGVwaG9uZU51bWJlcihj
b25zdCBTdHJpbmcmIHRlbGVwaG9uZU51bWJlcikKIAogICAgIE5TQXJyYXkgKnByb3Bvc2VkTWVu
dUl0ZW1zID0gW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBtZW51
SXRlbXNGb3JWYWx1ZTooTlNTdHJpbmcgKil0ZWxlcGhvbmVOdW1iZXIgdHlwZTpnZXREREJpbmRl
clBob25lTnVtYmVyS2V5KCkgc2VydmljZTpuaWwgY29udGV4dDphY3Rpb25Db250ZXh0LmdldCgp
XTsKICAgICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gcHJvcG9zZWRNZW51SXRlbXMpIHsKLSAg
ICAgICAgTlNEaWN0aW9uYXJ5ICpyZXByZXNlbnRlZE9iamVjdCA9IGl0ZW0ucmVwcmVzZW50ZWRP
YmplY3Q7Ci0gICAgICAgIGlmICghW3JlcHJlc2VudGVkT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05T
RGljdGlvbmFyeSBjbGFzc11dKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgRERB
Y3Rpb24gKmFjdGlvbk9iamVjdCA9IFtyZXByZXNlbnRlZE9iamVjdCBvYmplY3RGb3JLZXk6QCJE
REFjdGlvbiJdOwotICAgICAgICBpZiAoIVthY3Rpb25PYmplY3QgaXNLaW5kT2ZDbGFzczpnZXRE
REFjdGlvbkNsYXNzKCldKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKFth
Y3Rpb25PYmplY3QuYWN0aW9uVVRJIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5kaWFsIl0pIHsKKyAg
ICAgICAgYXV0byBhY3Rpb24gPSBhY3Rpb25Gb3JNZW51SXRlbShpdGVtKTsKKyAgICAgICAgaWYg
KFthY3Rpb24uYWN0aW9uVVRJIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5kaWFsIl0pIHsKICAgICAg
ICAgICAgIGl0ZW0udGl0bGUgPSBmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyh0ZWxlcGhvbmVO
dW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIH0KQEAgLTkwLDE3ICsx
MDYsMTAgQEAgUmV0YWluUHRyPE5TTWVudT4gbWVudUZvclRlbGVwaG9uZU51bWJlcihjb25zdCBT
dHJpbmcmIHRlbGVwaG9uZU51bWJlcikKIAogICAgIE5TQXJyYXkgKnByb3Bvc2VkTWVudUl0ZW1z
ID0gW1tnZXREREFjdGlvbnNNYW5hZ2VyQ2xhc3MoKSBzaGFyZWRNYW5hZ2VyXSBtZW51SXRlbXNG
b3JWYWx1ZTooTlNTdHJpbmcgKil0ZWxlcGhvbmVOdW1iZXIgdHlwZTpnZXREREJpbmRlclBob25l
TnVtYmVyS2V5KCkgc2VydmljZTpuaWwgY29udGV4dDphY3Rpb25Db250ZXh0LmdldCgpXTsKICAg
ICBmb3IgKE5TTWVudUl0ZW0gKml0ZW0gaW4gcHJvcG9zZWRNZW51SXRlbXMpIHsKLSAgICAgICAg
TlNEaWN0aW9uYXJ5ICpyZXByZXNlbnRlZE9iamVjdCA9IGl0ZW0ucmVwcmVzZW50ZWRPYmplY3Q7
Ci0gICAgICAgIGlmICghW3JlcHJlc2VudGVkT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlv
bmFyeSBjbGFzc11dKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgRERBY3Rpb24g
KmFjdGlvbk9iamVjdCA9IFtyZXByZXNlbnRlZE9iamVjdCBvYmplY3RGb3JLZXk6QCJEREFjdGlv
biJdOwotICAgICAgICBpZiAoIVthY3Rpb25PYmplY3QgaXNLaW5kT2ZDbGFzczpnZXREREFjdGlv
bkNsYXNzKCldKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKFthY3Rpb25P
YmplY3QuYWN0aW9uVVRJIGhhc1ByZWZpeDpAImNvbS5hcHBsZS5kaWFsIl0pCisgICAgICAgIGF1
dG8gYWN0aW9uID0gYWN0aW9uRm9yTWVudUl0ZW0oaXRlbSk7CisgICAgICAgIGlmIChbYWN0aW9u
LmFjdGlvblVUSSBoYXNQcmVmaXg6QCJjb20uYXBwbGUuZGlhbCJdKQogICAgICAgICAgICAgZGlh
bEl0ZW0gPSBpdGVtOwotICAgICAgICBlbHNlIGlmIChbYWN0aW9uT2JqZWN0LmFjdGlvblVUSSBo
YXNQcmVmaXg6QCJjb20uYXBwbGUuZmFjZXRpbWUiXSkKKyAgICAgICAgZWxzZSBpZiAoW2FjdGlv
bi5hY3Rpb25VVEkgaGFzUHJlZml4OkAiY29tLmFwcGxlLmZhY2V0aW1lIl0pCiAgICAgICAgICAg
ICBbZmFjZVRpbWVJdGVtcyBhZGRPYmplY3Q6aXRlbV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggM2UzODBm
ZDE0NWQ3MjI1YmFjMDU3MzMwYzE5ZDZjYTg4YTBlMGNkMi4uNTIzYWY0NDIyZTMyNWM0MjYyYjky
ZjViN2NlZTMzOWUzMjMwY2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtOTgsOSArOTgsOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlcXVlc3RlZFNjcm9sbERhdGE+IHsKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZXF1ZXN0ZWRTY3JvbGxEYXRh
Jik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxmbG9hdD4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+
Jik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyYpOworICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiB9OwogCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+PiB7CkBAIC0z
MTEsNyArMzExLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24sIEZs
b2F0UG9pbnQsIHNldFNjcm9sbFBvc2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUo
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0
U2Nyb2xsT3JpZ2luKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0lu
Zm8sIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4sIHNldFNuYXBPZmZzZXRzSW5mbyk7Cisg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNu
YXBPZmZzZXRzSW5mbywgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8sIHNldFNuYXBPZmZzZXRz
SW5mbyk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RF
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJ
bmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRp
ZgpAQCAtNTQ0LDIzICs1NDQsMjAgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8Zmxv
YXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKIH0KIAogCi12
b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZv
KQordm9pZCBBcmd1bWVudENvZGVyPEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZv
KQogewogICAgIGVuY29kZXIgPDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgZW5j
b2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNldHM7Ci0gICAgZW5jb2RlciA8PCBpbmZvLmhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXM7CisgICAgZW5jb2RlciA8PCBpbmZvLnNuYXBBcmVhczsKIH0KIAotYm9v
bCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK2Jvb2wg
QXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5m
by5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc25hcEFyZWFzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzhkZDlkMzFlNmM3Y2Y3OTQ5NTZlNzczMGIxMDdk
ZTQ5NDdhNGI4Ny4uODdlNGQ0NjBlZTNlNDFjYzc5ODY5NjRjMzE0ODVlZDM1NmYwZDdiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0y
ODA1LDMyICsyODA1LDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVu
dElkZW50aWZpZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2UKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbE9m
ZnNldFJhbmdlPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4mIHJhbmdlKQotewotICAgIGVuY29kZXIgPDwgcmFuZ2Uuc3RhcnQ7
Ci0gICAgZW5jb2RlciA8PCByYW5nZS5lbmQ7Ci19Ci0KLWF1dG8gQXJndW1lbnRDb2RlcjxTY3Jv
bGxPZmZzZXRSYW5nZTxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PgotewotICAgIFdlYkNvcmU6OlNj
cm9sbE9mZnNldFJhbmdlPGZsb2F0PiByYW5nZTsKLSAgICBmbG9hdCBzdGFydDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIGZsb2F0IGVuZDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVuZCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByYW5nZS5zdGFydCA9IHN0YXJ0OwotICAgIHJhbmdl
LmVuZCA9IGVuZDsKLSAgICByZXR1cm4gcmFuZ2U7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgTWVkaWFTZWxlY3Rpb25PcHRpb24mIG9wdGlvbikKIHsKICAgICBlbmNvZGVyIDw8IG9w
dGlvbi5kaXNwbGF5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggOTI4ZGE3NTYwYzNlODliZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4u
ZTNlYmQzM2MwZTY5Y2MyMzRmMWM2ZDU4MTRlN2I0Nzc5ZmE2NmY2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc0MywxNSArNzQzLDYgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyPiB7CiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiYpOwotICAgIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IGRlY29kZShEZWNvZGVyJik7Ci19
OwotCi0jZW5kaWYKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpN
ZWRpYVNlbGVjdGlvbk9wdGlvbj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24mKTsKICAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IGRlY29kZShEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0KaW5kZXggMTE2NzVmMzI0NWJhMTFhYzM5OGZkYmEyZmNlMzYzYmFiZjBhYTQ1NC4uMDQ2NDEw
OGZkOGZhZDQ4YjJiZDRlMzhmODBmOWM2YjJhNTgwMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjIzLDE0
ICsyMjMsMTIgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRT
bmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW4KIAogZmxvYXQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxp
bmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2
ZWxvY2l0eSwgdW5zaWduZWQmIGN1cnJlbnRJbmRleCkgY29uc3QKIHsKLSAgICBTY3JvbGxpbmdU
cmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKLSAgICBBU1NFUlQo
cm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5nTm9kZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihyb290KTsKKyAgICBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5nTm9kZSA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9v
dE5vZGUoKTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSByb290U2Nyb2xsaW5n
Tm9kZS0+c25hcE9mZnNldHNJbmZvKCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5h
dGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVu
dFNjYWxlKCk7CiAgICAgZmxvYXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUo
cmF3Q2xvc2VzdFNuYXBPZmZzZXQsIGN1cnJlbnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoYXhpcywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsK
KyAgICBzdGQ6OnRpZShyYXdDbG9zZXN0U25hcE9mZnNldCwgY3VycmVudEluZGV4KSA9IHNuYXBP
ZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCByb290U2Nyb2xsaW5nTm9kZS0+bGF5
b3V0Vmlld3BvcnQoKS5zaXplKCksIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7
CiAgICAgcmV0dXJuIHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxh
eWVkQ29udGVudFNjYWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ODBjMDMxOTVmODlj
NGJkMTNkZDZhNjQ2NTIzZjFkZjg0Yzk1NjRlLi44ZmM2NjE1Zjc2ZjNjOWZhZDAwZjU5NGIzNGIx
M2RkNDRjOTIzY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0xMDYsMTYgKzEwNiwxNyBAQCAtICh2
b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcg
d2l0aFZlbG9jaXR5OihDR1BvaQogICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQ
b3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVy
dGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CiAKKyAgICBXZWJDb3JlOjpG
bG9hdFNpemUgdmlld3BvcnRTaXplKHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChb
c2Nyb2xsVmlldyBib3VuZHNdKSksIHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQo
W3Njcm9sbFZpZXcgYm91bmRzXSkpKTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8g
PSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRz
SW5mbygpOwogICAgIGlmICghc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0g
PSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAg
YXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB2aWV3
cG9ydFNpemUsIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngpOwogICAgICAgICBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAw
ICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAg
ICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247
CiAgICAgfQogCiAgICAgaWYgKCFzbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0g
PSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBhdXRv
IFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0
U25hcE9mZnNldChXZWJDb3JlOjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNp
emUsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVO
b2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJ
bmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2Fs
VGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFy
Z2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZmJl
MDBjOGYwNWVmYmRhZjZmZDU0OTAzNWZmMmMzNTU5MjMyMDIwLi41YzY1OWUxNTE4OWIxMjNiNTgw
NTBmMzNlMzdmNDRkM2JiOTk2ODIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjEtMDMtMTUg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mt
c2Nyb2xsLXNuYXBdIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtY2xpY2stc2Nyb2xsYmFyLWd1dHRlci5odG1sOiBUaGlzIHRlc3Qg
dXNlZCBzbmFwIGFyZWFzIHRoYXQKKyAgICAgICAgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0LCB0aHVz
IG1lYW50IHRoYXQgaXQgcmVsaWVkIG9uIG5vbi1zcGVjIGNvbXBsaWFudCBiZWhhdmlvci4gUmV3
b3JrIGl0IHNvCisgICAgICAgIHRoYXQgdGhlIHNuYXAgYXJlYXMgZG8gbm90IG92ZXJmbG93LCBt
YWludGFpbmluZyB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12
ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbDogRGl0dG8uCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93
Lmh0bWw6IERpdHRvLgorCisyMDIxLTAzLTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYmFzaWMgKG5vbi1tb21lbnR1bSkgd2hlZWwgZXZl
bnQgaGFuZGxpbmcgZm9yIHNjcm9sbCBzbmFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI1OTQKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC13aGVlbC1ldmVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtd2hlZWwtZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIG5ldyB0ZXN0IGJlY2F1c2UgaXQgdXNlcyBtb3VzZSBl
dmVudCBzaW11bGF0aW9uLgorICAgICAgICBNb3ZlIGV4aXN0aW5nIGNsYXNzaWZpY2F0aW9uIHRv
IGJldHRlciBzZWN0aW9uIGFzIHdlbGwuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9mYXN0
L3Njcm9sbGluZy9sYXRjaGluZy9zY3JvbGwtc25hcC1sYXRjaGluZy1leHBlY3RlZC50eHQ6IFJl
YmFzZWQgdGhpcyBwcmV2aW91cyBmYWlsaW5nIHRlc3QuCisKKzIwMjEtMDMtMTMgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIENhY2hlIGNyb3NzLW9y
aWdpbiBtZXRob2RzIC8gYWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGlj
YWwgZ2xvYmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyNzM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHJvY2Vzcy1zd2Fw
LXdpbmRvdy1vcGVuLmh0bWw6CisKIDIwMjEtMDMtMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBpbnNwZWN0b3IvY2FudmFzL21l
bW9yeS5odG1sIGZhaWxzIHdoZW4gR1BVIHJlbmRlcmluZyBpcyBlbmFibGVkIGZvciAyRCBDYW52
YXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDQzNTA0ZjY0MjIzMmFkYzJmMzRj
NjYzYmUwMjg4NTlmZWRmNTkwMTAuLjczMzc0M2YyMjAzYzJhMGEzODFhNTgyMzhkNjdiMTBkNDA2
MzBlMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDIxLTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBbY3NzLXNjcm9sbC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBh
cmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
MTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFy
ZWFzLWV4cGVjdGVkLnR4dDogVXBkYXRlIGV4cGVjdGF0aW9ucyB0bworICAgICAgICBzaG93IHRo
YXQgdGhpcyB0ZXN0IGlzIG5vdyBwYXNzaW5nLgorCisyMDIxLTAzLTEzICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBDYWNoZSBjcm9zcy1vcmlnaW4g
bWV0aG9kcyAvIGFjY2Vzc29ycyBvZiBXaW5kb3cgYW5kIExvY2F0aW9uIHBlciBsZXhpY2FsIGds
b2JhbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjczOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY2Fj
aGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93
c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tY29tbW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVj
dHMtZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Ny
b3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9i
amVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbmFtZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDIxLTAzLTEyICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtzZWxlY3RvcnNdIDpmb2N1cy12aXNpYmxlIG1hdGNoZXMg
Ym9keSBhZnRlciBrZXlib2FyZCBldmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0
ZXIuaHRtbAppbmRleCA3YjM1MjZjYzRkZDA3ZDUxYzllYzkzZGM4OWQ0OTAyYmYwYmQ0NjMyLi45
NGRhOGJlNTMxYmZkZWI5NDIwNWY3ZThlYzIxMjYxZDFkZjg2YmY4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0
ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNs
aWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbApAQCAtMzQsMjEgKzM0LDMyIEBACiAgICAgICAgICAg
ICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogYm90aCBtYW5kYXRvcnk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIC5ibG9jayB7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Ci0g
ICAgICAgICAgICAgICAgd2lkdGg6IDI1MHB4OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFw
LWFsaWduOiBzdGFydDsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgLmhvcml6b250YWwt
ZHJhd2VyIHsKICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgICAgICAg
d2lkdGg6IDIwMDBweDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLmhvcml6b250YWwt
ZHJhd2VyIC5ibG9jayB7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsKLSAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4g
ZGl2IHsKKyAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgICAgICB3aWR0
aDogOTkwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAuaG9yaXpvbnRhbC1kcmF3ZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAg
ICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIHdp
ZHRoOiAxMHB4OworICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRh
aW5lciA+IGRpdiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiA5OTBweDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2Fs
LWNvbnRhaW5lciA+IGRpdi5zbmFwLXBvaW50IHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25h
cC1hbGlnbjogc3RhcnQ7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAg
ICAgfQorCiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KQEAgLTg3LDEzICs5OCwxNyBAQAogICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KICAgICAgICAgPGRpdiBpZD0iaG9yaXpvbnRhbC1j
b250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9y
aXpvbnRhbC1kcmF3ZXIiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHls
ZT0iZmxvYXQ6IGxlZnQ7IGJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0id2lkdGg6IDQ1MHB4OyBmbG9hdDogbGVmdDsg
YmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i
c25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2lu
dCIgc3R5bGU9ImJhY2tncm91bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxk
aXY+PC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxk
aXYgaWQ9InZlcnRpY2FsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2Pgot
ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJoZWlnaHQ6IDQ1MHB4OyBiYWNr
Z3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9p
bnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+
PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dy
b3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICA8
L2Rpdj4KICAgICAgICAgPHAgaWQ9ImNvbnNvbGUiPjwvcD4KICAgICAgICAgPHNjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtd2hlZWwt
ZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC13aGVlbC1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzllNjFjYTIyMDcxNDFl
ZWUwMTg4YjdiMWM3MmMxYzNjMmZhOWYwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtd2hlZWwtZXZlbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorUEFTUyBob3Jpem9udGFsIG1vdXNlIHdoZWVsIGV2ZW50IHNuYXBwZWQK
K1BBU1MgdmVydGljYWwgbW91c2Ugd2hlZWwgZXZlbnQgc25hcHBlZAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtd2hlZWwtZXZlbnQuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtd2hlZWwtZXZlbnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMGUyM2RhYjNkMmVmNzk3NWJkMjdkNDkyZjIwNWFmYTYyNTk3YWI2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC13aGVl
bC1ldmVudC5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5TaW1wbGUgd2hlZWwgZXZlbnRzIHNob3VsZCB0cmln
Z2VyIHNjcm9sbCBzbmFwcGluZzwvdGl0bGU+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgICAgICAgICAuY29udGFpbmVyIHsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDIw
MHB4OworICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
ZmxvdzogYXV0bzsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBib3RoIG1hbmRh
dG9yeTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIHsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgd2lkdGg6IDUw
MHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuYmxvY2sgeworICAgICAgICAgICAg
ICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
ICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICBhc3luYyBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyID09IHVuZGVmaW5lZCkg
eworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5u
ZXJUZXh0ID0gIlNpbXBsZSB3aGVlbCBldmVudHMgc2hvdWxkIHRyaWdnZXIgc2Nyb2xsIHNuYXBw
aW5nIjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIwLCAxOTAp
OworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDgwLCAxOTApOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnkoLTEsIDApOworCisgICAgICAgICAgICAgICAgbGV0IGhvcml6b250YWxDb250YWlu
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9yaXpvbnRhbC1jb250YWluZXIiKTsKKyAg
ICAgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yVGFyZ2V0U2Nyb2xsQW5pbWF0aW9u
VG9TZXR0bGUoaG9yaXpvbnRhbENvbnRhaW5lcik7CisgICAgICAgICAgICAgICAgZXhwZWN0VHJ1
ZShob3Jpem9udGFsQ29udGFpbmVyLnNjcm9sbExlZnQgPT0gMjAwLCAiaG9yaXpvbnRhbCBtb3Vz
ZSB3aGVlbCBldmVudCBzbmFwcGVkIik7CisKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygxOTAsIDIyMCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTkwLCAyNzAp
OworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnkoMCwgLTEpOworCisgICAgICAgICAgICAgICAg
bGV0IHZlcnRpY2FsQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlcnRpY2Fs
LWNvbnRhaW5lciIpOworICAgICAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JUYXJn
ZXRTY3JvbGxBbmltYXRpb25Ub1NldHRsZSh2ZXJ0aWNhbENvbnRhaW5lcik7CisgICAgICAgICAg
ICAgICAgZXhwZWN0VHJ1ZSh2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxUb3AgPT0gMTg1LCAidmVy
dGljYWwgbW91c2Ugd2hlZWwgZXZlbnQgc25hcHBlZCIpOworICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpOworICAgICAgICAgICAgfSBmaW5h
bGx5IHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IGlkPSJob3Jpem9udGFsLWNvbnRhaW5lciIgY2xh
c3M9ImNvbnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jpem9udGFsLWRyYXdl
ciI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJmbG9hdDogbGVm
dDsgYmFja2dyb3VuZDogIzgwNDc1RSI+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYmxvY2siIHN0eWxlPSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+
CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InZl
cnRpY2FsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgICAgICA8ZGl2IGNs
YXNzPSJibG9jayIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgICAgIDxwIGlkPSJjb25zb2xlIj48L3A+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93
LW9wZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3By
b2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQKaW5kZXggNTMyMTc0ZDg5MDc0ZTZi
OGI1MGQ0Nzk3ZGYyMzM3MWE5N2Q1OGEwNi4uNTc2Y2RlM2FiMWU5MmJkYWExMTRjZTQ4OTI0Mjcx
N2Q5MGQ4NDQyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi1leHBlY3RlZC50
eHQKQEAgLTI4LDYgKzI4LDExIEBAIFBBU1Mgdy5jbG9zZSBpcyBhbiBpbnN0YW5jZSBvZiBGdW5j
dGlvbgogUEFTUyB3LmZvY3VzIGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCiBQQVNTIHcuYmx1
ciBpcyBhbiBpbnN0YW5jZSBvZiBGdW5jdGlvbgogUEFTUyB3LnBvc3RNZXNzYWdlIGlzIGFuIGlu
c3RhbmNlIG9mIEZ1bmN0aW9uCitQQVNTIHcuY2xvc2UgaXMgdy5jbG9zZQorUEFTUyB3LmZvY3Vz
IGlzIHcuZm9jdXMKK1BBU1Mgdy5ibHVyIGlzIHcuYmx1cgorUEFTUyB3LnBvc3RNZXNzYWdlIGlz
IHcucG9zdE1lc3NhZ2UKK1BBU1Mgdy5wb3N0TWVzc2FnZS5sZW5ndGggaXMgMQogUEFTUyB3LnBv
c3RNZXNzYWdlKCd0ZXN0JywgJyonKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgdy5m
b2N1cygpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyB3LmJsdXIoKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9wcm9jZXNzLXN3YXAtd2luZG93LW9wZW4uaHRtbAppbmRleCA5NjdjOGQx
MWI3OWNhN2YyMmRjZDkwYTI3OGQ5YzRjOTFkMGY3MGMyLi4yMzRmMWE2M2NkZjE3MGYxNjVhOGI0
OWY4MmY4OWViNDVlZWMyMWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vcHJvY2Vzcy1zd2FwLXdpbmRvdy1vcGVuLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Byb2Nlc3Mtc3dhcC13aW5kb3ctb3Blbi5odG1sCkBAIC0z
Niw2ICszNiwxMSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHNob3VsZEJlVHlwZSgidy5m
b2N1cyIsICJGdW5jdGlvbiIpOwogICAgIHNob3VsZEJlVHlwZSgidy5ibHVyIiwgIkZ1bmN0aW9u
Iik7CiAgICAgc2hvdWxkQmVUeXBlKCJ3LnBvc3RNZXNzYWdlIiwgIkZ1bmN0aW9uIik7CisgICAg
c2hvdWxkQmUoIncuY2xvc2UiLCAidy5jbG9zZSIpOworICAgIHNob3VsZEJlKCJ3LmZvY3VzIiwg
IncuZm9jdXMiKTsKKyAgICBzaG91bGRCZSgidy5ibHVyIiwgIncuYmx1ciIpOworICAgIHNob3Vs
ZEJlKCJ3LnBvc3RNZXNzYWdlIiwgIncucG9zdE1lc3NhZ2UiKTsKKyAgICBzaG91bGRCZSgidy5w
b3N0TWVzc2FnZS5sZW5ndGgiLCAiMSIpOwogICAgIHNob3VsZE5vdFRocm93KCJ3LnBvc3RNZXNz
YWdlKCd0ZXN0JywgJyonKSIpOwogICAgIHNob3VsZE5vdFRocm93KCJ3LmZvY3VzKCkiKTsKICAg
ICBzaG91bGROb3RUaHJvdygidy5ibHVyKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxv
d2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFy
ZWFzLWV4cGVjdGVkLnR4dAppbmRleCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2NTkzM2I4
OGUyODFlLi4yNTljZDk4MGM1NDlhMDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1z
bmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEzIEBA
CiAKIFBBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBkb2Vz
bid0IGNvdmVyIHRoZSBzbmFwcG9ydCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBwb3Np
dGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmln
aHQgYm9yZGVyLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAwCi1GQUlM
IFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBz
bmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MjAwIGJ1dCBnb3QgMjcxNQorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUg
c25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVyLgor
UEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0
aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlmIHRoZSBk
aXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBwb3Np
dGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25hcHMgaWYg
dGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAwKSBzbmFw
IHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJTCBTbmFw
IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlv
biwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNl
IGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4g
c25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAwCi1G
QUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFw
IHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGUg
ZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBsYXJn
ZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAgYnV0IGdv
dCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZh
bGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHgg
YW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIDE1MDAgYnV0IGdvdCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwg
cG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVh
IGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAgcG9z
aXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJTCBE
b24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9zaXRp
b25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25hcCB0
YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MzcxNSBidXQgZ290IDIyMDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBv
biB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRvIHRo
ZSBzcGVjaWZpZWQgc25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3Zlcmlu
ZyB5IGF4aXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFTUyBTbmFw
IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlv
biwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNl
IGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4g
c25hcHBvcnQoNTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGlj
aCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBw
b3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFuZCBu
ZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8gY3Vy
cmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0
aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1
ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9u
IHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMg
c25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucy4K
K1BBU1MgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xsIHRv
IHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBpZiBh
IHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAgdG8gY3Vy
cmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMu
SG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBhcyB0
aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Ny
b3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4t
b2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDFmMWNi
ZTFhYjI5MWI5MWVkMTQxZjNmYzI0ODQyYThlN2IyMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29y
aWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1j
YWNoaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4g
V2luZG93IG1ldGhvZHMgYXJlIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vz
c29ycyBhcmUgY2FjaGVkCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFjZWAgbWV0
aG9kIGlzIGNhY2hlZAorUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBp
cyBjYWNoZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9z
cy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9y
aWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNhY2hpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOGFmMThkMTA2NzlkZDE2ZmRlYWIwNGVkZjFkZGM2ODY5NjdmNTk0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4t
b2JqZWN0cy1mdW5jdGlvbi1jYWNoaW5nLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2Rz
IGFuZCBhY2Nlc3NvcnMgYXJlIGNhY2hlZCBwZXIgUmVhbG0gdmlhW1tDcm9zc09yaWdpblByb3Bl
cnR5RGVzY3JpcHRvck1hcF1dPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NlcnMuaHRtbCNjcm9zc29yaWdp
bmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0
LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2Ny
aXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29u
c3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsKKyAgICBmb3IgKGNvbnN0IHtr
ZXl9IG9mIGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcykgeworICAgICAgICBhc3NlcnRfZXF1YWxz
KHdba2V5XSwgd1trZXldLCBgdy4ke2tleX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3Qg
ZGVzYzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7CisgICAgICAg
IGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOwor
ICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2MxLnZhbHVlLCBkZXNjMi52YWx1ZSwgYHcuJHtrZXl9
IHZpYSBbW0dldE93blByb3BlcnR5XV1gKTsKKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRv
dyBtZXRob2RzIGFyZSBjYWNoZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25z
dCB7a2V5fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBk
ZXNjMSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAg
Y29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcsIGtleSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuZ2V0LCBkZXNjMi5nZXQsIGB3LiR7a2V5fSBnZXR0
ZXJgKTsKKyAgICAgICAgaWYgKGtleSA9PT0gImxvY2F0aW9uIikgeworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXNjMS5zZXQsIGRlc2MyLnNldCwgYHcuJHtrZXl9IHNldHRlcmApOworICAg
ICAgICB9CisgICAgfQorfSwgIkNyb3NzLW9yaWdpbiBXaW5kb3cgYWNjZXNzb3JzIGFyZSBjYWNo
ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBhd2FpdCBt
YWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgYXNzZXJ0X2VxdWFscyh3LmxvY2F0aW9uLnJl
cGxhY2UsIHcubG9jYXRpb24ucmVwbGFjZSwgInZpYSBbW0dldF1dIik7CisgICAgY29uc3QgZGVz
YzEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcubG9jYXRpb24sICJyZXBsYWNl
Iik7CisgICAgY29uc3QgZGVzYzIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHcu
bG9jYXRpb24sICJyZXBsYWNlIik7CisgICAgYXNzZXJ0X2VxdWFscyhkZXNjMS52YWx1ZSwgZGVz
YzIudmFsdWUsICJ2aWEgW1tHZXRPd25Qcm9wZXJ0eV1dIik7Cit9LCAiQ3Jvc3Mtb3JpZ2luIExv
Y2F0aW9uIGByZXBsYWNlYCBtZXRob2QgaXMgY2FjaGVkIik7CisKK3Byb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOwor
ICAgIGNvbnN0IGRlc2MxID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LmxvY2F0
aW9uLCAiaHJlZiIpOworICAgIGNvbnN0IGRlc2MyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYzEuc2V0
LCBkZXNjMi5zZXQpOworfSwgIkNyb3NzLW9yaWdpbiBMb2NhdGlvbiBgaHJlZmAgc2V0dGVyIGlz
IGNhY2hlZCIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1v
YmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4v
Y3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tY29tbW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNiOTNiNDk4YTI2Y2JkNzIxMzE3OWRiYTcyNTRlZWI4NDMxNzNkMmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9y
aWdpbi1vYmplY3RzLWZ1bmN0aW9uLWNvbW1vbi5qcwpAQCAtMCwwICsxLDM0IEBACisidXNlIHN0
cmljdCI7CisKK2NvbnN0IGNyb3NzT3JpZ2luV2luZG93TWV0aG9kcyA9IFsKKyAgICB7a2V5OiAi
Y2xvc2UiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6ICJmb2N1cyIsIGxlbmd0aDogMH0sCisgICAg
e2tleTogImJsdXIiLCBsZW5ndGg6IDB9LAorICAgIHtrZXk6ICJwb3N0TWVzc2FnZSIsIGxlbmd0
aDogMX0sCitdOworCitjb25zdCBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycyA9IFsKKyAgICAi
d2luZG93IiwKKyAgICAic2VsZiIsCisgICAgImxvY2F0aW9uIiwKKyAgICAiY2xvc2VkIiwKKyAg
ICAiZnJhbWVzIiwKKyAgICAibGVuZ3RoIiwKKyAgICAidG9wIiwKKyAgICAib3BlbmVyIiwKKyAg
ICAicGFyZW50IiwKK10ubWFwKGtleSA9PiAoe2tleX0pKTsKKworY29uc3QgbWFrZUNyb3NzT3Jp
Z2luV2luZG93ID0gdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaWZyYW1lIik7CisgICAgY29uc3QgcGF0aCA9IGxvY2F0aW9uLnBhdGhuYW1lLnNsaWNl
KDAsIGxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCIvIikpICsgIi9mcmFtZS5odG1sIjsK
KyAgICBpZnJhbWUuc3JjID0gZ2V0X2hvc3RfaW5mbygpLkhUVFBfUkVNT1RFX09SSUdJTiArIHBh
dGg7CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNvbHZlKGlmcmFtZS5jb250ZW50V2luZG93
KTsgfTsKKyAgICAgICAgaWZyYW1lLm9uZXJyb3IgPSByZWplY3Q7CisKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlm
cmFtZS5yZW1vdmUoKTsgfSk7CisgICAgfSk7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2Jq
ZWN0cy1mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExOGI2ZmI5M2Fm
MTFmZGJjNTYxYTI0ZDA4ZjU2NjhiODIxMjk0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2lu
L2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLWxlbmd0
aC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgQ3Jvc3Mtb3JpZ2luIFdpbmRv
dyBtZXRob2RzIGhhdmUgY29ycmVjdCAnbGVuZ3RoJworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93
IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ2xlbmd0aCcKK1BBU1MgQ3Jvc3Mtb3JpZ2luIExvY2F0
aW9uIGByZXBsYWNlYCBtZXRob2QgaGFzIGNvcnJlY3QgJ2xlbmd0aCcKK1BBU1MgQ3Jvc3Mtb3Jp
Z2luIExvY2F0aW9uIGBocmVmYCBzZXR0ZXIgaGFzIGNvcnJlY3QgJ2xlbmd0aCcKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1m
dW5jdGlvbi1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mt
b3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVuZ3RoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY2OTE1YTQ2
MTdhODRkYjk3N2FiMGNmOTUxZDA5ZDJjYjFmMDc4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmln
aW4vY3Jvc3Mtb3JpZ2luLW9iamVjdHMvY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVuY3Rpb24tbGVu
Z3RoLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0
PXV0Zi04PgorPHRpdGxlPkNyb3NzLW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNy
ZWF0ZWQgd2l0aCBjb3JyZWN0ICdsZW5ndGgnIHByb3BlcnR5PC90aXRsZT4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3Nl
cnMuaHRtbCNjcm9zc29yaWdpbmdldG93bnByb3BlcnR5aGVscGVyLSgtbywtcC0pIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJj
cm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1jb21tb24uanMiPjwvc2NyaXB0PgorPGRpdiBp
ZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09yaWdpbldpbmRvdyh0KTsK
KyAgICBmb3IgKGNvbnN0IHtrZXksIGxlbmd0aH0gb2YgY3Jvc3NPcmlnaW5XaW5kb3dNZXRob2Rz
KSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMod1trZXldLmxlbmd0aCwgbGVuZ3RoLCBgdy4ke2tl
eX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLnZhbHVl
Lmxlbmd0aCwgbGVuZ3RoLCBgdy4ke2tleX0gdmlhIFtbR2V0T3duUHJvcGVydHldXWApOworICAg
IH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhvZHMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgn
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFr
ZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGZvciAoY29uc3Qge2tleX0gb2YgY3Jvc3NPcmln
aW5XaW5kb3dBY2Nlc3NvcnMpIHsKKyAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhkZXNjLmdl
dC5sZW5ndGgsIDAsIGB3LiR7a2V5fWApOworICAgICAgICBpZiAoa2V5ID09PSAibG9jYXRpb24i
KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0Lmxlbmd0aCwgMSwgYHcuJHtr
ZXl9YCk7CisgICAgICAgIH0KKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBhY2Nlc3Nv
cnMgaGF2ZSBjb3JyZWN0ICdsZW5ndGgnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAgIGFzc2Vy
dF9lcXVhbHMody5sb2NhdGlvbi5yZXBsYWNlLmxlbmd0aCwgMSk7CisgICAgY29uc3QgZGVzYyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgInJlcGxhY2UiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubGVuZ3RoLCAxKTsKK30sICJDcm9zcy1vcmln
aW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVjdCAnbGVuZ3RoJyIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdyA9IGF3YWl0IG1ha2VDcm9zc09y
aWdpbldpbmRvdyh0KTsKKyAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih3LmxvY2F0aW9uLCAiaHJlZiIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQu
bGVuZ3RoLCAxKTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYGhyZWZgIHNldHRlciBoYXMg
Y29ycmVjdCAnbGVuZ3RoJyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL2Nyb3Nz
LW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1bmN0aW9uLW5hbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0
cy1mdW5jdGlvbi1uYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODBmZTdhMzUzZWNkMDg2
NTE3NDQwMzJlOTdjOWRjOTc1YzI2ZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9z
cy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IG1ldGhv
ZHMgaGF2ZSBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmlnaW4gV2luZG93IGFjY2Vzc29y
cyBoYXZlIGNvcnJlY3QgJ25hbWUnCitQQVNTIENyb3NzLW9yaWdpbiBMb2NhdGlvbiBgcmVwbGFj
ZWAgbWV0aG9kIGhhcyBjb3JyZWN0ICduYW1lJworUEFTUyBDcm9zcy1vcmlnaW4gTG9jYXRpb24g
YGhyZWZgIHNldHRlciBoYXMgY29ycmVjdCAnbmFtZScKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9j
cm9zcy1vcmlnaW4tb2JqZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvb3JpZ2luL2Nyb3NzLW9yaWdpbi1vYmplY3RzL2Nyb3NzLW9yaWdpbi1vYmplY3RzLWZ1
bmN0aW9uLW5hbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdjMzBlOGYzMjhmYWU2OGNiMzVkMGZkZDA1
Njg2MjRiZjE4N2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9jcm9zcy1vcmlnaW4tb2Jq
ZWN0cy9jcm9zcy1vcmlnaW4tb2JqZWN0cy1mdW5jdGlvbi1uYW1lLmh0bWwKQEAgLTAsMCArMSw0
NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNyb3Nz
LW9yaWdpbiBtZXRob2RzIGFuZCBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgd2l0aCBjb3JyZWN0ICdu
YW1lJyBwcm9wZXJ0eTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzZXJzLmh0bWwjY3Jvc3NvcmlnaW5nZXRv
d25wcm9wZXJ0eWhlbHBlci0oLW8sLXAtKSI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi9nZXQtaG9zdC1pbmZv
LnN1Yi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY3Jvc3Mtb3JpZ2luLW9iamVjdHMtZnVu
Y3Rpb24tY29tbW9uLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2PgorPHNjcmlwdD4K
KyJ1c2Ugc3RyaWN0IjsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcg
PSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5fSBv
ZiBjcm9zc09yaWdpbldpbmRvd01ldGhvZHMpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3W2tl
eV0ubmFtZSwga2V5LCBgdy4ke2tleX0gdmlhIFtbR2V0XV1gKTsKKyAgICAgICAgY29uc3QgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iodywga2V5KTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhkZXNjLnZhbHVlLm5hbWUsIGtleSwgYHcuJHtrZXl9IHZpYSBbW0dldE93blBy
b3BlcnR5XV1gKTsKKyAgICB9Cit9LCAiQ3Jvc3Mtb3JpZ2luIFdpbmRvdyBtZXRob2RzIGhhdmUg
Y29ycmVjdCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHcgPSBhd2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgZm9yIChjb25zdCB7a2V5
fSBvZiBjcm9zc09yaWdpbldpbmRvd0FjY2Vzc29ycykgeworICAgICAgICBjb25zdCBkZXNjID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3LCBrZXkpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGRlc2MuZ2V0Lm5hbWUsIGBnZXQgJHtrZXl9YCk7CisgICAgICAgIGlmIChrZXkgPT09
ICJsb2NhdGlvbiIpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGVzYy5zZXQubmFtZSwg
YHNldCAke2tleX1gKTsKKyAgICAgICAgfQorICAgIH0KK30sICJDcm9zcy1vcmlnaW4gV2luZG93
IGFjY2Vzc29ycyBoYXZlIGNvcnJlY3QgJ25hbWUnIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCB3ID0gYXdhaXQgbWFrZUNyb3NzT3JpZ2luV2luZG93KHQpOworICAg
IGFzc2VydF9lcXVhbHMody5sb2NhdGlvbi5yZXBsYWNlLm5hbWUsICJyZXBsYWNlIik7CisgICAg
Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwg
InJlcGxhY2UiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MudmFsdWUubmFtZSwgInJlcGxhY2Ui
KTsKK30sICJDcm9zcy1vcmlnaW4gTG9jYXRpb24gYHJlcGxhY2VgIG1ldGhvZCBoYXMgY29ycmVj
dCAnbmFtZSciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IHcgPSBh
d2FpdCBtYWtlQ3Jvc3NPcmlnaW5XaW5kb3codCk7CisgICAgY29uc3QgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iody5sb2NhdGlvbiwgImhyZWYiKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRlc2Muc2V0Lm5hbWUsICJzZXQgaHJlZiIpOworfSwgIkNyb3NzLW9yaWdpbiBMb2Nh
dGlvbiBgaHJlZmAgc2V0dGVyIGhhcyBjb3JyZWN0ICduYW1lJyIpOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWYyNTZl
OTJiMDFiYjEwN2JiNjllMWQ0ZjUxMjhlY2I5NTgxYjMwZi4uZDU0YjQ0NzkwMmJlNWIwOTgzMTY1
N2E4YjZhNTNhYmFkYTBiNzM4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM3LDcgKzEzNyw2IEBAIHNjcm9sbGJhcnMvc2Nyb2xsaW5n
LWJ5LXBhZ2Utb24ta2V5Ym9hcmQtc3BhY2ViYXIuaHRtbCBbIEZhaWx1cmUgXQogc2Nyb2xsYmFy
cy9zY3JvbGxiYXJzLW9uLXBvc2l0aW9uZWQtY29udGVudC5odG1sIFsgRmFpbHVyZSBdCiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1wYWRkaW5nLW1haW5mcmFtZS1wYWdpbmcuaHRtbCBbIEZhaWx1
cmUgXQogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtcGFkZGluZy1vdmVyZmxvdy1wYWdpbmcuaHRt
bCBbIEZhaWx1cmUgXQotY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxi
YXItZ3V0dGVyLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBTVkcgdGVzdHMgdGhhdCB0aW1lIG91dCAo
dGhlc2UgcmVxdWlyZSBFdmVudFNlbmRlcikKIHN2Zy9hbmltYXRpb25zL2FuaW1WYWwtYmFzaWNz
Lmh0bWwKQEAgLTkzMyw2ICs5MzIsOCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0LW9m
LWZsb2F0ZWQtbm9uLWVkaXRhYmxlLTA5Lmh0bWwgWyBTa2lwIF0KIGVkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdC1vdXQtb2YtZmxvYXRlZC1ub24tZWRpdGFibGUtMTAuaHRtbCBbIFNraXAgXQogZWRp
dGluZy9zZWxlY3Rpb24vc2VsZWN0LW91dC1vZi1mbG9hdGVkLW5vbi1lZGl0YWJsZS0xMS5odG1s
IFsgU2tpcCBdCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0LW9mLWZsb2F0ZWQtbm9uLWVk
aXRhYmxlLTEyLmh0bWwgWyBTa2lwIF0KK2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xp
Y2stc2Nyb2xsYmFyLWd1dHRlci5odG1sIFsgU2tpcCBdCitjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXdoZWVsLWV2ZW50Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE5MjA4OCBt
ZWRpYS9uby1mdWxsc2NyZWVuLXdoZW4taGlkZGVuLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2Zhc3Qvc2Nyb2xsaW5nL2xh
dGNoaW5nL3Njcm9sbC1zbmFwLWxhdGNoaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvZmFzdC9zY3JvbGxpbmcvbGF0Y2hpbmcvc2Nyb2xsLXNuYXAtbGF0Y2hp
bmctZXhwZWN0ZWQudHh0CmluZGV4IDkwZDhkNjA0ZjdiMzEwMGY3YjAwOTYyNzRmODI3MTU2MDQ0
ZjdkYjYuLjFlNjRmNzlkYTE3NzRmNDRkOWMwYTNhZmFmM2U3YmEyZWYwNzQxNTAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvZmFzdC9zY3JvbGxpbmcvbGF0Y2hpbmcv
c2Nyb2xsLXNuYXAtbGF0Y2hpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azEvZmFzdC9zY3JvbGxpbmcvbGF0Y2hpbmcvc2Nyb2xsLXNuYXAtbGF0Y2hpbmct
ZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAK
IFBBU1Mgb3ZlcmZsb3dTY3JvbGxFdmVudENvdW50ID4gMCBpcyB0cnVlCi1GQUlMIHdpbmRvd1Nj
cm9sbEV2ZW50Q291bnQgc2hvdWxkIGJlIDAuIFdhcyA3LgorRkFJTCB3aW5kb3dTY3JvbGxFdmVu
dENvdW50IHNob3VsZCBiZSAwLiBXYXMgMTEuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
dmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZl
cnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCmluZGV4IDY0MjdhMTE0ZTQ4YjI2YmU2NWI1NWU3
Yjg2OGRmODY3NTY5MWE5ZjguLjk0ZGFkMjE2OGM2MGRlOTE1NDc2YjFkMDEwYTY0M2QwNGZlOTIw
ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jp
em9udGFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhv
cml6b250YWwuaHRtbApAQCAtNCw2ICs0LDcgQEAKICAgICAgICAgPHN0eWxlPgogICAgICAgICAg
ICAgaHRtbCB7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMHZ3OwpAQCAtMTIs
NyArMTMsNyBAQAogICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAuY29sb3JCb3ggewotICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiA5MHZoOwogICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2
dzsKICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICAgICAgICAgICBzY3JvbGwt
c25hcC1hbGlnbjogc3RhcnQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1sCmluZGV4IDViMDUyZmRiZjk0Yzg0YTNkOGUw
ZDFhMjhmY2I1MjIwMmFlZjlmMmYuLjE1MzFlMWUzYWIyMjVlNTAyYjNiNzIwZDFkMDYxYjhiZTMw
ZmY2MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1sCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXBy
b3hpbWl0eS1vdmVyZmxvdy5odG1sCkBAIC0xMywyMSArMTMsMTYgQEAKICAgICAgICAgICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAg
ICAgICAgIGxlZnQ6IDA7Ci0gICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogbm9uZTsKICAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtdHlwZTogeSBwcm94aW1pdHk7Ci0gICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25h
cC10eXBlOiBwcm94aW1pdHk7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJv
eGltaXR5OwogICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLmFyZWEgewotICAgICAgICAgICAgICAgIGhlaWdodDogNjAwcHg7Ci0gICAg
ICAgICAgICAgICAgd2lkdGg6IDYwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgICBmbG9hdDogbGVm
dDsKICAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7Ci0gICAgICAgICAg
ICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7Ci0gICAgICAgICAgICAg
ICAgc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAwOwogICAgICAgICAgICAgfQogICAgICAgICA8
L3N0eWxlPgogICAgICAgICA8c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423166</attachid>
            <date>2021-03-15 06:04:41 -0700</date>
            <delta_ts>2021-03-15 09:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223175-20210315140440.patch</filename>
            <type>text/plain</type>
            <size>79030</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhMjM3MWNjYTE1MmJm
ZDg0NDk2NzQyNjU3MzVhZmFmNzdjOWQ1ZS4uMjJiMzU1ZGU5NzE4ODU0OGQwYTVmNjNiMWQ0MzA5
OGFjNWU1Y2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTAzLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgaGFuZGxlIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuIFRoaXMgcmVxdWlyZXMgcmV3cml0aW5nIHRoZSBzbmFwcGlu
ZworICAgICAgICBhbGdvcml0aG0uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBub3cgc3RvcmUgc25h
cCBhcmVhIHJlY3RhbmdsZXMsIHdoaWNoIGFyZQorICAgICAgICB1c2VkIHRvIGhhbmRsZSBvdmVy
Zmxvd2luZyBzbmFwIGFyZWFzLiBJbiBhZGRpdGlvbiwgc25hcCBvZmZzZXQgcmFuZ2VzIGFyZSBu
bworICAgICAgICBsb25nZXIga2VwdCB0byBoYW5kbGUgcHJveGltaXR5LiBJbnN0ZWFkIHRoaXMg
aXMgZG9uZSB3aGVuIGNob29zaW5nIGNhbmRpZGF0ZQorICAgICAgICBzbmFwIG9mZnNldHMuCisK
KyAgICAgICAgQmVjYXVzZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm93IGNvbnRhaW5zIGEgcmVj
dGFuZ2xlIHR5cGUsIGl0cyB0ZW1wbGF0ZSBuZWVkcworICAgICAgICB0aGlzIHR5cGUgYXMgd2Vs
bC4gSW4gb3JkZXIgdG8gbWFrZSBpdCBzaW1wbGVyIHRvIHVzZSBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gdGhpcworICAgICAgICBjaGFuZ2UgZXhwb3NlcyB0d28gdHlwZSBhbGlhc2VzLCBGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyBhbmQgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvCisgICAg
ICAgIHdoaWNoIGFyZSB1c2VkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIGNoYW5nZSBmaXhlcyB0aGUgV1BUIHRlc3Q6CisgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFz
Lmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJz
dFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKTogVXBkYXRlZCB0byBy
ZXR1cm4gYW4gb2Zmc2V0L2luZGV4CisgICAgICAgIHBhaXIgc28gdGhlIHJldHVybiB0eXBlIG9m
IHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgY2FsY3VsYXRlQ2xvc2Vz
dFNuYXBPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9s
bGFibGVBcmVhKTogTm8gbG9uZ2VyIHN0b3JlIG9mZnNldCByYW5nZXMgZm9yIHByb3hpbWl0eSBz
bmFwcGluZworICAgICAgICBhbmQgYWxzbyBzdG9yZSBzbmFwIGFyZWFzIGNvbnZlcnRlZCB0byAi
b2Zmc2V0IiBjb29yZGluYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJbmZv
KTogTm8gbG9uZ2VyIG5lZWQgdG8gY29udmVydCBvZmZzZXQgcmFuZ2VzLCBidXQgdGhpcyBkb2Vz
IG5vdworICAgICAgICByZXF1aXJlIGNvbnZlcnRpbmcgb2Zmc2V0IGFyZWFzLgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyBjb25zdCk6
IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjptYXhGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggZ2V0cyB0aGUgbWF4
aW11bSBpbiBhIHBhcnRpY3VsYXIgYXhpcyBnaXZlbiB0aGUgYXhpcy4KKyAgICAgICAgKFdlYkNv
cmU6Om1pbkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzTmVhckVub3VnaFRv
T2Zmc2V0Rm9yUHJveGltaXR5KTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggcmVwbGFjZXMgY29t
cHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQpOiBUaGlzIHJlcGxhY2VzIGNsb3Nlc3RTbmFwT2Zmc2V0
V2l0aE9mZnNldHNBbmRSYW5nZXMsIGJ1dCBhbHNvCisgICAgICAgIGFuZCBpbmRpY2VzT2ZOZWFy
ZXN0U25hcE9mZnNldHMuIE5vdyB3cml0dGVuIHVzaW5nIHNuYXAgYXJlYXMgZnJvbSB0aGUgZGF0
YSBzdHJ1Y3R1cmUgYXMgd2VsbCBhcworICAgICAgICB3aXRoIHByb3BlciBoYW5kbGluZyBmb3Ig
b3ZlcmZsb3dpbmcgc25hcCBhcmVhcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3QpOiBVcGRhdGUgZm9yIG5ldyBt
ZXRob2QgbmFtZXMgYW5kIHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2Ny
b2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvOjppc0VxdWFsIGNvbnN0KTogTm8gbG9uZ2Vy
IGxvb2sgYXQgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgZG8gdGFrZSBpbnRvCisgICAgICAgIGNv
bnNpZGVyYXRpb24gdGhlIHNuYXAgYXJlYXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm86Om9mZnNldHNGb3JBeGlzIGNvbnN0KTogUmVuYW1lZCB0aGUgdGVtcGxhdGUg
YXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOiBVc2Ug
dGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6IGNvbnZlcnRVbml0cyBub3cgdGFrZXMgdHdvIHRlbXBsYXRl
IGFyZ3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMp
OiBQYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gc2VsZWN0aW5nIHNuYXAgcG9pbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmg6IFVzZSB0
aGUgbmV3IHR5cGUgYWxpYXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNl
dHVwQW5pbWF0aW9uRm9yU3RhdGUpOiBQYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0
Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPDwpOiBObyBsb25nZXIgcHJpbnQgc25hcCBvZmZzZXQgcmFuZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmg6IFJlbW92ZWQgbWV0
aG9kIGRlYWxpbmcgd2l0aCByYW5nZXMuIE5vdyBwYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0
T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tOiBEaXR0by4KKwogMjAyMS0wMy0xMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEbyBub3Qgc2hyaW5rIHJhZGlvIGJ1dHRvbnMgYmVs
bG93IGl0cyBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlNTQzYWY2NDA5NjEwOTY4ZDM5YTZmZDkwM2YwNDA0
YjI0MWI5YTcuLjNiMDJhNTk5ZjFmMzE0OWZkNjE4ODA2YTg0ZWJhODdiNzlkNjQwNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFByb3Blcmx5IGhh
bmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm8gbG9uZ2VyIGhvbGRz
IHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGlzIGFsc28gdGVtcGxhdGVkIG9mZgorICAgICAgICBv
ZiBhIHJlY3QgdHlwZS4gSW4gV2ViS2l0IHdlIHN3aXRjaCB0byB1c2luZyB0aGUgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8gYWxpYXMuCisgICAgICAgIEFkZGl0aW9uYWxseSwgd2UgbmVlZCB0
byBwYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gcmVxdWVzdGluZyBhIHNuYXAgb2Zmc2V0
CisgICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKTogU3dpdGNoIHRv
IHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBhbGlhcy4KKyAgICAgICAgKEFy
Z3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjplbmNvZGUpOiBEaXR0by4g
QWxzbyB3ZSBubyBsb25nZXIgbmVlZCB0byBlbmNvZGUgdGhlIHJhbmdlcy4KKyAgICAgICAgKEFy
Z3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjpkZWNvZGUpOiBEaXR0by4K
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25zdCk6IFBhc3Mg
aW4gdGhlIHZpZXdwb3J0IHNpemUgbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAg
ICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVu
ZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOiBEaXR0by4KKwog
MjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29tbWFuZHMgYXJlIG5vdCBwcm9jZXNzZWQgaW4g
b3JkZXIgaWYgR1BVIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgcmVwbGllcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2QxNTg0NzQwMDQ3OWI3Yzk3Li40
ODBmZTk1ZDgyYjI5MTQ5NzlmYTA1OWI2NmI5M2U3MWE4Zjc4MTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtOTIsMTUgKzkyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFBsCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgbm9kZSwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBv
ZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBz
ZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9mZnNl
dEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIGlmICghb2Zmc2V0SW5mbykg
ewotICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+KCkpOworICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRvIGRl
dmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhlcmUg
YW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KLSAgICBub2RlLnNldFNu
YXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8ZmxvYXQ+KGRldmljZVNjYWxl
RmFjdG9yKSk7CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8ob2Zmc2V0SW5mby0+Y29udmVy
dFVuaXRzPGZsb2F0LCBGbG9hdFJlY3Q+KGRldmljZVNjYWxlRmFjdG9yKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5jcHAKaW5kZXggYWNmZWQwZjM4Mzc4ZWI0ZTJlYzJhNTFiNDEwMjhmNTIwM2Q1
N2NiNC4uMDEwMjFhNGNjM2ZkMDM0YjZkNjExMDRhMzIzNjM3NTI3MTY3MzE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uY3BwCkBAIC00MSw2OCArNDEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RT
bmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCB1bnNpZ25lZCYgbG93ZXJJ
bmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+
CitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4+IGZpbmRGaXJz
dFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKGNvbnN0IFZlY3RvcjxT
bmFwT2Zmc2V0PFVuaXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBVbml0VHlwZSBzY3JvbGxPcmlnaW5P
ZmZzZXQsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIGlmIChzbmFw
T2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleDsKLSAgICAgICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgbG93ZXJJbmRleEFzSW50ID0g
LTE7Ci0gICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpOwot
ICAgIGRvIHsKLSAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxvd2VySW5kZXhBc0ludCArIHVw
cGVySW5kZXhBc0ludCkgLyAyOwotICAgICAgICBhdXRvJiByYW5nZSA9IHNuYXBPZmZzZXRSYW5n
ZXNbbWlkZGxlSW5kZXhdOwotICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPCBvZmZzZXQgJiYgb2Zm
c2V0IDwgcmFuZ2UuZW5kKSB7Ci0gICAgICAgICAgICBsb3dlckluZGV4QXNJbnQgPSBtaWRkbGVJ
bmRleDsKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zmc2V0ID4gcmFuZ2UuZW5k
KQotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgIH0gd2hp
bGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAtIDEpOwotCi0gICAgaWYgKG9m
ZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQpCi0gICAgICAgIGxvd2VySW5k
ZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UKLSAgICAgICAgbG93ZXJJbmRl
eCA9IGxvd2VySW5kZXhBc0ludDsKLQotICAgIGlmIChvZmZzZXQgPj0gc25hcE9mZnNldFJhbmdl
cy5sYXN0KCkuZW5kKQotICAgICAgICB1cHBlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eDsKLSAgICBlbHNlCi0gICAgICAgIHVwcGVySW5kZXggPSB1cHBlckluZGV4QXNJbnQ7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHZvaWQgaW5kaWNlc09mTmVh
cmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U25hcE9mZnNl
dDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWdu
ZWQmIHVwcGVySW5kZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRleCA9
IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBlcklu
ZGV4IC0gMSkgewotICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVwcGVy
SW5kZXgpIC8gMjsKLSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBzbmFwT2Zmc2V0c1ttaWRk
bGVJbmRleF0ub2Zmc2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09IG1pZGRsZU9mZnNldCkgewot
ICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgbG93ZXJJ
bmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAgICAgICAgbG93ZXJJbmRleCA9
IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cHBlckluZGV4ID0gbWlk
ZGxlSW5kZXg7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0
YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3Jp
Z2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBz
bmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNlID0gc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CisgICAgVW5pdFR5cGUg
ZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0gc2Nyb2xsT3JpZ2luT2Zmc2V0
OwogICAgIGlmICghZGlmZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApA
QCAtMTEzLDcgKzU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFw
U3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICAgICAgaXRlcmF0
aW9uID0gLTE7CiAgICAgfQogCi0gICAgYXV0byBpc1Bhc3QgPSBbZGlmZmVyZW5jZV0oTGF5b3V0
VHlwZSBtYXJrLCBMYXlvdXRUeXBlIGNhbmRpZGF0ZSkgeworICAgIGF1dG8gaXNQYXN0ID0gW2Rp
ZmZlcmVuY2VdKFVuaXRUeXBlIG1hcmssIFVuaXRUeXBlIGNhbmRpZGF0ZSkgewogICAgICAgICBy
ZXR1cm4gKGRpZmZlcmVuY2UgPiAwICYmIGNhbmRpZGF0ZSA+IG1hcmspIHx8IChkaWZmZXJlbmNl
IDwgMCAmJiBjYW5kaWRhdGUgPCBtYXJrKTsKICAgICB9OwogCkBAIC0xMjQsNjUgKzY2LDEyIEBA
IHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVu
T3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGlmIChzbmFwT2Zmc2V0c1tpXS5zdG9w
ICE9IFNjcm9sbFNuYXBTdG9wOjpBbHdheXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGlzUGFzdChzY3JvbGxPcmlnaW5PZmZzZXQsIG9mZnNldCkpCi0gICAgICAgICAgICBy
ZXR1cm4gaTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgc3RkOjpwYWlyPExh
eW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5kUmFuZ2Vz
KGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRSYW5nZXMs
IExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRp
b25hbDxMYXlvdXRUeXBlPiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpCi17
Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsK
LQotICAgIGlmIChvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFzVmFsdWUo
KSkgewotICAgICAgICBhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCA9IGZpbmRGaXJzdFNu
YXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKHNuYXBPZmZzZXRzLCAqb3Jp
Z2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCk7Ci0gICAgICAgIGlmIChmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXguaGFzVmFsdWUoKSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0c1sqZmlyc3RTbmFwU3Rv
cE9mZnNldEluZGV4XS5vZmZzZXQsICpmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7Ci0gICAgdW5zaWduZWQg
dXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNl
dFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldFJh
bmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zmc2V0
UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zm
c2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAgICBpZiAoc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCwgMHUpOwotCi0gICAg
aWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0
LCBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxKTsKLQotICAgIHVuc2lnbmVkIGxvd2VySW5kZXg7Ci0g
ICAgdW5zaWduZWQgdXBwZXJJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHM8
TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNuYXBPZmZzZXRzLCBsb3dlcklu
ZGV4LCB1cHBlckluZGV4KTsKLSAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0gc25h
cE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwotICAgIExheW91dFR5cGUgdXBwZXJTbmFwUG9z
aXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7Ci0gICAgaWYgKCFzdGQ6OmFi
cyh2ZWxvY2l0eSkpIHsKLSAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24g
PSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVwcGVyU25h
cFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIHJldHVybiBpc0Ns
b3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlv
biwgbG93ZXJJbmRleCkgOiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBwZXJJ
bmRleCk7Ci0gICAgfQotCi0gICAgLy8gTm9uLXplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEgZmxp
Y2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCB3ZSBzaG91
bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVyZQot
ICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2UgZG9lcyBub3QgbGll
IGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhlIHRhcmdldGVkIHNuYXAgb2Zm
c2V0LiBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0aW9uYWwKLSAgICAvLyBzbmFwcGluZywgd2Ugc2hv
dWxkIG5ldmVyIHNuYXAgdG8gYSBwb2ludCB0aGF0IHdhcyBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0
aGUgb3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiB0aGlzIHNj
cm9sbC4KLSAgICAvLyBUaGlzIGFsbG93cyBkaXJlY3Rpb25hbCBzY3JvbGxpbmcgdG8gZXNjYXBl
IHNuYXAgcG9pbnRzLgotICAgIGlmICh2ZWxvY2l0eSA8IDApIHsKLSAgICAgICAgaWYgKGxvd2Vy
U25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCB8fCBsb3dlclNu
YXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNldFJhbmdlSW5kZXhd
LmVuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlv
biwgbG93ZXJJbmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25h
bFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFw
cGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldEluZGV4
IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uc3RhcnQgPj0g
dXBwZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodXBw
ZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgICAgICBpZiAoIW9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZvckRp
cmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZh
bGlkU25hcE9mZnNldEluZGV4KTsKLX0KLQogZW51bSBjbGFzcyBJbnNldE9yT3V0c2V0IHsKICAg
ICBJbnNldCwKICAgICBPdXRzZXQKQEAgLTIxOSwzMCArMTA4LDYgQEAgc3RhdGljIExheW91dFVu
aXQgY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChMYXlvdXRVbml0IG1pbkxvY2F0aW9uLCBM
YXlvdXRVbmkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGltaXR5U25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRVbml0Pj4mIHNuYXBP
ZmZzZXRzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRSYW5n
ZXMsIExheW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCi17Ci0gICAgLy8gVGhpcyBpcyBh
biBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHki
IG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCi0gICAgLy8gdGhp
cyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9P
ZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7Ci0g
ICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZzZXQgcmFuZ2VzIGluIGJl
dHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRpYWwgc25hcCBvZmZzZXQK
LSAgICAvLyBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgdXNlciBzY3JvbGxzIHdp
dGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNuYXAgb2Zmc2V0LCBzdWNoIHRo
YXQgdGhlCi0gICAgLy8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBpcyBzdGlsbCB3aXRo
aW4gcHJveGltaXR5IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhpcyBjYXNlLCB0aGUgcmVndWxh
ciAobWFuZGF0b3J5Ci0gICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBiZWhhdmlvciB3b3VsZCBiZSB0
byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1vbWVudHVtIHNj
cm9sbGluZywgYnV0Ci0gICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9yZSBpbnR1aXRpdmUgdG8gZWl0
aGVyIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbiAod2hpY2ggd2UgYXJiaXRy
YXJpbHkgY2hvb3NlIGhlcmUpCi0gICAgLy8gb3Igc2Nyb2xsIGp1c3Qgb3V0c2lkZSBvZiB0aGUg
c25hcCBvZmZzZXQgcmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5vciBiZWhhdmlvciB0d2VhayB0
aGF0IHdlIHNob3VsZCBwbGF5IGFyb3VuZAotICAgIC8vIHdpdGggdG8gc2VlIHdoYXQgZmVlbHMg
YmVzdC4KLSAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlIHsgcmF0aW9PZlNjcm9sbFBv
cnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhpc0xl
bmd0aCB9OwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBzbmFwT2Zmc2V0cy5z
aXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNuYXBPZmZzZXRz
W2luZGV4IC0gMV0ub2Zmc2V0ICsgcHJveGltaXR5RGlzdGFuY2U7Ci0gICAgICAgIGF1dG8gZW5k
T2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXhdLm9mZnNldCAtIHByb3hpbWl0eURpc3RhbmNlOwot
ICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpCi0gICAgICAgICAgICBvZmZzZXRS
YW5nZXMuYXBwZW5kKHsgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9KTsKLSAgICB9Ci19Ci0KIHZv
aWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJl
Y3RJbkJvcmRlckJveENvb3JkaW5hdGVzKQogewogICAgIGF1dG8gc2Nyb2xsU25hcFR5cGUgPSBz
Y3JvbGxpbmdFbGVtZW50U3R5bGUuc2Nyb2xsU25hcFR5cGUoKTsKQEAgLTI2Miw2ICsxMjcsNyBA
QCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhLCBjb25zdCBSZQogCiAgICAgSGFzaE1hcDxmbG9hdCwgU25hcE9mZnNl
dDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsKICAgICBIYXNoTWFwPGZsb2F0
LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNNYXA7CisgICAg
VmVjdG9yPExheW91dFJlY3Q+IHNuYXBBcmVhczsKICAgICBib29sIGhhc0hvcml6b250YWxTbmFw
T2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OkJvdGggfHwg
c2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WEF4aXMgfHwgc2Nyb2xsU25h
cFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6SW5saW5lOwogICAgIGJvb2wgaGFzVmVydGlj
YWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OkJv
dGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WUF4aXMgfHwgc2Ny
b2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6QmxvY2s7CiAKQEAgLTI4OCwxNyAr
MTU0LDI5IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAKICAgICAgICAgc2Nyb2xsU25hcEFy
ZWEgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNjcm9sbFNuYXBBcmVhLCBjaGls
ZC0+c3R5bGUoKS5zY3JvbGxNYXJnaW4oKSwgSW5zZXRPck91dHNldDo6T3V0c2V0KTsKICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiICAgIENvbnNpZGVyaW5n
IHNjcm9sbCBzbmFwIHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25hcEFyZWEpOworCiAgICAgICAg
IGF1dG8gYWxpZ25tZW50ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xsU25hcEFsaWduKCk7CisgICAg
ICAgIGJvb2wgc25hcHNIb3Jpem9udGFsbHkgPSBoYXNIb3Jpem9udGFsU25hcE9mZnNldHMgJiYg
YWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7CisgICAgICAgIGJv
b2wgc25hcHNWZXJ0aWNhbGx5ID0gaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQu
eSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAgICAgICAgaWYgKCFzbmFwc0hv
cml6b250YWxseSAmJiAhc25hcHNWZXJ0aWNhbGx5KQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgLy8gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGVmaW5lZCB2aWEgaXRzIHNjcm9s
bCBwb3NpdGlvbiwgc28gY29udmVydCBldmVyeXRoaW5nIHRvIHNjcm9sbCBvZmZldHNzIGhlcmUu
CisgICAgICAgIGF1dG8gc25hcEFyZWFPcmlnaW5SZWxhdGl2ZVRvQm9yZGVyRWRnZSA9IHNjcm9s
bFNuYXBBcmVhLmxvY2F0aW9uKCkgLSBzY3JvbGxTbmFwUG9ydC5sb2NhdGlvbigpOworICAgICAg
ICBMYXlvdXRSZWN0IHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKHNjcm9sbGFibGVBcmVhLnNjcm9s
bE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoc25hcEFyZWFPcmlnaW5SZWxhdGl2
ZVRvQm9yZGVyRWRnZSkpLCBzY3JvbGxTbmFwQXJlYS5zaXplKCkpOworICAgICAgICBzbmFwQXJl
YXMuYXBwZW5kKHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKTsKKyAgICAgICAgdW5zaWduZWQgc25h
cEFyZWFJbmRleCA9IHNuYXBBcmVhcy5zaXplKCkgLSAxOworCiAgICAgICAgIGF1dG8gc3RvcCA9
IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBTdG9wKCk7Ci0gICAgICAgIGlmIChoYXNIb3Jpem9u
dGFsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6
Ok5vbmUpIHsKKyAgICAgICAgaWYgKHNuYXBzSG9yaXpvbnRhbGx5KSB7CiAgICAgICAgICAgICBh
dXRvIGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNl
dChzY3JvbGxTbmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLm1heFgoKSwgYWxpZ25tZW50Lngs
IHNjcm9sbGVySXNSVEwpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFw
UG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNS
VEwpOwogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50
PihzY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyByb3VuZFRvSW50KGFi
c29sdXRlU2Nyb2xsWFBvc2l0aW9uKSwgMCB9KS54KCksIDAsIG1heFNjcm9sbE9mZnNldC54KCkp
OwotICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFsU25h
cE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAgICAg
ICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxTbmFwT2Zmc2V0c01hcCwg
eyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwgc25hcEFyZWFJbmRleCB9KTsKICAgICAgICAg
fQotICAgICAgICBpZiAoaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueSAhPSBT
Y3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoc25hcHNWZXJ0aWNh
bGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9uID0gY29tcHV0
ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9sbFNuYXBBcmVh
Lm1heFkoKSwgYWxpZ25tZW50LnksIGZhbHNlKSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZz
ZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIGFsaWdubWVudC55
LCBmYWxzZSk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBU
bzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IDAsIHJvdW5k
VG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0
LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2Fs
U25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAg
ICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2FsU25hcE9mZnNldHNNYXAs
IHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AsIHNuYXBBcmVhSW5kZXggfSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTMwOCwzMiArMTg2LDI1IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNG
b3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJl
CiAgICAgfTsKIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFs
U25hcE9mZnNldHMgPSBjb3B5VG9WZWN0b3IoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwLnZhbHVl
cygpKTsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIGlmICghaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmlzRW1w
dHkoKSkgewogICAgICAgICBzdGQ6OnNvcnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmJlZ2luKCks
IGhvcml6b250YWxTbmFwT2Zmc2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAgICAg
ICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6
OlByb3hpbWl0eSkKLSAgICAgICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJh
bmdlcyhob3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBz
Y3JvbGxTbmFwUG9ydC53aWR0aCgpKTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
U25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBvZmZz
ZXRzOiAiIDw8IGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9sbCBz
bmFwIG9mZnNldCByYW5nZXM6ICIgPDwgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOwogICAg
IH0KIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZz
ZXRzID0gY29weVRvVmVjdG9yKHZlcnRpY2FsU25hcE9mZnNldHNNYXAudmFsdWVzKCkpOwotICAg
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzOwogICAgIGlmICghdmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgc3RkOjpzb3J0KHZlcnRpY2FsU25hcE9mZnNldHMuYmVnaW4oKSwgdmVydGljYWxTbmFwT2Zm
c2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAgICAgICAgaWYgKHNjcm9sbFNuYXBU
eXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKLSAgICAg
ICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyh2ZXJ0aWNhbFNuYXBP
ZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbFNuYXBQb3J0LmhlaWdodCgp
KTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgPT4g
Q29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogIiA8PCB2ZXJ0aWNhbFNuYXBP
ZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAi
ID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICIgPDwgdmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9CiAKKyAgICBpZiAoIXNuYXBBcmVhcy5pc0Vt
cHR5KCkpCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9
PiBDb21wdXRlZCBzbmFwIGFyZWFzOiAiIDw8IHNuYXBBcmVhcyk7CisKICAgICBzY3JvbGxhYmxl
QXJlYS5zZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyh7CisgICAgICAgIHNjcm9sbFNuYXBUeXBlLnN0
cmljdG5lc3MsCiAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0cywKICAgICAgICAgdmVydGlj
YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCi0gICAg
ICAgIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcworICAgICAgICBzbmFwQXJlYXMsCiAgICAgfSk7
CiB9CiAKQEAgLTM0Nyw1NyArMjE4LDE3OSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb252ZXJ0T2Zm
c2V0VW5pdChmbG9hdCBpbnB1dCwgZmxvYXQgLyogc2NhbGVGYWN0b3IgKi8pCiAgICAgcmV0dXJu
IExheW91dFVuaXQoaW5wdXQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRUeXBlLCB0
eXBlbmFtZSBPdXRwdXRUeXBlPgotc3RhdGljIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRwdXRU
eXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88SW5wdXRU
eXBlPiYgaW5wdXQsIGZsb2F0IHNjYWxlRmFjdG9yID0gMC4wKQordGVtcGxhdGUgPHR5cGVuYW1l
IElucHV0VHlwZSwgdHlwZW5hbWUgSW5wdXRSZWN0VHlwZSwgdHlwZW5hbWUgT3V0cHV0VHlwZSwg
dHlwZW5hbWUgT3V0cHV0UmVjdFR5cGU+CitzdGF0aWMgU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91
dHB1dFR5cGUsIE91dHB1dFJlY3RUeXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88SW5wdXRUeXBlLCBJbnB1dFJlY3RUeXBlPiYgaW5wdXQsIGZsb2F0IHNj
YWxlRmFjdG9yID0gMC4wKQogewogICAgIGF1dG8gY29udmVydE9mZnNldHMgPSBbc2NhbGVGYWN0
b3JdKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PElucHV0VHlwZT4+JiBpbnB1dCkKICAgICB7CiAg
ICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+PiBvdXRwdXQ7CiAgICAgICAgIG91
dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7CiAgICAgICAgIGZvciAo
YXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5k
KHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVGYWN0b3IpLCBvZmZzZXQu
c3RvcCB9KTsKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoeyBjb252ZXJ0T2Zm
c2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3RvciksIG9mZnNldC5zdG9wLCBvZmZzZXQu
c25hcEFyZWFJbmRleCB9KTsKICAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICB9OwogCi0gICAg
YXV0byBjb252ZXJ0T2Zmc2V0UmFuZ2VzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8SW5wdXRUeXBlPj4mIGlucHV0KQorICAgIGF1dG8gY29udmVydFJlY3Rz
ID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8SW5wdXRSZWN0VHlwZT4mIGlucHV0KQogICAg
IHsKLSAgICAgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPE91dHB1dFR5cGU+PiBvdXRwdXQ7
CisgICAgICAgIFZlY3RvcjxPdXRwdXRSZWN0VHlwZT4gb3V0cHV0OwogICAgICAgICBvdXRwdXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dC5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8m
IHJhbmdlIDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHsgY29u
dmVydE9mZnNldFVuaXQocmFuZ2Uuc3RhcnQsIHNjYWxlRmFjdG9yKSwgY29udmVydE9mZnNldFVu
aXQocmFuZ2UuZW5kLCBzY2FsZUZhY3RvcikgfSk7CisgICAgICAgIGZvciAoYXV0byYgcmVjdCA6
IGlucHV0KSB7CisgICAgICAgICAgICBPdXRwdXRSZWN0VHlwZSBvdXRwdXRSZWN0KAorICAgICAg
ICAgICAgICAgIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QueCgpLCBzY2FsZUZhY3RvciksIGNvbnZl
cnRPZmZzZXRVbml0KHJlY3QueSgpLCBzY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgY29u
dmVydE9mZnNldFVuaXQocmVjdC53aWR0aCgpLCBzY2FsZUZhY3RvciksIGNvbnZlcnRPZmZzZXRV
bml0KHJlY3QuaGVpZ2h0KCksIHNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKG91dHB1dFJlY3QpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBvdXRw
dXQ7CiAgICAgfTsKIAogICAgIHJldHVybiB7CisgICAgICAgIGlucHV0LnN0cmljdG5lc3MsCiAg
ICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0cyksCiAgICAg
ICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0LnZlcnRpY2FsU25hcE9mZnNldHMpLAotICAgICAgICBj
b252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSwKLSAg
ICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
CisgICAgICAgIGNvbnZlcnRSZWN0cyhpbnB1dC5zbmFwQXJlYXMpLAogICAgIH07CiB9CiAKIHRl
bXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4g
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNl
ZFNjYWxlRmFjdG9yICovKSBjb25zdAorTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvIEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2VkU2NhbGVG
YWN0b3IgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0LCBM
YXlvdXRVbml0PigqdGhpcyk7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0LCBG
bG9hdFJlY3QsIExheW91dFVuaXQsIExheW91dFJlY3Q+KCp0aGlzKTsKIH0KIAogdGVtcGxhdGUg
PD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4gU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpIGNvbnN0CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QKIHsK
LSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0VW5pdCwgZmxvYXQ+KCp0aGlzLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPExheW91dFVu
aXQsIExheW91dFJlY3QsIGZsb2F0LCBGbG9hdFJlY3Q+KCp0aGlzLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiB9CiAKLXRlbXBsYXRlIDw+Ci1zdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0
aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5h
bWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWF4Rm9yQXhpcyhSZWN0VHlwZSByZWN0LCBT
Y3JvbGxFdmVudEF4aXMgYXhpcykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRo
T2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9yQXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhp
cyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsID8gcmVjdC5tYXhYKCkgOiByZWN0Lm1heFkoKTsKIH0KIAotdGVt
cGxhdGUgPD4KLXN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWlu
Rm9yQXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4aXMgYXhpcykKK3sKKyAgICByZXR1
cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByZWN0LngoKSA6IHJlY3Qu
eSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+CitzdGF0aWMgYm9vbCBpc05l
YXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShTY3JvbGxTbmFwU3RyaWN0bmVzcyBzdHJpY3Ru
ZXNzLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbiwgVW5pdFR5cGUgY2FuZGlkYXRlU25hcE9m
ZnNldCwgVW5pdFR5cGUgdmlld3BvcnRMZW5ndGgpCit7CisgICAgaWYgKHN0cmljdG5lc3MgIT0g
U2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFyeSBjaG9pY2UgZm9yIHdoYXQgaXQgbWVhbnMgdG8g
YmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFwIG9mZnNldC4gV2Ugc2hvdWxkIHBsYXkgYXJvdW5k
IHdpdGgKKyAgICAvLyB0aGlzIGFuZCBzZWUgd2hhdCBmZWVscyBiZXN0LgorICAgIHN0YXRpYyBj
b25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZvclBy
b3hpbWl0eSA9IDAuMzsKKyAgICByZXR1cm4gc3RkOjphYnMoZmxvYXQge2NhbmRpZGF0ZVNuYXBP
ZmZzZXQgLSBzY3JvbGxEZXN0aW5hdGlvbn0pIDw9ICh2aWV3cG9ydExlbmd0aCAqIHJhdGlvT2ZT
Y3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5KTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZSwgdHlwZW5hbWUgU2l6
ZVR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4gY2FsY3VsYXRlQ2xv
c2VzdFNuYXBPZmZzZXQoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPFVuaXRUeXBlLCBSZWN0
VHlwZT4mIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3Bv
cnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbE9mZnNldCkKK3sKKyAgICBjb25zdCBhdXRvJiBz
bmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CisgICAgYXV0byBwYWlyRm9y
Tm9TbmFwcGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZh
bGlkU25hcE9mZnNldEluZGV4KTsKKyAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisKKyAgICAvLyBUaGUgZmlyc3Qgc25hcCBw
b2ludCB3aXRoIGBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXNgIGJldHdlZW4gdGhlIG9yaWdpbmFs
IHBvc2l0aW9uIGFuZCBkZXN0aW5hdGlvbiB0YWtlcyBwcmVjZWRlbmNlLgorICAgIGlmIChvcmln
aW5hbE9mZnNldCkgeworICAgICAgICBpZiAoYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0ID0gZmlu
ZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oc25hcE9mZnNl
dHMsICpvcmlnaW5hbE9mZnNldCwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuICpmaXJzdFNuYXBTdG9wT2Zmc2V0OworICAgIH0KKworICAgIGF1dG8gdmlld3Bv
cnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0
U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgpOworICAgIGJvb2wgbGFuZGVkSW5z
aWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCA9IGZhbHNlOworICAgIE9wdGlvbmFsPHN0
ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91cywgbmV4dDsKKyAgICBPcHRpb25h
bDxSZWN0VHlwZT4gcHJldmlvdXNTbmFwQXJlYSwgbmV4dFNuYXBBcmVhOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzbmFwT2Zmc2V0cy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25z
dCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3NuYXBPZmZzZXRzW2ldLnNuYXBBcmVh
SW5kZXhdOworICAgICAgICBsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0
IHw9IChtaW5Gb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwgYXhpcykgPD0gc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQgJiYgbWF4Rm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIGF4aXMpID49IChz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCArIHZpZXdwb3J0TGVuZ3RoKSk7CisgICAgICAgIC8vIElm
IHRoZSBzY3JvbGwgbGFuZGVkIGV4YWN0bHkgb24gYSBzbmFwIG9mZnNldCwgY2hvb3NlIHRoYXQg
b25lLgorICAgICAgICBVbml0VHlwZSBwb3RlbnRpYWxTbmFwT2Zmc2V0ID0gc25hcE9mZnNldHNb
aV0ub2Zmc2V0OworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA9PSBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihwb3RlbnRp
YWxTbmFwT2Zmc2V0LCBpKTsKKworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA8IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBwcmV2aW91cyA9IHN0ZDo6bWFr
ZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAgcHJldmlvdXNTbmFw
QXJlYSA9IHNuYXBBcmVhOworICAgICAgICB9IGVsc2UgaWYgKCFuZXh0ICYmIHBvdGVudGlhbFNu
YXBPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkgeworICAgICAgICAgICAgbmV4dCA9
IHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAgbmV4
dFNuYXBBcmVhID0gc25hcEFyZWE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGcm9tIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nyb2xsLXNuYXAtMS8jc25hcC1vdmVyZmxvdworICAg
IC8vICJJZiB0aGUgc25hcCBhcmVhIGlzIGxhcmdlciB0aGFuIHRoZSBzbmFwcG9ydCBpbiBhIHBh
cnRpY3VsYXIgYXhpcywgdGhlbiBhbnkgc2Nyb2xsIHBvc2l0aW9uCisgICAgLy8gaW4gd2hpY2gg
dGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0LCBhbmQgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIGdlb21ldHJpY2FsbHkKKyAgICAvLyBwcmV2aW91cyBhbmQgc3Vic2VxdWVudCBzbmFw
IHBvc2l0aW9ucyBpbiB0aGF0IGF4aXMgaXMgbGFyZ2VyIHRoYW4gc2l6ZSBvZiB0aGUgc25hcHBv
cnQgaW4KKyAgICAvLyB0aGF0IGF4aXMsIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiBpbiB0aGF0
IGF4aXMuIFRoZSBVQSBtYXkgdXNlIHRoZSBzcGVjaWZpZWQgYWxpZ25tZW50IGFzIGEKKyAgICAv
LyBtb3JlIHByZWNpc2UgdGFyZ2V0IGZvciBjZXJ0YWluIHNjcm9sbCBvcGVyYXRpb25zIChlLmcu
IGV4cGxpY2l0IHBhZ2luZykuIgorICAgIGlmIChsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25z
dW1lc1ZpZXdwb3J0ICYmICghcHJldmlvdXMgfHwgIW5leHQgfHwgKCgqbmV4dCkuZmlyc3QgLSAo
KnByZXZpb3VzKS5maXJzdCkgPj0gdmlld3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gcGFp
ckZvck5vU25hcHBpbmc7CisKKyAgICBpZiAob3JpZ2luYWxPZmZzZXQpIHsKKyAgICAgICAgLy8g
SWYgdGhpcyBpcyBhIGRpcmVjdGlvbmFsIHNjcm9sbCBhbmQgdGhlcmUgYXJlIG5vIHNjcm9sbCBz
dG9wcyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLAorICAgICAgICAvLyBkb24ndCBzY3JvbGwg
cGFzdCB0aGUgZWRnZSBvZiB0aGUgc2Nyb2xsIGFyZWEuCisgICAgICAgIGlmICghbmV4dCAmJiBw
cmV2aW91cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om1heCgoKnBy
ZXZpb3VzKS5maXJzdCwgbWF4Rm9yQXhpczxVbml0VHlwZT4oKnByZXZpb3VzU25hcEFyZWEsIGF4
aXMpIC0gdmlld3BvcnRMZW5ndGgpLCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKKyAgICAgICAg
aWYgKCFwcmV2aW91cyAmJiBuZXh0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KG1pbkZvckF4aXM8VW5pdFR5cGU+KCpuZXh0U25hcEFyZWEsIGF4aXMpLCBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKKworICAgICAgICAvLyBGcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
c2Nyb2xsLXNuYXAtMS8jY2hvb3NpbmcKKyAgICAgICAgLy8gIlVzZXIgYWdlbnRzIG11c3QgZW5z
dXJlIHRoYXQgYSB1c2VyIGNhbiDigJxlc2NhcGXigJ0gYSBzbmFwIHBvc2l0aW9uLCByZWdhcmRs
ZXNzIG9mIHRoZSBzY3JvbGwKKyAgICAgICAgLy8gbWV0aG9kLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IHNuYXAgdHlwZSBpcyBtYW5kYXRvcnkgYW5kIHRoZSBuZXh0IHNuYXAgcG9zaXRpb24gaXMgbW9y
ZSB0aGFuCisgICAgICAgIC8vIHR3byBzY3JlZW4td2lkdGhzIGF3YXksIGEgbmHDr3ZlIOKAnGFs
d2F5cyBzbmFwIHRvIG5lYXJlc3TigJ0gc2VsZWN0aW9uIGFsZ29yaXRobSBtaWdodCDigJx0cmFw
4oCdIHRoZQorICAgICAgICAvLyB1c2VyIGlmIHRoZWlyIGVuZCBwb3NpdGlvbiB3YXMgb25seSBv
bmUgc2NyZWVuLXdpZHRoIGF3YXkuIEluc3RlYWQsIGEgc21hcnRlciBhbGdvcml0aG0gdGhhdAor
ICAgICAgICAvLyBvbmx5IHJldHVybmVkIHRvIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9uIGlm
IHRoZSBlbmQtcG9pbnQgd2FzIGEgZmFpcmx5IHNtYWxsIGRpc3RhbmNlIGZyb20KKyAgICAgICAg
Ly8gaXQsIGFuZCBvdGhlcndpc2UgaWdub3JlZCB0aGUgc3RhcnRpbmcgc25hcCBwb3NpdGlvbiwg
d291bGQgZ2l2ZSBiZXR0ZXIgYmVoYXZpb3IuIgorICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMg
aWYgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGFyZSBjaG9vc2luZyBiZXR3ZWVuIHR3
byBjb21wYXRpYmxlCisgICAgICAgIC8vIHNuYXAgb2Zmc2V0cy4KKyAgICAgICAgaWYgKCpvcmln
aW5hbE9mZnNldCA8IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmICgqcHJldmlvdXMpLmZpcnN0
IDw9ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIHByZXZpb3VzLnJlc2V0KCk7CisgICAg
ICAgIGlmICgqb3JpZ2luYWxPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAmJiAoKm5l
eHQpLmZpcnN0ID49ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIG5leHQucmVzZXQoKTsK
KyAgICB9CisKKyAgICBpZiAobmV4dCAmJiAhaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1p
dHkoaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgKCpuZXh0KS5maXJz
dCwgdmlld3BvcnRMZW5ndGgpKQorICAgICAgICBuZXh0LnJlc2V0KCk7CisgICAgaWYgKHByZXZp
b3VzICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShpbmZvLnN0cmljdG5lc3Ms
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKnByZXZpb3VzKS5maXJzdCwgdmlld3BvcnRMZW5n
dGgpKQorICAgICAgICBwcmV2aW91cy5yZXNldCgpOworCisgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBjb21wYXRpYmxlIG9mZnNldHMgdG8gY2hvb3NlIGJldHdlZW4sIGp1c3QgZG8gdGhlIG9idmlv
dXMgdGhpbmcKKyAgICAvLyBhbmQgZG8gbm8gc25hcHBpbmcgb3Igb25seSBzZWxlY3QgdGhlIHNp
bmdsZSBjb21wYXRpYmxlIG9mZnNldC4KKyAgICBpZiAoIXByZXZpb3VzICYmICFuZXh0KQorICAg
ICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisgICAgaWYgKCFwcmV2aW91cykKKyAgICAg
ICAgcmV0dXJuICpuZXh0OworICAgIGlmICghbmV4dCkKKyAgICAgICAgcmV0dXJuICpwcmV2aW91
czsKKworICAgIC8vIElmIHRoaXMgc2Nyb2xsIGlzbid0IGRpcmVjdGlvbmFsLCB0aGVuIGNob29z
ZSB3aGF0ZXZlciBzbmFwIHBvaW50IGlzIGNsb3Nlci4KKyAgICBVbml0VHlwZSBwcmV2aW91c1Nu
YXBPZmZzZXQgPSAoKnByZXZpb3VzKS5maXJzdDsKKyAgICBVbml0VHlwZSBuZXh0U25hcE9mZnNl
dCA9ICgqbmV4dCkuZmlyc3Q7CisgICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKKyAgICAg
ICAgYm9vbCBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXggPSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCAtIHByZXZpb3VzU25hcE9mZnNldCA8PSBuZXh0U25hcE9mZnNldCAtIHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0OworICAgICAgICByZXR1cm4gaXNDbG9zZXJUb1ByZXZpb3VzU25hcEluZGV4
ID8gKnByZXZpb3VzIDogKm5leHQ7CisgICAgfQorCisgICAgLy8gRmluYWxseSwgaWYgd2UgaGF2
ZSBhIGRpcmVjdGlvbmFsIHNjcm9sbCBwcmVmZXIgdGhlIHNuYXAgcG9pbnQgdGhhdCBpcyBpbiB0
aGUgc2Nyb2xsIGRpcmVjdGlvbi4KKyAgICByZXR1cm4gdmVsb2NpdHkgPCAwID8gKnByZXZpb3Vz
IDogKm5leHQ7Cit9CisKKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxMYXlv
dXRVbml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRT
aXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5n
KSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxMYXlvdXRV
bml0LCBMYXlvdXRSZWN0LCBMYXlvdXRTaXplPigqdGhpcywgYXhpcywgdmlld3BvcnRTaXplLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7Cit9CisKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CitzdGQ6OnBhaXI8
ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
LCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PGZsb2F0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMob2Zmc2V0c0Zv
ckF4aXMoYXhpcyksIG9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcp
OworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxmbG9hdCwgRmxvYXRSZWN0
LCBGbG9hdFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaAppbmRleCAyMGE2NDdmZWExMmM2Y2M4YjU1NTc5YzUxYmQwYTM2MDVm
ZGNlNWU2Li5iOTkyYmFmZTA3N2M3NjJmNTJlZThkNGI3YjRkMDFkMzA0NzQ0ZmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaApAQCAtMjcsNiArMjcsMTAgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91
dFVuaXQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlN0eWxlU2Nyb2xs
U25hcFBvaW50cy5oIgpAQCAtMzUsMzkgKzM5LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgUmVuZGVy
Qm94OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgordGVtcGxh
dGUgPHR5cGVuYW1lIE9mZnNldFR5cGU+CiBzdHJ1Y3QgU25hcE9mZnNldCB7Ci0gICAgVCBvZmZz
ZXQ7CisgICAgT2Zmc2V0VHlwZSBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsKKyAg
ICB1bnNpZ25lZCBzbmFwQXJlYUluZGV4OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewotICAgIFQgc3RhcnQ7Ci0gICAgVCBlbmQ7Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBlLCB0
eXBlbmFtZSBSZWN0VHlwZT4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBWZWN0b3I8U25hcE9mZnNldDxUPj4g
aG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxTbmFwT2Zmc2V0PFQ+PiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3M7CiAKLSAg
ICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSByYW5nZXMgb2Ygc2Ny
b2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVyIHNjcm9sbCBzbmFw
cGluZy4KLSAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgxKSBmb3IgcHJveGlt
aXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMgYmV0d2VlbiBhZGph
Y2VudCBzbmFwIG9mZnNldHMKLSAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNldCByYW5nZXMsIGFu
ZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0aGUg
c25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCi0gICAgLy8gd2hlcmUgdGhlIHNuYXAgcG9y
dCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRvIGJlIHZhbGlkIHNu
YXAgcG9zaXRpb25zLgotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4+
IGhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRUeXBl
Pj4gdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8UmVjdFR5cGU+IHNuYXBBcmVhczsK
IAotICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVy
KSBjb25zdAorICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T2Zm
c2V0VHlwZSwgUmVjdFR5cGU+JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBo
b3Jpem9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIHZl
cnRpY2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAm
JiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzOworICAgICAgICByZXR1cm4gc3RyaWN0bmVzcyA9PSBvdGhlci5zdHJpY3RuZXNzICYmIGhv
cml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldHMgJiYgdmVy
dGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZzZXRzICYmIHNuYXBBcmVh
cyA9PSBvdGhlci5zbmFwQXJlYXM7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
QEAgLTc1LDI5ICs2OSwyNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICAg
ICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxTbmFw
T2Zmc2V0cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNuYXBPZmZzZXQ8VD4+IG9m
ZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIFZlY3RvcjxTbmFw
T2Zmc2V0PE9mZnNldFR5cGU+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAg
IH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gb2Zmc2V0UmFuZ2VzRm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMg
OiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdXRwdXRUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVy
dFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8VCwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcywgVCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlv
bmFsPFQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxs
b3B0KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlLCB0eXBlbmFtZSBP
dXRwdXRSZWN0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1dFJl
Y3RUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8T2Zmc2V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgY29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgT2Zmc2V0VHlwZSBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPE9mZnNldFR5cGU+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIH07
CiAKK3VzaW5nIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsKK3VzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OworCiB0ZW1w
bGF0ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRT
Y2FsZUZhY3RvciAqLykgY29uc3Q7Ci10ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpw
YWlyPGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2Vz
dFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGly
ZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxv
YXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2Fs
ZUZhY3RvciAqLykgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBP
UlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86
OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBj
b25zdDsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIExheW91dFVuaXQg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRV
bml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZl
cnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1w
bGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBjb25zdCB1bnNp
Z25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTEwNiw3ICs5OCw3
IEBAIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKIC8v
IHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBkYXRlU25hcE9m
ZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJlbmRlckJveCYg
c2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRT
dHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2V0PFQ+IG9mZnNldCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBP
ZmZzZXRUeXBlPiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0
cywgU25hcE9mZnNldDxPZmZzZXRUeXBlPiBvZmZzZXQpCiB7CiAgICAgdHMgPDwgb2Zmc2V0Lm9m
ZnNldDsKICAgICBpZiAob2Zmc2V0LnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykKQEAg
LTExNCwxMyArMTA2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKICAgICByZXR1cm4gdHM7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxUPiYgcmFuZ2UpCi17Ci0gICAgdHMg
PDwgInN0YXJ0OiAiIDw8IHJhbmdlLnN0YXJ0IDw8ICIgZW5kOiAiIDw8IHJhbmdlLmVuZDsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZjQw
ODE5YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkwNTk4NzVmODBlMS4uODQzMjg4MWM4OWYxNmM1N2I0
Njc0YzI0YmI0YTk4Mzg2ZDdhYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFw
T2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3Zv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3Qg
RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9mZnNl
dHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdiNDE2NDA0NC4uYzVkNzYz
OWNmMWNhZTBjN2UwMzdmYzM1OTlmMjI1ODFiYWFkYWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmgKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRz
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiYgbmV3T2Zmc2V0c0luZm8pOworICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5m
bzsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IEZs
b2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdPZmZzZXRzSW5mbyk7CiAKICAgICB1bnNpZ25l
ZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1f
c25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9m
ZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYzI4YzA4
Mjg4MzFhNThjMjJmM2M1MWNlNjdkMTBlNy4uOGI2MzRlMWFkNjRmMjQxOWJmMmJhOTA4NDMxYzgz
N2M5N2Q2ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJl
YW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Citjb25zdCBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmU0OWQwYjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNi4uNTVi
Y2VkM2UwZTYxMjEwNmQ5M2Y4NTJlZWY3ZDQ2NDIxMDUyNTQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNj
cm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHVuc2lnbmVk
IGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
dW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5k
ZXg7IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9jdXJy
ZW50U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1f
c25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9m
ZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCmluZGV4IGE1YjQ4YzIwMzQxNWFiN2IwOWNlOWMzZmE5OWMxNWVhNjM3NDBlNDUuLjNl
MjQ1NzRhYjAwZWZmNDVlMGY4Y2ExMGYxMzA4NTFhODFhZWE3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRl
Tm9kZShjb25zdCBTY3JvbGxpbmdTCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCi0gICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CisgICAgICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zm
c2V0c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKSk7CiAKICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAg
ICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuY3BwCmluZGV4IGMzZWM2YzQ0MWQzMTJmNTg1MmJiZDZmMmI0OTBlMjdjYjVl
MzEzYWUuLjY1NTAwZDEwZmVmMzgxMDc0MjJlMjlmYjk5YzA1NmUwNjEyNWRiMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygq
c25hcE9mZnNldEluZm8pOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9s
bFNuYXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0SW5mbykKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50
cyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRJbmZvKQogewog
ICAgIGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFw
U3RhdGUgPSBudWxscHRyOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxl
cjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0
ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zm
c2V0cy5maXJzdCgpLm9mZnNldCksIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwotCi0gICAg
dW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0
U25hcE9mZnNldChheGlzLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CisgICAgTGF5b3V0U2l6
ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQu
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25h
cFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRT
aXplLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTM3LDcgKzEzNyw5IEBAIGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9m
ZnNldC5oYXNWYWx1ZSgpKQogICAgICAgICBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBM
YXlvdXRVbml0KCpvcmlnaW5hbE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsK
LSAgICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nl
c3RTbmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQoZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVu
dC5wYWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5p
dHMpLmZpcnN0OworCisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3Bv
cnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAg
IExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNu
YXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0
IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJ
bkxheW91dFVuaXRzKS5maXJzdDsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNj
YWxlRmFjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaAppbmRleCBkOTI1ZmQ0NTU4NGMwMTExYzllZjBjMjg5MWY3Yzc1MTY2MTBlYjdiLi5kZDUz
YWRhOTBhMmY1ZjI5MDg4MDEwMjNjM2U1YTNjNDMxZWY2MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2lu
dHMoY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgdm9pZCBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQpOwogICAg
IHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0KTsK
ICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggN2Q2OGQ1MGRk
ZTc2ZTg5MDk2Y2QzZTU4ZjNmYzM5MWZmYzY3MTc3Yy4uMWVlNzQxNjdiODE5ODNmNDcwMmQ4MzZh
NmY5NzcwNzcyNDcyMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBz
dGF0ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zm
c2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0ZWRT
Y3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25P
ZmZzZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb250ZW50U2l6ZS53aWR0aCgpIC0g
dmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxU
YXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVT
bmFwSW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkg
LSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3Jv
bGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2Fj
dGl2ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRG
b3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0
LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERl
bHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0
WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0
KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBh
Z2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwogICAg
IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0
T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSwxMCArOTEsMTEg
QEAgRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Ny
b2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0
b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9h
dCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZz
ZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFs
RGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxP
ZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBh
Z2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4
KSBjb25zdAogewogICAgIExheW91dFVuaXQgcHJvcG9zZWRPZmZzZXQ7Ci0gICAgc3RkOjp0aWUo
cHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5j
bG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VT
Y2FsZSksIGluaXRpYWxEZWx0YSk7CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydExheW91dFNpemUo
dmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgc3RkOjp0
aWUocHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5m
by5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydExheW91dFNpemUsIExheW91dFVuaXQo
cHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhKTsKICAgICBpZiAob3V0
QWN0aXZlU25hcEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgIHJldHVy
biBwYWdlU2NhbGUgKiBwcm9wb3NlZE9mZnNldDsKICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4o
c3RhcnRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNldCk7CkBAIC0xMDUsMTEgKzEwNiw2IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlJiBzdGF0ZSkKICAgICB0cyA8PCAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0Zv
ckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJzbmFwIG9mZnNldHMgeSIsIHN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsKSk7Ci0gICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9y
QXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBP
ZmZzZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5z
bmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAg
ICB0cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFw
SW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiYWN0aXZlIHNuYXAgaW5kZXggeSIsIHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0
NGM2MzliNGFmZjBjMjQyNjk1ODIxNDk5Li42YjZkMjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2
NjVkNjE0Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgKQEAgLTU3LDI0ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0czsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9z
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBj
b25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNl
dEluZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7
IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0
c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVj
dG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0g
ICAgICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAg
ICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNl
dHM7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcyA9IHNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAg
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFw
T2Zmc2V0UmFuZ2VzOwotICAgICAgICB9Ci0gICAgfQorICAgIGNvbnN0IExheW91dFNjcm9sbFNu
YXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZz
ZXRzSW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xs
U25hcE9mZnNldHNJbmZvJiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsg
fQogCiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFN0YXRlOyB9CiAKQEAgLTEwMCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBm
bG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1h
eFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwg
ZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVT
bmFwSW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNj
cm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFw
SW5kZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxT
bmFwU3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3Rh
dGUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxT
bmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9OwogCi0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+IG1fc25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKIAogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcElu
ZGV4WCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4
ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcw
MDZhNTkxNjk2MWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcApAQCAtNDc5LDE5ICs0NzksMTkgQEAgU3RyaW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNh
bFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxl
QXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKK0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5m
byYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFt
X3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zm
c2V0c0luZm8gPSBtYWtlVW5pcXVlPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAg
ICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0
c0luZm88TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0
Citjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFw
T2Zmc2V0SW5mbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgp
OwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25z
dCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFi
bGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKGluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNs
ZWFyU25hcE9mZnNldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CmluZGV4IDdlYjdiNTQwMjgyODQwYWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzlj
ZGI3ZjY3OTM5OGE3Yzg3NzMxMmVkNDk3YzE2ZmU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1
c2VzU2Nyb2xsU25hcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4q
IHNuYXBPZmZzZXRJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0
U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBP
ZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAg
IHZvaWQgc2V0U2Nyb2xsU25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvJik7CiAgICAgdm9pZCBjbGVhclNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggPSBpbmRleDsgfQpAQCAtMzg1LDggKzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87Cisg
ICAgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBP
ZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCmluZGV4IGMwOTVjZDY2ZjU5NTZmOGI4OWFhY2IzM2Q1YjdmODAyMzBhOWE3
YjUuLmQ0NTIxZDY1OGMzM2ZhZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyNzgs
NyArMTI3OCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCi1zdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbykKK3N0YXRpYyBib29s
IGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvKiBvZmZzZXRJbmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDNlMzgwZmQxNDVkNzIyNWJhYzA1NzMzMGMxOWQ2Y2E4OGEwZTBjZDIu
LjUyM2FmNDQyMmUzMjVjNDI2MmI5MmY1YjdjZWUzMzllMzIzMGNjZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDkg
Kzk4LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxE
YXRhPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgUmVxdWVzdGVkU2Nyb2xsRGF0YSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKKyAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTbmFw
T2Zmc2V0PGZsb2F0Pj4gewpAQCAtMzExLDcgKzMxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Ny
b2xsCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAg
U0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9s
bE9yaWdpbiwgSW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+LCBz
ZXRTbmFwT2Zmc2V0c0luZm8pOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvLCBzZXRTbmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJ
bmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJy
ZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKQEAgLTU0NCwyMyArNTQ0LDIwIEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTbmFw
T2Zmc2V0PGZsb2F0CiB9CiAKIAotdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3ZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaG9yaXpvbnRh
bFNuYXBPZmZzZXRzOwogICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzOwot
ICAgIGVuY29kZXIgPDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICBlbmNv
ZGVyIDw8IGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5m
by5zbmFwQXJlYXM7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD4mIGluZm8pCitib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8mIGluZm8pCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmhvcml6b250YWxTbmFw
T2Zmc2V0cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnNuYXBBcmVh
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDM4ZGQ5ZDMx
ZTZjN2NmNzk0OTU2ZTc3MzBiMTA3ZGU0OTQ3YTRiODcuLjg3ZTRkNDYwZWUzZTQxY2M3OTg2OTY0
YzMxNDg1ZWQzNTZmMGQ3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMjgwNSwzMiArMjgwNSw2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFNlCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KLXZvaWQg
QXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+JiByYW5nZSkKLXsKLSAgICBl
bmNvZGVyIDw8IHJhbmdlLnN0YXJ0OwotICAgIGVuY29kZXIgPDwgcmFuZ2UuZW5kOwotfQotCi1h
dXRvIEFyZ3VtZW50Q29kZXI8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0
Pj4KLXsKLSAgICBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4gcmFuZ2U7Ci0gICAg
ZmxvYXQgc3RhcnQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGFydCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBmbG9hdCBlbmQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShlbmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmFuZ2Uuc3Rh
cnQgPSBzdGFydDsKLSAgICByYW5nZS5lbmQgPSBlbmQ7Ci0gICAgcmV0dXJuIHJhbmdlOwotfQot
Ci0jZW5kaWYKLQogdm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uJiBvcHRpb24p
CiB7CiAgICAgZW5jb2RlciA8PCBvcHRpb24uZGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDkyOGRhNzU2MGMzZTg5YmQ0MWQ1
MThhNmI2MmU1NGU4YTRlZWY1YTguLmUzZWJkMzNjMGU2OWNjMjM0ZjFjNmQ1ODE0ZTdiNDc3OWZh
NjZmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC03NDMsMTUgKzc0Myw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcj4gewogCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4m
KTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+
PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotI2VuZGlmCi0KIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9u
Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDExNjc1ZjMyNDViYTExYWMzOThmZGJhMmZj
ZTM2M2JhYmYwYWE0NTQuLjA0NjQxMDhmZDhmYWQ0OGIyYmQ0ZTM4ZjgwZjljNmIyYTU4MDI5MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0KQEAgLTIyMywxNCArMjIzLDEyIEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eTo6c2hvdWxkU25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVu
CiAKIGZsb2F0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zm
c2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3Jv
bGxEZXN0aW5hdGlvbiwgZmxvYXQgdmVsb2NpdHksIHVuc2lnbmVkJiBjdXJyZW50SW5kZXgpIGNv
bnN0CiB7Ci0gICAgU2Nyb2xsaW5nVHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJv
b3ROb2RlKCk7Ci0gICAgQVNTRVJUKHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUo
KSk7Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05v
ZGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7
CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUg
PSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNl
dHNJbmZvID0gcm9vdFNjcm9sbGluZ05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxv
YXQgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFn
ZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFw
T2Zmc2V0OwotICAgIHN0ZDo6dGllKHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgp
ID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHNjYWxlZFNjcm9sbERl
c3RpbmF0aW9uLCB2ZWxvY2l0eSk7CisgICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQs
IGN1cnJlbnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
cm9vdFNjcm9sbGluZ05vZGUtPmxheW91dFZpZXdwb3J0KCkuc2l6ZSgpLCBzY2FsZWRTY3JvbGxE
ZXN0aW5hdGlvbiwgdmVsb2NpdHkpOwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAq
IG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
bW0KaW5kZXggODgwYzAzMTk1Zjg5YzRiZDEzZGQ2YTY0NjUyM2YxZGY4NGM5NTY0ZS4uOGZjNjYx
NWY3NmYzYzlmYWQwMGY1OTRiMzRiMTNkZDQ0YzkyM2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAt
MTA2LDE2ICsxMDYsMTcgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNj
cm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25lZCBv
cmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAg
ICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVO
b2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCgpOwogCisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0U2l6ZShzdGF0aWNfY2FzdDxm
bG9hdD4oQ0dSZWN0R2V0V2lkdGgoW3Njcm9sbFZpZXcgYm91bmRzXSkpLCBzdGF0aWNfY2FzdDxm
bG9hdD4oQ0dSZWN0R2V0SGVpZ2h0KFtzY3JvbGxWaWV3IGJvdW5kc10pKSk7CiAgICAgY29uc3Qg
YXV0byYgc25hcE9mZnNldHNJbmZvID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKTsKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlh
bFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0
KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgaG9yaXpvbnRhbFRhcmdldCwg
dmVsb2NpdHkueCk7CisgICAgICAgIGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhd
ID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgdmlld3BvcnRTaXplLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0
eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYg
KGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcu
Y29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0g
cG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAogICAgIGlmICghc25hcE9mZnNldHNJbmZv
LnZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlh
bFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0
KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxv
Y2l0eS54KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBz
bmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueCk7CiAg
ICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxU
YXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhl
aWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFw
UG9zaXRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggN2Y4YTllMGY2ZDZhYzZjOGU4YzAwNTUxZGJkNjNiYmMwNTkwN2Mw
Mi4uZDQ5NGJlY2UyNjY3Y2JhNmNhYjJmN2I5NzBlNDkxMGNiY2QxMDY5NiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0
Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZs
b3dpbmcgc25hcCBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1n
dXR0ZXIuaHRtbDogVGhpcyB0ZXN0IHVzZWQgc25hcCBhcmVhcyB0aGF0CisgICAgICAgIG92ZXJm
bG93IHRoZSBzbmFwcG9ydCwgdGh1cyBtZWFudCB0aGF0IGl0IHJlbGllZCBvbiBub24tc3BlYyBj
b21wbGlhbnQgYmVoYXZpb3IuIFJld29yayBpdCBzbworICAgICAgICB0aGF0IHRoZSBzbmFwIGFy
ZWFzIGRvIG5vdCBvdmVyZmxvdywgbWFpbnRhaW5pbmcgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWw6IERpdHRv
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1sOiBEaXR0by4KKwogMjAyMS0wMy0xNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgZHluYW1pYyBp
bXBvcnQgaW4gc2VydmljZSB3b3JrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDFhZTMyNmMzY2IwYjJjNGNlMzU2ODNiN2Q4YTg2ZTVkM2RiMjVlNTkuLjU0NzM4YmJkMWQ5NTk2
N2M4OTIwOTQ2NDE1OTNlOWEzNTUzYWNkZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAzLTE1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBQcm9wZXJseSBoYW5k
bGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25h
cC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dDogVXBkYXRlIGV4cGVjdGF0aW9u
cyB0bworICAgICAgICBzaG93IHRoYXQgdGhpcyB0ZXN0IGlzIG5vdyBwYXNzaW5nLgorCiAyMDIx
LTAzLTEwICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIERvIG5vdCBzaHJpbmsgcmFkaW8gYnV0dG9ucyBiZWxsb3cgaXRzIHNpemUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xpY2stc2Nyb2xs
YmFyLWd1dHRlci5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwKaW5kZXggN2IzNTI2Y2M0ZGQwN2Q1MWM5ZWM5
M2RjODlkNDkwMmJmMGJkNDYzMi4uOTRkYThiZTUzMWJmZGViOTQyMDVmN2U4ZWMyMTI2MWQxZGY4
NmJmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwKQEAgLTM0LDIx
ICszNCwzMiBAQAogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IGJvdGggbWFuZGF0
b3J5OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuYmxvY2sgewotICAgICAgICAgICAg
ICAgIGhlaWdodDogMTAwMHB4OwotICAgICAgICAgICAgICAgIHdpZHRoOiAyNTBweDsKLSAgICAg
ICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7Ci0gICAgICAgICAgICB9Ci0KICAg
ICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciB7CiAgICAgICAgICAgICAgICAgaGVpZ2h0OiAx
MDAlOwogICAgICAgICAgICAgICAgIHdpZHRoOiAyMDAwcHg7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciAuYmxvY2sgewotICAgICAgICAgICAgICAgIHdp
ZHRoOiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNTBweDsKKyAgICAgICAgICAg
IC5ob3Jpem9udGFsLWRyYXdlciA+IGRpdiB7CisgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDk5MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MTAwJTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4g
ZGl2LnNuYXAtcG9pbnQgeworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFy
dDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTBweDsKKyAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICN2ZXJ0aWNhbC1jb250YWluZXIgPiBkaXYgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAxMDAlOworICAgICAgICAgICAgICAgIGhlaWdodDogOTkwcHg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICN2ZXJ0aWNhbC1jb250YWluZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAg
ICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIGhl
aWdodDogMTBweDsKICAgICAgICAgICAgIH0KKwogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CkBA
IC04NywxMyArOTgsMTcgQEAKICAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CiAgICAgICAg
IDxkaXYgaWQ9Imhvcml6b250YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtZHJhd2VyIj4KLSAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9ImZsb2F0OiBsZWZ0OyBiYWNrZ3JvdW5kOiAjODA0NzVF
Ij48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9IndpZHRo
OiA0NTBweDsgZmxvYXQ6IGxlZnQ7IGJhY2tncm91bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjODA0
NzVFIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rp
dj4KKyAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICAgICAgPC9kaXY+CiAgICAg
ICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJ2ZXJ0aWNhbC1jb250YWluZXIiIGNsYXNzPSJj
b250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJiYWNrZ3Jv
dW5kOiAjODA0NzVFIj48L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHls
ZT0iaGVpZ2h0OiA0NTBweDsgYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogIzgwNDc1RSI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25h
cC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAg
PGRpdj48L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxwIGlkPSJjb25zb2xlIj48L3A+
CiAgICAgICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1h
cmVhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3Rl
ZC50eHQKaW5kZXggYTQ1ZDJhZGNkZGY2Y2YwM2RmMzk4NjNjMzYzNjU5MzNiODhlMjgxZS4uMjU5
Y2Q5ODBjNTQ5YTA1OGEwOGZmZmE3ZjI0MzIxZjZhYzU4MzIyNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFw
L292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxv
d2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dApAQCAtMSwxMyArMSwxMyBAQAogCiBQQVNTIFNu
YXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgZG9lc24ndCBjb3ZlciB0
aGUgc25hcHBvcnQgb24geC4KLUZBSUwgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhl
IHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHggb24gdGhlIHJpZ2h0IGJvcmRlci4g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMjcxNSBidXQgZ290IDIwMAotRkFJTCBTbmFwcyB0byB0
aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24g
eCBvbiB0aGUgbGVmdCBib3JkZXIuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDIwMCBidXQgZ290
IDI3MTUKK1BBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBj
b3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHggb24gdGhlIHJpZ2h0IGJvcmRlci4KK1BBU1MgU25hcHMg
dG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0
IG9uIHggb24gdGhlIGxlZnQgYm9yZGVyLgogUEFTUyBTbmFwcyBpZiB0aGUgZGlzdGFuY2UgYmV0
d2VlbiB0aGUgcHJldmlvdXMoNDAwKSBhbmQgbmV4dCg4MDApIHNuYXAgcG9zaXRpb25zIGlzIHNt
YWxsZXIgdGhhbiBzbmFwcG9ydCg1MDApIG9uIHguCiBQQVNTIFNuYXBzIGlmIHRoZSBkaXN0YW5j
ZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBwb3NpdGlvbnMg
aXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geS4KLUZBSUwgU25hcCB0byBjdXJyZW50
IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBz
bmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHggYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRo
ZSBwcmV2aW91cyg4MDApIGFuZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUw
MCkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDkwMCBidXQgZ290IDgwMAotRkFJTCBTbmFwIHRv
IGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwg
YXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geSBhbmQgdGhlIGRpc3RhbmNlIGJl
dHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4gc25h
cHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAwCi1GQUlM
IFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBv
c2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBp
cyBubyBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAx
NTAwIGJ1dCBnb3QgMTQwMAotRkFJTCBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdo
aWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25h
cHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucy4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTUwMCBidXQgZ290IDE0MDAKLUZBSUwgRG9uJ3Qgc25hcCBi
YWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xsIHRvIHBvc2l0aW9ucyB3aGljaCBh
cmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBpZiBhIHNuYXAgdGFyZ2V0IGVsZW1l
bnQgY292ZXJzIHRoZSBzbmFwb3J0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDM3MTUgYnV0IGdv
dCAyMjAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUg
YXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMuSG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVk
IHNuYXAgcG9zaXRpb24gb24geSBhcyB0aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxMCBidXQgZ290IDAKK1BBU1MgU25hcCB0byBjdXJyZW50
IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBz
bmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHggYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRo
ZSBwcmV2aW91cyg4MDApIGFuZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUw
MCkuCitQQVNTIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxp
ZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFu
ZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBp
cyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xs
IHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJl
YSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBv
c2l0aW9ucy4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBh
IHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9u
IHkgYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuCitQQVNTIERvbid0
IHNuYXAgYmFjayBldmVuIGlmIHNjcm9sbFRvIHRyaWVzIHRvIHNjcm9sbCB0byBwb3NpdGlvbnMg
d2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIHNjcm9sbCByYW5nZSBhbmQgaWYgYSBzbmFwIHRhcmdl
dCBlbGVtZW50IGNvdmVycyB0aGUgc25hcG9ydAorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xs
IHBvc2l0aW9uIG9uIHggYXMgdGhlIGFyZWEgaXMgY292ZXJpbmcgeCBheGlzLkhvd2V2ZXIsIHdl
IHNuYXAgdG8gdGhlIHNwZWNpZmllZCBzbmFwIHBvc2l0aW9uIG9uIHkgYXMgdGhlIGFyZWEgaXMg
bm90IGNvdmVyaW5nIHkgYXhpcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFt
ZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
dmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKaW5kZXggNjQyN2ExMTRlNDhiMjZiZTY1YjU1
ZTdiODY4ZGY4Njc1NjkxYTlmOC4uOTRkYWQyMTY4YzYwZGU5MTU0NzZiMWQwMTBhNjQzZDA0ZmU5
MjBlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhv
cml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4t
aG9yaXpvbnRhbC5odG1sCkBAIC00LDYgKzQsNyBAQAogICAgICAgICA8c3R5bGU+CiAgICAgICAg
ICAgICBodG1sIHsKICAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9y
eTsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAwdnc7CkBAIC0x
Miw3ICsxMyw3IEBACiAgICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC5jb2xvckJveCB7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDkwdmg7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDEw
MHZ3OwogICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgICAgICAgICAgIHNjcm9s
bC1zbmFwLWFsaWduOiBzdGFydDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKaW5kZXggNWIwNTJmZGJmOTRjODRhM2Q4
ZTBkMWEyOGZjYjUyMjAyYWVmOWYyZi4uMTUzMWUxZTNhYjIyNWU1MDJiM2I3MjBkMWQwNjFiOGJl
MzBmZjYyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
cHJveGltaXR5LW92ZXJmbG93Lmh0bWwKQEAgLTEzLDIxICsxMywxNiBAQAogICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICB0b3A6IDA7CiAgICAgICAg
ICAgICAgICAgbGVmdDogMDsKLSAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBub25lOwogICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgICAgICAgICAgICBzY3JvbGwt
c25hcC10eXBlOiB5IHByb3hpbWl0eTsKLSAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1z
bmFwLXR5cGU6IHByb3hpbWl0eTsKLSAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBw
cm94aW1pdHk7CiAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAuYXJlYSB7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiA2MDBweDsKLSAg
ICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAl
OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgIGZsb2F0OiBs
ZWZ0OwogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAgICAgICAg
ICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKLSAgICAgICAgICAg
ICAgICBzY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7CiAgICAgICAgICAgICB9CiAgICAgICAg
IDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423189</attachid>
            <date>2021-03-15 09:41:56 -0700</date>
            <delta_ts>2021-03-16 02:41:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223175-20210315174148.patch</filename>
            <type>text/plain</type>
            <size>79503</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhMjM3MWNjYTE1MmJm
ZDg0NDk2NzQyNjU3MzVhZmFmNzdjOWQ1ZS4uMjJiMzU1ZGU5NzE4ODU0OGQwYTVmNjNiMWQ0MzA5
OGFjNWU1Y2IzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIxLTAzLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgaGFuZGxlIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuIFRoaXMgcmVxdWlyZXMgcmV3cml0aW5nIHRoZSBzbmFwcGlu
ZworICAgICAgICBhbGdvcml0aG0uIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBub3cgc3RvcmUgc25h
cCBhcmVhIHJlY3RhbmdsZXMsIHdoaWNoIGFyZQorICAgICAgICB1c2VkIHRvIGhhbmRsZSBvdmVy
Zmxvd2luZyBzbmFwIGFyZWFzLiBJbiBhZGRpdGlvbiwgc25hcCBvZmZzZXQgcmFuZ2VzIGFyZSBu
bworICAgICAgICBsb25nZXIga2VwdCB0byBoYW5kbGUgcHJveGltaXR5LiBJbnN0ZWFkIHRoaXMg
aXMgZG9uZSB3aGVuIGNob29zaW5nIGNhbmRpZGF0ZQorICAgICAgICBzbmFwIG9mZnNldHMuCisK
KyAgICAgICAgQmVjYXVzZSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm93IGNvbnRhaW5zIGEgcmVj
dGFuZ2xlIHR5cGUsIGl0cyB0ZW1wbGF0ZSBuZWVkcworICAgICAgICB0aGlzIHR5cGUgYXMgd2Vs
bC4gSW4gb3JkZXIgdG8gbWFrZSBpdCBzaW1wbGVyIHRvIHVzZSBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gdGhpcworICAgICAgICBjaGFuZ2UgZXhwb3NlcyB0d28gdHlwZSBhbGlhc2VzLCBGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyBhbmQgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvCisgICAg
ICAgIHdoaWNoIGFyZSB1c2VkIGV2ZXJ5d2hlcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBU
aGlzIGNoYW5nZSBmaXhlcyB0aGUgV1BUIHRlc3Q6CisgICAgICAgIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFz
Lmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGaXJz
dFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKTogVXBkYXRlZCB0byBy
ZXR1cm4gYW4gb2Zmc2V0L2luZGV4CisgICAgICAgIHBhaXIgc28gdGhlIHJldHVybiB0eXBlIG9m
IHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgY2FsY3VsYXRlQ2xvc2Vz
dFNuYXBPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9s
bGFibGVBcmVhKTogTm8gbG9uZ2VyIHN0b3JlIG9mZnNldCByYW5nZXMgZm9yIHByb3hpbWl0eSBz
bmFwcGluZworICAgICAgICBhbmQgYWxzbyBzdG9yZSBzbmFwIGFyZWFzIGNvbnZlcnRlZCB0byAi
b2Zmc2V0IiBjb29yZGluYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJbmZv
KTogTm8gbG9uZ2VyIG5lZWQgdG8gY29udmVydCBvZmZzZXQgcmFuZ2VzLCBidXQgdGhpcyBkb2Vz
IG5vdworICAgICAgICByZXF1aXJlIGNvbnZlcnRpbmcgb2Zmc2V0IGFyZWFzLgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyBjb25zdCk6
IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjptYXhGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggZ2V0cyB0aGUgbWF4
aW11bSBpbiBhIHBhcnRpY3VsYXIgYXhpcyBnaXZlbiB0aGUgYXhpcy4KKyAgICAgICAgKFdlYkNv
cmU6Om1pbkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzTmVhckVub3VnaFRv
T2Zmc2V0Rm9yUHJveGltaXR5KTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggcmVwbGFjZXMgY29t
cHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Y2Fs
Y3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQpOiBUaGlzIHJlcGxhY2VzIGNsb3Nlc3RTbmFwT2Zmc2V0
V2l0aE9mZnNldHNBbmRSYW5nZXMsIGJ1dCBhbHNvCisgICAgICAgIGFuZCBpbmRpY2VzT2ZOZWFy
ZXN0U25hcE9mZnNldHMuIE5vdyB3cml0dGVuIHVzaW5nIHNuYXAgYXJlYXMgZnJvbSB0aGUgZGF0
YSBzdHJ1Y3R1cmUgYXMgd2VsbCBhcworICAgICAgICB3aXRoIHByb3BlciBoYW5kbGluZyBmb3Ig
b3ZlcmZsb3dpbmcgc25hcCBhcmVhcy4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3QpOiBVcGRhdGUgZm9yIG5ldyBt
ZXRob2QgbmFtZXMgYW5kIHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2Ny
b2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvOjppc0VxdWFsIGNvbnN0KTogTm8gbG9uZ2Vy
IGxvb2sgYXQgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgZG8gdGFrZSBpbnRvCisgICAgICAgIGNv
bnNpZGVyYXRpb24gdGhlIHNuYXAgYXJlYXMuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFw
T2Zmc2V0c0luZm86Om9mZnNldHNGb3JBeGlzIGNvbnN0KTogUmVuYW1lZCB0aGUgdGVtcGxhdGUg
YXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwOiBVc2Ug
dGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6
dXBkYXRlRnJvbVN0YXRlTm9kZSk6IGNvbnZlcnRVbml0cyBub3cgdGFrZXMgdHdvIHRlbXBsYXRl
IGFyZ3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMp
OiBQYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gc2VsZWN0aW5nIHNuYXAgcG9pbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmg6IFVzZSB0
aGUgbmV3IHR5cGUgYWxpYXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNl
dHVwQW5pbWF0aW9uRm9yU3RhdGUpOiBQYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0
Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPDwpOiBObyBsb25nZXIgcHJpbnQgc25hcCBvZmZzZXQgcmFuZ2VzLgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmg6IFJlbW92ZWQgbWV0
aG9kIGRlYWxpbmcgd2l0aCByYW5nZXMuIE5vdyBwYXNzIHZpZXdwb3J0IHNpemUgdG8gdGFyZ2V0
T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tOiBEaXR0by4KKwogMjAyMS0wMy0xMCAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEbyBub3Qgc2hyaW5rIHJhZGlvIGJ1dHRvbnMgYmVs
bG93IGl0cyBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlNTQzYWY2NDA5NjEwOTY4ZDM5YTZmZDkwM2YwNDA0
YjI0MWI5YTcuLjNiMDJhNTk5ZjFmMzE0OWZkNjE4ODA2YTg0ZWJhODdiNzlkNjQwNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFByb3Blcmx5IGhh
bmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm8gbG9uZ2VyIGhvbGRz
IHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGlzIGFsc28gdGVtcGxhdGVkIG9mZgorICAgICAgICBv
ZiBhIHJlY3QgdHlwZS4gSW4gV2ViS2l0IHdlIHN3aXRjaCB0byB1c2luZyB0aGUgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8gYWxpYXMuCisgICAgICAgIEFkZGl0aW9uYWxseSwgd2UgbmVlZCB0
byBwYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gcmVxdWVzdGluZyBhIHNuYXAgb2Zmc2V0
CisgICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKTogU3dpdGNoIHRv
IHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBhbGlhcy4KKyAgICAgICAgKEFy
Z3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjplbmNvZGUpOiBEaXR0by4g
QWxzbyB3ZSBubyBsb25nZXIgbmVlZCB0byBlbmNvZGUgdGhlIHJhbmdlcy4KKyAgICAgICAgKEFy
Z3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjpkZWNvZGUpOiBEaXR0by4K
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyBjb25zdCk6IFBhc3Mg
aW4gdGhlIHZpZXdwb3J0IHNpemUgbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAg
ICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVu
ZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOiBEaXR0by4KKwog
MjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29tbWFuZHMgYXJlIG5vdCBwcm9jZXNzZWQgaW4g
b3JkZXIgaWYgR1BVIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgcmVwbGllcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2QxNTg0NzQwMDQ3OWI3Yzk3Li40
ODBmZTk1ZDgyYjI5MTQ5NzlmYTA1OWI2NmI5M2U3MWE4Zjc4MTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtOTIsMTUgKzkyLDE1IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFBsCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0
U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgbm9kZSwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBv
ZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBz
ZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIG9mZnNl
dEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIGlmICghb2Zmc2V0SW5mbykg
ewotICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+KCkpOworICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIEZJWE1F
OiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9yIGluIHNuYXBwaW5nIHRvIGRl
dmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252ZXJ0IHRvIGZsb2F0IGhlcmUg
YW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGluZz8KLSAgICBub2RlLnNldFNu
YXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8ZmxvYXQ+KGRldmljZVNjYWxl
RmFjdG9yKSk7CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8ob2Zmc2V0SW5mby0+Y29udmVy
dFVuaXRzPGZsb2F0LCBGbG9hdFJlY3Q+KGRldmljZVNjYWxlRmFjdG9yKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5jcHAKaW5kZXggYWNmZWQwZjM4Mzc4ZWI0ZTJlYzJhNTFiNDEwMjhmNTIwM2Q1
N2NiNC4uMDEwMjFhNGNjM2ZkMDM0YjZkNjExMDRhMzIzNjM3NTI3MTY3MzE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uY3BwCkBAIC00MSw2OCArNDEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RT
bmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCB1bnNpZ25lZCYgbG93ZXJJ
bmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+
CitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4+IGZpbmRGaXJz
dFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKGNvbnN0IFZlY3RvcjxT
bmFwT2Zmc2V0PFVuaXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBVbml0VHlwZSBzY3JvbGxPcmlnaW5P
ZmZzZXQsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIGlmIChzbmFw
T2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleDsKLSAgICAgICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5k
ZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgbG93ZXJJbmRleEFzSW50ID0g
LTE7Ci0gICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZzZXRSYW5nZXMuc2l6ZSgpOwot
ICAgIGRvIHsKLSAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxvd2VySW5kZXhBc0ludCArIHVw
cGVySW5kZXhBc0ludCkgLyAyOwotICAgICAgICBhdXRvJiByYW5nZSA9IHNuYXBPZmZzZXRSYW5n
ZXNbbWlkZGxlSW5kZXhdOwotICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPCBvZmZzZXQgJiYgb2Zm
c2V0IDwgcmFuZ2UuZW5kKSB7Ci0gICAgICAgICAgICBsb3dlckluZGV4QXNJbnQgPSBtaWRkbGVJ
bmRleDsKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zmc2V0ID4gcmFuZ2UuZW5k
KQotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgIH0gd2hp
bGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAtIDEpOwotCi0gICAgaWYgKG9m
ZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQpCi0gICAgICAgIGxvd2VySW5k
ZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UKLSAgICAgICAgbG93ZXJJbmRl
eCA9IGxvd2VySW5kZXhBc0ludDsKLQotICAgIGlmIChvZmZzZXQgPj0gc25hcE9mZnNldFJhbmdl
cy5sYXN0KCkuZW5kKQotICAgICAgICB1cHBlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRl
eDsKLSAgICBlbHNlCi0gICAgICAgIHVwcGVySW5kZXggPSB1cHBlckluZGV4QXNJbnQ7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHZvaWQgaW5kaWNlc09mTmVh
cmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U25hcE9mZnNl
dDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWdu
ZWQmIHVwcGVySW5kZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRleCA9
IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBlcklu
ZGV4IC0gMSkgewotICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVwcGVy
SW5kZXgpIC8gMjsKLSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBzbmFwT2Zmc2V0c1ttaWRk
bGVJbmRleF0ub2Zmc2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09IG1pZGRsZU9mZnNldCkgewot
ICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgbG93ZXJJ
bmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAgICAgICAgbG93ZXJJbmRleCA9
IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cHBlckluZGV4ID0gbWlk
ZGxlSW5kZXg7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0
YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3Jp
Z2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBz
bmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNlID0gc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CisgICAgVW5pdFR5cGUg
ZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0gc2Nyb2xsT3JpZ2luT2Zmc2V0
OwogICAgIGlmICghZGlmZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApA
QCAtMTEzLDcgKzU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFw
U3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KICAgICAgICAgaXRlcmF0
aW9uID0gLTE7CiAgICAgfQogCi0gICAgYXV0byBpc1Bhc3QgPSBbZGlmZmVyZW5jZV0oTGF5b3V0
VHlwZSBtYXJrLCBMYXlvdXRUeXBlIGNhbmRpZGF0ZSkgeworICAgIGF1dG8gaXNQYXN0ID0gW2Rp
ZmZlcmVuY2VdKFVuaXRUeXBlIG1hcmssIFVuaXRUeXBlIGNhbmRpZGF0ZSkgewogICAgICAgICBy
ZXR1cm4gKGRpZmZlcmVuY2UgPiAwICYmIGNhbmRpZGF0ZSA+IG1hcmspIHx8IChkaWZmZXJlbmNl
IDwgMCAmJiBjYW5kaWRhdGUgPCBtYXJrKTsKICAgICB9OwogCkBAIC0xMjQsNjUgKzY2LDEyIEBA
IHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVu
T3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGlmIChzbmFwT2Zmc2V0c1tpXS5zdG9w
ICE9IFNjcm9sbFNuYXBTdG9wOjpBbHdheXMpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWYgKGlzUGFzdChzY3JvbGxPcmlnaW5PZmZzZXQsIG9mZnNldCkpCi0gICAgICAgICAgICBy
ZXR1cm4gaTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgc3RkOjpwYWlyPExh
eW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5kUmFuZ2Vz
KGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9mZnNldHMsIGNvbnN0
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRSYW5nZXMs
IExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRp
b25hbDxMYXlvdXRUeXBlPiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpCi17
Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsK
LQotICAgIGlmIChvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFzVmFsdWUo
KSkgewotICAgICAgICBhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCA9IGZpbmRGaXJzdFNu
YXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKHNuYXBPZmZzZXRzLCAqb3Jp
Z2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCk7Ci0gICAgICAgIGlmIChmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXguaGFzVmFsdWUoKSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0c1sqZmlyc3RTbmFwU3Rv
cE9mZnNldEluZGV4XS5vZmZzZXQsICpmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXg7Ci0gICAgdW5zaWduZWQg
dXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNl
dFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldFJh
bmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRl
eCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gdXBwZXJTbmFwT2Zmc2V0
UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICE9IGludmFsaWRTbmFwT2Zm
c2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAgICBpZiAoc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCwgMHUpOwotCi0gICAg
aWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0
LCBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxKTsKLQotICAgIHVuc2lnbmVkIGxvd2VySW5kZXg7Ci0g
ICAgdW5zaWduZWQgdXBwZXJJbmRleDsKLSAgICBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHM8
TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNuYXBPZmZzZXRzLCBsb3dlcklu
ZGV4LCB1cHBlckluZGV4KTsKLSAgICBMYXlvdXRUeXBlIGxvd2VyU25hcFBvc2l0aW9uID0gc25h
cE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwotICAgIExheW91dFR5cGUgdXBwZXJTbmFwUG9z
aXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7Ci0gICAgaWYgKCFzdGQ6OmFi
cyh2ZWxvY2l0eSkpIHsKLSAgICAgICAgYm9vbCBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24g
PSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0aW9uIDw9IHVwcGVyU25h
cFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIHJldHVybiBpc0Ns
b3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlv
biwgbG93ZXJJbmRleCkgOiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBwZXJJ
bmRleCk7Ci0gICAgfQotCi0gICAgLy8gTm9uLXplcm8gdmVsb2NpdHkgaW5kaWNhdGVzIGEgZmxp
Y2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLCB3ZSBzaG91
bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZmxpY2sgZ2VzdHVyZQot
ICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2UgZG9lcyBub3QgbGll
IGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhlIHRhcmdldGVkIHNuYXAgb2Zm
c2V0LiBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0aW9uYWwKLSAgICAvLyBzbmFwcGluZywgd2Ugc2hv
dWxkIG5ldmVyIHNuYXAgdG8gYSBwb2ludCB0aGF0IHdhcyBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0
aGUgb3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiB0aGlzIHNj
cm9sbC4KLSAgICAvLyBUaGlzIGFsbG93cyBkaXJlY3Rpb25hbCBzY3JvbGxpbmcgdG8gZXNjYXBl
IHNuYXAgcG9pbnRzLgotICAgIGlmICh2ZWxvY2l0eSA8IDApIHsKLSAgICAgICAgaWYgKGxvd2Vy
U25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCB8fCBsb3dlclNu
YXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25hcE9mZnNldFJhbmdlSW5kZXhd
LmVuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlv
biwgbG93ZXJJbmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25h
bFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFw
cGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZhbGlkU25hcE9mZnNldEluZGV4
IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uc3RhcnQgPj0g
dXBwZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodXBw
ZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgICAgICBpZiAoIW9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZvckRp
cmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZh
bGlkU25hcE9mZnNldEluZGV4KTsKLX0KLQogZW51bSBjbGFzcyBJbnNldE9yT3V0c2V0IHsKICAg
ICBJbnNldCwKICAgICBPdXRzZXQKQEAgLTIxOSwzMCArMTA4LDYgQEAgc3RhdGljIExheW91dFVu
aXQgY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChMYXlvdXRVbml0IG1pbkxvY2F0aW9uLCBM
YXlvdXRVbmkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVBeGlzUHJveGltaXR5U25h
cE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRVbml0Pj4mIHNuYXBP
ZmZzZXRzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBvZmZzZXRSYW5n
ZXMsIExheW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCi17Ci0gICAgLy8gVGhpcyBpcyBh
biBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHki
IG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3VuZCB3aXRoCi0gICAgLy8gdGhp
cyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9P
ZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7Ci0g
ICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBvZmZzZXQgcmFuZ2VzIGluIGJl
dHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3RlbnRpYWwgc25hcCBvZmZzZXQK
LSAgICAvLyBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgdXNlciBzY3JvbGxzIHdp
dGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNuYXAgb2Zmc2V0LCBzdWNoIHRo
YXQgdGhlCi0gICAgLy8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5hdGlvbiBpcyBzdGlsbCB3aXRo
aW4gcHJveGltaXR5IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhpcyBjYXNlLCB0aGUgcmVndWxh
ciAobWFuZGF0b3J5Ci0gICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBiZWhhdmlvciB3b3VsZCBiZSB0
byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0aW9uIG9mIG1vbWVudHVtIHNj
cm9sbGluZywgYnV0Ci0gICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9yZSBpbnR1aXRpdmUgdG8gZWl0
aGVyIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlvbiAod2hpY2ggd2UgYXJiaXRy
YXJpbHkgY2hvb3NlIGhlcmUpCi0gICAgLy8gb3Igc2Nyb2xsIGp1c3Qgb3V0c2lkZSBvZiB0aGUg
c25hcCBvZmZzZXQgcmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5vciBiZWhhdmlvciB0d2VhayB0
aGF0IHdlIHNob3VsZCBwbGF5IGFyb3VuZAotICAgIC8vIHdpdGggdG8gc2VlIHdoYXQgZmVlbHMg
YmVzdC4KLSAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNlIHsgcmF0aW9PZlNjcm9sbFBv
cnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgKiBzY3JvbGxQb3J0QXhpc0xl
bmd0aCB9OwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5kZXggPCBzbmFwT2Zmc2V0cy5z
aXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBzdGFydE9mZnNldCA9IHNuYXBPZmZzZXRz
W2luZGV4IC0gMV0ub2Zmc2V0ICsgcHJveGltaXR5RGlzdGFuY2U7Ci0gICAgICAgIGF1dG8gZW5k
T2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXhdLm9mZnNldCAtIHByb3hpbWl0eURpc3RhbmNlOwot
ICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpCi0gICAgICAgICAgICBvZmZzZXRS
YW5nZXMuYXBwZW5kKHsgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9KTsKLSAgICB9Ci19Ci0KIHZv
aWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJl
Y3RJbkJvcmRlckJveENvb3JkaW5hdGVzKQogewogICAgIGF1dG8gc2Nyb2xsU25hcFR5cGUgPSBz
Y3JvbGxpbmdFbGVtZW50U3R5bGUuc2Nyb2xsU25hcFR5cGUoKTsKQEAgLTI2Miw2ICsxMjcsNyBA
QCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhLCBjb25zdCBSZQogCiAgICAgSGFzaE1hcDxmbG9hdCwgU25hcE9mZnNl
dDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsKICAgICBIYXNoTWFwPGZsb2F0
LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHNNYXA7CisgICAg
VmVjdG9yPExheW91dFJlY3Q+IHNuYXBBcmVhczsKICAgICBib29sIGhhc0hvcml6b250YWxTbmFw
T2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OkJvdGggfHwg
c2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WEF4aXMgfHwgc2Nyb2xsU25h
cFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6SW5saW5lOwogICAgIGJvb2wgaGFzVmVydGlj
YWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OkJv
dGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6WUF4aXMgfHwgc2Ny
b2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6QmxvY2s7CiAKQEAgLTI4OCwxNyAr
MTU0LDI5IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAKICAgICAgICAgc2Nyb2xsU25hcEFy
ZWEgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNjcm9sbFNuYXBBcmVhLCBjaGls
ZC0+c3R5bGUoKS5zY3JvbGxNYXJnaW4oKSwgSW5zZXRPck91dHNldDo6T3V0c2V0KTsKICAgICAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiICAgIENvbnNpZGVyaW5n
IHNjcm9sbCBzbmFwIHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25hcEFyZWEpOworCiAgICAgICAg
IGF1dG8gYWxpZ25tZW50ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xsU25hcEFsaWduKCk7CisgICAg
ICAgIGJvb2wgc25hcHNIb3Jpem9udGFsbHkgPSBoYXNIb3Jpem9udGFsU25hcE9mZnNldHMgJiYg
YWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmU7CisgICAgICAgIGJv
b2wgc25hcHNWZXJ0aWNhbGx5ID0gaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQu
eSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAgICAgICAgaWYgKCFzbmFwc0hv
cml6b250YWxseSAmJiAhc25hcHNWZXJ0aWNhbGx5KQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgLy8gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGVmaW5lZCB2aWEgaXRzIHNjcm9s
bCBwb3NpdGlvbiwgc28gY29udmVydCBldmVyeXRoaW5nIHRvIHNjcm9sbCBvZmZldHNzIGhlcmUu
CisgICAgICAgIGF1dG8gc25hcEFyZWFPcmlnaW5SZWxhdGl2ZVRvQm9yZGVyRWRnZSA9IHNjcm9s
bFNuYXBBcmVhLmxvY2F0aW9uKCkgLSBzY3JvbGxTbmFwUG9ydC5sb2NhdGlvbigpOworICAgICAg
ICBMYXlvdXRSZWN0IHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKHNjcm9sbGFibGVBcmVhLnNjcm9s
bE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoc25hcEFyZWFPcmlnaW5SZWxhdGl2
ZVRvQm9yZGVyRWRnZSkpLCBzY3JvbGxTbmFwQXJlYS5zaXplKCkpOworICAgICAgICBzbmFwQXJl
YXMuYXBwZW5kKHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKTsKKyAgICAgICAgdW5zaWduZWQgc25h
cEFyZWFJbmRleCA9IHNuYXBBcmVhcy5zaXplKCkgLSAxOworCiAgICAgICAgIGF1dG8gc3RvcCA9
IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBTdG9wKCk7Ci0gICAgICAgIGlmIChoYXNIb3Jpem9u
dGFsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6
Ok5vbmUpIHsKKyAgICAgICAgaWYgKHNuYXBzSG9yaXpvbnRhbGx5KSB7CiAgICAgICAgICAgICBh
dXRvIGFic29sdXRlU2Nyb2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNl
dChzY3JvbGxTbmFwQXJlYS54KCksIHNjcm9sbFNuYXBBcmVhLm1heFgoKSwgYWxpZ25tZW50Lngs
IHNjcm9sbGVySXNSVEwpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFw
UG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNS
VEwpOwogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50
PihzY3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyByb3VuZFRvSW50KGFi
c29sdXRlU2Nyb2xsWFBvc2l0aW9uKSwgMCB9KS54KCksIDAsIG1heFNjcm9sbE9mZnNldC54KCkp
OwotICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFsU25h
cE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAgICAg
ICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxTbmFwT2Zmc2V0c01hcCwg
eyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwgc25hcEFyZWFJbmRleCB9KTsKICAgICAgICAg
fQotICAgICAgICBpZiAoaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueSAhPSBT
Y3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoc25hcHNWZXJ0aWNh
bGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9uID0gY29tcHV0
ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9sbFNuYXBBcmVh
Lm1heFkoKSwgYWxpZ25tZW50LnksIGZhbHNlKSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZz
ZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIGFsaWdubWVudC55
LCBmYWxzZSk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBU
bzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IDAsIHJvdW5k
VG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0
LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2Fs
U25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAg
ICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2FsU25hcE9mZnNldHNNYXAs
IHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AsIHNuYXBBcmVhSW5kZXggfSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTMwOCwzMiArMTg2LDI1IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNG
b3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJl
CiAgICAgfTsKIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFs
U25hcE9mZnNldHMgPSBjb3B5VG9WZWN0b3IoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwLnZhbHVl
cygpKTsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIGlmICghaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmlzRW1w
dHkoKSkgewogICAgICAgICBzdGQ6OnNvcnQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmJlZ2luKCks
IGhvcml6b250YWxTbmFwT2Zmc2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAgICAg
ICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6
OlByb3hpbWl0eSkKLSAgICAgICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJh
bmdlcyhob3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBz
Y3JvbGxTbmFwUG9ydC53aWR0aCgpKTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
U25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgaG9yaXpvbnRhbCBzY3JvbGwgc25hcCBvZmZz
ZXRzOiAiIDw8IGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9sbCBz
bmFwIG9mZnNldCByYW5nZXM6ICIgPDwgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpOwogICAg
IH0KIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZz
ZXRzID0gY29weVRvVmVjdG9yKHZlcnRpY2FsU25hcE9mZnNldHNNYXAudmFsdWVzKCkpOwotICAg
IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzOwogICAgIGlmICghdmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgc3RkOjpzb3J0KHZlcnRpY2FsU25hcE9mZnNldHMuYmVnaW4oKSwgdmVydGljYWxTbmFwT2Zm
c2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAgICAgICAgaWYgKHNjcm9sbFNuYXBU
eXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKLSAgICAg
ICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyh2ZXJ0aWNhbFNuYXBP
ZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHNjcm9sbFNuYXBQb3J0LmhlaWdodCgp
KTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgPT4g
Q29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0czogIiA8PCB2ZXJ0aWNhbFNuYXBP
ZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAi
ID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICIgPDwgdmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9CiAKKyAgICBpZiAoIXNuYXBBcmVhcy5pc0Vt
cHR5KCkpCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9
PiBDb21wdXRlZCBzbmFwIGFyZWFzOiAiIDw8IHNuYXBBcmVhcyk7CisKICAgICBzY3JvbGxhYmxl
QXJlYS5zZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyh7CisgICAgICAgIHNjcm9sbFNuYXBUeXBlLnN0
cmljdG5lc3MsCiAgICAgICAgIGhvcml6b250YWxTbmFwT2Zmc2V0cywKICAgICAgICAgdmVydGlj
YWxTbmFwT2Zmc2V0cywKLSAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsCi0gICAg
ICAgIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcworICAgICAgICBzbmFwQXJlYXMsCiAgICAgfSk7
CiB9CiAKQEAgLTM0Nyw1NyArMjE4LDE3OSBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb252ZXJ0T2Zm
c2V0VW5pdChmbG9hdCBpbnB1dCwgZmxvYXQgLyogc2NhbGVGYWN0b3IgKi8pCiAgICAgcmV0dXJu
IExheW91dFVuaXQoaW5wdXQpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRUeXBlLCB0
eXBlbmFtZSBPdXRwdXRUeXBlPgotc3RhdGljIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRwdXRU
eXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88SW5wdXRU
eXBlPiYgaW5wdXQsIGZsb2F0IHNjYWxlRmFjdG9yID0gMC4wKQordGVtcGxhdGUgPHR5cGVuYW1l
IElucHV0VHlwZSwgdHlwZW5hbWUgSW5wdXRSZWN0VHlwZSwgdHlwZW5hbWUgT3V0cHV0VHlwZSwg
dHlwZW5hbWUgT3V0cHV0UmVjdFR5cGU+CitzdGF0aWMgU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91
dHB1dFR5cGUsIE91dHB1dFJlY3RUeXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88SW5wdXRUeXBlLCBJbnB1dFJlY3RUeXBlPiYgaW5wdXQsIGZsb2F0IHNj
YWxlRmFjdG9yID0gMC4wKQogewogICAgIGF1dG8gY29udmVydE9mZnNldHMgPSBbc2NhbGVGYWN0
b3JdKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PElucHV0VHlwZT4+JiBpbnB1dCkKICAgICB7CiAg
ICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+PiBvdXRwdXQ7CiAgICAgICAgIG91
dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7CiAgICAgICAgIGZvciAo
YXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5k
KHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVGYWN0b3IpLCBvZmZzZXQu
c3RvcCB9KTsKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoeyBjb252ZXJ0T2Zm
c2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3RvciksIG9mZnNldC5zdG9wLCBvZmZzZXQu
c25hcEFyZWFJbmRleCB9KTsKICAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICB9OwogCi0gICAg
YXV0byBjb252ZXJ0T2Zmc2V0UmFuZ2VzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8U2Ny
b2xsT2Zmc2V0UmFuZ2U8SW5wdXRUeXBlPj4mIGlucHV0KQorICAgIGF1dG8gY29udmVydFJlY3Rz
ID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8SW5wdXRSZWN0VHlwZT4mIGlucHV0KQogICAg
IHsKLSAgICAgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPE91dHB1dFR5cGU+PiBvdXRwdXQ7
CisgICAgICAgIFZlY3RvcjxPdXRwdXRSZWN0VHlwZT4gb3V0cHV0OwogICAgICAgICBvdXRwdXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dC5zaXplKCkpOwotICAgICAgICBmb3IgKGF1dG8m
IHJhbmdlIDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHsgY29u
dmVydE9mZnNldFVuaXQocmFuZ2Uuc3RhcnQsIHNjYWxlRmFjdG9yKSwgY29udmVydE9mZnNldFVu
aXQocmFuZ2UuZW5kLCBzY2FsZUZhY3RvcikgfSk7CisgICAgICAgIGZvciAoYXV0byYgcmVjdCA6
IGlucHV0KSB7CisgICAgICAgICAgICBPdXRwdXRSZWN0VHlwZSBvdXRwdXRSZWN0KAorICAgICAg
ICAgICAgICAgIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QueCgpLCBzY2FsZUZhY3RvciksIGNvbnZl
cnRPZmZzZXRVbml0KHJlY3QueSgpLCBzY2FsZUZhY3RvciksCisgICAgICAgICAgICAgICAgY29u
dmVydE9mZnNldFVuaXQocmVjdC53aWR0aCgpLCBzY2FsZUZhY3RvciksIGNvbnZlcnRPZmZzZXRV
bml0KHJlY3QuaGVpZ2h0KCksIHNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBvdXRwdXQudW5j
aGVja2VkQXBwZW5kKG91dHB1dFJlY3QpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBvdXRw
dXQ7CiAgICAgfTsKIAogICAgIHJldHVybiB7CisgICAgICAgIGlucHV0LnN0cmljdG5lc3MsCiAg
ICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0cyksCiAgICAg
ICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0LnZlcnRpY2FsU25hcE9mZnNldHMpLAotICAgICAgICBj
b252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSwKLSAg
ICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMp
CisgICAgICAgIGNvbnZlcnRSZWN0cyhpbnB1dC5zbmFwQXJlYXMpLAogICAgIH07CiB9CiAKIHRl
bXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4g
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y29udmVydFVuaXRzKGZsb2F0IC8qIHVudXNl
ZFNjYWxlRmFjdG9yICovKSBjb25zdAorTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvIEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2VkU2NhbGVG
YWN0b3IgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0LCBM
YXlvdXRVbml0PigqdGhpcyk7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPGZsb2F0LCBG
bG9hdFJlY3QsIExheW91dFVuaXQsIExheW91dFJlY3Q+KCp0aGlzKTsKIH0KIAogdGVtcGxhdGUg
PD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4gU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpIGNvbnN0CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3QKIHsK
LSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0VW5pdCwgZmxvYXQ+KCp0aGlzLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPExheW91dFVu
aXQsIExheW91dFJlY3QsIGZsb2F0LCBGbG9hdFJlY3Q+KCp0aGlzLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiB9CiAKLXRlbXBsYXRlIDw+Ci1zdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0
IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0
aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5h
bWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWF4Rm9yQXhpcyhSZWN0VHlwZSByZWN0LCBT
Y3JvbGxFdmVudEF4aXMgYXhpcykKIHsKLSAgICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRo
T2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9yQXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhp
cyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0
aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZl
bnRBeGlzOjpIb3Jpem9udGFsID8gcmVjdC5tYXhYKCkgOiByZWN0Lm1heFkoKTsKIH0KIAotdGVt
cGxhdGUgPD4KLXN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBv
cmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0
eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWlu
Rm9yQXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4aXMgYXhpcykKK3sKKyAgICByZXR1
cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyByZWN0LngoKSA6IHJlY3Qu
eSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+CitzdGF0aWMgYm9vbCBpc05l
YXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShTY3JvbGxTbmFwU3RyaWN0bmVzcyBzdHJpY3Ru
ZXNzLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbiwgVW5pdFR5cGUgY2FuZGlkYXRlU25hcE9m
ZnNldCwgVW5pdFR5cGUgdmlld3BvcnRMZW5ndGgpCit7CisgICAgaWYgKHN0cmljdG5lc3MgIT0g
U2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFyeSBjaG9pY2UgZm9yIHdoYXQgaXQgbWVhbnMgdG8g
YmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFwIG9mZnNldC4gV2Ugc2hvdWxkIHBsYXkgYXJvdW5k
IHdpdGgKKyAgICAvLyB0aGlzIGFuZCBzZWUgd2hhdCBmZWVscyBiZXN0LgorICAgIHN0YXRpYyBj
b25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZvclBy
b3hpbWl0eSA9IDAuMzsKKyAgICByZXR1cm4gc3RkOjphYnMoZmxvYXQge2NhbmRpZGF0ZVNuYXBP
ZmZzZXQgLSBzY3JvbGxEZXN0aW5hdGlvbn0pIDw9ICh2aWV3cG9ydExlbmd0aCAqIHJhdGlvT2ZT
Y3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5KTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZSwgdHlwZW5hbWUgU2l6
ZVR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4gY2FsY3VsYXRlQ2xv
c2VzdFNuYXBPZmZzZXQoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPFVuaXRUeXBlLCBSZWN0
VHlwZT4mIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3Bv
cnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbE9mZnNldCkKK3sKKyAgICBjb25zdCBhdXRvJiBz
bmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CisgICAgYXV0byBwYWlyRm9y
Tm9TbmFwcGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZh
bGlkU25hcE9mZnNldEluZGV4KTsKKyAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisKKyAgICAvLyBUaGUgZmlyc3Qgc25hcCBw
b2ludCB3aXRoIGBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXNgIGJldHdlZW4gdGhlIG9yaWdpbmFs
IHBvc2l0aW9uIGFuZCBkZXN0aW5hdGlvbiB0YWtlcyBwcmVjZWRlbmNlLgorICAgIGlmIChvcmln
aW5hbE9mZnNldCkgeworICAgICAgICBpZiAoYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0ID0gZmlu
ZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oc25hcE9mZnNl
dHMsICpvcmlnaW5hbE9mZnNldCwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuICpmaXJzdFNuYXBTdG9wT2Zmc2V0OworICAgIH0KKworICAgIGF1dG8gdmlld3Bv
cnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHZpZXdwb3J0
U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgpOworICAgIGJvb2wgbGFuZGVkSW5z
aWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCA9IGZhbHNlOworICAgIE9wdGlvbmFsPHN0
ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91cywgbmV4dDsKKyAgICBPcHRpb25h
bDxSZWN0VHlwZT4gcHJldmlvdXNTbmFwQXJlYSwgbmV4dFNuYXBBcmVhOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzbmFwT2Zmc2V0cy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25z
dCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3NuYXBPZmZzZXRzW2ldLnNuYXBBcmVh
SW5kZXhdOworICAgICAgICBsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0
IHw9IChtaW5Gb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwgYXhpcykgPD0gc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQgJiYgbWF4Rm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIGF4aXMpID49IChz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCArIHZpZXdwb3J0TGVuZ3RoKSk7CisgICAgICAgIC8vIElm
IHRoZSBzY3JvbGwgbGFuZGVkIGV4YWN0bHkgb24gYSBzbmFwIG9mZnNldCwgY2hvb3NlIHRoYXQg
b25lLgorICAgICAgICBVbml0VHlwZSBwb3RlbnRpYWxTbmFwT2Zmc2V0ID0gc25hcE9mZnNldHNb
aV0ub2Zmc2V0OworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA9PSBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihwb3RlbnRp
YWxTbmFwT2Zmc2V0LCBpKTsKKworICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA8IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBwcmV2aW91cyA9IHN0ZDo6bWFr
ZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAgcHJldmlvdXNTbmFw
QXJlYSA9IHNuYXBBcmVhOworICAgICAgICB9IGVsc2UgaWYgKCFuZXh0ICYmIHBvdGVudGlhbFNu
YXBPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkgeworICAgICAgICAgICAgbmV4dCA9
IHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAgICAgICAgICAgbmV4
dFNuYXBBcmVhID0gc25hcEFyZWE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGcm9tIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nyb2xsLXNuYXAtMS8jc25hcC1vdmVyZmxvdworICAg
IC8vICJJZiB0aGUgc25hcCBhcmVhIGlzIGxhcmdlciB0aGFuIHRoZSBzbmFwcG9ydCBpbiBhIHBh
cnRpY3VsYXIgYXhpcywgdGhlbiBhbnkgc2Nyb2xsIHBvc2l0aW9uCisgICAgLy8gaW4gd2hpY2gg
dGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0LCBhbmQgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIGdlb21ldHJpY2FsbHkKKyAgICAvLyBwcmV2aW91cyBhbmQgc3Vic2VxdWVudCBzbmFw
IHBvc2l0aW9ucyBpbiB0aGF0IGF4aXMgaXMgbGFyZ2VyIHRoYW4gc2l6ZSBvZiB0aGUgc25hcHBv
cnQgaW4KKyAgICAvLyB0aGF0IGF4aXMsIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiBpbiB0aGF0
IGF4aXMuIFRoZSBVQSBtYXkgdXNlIHRoZSBzcGVjaWZpZWQgYWxpZ25tZW50IGFzIGEKKyAgICAv
LyBtb3JlIHByZWNpc2UgdGFyZ2V0IGZvciBjZXJ0YWluIHNjcm9sbCBvcGVyYXRpb25zIChlLmcu
IGV4cGxpY2l0IHBhZ2luZykuIgorICAgIGlmIChsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25z
dW1lc1ZpZXdwb3J0ICYmICghcHJldmlvdXMgfHwgIW5leHQgfHwgKCgqbmV4dCkuZmlyc3QgLSAo
KnByZXZpb3VzKS5maXJzdCkgPj0gdmlld3BvcnRMZW5ndGgpKQorICAgICAgICByZXR1cm4gcGFp
ckZvck5vU25hcHBpbmc7CisKKyAgICBpZiAob3JpZ2luYWxPZmZzZXQpIHsKKyAgICAgICAgLy8g
SWYgdGhpcyBpcyBhIGRpcmVjdGlvbmFsIHNjcm9sbCBhbmQgdGhlcmUgYXJlIG5vIHNjcm9sbCBz
dG9wcyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLAorICAgICAgICAvLyBkb24ndCBzY3JvbGwg
cGFzdCB0aGUgZWRnZSBvZiB0aGUgc2Nyb2xsIGFyZWEuCisgICAgICAgIGlmICghbmV4dCAmJiBw
cmV2aW91cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGQ6Om1heCgoKnBy
ZXZpb3VzKS5maXJzdCwgbWF4Rm9yQXhpczxVbml0VHlwZT4oKnByZXZpb3VzU25hcEFyZWEsIGF4
aXMpIC0gdmlld3BvcnRMZW5ndGgpLCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKKyAgICAgICAg
aWYgKCFwcmV2aW91cyAmJiBuZXh0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KG1pbkZvckF4aXM8VW5pdFR5cGU+KCpuZXh0U25hcEFyZWEsIGF4aXMpLCBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKKworICAgICAgICAvLyBGcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
c2Nyb2xsLXNuYXAtMS8jY2hvb3NpbmcKKyAgICAgICAgLy8gIlVzZXIgYWdlbnRzIG11c3QgZW5z
dXJlIHRoYXQgYSB1c2VyIGNhbiDigJxlc2NhcGXigJ0gYSBzbmFwIHBvc2l0aW9uLCByZWdhcmRs
ZXNzIG9mIHRoZSBzY3JvbGwKKyAgICAgICAgLy8gbWV0aG9kLiBGb3IgZXhhbXBsZSwgaWYgdGhl
IHNuYXAgdHlwZSBpcyBtYW5kYXRvcnkgYW5kIHRoZSBuZXh0IHNuYXAgcG9zaXRpb24gaXMgbW9y
ZSB0aGFuCisgICAgICAgIC8vIHR3byBzY3JlZW4td2lkdGhzIGF3YXksIGEgbmHDr3ZlIOKAnGFs
d2F5cyBzbmFwIHRvIG5lYXJlc3TigJ0gc2VsZWN0aW9uIGFsZ29yaXRobSBtaWdodCDigJx0cmFw
4oCdIHRoZQorICAgICAgICAvLyB1c2VyIGlmIHRoZWlyIGVuZCBwb3NpdGlvbiB3YXMgb25seSBv
bmUgc2NyZWVuLXdpZHRoIGF3YXkuIEluc3RlYWQsIGEgc21hcnRlciBhbGdvcml0aG0gdGhhdAor
ICAgICAgICAvLyBvbmx5IHJldHVybmVkIHRvIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9uIGlm
IHRoZSBlbmQtcG9pbnQgd2FzIGEgZmFpcmx5IHNtYWxsIGRpc3RhbmNlIGZyb20KKyAgICAgICAg
Ly8gaXQsIGFuZCBvdGhlcndpc2UgaWdub3JlZCB0aGUgc3RhcnRpbmcgc25hcCBwb3NpdGlvbiwg
d291bGQgZ2l2ZSBiZXR0ZXIgYmVoYXZpb3IuIgorICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMg
aWYgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGFyZSBjaG9vc2luZyBiZXR3ZWVuIHR3
byBjb21wYXRpYmxlCisgICAgICAgIC8vIHNuYXAgb2Zmc2V0cy4KKyAgICAgICAgaWYgKCpvcmln
aW5hbE9mZnNldCA8IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmICgqcHJldmlvdXMpLmZpcnN0
IDw9ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIHByZXZpb3VzLnJlc2V0KCk7CisgICAg
ICAgIGlmICgqb3JpZ2luYWxPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAmJiAoKm5l
eHQpLmZpcnN0ID49ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIG5leHQucmVzZXQoKTsK
KyAgICB9CisKKyAgICBpZiAobmV4dCAmJiAhaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1p
dHkoaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgKCpuZXh0KS5maXJz
dCwgdmlld3BvcnRMZW5ndGgpKQorICAgICAgICBuZXh0LnJlc2V0KCk7CisgICAgaWYgKHByZXZp
b3VzICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShpbmZvLnN0cmljdG5lc3Ms
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKnByZXZpb3VzKS5maXJzdCwgdmlld3BvcnRMZW5n
dGgpKQorICAgICAgICBwcmV2aW91cy5yZXNldCgpOworCisgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSBjb21wYXRpYmxlIG9mZnNldHMgdG8gY2hvb3NlIGJldHdlZW4sIGp1c3QgZG8gdGhlIG9idmlv
dXMgdGhpbmcKKyAgICAvLyBhbmQgZG8gbm8gc25hcHBpbmcgb3Igb25seSBzZWxlY3QgdGhlIHNp
bmdsZSBjb21wYXRpYmxlIG9mZnNldC4KKyAgICBpZiAoIXByZXZpb3VzICYmICFuZXh0KQorICAg
ICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisgICAgaWYgKCFwcmV2aW91cykKKyAgICAg
ICAgcmV0dXJuICpuZXh0OworICAgIGlmICghbmV4dCkKKyAgICAgICAgcmV0dXJuICpwcmV2aW91
czsKKworICAgIC8vIElmIHRoaXMgc2Nyb2xsIGlzbid0IGRpcmVjdGlvbmFsLCB0aGVuIGNob29z
ZSB3aGF0ZXZlciBzbmFwIHBvaW50IGlzIGNsb3Nlci4KKyAgICBVbml0VHlwZSBwcmV2aW91c1Nu
YXBPZmZzZXQgPSAoKnByZXZpb3VzKS5maXJzdDsKKyAgICBVbml0VHlwZSBuZXh0U25hcE9mZnNl
dCA9ICgqbmV4dCkuZmlyc3Q7CisgICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKKyAgICAg
ICAgYm9vbCBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXggPSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCAtIHByZXZpb3VzU25hcE9mZnNldCA8PSBuZXh0U25hcE9mZnNldCAtIHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0OworICAgICAgICByZXR1cm4gaXNDbG9zZXJUb1ByZXZpb3VzU25hcEluZGV4
ID8gKnByZXZpb3VzIDogKm5leHQ7CisgICAgfQorCisgICAgLy8gRmluYWxseSwgaWYgd2UgaGF2
ZSBhIGRpcmVjdGlvbmFsIHNjcm9sbCBwcmVmZXIgdGhlIHNuYXAgcG9pbnQgdGhhdCBpcyBpbiB0
aGUgc2Nyb2xsIGRpcmVjdGlvbi4KKyAgICByZXR1cm4gdmVsb2NpdHkgPCAwID8gKnByZXZpb3Vz
IDogKm5leHQ7Cit9CisKKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxMYXlv
dXRVbml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRT
aXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5n
KSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxMYXlvdXRV
bml0LCBMYXlvdXRSZWN0LCBMYXlvdXRTaXplPigqdGhpcywgYXhpcywgdmlld3BvcnRTaXplLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7Cit9CisKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+CitzdGQ6OnBhaXI8
ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
LCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PGZsb2F0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMob2Zmc2V0c0Zv
ckF4aXMoYXhpcyksIG9mZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcp
OworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9mZnNldDxmbG9hdCwgRmxvYXRSZWN0
LCBGbG9hdFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNjcm9sbERlc3RpbmF0aW9u
T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaAppbmRleCAyMGE2NDdmZWExMmM2Y2M4YjU1NTc5YzUxYmQwYTM2MDVm
ZGNlNWU2Li5iOTkyYmFmZTA3N2M3NjJmNTJlZThkNGI3YjRkMDFkMzA0NzQ0ZmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaApAQCAtMjcsNiArMjcsMTAgQEAKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91
dFVuaXQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlN0eWxlU2Nyb2xs
U25hcFBvaW50cy5oIgpAQCAtMzUsMzkgKzM5LDI5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgUmVuZGVy
Qm94OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgordGVtcGxh
dGUgPHR5cGVuYW1lIE9mZnNldFR5cGU+CiBzdHJ1Y3QgU25hcE9mZnNldCB7Ci0gICAgVCBvZmZz
ZXQ7CisgICAgT2Zmc2V0VHlwZSBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsKKyAg
ICB1bnNpZ25lZCBzbmFwQXJlYUluZGV4OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewotICAgIFQgc3RhcnQ7Ci0gICAgVCBlbmQ7Ci19Owot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBlLCB0
eXBlbmFtZSBSZWN0VHlwZT4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBWZWN0b3I8U25hcE9mZnNldDxUPj4g
aG9yaXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxTbmFwT2Zmc2V0PFQ+PiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3M7CiAKLSAg
ICAvLyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSByYW5nZXMgb2Ygc2Ny
b2xsIG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVyIHNjcm9sbCBzbmFw
cGluZy4KLSAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgxKSBmb3IgcHJveGlt
aXR5IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMgYmV0d2VlbiBhZGph
Y2VudCBzbmFwIG9mZnNldHMKLSAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNldCByYW5nZXMsIGFu
ZCAoMikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0aGUg
c25hcCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCi0gICAgLy8gd2hlcmUgdGhlIHNuYXAgcG9y
dCBmaXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRvIGJlIHZhbGlkIHNu
YXAgcG9zaXRpb25zLgotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4+
IGhvcml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRUeXBl
Pj4gdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8UmVjdFR5cGU+IHNuYXBBcmVhczsK
IAotICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVy
KSBjb25zdAorICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T2Zm
c2V0VHlwZSwgUmVjdFR5cGU+JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBo
b3Jpem9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIHZl
cnRpY2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAm
JiB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzOworICAgICAgICByZXR1cm4gc3RyaWN0bmVzcyA9PSBvdGhlci5zdHJpY3RuZXNzICYmIGhv
cml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldHMgJiYgdmVy
dGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZzZXRzICYmIHNuYXBBcmVh
cyA9PSBvdGhlci5zbmFwQXJlYXM7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
QEAgLTc1LDI5ICs2OSwyNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICAg
ICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxTbmFw
T2Zmc2V0cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNuYXBPZmZzZXQ8VD4+IG9m
ZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIFZlY3RvcjxTbmFw
T2Zmc2V0PE9mZnNldFR5cGU+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAg
IH0KIAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gb2Zmc2V0UmFuZ2VzRm9yQXhp
cyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMg
OiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdXRwdXRUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVy
dFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8VCwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcywgVCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlv
bmFsPFQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxs
b3B0KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlLCB0eXBlbmFtZSBP
dXRwdXRSZWN0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1dFJl
Y3RUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8T2Zmc2V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgY29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgT2Zmc2V0VHlwZSBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPE9mZnNldFR5cGU+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIH07
CiAKK3VzaW5nIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsKK3VzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OworCiB0ZW1w
bGF0ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRT
Y2FsZUZhY3RvciAqLykgY29uc3Q7Ci10ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpw
YWlyPGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2Vz
dFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGly
ZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxv
YXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2Fs
ZUZhY3RvciAqLykgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBP
UlQgc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86
OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBj
b25zdDsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxm
bG9hdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIExheW91dFVuaXQg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRV
bml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZl
cnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1w
bGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBjb25zdCB1bnNp
Z25lZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTEwNiw3ICs5OCw3
IEBAIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKIC8v
IHRoZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBkYXRlU25hcE9m
ZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJlbmRlckJveCYg
c2Nyb2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRT
dHlsZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKTsKIAot
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2V0PFQ+IG9mZnNldCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBP
ZmZzZXRUeXBlPiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0
cywgU25hcE9mZnNldDxPZmZzZXRUeXBlPiBvZmZzZXQpCiB7CiAgICAgdHMgPDwgb2Zmc2V0Lm9m
ZnNldDsKICAgICBpZiAob2Zmc2V0LnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykKQEAg
LTExNCwxMyArMTA2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKICAgICByZXR1cm4gdHM7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxUPiYgcmFuZ2UpCi17Ci0gICAgdHMg
PDwgInN0YXJ0OiAiIDw8IHJhbmdlLnN0YXJ0IDw8ICIgZW5kOiAiIDw8IHJhbmdlLmVuZDsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZjQw
ODE5YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkwNTk4NzVmODBlMS4uODQzMjg4MWM4OWYxNmM1N2I0
Njc0YzI0YmI0YTk4Mzg2ZDdhYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0x
NTcsNyArMTU3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFw
T2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3Zv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3Qg
RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9mZnNl
dHNJbmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdiNDE2NDA0NC4uYzVkNzYz
OWNmMWNhZTBjN2UwMzdmYzM1OTlmMjI1ODFiYWFkYWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmgKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRz
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiYgbmV3T2Zmc2V0c0luZm8pOworICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5m
bzsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IEZs
b2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdPZmZzZXRzSW5mbyk7CiAKICAgICB1bnNpZ25l
ZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1f
c25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9m
ZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYzI4YzA4
Mjg4MzFhNThjMjJmM2M1MWNlNjdkMTBlNy4uOGI2MzRlMWFkNjRmMjQxOWJmMmJhOTA4NDMxYzgz
N2M5N2Q2ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJl
YW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Citjb25zdCBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmU0OWQwYjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNi4uNTVi
Y2VkM2UwZTYxMjEwNmQ5M2Y4NTJlZWY3ZDQ2NDIxMDUyNTQzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNj
cm9sbGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHVuc2lnbmVk
IGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
dW5zaWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5k
ZXg7IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9jdXJy
ZW50U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1f
c25hcE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9m
ZnNldHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsg
MCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCmluZGV4IGE1YjQ4YzIwMzQxNWFiN2IwOWNlOWMzZmE5OWMxNWVhNjM3NDBlNDUuLjNl
MjQ1NzRhYjAwZWZmNDVlMGY4Y2ExMGYxMzA4NTFhODFhZWE3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRl
Tm9kZShjb25zdCBTY3JvbGxpbmdTCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCi0gICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CisgICAgICAgIG1fc2Nyb2xsQ29u
dHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zm
c2V0c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKSk7CiAKICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAg
ICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuY3BwCmluZGV4IGMzZWM2YzQ0MWQzMTJmNTg1MmJiZDZmMmI0OTBlMjdjYjVl
MzEzYWUuLjY1NTAwZDEwZmVmMzgxMDc0MjJlMjlmYjk5YzA1NmUwNjEyNWRiMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygq
c25hcE9mZnNldEluZm8pOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9s
bFNuYXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFw
T2Zmc2V0SW5mbykKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50
cyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRJbmZvKQogewog
ICAgIGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFw
U3RhdGUgPSBudWxscHRyOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxl
cjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0
ZDo6bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zm
c2V0cy5maXJzdCgpLm9mZnNldCksIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwotCi0gICAg
dW5zaWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0
U25hcE9mZnNldChheGlzLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CisgICAgTGF5b3V0U2l6
ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQu
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25h
cFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRT
aXplLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTM3LDcgKzEzNyw5IEBAIGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9m
ZnNldC5oYXNWYWx1ZSgpKQogICAgICAgICBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBM
YXlvdXRVbml0KCpvcmlnaW5hbE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsK
LSAgICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nl
c3RTbmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQoZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVu
dC5wYWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5p
dHMpLmZpcnN0OworCisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3Bv
cnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAg
IExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNu
YXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0
IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJ
bkxheW91dFVuaXRzKS5maXJzdDsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNj
YWxlRmFjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xs
ZXIuaAppbmRleCBkOTI1ZmQ0NTU4NGMwMTExYzllZjBjMjg5MWY3Yzc1MTY2MTBlYjdiLi5kZDUz
YWRhOTBhMmY1ZjI5MDg4MDEwMjNjM2U1YTNjNDMxZWY2MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2lu
dHMoY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgdm9pZCBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQpOwogICAg
IHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0KTsK
ICAgICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggN2Q2OGQ1MGRk
ZTc2ZTg5MDk2Y2QzZTU4ZjNmYzM5MWZmYzY3MTc3Yy4uMWVlNzQxNjdiODE5ODNmNDcwMmQ4MzZh
NmY5NzcwNzcyNDcyMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBz
dGF0ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zm
c2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0ZWRT
Y3JvbGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25P
ZmZzZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb250ZW50U2l6ZS53aWR0aCgpIC0g
dmlld3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxU
YXJnZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVT
bmFwSW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkg
LSB2aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3Jv
bGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2Fj
dGl2ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRG
b3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0
LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERl
bHRhLndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0
WSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWws
IHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0
KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBh
Z2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwogICAg
IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0
T2Zmc2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSwxMCArOTEsMTEg
QEAgRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Ny
b2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0
b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9h
dCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZz
ZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFs
RGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxP
ZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBh
Z2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4
KSBjb25zdAogewogICAgIExheW91dFVuaXQgcHJvcG9zZWRPZmZzZXQ7Ci0gICAgc3RkOjp0aWUo
cHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5j
bG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VT
Y2FsZSksIGluaXRpYWxEZWx0YSk7CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydExheW91dFNpemUo
dmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgc3RkOjp0
aWUocHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5m
by5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydExheW91dFNpemUsIExheW91dFVuaXQo
cHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhKTsKICAgICBpZiAob3V0
QWN0aXZlU25hcEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgIHJldHVy
biBwYWdlU2NhbGUgKiBwcm9wb3NlZE9mZnNldDsKICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4o
c3RhcnRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNldCk7CkBAIC0xMDUsMTEgKzEwNiw2IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlJiBzdGF0ZSkKICAgICB0cyA8PCAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0Zv
ckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJzbmFwIG9mZnNldHMgeSIsIHN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsKSk7Ci0gICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9y
QXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBP
ZmZzZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkK
LSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5z
bmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAg
ICB0cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFw
SW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiYWN0aXZlIHNuYXAgaW5kZXggeSIsIHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0
NGM2MzliNGFmZjBjMjQyNjk1ODIxNDk5Li42YjZkMjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2
NjVkNjE0Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgKQEAgLTU3LDI0ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zm
c2V0czsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpv
bnRhbCA/IG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9z
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBj
b25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNl
dEluZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7
IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0
c0FuZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVj
dG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0g
ICAgICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAg
ICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNl
dHM7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcyA9IHNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAg
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFw
T2Zmc2V0UmFuZ2VzOwotICAgICAgICB9Ci0gICAgfQorICAgIGNvbnN0IExheW91dFNjcm9sbFNu
YXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZz
ZXRzSW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xs
U25hcE9mZnNldHNJbmZvJiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsg
fQogCiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFN0YXRlOyB9CiAKQEAgLTEwMCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBm
bG9hdCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1h
eFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwg
ZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVT
bmFwSW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNj
cm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFw
SW5kZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxT
bmFwU3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3Rh
dGUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxT
bmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9OwogCi0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PExheW91dFVuaXQ+IG1fc25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKIAogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcElu
ZGV4WCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4
ZGRjYTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcw
MDZhNTkxNjk2MWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcApAQCAtNDc5LDE5ICs0NzksMTkgQEAgU3RyaW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNh
bFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxl
QXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKK0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5m
byYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFt
X3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zm
c2V0c0luZm8gPSBtYWtlVW5pcXVlPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAg
ICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0
c0luZm88TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0
Citjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFw
T2Zmc2V0SW5mbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgp
OwogfQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25z
dCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFi
bGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zm
c2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKGluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNs
ZWFyU25hcE9mZnNldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5o
CmluZGV4IDdlYjdiNTQwMjgyODQwYWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzlj
ZGI3ZjY3OTM5OGE3Yzg3NzMxMmVkNDk3YzE2ZmU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1
c2VzU2Nyb2xsU25hcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4q
IHNuYXBPZmZzZXRJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0
U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBP
ZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAg
IHZvaWQgc2V0U2Nyb2xsU25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvJik7CiAgICAgdm9pZCBjbGVhclNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggPSBpbmRleDsgfQpAQCAtMzg1LDggKzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxM
YXlvdXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87Cisg
ICAgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBP
ZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCmluZGV4IGMwOTVjZDY2ZjU5NTZmOGI4OWFhY2IzM2Q1YjdmODAyMzBhOWE3
YjUuLmQ0NTIxZDY1OGMzM2ZhZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyNzgs
NyArMTI3OCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGEoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCi1zdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbykKK3N0YXRpYyBib29s
IGdlc3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvKiBvZmZzZXRJbmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDNlMzgwZmQxNDVkNzIyNWJhYzA1NzMzMGMxOWQ2Y2E4OGEwZTBjZDIu
LjFjODIxZWViN2NkYmIxNGUwM2FhNGQ0ODQ1YmE0MTI1ODllZDY4MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDkg
Kzk4LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxE
YXRhPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgUmVxdWVzdGVkU2Nyb2xsRGF0YSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7Ci0g
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKKyAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTbmFw
T2Zmc2V0PGZsb2F0Pj4gewpAQCAtMzExLDcgKzMxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Ny
b2xsCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAg
U0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9s
bE9yaWdpbiwgSW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+LCBz
ZXRTbmFwT2Zmc2V0c0luZm8pOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNl
dHNJbmZvLCBzZXRTbmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJ
bmRleCwgdW5zaWduZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJy
ZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCk7CiAjZW5kaWYKQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8U25hcE9mZnNldDxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U25hcE9mZnNldAogewogICAgIGVuY29kZXIgPDwgb2Zmc2V0Lm9mZnNldDsKICAgICBlbmNvZGVy
IDw8IG9mZnNldC5zdG9wOworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kZXg7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0Pj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBTbmFwT2Zmc2V0PGZsb2F0PiYgb2Zmc2V0KQpAQCAtNTQwLDI3ICs1NDEsMjYg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8
U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQordm9pZCBBcmd1bWVudENv
ZGVyPEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGVuY29kZXIg
PDwgaW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRp
Y2FsU25hcE9mZnNldHM7Ci0gICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0
UmFuZ2VzOwotICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7Cisg
ICAgZW5jb2RlciA8PCBpbmZvLnNuYXBBcmVhczsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK2Jvb2wgQXJndW1lbnRDb2RlcjxGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGluZm8uc25hcEFyZWFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggMzhkZDlkMzFlNmM3Y2Y3OTQ5NTZlNzczMGIxMDdkZTQ5NDdhNGI4Ny4uODdlNGQ0
NjBlZTNlNDFjYzc5ODY5NjRjMzE0ODVlZDM1NmYwZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yODA1LDMyICsyODA1LDYgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgU2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4m
IHJhbmdlKQotewotICAgIGVuY29kZXIgPDwgcmFuZ2Uuc3RhcnQ7Ci0gICAgZW5jb2RlciA8PCBy
YW5nZS5lbmQ7Ci19Ci0KLWF1dG8gQXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9h
dD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+PgotewotICAgIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZs
b2F0PiByYW5nZTsKLSAgICBmbG9hdCBzdGFydDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGZsb2F0IGVuZDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGVuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICByYW5nZS5zdGFydCA9IHN0YXJ0OwotICAgIHJhbmdlLmVuZCA9IGVuZDsKLSAgICBy
ZXR1cm4gcmFuZ2U7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxl
Y3Rpb25PcHRpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFTZWxlY3Rp
b25PcHRpb24mIG9wdGlvbikKIHsKICAgICBlbmNvZGVyIDw8IG9wdGlvbi5kaXNwbGF5TmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTI4
ZGE3NTYwYzNlODliZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4uZTNlYmQzM2MwZTY5Y2MyMzRm
MWM2ZDU4MTRlN2I0Nzc5ZmE2NmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc0MywxNSArNzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7
CiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsK
LSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcm9sbE9m
ZnNldFJhbmdlPGZsb2F0PiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi0jZW5kaWYKLQogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlv
bj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVk
aWFTZWxlY3Rpb25PcHRpb24mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFT
ZWxlY3Rpb25PcHRpb24+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMTE2NzVmMzI0
NWJhMTFhYzM5OGZkYmEyZmNlMzYzYmFiZjBhYTQ1NC4uMDQ2NDEwOGZkOGZhZDQ4YjJiZDRlMzhm
ODBmOWM2YjJhNTgwMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjIzLDE0ICsyMjMsMTIgQEAgYm9vbCBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Ny
b2xsaW5nKFNjcm9sbEV2ZW4KIAogZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eTo6Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQm
IGN1cnJlbnRJbmRleCkgY29uc3QKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1f
c2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKLSAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0Zy
YW1lU2Nyb2xsaW5nTm9kZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
KiByb290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUqPihyb290KTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiBy
b290U2Nyb2xsaW5nTm9kZSA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBjb25z
dCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJ
bmZvKCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3Rp
bmF0aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxv
YXQgcmF3Q2xvc2VzdFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZz
ZXQsIGN1cnJlbnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhp
cywgc2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKKyAgICBzdGQ6OnRpZShyYXdD
bG9zZXN0U25hcE9mZnNldCwgY3VycmVudEluZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0
U25hcE9mZnNldChheGlzLCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXpl
KCksIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7CiAgICAgcmV0dXJuIHJhd0Ns
b3Nlc3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ODBjMDMxOTVmODljNGJkMTNkZDZhNjQ2NTIzZjFk
Zjg0Yzk1NjRlLi44ZmM2NjE1Zjc2ZjNjOWZhZDAwZjU5NGIzNGIxM2RkNDRjOTIzY2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLm1tCkBAIC0xMDYsMTYgKzEwNiwxNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxs
RW5kRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1Bv
aQogICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCgpOwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24g
PSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0
aWNhbFNuYXBQb2ludEluZGV4KCk7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRT
aXplKHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChbc2Nyb2xsVmlldyBib3VuZHNd
KSksIHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQoW3Njcm9sbFZpZXcgYm91bmRz
XSkpKTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICgh
c25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8u
Y2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBo
b3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25h
cFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2Vi
Q29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB2aWV3cG9ydFNpemUsIGhvcml6b250
YWxUYXJnZXQsIHZlbG9jaXR5LngpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5k
ZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJn
ZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENv
bnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCiAgICAgaWYg
KCFzbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8u
Y2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVy
dGljYWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9z
aXRpb24sIGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3Jl
OjpTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0
LCB2ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAg
ICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZp
ZXcuY29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+
eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZjhhOWUwZjZkNmFjNmM4ZThjMDA1
NTFkYmQ2M2JiYzA1OTA3YzAyLi5kNDk0YmVjZTI2NjdjYmE2Y2FiMmY3Yjk3MGU0OTEwY2JjZDEw
Njk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFByb3Bl
cmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
Y2xpY2stc2Nyb2xsYmFyLWd1dHRlci5odG1sOiBUaGlzIHRlc3QgdXNlZCBzbmFwIGFyZWFzIHRo
YXQKKyAgICAgICAgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0LCB0aHVzIG1lYW50IHRoYXQgaXQgcmVs
aWVkIG9uIG5vbi1zcGVjIGNvbXBsaWFudCBiZWhhdmlvci4gUmV3b3JrIGl0IHNvCisgICAgICAg
IHRoYXQgdGhlIHNuYXAgYXJlYXMgZG8gbm90IG92ZXJmbG93LCBtYWludGFpbmluZyB0aGUgZXhp
c3RpbmcgYmVoYXZpb3IuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6
b250YWwuaHRtbDogRGl0dG8uCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWw6IERpdHRvLgorCiAy
MDIxLTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJldmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggMWFlMzI2YzNjYjBiMmM0Y2UzNTY4M2I3ZDhhODZlNWQzZGIyNWU1
OS4uNTQ3MzhiYmQxZDk1OTY3Yzg5MjA5NDY0MTU5M2U5YTM1NTNhY2RlYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNu
YXBdIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0OiBV
cGRhdGUgZXhwZWN0YXRpb25zIHRvCisgICAgICAgIHNob3cgdGhhdCB0aGlzIHRlc3QgaXMgbm93
IHBhc3NpbmcuCisKIDIwMjEtMDMtMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CiAKICAgICAgICAgRG8gbm90IHNocmluayByYWRpbyBidXR0b25zIGJlbGxvdyBp
dHMgc2l6ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAppbmRleCA3YjM1
MjZjYzRkZDA3ZDUxYzllYzkzZGM4OWQ0OTAyYmYwYmQ0NjMyLi45NGRhOGJlNTMxYmZkZWI5NDIw
NWY3ZThlYzIxMjYxZDFkZjg2YmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0
ZXIuaHRtbApAQCAtMzQsMjEgKzM0LDMyIEBACiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAt
dHlwZTogYm90aCBtYW5kYXRvcnk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ibG9j
ayB7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgd2lk
dGg6IDI1MHB4OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAg
ICAgICAgICAgIH0KLQogICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIHsKICAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMDBweDsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIC5ibG9jayB7Ci0g
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1
MHB4OworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4gZGl2IHsKKyAgICAgICAgICAg
ICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgICAgICB3aWR0aDogOTkwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuaG9y
aXpvbnRhbC1kcmF3ZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xs
LXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdiB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA5OTBweDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdi5z
bmFwLXBvaW50IHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgfQorCiAgICAgICAgIDwv
c3R5bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KQEAgLTg3LDEzICs5OCwxNyBAQAogICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KICAgICAgICAgPGRpdiBpZD0iaG9yaXpvbnRhbC1jb250YWluZXIiIGNsYXNzPSJj
b250YWluZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1kcmF3ZXIiPgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IGJh
Y2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJs
b2NrIiBzdHlsZT0id2lkdGg6IDQ1MHB4OyBmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3
MSI+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9
ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+
CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91
bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAg
ICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgaWQ9InZlcnRpY2FsLWNv
bnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9j
ayIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBj
bGFzcz0iYmxvY2siIHN0eWxlPSJoZWlnaHQ6IDQ1MHB4OyBiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3Jv
dW5kOiAjODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHAg
aWQ9ImNvbnNvbGUiPjwvcD4KICAgICAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9v
dmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1z
bmFwLWFyZWFzLWV4cGVjdGVkLnR4dAppbmRleCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2
NTkzM2I4OGUyODFlLi4yNTljZDk4MGM1NDlhMDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNj
cm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsx
LDEzIEBACiAKIFBBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJl
YSBkb2Vzbid0IGNvdmVyIHRoZSBzbmFwcG9ydCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25h
cCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0
aGUgcmlnaHQgYm9yZGVyLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAw
Ci1GQUlMIFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJz
IHRoZSBzbmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgMjAwIGJ1dCBnb3QgMjcxNQorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBp
ZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9y
ZGVyLgorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNv
dmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlm
IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25h
cCBwb3NpdGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25h
cHMgaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAw
KSBzbmFwIHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJ
TCBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBw
b3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRp
c3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2Vy
IHRoYW4gc25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3Qg
ODAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxp
ZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFu
ZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBp
cyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAg
YnV0IGdvdCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBp
cyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0
IG9uIHggYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkIDE1MDAgYnV0IGdvdCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBz
Y3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25h
cCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNu
YXAgcG9zaXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAot
RkFJTCBEb24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8g
cG9zaXRpb25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEg
c25hcCB0YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgMzcxNSBidXQgZ290IDIyMDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3Np
dGlvbiBvbiB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFw
IHRvIHRoZSBzcGVjaWZpZWQgc25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBj
b3ZlcmluZyB5IGF4aXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFT
UyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBw
b3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRp
c3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2Vy
IHRoYW4gc25hcHBvcnQoNTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlv
biB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJz
IHNuYXBwb3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDAp
IGFuZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAg
dG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9u
LCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBz
dWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBv
c2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBj
b3ZlcnMgc25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0
aW9ucy4KK1BBU1MgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Ny
b2xsIHRvIHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFu
ZCBpZiBhIHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAg
dG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4
IGF4aXMuSG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24g
eSBhcyB0aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1t
YW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFu
ZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAppbmRleCA2NDI3
YTExNGU0OGIyNmJlNjViNTVlN2I4NjhkZjg2NzU2OTFhOWY4Li45NGRhZDIxNjhjNjBkZTkxNTQ3
NmIxZDAxMGE2NDNkMDRmZTkyMGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJh
bWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgICAg
IDxzdHlsZT4KICAgICAgICAgICAgIGh0bWwgewogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFw
LXR5cGU6IHkgbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgIHdp
ZHRoOiAxMDB2dzsKQEAgLTEyLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAw
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLmNvbG9yQm94IHsKLSAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMHZoOworICAgICAgICAgICAgICAgIGhlaWdodDogOTB2aDsKICAgICAgICAg
ICAgICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJv
eGltaXR5LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbAppbmRleCA1
YjA1MmZkYmY5NGM4NGEzZDhlMGQxYTI4ZmNiNTIyMDJhZWY5ZjJmLi4xNTMxZTFlM2FiMjI1ZTUw
MmIzYjcyMGQxZDA2MWI4YmUzMGZmNjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZs
b3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbApAQCAtMTMsMjEgKzEzLDE2
IEBACiAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAg
IHRvcDogMDsKICAgICAgICAgICAgICAgICBsZWZ0OiAwOwotICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IG5vbmU7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAg
ICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5OwotICAgICAgICAgICAgICAg
IC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OwotICAgICAgICAgICAgICAgIHNj
cm9sbC1zbmFwLXR5cGU6IHByb3hpbWl0eTsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC5hcmVhIHsKLSAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDYwMHB4OwotICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAg
ICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246
IHN0YXJ0OwotICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTog
MCAwOwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423311</attachid>
            <date>2021-03-16 02:41:50 -0700</date>
            <delta_ts>2021-03-17 03:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223175-20210316104146.patch</filename>
            <type>text/plain</type>
            <size>79842</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhMjM3MWNjYTE1MmJm
ZDg0NDk2NzQyNjU3MzVhZmFmNzdjOWQ1ZS4uODFkYzc3NzA2MjcwNDczM2ZmZGNjOWFkYzk4OGE4
YzZkYjdmNzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAzLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgaGFuZGxlIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuIFRoaXMgcmVxdWlyZXMgcmV3cml0aW5nIHRoZSBzbmFwcGlu
ZyBhbGdvcml0aG0uCisgICAgICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBub3cgc3RvcmVzIHNu
YXAgYXJlYSByZWN0YW5nbGVzLCB3aGljaCBhcmUgdXNlZCB0byBpbXBsZW1lbnQKKyAgICAgICAg
c3BlYy1jb21wbGlhbnQgc25hcCBwb2ludCBzZWxlY3Rpb24gYmVoYXZpb3IgaW4gc2l0dWF0aW9u
cyB3aGVyZSBzbmFwIGFyZWFzIG92ZXJmbG93IHRoZQorICAgICAgICBzbmFwcG9ydC4gQ29uY3Jl
dGVseSwgaW4gdGhpcyBzaXR1YXRpb24sIGFueSBzY3JvbGwgb2Zmc2V0IHdpdGhpbiB0aGUgc25h
cCBhcmVhIHdoZXJlIHRoZQorICAgICAgICBhcmVhIGZpbGxzIHRoZSBlbnRpcmUgdmlld3BvcnQg
KGluIHRoZSBheGlzIG9mIHNjcm9sbCkgaXMgYSB2YWxpZCBzbmFwIHBvaW50LgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBzbmFwIG9mZnNldCByYW5nZXMgYXJlIG5vIGxvbmdlciBrZXB0IHRvIHJl
cHJlc2VudCBwcm94aW1pdHksIHNpbmNlIHByb3hpbWl0eQorICAgICAgICBjYW4gYmUgaGFuZGxl
ZCBkdXJpbmcgYSBtb3JlIHRob3JvdWdoIHNuYXAgcG9pbnQgc2VsZWN0aW9uIHByb2Nlc3MuCisK
KyAgICAgICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvIG5vdyBjb250YWlucyBhIHJlY3RhbmdsZSB0
eXBlLCB3aGljaCBpcyBlaXRoZXIgYSBMYXlvdXRSZWN0IG9yIGEKKyAgICAgICAgRmxvYXRSZWN0
LCBzbyB0aGUgdGVtcGxhdGUgbmVlZHMgdG8gY2FycnkgdGhpcyB0eXBlIGFzIHdlbGwuIEluIG9y
ZGVyIHRvIG1ha2UgaXQgc2ltcGxlciB0bworICAgICAgICByZWZlciB0byBhIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyB0aGlzIGNoYW5nZSBjcmVhdGVzIHR3byB0eXBlIGFsaWFzZXMsCisgICAgICAg
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIGFuZCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8sIHdoaWNoIGFyZSB1c2VkIHRocm91Z2hvdXQKKyAgICAgICAgdGhlIGNvZGUuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgV1BUIHRlc3Q6CisgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVy
Zmxvd2luZy1zbmFwLWFyZWFzLmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0
aW9uKTogVXBkYXRlZCB0byByZXR1cm4gYW4gb2Zmc2V0L2luZGV4CisgICAgICAgIHBhaXIgc28g
dGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQg
b2YgY2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKTogTm8gbG9uZ2VyIHN0b3JlIG9mZnNldCByYW5n
ZXMgZm9yIHByb3hpbWl0eSBzbmFwcGluZworICAgICAgICBhbmQgYWxzbyBzdG9yZSBzbmFwIGFy
ZWFzIGNvbnZlcnRlZCB0byAib2Zmc2V0IiBjb29yZGluYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRPZmZzZXRJbmZvKTogTm8gbG9uZ2VyIG5lZWQgdG8gY29udmVydCBvZmZzZXQgcmFu
Z2VzLCBidXQgdGhpcyBkb2VzIG5vdworICAgICAgICByZXF1aXJlIGNvbnZlcnRpbmcgb2Zmc2V0
IGFyZWFzLgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNv
bnZlcnRVbml0cyBjb25zdCk6IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjptYXhGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggZ2V0cyB0aGUgbWF4aW11bSBpbiBhIHBhcnRpY3VsYXIgYXhpcyBnaXZlbiB0aGUgYXhp
cy4KKyAgICAgICAgKFdlYkNvcmU6Om1pbkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggcmVwbGFjZXMgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQpOiBUaGlzIHJlcGxhY2Vz
IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMsIGJ1dCBhbHNvCisgICAgICAg
IGFuZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMuIE5vdyB3cml0dGVuIHVzaW5nIHNuYXAg
YXJlYXMgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXMgd2VsbCBhcworICAgICAgICB3aXRoIHBy
b3BlciBoYW5kbGluZyBmb3Igb3ZlcmZsb3dpbmcgc25hcCBhcmVhcy4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3Qp
OiBVcGRhdGUgZm9yIG5ldyBtZXRob2QgbmFtZXMgYW5kIHR5cGUgYWxpYXNlcy4KKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvOjppc0VxdWFs
IGNvbnN0KTogTm8gbG9uZ2VyIGxvb2sgYXQgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgZG8gdGFr
ZSBpbnRvCisgICAgICAgIGNvbnNpZGVyYXRpb24gdGhlIHNuYXAgYXJlYXMuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxTbmFwT2Zmc2V0c0luZm86Om9mZnNldHNGb3JBeGlzIGNvbnN0KTogUmVu
YW1lZCB0aGUgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8
KTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6IERpdHRvLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9kZSk6IGNvbnZlcnRVbml0cyBub3cg
dGFrZXMgdHdvIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMpOiBQYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gc2VsZWN0
aW5nIHNuYXAgcG9pbnRzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRq
dXN0U2Nyb2xsRGVzdGluYXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmg6IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXMuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUpOiBQYXNzIHZpZXdwb3J0IHNp
emUgdG8gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBObyBsb25nZXIgcHJpbnQgc25h
cCBvZmZzZXQgcmFuZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmg6IFJlbW92ZWQgbWV0aG9kIGRlYWxpbmcgd2l0aCByYW5nZXMuIE5vdyBwYXNzIHZpZXdw
b3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOiBEaXR0by4KKwogMjAyMS0wMy0xMCAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEbyBub3Qgc2hyaW5r
IHJhZGlvIGJ1dHRvbnMgYmVsbG93IGl0cyBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlNTQzYWY2NDA5NjEw
OTY4ZDM5YTZmZDkwM2YwNDA0YjI0MWI5YTcuLjNiMDJhNTk5ZjFmMzE0OWZkNjE4ODA2YTg0ZWJh
ODdiNzlkNjQwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDMtMTUgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xs
LXNuYXBdIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gbm8gbG9uZ2VyIGhvbGRzIHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGlzIGFsc28gdGVtcGxh
dGVkIG9mZgorICAgICAgICBvZiBhIHJlY3QgdHlwZS4gSW4gV2ViS2l0IHdlIHN3aXRjaCB0byB1
c2luZyB0aGUgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gYWxpYXMuCisgICAgICAgIEFkZGl0
aW9uYWxseSwgd2UgbmVlZCB0byBwYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gcmVxdWVz
dGluZyBhIHNuYXAgb2Zmc2V0CisgICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6
ZGVjb2RlKTogU3dpdGNoIHRvIHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBh
bGlhcy4KKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+
OjplbmNvZGUpOiBEaXR0by4gQWxzbyB3ZSBubyBsb25nZXIgbmVlZCB0byBlbmNvZGUgdGhlIHJh
bmdlcy4KKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+
OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyBjb25zdCk6IFBhc3MgaW4gdGhlIHZpZXdwb3J0IHNpemUgbm93LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0
ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zm
c2V0Ol0pOiBEaXR0by4KKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29tbWFuZHMgYXJl
IG5vdCBwcm9jZXNzZWQgaW4gb3JkZXIgaWYgR1BVIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgcmVw
bGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2Qx
NTg0NzQwMDQ3OWI3Yzk3Li40ODBmZTk1ZDgyYjI5MTQ5NzlmYTA1OWI2NmI5M2U3MWE4Zjc4MTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMTUgKzkyLDE1IEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0
aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQo
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8qIG9mZnNldEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAg
IGlmICghb2Zmc2V0SW5mbykgewotICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+KCkpOworICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRz
SW5mbyhGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8
ZmxvYXQ+KGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8o
b2Zmc2V0SW5mby0+Y29udmVydFVuaXRzPGZsb2F0LCBGbG9hdFJlY3Q+KGRldmljZVNjYWxlRmFj
dG9yKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXggYWNmZWQwZjM4Mzc4ZWI0ZTJl
YzJhNTFiNDEwMjhmNTIwM2Q1N2NiNC4uNjQwMjRlOWJmMWExYmQ5ZGUxNWFhYTQ0YWM2MjMwOTdi
YjBlYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00MSw2OCArNDEsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lk
IGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zmc2V0LCBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2Vz
LCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVW5pdFR5cGU+CitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaXRUeXBlLCB1
bnNpZ25lZD4+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0
aW9uKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PFVuaXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBVbml0
VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
KQogewotICAgIGlmIChzbmFwT2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsb3dl
ckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKLSAgICAgICAgdXBwZXJJbmRleCA9IGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQg
bG93ZXJJbmRleEFzSW50ID0gLTE7Ci0gICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZz
ZXRSYW5nZXMuc2l6ZSgpOwotICAgIGRvIHsKLSAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxv
d2VySW5kZXhBc0ludCArIHVwcGVySW5kZXhBc0ludCkgLyAyOwotICAgICAgICBhdXRvJiByYW5n
ZSA9IHNuYXBPZmZzZXRSYW5nZXNbbWlkZGxlSW5kZXhdOwotICAgICAgICBpZiAocmFuZ2Uuc3Rh
cnQgPCBvZmZzZXQgJiYgb2Zmc2V0IDwgcmFuZ2UuZW5kKSB7Ci0gICAgICAgICAgICBsb3dlcklu
ZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1p
ZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
b2Zmc2V0ID4gcmFuZ2UuZW5kKQotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxl
SW5kZXg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRs
ZUluZGV4OwotICAgIH0gd2hpbGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAt
IDEpOwotCi0gICAgaWYgKG9mZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQp
Ci0gICAgICAgIGxvd2VySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UK
LSAgICAgICAgbG93ZXJJbmRleCA9IGxvd2VySW5kZXhBc0ludDsKLQotICAgIGlmIChvZmZzZXQg
Pj0gc25hcE9mZnNldFJhbmdlcy5sYXN0KCkuZW5kKQotICAgICAgICB1cHBlckluZGV4ID0gaW52
YWxpZFNuYXBPZmZzZXRJbmRleDsKLSAgICBlbHNlCi0gICAgICAgIHVwcGVySW5kZXggPSB1cHBl
ckluZGV4QXNJbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGlj
IHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25z
dCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYg
bG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7
Ci0gICAgdXBwZXJJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxv
d2VySW5kZXggPCB1cHBlckluZGV4IC0gMSkgewotICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAo
bG93ZXJJbmRleCArIHVwcGVySW5kZXgpIC8gMjsKLSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQg
PSBzbmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0ub2Zmc2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09
IG1pZGRsZU9mZnNldCkgewotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4Owot
ICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAg
ICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0
b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZz
ZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgTGF5b3V0VHlw
ZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZz
ZXQ7CisgICAgVW5pdFR5cGUgZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0g
c2Nyb2xsT3JpZ2luT2Zmc2V0OwogICAgIGlmICghZGlmZmVyZW5jZSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIApAQCAtMTEzLDcgKzU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihj
b24KICAgICAgICAgaXRlcmF0aW9uID0gLTE7CiAgICAgfQogCi0gICAgYXV0byBpc1Bhc3QgPSBb
ZGlmZmVyZW5jZV0oTGF5b3V0VHlwZSBtYXJrLCBMYXlvdXRUeXBlIGNhbmRpZGF0ZSkgeworICAg
IGF1dG8gaXNQYXN0ID0gW2RpZmZlcmVuY2VdKFVuaXRUeXBlIG1hcmssIFVuaXRUeXBlIGNhbmRp
ZGF0ZSkgewogICAgICAgICByZXR1cm4gKGRpZmZlcmVuY2UgPiAwICYmIGNhbmRpZGF0ZSA+IG1h
cmspIHx8IChkaWZmZXJlbmNlIDwgMCAmJiBjYW5kaWRhdGUgPCBtYXJrKTsKICAgICB9OwogCkBA
IC0xMjQsNjUgKzY2LDEyIEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25h
cFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGlmIChz
bmFwT2Zmc2V0c1tpXS5zdG9wICE9IFNjcm9sbFNuYXBTdG9wOjpBbHdheXMpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGlzUGFzdChzY3JvbGxPcmlnaW5PZmZzZXQsIG9mZnNl
dCkpCi0gICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihvZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1z
dGF0aWMgc3RkOjpwYWlyPExheW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdp
dGhPZmZzZXRzQW5kUmFuZ2VzKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYg
c25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4m
IHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRUeXBlPiBvcmlnaW5hbE9mZnNldEZvckRpcmVj
dGlvbmFsU25hcHBpbmcpCi17Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlk
U25hcE9mZnNldEluZGV4KTsKLQotICAgIGlmIChvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFs
U25hcHBpbmcuaGFzVmFsdWUoKSkgewotICAgICAgICBhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJ
bmRleCA9IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9u
KHNuYXBPZmZzZXRzLCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgICAgIGlmIChmaXJzdFNuYXBTdG9wT2Zmc2V0SW5k
ZXguaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zm
c2V0c1sqZmlyc3RTbmFwU3RvcE9mZnNldEluZGV4XS5vZmZzZXQsICpmaXJzdFNuYXBTdG9wT2Zm
c2V0SW5kZXgpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5k
ZXg7Ci0gICAgdW5zaWduZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICBpbmRpY2Vz
T2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgc25hcE9mZnNldFJhbmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJT
bmFwT2Zmc2V0UmFuZ2VJbmRleCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXgg
PT0gdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4
ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAg
ICBpZiAoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZz
ZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9m
ZnNldCwgMHUpOwotCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZz
ZXRzLmxhc3QoKS5vZmZzZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zm
c2V0cy5sYXN0KCkub2Zmc2V0LCBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxKTsKLQotICAgIHVuc2ln
bmVkIGxvd2VySW5kZXg7Ci0gICAgdW5zaWduZWQgdXBwZXJJbmRleDsKLSAgICBpbmRpY2VzT2ZO
ZWFyZXN0U25hcE9mZnNldHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNu
YXBPZmZzZXRzLCBsb3dlckluZGV4LCB1cHBlckluZGV4KTsKLSAgICBMYXlvdXRUeXBlIGxvd2Vy
U25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwotICAgIExheW91
dFR5cGUgdXBwZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7
Ci0gICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKLSAgICAgICAgYm9vbCBpc0Nsb3NlclRv
TG93ZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBv
c2l0aW9uIDw9IHVwcGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0g
ICAgICAgIHJldHVybiBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBzdGQ6Om1ha2VfcGFp
cihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCkgOiBzdGQ6Om1ha2VfcGFpcih1cHBlclNu
YXBQb3NpdGlvbiwgdXBwZXJJbmRleCk7Ci0gICAgfQotCi0gICAgLy8gTm9uLXplcm8gdmVsb2Np
dHkgaW5kaWNhdGVzIGEgZmxpY2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQg
aXMgY2xvc2VyLCB3ZSBzaG91bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0
aGUgZmxpY2sgZ2VzdHVyZQotICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQg
cmFuZ2UgZG9lcyBub3QgbGllIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhl
IHRhcmdldGVkIHNuYXAgb2Zmc2V0LiBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0aW9uYWwKLSAgICAv
LyBzbmFwcGluZywgd2Ugc2hvdWxkIG5ldmVyIHNuYXAgdG8gYSBwb2ludCB0aGF0IHdhcyBvbiB0
aGUgb3RoZXIgc2lkZSBvZiB0aGUgb3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIG9wcG9zaXRlIGRp
cmVjdGlvbiBvZiB0aGlzIHNjcm9sbC4KLSAgICAvLyBUaGlzIGFsbG93cyBkaXJlY3Rpb25hbCBz
Y3JvbGxpbmcgdG8gZXNjYXBlIHNuYXAgcG9pbnRzLgotICAgIGlmICh2ZWxvY2l0eSA8IDApIHsK
LSAgICAgICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleCB8fCBsb3dlclNuYXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25h
cE9mZnNldFJhbmdlSW5kZXhdLmVuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxP
ZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZh
bGlkU25hcE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFu
Z2VJbmRleF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgICAgICBp
ZiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93
ZXJJbmRleCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKLX0KLQogZW51bSBjbGFzcyBJ
bnNldE9yT3V0c2V0IHsKICAgICBJbnNldCwKICAgICBPdXRzZXQKQEAgLTIxOSwzMCArMTA4LDYg
QEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChMYXlvdXRV
bml0IG1pbkxvY2F0aW9uLCBMYXlvdXRVbmkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1
dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U25hcE9mZnNldDxM
YXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+JiBvZmZzZXRSYW5nZXMsIExheW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCi17
Ci0gICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRv
IGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3Vu
ZCB3aXRoCi0gICAgLy8gdGhpcyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMg
Y29uc3QgZmxvYXQgcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQ
cm94aW1pdHkgPSAwLjM7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBv
ZmZzZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3Rl
bnRpYWwgc25hcCBvZmZzZXQKLSAgICAvLyBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0
aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNu
YXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCi0gICAgLy8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5h
dGlvbiBpcyBzdGlsbCB3aXRoaW4gcHJveGltaXR5IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhp
cyBjYXNlLCB0aGUgcmVndWxhciAobWFuZGF0b3J5Ci0gICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBi
ZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0
aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0Ci0gICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9y
ZSBpbnR1aXRpdmUgdG8gZWl0aGVyIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlv
biAod2hpY2ggd2UgYXJiaXRyYXJpbHkgY2hvb3NlIGhlcmUpCi0gICAgLy8gb3Igc2Nyb2xsIGp1
c3Qgb3V0c2lkZSBvZiB0aGUgc25hcCBvZmZzZXQgcmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5v
ciBiZWhhdmlvciB0d2VhayB0aGF0IHdlIHNob3VsZCBwbGF5IGFyb3VuZAotICAgIC8vIHdpdGgg
dG8gc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNl
IHsgcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkg
KiBzY3JvbGxQb3J0QXhpc0xlbmd0aCB9OwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5k
ZXggPCBzbmFwT2Zmc2V0cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBzdGFydE9m
ZnNldCA9IHNuYXBPZmZzZXRzW2luZGV4IC0gMV0ub2Zmc2V0ICsgcHJveGltaXR5RGlzdGFuY2U7
Ci0gICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXhdLm9mZnNldCAtIHBy
b3hpbWl0eURpc3RhbmNlOwotICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpCi0g
ICAgICAgICAgICBvZmZzZXRSYW5nZXMuYXBwZW5kKHsgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9
KTsKLSAgICB9Ci19Ci0KIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5n
RWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSwgTGF5
b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKQogewogICAgIGF1dG8g
c2Nyb2xsU25hcFR5cGUgPSBzY3JvbGxpbmdFbGVtZW50U3R5bGUuc2Nyb2xsU25hcFR5cGUoKTsK
QEAgLTI2Miw2ICsxMjcsNyBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBSZQogCiAgICAgSGFzaE1h
cDxmbG9hdCwgU25hcE9mZnNldDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsK
ICAgICBIYXNoTWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25h
cE9mZnNldHNNYXA7CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHNuYXBBcmVhczsKICAgICBib29s
IGhhc0hvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xs
U25hcEF4aXM6OkJvdGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6
WEF4aXMgfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6SW5saW5lOwog
ICAgIGJvb2wgaGFzVmVydGljYWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0g
U2Nyb2xsU25hcEF4aXM6OkJvdGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFw
QXhpczo6WUF4aXMgfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qmxv
Y2s7CiAKQEAgLTI4OCwxNyArMTU0LDI4IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAKICAg
ICAgICAgc2Nyb2xsU25hcEFyZWEgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNj
cm9sbFNuYXBBcmVhLCBjaGlsZC0+c3R5bGUoKS5zY3JvbGxNYXJnaW4oKSwgSW5zZXRPck91dHNl
dDo6T3V0c2V0KTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8
PCAiICAgIENvbnNpZGVyaW5nIHNjcm9sbCBzbmFwIHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25h
cEFyZWEpOworCiAgICAgICAgIGF1dG8gYWxpZ25tZW50ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xs
U25hcEFsaWduKCk7CisgICAgICAgIGJvb2wgc25hcHNIb3Jpem9udGFsbHkgPSBoYXNIb3Jpem9u
dGFsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6
Ok5vbmU7CisgICAgICAgIGJvb2wgc25hcHNWZXJ0aWNhbGx5ID0gaGFzVmVydGljYWxTbmFwT2Zm
c2V0cyAmJiBhbGlnbm1lbnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAg
ICAgICAgaWYgKCFzbmFwc0hvcml6b250YWxseSAmJiAhc25hcHNWZXJ0aWNhbGx5KQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGVm
aW5lZCB2aWEgaXRzIHNjcm9sbCBwb3NpdGlvbiwgc28gY29udmVydCB0aGUgc25hcCBhcmVhIHJl
Y3RhbmdsZSB0byBiZSByZWxhdGl2ZSB0byBzY3JvbGwgb2Zmc2V0cy4KKyAgICAgICAgYXV0byBz
bmFwQXJlYU9yaWdpblJlbGF0aXZlVG9Cb3JkZXJFZGdlID0gc2Nyb2xsU25hcEFyZWEubG9jYXRp
b24oKSAtIHNjcm9sbFNuYXBQb3J0LmxvY2F0aW9uKCk7CisgICAgICAgIExheW91dFJlY3Qgc2Ny
b2xsU25hcEFyZWFBc09mZnNldHMoc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKHJvdW5kZWRJbnRQb2ludChzbmFwQXJlYU9yaWdpblJlbGF0aXZlVG9Cb3JkZXJFZGdlKSks
IHNjcm9sbFNuYXBBcmVhLnNpemUoKSk7CisgICAgICAgIHNuYXBBcmVhcy5hcHBlbmQoc2Nyb2xs
U25hcEFyZWFBc09mZnNldHMpOworCiAgICAgICAgIGF1dG8gc3RvcCA9IGNoaWxkLT5zdHlsZSgp
LnNjcm9sbFNuYXBTdG9wKCk7Ci0gICAgICAgIGlmIChoYXNIb3Jpem9udGFsU25hcE9mZnNldHMg
JiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUpIHsKKyAgICAg
ICAgaWYgKHNuYXBzSG9yaXpvbnRhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Ny
b2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJl
YS54KCksIHNjcm9sbFNuYXBBcmVhLm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNSVEwp
IC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC54KCksIHNjcm9s
bFNuYXBQb3J0Lm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNSVEwpOwogICAgICAgICAg
ICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50PihzY3JvbGxhYmxlQXJl
YS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyByb3VuZFRvSW50KGFic29sdXRlU2Nyb2xsWFBv
c2l0aW9uKSwgMCB9KS54KCksIDAsIG1heFNjcm9sbE9mZnNldC54KCkpOwotICAgICAgICAgICAg
YWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFsU25hcE9mZnNldHNNYXAsIHsg
YWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAgICAgICBhZGRPclVwZGF0ZVN0
b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxTbmFwT2Zmc2V0c01hcCwgeyBhYnNvbHV0ZVNjcm9s
bE9mZnNldCwgc3RvcCwgc25hcEFyZWFzLnNpemUoKSAtIDEgfSk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGhhc1ZlcnRpY2FsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnkgIT0gU2Nyb2xsU25h
cEF4aXNBbGlnblR5cGU6Ok5vbmUpIHsKKyAgICAgICAgaWYgKHNuYXBzVmVydGljYWxseSkgewog
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbiA9IGNvbXB1dGVTY3JvbGxT
bmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJlYS5tYXhZKCks
IGFsaWdubWVudC55LCBmYWxzZSkgLSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9s
bFNuYXBQb3J0LnkoKSwgc2Nyb2xsU25hcFBvcnQubWF4WSgpLCBhbGlnbm1lbnQueSwgZmFsc2Up
OwogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50Pihz
Y3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyAwLCByb3VuZFRvSW50KGFi
c29sdXRlU2Nyb2xsWVBvc2l0aW9uKSB9KS55KCksIDAsIG1heFNjcm9sbE9mZnNldC55KCkpOwot
ICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZz
ZXRzTWFwLCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wIH0pOworICAgICAgICAgICAgYWRk
T3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFwLCB7IGFic29s
dXRlU2Nyb2xsT2Zmc2V0LCBzdG9wLCBzbmFwQXJlYXMuc2l6ZSgpIC0gMSB9KTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzA4LDMyICsxODUsMjUgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0Zv
clNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgUmUK
ICAgICB9OwogCiAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IGhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IGNvcHlUb1ZlY3Rvcihob3Jpem9udGFsU25hcE9mZnNldHNNYXAudmFsdWVz
KCkpOwotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXM7CiAgICAgaWYgKCFob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHN0ZDo6c29ydChob3Jpem9udGFsU25hcE9mZnNldHMuYmVnaW4oKSwg
aG9yaXpvbnRhbFNuYXBPZmZzZXRzLmVuZCgpLCBjb21wYXJlU25hcE9mZnNldHMpOwotICAgICAg
ICBpZiAoc2Nyb2xsU25hcFR5cGUuc3RyaWN0bmVzcyA9PSBTY3JvbGxTbmFwU3RyaWN0bmVzczo6
UHJveGltaXR5KQotICAgICAgICAgICAgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFu
Z2VzKGhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIHNj
cm9sbFNuYXBQb3J0LndpZHRoKCkpOwotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxT
bmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9sbCBzbmFwIG9mZnNl
dHM6ICIgPDwgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNu
YXAgb2Zmc2V0IHJhbmdlczogIiA8PCBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7CiAgICAg
fQogCiAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IHZlcnRpY2FsU25hcE9mZnNl
dHMgPSBjb3B5VG9WZWN0b3IodmVydGljYWxTbmFwT2Zmc2V0c01hcC52YWx1ZXMoKSk7Ci0gICAg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXM7CiAgICAgaWYgKCF2ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewogICAgICAg
ICBzdGQ6OnNvcnQodmVydGljYWxTbmFwT2Zmc2V0cy5iZWdpbigpLCB2ZXJ0aWNhbFNuYXBPZmZz
ZXRzLmVuZCgpLCBjb21wYXJlU25hcE9mZnNldHMpOwotICAgICAgICBpZiAoc2Nyb2xsU25hcFR5
cGUuc3RyaWN0bmVzcyA9PSBTY3JvbGxTbmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQotICAgICAg
ICAgICAgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzKHZlcnRpY2FsU25hcE9m
ZnNldHMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQuaGVpZ2h0KCkp
OwotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBD
b21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAiIDw8IHZlcnRpY2FsU25hcE9m
ZnNldHMpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIg
PT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0IHJhbmdlczogIiA8PCB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMpOwogICAgIH0KIAorICAgIGlmICghc25hcEFyZWFzLmlzRW1w
dHkoKSkKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+
IENvbXB1dGVkIHNuYXAgYXJlYXM6ICIgPDwgc25hcEFyZWFzKTsKKwogICAgIHNjcm9sbGFibGVB
cmVhLnNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKHsKKyAgICAgICAgc2Nyb2xsU25hcFR5cGUuc3Ry
aWN0bmVzcywKICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLAogICAgICAgICB2ZXJ0aWNh
bFNuYXBPZmZzZXRzLAotICAgICAgICBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywKLSAgICAg
ICAgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzCisgICAgICAgIHNuYXBBcmVhcywKICAgICB9KTsK
IH0KIApAQCAtMzQ3LDU3ICsyMTcsMTc5IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbnZlcnRPZmZz
ZXRVbml0KGZsb2F0IGlucHV0LCBmbG9hdCAvKiBzY2FsZUZhY3RvciAqLykKICAgICByZXR1cm4g
TGF5b3V0VW5pdChpbnB1dCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFR5cGUsIHR5
cGVuYW1lIE91dHB1dFR5cGU+Ci1zdGF0aWMgU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5
cGU+IGNvbnZlcnRPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxJbnB1dFR5
cGU+JiBpbnB1dCwgZmxvYXQgc2NhbGVGYWN0b3IgPSAwLjApCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRUeXBlLCB0eXBlbmFtZSBJbnB1dFJlY3RUeXBlLCB0eXBlbmFtZSBPdXRwdXRUeXBlLCB0
eXBlbmFtZSBPdXRwdXRSZWN0VHlwZT4KK3N0YXRpYyBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0
cHV0VHlwZSwgT3V0cHV0UmVjdFR5cGU+IGNvbnZlcnRPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxJbnB1dFR5cGUsIElucHV0UmVjdFR5cGU+JiBpbnB1dCwgZmxvYXQgc2Nh
bGVGYWN0b3IgPSAwLjApCiB7CiAgICAgYXV0byBjb252ZXJ0T2Zmc2V0cyA9IFtzY2FsZUZhY3Rv
cl0oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8SW5wdXRUeXBlPj4mIGlucHV0KQogICAgIHsKICAg
ICAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T3V0cHV0VHlwZT4+IG91dHB1dDsKICAgICAgICAgb3V0
cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXQuc2l6ZSgpKTsKICAgICAgICAgZm9yIChh
dXRvJiBvZmZzZXQgOiBpbnB1dCkKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQo
eyBjb252ZXJ0T2Zmc2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3RvciksIG9mZnNldC5z
dG9wIH0pOworICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZCh7IGNvbnZlcnRPZmZz
ZXRVbml0KG9mZnNldC5vZmZzZXQsIHNjYWxlRmFjdG9yKSwgb2Zmc2V0LnN0b3AsIG9mZnNldC5z
bmFwQXJlYUluZGV4IH0pOwogICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgIH07CiAKLSAgICBh
dXRvIGNvbnZlcnRPZmZzZXRSYW5nZXMgPSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxTY3Jv
bGxPZmZzZXRSYW5nZTxJbnB1dFR5cGU+PiYgaW5wdXQpCisgICAgYXV0byBjb252ZXJ0UmVjdHMg
PSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxJbnB1dFJlY3RUeXBlPiYgaW5wdXQpCiAgICAg
ewotICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8T3V0cHV0VHlwZT4+IG91dHB1dDsK
KyAgICAgICAgVmVjdG9yPE91dHB1dFJlY3RUeXBlPiBvdXRwdXQ7CiAgICAgICAgIG91dHB1dC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
cmFuZ2UgOiBpbnB1dCkKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoeyBjb252
ZXJ0T2Zmc2V0VW5pdChyYW5nZS5zdGFydCwgc2NhbGVGYWN0b3IpLCBjb252ZXJ0T2Zmc2V0VW5p
dChyYW5nZS5lbmQsIHNjYWxlRmFjdG9yKSB9KTsKKyAgICAgICAgZm9yIChhdXRvJiByZWN0IDog
aW5wdXQpIHsKKyAgICAgICAgICAgIE91dHB1dFJlY3RUeXBlIG91dHB1dFJlY3QoCisgICAgICAg
ICAgICAgICAgY29udmVydE9mZnNldFVuaXQocmVjdC54KCksIHNjYWxlRmFjdG9yKSwgY29udmVy
dE9mZnNldFVuaXQocmVjdC55KCksIHNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBjb252
ZXJ0T2Zmc2V0VW5pdChyZWN0LndpZHRoKCksIHNjYWxlRmFjdG9yKSwgY29udmVydE9mZnNldFVu
aXQocmVjdC5oZWlnaHQoKSwgc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgIG91dHB1dC51bmNo
ZWNrZWRBcHBlbmQob3V0cHV0UmVjdCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dHB1
dDsKICAgICB9OwogCiAgICAgcmV0dXJuIHsKKyAgICAgICAgaW5wdXQuc3RyaWN0bmVzcywKICAg
ICAgICAgY29udmVydE9mZnNldHMoaW5wdXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSwKICAgICAg
ICAgY29udmVydE9mZnNldHMoaW5wdXQudmVydGljYWxTbmFwT2Zmc2V0cyksCi0gICAgICAgIGNv
bnZlcnRPZmZzZXRSYW5nZXMoaW5wdXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpLAotICAg
ICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykK
KyAgICAgICAgY29udmVydFJlY3RzKGlucHV0LnNuYXBBcmVhcyksCiAgICAgfTsKIH0KIAogdGVt
cGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2Vk
U2NhbGVGYWN0b3IgKi8pIGNvbnN0CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZh
Y3RvciAqLykgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88ZmxvYXQsIExh
eW91dFVuaXQ+KCp0aGlzKTsKKyAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88ZmxvYXQsIEZs
b2F0UmVjdCwgTGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKnRoaXMpOwogfQogCiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3QKK0Zsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdAogewot
ICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlvdXRVbml0LCBmbG9hdD4oKnRoaXMsIGRl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0VW5p
dCwgTGF5b3V0UmVjdCwgZmxvYXQsIEZsb2F0UmVjdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9y
KTsKIH0KIAotdGVtcGxhdGUgPD4KLXN0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxF
dmVudEF4aXMgYXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQg
dmVsb2NpdHksIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKSBjb25zdAordGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFt
ZSBSZWN0VHlwZT4KK3N0YXRpYyBVbml0VHlwZSBtYXhGb3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNj
cm9sbEV2ZW50QXhpcyBheGlzKQogewotICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldFdpdGhP
ZmZzZXRzQW5kUmFuZ2VzKG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlz
KGF4aXMpLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRp
b25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwgPyByZWN0Lm1heFgoKSA6IHJlY3QubWF4WSgpOwogfQogCi10ZW1w
bGF0ZSA8Pgotc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8ZmxvYXQ+IG9y
aWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAordGVtcGxhdGUgPHR5
cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZT4KK3N0YXRpYyBVbml0VHlwZSBtaW5G
b3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNjcm9sbEV2ZW50QXhpcyBheGlzKQoreworICAgIHJldHVy
biBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJlY3QueCgpIDogcmVjdC55
KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZT4KK3N0YXRpYyBib29sIGlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uLCBVbml0VHlwZSBjYW5kaWRhdGVTbmFwT2Zm
c2V0LCBVbml0VHlwZSB2aWV3cG9ydExlbmd0aCkKK3sKKyAgICBpZiAoc3RyaWN0bmVzcyAhPSBT
Y3JvbGxTbmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIFRoaXMgaXMgYW4gYXJiaXRyYXJ5IGNob2ljZSBmb3Igd2hhdCBpdCBtZWFucyB0byBi
ZSAiaW4gcHJveGltaXR5IiBvZiBhIHNuYXAgb2Zmc2V0LiBXZSBzaG91bGQgcGxheSBhcm91bmQg
d2l0aAorICAgIC8vIHRoaXMgYW5kIHNlZSB3aGF0IGZlZWxzIGJlc3QuCisgICAgc3RhdGljIGNv
bnN0IGZsb2F0IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJv
eGltaXR5ID0gMC4zOworICAgIHJldHVybiBzdGQ6OmFicyhmbG9hdCB7Y2FuZGlkYXRlU25hcE9m
ZnNldCAtIHNjcm9sbERlc3RpbmF0aW9ufSkgPD0gKHZpZXdwb3J0TGVuZ3RoICogcmF0aW9PZlNj
cm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlLCB0eXBlbmFtZSBTaXpl
VHlwZT4KK3N0YXRpYyBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBjYWxjdWxhdGVDbG9z
ZXN0U25hcE9mZnNldChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VW5pdFR5cGUsIFJlY3RU
eXBlPiYgaW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9y
dFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsT2Zmc2V0KQoreworICAgIGNvbnN0IGF1dG8mIHNu
YXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhheGlzKTsKKyAgICBhdXRvIHBhaXJGb3JO
b1NuYXBwaW5nID0gc3RkOjptYWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFs
aWRTbmFwT2Zmc2V0SW5kZXgpOworICAgIGlmIChzbmFwT2Zmc2V0cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKworICAgIC8vIFRoZSBmaXJzdCBzbmFwIHBv
aW50IHdpdGggYHNjcm9sbC1zbmFwLXN0b3A6IGFsd2F5c2AgYmV0d2VlbiB0aGUgb3JpZ2luYWwg
cG9zaXRpb24gYW5kIGRlc3RpbmF0aW9uIHRha2VzIHByZWNlZGVuY2UuCisgICAgaWYgKG9yaWdp
bmFsT2Zmc2V0KSB7CisgICAgICAgIGlmIChhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXQgPSBmaW5k
Rmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0
cywgKm9yaWdpbmFsT2Zmc2V0LCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gKmZpcnN0U25hcFN0b3BPZmZzZXQ7CisgICAgfQorCisgICAgYXV0byB2aWV3cG9y
dExlbmd0aCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gdmlld3BvcnRT
aXplLndpZHRoKCkgOiB2aWV3cG9ydFNpemUuaGVpZ2h0KCk7CisgICAgYm9vbCBsYW5kZWRJbnNp
ZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0ID0gZmFsc2U7CisgICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4+IHByZXZpb3VzLCBuZXh0OworICAgIE9wdGlvbmFs
PFJlY3RUeXBlPiBwcmV2aW91c1NuYXBBcmVhLCBuZXh0U25hcEFyZWE7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNuYXBPZmZzZXRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHNuYXBBcmVhID0gaW5mby5zbmFwQXJlYXNbc25hcE9mZnNldHNbaV0uc25hcEFyZWFJ
bmRleF07CisgICAgICAgIGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQg
fD0gKG1pbkZvckF4aXM8VW5pdFR5cGU+KHNuYXBBcmVhLCBheGlzKSA8PSBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCAmJiBtYXhGb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwgYXhpcykgPj0gKHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0ICsgdmlld3BvcnRMZW5ndGgpKTsKKyAgICAgICAgLy8gSWYg
dGhlIHNjcm9sbCBsYW5kZWQgZXhhY3RseSBvbiBhIHNuYXAgb2Zmc2V0LCBjaG9vc2UgdGhhdCBv
bmUuCisgICAgICAgIFVuaXRUeXBlIHBvdGVudGlhbFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c1tp
XS5vZmZzZXQ7CisgICAgICAgIGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0ID09IHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlh
bFNuYXBPZmZzZXQsIGkpOworCisgICAgICAgIGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0IDwgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQpIHsKKyAgICAgICAgICAgIHByZXZpb3VzID0gc3RkOjptYWtl
X3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7CisgICAgICAgICAgICBwcmV2aW91c1NuYXBB
cmVhID0gc25hcEFyZWE7CisgICAgICAgIH0gZWxzZSBpZiAoIW5leHQgJiYgcG90ZW50aWFsU25h
cE9mZnNldCA+IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBuZXh0ID0g
c3RkOjptYWtlX3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7CisgICAgICAgICAgICBuZXh0
U25hcEFyZWEgPSBzbmFwQXJlYTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZyb20gaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY3JvbGwtc25hcC0xLyNzbmFwLW92ZXJmbG93CisgICAg
Ly8gIklmIHRoZSBzbmFwIGFyZWEgaXMgbGFyZ2VyIHRoYW4gdGhlIHNuYXBwb3J0IGluIGEgcGFy
dGljdWxhciBheGlzLCB0aGVuIGFueSBzY3JvbGwgcG9zaXRpb24KKyAgICAvLyBpbiB3aGljaCB0
aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQsIGFuZCB0aGUgZGlzdGFuY2UgYmV0d2Vl
biB0aGUgZ2VvbWV0cmljYWxseQorICAgIC8vIHByZXZpb3VzIGFuZCBzdWJzZXF1ZW50IHNuYXAg
cG9zaXRpb25zIGluIHRoYXQgYXhpcyBpcyBsYXJnZXIgdGhhbiBzaXplIG9mIHRoZSBzbmFwcG9y
dCBpbgorICAgIC8vIHRoYXQgYXhpcywgaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uIGluIHRoYXQg
YXhpcy4gVGhlIFVBIG1heSB1c2UgdGhlIHNwZWNpZmllZCBhbGlnbm1lbnQgYXMgYQorICAgIC8v
IG1vcmUgcHJlY2lzZSB0YXJnZXQgZm9yIGNlcnRhaW4gc2Nyb2xsIG9wZXJhdGlvbnMgKGUuZy4g
ZXhwbGljaXQgcGFnaW5nKS4iCisgICAgaWYgKGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1
bWVzVmlld3BvcnQgJiYgKCFwcmV2aW91cyB8fCAhbmV4dCB8fCAoKCpuZXh0KS5maXJzdCAtICgq
cHJldmlvdXMpLmZpcnN0KSA+PSB2aWV3cG9ydExlbmd0aCkpCisgICAgICAgIHJldHVybiBwYWly
Rm9yTm9TbmFwcGluZzsKKworICAgIGlmIChvcmlnaW5hbE9mZnNldCkgeworICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgZGlyZWN0aW9uYWwgc2Nyb2xsIGFuZCB0aGVyZSBhcmUgbm8gc2Nyb2xsIHN0
b3BzIGluIGEgcGFydGljdWxhciBkaXJlY3Rpb24sCisgICAgICAgIC8vIGRvbid0IHNjcm9sbCBw
YXN0IHRoZSBlZGdlIG9mIHRoZSBzY3JvbGwgYXJlYS4KKyAgICAgICAgaWYgKCFuZXh0ICYmIHBy
ZXZpb3VzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bWF4KCgqcHJl
dmlvdXMpLmZpcnN0LCBtYXhGb3JBeGlzPFVuaXRUeXBlPigqcHJldmlvdXNTbmFwQXJlYSwgYXhp
cykgLSB2aWV3cG9ydExlbmd0aCksIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOworICAgICAgICBp
ZiAoIXByZXZpb3VzICYmIG5leHQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bWluRm9yQXhpczxVbml0VHlwZT4oKm5leHRTbmFwQXJlYSwgYXhpcyksIGludmFsaWRTbmFwT2Zm
c2V0SW5kZXgpOworCisgICAgICAgIC8vIEZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1z
Y3JvbGwtc25hcC0xLyNjaG9vc2luZworICAgICAgICAvLyAiVXNlciBhZ2VudHMgbXVzdCBlbnN1
cmUgdGhhdCBhIHVzZXIgY2FuIOKAnGVzY2FwZeKAnSBhIHNuYXAgcG9zaXRpb24sIHJlZ2FyZGxl
c3Mgb2YgdGhlIHNjcm9sbAorICAgICAgICAvLyBtZXRob2QuIEZvciBleGFtcGxlLCBpZiB0aGUg
c25hcCB0eXBlIGlzIG1hbmRhdG9yeSBhbmQgdGhlIG5leHQgc25hcCBwb3NpdGlvbiBpcyBtb3Jl
IHRoYW4KKyAgICAgICAgLy8gdHdvIHNjcmVlbi13aWR0aHMgYXdheSwgYSBuYcOvdmUg4oCcYWx3
YXlzIHNuYXAgdG8gbmVhcmVzdOKAnSBzZWxlY3Rpb24gYWxnb3JpdGhtIG1pZ2h0IOKAnHRyYXDi
gJ0gdGhlCisgICAgICAgIC8vIHVzZXIgaWYgdGhlaXIgZW5kIHBvc2l0aW9uIHdhcyBvbmx5IG9u
ZSBzY3JlZW4td2lkdGggYXdheS4gSW5zdGVhZCwgYSBzbWFydGVyIGFsZ29yaXRobSB0aGF0Cisg
ICAgICAgIC8vIG9ubHkgcmV0dXJuZWQgdG8gdGhlIHN0YXJ0aW5nIHNuYXAgcG9zaXRpb24gaWYg
dGhlIGVuZC1wb2ludCB3YXMgYSBmYWlybHkgc21hbGwgZGlzdGFuY2UgZnJvbQorICAgICAgICAv
LyBpdCwgYW5kIG90aGVyd2lzZSBpZ25vcmVkIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9uLCB3
b3VsZCBnaXZlIGJldHRlciBiZWhhdmlvci4iCisgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBp
ZiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIGNob29zaW5nIGJldHdlZW4gdHdv
IGNvbXBhdGlibGUKKyAgICAgICAgLy8gc25hcCBvZmZzZXRzLgorICAgICAgICBpZiAoKm9yaWdp
bmFsT2Zmc2V0IDwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgJiYgKCpwcmV2aW91cykuZmlyc3Qg
PD0gKm9yaWdpbmFsT2Zmc2V0KQorICAgICAgICAgICAgcHJldmlvdXMucmVzZXQoKTsKKyAgICAg
ICAgaWYgKCpvcmlnaW5hbE9mZnNldCA+IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmICgqbmV4
dCkuZmlyc3QgPj0gKm9yaWdpbmFsT2Zmc2V0KQorICAgICAgICAgICAgbmV4dC5yZXNldCgpOwor
ICAgIH0KKworICAgIGlmIChuZXh0ICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0
eShpbmZvLnN0cmljdG5lc3MsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKm5leHQpLmZpcnN0
LCB2aWV3cG9ydExlbmd0aCkpCisgICAgICAgIG5leHQucmVzZXQoKTsKKyAgICBpZiAocHJldmlv
dXMgJiYgIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KGluZm8uc3RyaWN0bmVzcywg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsICgqcHJldmlvdXMpLmZpcnN0LCB2aWV3cG9ydExlbmd0
aCkpCisgICAgICAgIHByZXZpb3VzLnJlc2V0KCk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
IGNvbXBhdGlibGUgb2Zmc2V0cyB0byBjaG9vc2UgYmV0d2VlbiwganVzdCBkbyB0aGUgb2J2aW91
cyB0aGluZworICAgIC8vIGFuZCBkbyBubyBzbmFwcGluZyBvciBvbmx5IHNlbGVjdCB0aGUgc2lu
Z2xlIGNvbXBhdGlibGUgb2Zmc2V0LgorICAgIGlmICghcHJldmlvdXMgJiYgIW5leHQpCisgICAg
ICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKyAgICBpZiAoIXByZXZpb3VzKQorICAgICAg
ICByZXR1cm4gKm5leHQ7CisgICAgaWYgKCFuZXh0KQorICAgICAgICByZXR1cm4gKnByZXZpb3Vz
OworCisgICAgLy8gSWYgdGhpcyBzY3JvbGwgaXNuJ3QgZGlyZWN0aW9uYWwsIHRoZW4gY2hvb3Nl
IHdoYXRldmVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLgorICAgIFVuaXRUeXBlIHByZXZpb3VzU25h
cE9mZnNldCA9ICgqcHJldmlvdXMpLmZpcnN0OworICAgIFVuaXRUeXBlIG5leHRTbmFwT2Zmc2V0
ID0gKCpuZXh0KS5maXJzdDsKKyAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5KSkgeworICAgICAg
ICBib29sIGlzQ2xvc2VyVG9QcmV2aW91c1NuYXBJbmRleCA9IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0IC0gcHJldmlvdXNTbmFwT2Zmc2V0IDw9IG5leHRTbmFwT2Zmc2V0IC0gc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXgg
PyAqcHJldmlvdXMgOiAqbmV4dDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBpZiB3ZSBoYXZl
IGEgZGlyZWN0aW9uYWwgc2Nyb2xsIHByZWZlciB0aGUgc25hcCBwb2ludCB0aGF0IGlzIGluIHRo
ZSBzY3JvbGwgZGlyZWN0aW9uLgorICAgIHJldHVybiB2ZWxvY2l0eSA8IDAgPyAqcHJldmlvdXMg
OiAqbmV4dDsKK30KKworCit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8Pgorc3RkOjpwYWlyPExheW91
dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFw
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNp
emUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0PExheW91dFVu
aXQsIExheW91dFJlY3QsIExheW91dFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKTsKK30KKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxm
bG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8
ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKIHsKLSAg
ICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9y
QXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7
CisgICAgcmV0dXJuIGNhbGN1bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBGbG9hdFJlY3Qs
IEZsb2F0U2l6ZT4oKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oCmluZGV4IDIwYTY0N2ZlYTEyYzZjYzhiNTU1NzljNTFiZDBhMzYwNWZk
Y2U1ZTYuLjYyMzBhYjljN2JkNjA2OTI2YTEwZjc2ZWI3ZTY0Mjc4MWExNTE4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5m
by5oCkBAIC0yNyw2ICsyNywxMCBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIAor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VW5pdC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY3JvbGxT
bmFwUG9pbnRzLmgiCkBAIC0zNSwzOSArMzksMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBMYXlvdXRSZWN0OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBSZW5kZXJC
b3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgT2Zmc2V0VHlwZT4KIHN0cnVjdCBTbmFwT2Zmc2V0IHsKLSAgICBUIG9mZnNl
dDsKKyAgICBPZmZzZXRUeXBlIG9mZnNldDsKICAgICBTY3JvbGxTbmFwU3RvcCBzdG9wOworICAg
IHNpemVfdCBzbmFwQXJlYUluZGV4OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewotICAgIFQgc3RhcnQ7Ci0gICAgVCBlbmQ7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBlLCB0eXBl
bmFtZSBSZWN0VHlwZT4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBWZWN0b3I8U25hcE9mZnNldDxUPj4gaG9y
aXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxTbmFwT2Zmc2V0PFQ+PiB2ZXJ0aWNhbFNu
YXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3M7CiAKLSAgICAv
LyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSByYW5nZXMgb2Ygc2Nyb2xs
IG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVyIHNjcm9sbCBzbmFwcGlu
Zy4KLSAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgxKSBmb3IgcHJveGltaXR5
IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMgYmV0d2VlbiBhZGphY2Vu
dCBzbmFwIG9mZnNldHMKLSAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNldCByYW5nZXMsIGFuZCAo
MikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0aGUgc25h
cCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCi0gICAgLy8gd2hlcmUgdGhlIHNuYXAgcG9ydCBm
aXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRvIGJlIHZhbGlkIHNuYXAg
cG9zaXRpb25zLgotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXM7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4+IGhv
cml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRUeXBlPj4g
dmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8UmVjdFR5cGU+IHNuYXBBcmVhczsKIAot
ICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBj
b25zdAorICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T2Zmc2V0
VHlwZSwgUmVjdFR5cGU+JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBob3Jp
em9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIHZlcnRp
Y2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAmJiB2
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
OworICAgICAgICByZXR1cm4gc3RyaWN0bmVzcyA9PSBvdGhlci5zdHJpY3RuZXNzICYmIGhvcml6
b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldHMgJiYgdmVydGlj
YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZzZXRzICYmIHNuYXBBcmVhcyA9
PSBvdGhlci5zbmFwQXJlYXM7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKQEAg
LTc1LDI5ICs2OSwyNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICAgICAg
cmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxTbmFwT2Zm
c2V0cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNuYXBPZmZzZXQ8VD4+IG9mZnNl
dHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIFZlY3RvcjxTbmFwT2Zm
c2V0PE9mZnNldFR5cGU+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIH0K
IAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gb2Zmc2V0UmFuZ2VzRm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09
IFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgOiBo
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdXRwdXRUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVydFVu
aXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6OnBhaXI8VCwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgVCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PFQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlLCB0eXBlbmFtZSBPdXRw
dXRSZWN0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1dFJlY3RU
eXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
T2Zmc2V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywg
Y29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgT2Zmc2V0VHlwZSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPE9mZnNldFR5cGU+IG9yaWdpbmFsUG9z
aXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIH07CiAK
K3VzaW5nIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsKK3VzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OworCiB0ZW1wbGF0
ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2Fs
ZUZhY3RvciAqLykgY29uc3Q7Ci10ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNu
YXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwg
ZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0
aW9uYWxTbmFwcGluZykgY29uc3Q7CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZh
Y3RvciAqLykgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQg
c3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNs
b3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0
aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dDsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9h
dD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIExheW91dFVuaXQgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0
PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRV
bml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0
ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2lu
YWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBjb25zdCB1bnNpZ25l
ZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTEwNiw3ICs5OCw3IEBA
IGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKIC8vIHRo
ZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJlbmRlckJveCYgc2Ny
b2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHls
ZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mIHRzLCBTbmFwT2Zmc2V0PFQ+IG9mZnNldCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZz
ZXRUeXBlPiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywg
U25hcE9mZnNldDxPZmZzZXRUeXBlPiBvZmZzZXQpCiB7CiAgICAgdHMgPDwgb2Zmc2V0Lm9mZnNl
dDsKICAgICBpZiAob2Zmc2V0LnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykKQEAgLTEx
NCwxMyArMTA2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKICAgICByZXR1cm4gdHM7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxUPiYgcmFuZ2UpCi17Ci0gICAgdHMgPDwg
InN0YXJ0OiAiIDw8IHJhbmdlLnN0YXJ0IDw8ICIgZW5kOiAiIDw8IHJhbmdlLmVuZDsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZjQwODE5
YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkwNTk4NzVmODBlMS4uODQzMjg4MWM4OWYxNmM1N2I0Njc0
YzI0YmI0YTk4Mzg2ZDdhYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNTcs
NyArMTU3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbE9y
aWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zm
c2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3ZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgRmxv
YXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9mZnNldHNJ
bmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgK
aW5kZXggYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdiNDE2NDA0NC4uYzVkNzYzOWNm
MWNhZTBjN2UwMzdmYzM1OTlmMjI1ODFiYWFkYWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgK
QEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
b2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0PiYgbmV3T2Zmc2V0c0luZm8pOworICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdPZmZzZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBj
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1fc25h
cE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNl
dHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYzI4YzA4Mjg4
MzFhNThjMjJmM2M1MWNlNjdkMTBlNy4uOGI2MzRlMWFkNjRmMjQxOWJmMmJhOTA4NDMxYzgzN2M5
N2Q2ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0m
IHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
Y29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Citjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggYmU0OWQwYjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNi4uNTViY2Vk
M2UwZTYxMjEwNmQ5M2Y4NTJlZWY3ZDQ2NDIxMDUyNTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9s
bGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGN1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5z
aWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7
IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50
U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1fc25h
cE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNl
dHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tCmluZGV4IGE1YjQ4YzIwMzQxNWFiN2IwOWNlOWMzZmE5OWMxNWVhNjM3NDBlNDUuLjNlMjQ1
NzRhYjAwZWZmNDVlMGY4Y2ExMGYxMzA4NTFhODFhZWE3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9k
ZShjb25zdCBTY3JvbGxpbmdTCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCi0gICAgICAgIG1fc2Nyb2xsQ29udHJvbGxl
ci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0c0lu
Zm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKSk7CiAKICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAg
IG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENv
bnRyb2xsZXIuY3BwCmluZGV4IGMzZWM2YzQ0MWQzMTJmNTg1MmJiZDZmMmI0OTBlMjdjYjVlMzEz
YWUuLjY1NTAwZDEwZmVmMzgxMDc0MjJlMjlmYjk5YzA1NmUwNjEyNWRiMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygqc25h
cE9mZnNldEluZm8pOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNu
YXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zm
c2V0SW5mbykKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRJbmZvKQogewogICAg
IGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3Rh
dGUgPSBudWxscHRyOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6
bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0
cy5maXJzdCgpLm9mZnNldCksIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwotCi0gICAgdW5z
aWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25h
cE9mZnNldChheGlzLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CisgICAgTGF5b3V0U2l6ZSB2
aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0
YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXpl
LCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2
ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM3
LDcgKzEzNyw5IEBAIGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0
aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9mZnNl
dC5oYXNWYWx1ZSgpKQogICAgICAgICBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlv
dXRVbml0KCpvcmlnaW5hbE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAg
ICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RT
bmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQoZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVudC5w
YWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMp
LmZpcnN0OworCisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRT
aXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIExh
eW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBP
ZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8g
bV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxh
eW91dFVuaXRzKS5maXJzdDsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxl
RmFjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIu
aAppbmRleCBkOTI1ZmQ0NTU4NGMwMTExYzllZjBjMjg5MWY3Yzc1MTY2MTBlYjdiLi5kZDUzYWRh
OTBhMmY1ZjI5MDg4MDEwMjNjM2U1YTNjNDMxZWY2MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMo
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgdm9pZCBzZXRBY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQpOwogICAgIHZv
aWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0KTsKICAg
ICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggN2Q2OGQ1MGRkZTc2
ZTg5MDk2Y2QzZTU4ZjNmYzM5MWZmYzY3MTc3Yy4uMWVlNzQxNjdiODE5ODNmNDcwMmQ4MzZhNmY5
NzcwNzcyNDcyMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0
ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0ZWRTY3Jv
bGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25PZmZz
ZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmll
d3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJn
ZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFw
SW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2
aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxU
YXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2
ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JT
dGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29u
dGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0Lngo
KSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRh
LndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCks
IGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VT
Y2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwogICAgIG1f
bW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0T2Zm
c2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6
Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSwxMCArOTEsMTEgQEAg
RmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xs
T2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0b3It
PnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9hdCBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVs
dGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdAogewogICAgIExheW91dFVuaXQgcHJvcG9zZWRPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocHJv
cG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9z
ZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2Fs
ZSksIGluaXRpYWxEZWx0YSk7CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydExheW91dFNpemUodmll
d3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgc3RkOjp0aWUo
cHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5j
bG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydExheW91dFNpemUsIExheW91dFVuaXQocHJl
ZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhKTsKICAgICBpZiAob3V0QWN0
aXZlU25hcEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgIHJldHVybiBw
YWdlU2NhbGUgKiBwcm9wb3NlZE9mZnNldDsKICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3Rh
cnRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNldCk7CkBAIC0xMDUsMTEgKzEwNiw2IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlJiBzdGF0ZSkKICAgICB0cyA8PCAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJz
bmFwIG9mZnNldHMgeSIsIHN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSk7Ci0gICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhp
cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBPZmZz
ZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5zbmFw
T2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAgICB0
cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFwSW5k
ZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiYWN0aXZlIHNuYXAgaW5kZXggeSIsIHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0NGM2
MzliNGFmZjBjMjQyNjk1ODIxNDk5Li42YjZkMjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2NjVk
NjE0Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmgKQEAgLTU3LDI0ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF4
aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0
czsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5p
dD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCA/IG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25z
dCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNldElu
Zm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1f
c25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0Fu
ZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9y
PFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0gICAg
ICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICAg
ICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7
Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyA9IHNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Nu
YXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAg
ICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFwT2Zm
c2V0UmFuZ2VzOwotICAgICAgICB9Ci0gICAgfQorICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRz
SW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25h
cE9mZnNldHNJbmZvJiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQog
CiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFN0YXRlOyB9CiAKQEAgLTEwMCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdHJh
bnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9h
dCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1heFNj
cm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFw
SW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9s
bEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9s
bE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5k
ZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFw
U3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRT
aXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFw
U3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9OwogCi0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+IG1fc25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRz
SW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKIAogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4
WCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRj
YTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZh
NTkxNjk2MWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cApAQCAtNDc5LDE5ICs0NzksMTkgQEAgU3RyaW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNj
cm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJl
YTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKK0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYg
U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3Nu
YXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0
c0luZm8gPSBtYWtlVW5pcXVlPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAgICBy
ZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0Citj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zm
c2V0SW5mbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgpOwog
fQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFibGVB
cmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKGluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFy
U25hcE9mZnNldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmlu
ZGV4IDdlYjdiNTQwMjgyODQwYWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzljZGI3
ZjY3OTM5OGE3Yzg3NzMxMmVkNDk3YzE2ZmU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2Vz
U2Nyb2xsU25hcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIHNu
YXBPZmZzZXRJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZz
ZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAgIHZv
aWQgc2V0U2Nyb2xsU25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJik7CiAgICAgdm9pZCBjbGVhclNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXggPSBpbmRleDsgfQpAQCAtMzg1LDggKzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAg
TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBPZmZz
ZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgg
eyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAg
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCmluZGV4IGMwOTVjZDY2ZjU5NTZmOGI4OWFhY2IzM2Q1YjdmODAyMzBhOWE3YjUu
LmQ0NTIxZDY1OGMzM2ZhZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyNzgsNyAr
MTI3OCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEo
Y29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi1zdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbykKK3N0YXRpYyBib29sIGdl
c3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZv
KiBvZmZzZXRJbmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDNlMzgwZmQxNDVkNzIyNWJhYzA1NzMzMGMxOWQ2Y2E4OGEwZTBjZDIuLjFj
ODIxZWViN2NkYmIxNGUwM2FhNGQ0ODQ1YmE0MTI1ODllZDY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDkgKzk4
LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
PiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVxdWVzdGVkU2Nyb2xsRGF0YSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7Ci0gICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPGZsb2F0PiYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKKyAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTbmFwT2Zm
c2V0PGZsb2F0Pj4gewpAQCAtMzExLDcgKzMxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9y
aWdpbiwgSW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+LCBzZXRT
bmFwT2Zmc2V0c0luZm8pOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvLCBzZXRTbmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRl
eCwgdW5zaWduZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAgIFND
Uk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50
VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCk7CiAjZW5kaWYKQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U25hcE9mZnNldDxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU25h
cE9mZnNldAogewogICAgIGVuY29kZXIgPDwgb2Zmc2V0Lm9mZnNldDsKICAgICBlbmNvZGVyIDw8
IG9mZnNldC5zdG9wOworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kZXg7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0Pj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTbmFwT2Zmc2V0PGZsb2F0PiYgb2Zmc2V0KQpAQCAtNTQwLDI3ICs1NDEsMjYgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQordm9pZCBBcmd1bWVudENvZGVy
PEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwg
aW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2Fs
U25hcE9mZnNldHM7Ci0gICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzOwotICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAg
ZW5jb2RlciA8PCBpbmZvLnNuYXBBcmVhczsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK2Jvb2wgQXJndW1lbnRDb2RlcjxGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8uc25hcEFyZWFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggMzhkZDlkMzFlNmM3Y2Y3OTQ5NTZlNzczMGIxMDdkZTQ5NDdhNGI4Ny4uODdlNGQ0NjBl
ZTNlNDFjYzc5ODY5NjRjMzE0ODVlZDM1NmYwZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yODA1LDMyICsyODA1LDYgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgU2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJh
bmdlKQotewotICAgIGVuY29kZXIgPDwgcmFuZ2Uuc3RhcnQ7Ci0gICAgZW5jb2RlciA8PCByYW5n
ZS5lbmQ7Ci19Ci0KLWF1dG8gQXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PgotewotICAgIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0
PiByYW5nZTsKLSAgICBmbG9hdCBzdGFydDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGZsb2F0IGVuZDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGVuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByYW5nZS5zdGFydCA9IHN0YXJ0OwotICAgIHJhbmdlLmVuZCA9IGVuZDsKLSAgICByZXR1
cm4gcmFuZ2U7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rp
b25PcHRpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFTZWxlY3Rpb25P
cHRpb24mIG9wdGlvbikKIHsKICAgICBlbmNvZGVyIDw8IG9wdGlvbi5kaXNwbGF5TmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTI4ZGE3
NTYwYzNlODliZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4uZTNlYmQzM2MwZTY5Y2MyMzRmMWM2
ZDU4MTRlN2I0Nzc5ZmE2NmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTc0MywxNSArNzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcm9sbE9mZnNl
dFJhbmdlPGZsb2F0PiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi0jZW5kaWYKLQogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFT
ZWxlY3Rpb25PcHRpb24mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMTE2NzVmMzI0NWJh
MTFhYzM5OGZkYmEyZmNlMzYzYmFiZjBhYTQ1NC4uMDQ2NDEwOGZkOGZhZDQ4YjJiZDRlMzhmODBm
OWM2YjJhNTgwMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjIzLDE0ICsyMjMsMTIgQEAgYm9vbCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xs
aW5nKFNjcm9sbEV2ZW4KIAogZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4
aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGN1
cnJlbnRJbmRleCkgY29uc3QKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Ny
b2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKLSAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1l
U2Nyb2xsaW5nTm9kZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiBy
b290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGUqPihyb290KTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290
U2Nyb2xsaW5nTm9kZSA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBjb25zdCBh
dXRvJiBzbmFwT2Zmc2V0c0luZm8gPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZv
KCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0
aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQg
cmF3Q2xvc2VzdFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQs
IGN1cnJlbnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
c2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKKyAgICBzdGQ6OnRpZShyYXdDbG9z
ZXN0U25hcE9mZnNldCwgY3VycmVudEluZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25h
cE9mZnNldChheGlzLCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXplKCks
IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nl
c3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ODBjMDMxOTVmODljNGJkMTNkZDZhNjQ2NTIzZjFkZjg0
Yzk1NjRlLi44ZmM2NjE1Zjc2ZjNjOWZhZDAwZjU5NGIzNGIxM2RkNDRjOTIzY2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLm1tCkBAIC0xMDYsMTYgKzEwNiwxNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5k
RHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQog
ICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCgpOwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KCk7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXpl
KHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChbc2Nyb2xsVmlldyBib3VuZHNdKSks
IHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQoW3Njcm9sbFZpZXcgYm91bmRzXSkp
KTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICghc25h
cE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
YXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jp
em9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBv
c2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29y
ZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB2aWV3cG9ydFNpemUsIGhvcml6b250YWxU
YXJnZXQsIHZlbG9jaXR5LngpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgp
OwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJnZXQg
PD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRl
bnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCiAgICAgaWYgKCFz
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
YXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGlj
YWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRp
b24sIGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2
ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAg
IGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcu
Y29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9
IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZjhhOWUwZjZkNmFjNmM4ZThjMDA1NTFk
YmQ2M2JiYzA1OTA3YzAyLi5kNDk0YmVjZTI2NjdjYmE2Y2FiMmY3Yjk3MGU0OTEwY2JjZDEwNjk2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFByb3Blcmx5
IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xp
Y2stc2Nyb2xsYmFyLWd1dHRlci5odG1sOiBUaGlzIHRlc3QgdXNlZCBzbmFwIGFyZWFzIHRoYXQK
KyAgICAgICAgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0LCB0aHVzIG1lYW50IHRoYXQgaXQgcmVsaWVk
IG9uIG5vbi1zcGVjIGNvbXBsaWFudCBiZWhhdmlvci4gUmV3b3JrIGl0IHNvCisgICAgICAgIHRo
YXQgdGhlIHNuYXAgYXJlYXMgZG8gbm90IG92ZXJmbG93LCBtYWludGFpbmluZyB0aGUgZXhpc3Rp
bmcgYmVoYXZpb3IuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250
YWwuaHRtbDogRGl0dG8uCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWw6IERpdHRvLgorCiAyMDIx
LTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJl
dmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggMWFlMzI2YzNjYjBiMmM0Y2UzNTY4M2I3ZDhhODZlNWQzZGIyNWU1OS4u
NTQ3MzhiYmQxZDk1OTY3Yzg5MjA5NDY0MTU5M2U5YTM1NTNhY2RlYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBd
IFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0OiBVcGRh
dGUgZXhwZWN0YXRpb25zIHRvCisgICAgICAgIHNob3cgdGhhdCB0aGlzIHRlc3QgaXMgbm93IHBh
c3NpbmcuCisKIDIwMjEtMDMtMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgRG8gbm90IHNocmluayByYWRpbyBidXR0b25zIGJlbGxvdyBpdHMg
c2l6ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAppbmRleCA3YjM1MjZj
YzRkZDA3ZDUxYzllYzkzZGM4OWQ0OTAyYmYwYmQ0NjMyLi45NGRhOGJlNTMxYmZkZWI5NDIwNWY3
ZThlYzIxMjYxZDFkZjg2YmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIu
aHRtbApAQCAtMzQsMjEgKzM0LDMyIEBACiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlw
ZTogYm90aCBtYW5kYXRvcnk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ibG9jayB7
Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgd2lkdGg6
IDI1MHB4OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIHsKICAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMDBweDsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIC5ibG9jayB7Ci0gICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1MHB4
OworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4gZGl2IHsKKyAgICAgICAgICAgICAg
ICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgICAgICB3aWR0aDogOTkwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuaG9yaXpv
bnRhbC1kcmF3ZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdiB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA5OTBweDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdi5zbmFw
LXBvaW50IHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgfQorCiAgICAgICAgIDwvc3R5
bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KQEAgLTg3LDEzICs5OCwxNyBAQAogICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KICAgICAgICAgPGRpdiBpZD0iaG9yaXpvbnRhbC1jb250YWluZXIiIGNsYXNzPSJjb250
YWluZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1kcmF3ZXIiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IGJhY2tn
cm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2Nr
IiBzdHlsZT0id2lkdGg6IDQ1MHB4OyBmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3MSI+
PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJh
Y2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6
ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAg
ICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgaWQ9InZlcnRpY2FsLWNvbnRh
aW5lciIgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIg
c3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYmxvY2siIHN0eWxlPSJoZWlnaHQ6IDQ1MHB4OyBiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5k
OiAjODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHAgaWQ9
ImNvbnNvbGUiPjwvcD4KICAgICAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVy
Zmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFw
LWFyZWFzLWV4cGVjdGVkLnR4dAppbmRleCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2NTkz
M2I4OGUyODFlLi4yNTljZDk4MGM1NDlhMDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9s
bC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEz
IEBACiAKIFBBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBk
b2Vzbid0IGNvdmVyIHRoZSBzbmFwcG9ydCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBw
b3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUg
cmlnaHQgYm9yZGVyLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAwCi1G
QUlMIFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRo
ZSBzbmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMjAwIGJ1dCBnb3QgMjcxNQorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0
aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVy
LgorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVy
cyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlmIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBw
b3NpdGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25hcHMg
aWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAwKSBz
bmFwIHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJTCBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3Np
dGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3Rh
bmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRo
YW4gc25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAw
Ci1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBz
bmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0
aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBs
YXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAgYnV0
IGdvdCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBh
IHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9u
IHggYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDE1MDAgYnV0IGdvdCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBh
cmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAg
cG9zaXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJ
TCBEb24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9z
aXRpb25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25h
cCB0YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMzcxNSBidXQgZ290IDIyMDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlv
biBvbiB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRv
IHRoZSBzcGVjaWZpZWQgc25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3Zl
cmluZyB5IGF4aXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFTUyBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3Np
dGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3Rh
bmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRo
YW4gc25hcHBvcnQoNTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3
aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNu
YXBwb3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFu
ZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8g
Y3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBh
cyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJz
ZXF1ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0
aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3Zl
cnMgc25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9u
cy4KK1BBU1MgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xs
IHRvIHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBp
ZiBhIHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAgdG8g
Y3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4
aXMuSG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBh
cyB0aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAppbmRleCA2NDI3YTEx
NGU0OGIyNmJlNjViNTVlN2I4NjhkZjg2NzU2OTFhOWY4Li45NGRhZDIxNjhjNjBkZTkxNTQ3NmIx
ZDAxMGE2NDNkMDRmZTkyMGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZl
cnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
dmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgICAgIDxz
dHlsZT4KICAgICAgICAgICAgIGh0bWwgewogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5
cGU6IHkgbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgIHdpZHRo
OiAxMDB2dzsKQEAgLTEyLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLmNvbG9yQm94IHsKLSAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDEwMHZoOworICAgICAgICAgICAgICAgIGhlaWdodDogOTB2aDsKICAgICAgICAgICAg
ICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAg
ICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbAppbmRleCA1YjA1
MmZkYmY5NGM4NGEzZDhlMGQxYTI4ZmNiNTIyMDJhZWY5ZjJmLi4xNTMxZTFlM2FiMjI1ZTUwMmIz
YjcyMGQxZDA2MWI4YmUzMGZmNjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbApAQCAtMTMsMjEgKzEzLDE2IEBA
CiAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgIHRv
cDogMDsKICAgICAgICAgICAgICAgICBsZWZ0OiAwOwotICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IG5vbmU7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAg
ICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5OwotICAgICAgICAgICAgICAgIC13
ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OwotICAgICAgICAgICAgICAgIHNjcm9s
bC1zbmFwLXR5cGU6IHByb3hpbWl0eTsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC5hcmVhIHsKLSAgICAgICAgICAgICAgICBoZWln
aHQ6IDYwMHB4OwotICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAg
ICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0
YXJ0OwotICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAw
OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>