<?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>240491</bug_id>
          
          <creation_ts>2022-05-16 16:36:05 -0700</creation_ts>
          <short_desc>rdar://93377867 (WebKit r294204: weird text rendering artifacts while pages are loading)</short_desc>
          <delta_ts>2022-05-16 16:42:26 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1869489</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-16 16:36:05 -0700</bug_when>
    <thetext>rdar://93377867 (WebKit r294204: weird text rendering artifacts while pages are loading)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869490</commentid>
    <comment_count>1</comment_count>
      <attachid>459464</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-16 16:36:11 -0700</bug_when>
    <thetext>Created attachment 459464
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869493</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-16 16:38:07 -0700</bug_when>
    <thetext>Unable to find any modified ChangeLog in Attachment 459464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869495</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-16 16:41:11 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/294279/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869496</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-16 16:42:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/93380320&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459464</attachid>
            <date>2022-05-16 16:36:11 -0700</date>
            <delta_ts>2022-05-16 16:38:08 -0700</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-240491-20220516163610.patch</filename>
            <type>text/plain</type>
            <size>44830</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">RnJvbSAwZTA5NzE3YmQ0ZDYzNTI5NzlkMTI3OWJkYmVjMmRjMzI5ZTVhZTkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBGcmFzZXIgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CkRhdGU6IE1vbiwgMTYgTWF5IDIwMjIgMTY6MzQ6MTIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBy
ZGFyOi8vOTMzNzc4NjcgKFdlYktpdCByMjk0MjA0OiB3ZWlyZCB0ZXh0IHJlbmRlcmluZwogYXJ0
aWZhY3RzIHdoaWxlIHBhZ2VzIGFyZSBsb2FkaW5nKQoKUmV2ZXJ0IHIyOTQyMDQgYW5kIHIyOTQy
NjIKCiogbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9JbmxpbmVJdGVyYXRvckJveC5jcHA6CihX
ZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94Ojp2aXN1YWxSZWN0IGNvbnN0KTogRGVsZXRlZC4K
KiBsYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yQm94Lmg6CihXZWJDb3Jl
OjpJbmxpbmVJdGVyYXRvcjo6Qm94Ojp2aXN1YWxSZWN0IGNvbnN0KToKKFdlYkNvcmU6OklubGlu
ZUl0ZXJhdG9yOjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6IERlbGV0ZWQuCiogbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaDoKKFdlYkNv
cmU6OklubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoOjpjb250YWluaW5nQmxvY2sgY29uc3Qp
OiBEZWxldGVkLgooV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGg6OmRpcmVj
dGlvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94TGVnYWN5
UGF0aDo6aXNGaXJzdExpbmUgY29uc3QpOiBEZWxldGVkLgoqIGxheW91dC9pbnRlZ3JhdGlvbi9p
bmxpbmUvSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmg6CihXZWJDb3JlOjpJbmxpbmVJdGVy
YXRvcjo6Qm94TW9kZXJuUGF0aDo6ZGlyZWN0aW9uIGNvbnN0KToKKFdlYkNvcmU6OklubGluZUl0
ZXJhdG9yOjpCb3hNb2Rlcm5QYXRoOjpjb250YWluaW5nQmxvY2sgY29uc3QpOiBEZWxldGVkLgoo
V2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg6OmlzRmlyc3RMaW5lIGNvbnN0
KTogRGVsZXRlZC4KKiBsYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
cGFpbnQpOgoqIHJlbmRlcmluZy9JbmxpbmVCb3hQYWludGVyLmNwcDoKKFdlYkNvcmU6OklubGlu
ZUJveFBhaW50ZXI6OnBhaW50TWFzayk6CihXZWJDb3JlOjpJbmxpbmVCb3hQYWludGVyOjpwYWlu
dERlY29yYXRpb25zKToKKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHA6CihXZWJD
b3JlOjpMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3cpOgoqIHJl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRl
eHRCb3g6OnBhaW50KToKKiByZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oOgoqIHJlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gpOgoqIHJlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHA6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6VGV4dEJveFBhaW50ZXIpOgooV2ViQ29y
ZTo6VGV4dEJveFBhaW50ZXI6On5UZXh0Qm94UGFpbnRlcik6CihXZWJDb3JlOjpUZXh0Qm94UGFp
bnRlcjo6cGFpbnQpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNyZWF0ZU1hcmtlZFRleHRG
cm9tU2VsZWN0aW9uSW5Cb3gpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OnBhaW50QmFja2dy
b3VuZCk6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3Jh
dGlvbnMpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OnBhaW50Q29tcG9zaXRpb25CYWNrZ3Jv
dW5kKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludEZvcmVncm91bmQpOgooV2ViQ29y
ZTo6VGV4dEJveFBhaW50ZXI6OmNyZWF0ZURlY29yYXRpb25QYWludGVyKToKKFdlYkNvcmU6OlRl
eHRCb3hQYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyk6CihXZWJDb3JlOjpUZXh0
Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6VGV4dEJv
eFBhaW50ZXI6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmVzKToKKFdlYkNvcmU6OnRleHRQb3Np
dGlvbik6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRDb21wb3NpdGlvblVuZGVybGlu
ZSk6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2Vy
cyk6CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6Y2FsY3VsYXRlVW5pb25PZkFsbERvY3VtZW50
TWFya2VyQm91bmRzKToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpwYWludFBsYXRmb3JtRG9j
dW1lbnRNYXJrZXIpOgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNvbXB1dGVQYWludFJlY3Qp
OgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZURvY3VtZW50TWFya2VyQm91bmRz
KToKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjpjb21wdXRlSGF2ZVNlbGVjdGlvbiBjb25zdCk6
CihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjo6Zm9udENhc2NhZGUgY29uc3QpOgooV2ViQ29yZTo6
VGV4dEJveFBhaW50ZXI6OnRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0IGNvbnN0KToKKFdlYkNvcmU6
OlRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFkb3cgY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5
VGV4dEJveFBhaW50ZXI6OkxlZ2FjeVRleHRCb3hQYWludGVyKTogRGVsZXRlZC4KKCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpNb2Rlcm5UZXh0Qm94UGFpbnRlcjo6TW9kZXJuVGV4dEJveFBhaW50ZXIp
OiBEZWxldGVkLgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpUZXh0Qm94
UGFpbnRlcik6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46
On5UZXh0Qm94UGFpbnRlcik6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0
Qm94UGF0aD46Om1ha2VJdGVyYXRvciBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50KTogRGVsZXRlZC4KKFdlYkNvcmU6OlRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50QmFj
a2dyb3VuZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46
OnBhaW50Rm9yZWdyb3VuZEFuZERlY29yYXRpb25zKTogRGVsZXRlZC4KKFdlYkNvcmU6OlRleHRC
b3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQpOiBEZWxl
dGVkLgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91
bmQpOiBEZWxldGVkLgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpjcmVh
dGVEZWNvcmF0aW9uUGFpbnRlcik6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRlcjxU
ZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKTogRGVsZXRlZC4KKFdlYkNv
cmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlv
bnMpOiBEZWxldGVkLgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWlu
dENvbXBvc2l0aW9uVW5kZXJsaW5lcyk6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94UGFpbnRl
cjxUZXh0Qm94UGF0aD46OnRleHRQb3NpdGlvbik6IERlbGV0ZWQuCihXZWJDb3JlOjpUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUpOiBEZWxldGVk
LgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludFBsYXRmb3JtRG9j
dW1lbnRNYXJrZXJzKTogRGVsZXRlZC4KKFdlYkNvcmU6OkxlZ2FjeVRleHRCb3hQYWludGVyOjpj
YWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRNYXJrZXJCb3VuZHMpOiBEZWxldGVkLgooV2ViQ29y
ZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJr
ZXIpOiBEZWxldGVkLgooV2ViQ29yZTo6VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojpjb21w
dXRlUGFpbnRSZWN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OmNhbGN1bGF0ZURvY3VtZW50TWFya2Vy
Qm91bmRzKTogRGVsZXRlZC4KKFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6
Y29tcHV0ZUhhdmVTZWxlY3Rpb24gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6VGV4dEJveFBh
aW50ZXI8VGV4dEJveFBhdGg+Ojpmb250Q2FzY2FkZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0IGNv
bnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6ZGVi
dWdUZXh0U2hhZG93IGNvbnN0KTogRGVsZXRlZC4KKiByZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIu
aDoKKFdlYkNvcmU6OlRleHRCb3hQYWludGVyOjp0ZXh0Qm94IGNvbnN0KToKLS0tCiAuLi4vaW50
ZWdyYXRpb24vaW5saW5lL0lubGluZUl0ZXJhdG9yQm94LmNwcCAgfCAgIDcgLQogLi4uL2ludGVn
cmF0aW9uL2lubGluZS9JbmxpbmVJdGVyYXRvckJveC5oICAgIHwgIDM0ICsrLS0KIC4uLi9pbmxp
bmUvSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmggICAgICB8ICAgOCAtCiAuLi4vaW5saW5l
L0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oICAgICAgfCAgIDkgKy0KIC4uLi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICAgMiArLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwIHwgICA0ICstCiAuLi4vV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAgfCAgIDIgKy0KIC4uLi9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcCB8ICAgMiArLQogLi4uL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaCAgIHwgICAxICsKIC4uLi9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwICAgICAgICB8ICAgOSArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcCAgIHwgMTg4ICsrKysrKystLS0tLS0tLS0tLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmggICAgIHwgIDM2ICsrLS0KIDEy
IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCAxODkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9JbmxpbmVJ
dGVyYXRvckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5l
L0lubGluZUl0ZXJhdG9yQm94LmNwcAppbmRleCBlMWRhOTBjM2IwOGQuLjMwMGE5MzdkNTdiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9Jbmxp
bmVJdGVyYXRvckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9JbmxpbmVJdGVyYXRvckJveC5jcHAKQEAgLTk0LDEzICs5NCw2IEBAIExpbmVCb3hJ
dGVyYXRvciBCb3g6OmxpbmVCb3goKSBjb25zdAogICAgICk7CiB9CiAKLUZsb2F0UmVjdCBCb3g6
OnZpc3VhbFJlY3QoKSBjb25zdAotewotICAgIGF1dG8gcmVjdCA9IHZpc3VhbFJlY3RJZ25vcmlu
Z0Jsb2NrRGlyZWN0aW9uKCk7Ci0gICAgY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZvcldyaXRpbmdN
b2RlKHJlY3QpOwotICAgIHJldHVybiByZWN0OwotfQotCiBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdo
dFN0YXRlIEJveDo6c2VsZWN0aW9uU3RhdGUoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9J
bmxpbmVJdGVyYXRvckJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9JbmxpbmVJdGVyYXRvckJveC5oCmluZGV4IGYzZWExZWQ1ODU3YS4uOWU2ZDMwODhmZDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lu
bGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9JbmxpbmVJdGVyYXRvckJveC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzSW5saW5lQm94KCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBj
b25zdDsKIAotICAgIEZsb2F0UmVjdCB2aXN1YWxSZWN0KCkgY29uc3Q7CisgICAgRmxvYXRSZWN0
IHZpc3VhbFJlY3QoZmxvYXQgZm9ybWF0dGluZ1Jvb3RTaXplSW5CbG9ja0RpcmVjdGlvbikgY29u
c3Q7CiAgICAgRmxvYXRSZWN0IHZpc3VhbFJlY3RJZ25vcmluZ0Jsb2NrRGlyZWN0aW9uKCkgY29u
c3Q7CiAKICAgICBmbG9hdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFs
KCkgPyB2aXN1YWxSZWN0SWdub3JpbmdCbG9ja0RpcmVjdGlvbigpLnkoKSA6IHZpc3VhbFJlY3RJ
Z25vcmluZ0Jsb2NrRGlyZWN0aW9uKCkueCgpOyB9CkBAIC04NSw3ICs4NSw2IEBAIHB1YmxpYzoK
ICAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3Q7
CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKICAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUuIEZvciBpbnRl
cm1lZGlhdGUgcG9ydGluZyBzdGVwcyBvbmx5LgpAQCAtMTAxLDE3ICsxMDAsMTggQEAgcHVibGlj
OgogCiAgICAgTGluZUJveEl0ZXJhdG9yIGxpbmVCb3goKSBjb25zdDsKIAotI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQotICAgIGNvbnN0IEJveE1vZGVyblBhdGgmIG1vZGVy
blBhdGgoKSBjb25zdDsKLSNlbmRpZgotICAgIGNvbnN0IEJveExlZ2FjeVBhdGgmIGxlZ2FjeVBh
dGgoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBCb3hJdGVyYXRvcjsK
ICAgICBmcmllbmQgY2xhc3MgSW5saW5lQm94SXRlcmF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIExl
YWZCb3hJdGVyYXRvcjsKICAgICBmcmllbmQgY2xhc3MgVGV4dEJveEl0ZXJhdG9yOwogCisgICAg
Ly8gVG8gaGVscCB3aXRoIGRlYnVnZ2luZy4KKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKyAgICBjb25zdCBCb3hNb2Rlcm5QYXRoJiBtb2Rlcm5QYXRoKCkgY29uc3Q7Cisj
ZW5kaWYKKyAgICBjb25zdCBCb3hMZWdhY3lQYXRoJiBsZWdhY3lQYXRoKCkgY29uc3Q7CisKICAg
ICBQYXRoVmFyaWFudCBtX3BhdGhWYXJpYW50OwogfTsKIApAQCAtMTg0LDYgKzE4NCwxOSBAQCBp
bmxpbmUgYm9vbCBCb3g6OmlzUm9vdElubGluZUJveCgpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2lu
bGluZSBGbG9hdFJlY3QgQm94Ojp2aXN1YWxSZWN0KGZsb2F0IGZvcm1hdHRpbmdSb290U2l6ZUlu
QmxvY2tEaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgYXV0byB2aXN1YWxSZWN0ID0gdmlzdWFsUmVj
dElnbm9yaW5nQmxvY2tEaXJlY3Rpb24oKTsKKyAgICBpZiAoIXN0eWxlKCkuaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIHZpc3VhbFJlY3Q7CisKKyAgICBpZiAo
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICB2aXN1YWxSZWN0LnNl
dFkoZm9ybWF0dGluZ1Jvb3RTaXplSW5CbG9ja0RpcmVjdGlvbiAtIHZpc3VhbFJlY3QubWF4WSgp
KTsKKyAgICBlbHNlCisgICAgICAgIHZpc3VhbFJlY3Quc2V0WChmb3JtYXR0aW5nUm9vdFNpemVJ
bkJsb2NrRGlyZWN0aW9uIC0gdmlzdWFsUmVjdC5tYXhYKCkpOworICAgIHJldHVybiB2aXN1YWxS
ZWN0OworfQorCiBpbmxpbmUgRmxvYXRSZWN0IEJveDo6dmlzdWFsUmVjdElnbm9yaW5nQmxvY2tE
aXJlY3Rpb24oKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKQEAgLTIzMywxMyArMjQ2LDYgQEAgaW5saW5lIGNvbnN0IFJl
bmRlck9iamVjdCYgQm94OjpyZW5kZXJlcigpIGNvbnN0CiAgICAgfSk7CiB9CiAKLWlubGluZSBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIEJveDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSAtPiBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIHsKLSAgICAgICAgcmV0dXJuIHBhdGguY29udGFpbmluZ0Js
b2NrKCk7Ci0gICAgfSk7Ci19Ci0KIGlubGluZSBjb25zdCBSZW5kZXJTdHlsZSYgQm94OjpzdHls
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgLT4gY29uc3QgUmVuZGVyU3R5bGUmIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQ
YXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGluZUl0
ZXJhdG9yQm94TGVnYWN5UGF0aC5oCmluZGV4IGJlOTgyNGYxM2QxMC4uM2NkZDVlZTQwNjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0lubGlu
ZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9pbmxpbmUvSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgKQEAgLTc2LDExICs3
Niw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1faW5saW5lQm94LT5yZW5kZXJlcigpOwog
ICAgIH0KIAotICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lubGluZUJveC0+cm9vdCgpLmJsb2NrRmxvdygp
OwotICAgIH0KLQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9pbmxpbmVCb3gtPmxpbmVTdHlsZSgpOwpAQCAtMTE4LDkgKzExMyw2
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHsgaW5saW5lRmxvd0JveCgpLT5sYXN0TGVhZkRl
c2NlbmRhbnQoKSB9OwogICAgIH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gYmlkaUxldmVsKCkgJSAyID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERp
cmVjdGlvbjo6TFRSOyB9Ci0gICAgYm9vbCBpc0ZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuICFy
b290SW5saW5lQm94KCkucHJldlJvb3RCb3goKTsgfQotCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJveExlZ2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveCA9PSBv
dGhlci5tX2lubGluZUJveDsgfQogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFt
X2lubGluZUJveDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2lubGluZS9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgK
aW5kZXggNjMyMzdkYjI3ZmQyLi4wN2Y4MGJkY2I0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRo
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9JbmxpbmVJ
dGVyYXRvckJveE1vZGVyblBhdGguaApAQCAtMTAzLDExICsxMDMsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KGJveCgpLmxh
eW91dEJveCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5p
bmdCbG9jaygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5j
b250YWluaW5nQmxvY2soKTsKLSAgICB9Ci0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGJveCgpLnN0eWxlKCk7CkBAIC0yMTIsOSAr
MjA3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFzdDsKICAgICB9CiAKLSAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpZGlMZXZlbCgpICUgMiA/IFRl
eHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsgfQotICAgIGJvb2wgaXNGaXJz
dExpbmUoKSBjb25zdCB7IHJldHVybiAhYm94KCkubGluZUluZGV4KCk7IH0KLQogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCb3hNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
bmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX2JveEluZGV4ID09IG90
aGVyLm1fYm94SW5kZXg7IH0KIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9p
bmxpbmVDb250ZW50IHx8IG1fYm94SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7IH0KQEAgLTI4MCw2
ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IExheW91dEludGVncmF0aW9uOjpMaW5lJiBs
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50LT5saW5lRm9yQm94KGJveCgpKTsg
fQogCiAgICAgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKCkpOyB9CisgICAgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2ZWwoKSAlIDIgPyBUZXh0RGlyZWN0aW9uOjpS
VEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KIAogICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0SW50
ZWdyYXRpb246OklubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudDsKICAgICBzaXplX3QgbV9i
b3hJbmRleCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcAppbmRleCBjOGI3MzJjYThiMWUuLmEzMTM5NWZmN2IzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtODAwLDcgKzgwMCw3IEBAIHZvaWQg
TGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIGlmICghYm94LnRleHQoKS0+bGVuZ3RoKCkgfHwg
IWhhc0RhbWFnZShib3gpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBNb2Rlcm5UZXh0Qm94UGFpbnRlciBwYWludGVyKCptX2lubGluZUNvbnRlbnQsIGJveCwgcGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgICAgICAgICBUZXh0Qm94UGFpbnRlciBwYWludGVy
KCptX2lubGluZUNvbnRlbnQsIGJveCwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAg
ICAgICBwYWludGVyLnBhaW50KCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveFBhaW50ZXIuY3BwCmluZGV4IGIw
YTQ1MzZjNmE3Yi4uMWYzNzQzN2Q2MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveFBhaW50ZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbmxpbmVCb3hQ
YWludGVyOjpwYWludE1hc2soKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNb3ZlIHgveSB0
byBvdXIgY29vcmRpbmF0ZXMuCi0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0IHsgbV9p
bmxpbmVCb3gudmlzdWFsUmVjdCgpIH07CisgICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0
IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJveC5saW5lQm94KCktPmNvbnRhaW5p
bmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBh
aW50T2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwogCiAgICAg
Y29uc3QgTmluZVBpZWNlSW1hZ2UmIG1hc2tOaW5lUGllY2VJbWFnZSA9IHJlbmRlcmVyKCkuc3R5
bGUoKS5tYXNrQm94SW1hZ2UoKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIElubGluZUJveFBh
aW50ZXI6OnBhaW50RGVjb3JhdGlvbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNb3Zl
IHgveSB0byBvdXIgY29vcmRpbmF0ZXMuCi0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0
IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdCgpIH07CisgICAgYXV0byBsb2NhbFJlY3QgPSBMYXlv
dXRSZWN0IHsgbV9pbmxpbmVCb3gudmlzdWFsUmVjdChtX2lubGluZUJveC5saW5lQm94KCktPmNv
bnRhaW5pbmdCbG9jaygpLmxvZ2ljYWxIZWlnaHQoKSkgfTsKICAgICBMYXlvdXRQb2ludCBhZGp1
c3RlZFBhaW50b2Zmc2V0ID0gbV9wYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fcGFpbnRJbmZvLmNvbnRleHQoKTsKICAg
ICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwg
bG9jYWxSZWN0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lRmxvd0JveC5jcHAKaW5kZXggMzE3ZmZjYTdiNDc0Li43YzBkMGQ4NDBkMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVGbG93Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lRmxvd0JveC5jcHAKQEAg
LTkyNiw3ICs5MjYsNyBAQCBpbmxpbmUgdm9pZCBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUZXh0
Qm94VmlzdWFsT3ZlcmZsb3coTGVnYWN5SW5saW5lVGV4dEJveCYgdAogICAgIAogICAgIGxvZ2lj
YWxWaXN1YWxPdmVyZmxvdyA9IExheW91dFJlY3QobG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywg
bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyAtIGxv
Z2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyAtIGxv
Z2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7CiAKLSAgICBhdXRvIGRvY3VtZW50TWFya2VyQm91bmRz
ID0gTGVnYWN5VGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtl
ckJvdW5kcyh0ZXh0Qm94KTsKKyAgICBhdXRvIGRvY3VtZW50TWFya2VyQm91bmRzID0gVGV4dEJv
eFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJvdW5kcyh0ZXh0Qm94
KTsKICAgICBkb2N1bWVudE1hcmtlckJvdW5kcy5tb3ZlKHRleHRCb3gubG9naWNhbExlZnQoKSwg
dGV4dEJveC5sb2dpY2FsVG9wKCkpOwogICAgIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyA9IHVuaW9u
UmVjdChsb2dpY2FsVmlzdWFsT3ZlcmZsb3csIExheW91dFJlY3QoZG9jdW1lbnRNYXJrZXJCb3Vu
ZHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRC
b3guY3BwCmluZGV4IGM4NDgxZTk2ZDFiYi4uMjA2ODJhNjhiNjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAobG9naWNhbFN0YXJ0ID49IHBh
aW50RW5kIHx8IGxvZ2ljYWxTdGFydCArIGxvZ2ljYWxFeHRlbnQgPD0gcGFpbnRTdGFydCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTGVnYWN5VGV4dEJveFBhaW50ZXIgdGV4dEJveFBhaW50ZXIo
KnRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIFRleHRCb3hQYWludGVyIHRleHRC
b3hQYWludGVyKCp0aGlzLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB0ZXh0Qm94UGFp
bnRlci5wYWludCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGVnYWN5SW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZVRleHRCb3guaAppbmRleCBhZGVjNjRjYTVkNWUuLmNkM2ExNjVmZGMwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCkBAIC0xNTAsNiAr
MTUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVJdGVy
YXRvcjo6Qm94TGVnYWN5UGF0aDsKKyAgICBmcmllbmQgY2xhc3MgVGV4dEJveFBhaW50ZXI7CiAK
ICAgICBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCogY29tYmluZWRUZXh0KCkgY29uc3Q7CiAgICAg
Y29uc3QgRm9udENhc2NhZGUmIGxpbmVGb250KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0Mzg4N2FkOGZmNWYu
LjY2YmE4ODVkYjc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCkBAIC03MjcsMTUgKzcyNyw4IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiBtYXNrSW1hZ2Us
IGNvbnN0CiAgICAgICAgIGZvciAoYXV0byBib3ggPSBpbmxpbmVCb3gtPmZpcnN0TGVhZkJveCgp
LCBlbmQgPSBpbmxpbmVCb3gtPmVuZExlYWZCb3goKTsgYm94ICE9IGVuZDsgYm94LnRyYXZlcnNl
TmV4dE9uTGluZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWJveC0+aXNUZXh0KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoYXV0byogbGVnYWN5VGV4dEJveCA9
IGRvd25jYXN0PExlZ2FjeUlubGluZVRleHRCb3g+KGJveC0+bGVnYWN5SW5saW5lQm94KCkpKSB7
Ci0gICAgICAgICAgICAgICAgTGVnYWN5VGV4dEJveFBhaW50ZXIgdGV4dEJveFBhaW50ZXIoKmxl
Z2FjeVRleHRCb3gsIG1hc2tJbmZvLCBwYWludE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgdGV4
dEJveFBhaW50ZXIucGFpbnQoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIH0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSAgICAgICAgICAg
IE1vZGVyblRleHRCb3hQYWludGVyIHRleHRCb3hQYWludGVyKGJveC0+bW9kZXJuUGF0aCgpLmlu
bGluZUNvbnRlbnQoKSwgYm94LT5tb2Rlcm5QYXRoKCkuYm94KCksIG1hc2tJbmZvLCBwYWludE9m
ZnNldCk7CisgICAgICAgICAgICBUZXh0Qm94UGFpbnRlciB0ZXh0Qm94UGFpbnRlcihkb3duY2Fz
dDxJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yPihib3gpLCBtYXNrSW5mbywgcGFpbnRP
ZmZzZXQpOwogICAgICAgICAgICAgdGV4dEJveFBhaW50ZXIucGFpbnQoKTsKLSNlbmRpZgogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmNwcAppbmRleCAzNjA3MTBjNDM5MWIuLjNmYTNhMDEyNDc2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC00NSwzNCAr
NDUsMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgRmxvYXRSZWN0IGNhbGN1
bGF0ZURvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3ImLCBjb25zdCBNYXJrZWRUZXh0Jik7Ci0KLUxlZ2FjeVRleHRCb3hQYWludGVyOjpMZWdh
Y3lUZXh0Qm94UGFpbnRlcihjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotICAgIDog
VGV4dEJveFBhaW50ZXIoSW5saW5lSXRlcmF0b3I6OkJveExlZ2FjeVBhdGggeyAmdGV4dEJveCB9
LCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQorVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVy
KGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gsIFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCisgICAgOiBUZXh0Qm94UGFpbnRlcihJ
bmxpbmVJdGVyYXRvcjo6dGV4dEJveEZvcigmdGV4dEJveCksIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpCiB7CiAgICAgbV9lbXBoYXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlID0gdGV4dEJveC5lbXBo
YXNpc01hcmtFeGlzdHNBbmRJc0Fib3ZlKG1fc3R5bGUpOwogfQogCiAjaWYgRU5BQkxFKExBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQpCi1Nb2Rlcm5UZXh0Qm94UGFpbnRlcjo6TW9kZXJuVGV4dEJv
eFBhaW50ZXIoY29uc3QgTGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnQmIGlubGluZUNv
bnRlbnQsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYgYm94LCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotICAgIDogVGV4dEJveFBhaW50ZXIo
SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGggeyBpbmxpbmVDb250ZW50LCBpbmxpbmVDb250
ZW50LmluZGV4Rm9yQm94KGJveCkgfSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCkKK1RleHRCb3hQ
YWludGVyOjpUZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29u
dGVudCYgaW5saW5lQ29udGVudCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3gsIFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCisgICAgOiBU
ZXh0Qm94UGFpbnRlcihJbmxpbmVJdGVyYXRvcjo6dGV4dEJveEZvcihpbmxpbmVDb250ZW50LCBi
b3gpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KQogewogfQogI2VuZGlmCiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFRleHRCb3hQYXRoPgotVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpUZXh0Qm94
UGFpbnRlcihUZXh0Qm94UGF0aCYmIHRleHRCb3gsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi0gICAgOiBtX3RleHRCb3goV1RGTW92ZSh0ZXh0
Qm94KSkKLSAgICAsIG1fcmVuZGVyZXIoZG93bmNhc3Q8UmVuZGVyVGV4dD4obV90ZXh0Qm94LnJl
bmRlcmVyKCkpKQorVGV4dEJveFBhaW50ZXI6OlRleHRCb3hQYWludGVyKGNvbnN0IElubGluZUl0
ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCisgICAgOiBtX3RleHRCb3godGV4dEJveCkK
KyAgICAsIG1fcmVuZGVyZXIobV90ZXh0Qm94LT5yZW5kZXJlcigpKQogICAgICwgbV9kb2N1bWVu
dChtX3JlbmRlcmVyLmRvY3VtZW50KCkpCi0gICAgLCBtX3N0eWxlKG1fdGV4dEJveC5zdHlsZSgp
KQotICAgICwgbV9sb2dpY2FsUmVjdChtX3RleHRCb3guaXNIb3Jpem9udGFsKCkgPyBtX3RleHRC
b3gudmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rpb24oKSA6IG1fdGV4dEJveC52aXN1YWxS
ZWN0SWdub3JpbmdCbG9ja0RpcmVjdGlvbigpLnRyYW5zcG9zZWRSZWN0KCkpCi0gICAgLCBtX3Bh
aW50VGV4dFJ1bihtX3RleHRCb3guY3JlYXRlVGV4dFJ1bihJbmxpbmVJdGVyYXRvcjo6Q3JlYXRl
VGV4dFJ1bk1vZGU6OlBhaW50aW5nKSkKKyAgICAsIG1fc3R5bGUobV90ZXh0Qm94LT5zdHlsZSgp
KQorICAgICwgbV9wYWludFRleHRSdW4obV90ZXh0Qm94LT5jcmVhdGVUZXh0UnVuKCkpCiAgICAg
LCBtX3BhaW50SW5mbyhwYWludEluZm8pCi0gICAgLCBtX3NlbGVjdGFibGVSYW5nZShtX3RleHRC
b3guc2VsZWN0YWJsZVJhbmdlKCkpCisgICAgLCBtX3NlbGVjdGFibGVSYW5nZShtX3RleHRCb3gt
PnNlbGVjdGFibGVSYW5nZSgpKQogICAgICwgbV9wYWludFJlY3QoY29tcHV0ZVBhaW50UmVjdChw
YWludE9mZnNldCkpCi0gICAgLCBtX2lzRmlyc3RMaW5lKG1fdGV4dEJveC5pc0ZpcnN0TGluZSgp
KQotICAgICwgbV9pc0NvbWJpbmVkVGV4dChpczxSZW5kZXJDb21iaW5lVGV4dD4obV9yZW5kZXJl
cikgJiYgZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KG1fcmVuZGVyZXIpLmlzQ29tYmluZWQo
KSkKKyAgICAsIG1faXNGaXJzdExpbmUobV90ZXh0Qm94LT5saW5lQm94KCktPmlzRmlyc3QoKSkK
ICAgICAsIG1faXNQcmludGluZyhtX2RvY3VtZW50LnByaW50aW5nKCkpCiAgICAgLCBtX2hhdmVT
ZWxlY3Rpb24oY29tcHV0ZUhhdmVTZWxlY3Rpb24oKSkKICAgICAsIG1fY29udGFpbnNDb21wb3Np
dGlvbihtX3JlbmRlcmVyLnRleHROb2RlKCkgJiYgbV9yZW5kZXJlci5mcmFtZSgpLmVkaXRvcigp
LmNvbXBvc2l0aW9uTm9kZSgpID09IG1fcmVuZGVyZXIudGV4dE5vZGUoKSkKQEAgLTgxLDIwICs3
NiwxMSBAQCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OlRleHRCb3hQYWludGVyKFRleHRC
b3hQYXRoJiYgdGV4dEJveCwgUGFpbnRJbmZvJiBwYQogICAgIEFTU0VSVChwYWludEluZm8ucGhh
c2UgPT0gUGFpbnRQaGFzZTo6Rm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZTo6U2VsZWN0aW9uIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpUZXh0Q2xp
cCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6RXZlbnRSZWdpb24pOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLVRleHRCb3hQYWludGVyPFRleHRCb3hQYXRo
Pjo6flRleHRCb3hQYWludGVyKCkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBh
dGg+Ci1JbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIFRleHRCb3hQYWludGVyPFRleHRC
b3hQYXRoPjo6bWFrZUl0ZXJhdG9yKCkgY29uc3QKK1RleHRCb3hQYWludGVyOjp+VGV4dEJveFBh
aW50ZXIoKQogewotICAgIGF1dG8gcGF0aENvcHkgPSBtX3RleHRCb3g7Ci0gICAgcmV0dXJuIElu
bGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgeyBXVEZNb3ZlKHBhdGhDb3B5KSB9OwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4
dEJveFBhdGg+OjpwYWludCgpCit2b2lkIFRleHRCb3hQYWludGVyOjpwYWludCgpCiB7CiAgICAg
aWYgKG1fcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlNlbGVjdGlvbiAmJiAhbV9oYXZl
U2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xMDUsNyArOTEsNyBAQCB2b2lkIFRleHRC
b3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYm9vbCBzaG91bGRSb3RhdGUgPSAhdGV4dEJveCgpLmlzSG9yaXpvbnRhbCgpICYmICFt
X2lzQ29tYmluZWRUZXh0OworICAgIGJvb2wgc2hvdWxkUm90YXRlID0gIXRleHRCb3goKS5pc0hv
cml6b250YWwoKSAmJiAhdGV4dEJveCgpLmlzQ29tYmluZWRUZXh0KCk7CiAgICAgaWYgKHNob3Vs
ZFJvdGF0ZSkKICAgICAgICAgbV9wYWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShyb3RhdGlv
bihtX3BhaW50UmVjdCwgQ2xvY2t3aXNlKSk7CiAKQEAgLTEyOSw4ICsxMTUsNyBAQCB2b2lkIFRl
eHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnQoKQogICAgICAgICBtX3BhaW50SW5mby5j
b250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRSZWN0LCBDb3VudGVyY2xvY2t3aXNl
KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotTWFya2VkVGV4dCBUZXh0
Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OmNyZWF0ZU1hcmtlZFRleHRGcm9tU2VsZWN0aW9uSW5C
b3goKQorTWFya2VkVGV4dCBUZXh0Qm94UGFpbnRlcjo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxl
Y3Rpb25JbkJveCgpCiB7CiAgICAgYXV0byBbc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZF0g
PSBtX3JlbmRlcmVyLnZpZXcoKS5zZWxlY3Rpb24oKS5yYW5nZUZvclRleHRCb3gobV9yZW5kZXJl
ciwgbV9zZWxlY3RhYmxlUmFuZ2UpOwogICAgIGlmIChzZWxlY3Rpb25TdGFydCA8IHNlbGVjdGlv
bkVuZCkKQEAgLTEzOCw4ICsxMjMsNyBAQCBNYXJrZWRUZXh0IFRleHRCb3hQYWludGVyPFRleHRC
b3hQYXRoPjo6Y3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJveCgpCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lkIFRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNrZ3JvdW5kKCkKK3ZvaWQgVGV4dEJveFBhaW50
ZXI6OnBhaW50QmFja2dyb3VuZCgpCiB7CiAgICAgYXV0byBzaG91bGRQYWludENvbXBvc2l0aW9u
QmFja2dyb3VuZCA9IG1fY29udGFpbnNDb21wb3NpdGlvbiAmJiAhbV91c2VDdXN0b21VbmRlcmxp
bmVzOwogI2lmIEVOQUJMRShURVhUX1NFTEVDVElPTikKQEAgLTE4NSw4ICsxNjksNyBAQCB2b2lk
IFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNrZ3JvdW5kKCkKICAgICAgICAg
cGFpbnRCYWNrZ3JvdW5kKG1hcmtlZFRleHQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0
Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEZvcmVncm91
bmRBbmREZWNvcmF0aW9ucygpCit2b2lkIFRleHRCb3hQYWludGVyOjpwYWludEZvcmVncm91bmRB
bmREZWNvcmF0aW9ucygpCiB7CiAgICAgYXV0byBzaG91bGRQYWludFNlbGVjdGlvbkZvcmVncm91
bmQgPSBtX2hhdmVTZWxlY3Rpb24gJiYgIW1fdXNlQ3VzdG9tVW5kZXJsaW5lczsKICAgICBhdXRv
IGhhc1RleHREZWNvcmF0aW9uID0gIW1fc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5p
c0VtcHR5KCk7CkBAIC0yNDgsNyArMjMxLDggQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94
UGF0aD46OnBhaW50Rm9yZWdyb3VuZEFuZERlY29yYXRpb25zKCkKICAgICB9CiAKICAgICBpZiAo
aGFzRGVjb3JhdGlvbiAmJiBtX3BhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rp
b24pIHsKLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9zZWxlY3RhYmxlUmFuZ2UudHJ1bmNh
dGlvbi52YWx1ZV9vcihtX3BhaW50VGV4dFJ1bi5sZW5ndGgoKSk7CisgICAgICAgIFRleHRSdW4g
dGV4dFJ1biA9IHRleHRCb3goKS5jcmVhdGVUZXh0UnVuKCk7CisgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IG1fc2VsZWN0YWJsZVJhbmdlLnRydW5jYXRpb24udmFsdWVfb3IodGV4dFJ1bi5sZW5n
dGgoKSk7CiAgICAgICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0YXJ0ID0gMDsKICAgICAgICAgdW5z
aWduZWQgc2VsZWN0aW9uRW5kID0gMDsKICAgICAgICAgaWYgKG1faGF2ZVNlbGVjdGlvbikKQEAg
LTMwMyw4ICsyODcsNyBAQCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRG
b3JlZ3JvdW5kQW5kRGVjb3JhdGlvbnMoKQogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VGV4dEJveFBhdGg+Ci12b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoKQordm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRDb21wb3NpdGlv
bkJhY2tncm91bmQoKQogewogICAgIGF1dG8mIGVkaXRvciA9IG1fcmVuZGVyZXIuZnJhbWUoKS5l
ZGl0b3IoKTsKIApAQCAtMzMxLDE0ICszMTQsMTIgQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0
Qm94UGF0aD46OnBhaW50Q29tcG9zaXRpb25CYWNrZ3JvdW5kKCkKICAgICB9CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0
aD46OnBhaW50QmFja2dyb3VuZChjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0KQor
dm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFN0eWxlZE1hcmtlZFRl
eHQmIG1hcmtlZFRleHQpCiB7Ci0gICAgcGFpbnRCYWNrZ3JvdW5kKG1hcmtlZFRleHQuc3RhcnRP
ZmZzZXQsIG1hcmtlZFRleHQuZW5kT2Zmc2V0LCBtYXJrZWRUZXh0LnN0eWxlLmJhY2tncm91bmRD
b2xvciwgQmFja2dyb3VuZFN0eWxlOjpOb3JtYWwpOworICAgIHBhaW50QmFja2dyb3VuZChtYXJr
ZWRUZXh0LnN0YXJ0T2Zmc2V0LCBtYXJrZWRUZXh0LmVuZE9mZnNldCwgbWFya2VkVGV4dC5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4K
LXZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmQodW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBC
YWNrZ3JvdW5kU3R5bGUgYmFja2dyb3VuZFN0eWxlKQordm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFp
bnRCYWNrZ3JvdW5kKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGNv
bnN0IENvbG9yJiBjb2xvciwgQmFja2dyb3VuZFN0eWxlIGJhY2tncm91bmRTdHlsZSkKIHsKICAg
ICBpZiAoc3RhcnRPZmZzZXQgPj0gZW5kT2Zmc2V0KQogICAgICAgICByZXR1cm47CkBAIC0zNDks
MTQgKzMzMCwxNCBAQCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRCYWNr
Z3JvdW5kKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZAogCiAgICAgLy8gTm90ZSB0aGF0
IGlmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgd2UgbGV0IHRoZSB0aGluZyBiZWluZyBwYWludGVk
IGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGhpZ2hsaWdodC4KLSAgICBh
dXRvIGxpbmVCb3ggPSBtYWtlSXRlcmF0b3IoKS0+bGluZUJveCgpOworICAgIGF1dG8gbGluZUJv
eCA9IHRleHRCb3goKS5saW5lQm94KCk7CiAgICAgYXV0byBzZWxlY3Rpb25Cb3R0b20gPSBMaW5l
U2VsZWN0aW9uOjpsb2dpY2FsQm90dG9tKCpsaW5lQm94KTsKICAgICBhdXRvIHNlbGVjdGlvblRv
cCA9IExpbmVTZWxlY3Rpb246OmxvZ2ljYWxUb3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCps
aW5lQm94KTsKICAgICAvLyBVc2Ugc2FtZSB5IHBvc2l0aW9uaW5nIGFuZCBoZWlnaHQgYXMgZm9y
IHNlbGVjdGlvbiwgc28gdGhhdCB3aGVuIHRoZSBzZWxlY3Rpb24gYW5kIHRoaXMgc3VicmFuZ2Ug
YXJlIG9uCiAgICAgLy8gdGhlIHNhbWUgd29yZCB0aGVyZSBhcmUgbm8gcGllY2VzIHN0aWNraW5n
IG91dC4KLSAgICBhdXRvIGRlbHRhWSA9IExheW91dFVuaXQgeyBtX3N0eWxlLmlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSAtIG1fbG9naWNhbFJlY3QubWF4WSgp
IDogbV9sb2dpY2FsUmVjdC55KCkgLSBzZWxlY3Rpb25Ub3AgfTsKKyAgICBhdXRvIGRlbHRhWSA9
IExheW91dFVuaXQgeyBtX3N0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/IHNlbGVj
dGlvbkJvdHRvbSAtIHRleHRCb3goKS5sb2dpY2FsQm90dG9tKCkgOiB0ZXh0Qm94KCkubG9naWNh
bFRvcCgpIC0gc2VsZWN0aW9uVG9wIH07CiAgICAgYXV0byBzZWxlY3Rpb25IZWlnaHQgPSBMYXlv
dXRVbml0IHsgc3RkOjptYXgoMC5mLCBzZWxlY3Rpb25Cb3R0b20gLSBzZWxlY3Rpb25Ub3ApIH07
Ci0gICAgYXV0byBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dFVuaXQobV9wYWlu
dFJlY3QueCgpKSwgTGF5b3V0VW5pdChtX3BhaW50UmVjdC55KCkgLSBkZWx0YVkpLCBMYXlvdXRV
bml0KG1fbG9naWNhbFJlY3Qud2lkdGgoKSksIHNlbGVjdGlvbkhlaWdodCB9OworICAgIGF1dG8g
c2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXRVbml0KG1fcGFpbnRSZWN0LngoKSks
IExheW91dFVuaXQobV9wYWludFJlY3QueSgpIC0gZGVsdGFZKSwgTGF5b3V0VW5pdCh0ZXh0Qm94
KCkubG9naWNhbFdpZHRoKCkpLCBzZWxlY3Rpb25IZWlnaHQgfTsKICAgICBmb250Q2FzY2FkZSgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KG1fcGFpbnRUZXh0UnVuLCBzZWxlY3Rpb25SZWN0
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHBhaW50
aW5nIGNvbWJpbmVkIHRleHQuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDk5Mz4uCkBAIC0zNzEsOCArMzUyLDcgQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxU
ZXh0Qm94UGF0aD46OnBhaW50QmFja2dyb3VuZCh1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQKICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0LCBjb2xvcik7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94
UGF0aD46OnBhaW50Rm9yZWdyb3VuZChjb25zdCBTdHlsZWRNYXJrZWRUZXh0JiBtYXJrZWRUZXh0
KQordm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kKGNvbnN0IFN0eWxlZE1hcmtl
ZFRleHQmIG1hcmtlZFRleHQpCiB7CiAgICAgaWYgKG1hcmtlZFRleHQuc3RhcnRPZmZzZXQgPj0g
bWFya2VkVGV4dC5lbmRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTM5Myw3ICszNzMsNyBA
QCB2b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRGb3JlZ3JvdW5kKGNvbnN0
IFN0eWxlZE1hcmtlZFRleHQmIG1hcmtlZAogICAgICAgICBpZiAobV9zdHlsZS5oYXNBcHBsZUNv
bG9yRmlsdGVyKCkpCiAgICAgICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3dDb2xvckZpbHRl
cigmbV9zdHlsZS5hcHBsZUNvbG9yRmlsdGVyKCkpOwogICAgIH0KLSAgICB0ZXh0UGFpbnRlci5z
ZXRFbXBoYXNpc01hcmsoZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIG1faXNDb21i
aW5lZFRleHQgPyAmZG93bmNhc3Q8UmVuZGVyQ29tYmluZVRleHQ+KG1fcmVuZGVyZXIpIDogbnVs
bHB0cik7CisgICAgdGV4dFBhaW50ZXIuc2V0RW1waGFzaXNNYXJrKGVtcGhhc2lzTWFyaywgZW1w
aGFzaXNNYXJrT2Zmc2V0LCB0ZXh0Qm94KCkuaXNDb21iaW5lZFRleHQoKSA/ICZkb3duY2FzdDxS
ZW5kZXJDb21iaW5lVGV4dD4obV9yZW5kZXJlcikgOiBudWxscHRyKTsKICAgICBpZiAoYXV0byog
ZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKICAgICAgICAgdGV4dFBhaW50ZXIuc2V0
U2hhZG93KGRlYnVnU2hhZG93KTsKIApAQCAtNDAyLDE5ICszODIsMTggQEAgdm9pZCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Rm9yZWdyb3VuZChjb25zdCBTdHlsZWRNYXJrZWRU
ZXh0JiBtYXJrZWQKICAgICAgICAgY29udGV4dC5zZXRBbHBoYShtYXJrZWRUZXh0LnN0eWxlLmFs
cGhhKTsKICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgbWFya2VkVGV4dC5zdHls
ZS50ZXh0U3R5bGVzKTsKIAotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lX3Y8VGV4dEJv
eFBhdGgsIElubGluZUl0ZXJhdG9yOjpCb3hMZWdhY3lQYXRoPikKLSAgICAgICAgdGV4dFBhaW50
ZXIuc2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKCp0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94
KCksIG1fcGFpbnRJbmZvLCBtX3BhaW50VGV4dFJ1bik7CisgICAgaWYgKGF1dG8qIGxlZ2FjeUlu
bGluZUJveCA9IHRleHRCb3goKS5sZWdhY3lJbmxpbmVCb3goKSkKKyAgICAgICAgdGV4dFBhaW50
ZXIuc2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKCpsZWdhY3lJbmxpbmVCb3gsIG1fcGFpbnRJ
bmZvLCBtX3BhaW50VGV4dFJ1bik7CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAgICAgZWxzZQotICAgICAgICB0ZXh0UGFpbnRlci5zZXRHbHlwaERpc3BsYXlMaXN0SWZO
ZWVkZWQodGV4dEJveCgpLmJveCgpLCBtX3BhaW50SW5mbywgbV9wYWludFRleHRSdW4pOworICAg
ICAgICB0ZXh0UGFpbnRlci5zZXRHbHlwaERpc3BsYXlMaXN0SWZOZWVkZWQoKnRleHRCb3goKS5p
bmxpbmVCb3goKSwgbV9wYWludEluZm8sIG1fcGFpbnRUZXh0UnVuKTsKICNlbmRpZgogCiAgICAg
Ly8gVGV4dFBhaW50ZXIgd2FudHMgdGhlIGJveCByZWN0YW5nbGUgYW5kIHRleHQgb3JpZ2luIG9m
IHRoZSBlbnRpcmUgbGluZSBib3guCiAgICAgdGV4dFBhaW50ZXIucGFpbnRSYW5nZShtX3BhaW50
VGV4dFJ1biwgbV9wYWludFJlY3QsIHRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KG1fcGFpbnRSZWN0
KSwgbWFya2VkVGV4dC5zdGFydE9mZnNldCwgbWFya2VkVGV4dC5lbmRPZmZzZXQpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLVRleHREZWNvcmF0aW9uUGFpbnRlciBUZXh0
Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OmNyZWF0ZURlY29yYXRpb25QYWludGVyKGNvbnN0IFN0
eWxlZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc25hcHBlZFNlbGVjdGlvblJlY3QpCitUZXh0RGVjb3JhdGlvblBh
aW50ZXIgVGV4dEJveFBhaW50ZXI6OmNyZWF0ZURlY29yYXRpb25QYWludGVyKGNvbnN0IFN0eWxl
ZE1hcmtlZFRleHQmIG1hcmtlZFRleHQsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcE91dFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc25hcHBlZFNlbGVjdGlvblJlY3QpCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gbV9wYWludEluZm8uY29udGV4dCgpOwogCkBAIC00MzcsNyArNDE2LDcg
QEAgVGV4dERlY29yYXRpb25QYWludGVyIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6Y3Jl
YXRlRGVjb3JhdGlvblBhaW50ZXIoY29uc3QKICAgICBhdXRvIHRleHREZWNvcmF0aW9ucyA9IG1f
c3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKICAgICB0ZXh0RGVjb3JhdGlvbnMuYWRk
KFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZSht
YXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzKSk7CiAgICAgVGV4dERlY29yYXRp
b25QYWludGVyIGRlY29yYXRpb25QYWludGVyIHsgY29udGV4dCwgdGV4dERlY29yYXRpb25zLCBt
X3JlbmRlcmVyLCBtX2lzRmlyc3RMaW5lLCBmb250LCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzIH07Ci0gICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0VGV4dEJveChtYWtlSXRl
cmF0b3IoKSk7CisgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0VGV4dEJveChtX3RleHRCb3gpOwog
ICAgIGRlY29yYXRpb25QYWludGVyLnNldFdpZHRoKHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRo
KCkpOwogICAgIGRlY29yYXRpb25QYWludGVyLnNldElzSG9yaXpvbnRhbCh0ZXh0Qm94KCkuaXNI
b3Jpem9udGFsKCkpOwogICAgIGlmIChtYXJrZWRUZXh0LnN0eWxlLnRleHRTaGFkb3cpIHsKQEAg
LTQ0OSwzMiArNDI4LDMxIEBAIFRleHREZWNvcmF0aW9uUGFpbnRlciBUZXh0Qm94UGFpbnRlcjxU
ZXh0Qm94UGF0aD46OmNyZWF0ZURlY29yYXRpb25QYWludGVyKGNvbnN0CiAgICAgcmV0dXJuIGRl
Y29yYXRpb25QYWludGVyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLXZv
aWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyhUZXh0RGVjb3JhdGlvblBhaW50ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBTdHlsZWRN
YXJrZWRUZXh0JiBtYXJrZWRUZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0KQordm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoVGV4
dERlY29yYXRpb25QYWludGVyJiBkZWNvcmF0aW9uUGFpbnRlciwgY29uc3QgU3R5bGVkTWFya2Vk
VGV4dCYgbWFya2VkVGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzbmFwcGVkU2VsZWN0aW9uUmVjdCkK
IHsKLSAgICBpZiAobV9pc0NvbWJpbmVkVGV4dCkKKyAgICBib29sIGlzQ29tYmluZWRUZXh0ID0g
dGV4dEJveCgpLmlzQ29tYmluZWRUZXh0KCk7CisgICAgaWYgKGlzQ29tYmluZWRUZXh0KQogICAg
ICAgICBtX3BhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0aW9uKG1fcGFpbnRSZWN0
LCBDbG9ja3dpc2UpKTsKIAogICAgIGRlY29yYXRpb25QYWludGVyLnBhaW50QmFja2dyb3VuZERl
Y29yYXRpb25zKG1fcGFpbnRUZXh0UnVuLnN1YlJ1bihtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0LCBt
YXJrZWRUZXh0LmVuZE9mZnNldCAtIG1hcmtlZFRleHQuc3RhcnRPZmZzZXQpLCB0ZXh0T3JpZ2lu
RnJvbVBhaW50UmVjdChzbmFwcGVkU2VsZWN0aW9uUmVjdCksIHNuYXBwZWRTZWxlY3Rpb25SZWN0
LmxvY2F0aW9uKCkpOwogCi0gICAgaWYgKG1faXNDb21iaW5lZFRleHQpCisgICAgaWYgKGlzQ29t
YmluZWRUZXh0KQogICAgICAgICBtX3BhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKHJvdGF0
aW9uKG1fcGFpbnRSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50
Rm9yZWdyb3VuZERlY29yYXRpb25zKFRleHREZWNvcmF0aW9uUGFpbnRlciYgZGVjb3JhdGlvblBh
aW50ZXIsIGNvbnN0IEZsb2F0UmVjdCYgc25hcHBlZFNlbGVjdGlvblJlY3QpCit2b2lkIFRleHRC
b3hQYWludGVyOjpwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhUZXh0RGVjb3JhdGlvblBhaW50
ZXImIGRlY29yYXRpb25QYWludGVyLCBjb25zdCBGbG9hdFJlY3QmIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0KQogewotICAgIGlmIChtX2lzQ29tYmluZWRUZXh0KQorICAgIGJvb2wgaXNDb21iaW5lZFRl
eHQgPSB0ZXh0Qm94KCkuaXNDb21iaW5lZFRleHQoKTsKKyAgICBpZiAoaXNDb21iaW5lZFRleHQp
CiAgICAgICAgIG1fcGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWlu
dFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgZGVjb3JhdGlvblBhaW50ZXIucGFpbnRGb3JlZ3Jv
dW5kRGVjb3JhdGlvbnMoc25hcHBlZFNlbGVjdGlvblJlY3QubG9jYXRpb24oKSk7CiAKLSAgICBp
ZiAobV9pc0NvbWJpbmVkVGV4dCkKKyAgICBpZiAoaXNDb21iaW5lZFRleHQpCiAgICAgICAgIG1f
cGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0ocm90YXRpb24obV9wYWludFJlY3QsIENvdW50
ZXJjbG9ja3dpc2UpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12b2lk
IFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZXMo
KQordm9pZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRDb21wb3NpdGlvblVuZGVybGluZXMoKQogewog
ICAgIGZvciAoYXV0byYgdW5kZXJsaW5lIDogbV9yZW5kZXJlci5mcmFtZSgpLmVkaXRvcigpLmN1
c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5lcygpKSB7CiAgICAgICAgIGlmICh1bmRlcmxpbmUuZW5k
T2Zmc2V0IDw9IHRleHRCb3goKS5zdGFydCgpKSB7CkBAIC01MDIsMjggKzQ4MCwyNiBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgbWlycm9yUlRMU2VnbWVudChmbG9hdCBsb2dpY2FsV2lkdGgsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uLAogICAgIHN0YXJ0ID0gbG9naWNhbFdpZHRoIC0gd2lkdGggLSBz
dGFydDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci1mbG9hdCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnRleHRQb3NpdGlvbigpCitzdGF0aWMgZmxvYXQgdGV4dFBv
c2l0aW9uKGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCiB7
CiAgICAgLy8gV2hlbiBjb21wdXRpbmcgdGhlIHdpZHRoIG9mIGEgdGV4dCBydW4sIFJlbmRlckJs
b2NrOjpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSgpIGRvZXNuJ3QgaW5j
bHVkZSB0aGUgYWN0dWFsIG9mZnNldAogICAgIC8vIGZyb20gdGhlIGNvbnRhaW5pbmcgYmxvY2sg
ZWRnZSBpbiBpdHMgbWVhc3VyZW1lbnQuIHRleHRQb3NpdGlvbigpIHNob3VsZCBiZSBjb25zaXN0
ZW50IHNvIHRoZSB0ZXh0IGFyZSByZW5kZXJlZCBpbiB0aGUgc2FtZSB3aWR0aC4KLSAgICBpZiAo
IW1fbG9naWNhbFJlY3QueCgpKQorICAgIGlmICghdGV4dEJveC0+bG9naWNhbExlZnQoKSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fbG9naWNhbFJlY3QueCgpIC0gbWFrZUl0ZXJh
dG9yKCktPmxpbmVCb3goKS0+Y29udGVudExvZ2ljYWxMZWZ0KCk7CisgICAgcmV0dXJuIHRleHRC
b3gtPmxvZ2ljYWxMZWZ0KCkgLSB0ZXh0Qm94LT5saW5lQm94KCktPmNvbnRlbnRMb2dpY2FsTGVm
dCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLXZvaWQgVGV4dEJveFBh
aW50ZXI8VGV4dEJveFBhdGg+OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKGNvbnN0IENvbXBv
c2l0aW9uVW5kZXJsaW5lJiB1bmRlcmxpbmUpCit2b2lkIFRleHRCb3hQYWludGVyOjpwYWludENv
bXBvc2l0aW9uVW5kZXJsaW5lKGNvbnN0IENvbXBvc2l0aW9uVW5kZXJsaW5lJiB1bmRlcmxpbmUp
CiB7CiAgICAgZmxvYXQgc3RhcnQgPSAwOyAvLyBzdGFydCBvZiBsaW5lIHRvIGRyYXcsIHJlbGF0
aXZlIHRvIHR4Ci0gICAgZmxvYXQgd2lkdGggPSBtX2xvZ2ljYWxSZWN0LndpZHRoKCk7IC8vIGhv
dyBtdWNoIGxpbmUgdG8gZHJhdworICAgIGZsb2F0IHdpZHRoID0gdGV4dEJveCgpLmxvZ2ljYWxX
aWR0aCgpOyAvLyBob3cgbXVjaCBsaW5lIHRvIGRyYXcKICAgICBib29sIHVzZVdob2xlV2lkdGgg
PSB0cnVlOwogICAgIHVuc2lnbmVkIHBhaW50U3RhcnQgPSB0ZXh0Qm94KCkuc3RhcnQoKTsKICAg
ICB1bnNpZ25lZCBwYWludEVuZCA9IHRleHRCb3goKS5lbmQoKTsKICAgICBpZiAocGFpbnRTdGFy
dCA8PSB1bmRlcmxpbmUuc3RhcnRPZmZzZXQpIHsKICAgICAgICAgcGFpbnRTdGFydCA9IHVuZGVy
bGluZS5zdGFydE9mZnNldDsKICAgICAgICAgdXNlV2hvbGVXaWR0aCA9IGZhbHNlOwotICAgICAg
ICBzdGFydCA9IG1fcmVuZGVyZXIud2lkdGgodGV4dEJveCgpLnN0YXJ0KCksIHBhaW50U3RhcnQg
LSB0ZXh0Qm94KCkuc3RhcnQoKSwgdGV4dFBvc2l0aW9uKCksIG1faXNGaXJzdExpbmUpOworICAg
ICAgICBzdGFydCA9IG1fcmVuZGVyZXIud2lkdGgodGV4dEJveCgpLnN0YXJ0KCksIHBhaW50U3Rh
cnQgLSB0ZXh0Qm94KCkuc3RhcnQoKSwgdGV4dFBvc2l0aW9uKG1fdGV4dEJveCksIG1faXNGaXJz
dExpbmUpOwogICAgIH0KICAgICBpZiAocGFpbnRFbmQgIT0gdW5kZXJsaW5lLmVuZE9mZnNldCkg
ewogICAgICAgICBwYWludEVuZCA9IHN0ZDo6bWluKHBhaW50RW5kLCAodW5zaWduZWQpdW5kZXJs
aW5lLmVuZE9mZnNldCk7CkBAIC01MzQsOCArNTEwLDggQEAgdm9pZCBUZXh0Qm94UGFpbnRlcjxU
ZXh0Qm94UGF0aD46OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoY29uc3QgQ29tcG9zaXRpb25V
bmQKICAgICAgICAgdXNlV2hvbGVXaWR0aCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAoIXVzZVdo
b2xlV2lkdGgpIHsKLSAgICAgICAgd2lkdGggPSBtX3JlbmRlcmVyLndpZHRoKHBhaW50U3RhcnQs
IHBhaW50RW5kIC0gcGFpbnRTdGFydCwgdGV4dFBvc2l0aW9uKCkgKyBzdGFydCwgbV9pc0ZpcnN0
TGluZSk7Ci0gICAgICAgIG1pcnJvclJUTFNlZ21lbnQobV9sb2dpY2FsUmVjdC53aWR0aCgpLCB0
ZXh0Qm94KCkuZGlyZWN0aW9uKCksIHN0YXJ0LCB3aWR0aCk7CisgICAgICAgIHdpZHRoID0gbV9y
ZW5kZXJlci53aWR0aChwYWludFN0YXJ0LCBwYWludEVuZCAtIHBhaW50U3RhcnQsIHRleHRQb3Np
dGlvbihtX3RleHRCb3gpICsgc3RhcnQsIG1faXNGaXJzdExpbmUpOworICAgICAgICBtaXJyb3JS
VExTZWdtZW50KHRleHRCb3goKS5sb2dpY2FsV2lkdGgoKSwgdGV4dEJveCgpLmRpcmVjdGlvbigp
LCBzdGFydCwgd2lkdGgpOwogICAgIH0KIAogICAgIC8vIFRoaWNrIG1hcmtlZCB0ZXh0IHVuZGVy
bGluZXMgYXJlIDJweCB0aGljayBhcyBsb25nIGFzIHRoZXJlIGlzIHJvb20gZm9yIHRoZSAycHgg
bGluZSB1bmRlciB0aGUgYmFzZWxpbmUuCkBAIC01NDMsNyArNTE5LDcgQEAgdm9pZCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoY29uc3QgQ29t
cG9zaXRpb25VbmQKICAgICAvLyBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgdGhlIHVuZGVy
bGluZSB3aWxsIHRvdWNoIG9yIG92ZXJsYXAgY2hhcmFjdGVycy4KICAgICBpbnQgbGluZVRoaWNr
bmVzcyA9IDE7CiAgICAgaW50IGJhc2VsaW5lID0gbV9zdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpLmFzY2VudCgpOwotICAgIGlmICh1bmRlcmxpbmUudGhpY2sgJiYgbV9sb2dpY2FsUmVjdC5o
ZWlnaHQoKSAtIGJhc2VsaW5lID49IDIpCisgICAgaWYgKHVuZGVybGluZS50aGljayAmJiB0ZXh0
Qm94KCkubG9naWNhbEhlaWdodCgpIC0gYmFzZWxpbmUgPj0gMikKICAgICAgICAgbGluZVRoaWNr
bmVzcyA9IDI7CiAKICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgc29tZSBzcGFjZSBiZXR3ZWVuIHVu
ZGVybGluZXMgb2Ygc3Vic2VxdWVudCBjbGF1c2VzLCBiZWNhdXNlIHNvbWUgaW5wdXQgbWV0aG9k
cyBkbyBub3QgdXNlIGRpZmZlcmVudCB1bmRlcmxpbmUgc3R5bGVzIGZvciB0aG9zZS4KQEAgLTU1
NywxOCArNTMzLDE3IEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+OjpwYWludENv
bXBvc2l0aW9uVW5kZXJsaW5lKGNvbnN0IENvbXBvc2l0aW9uVW5kCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gbV9wYWludEluZm8uY29udGV4dCgpOwogICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IodW5kZXJsaW5lQ29sb3IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNz
KGxpbmVUaGlja25lc3MpOwotICAgIGNvbnRleHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UmVjdCht
X3BhaW50UmVjdC54KCkgKyBzdGFydCwgbV9wYWludFJlY3QueSgpICsgbV9sb2dpY2FsUmVjdC5o
ZWlnaHQoKSAtIGxpbmVUaGlja25lc3MsIHdpZHRoLCBsaW5lVGhpY2tuZXNzKSwgbV9pc1ByaW50
aW5nKTsKKyAgICBjb250ZXh0LmRyYXdMaW5lRm9yVGV4dChGbG9hdFJlY3QobV9wYWludFJlY3Qu
eCgpICsgc3RhcnQsIG1fcGFpbnRSZWN0LnkoKSArIHRleHRCb3goKS5sb2dpY2FsSGVpZ2h0KCkg
LSBsaW5lVGhpY2tuZXNzLCB3aWR0aCwgbGluZVRoaWNrbmVzcyksIG1fZG9jdW1lbnQucHJpbnRp
bmcoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotdm9pZCBUZXh0Qm94
UGFpbnRlcjxUZXh0Qm94UGF0aD46OnBhaW50UGxhdGZvcm1Eb2N1bWVudE1hcmtlcnMoKQordm9p
ZCBUZXh0Qm94UGFpbnRlcjo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFya2VycygpCiB7CiAgICAg
YXV0byBtYXJrZWRUZXh0cyA9IE1hcmtlZFRleHQ6OmNvbGxlY3RGb3JEb2N1bWVudE1hcmtlcnMo
bV9yZW5kZXJlciwgbV9zZWxlY3RhYmxlUmFuZ2UsIE1hcmtlZFRleHQ6OlBhaW50UGhhc2U6OkRl
Y29yYXRpb24pOwogICAgIGZvciAoYXV0byYgbWFya2VkVGV4dCA6IE1hcmtlZFRleHQ6OnN1YmRp
dmlkZShtYXJrZWRUZXh0cywgTWFya2VkVGV4dDo6T3ZlcmxhcFN0cmF0ZWd5OjpGcm9udG1vc3Qp
KQogICAgICAgICBwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIobWFya2VkVGV4dCk7CiB9CiAK
LUZsb2F0UmVjdCBMZWdhY3lUZXh0Qm94UGFpbnRlcjo6Y2FsY3VsYXRlVW5pb25PZkFsbERvY3Vt
ZW50TWFya2VyQm91bmRzKGNvbnN0IExlZ2FjeUlubGluZVRleHRCb3gmIHRleHRCb3gpCitGbG9h
dFJlY3QgVGV4dEJveFBhaW50ZXI6OmNhbGN1bGF0ZVVuaW9uT2ZBbGxEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBMZWdhY3lJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94KQogewogICAgIC8vIFRoaXMg
bXVzdCBtYXRjaCBwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXJzKCkuCiAgICAgRmxvYXRSZWN0
IHJlc3VsdDsKQEAgLTU3OCwxNCArNTUzLDEzIEBAIEZsb2F0UmVjdCBMZWdhY3lUZXh0Qm94UGFp
bnRlcjo6Y2FsY3VsYXRlVW5pb25PZkFsbERvY3VtZW50TWFya2VyQm91bmRzKGNvbnN0IExlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+Ci12
b2lkIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6cGFpbnRQbGF0Zm9ybURvY3VtZW50TWFy
a2VyKGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQpCit2b2lkIFRleHRCb3hQYWludGVyOjpw
YWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCkK
IHsKICAgICAvLyBOZXZlciBwcmludCBzcGVsbGluZy9ncmFtbWFyIG1hcmtlcnMgKDUzMjc4ODcp
CiAgICAgaWYgKG1fZG9jdW1lbnQucHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBib3VuZHMgPSBjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJvdW5kcyhtYWtlSXRlcmF0b3Io
KSwgbWFya2VkVGV4dCk7CisgICAgYXV0byBib3VuZHMgPSBjYWxjdWxhdGVEb2N1bWVudE1hcmtl
ckJvdW5kcyhtX3RleHRCb3gsIG1hcmtlZFRleHQpOwogCiAgICAgYXV0byBsaW5lU3R5bGVGb3JN
YXJrZWRUZXh0VHlwZSA9IFsmXSgpIC0+IERvY3VtZW50TWFya2VyTGluZVN0eWxlIHsKICAgICAg
ICAgYm9vbCBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSA9IG1fcmVuZGVyZXIudXNlRGFya0FwcGVh
cmFuY2UoKTsKQEAgLTYxMywxMyArNTg3LDEyIEBAIHZvaWQgVGV4dEJveFBhaW50ZXI8VGV4dEJv
eFBhdGg+OjpwYWludFBsYXRmb3JtRG9jdW1lbnRNYXJrZXIoY29uc3QgTWFya2VkVGV4dCYKICAg
ICBtX3BhaW50SW5mby5jb250ZXh0KCkuZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihib3VuZHMs
IGxpbmVTdHlsZUZvck1hcmtlZFRleHRUeXBlKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
ZXh0Qm94UGF0aD4KLUZsb2F0UmVjdCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46OmNvbXB1
dGVQYWludFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQorRmxvYXRSZWN0IFRl
eHRCb3hQYWludGVyOjpjb21wdXRlUGFpbnRSZWN0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKIHsKICAgICBGbG9hdFBvaW50IGxvY2FsUGFpbnRPZmZzZXQocGFpbnRPZmZzZXQpOwog
CiAgICAgaWYgKG1fc2VsZWN0YWJsZVJhbmdlLnRydW5jYXRpb24pIHsKLSAgICAgICAgaWYgKG1f
cmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuZGlyZWN0aW9uKCkgIT0gdGV4dEJv
eCgpLmRpcmVjdGlvbigpKSB7CisgICAgICAgIGlmIChtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAhPSB0ZXh0Qm94KCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKSB7CiAgICAgICAgICAgICAvLyBNYWtlIHRoZSB2aXNpYmxlIGZy
YWdtZW50IG9mIHRleHQgaHVnIHRoZSBlZGdlIGNsb3Nlc3QgdG8gdGhlIHJlc3Qgb2YgdGhlIHJ1
biBieSBtb3ZpbmcgdGhlIG9yaWdpbgogICAgICAgICAgICAgLy8gYXQgd2hpY2ggd2Ugc3RhcnQg
ZHJhd2luZyB0ZXh0LgogICAgICAgICAgICAgLy8gZS5nLiBJbiB0aGUgY2FzZSBvZiBMVFIgdGV4
dCB0cnVuY2F0ZWQgaW4gYW4gUlRMIENvbnRleHQsIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGlzOgpA
QCAtNjI4LDI0ICs2MDEsMjEgQEAgRmxvYXRSZWN0IFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRo
Pjo6Y29tcHV0ZVBhaW50UmVjdChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICAgICAgICAg
IC8vIGZhcnRoZXIgdG8gdGhlIHJpZ2h0LgogICAgICAgICAgICAgLy8gTk9URTogV2ViS2l0J3Mg
YmVoYXZpb3IgZGlmZmVycyBmcm9tIHRoYXQgb2YgSUUgd2hpY2ggYXBwZWFycyB0byBqdXN0IG92
ZXJsYXkgdGhlIGVsbGlwc2lzIG9uIHRvcCBvZiB0aGUKICAgICAgICAgICAgIC8vIHRydW5jYXRl
ZCBzdHJpbmcgaS5lLiAgfEhlbGxvfENCQXwgLT4gfC4uLmxvfENCQXwKLSAgICAgICAgICAgIExh
eW91dFVuaXQgd2lkdGhPZlZpc2libGVUZXh0IHsgbV9yZW5kZXJlci53aWR0aCh0ZXh0Qm94KCku
c3RhcnQoKSwgKm1fc2VsZWN0YWJsZVJhbmdlLnRydW5jYXRpb24sIHRleHRQb3NpdGlvbigpLCBt
X2lzRmlyc3RMaW5lKSB9OwotICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aE9mSGlkZGVuVGV4
dCB7IG1fbG9naWNhbFJlY3Qud2lkdGgoKSAtIHdpZHRoT2ZWaXNpYmxlVGV4dCB9OwotICAgICAg
ICAgICAgTGF5b3V0U2l6ZSB0cnVuY2F0aW9uT2Zmc2V0KHRleHRCb3goKS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyB3aWR0aE9mSGlkZGVuVGV4dCA6IC13aWR0aE9mSGlkZGVu
VGV4dCwgMF9sdSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHdpZHRoT2ZWaXNpYmxlVGV4dCB7
IG1fcmVuZGVyZXIud2lkdGgodGV4dEJveCgpLnN0YXJ0KCksICptX3NlbGVjdGFibGVSYW5nZS50
cnVuY2F0aW9uLCB0ZXh0UG9zaXRpb24obV90ZXh0Qm94KSwgbV9pc0ZpcnN0TGluZSkgfTsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgd2lkdGhPZkhpZGRlblRleHQgeyB0ZXh0Qm94KCkubG9naWNh
bFdpZHRoKCkgLSB3aWR0aE9mVmlzaWJsZVRleHQgfTsKKyAgICAgICAgICAgIExheW91dFNpemUg
dHJ1bmNhdGlvbk9mZnNldCh0ZXh0Qm94KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gd2lk
dGhPZkhpZGRlblRleHQgOiAtd2lkdGhPZkhpZGRlblRleHQsIDBfbHUpOwogICAgICAgICAgICAg
bG9jYWxQYWludE9mZnNldC5tb3ZlKHRleHRCb3goKS5pc0hvcml6b250YWwoKSA/IHRydW5jYXRp
b25PZmZzZXQgOiB0cnVuY2F0aW9uT2Zmc2V0LnRyYW5zcG9zZWRTaXplKCkpOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgbG9jYWxQYWludE9mZnNldC5tb3ZlKDAsIG1fc3R5bGUuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IDAgOiAtbV9sb2dpY2FsUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICBh
dXRvIHZpc3VhbFJlY3QgPSB0ZXh0Qm94KCkudmlzdWFsUmVjdElnbm9yaW5nQmxvY2tEaXJlY3Rp
b24oKTsKLSAgICB0ZXh0Qm94KCkuY29udGFpbmluZ0Jsb2NrKCkuZmxpcEZvcldyaXRpbmdNb2Rl
KHZpc3VhbFJlY3QpOworICAgIGxvY2FsUGFpbnRPZmZzZXQubW92ZSgwLCBtX3N0eWxlLmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyAwIDogLXRleHRCb3goKS5sb2dpY2FsSGVpZ2h0KCkpOwog
Ci0gICAgYXV0byBib3hPcmlnaW4gPSB2aXN1YWxSZWN0LmxvY2F0aW9uKCk7CisgICAgYXV0byBi
b3hPcmlnaW4gPSB0ZXh0Qm94KCkudmlzdWFsUmVjdCh0ZXh0Qm94KCkubGluZUJveCgpLT5jb250
YWluaW5nQmxvY2soKS5sb2dpY2FsSGVpZ2h0KCkpLmxvY2F0aW9uKCk7CiAgICAgYm94T3JpZ2lu
Lm1vdmVCeShsb2NhbFBhaW50T2Zmc2V0KTsKLSAgICByZXR1cm4geyBib3hPcmlnaW4sIEZsb2F0
U2l6ZShtX2xvZ2ljYWxSZWN0LndpZHRoKCksIG1fbG9naWNhbFJlY3QuaGVpZ2h0KCkpIH07Cisg
ICAgcmV0dXJuIHsgYm94T3JpZ2luLCBGbG9hdFNpemUodGV4dEJveCgpLmxvZ2ljYWxXaWR0aCgp
LCB0ZXh0Qm94KCkubG9naWNhbEhlaWdodCgpKSB9OwogfQogCi1GbG9hdFJlY3QgY2FsY3VsYXRl
RG9jdW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRv
ciYgdGV4dEJveCwgY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCkKK0Zsb2F0UmVjdCBUZXh0
Qm94UGFpbnRlcjo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgSW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCwgY29uc3QgTWFya2VkVGV4dCYgbWFya2Vk
VGV4dCkKIHsKICAgICBhdXRvJiBmb250ID0gdGV4dEJveC0+Zm9udENhc2NhZGUoKTsKICAgICBh
dXRvIGFzY2VudCA9IGZvbnQubWV0cmljc09mUHJpbWFyeUZvbnQoKS5hc2NlbnQoKTsKQEAgLTY2
NCw4ICs2MzQsNyBAQCBGbG9hdFJlY3QgY2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoY29u
c3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdAogICAgIHJldHVybiBGbG9hdFJl
Y3QoMCwgeSwgdGV4dEJveC0+bG9naWNhbFdpZHRoKCksIGhlaWdodCk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFRleHRCb3hQYXRoPgotYm9vbCBUZXh0Qm94UGFpbnRlcjxUZXh0Qm94UGF0aD46
OmNvbXB1dGVIYXZlU2VsZWN0aW9uKCkgY29uc3QKK2Jvb2wgVGV4dEJveFBhaW50ZXI6OmNvbXB1
dGVIYXZlU2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9pc1ByaW50aW5nIHx8IG1fcGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6OlRleHRDbGlwKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02NzMsMjAgKzY0MiwxNSBAQCBib29sIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRo
Pjo6Y29tcHV0ZUhhdmVTZWxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmVyLnZp
ZXcoKS5zZWxlY3Rpb24oKS5oaWdobGlnaHRTdGF0ZUZvclRleHRCb3gobV9yZW5kZXJlciwgbV9z
ZWxlY3RhYmxlUmFuZ2UpICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmU7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFRleHRCb3hQYXRoPgotY29uc3QgRm9udENhc2NhZGUmIFRl
eHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6Zm9udENhc2NhZGUoKSBjb25zdAorY29uc3QgRm9u
dENhc2NhZGUmIFRleHRCb3hQYWludGVyOjpmb250Q2FzY2FkZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KG1faXNDb21iaW5lZFRleHQpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJDb21iaW5l
VGV4dD4obV9yZW5kZXJlcikudGV4dENvbWJpbmVGb250KCk7Ci0KLSAgICByZXR1cm4gbV90ZXh0
Qm94LnN0eWxlKCkuZm9udENhc2NhZGUoKTsKKyAgICByZXR1cm4gbV90ZXh0Qm94LT5mb250Q2Fz
Y2FkZSgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLUZsb2F0UG9pbnQg
VGV4dEJveFBhaW50ZXI8VGV4dEJveFBhdGg+Ojp0ZXh0T3JpZ2luRnJvbVBhaW50UmVjdChjb25z
dCBGbG9hdFJlY3QmIHBhaW50UmVjdCkgY29uc3QKK0Zsb2F0UG9pbnQgVGV4dEJveFBhaW50ZXI6
OnRleHRPcmlnaW5Gcm9tUGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcGFpbnRSZWN0KSBjb25z
dAogewogICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHBhaW50UmVjdC54KCksIHBhaW50UmVj
dC55KCkgKyBmb250Q2FzY2FkZSgpLm1ldHJpY3NPZlByaW1hcnlGb250KCkuYXNjZW50KCkgfTsK
LSAgICBpZiAobV9pc0NvbWJpbmVkVGV4dCkgeworICAgIGlmICh0ZXh0Qm94KCkuaXNDb21iaW5l
ZFRleHQoKSkgewogICAgICAgICBpZiAoYXV0byBuZXdPcmlnaW4gPSBkb3duY2FzdDxSZW5kZXJD
b21iaW5lVGV4dD4obV9yZW5kZXJlcikuY29tcHV0ZVRleHRPcmlnaW4ocGFpbnRSZWN0KSkKICAg
ICAgICAgICAgIHRleHRPcmlnaW4gPSBuZXdPcmlnaW4udmFsdWUoKTsKICAgICB9CkBAIC02OTcs
MjMgKzY2MSwxNSBAQCBGbG9hdFBvaW50IFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6dGV4
dE9yaWdpbkZyb21QYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JgogICAgIHJldHVybiB0ZXh0T3Jp
Z2luOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUZXh0Qm94UGF0aD4KLWNvbnN0IFNoYWRvd0Rh
dGEqIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6ZGVidWdUZXh0U2hhZG93KCkgY29uc3QK
K2NvbnN0IFNoYWRvd0RhdGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRTaGFkb3coKSBjb25z
dAogewogICAgIGlmICghbV9yZW5kZXJlci5zZXR0aW5ncygpLmxlZ2FjeUxpbmVMYXlvdXRWaXN1
YWxDb3ZlcmFnZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWVfdjxUZXh0Qm94UGF0aCwgSW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBhdGg+KQorICAgIGlm
ICghdGV4dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSNlbmRpZgogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4
dFNoYWRvdyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVu
Z3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgy
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1
aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwogICAgIHJldHVybiAmZGVidWdUZXh0U2hhZG93
LmdldCgpOwogfQogCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi10ZW1w
bGF0ZSBjbGFzcyBUZXh0Qm94UGFpbnRlcjxJbmxpbmVJdGVyYXRvcjo6Qm94TW9kZXJuUGF0aD47
Ci0jZW5kaWYKLXRlbXBsYXRlIGNsYXNzIFRleHRCb3hQYWludGVyPElubGluZUl0ZXJhdG9yOjpC
b3hMZWdhY3lQYXRoPjsKLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50
ZXIuaAppbmRleCAzNjY2ZmQ0NDU2MjMuLmZlNzA1NWY3NzU0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmgKQEAgLTQ1LDE3ICs0NSwyMiBAQCBzdHJ1Y3QgTWFy
a2VkVGV4dDsKIHN0cnVjdCBQYWludEluZm87CiBzdHJ1Y3QgU3R5bGVkTWFya2VkVGV4dDsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+CiBjbGFzcyBUZXh0Qm94UGFpbnRlciB7CiBw
dWJsaWM6Ci0gICAgVGV4dEJveFBhaW50ZXIoVGV4dEJveFBhdGgmJiwgUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KTsKKyAgICBUZXh0Qm94UGFpbnRlcihjb25zdCBM
ZWdhY3lJbmxpbmVUZXh0Qm94JiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KTsKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBUZXh0
Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudCYsIGNvbnN0
IElubGluZURpc3BsYXk6OkJveCYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCk7CisjZW5kaWYKKyAgICBUZXh0Qm94UGFpbnRlcihjb25zdCBJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yJiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KTsKKwogICAgIH5UZXh0Qm94UGFpbnRlcigpOwogCiAgICAgdm9pZCBwYWludCgpOwog
Ci1wcm90ZWN0ZWQ6Ci0gICAgYXV0byYgdGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEJv
eDsgfQotICAgIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgbWFrZUl0ZXJhdG9yKCkg
Y29uc3Q7CisgICAgc3RhdGljIEZsb2F0UmVjdCBjYWxjdWxhdGVVbmlvbk9mQWxsRG9jdW1lbnRN
YXJrZXJCb3VuZHMoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCYpOworCitwcml2YXRlOgorICAg
IGF1dG8mIHRleHRCb3goKSBjb25zdCB7IHJldHVybiAqbV90ZXh0Qm94OyB9CiAKICAgICB2b2lk
IHBhaW50QmFja2dyb3VuZCgpOwogICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kQW5kRGVjb3JhdGlv
bnMoKTsKQEAgLTczLDcgKzc4LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcGFpbnRDb21wb3Np
dGlvblVuZGVybGluZShjb25zdCBDb21wb3NpdGlvblVuZGVybGluZSYpOwogICAgIHZvaWQgcGFp
bnRQbGF0Zm9ybURvY3VtZW50TWFya2VyKGNvbnN0IE1hcmtlZFRleHQmKTsKIAotICAgIGZsb2F0
IHRleHRQb3NpdGlvbigpOworICAgIHN0YXRpYyBGbG9hdFJlY3QgY2FsY3VsYXRlRG9jdW1lbnRN
YXJrZXJCb3VuZHMoY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYsIGNvbnN0
IE1hcmtlZFRleHQmKTsKKwogICAgIEZsb2F0UmVjdCBjb21wdXRlUGFpbnRSZWN0KGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCk7CiAgICAgYm9vbCBjb21wdXRlSGF2ZVNlbGVjdGlvbigp
IGNvbnN0OwogICAgIE1hcmtlZFRleHQgY3JlYXRlTWFya2VkVGV4dEZyb21TZWxlY3Rpb25JbkJv
eCgpOwpAQCAtODIsMTcgKzg4LDE1IEBAIHByb3RlY3RlZDoKIAogICAgIGNvbnN0IFNoYWRvd0Rh
dGEqIGRlYnVnVGV4dFNoYWRvdygpIGNvbnN0OwogCi0gICAgY29uc3QgVGV4dEJveFBhdGggbV90
ZXh0Qm94OworICAgIGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IgbV90ZXh0
Qm94OwogICAgIGNvbnN0IFJlbmRlclRleHQmIG1fcmVuZGVyZXI7CiAgICAgY29uc3QgRG9jdW1l
bnQmIG1fZG9jdW1lbnQ7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7Ci0gICAgY29u
c3QgRmxvYXRSZWN0IG1fbG9naWNhbFJlY3Q7CiAgICAgY29uc3QgVGV4dFJ1biBtX3BhaW50VGV4
dFJ1bjsKICAgICBQYWludEluZm8mIG1fcGFpbnRJbmZvOwogICAgIGNvbnN0IFRleHRCb3hTZWxl
Y3RhYmxlUmFuZ2UgbV9zZWxlY3RhYmxlUmFuZ2U7CiAgICAgY29uc3QgRmxvYXRSZWN0IG1fcGFp
bnRSZWN0OwogICAgIGNvbnN0IGJvb2wgbV9pc0ZpcnN0TGluZTsKLSAgICBjb25zdCBib29sIG1f
aXNDb21iaW5lZFRleHQ7CiAgICAgY29uc3QgYm9vbCBtX2lzUHJpbnRpbmc7CiAgICAgY29uc3Qg
Ym9vbCBtX2hhdmVTZWxlY3Rpb247CiAgICAgY29uc3QgYm9vbCBtX2NvbnRhaW5zQ29tcG9zaXRp
b247CkBAIC0xMDAsMTggKzEwNCw0IEBAIHByb3RlY3RlZDoKICAgICBzdGQ6Om9wdGlvbmFsPGJv
b2w+IG1fZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZSB7IH07CiB9OwogCi1jbGFzcyBMZWdh
Y3lUZXh0Qm94UGFpbnRlciA6IHB1YmxpYyBUZXh0Qm94UGFpbnRlcjxJbmxpbmVJdGVyYXRvcjo6
Qm94TGVnYWN5UGF0aD4gewotcHVibGljOgotICAgIExlZ2FjeVRleHRCb3hQYWludGVyKGNvbnN0
IExlZ2FjeUlubGluZVRleHRCb3gmLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpOwotCi0gICAgc3RhdGljIEZsb2F0UmVjdCBjYWxjdWxhdGVVbmlvbk9mQWxsRG9j
dW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgTGVnYWN5SW5saW5lVGV4dEJveCYpOwotfTsKLQotI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQotY2xhc3MgTW9kZXJuVGV4dEJveFBh
aW50ZXIgOiBwdWJsaWMgVGV4dEJveFBhaW50ZXI8SW5saW5lSXRlcmF0b3I6OkJveE1vZGVyblBh
dGg+IHsKLXB1YmxpYzoKLSAgICBNb2Rlcm5UZXh0Qm94UGFpbnRlcihjb25zdCBMYXlvdXRJbnRl
Z3JhdGlvbjo6SW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkJveCYsIFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7Ci19OwotI2VuZGlmCi0KIH0K
LS0gCjIuMzIuMCAoQXBwbGUgR2l0LTEzMikKCg==
</data>
<flag name="commit-queue"
          id="488580"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>