<?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>229334</bug_id>
          
          <creation_ts>2021-08-20 06:23:35 -0700</creation_ts>
          <short_desc>Rename TextRun under graphics to GraphicsTextRun</short_desc>
          <delta_ts>2021-08-27 06:24:19 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1785810</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-20 06:23:35 -0700</bug_when>
    <thetext>We have many types of text runs and it bit confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785811</commentid>
    <comment_count>1</comment_count>
      <attachid>435979</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-20 06:29:20 -0700</bug_when>
    <thetext>Created attachment 435979
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785814</commentid>
    <comment_count>2</comment_count>
      <attachid>435980</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-20 06:38:34 -0700</bug_when>
    <thetext>Created attachment 435980
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785820</commentid>
    <comment_count>3</comment_count>
      <attachid>435983</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-20 07:43:53 -0700</bug_when>
    <thetext>Created attachment 435983
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785902</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-20 10:41:39 -0700</bug_when>
    <thetext>I’m not sure “Graphics” is the best prefix…

What are the other kinds of text runs you’re referring to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787999</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-27 06:24:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/82436139&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435979</attachid>
            <date>2021-08-20 06:29:20 -0700</date>
            <delta_ts>2021-08-20 06:38:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicstextrun-rename.patch</filename>
            <type>text/plain</type>
            <size>152441</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzE5ZGM2ODI5N2MuLjRkNmZiOWFkOTQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5NSBAQAorMjAyMS0wOC0yMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSdW4gdW5kZXIgcGxhdGZvcm0vZ3JhcGhpY3MgdG8g
R3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBoYXZlIHNldmVyYWwgdHlwZXMgb2YgdGV4dCBydW5zIG9uIGRpZmZlcmVudCBs
ZXZlbHMgYW5kIGl0IGlzIGdldHRpbmcgY29uZnVzaW5nLgorICAgICAgICBSZW5hbWUgdGhlIHBs
YXRmb3JtIHR5cGUgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxh
eS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojp3aWR0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmRy
YXdCaWRpVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3RWxlbWVudFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdM
YXlvdXRMYWJlbCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAqIGxh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUZXh0VXRpbDo6d2lkdGgpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JGb250QW5kVGV4dCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGgu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVy
blBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5Vc2VT
aW1wbGlmaWVkVGV4dE1lYXN1cmluZyk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UmlnaHRBbGlnbmVkVGV4dCk6CisgICAgICAg
ICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojppc05lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TGF5b3V0Ojpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdF
bXBoYXNpc01hcmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoT2ZUZXh0UmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNl
bGVjdGlvblJlY3RGb3JUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpvZmZzZXRGb3JQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yU2ltcGxl
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZv
ckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0
aW9uRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuSXRl
cmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vt
cGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Qmlk
aVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzVGV4dFJ1bjo6R3JhcGhpY3NUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzVGV4dFJ1bjo6c3ViUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzVGV4dFJ1bjo6c2V0VGFiU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTnVs
bEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1Ry
dW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaWR0aCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhD
YWNoZTo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldpZHRoSXRlcmF0b3I6OnJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
V2luOjpkcmF3VGV4dEF0UG9pbnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250V2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0lt
YWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09u
ZUxlZnRUb1JpZ2h0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaERpc3BsYXlMaXN0Q2FjaGU6OmdldCk6CisgICAgICAgICogcmVuZGVyaW5n
L0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUVsbGlwc2lz
Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxT
ZWxlY3Rpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNhbGN1
bGF0ZURvY3VtZW50TWFya2VyQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNv
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9u
Rm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVU
ZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJl
cGxhY2VtZW50VGV4dEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBh
aW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZv
ckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RN
YXJrZXI6OlRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmluZzo6b3BlcmF0b3IgY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpU
ZXh0UnVuV2l0aFVuZGVybHlpbmdTdHJpbmc6Om9wZXJhdG9yIGNvbnN0IFRleHRSdW4mIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAg
ICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bWF4V29yZEZyYWdtZW50V2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJhZ2VDaGFy
V2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAg
KiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRXaXRoU2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVy
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6c2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRl
eHRCb3g6Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0
aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBCYXNpYyBzdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDAzZTEyYTdhNzg3Mi4uN2M4N2Y3NWZjMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTkx
OCw2ICsxOTE4LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4
dHJhY3Rvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRS
dW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uY3BwCkBAIC0x
OTU4LDcgKzE5NTksNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N0
cmluZ1RydW5jYXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRl
eHRJdGVyYXRvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Ry
YWNrUHJpdmF0ZUJhc2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzgzYjI1Y2NmYjJiLi40MzUzZmZmMzAwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MTQsNyArMzUxNCw3IEBACiAJ
CUE4MTg3MjIwMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODE4NzIxNTA5NzdEM0MwMDA1ODI2
RDkgLyogQ2hpbGROb2RlTGlzdC5oICovOyB9OwogCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkg
LyogTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgyMzlFMDEwOUIz
Q0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4MjM5REZGMDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTgyNEI0NjUw
RTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MjRCNDY0MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTgyNEI0
NjUwRTJFRjJFQTAwODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3IC8q
IEdyYXBoaWNzVGV4dFJ1bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4MzNDN0NBMEEyQ0YwNkIwMEQ1NzY2NCAvKiBTVkdOYW1lcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFODA5RDE1
MDhEMDAwRTYxRDcgLyogU1ZHTmFtZXMuY3BwICovOyB9OwogCQlBODMzQzdDQzBBMkNGMDc0MDBE
NTc2NjQgLyogWExpbmtOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5jcHAg
Ki87IH07CiAJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODMzQzgwQTBBMkNGMjU2
MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovOyB9OwpAQCAtNzYyMiw3ICs3NjIyLDcgQEAKIAkJ
MzcyQzAwQzMxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCb3VuZGFyaWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcyQzAwRDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRPcHRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBI
eXBoZW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIeXBoZW5hdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJF
RkMgLyogVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0UnVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc2RENDRTAxM0I0Rjk2
NjAwMkVCRUZDIC8qIEdyYXBoaWNzVGV4dFJ1bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcmFwaGljc1RleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzNzcyQjA5NTE2NTM1ODU2MDAwQTQ5Q0EgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9wdXBPcGVuaW5nT2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5
IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlSW1hZ2VDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5OSw3ICsxMjk5OSw3IEBACiAJCUE4MTg3
MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDaGlsZE5vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTgyMzlERkUwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODIzOURGRjA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2lu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UnVuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4MjRCNDY0MEUyRUYyRUEwMDgxQTdCNyAvKiBHcmFwaGlj
c1RleHRSdW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NUZXh0
UnVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MzNDN0Y2MEEyQ0YxRDgwMEQ1
NzY2NCAvKiB4bWxhdHRycy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0geG1sYXR0cnMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MzNDODBBMEEyQ0YyNTYwMEQ1NzY2NCAv
KiBYTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWE1M
TmFtZXMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9YTUxOYW1lcy5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUE4MzNDODBCMEEyQ0YyNTYwMEQ1
NzY2NCAvKiBYTUxOYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWE1M
TmFtZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWE1MTmFtZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTI2NjA5LDYgKzI2NjA5LDggQEAKIAkJ
CQkxQUM2OTU5MjE2MUExRTUzMDAzNzMyQ0IgLyogR3JhcGhpY3NMYXllckZhY3RvcnkuaCAqLywK
IAkJCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
ICovLAogCQkJCTBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRl
ci5oICovLAorCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBHcmFwaGljc1RleHRSdW4u
Y3BwICovLAorCQkJCUE4MjRCNDY0MEUyRUYyRUEwMDgxQTdCNyAvKiBHcmFwaGljc1RleHRSdW4u
aCAqLywKIAkJCQlCMkEwMTU5NDBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5jcHAg
Ki8sCiAJCQkJQjJBMDE1OTUwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdyYXBoaWNzVHlwZXMuaCAqLywK
IAkJCQk3N0ExN0E3QTEyRjI4OTBCMDA0RTAyRjYgLyogR3JhcGhpY3NUeXBlc0dMLmggKi8sCkBA
IC0yNjczMSw4ICsyNjczMyw2IEBACiAJCQkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1
cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAgKi8sCiAJCQkJMDg3NTU4QzQxM0I0QTU3
RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oICovLAogCQkJCTNC
QjZCODBGMjJBN0QzMTEwMDNBMkE2OSAvKiBUYWJTaXplLmggKi8sCi0JCQkJMzc2RENDRTAxM0I0
Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovLAotCQkJCUE4MjRCNDY0MEUyRUYyRUEwMDgx
QTdCNyAvKiBUZXh0UnVuLmggKi8sCiAJCQkJQ0QxRTczNDYxNjdCQzc4RTAwOUE4ODVEIC8qIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCAqLywKIAkJCQlDREQxRTUyNTE2N0JBNTY0MDBDRTgy
MEIgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCAqLywKIAkJCQkxQUY4OUE0MTE1MThGREVB
MDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggKi8sCkBAIC0zNTAxMCw3ICszNTAxMCw3IEBACiAJ
CQkJQ0UyMTIxNTgyNDBEQkVCOTAwNkVENDQzIC8qIFRleHRQbGFjZWhvbGRlckVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUY0OEI3RDUzMjVDMzQxRTYwMDlFNzVERCAvKiBUZXh0UmVjb2du
aXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OEY2MDgyNDVFNTkwMDFFOUFC
QyAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBODI0QjQ2NTBF
MkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTgyNEI0NjUw
RTJFRjJFQTAwODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTc1OUU5NDAxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc1OUU5NDMxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFja0N1ZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94UGFpbnRlci5jcHAKaW5kZXggMWY2NWJiZmMwM2ExLi5mMjM1MWE4ZmFkZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94UGFpbnRlci5jcHAKQEAgLTQw
LDkgKzQwLDkgQEAKICNpbmNsdWRlICJEaXNwbGF5VGV4dEJveC5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlUcmVlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50
LmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgRGlzcGxheSB7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQm94UGFpbnRlcjo6cGFpbnRCb3hD
b250ZW50KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29udGV4CiAg
ICAgICAgIGF1dG8gYmFzZWxpbmUgPSB0ZXh0UmVjdC55KCkgKyBzdHlsZS5mb250TWV0cmljcygp
LmFzY2VudCgpOwogICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHRleHRCb3guZXhwYW5zaW9uKCk7
CiAKLSAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRCb3gudGV4dCgpLmNvbnRl
bnQoKS5zdWJzdHJpbmcodGV4dEJveC50ZXh0KCkuc3RhcnQoKSwgdGV4dEJveC50ZXh0KCkubGVu
Z3RoKCkpLCB0ZXh0UmVjdC54KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBh
bnNpb24uYmVoYXZpb3IgfTsKKyAgICAgICAgYXV0byB0ZXh0UnVuID0gR3JhcGhpY3NUZXh0UnVu
IHsgdGV4dEJveC50ZXh0KCkuY29udGVudCgpLnN1YnN0cmluZyh0ZXh0Qm94LnRleHQoKS5zdGFy
dCgpLCB0ZXh0Qm94LnRleHQoKS5sZW5ndGgoKSksIHRleHRSZWN0LngoKSwgZXhwYW5zaW9uLmhv
cml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICB0ZXh0UnVu
LnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkp
OwogICAgICAgICBwYWludGluZ0NvbnRleHQuY29udGV4dC5kcmF3VGV4dChzdHlsZS5mb250Q2Fz
Y2FkZSgpLCB0ZXh0UnVuLCB7IHRleHRSZWN0LngoKSwgYmFzZWxpbmUgfSk7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDRkNTk1MGUwY2MyYi4uYzEyOGM1N2ZjMmZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC01Niw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlRm9yRm9udFJhdy5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMjA3LDcgKzIwNyw3IEBAIFJlZjxU
ZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGU7CiAgICAg
YXV0byBkaXJlY3Rpb24gPSB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24sICZjb21w
dXRlZFN0eWxlKTsKICAgICBib29sIG92ZXJyaWRlID0gY29tcHV0ZWRTdHlsZSAmJiBpc092ZXJy
aWRlKGNvbXB1dGVkU3R5bGUtPnVuaWNvZGVCaWRpKCkpOwotICAgIFRleHRSdW4gdGV4dFJ1bihu
b3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBvdmVy
cmlkZSwgdHJ1ZSk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRleHQs
IDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHRydWUpOwog
ICAgIHJldHVybiBtZWFzdXJlVGV4dEludGVybmFsKHRleHRSdW4pOwogfQogCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG8KICAgICBjb25zdCBSZW5kZXJTdHlsZSog
Y29tcHV0ZWRTdHlsZTsKICAgICBhdXRvIGRpcmVjdGlvbiA9IHRvVGV4dERpcmVjdGlvbihzdGF0
ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21w
dXRlZFN0eWxlICYmIGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGkoKSk7Ci0g
ICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5z
aW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4
dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9u
LCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgZHJhd1RleHRVbmNoZWNrZWQodGV4dFJ1biwgeCwgeSwg
ZmlsbCwgbWF4V2lkdGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDgyNmIzOGM5
YzdiYy4uNDUwYzRmZDQwN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtNTAsNiArNTAs
NyBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVwbGF5ZXIuaCIKICNpbmNsdWRlICJGbG9hdFF1
YWQuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5o
IgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTY4LDcgKzY5LDYgQEAK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtNDE0LDEyICs0MTQsMTIgQEAg
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Rm9udFByb3h5Ojpmb250RGVzY3IKICAgICByZXR1cm4gbV9mb250LmZvbnREZXNjcmlwdGlv
bigpOwogfQogCi1mbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6
OndpZHRoKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIEdseXBoT3ZlcmZsb3cqIG92ZXJmbG93KSBj
b25zdAorZmxvYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojp3aWR0
aChjb25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIEdseXBoT3ZlcmZsb3cqIG92ZXJmbG93
KSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnQud2lkdGgodGV4dFJ1biwgMCwgb3ZlcmZsb3cp
OwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6ZHJh
d0JpZGlUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFj
dGlvbiBhY3Rpb24pIGNvbnN0Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZv
bnRQcm94eTo6ZHJhd0JpZGlUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2FzY2FkZTo6
Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGFjdGlvbikgY29uc3QKIHsKICAgICBjb250ZXh0LmRy
YXdCaWRpVGV4dChtX2ZvbnQsIHJ1biwgcG9pbnQsIGFjdGlvbik7CiB9CkBAIC0yNDE2LDExICsy
NDE2LDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd1RleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91YmxlCiAKICAgICBTdHJpbmcgbm9ybWFsaXpl
ZFRleHQgPSBub3JtYWxpemVTcGFjZXModGV4dCk7CiAgICAgYXV0byBkaXJlY3Rpb24gPSAoc3Rh
dGUoKS5kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwpID8gVGV4dERpcmVjdGlvbjo6UlRMIDog
VGV4dERpcmVjdGlvbjo6TFRSOwotICAgIFRleHRSdW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwg
MCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBmYWxzZSwgdHJ1ZSk7CisgICAg
R3JhcGhpY3NUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRleHQsIDAsIDAsIEFsbG93UmlnaHRF
eHBhbnNpb24sIGRpcmVjdGlvbiwgZmFsc2UsIHRydWUpOwogICAgIGRyYXdUZXh0VW5jaGVja2Vk
KHRleHRSdW4sIHgsIHksIGZpbGwsIG1heFdpZHRoKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVu
LCBkb3VibGUgeCwgZG91YmxlIHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1h
eFdpZHRoKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hl
Y2tlZChjb25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGRvdWJsZSB4LCBkb3VibGUgeSwg
Ym9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGgpCiB7CiAgICAgYXV0byog
YyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgZm9udFByb3h5ID0gKnRoaXMtPmZvbnRQ
cm94eSgpOwpAQCAtMjU0MywxMSArMjU0MywxMSBAQCBSZWY8VGV4dE1ldHJpY3M+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6Om1lYXN1cmVUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJgog
ewogICAgIFN0cmluZyBub3JtYWxpemVkVGV4dCA9IG5vcm1hbGl6ZVNwYWNlcyh0ZXh0KTsKICAg
ICBhdXRvIGRpcmVjdGlvbiA9IChzdGF0ZSgpLmRpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlJ0bCkg
PyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7Ci0gICAgVGV4dFJ1biB0
ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBkaXJlY3Rp
b24sIGZhbHNlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihub3JtYWxpemVk
VGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIG1lYXN1cmVUZXh0SW50ZXJuYWwodGV4dFJ1bik7CiB9CiAKLVJlZjxUZXh0
TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRleHRJbnRlcm5h
bChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuKQorUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYgdGV4dFJ1bikKIHsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1ldHJpY3MgPSBUZXh0TWV0cmlj
czo6Y3JlYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAppbmRleCBhMTQzMTM4OTk0NGEuLmQ0YmEx
OGM5ZDU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaApAQCAtMjM2LDggKzIzNiw4IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBpbml0aWFsaXplKEZvbnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNjYWRl
Jik7CiAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcygpIGNvbnN0OwogICAg
ICAgICBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24oKSBjb25z
dDsKLSAgICAgICAgZmxvYXQgd2lkdGgoY29uc3QgVGV4dFJ1biYsIEdseXBoT3ZlcmZsb3cqID0g
MCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbikgY29uc3Q7CisgICAgICAgIGZsb2F0IHdpZHRoKGNvbnN0IEdyYXBoaWNz
VGV4dFJ1biYsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CisgICAgICAgIHZvaWQgZHJhd0Jp
ZGlUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsK
IAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgaXNQb3B1bGF0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2ZvbnQuZm9udHMoKTsgfQpAQCAtMzA0LDkgKzMwNCw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgZHJhd1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBkb3VibGUgeCwgZG91Ymxl
IHksIGJvb2wgZmlsbCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoID0gc3RkOjpudWxs
b3B0KTsKICAgICBib29sIGNhbkRyYXdUZXh0KGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwotICAgIHZv
aWQgZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYsIGRvdWJsZSB4LCBkb3VibGUgeSwg
Ym9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQp
OworICAgIHZvaWQgZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgZG91
YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7CiAKLSAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0SW50
ZXJuYWwoY29uc3QgVGV4dFJ1biYpOworICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJ
bnRlcm5hbChjb25zdCBHcmFwaGljc1RleHRSdW4mKTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1l
YXN1cmVUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogICAgIGJvb2wgdXNlc0NT
U0NvbXBhdGliaWxpdHlQYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXNDU1NDb21wYXRp
YmlsaXR5UGFyc2VNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKaW5kZXggN2RmMzVjZGVlZWU3Li5mMjM1ZTJlODhhYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTg2OSw3ICs4Njks
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogCiAgICAgICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciB2ZXJ0aWNhbExhYmVsU3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh6b29tKHgpICsgMC41Ziwgc2Nyb2xsWSk7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKFN0cmluZzo6bnVt
YmVyKHgpKSwgeyAyLCBkcmF3VG9wRWRnZSA/IHJ1bGVyTGFiZWxTaXplIDogcnVsZXJMYWJlbFNp
emUgLSBydWxlclNpemUgKyBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkgLSAxLjBmIH0pOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NUZXh0UnVuKFN0
cmluZzo6bnVtYmVyKHgpKSwgeyAyLCBkcmF3VG9wRWRnZSA/IHJ1bGVyTGFiZWxTaXplIDogcnVs
ZXJMYWJlbFNpemUgLSBydWxlclNpemUgKyBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkgLSAx
LjBmIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTkwNyw3ICs5MDcsNyBAQCB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgaG9yaXpvbnRhbExhYmVsU3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShzY3JvbGxYLCB6b29tKHkpICsgMC41Zik7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5yb3RhdGUoZHJhd0xlZnRFZGdlID8gLXBpT3ZlclR3b0Zsb2F0IDog
cGlPdmVyVHdvRmxvYXQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
VGV4dFJ1bihTdHJpbmc6Om51bWJlcih5KSksIHsgMiwgZHJhd0xlZnRFZGdlID8gcnVsZXJMYWJl
bFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSB9KTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LmRyYXdUZXh0KGZvbnQsIEdyYXBoaWNzVGV4dFJ1bihTdHJpbmc6Om51bWJlcih5KSks
IHsgMiwgZHJhd0xlZnRFZGdlID8gcnVsZXJMYWJlbFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1
bGVyU2l6ZSB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTkyMiw3ICs5
MjIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybAogICAgICAgICBmb250LnVwZGF0ZShudWxs
cHRyKTsKIAogICAgICAgICBhdXRvIHZpZXdwb3J0UmVjdCA9IHBhZ2VWaWV3LT52aXN1YWxWaWV3
cG9ydFJlY3QoKTsKLSAgICAgICAgVGV4dFJ1biB2aWV3cG9ydFRleHRSdW4obWFrZVN0cmluZyh2
aWV3cG9ydFJlY3Qud2lkdGgoKSAvIHBhZ2Vab29tRmFjdG9yLCAicHgiLCAnICcsIG11bHRpcGxp
Y2F0aW9uU2lnbiwgJyAnLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCkgLyBwYWdlWm9vbUZhY3Rvciwg
InB4IikpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdmlld3BvcnRUZXh0UnVuKG1ha2VTdHJp
bmcodmlld3BvcnRSZWN0LndpZHRoKCkgLyBwYWdlWm9vbUZhY3RvciwgInB4IiwgJyAnLCBtdWx0
aXBsaWNhdGlvblNpZ24sICcgJywgdmlld3BvcnRSZWN0LmhlaWdodCgpIC8gcGFnZVpvb21GYWN0
b3IsICJweCIpKTsKIAogICAgICAgICBjb25zdCBmbG9hdCBtYXJnaW4gPSA0OwogICAgICAgICBj
b25zdCBmbG9hdCBwYWRkaW5nID0gMjsKQEAgLTEwNTAsOCArMTA1MCw4IEBAIFBhdGggSW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5v
ZGUmIG5vZGUsIGNvCiAgICAgICAgIGF1dG8gZmlyc3RMaW5lID0gbWFrZVN0cmluZyhlbGVtZW50
VGFnTmFtZSwgZWxlbWVudElEVmFsdWUsIGVsZW1lbnRDbGFzc1ZhbHVlLCBlbGVtZW50UHNldWRv
VHlwZSwgJyAnLCBlbGVtZW50V2lkdGgsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25TaWduLCAn
ICcsIGVsZW1lbnRIZWlnaHQsICJweCIpOwogICAgICAgICBhdXRvIHNlY29uZExpbmUgPSBtYWtl
U3RyaW5nKCJSb2xlICIsIGVsZW1lbnRSb2xlKTsKIAotICAgICAgICBmbG9hdCBmaXJzdExpbmVX
aWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihmaXJzdExpbmUpKTsKLSAgICAgICAgZmxvYXQgc2Vj
b25kTGluZVdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKHNlY29uZExpbmUpKTsKKyAgICAgICAg
ZmxvYXQgZmlyc3RMaW5lV2lkdGggPSBmb250LndpZHRoKEdyYXBoaWNzVGV4dFJ1bihmaXJzdExp
bmUpKTsKKyAgICAgICAgZmxvYXQgc2Vjb25kTGluZVdpZHRoID0gZm9udC53aWR0aChHcmFwaGlj
c1RleHRSdW4oc2Vjb25kTGluZSkpOwogCiAgICAgICAgIGVsZW1lbnREYXRhV2lkdGggPSBzdGQ6
OmZtYXgoZmlyc3RMaW5lV2lkdGgsIHNlY29uZExpbmVXaWR0aCk7CiAgICAgICAgIGlmIChoYXNT
ZWNvbmRMaW5lKQpAQCAtMTE0Miw3ICsxMTQyLDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5Ojpk
cmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSYgbm9kZSwgY28K
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
cik7Ci0gICAgICAgIHRleHRQb3NpdGlvbiArPSBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRS
dW4odGV4dCksIHRleHRQb3NpdGlvbik7CisgICAgICAgIHRleHRQb3NpdGlvbiArPSBjb250ZXh0
LmRyYXdUZXh0KGZvbnQsIEdyYXBoaWNzVGV4dFJ1bih0ZXh0KSwgdGV4dFBvc2l0aW9uKTsKICAg
ICB9OwogCiAgICAgZHJhd1RleHQoZWxlbWVudFRhZ05hbWUsIHsgMTM2LCAxOCwgMTI4IH0pOyAv
LyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCkBAIC0xMzQ5LDcg
KzEzNDksNyBAQCBzdGF0aWMgRmxvYXRTaXplIGV4cGVjdGVkU2l6ZUZvckxheW91dExhYmVsKFN0
cmluZyBsYWJlbCwgSW5zcGVjdG9yT3ZlcmxheTo6TGFiZQogICAgIGF1dG8gZm9udCA9IEluc3Bl
Y3Rvck92ZXJsYXk6OmZvbnRGb3JMYXlvdXRMYWJlbCgpOwogCiAgICAgZmxvYXQgdGV4dEhlaWdo
dCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwotICAgIGZsb2F0IHRleHRXaWR0
aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoR3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1heGltdW1XaWR0aCAm
JiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5nICogMikgPiBtYXhpbXVtV2lkdGgpCiAg
ICAgICAgIHRleHRXaWR0aCA9IG1heGltdW1XaWR0aDsKIApAQCAtMTM3OSwxMyArMTM3OSwxMyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFN0cmluZyBsYWJlbCwgRgogICAgIGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKICAgICBmbG9hdCB0ZXh0RGVzY2VudCA9IGZvbnQu
Zm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKICAgICAKLSAgICBmbG9hdCB0ZXh0V2lkdGgg
PSBmb250LndpZHRoKFRleHRSdW4obGFiZWwpKTsKKyAgICBmbG9hdCB0ZXh0V2lkdGggPSBmb250
LndpZHRoKEdyYXBoaWNzVGV4dFJ1bihsYWJlbCkpOwogICAgIGlmIChtYXhpbXVtV2lkdGggJiYg
dGV4dFdpZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CiAg
ICAgICAgIGxhYmVsLmFwcGVuZCgiLi4uIl9zKTsKICAgICAgICAgd2hpbGUgKHRleHRXaWR0aCAr
IChsYXlvdXRMYWJlbFBhZGRpbmcgKiAyKSA+IG1heGltdW1XaWR0aCAmJiBsYWJlbC5sZW5ndGgo
KSA+PSA0KSB7CiAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGZvdXJ0aCBmcm9tIGxhc3QgY2hh
cmFjdGVyICh0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgZWxsaXBzaXMpIGFuZCByZW1lYXN1cmUu
CiAgICAgICAgICAgICBsYWJlbC5yZW1vdmUobGFiZWwubGVuZ3RoKCkgLSA0KTsKLSAgICAgICAg
ICAgIHRleHRXaWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOworICAgICAgICAgICAg
dGV4dFdpZHRoID0gZm9udC53aWR0aChHcmFwaGljc1RleHRSdW4obGFiZWwpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpk
cmF3TGF5b3V0TGFiZWwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTdHJpbmcgbGFiZWwsIEYK
ICAgICBjb250ZXh0LnN0cm9rZVBhdGgobGFiZWxQYXRoKTsKICAgICAKICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgVGV4
dFJ1bihsYWJlbCksIHRleHRQb3NpdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBH
cmFwaGljc1RleHRSdW4obGFiZWwpLCB0ZXh0UG9zaXRpb24pOwogfQogCiB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdHcmlkT3ZlcmxheShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6R3JpZEhpZ2hsaWdodE92ZXJsYXkmIGdyaWRP
dmVybGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCmlu
ZGV4IGExNjEyYzVkM2JkOS4uNzQ0ZmE4ZjA2YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgc3RkOjpvcHRpb25h
bDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6
OnRyeUJyZWFraW4KIAogICAgICAgICAgICAgdW5zaWduZWQgbGVmdFNpZGVMZW5ndGggPSBydW5M
ZW5ndGg7CiAgICAgICAgICAgICBhdXRvJiBmb250Q2FzY2FkZSA9IHN0eWxlLmZvbnRDYXNjYWRl
KCk7Ci0gICAgICAgICAgICBhdXRvIGh5cGhlbldpZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IGZv
bnRDYXNjYWRlLndpZHRoKFRleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5n
KCkgfSB9KSB9OworICAgICAgICAgICAgYXV0byBoeXBoZW5XaWR0aCA9IElubGluZUxheW91dFVu
aXQgeyBmb250Q2FzY2FkZS53aWR0aChHcmFwaGljc1RleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5
bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSB9OwogICAgICAgICAgICAgaWYgKCFhdmFpbGFibGVTcGFj
ZUlzSW5maW5pdGUpIHsKICAgICAgICAgICAgICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoRXhjbHVk
aW5nSHlwaGVuID0gKmF2YWlsYWJsZVdpZHRoIC0gaHlwaGVuV2lkdGg7CiAgICAgICAgICAgICAg
ICAgaWYgKGF2YWlsYWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuIDw9IDAgfHwgIWVub3VnaFdpZHRo
Rm9ySHlwaGVuYXRpb24oYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4sIGZvbnRDYXNjYWRl
LnBpeGVsU2l6ZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXggZjBiZjMxZDA5
N2MzLi40ZjcwYTBjNWEyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCkBAIC0yODQs
NyArMjg0LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0
SXRlbSYgaW5saW5lVGV4dEl0ZW0sIElubGluZUxheW91dFUKICAgICBtX3RyaW1tYWJsZVRyYWls
aW5nQ29udGVudC5yZXNldCgpOwogICAgIGlmICghZm9ybWF0dGluZ0NvbnRleHQoKS5sYXlvdXRT
dGF0ZSgpLnNob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZygpICYmICFpbmxpbmVUZXh0
SXRlbS5pc1doaXRlc3BhY2UoKSAmJiBzdHlsZS5sZXR0ZXJTcGFjaW5nKCkgPiAwKQogICAgICAg
ICBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5hZGRQYXJ0aWFsbHlUcmltbWFibGVDb250ZW50
KG1fcnVucy5zaXplKCkgLSAxLCBzdHlsZS5sZXR0ZXJTcGFjaW5nKCkpOwotICAgIG1fdHJhaWxp
bmdTb2Z0SHlwaGVuV2lkdGggPSBpbmxpbmVUZXh0SXRlbS5oYXNUcmFpbGluZ1NvZnRIeXBoZW4o
KSA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdHlsZS5mb250Q2FzY2FkZSgpLndpZHRoKFRleHRSdW4g
eyBTdHJpbmdWaWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSkgOiBzdGQ6Om51bGxvcHQ7
CisgICAgbV90cmFpbGluZ1NvZnRIeXBoZW5XaWR0aCA9IGlubGluZVRleHRJdGVtLmhhc1RyYWls
aW5nU29mdEh5cGhlbigpID8gc3RkOjptYWtlX29wdGlvbmFsKHN0eWxlLmZvbnRDYXNjYWRlKCku
d2lkdGgoR3JhcGhpY3NUZXh0UnVuIHsgU3RyaW5nVmlldyB7IHN0eWxlLmh5cGhlblN0cmluZygp
IH0gfSkpIDogc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxhY2Vk
SW5saW5lTGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0
VW5pdCBtYXJnaW5Cb3hMb2dpY2FsV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwu
Y3BwCmluZGV4IDdlNTc1YmNlNzI4NS4uZjBiZjg0Yjg0ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90
ZXh0L1RleHRVdGlsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbmxpbmVMYXlvdXRVbml0IFRleHRV
dGlsOjp3aWR0aChjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBm
cgogICAgICAgICB3aWR0aCA9IGZvbnQud2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcodGV4
dCkuc3Vic3RyaW5nKGZyb20sIHRvIC0gZnJvbSkpOwogICAgIGVsc2UgewogICAgICAgICBhdXRv
IHRhYldpZHRoID0gc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkgPyBUYWJTaXplKDApIDogc3R5
bGUudGFiU2l6ZSgpOwotICAgICAgICBXZWJDb3JlOjpUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHRl
eHQpLnN1YnN0cmluZyhmcm9tLCB0byAtIGZyb20pLCBjb250ZW50TG9naWNhbExlZnQpOworICAg
ICAgICBXZWJDb3JlOjpHcmFwaGljc1RleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3Ry
aW5nKGZyb20sIHRvIC0gZnJvbSksIGNvbnRlbnRMb2dpY2FsTGVmdCk7CiAgICAgICAgIGlmICh0
YWJXaWR0aCkKICAgICAgICAgICAgIHJ1bi5zZXRUYWJTaXplKHRydWUsIHRhYldpZHRoKTsKICAg
ICAgICAgd2lkdGggPSBmb250LndpZHRoKHJ1bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5j
cHAKaW5kZXggMDA4ZjJjNWJiZjA1Li5jOWQ2YTQ1MjQyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25D
b3ZlcmFnZS5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5j
ZVJlYXNvbj4gY2FuVXNlRm9yRm9udEFuZFRleHQoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwog
ICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayB0aGUgY29kZSBwYXRoIGF0IHRoaXMgcG9p
bnQuIFdlIGFscmVhZHkga25vdyBpdCBjYW4ndCBiZSBzaW1wbGUuCiAgICAgICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNDb21wbGV4Rm9udENvZGVQYXRoLCBy
ZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpUZXh0UnVuIHJ1bihTdHJpbmcodGV4dFJlbmRlcmVyLnRleHQoKSkpOworICAgICAg
ICAgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihTdHJpbmcodGV4dFJlbmRlcmVyLnRleHQoKSkpOwog
ICAgICAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7CiAgICAg
ICAgICAgICBpZiAoc3R5bGUuZm9udENhc2NhZGUoKS5jb2RlUGF0aChydW4pICE9IEZvbnRDYXNj
YWRlOjpDb2RlUGF0aDo6U2ltcGxlKQogICAgICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JF
VFVSTl9JRl9ORUVERUQoRmxvd0hhc0NvbXBsZXhGb250Q29kZVBhdGgsIHJlYXNvbnMsIGluY2x1
ZGVSZWFzb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmNwcAppbmRleCA1NjhjNTk3NGY2YTEuLjU0NTEwMTVjN2VhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29u
dGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtMjc2LDcgKzI3Niw3
IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25z
dCBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhdXRvIHJ1
bkxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwotICAgICAgICAgICAgICAgIGF1
dG8gZWxsaXBzaXNXaWR0aCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkud2lkdGgoV2ViQ29yZTo6VGV4
dFJ1biB7ICZob3Jpem9udGFsRWxsaXBzaXMgfSk7CisgICAgICAgICAgICAgICAgYXV0byBlbGxp
cHNpc1dpZHRoID0gc3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChHcmFwaGljc1RleHRSdW4geyAm
aG9yaXpvbnRhbEVsbGlwc2lzIH0pOwogICAgICAgICAgICAgICAgIGlmIChydW5Mb2dpY2FsUmVj
dC5yaWdodCgpICsgZWxsaXBzaXNXaWR0aCA+IGxpbmVCb3hMb2dpY2FsUmVjdC5yaWdodCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0IHJ1biB3aXRoIGVsbGlwc2lzIHdvdWxk
IHN1cmVseSBvdmVyZmxvdy4gU28gbGV0J3MganVzdCBhZGQgaXQgdG8gdGhpcyBydW4gZXZlbiBp
ZgogICAgICAgICAgICAgICAgICAgICAvLyBpdCBtYWtlcyB0aGUgcnVuIHdpZGVyIHRoYW4gaXQg
b3JpZ2luYWxseSB3YXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDQ4
MTIwYjdiNzliOS4uYjcyY2NkZDYxYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcApAQCAtNDkyLDExICs0OTIsMTEgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgICAg
IGF1dG8mIGxpbmUgPSBpbmxpbmVDb250ZW50LmxpbmVGb3JSdW4ocnVuKTsKICAgICAgICAgYXV0
byBleHBhbnNpb24gPSBydW4uZXhwYW5zaW9uKCk7Ci0gICAgICAgIC8vIFRleHRSdW4gZXhwZWN0
cyB0aGUgeFBvcyB0byBiZSBhZGp1c3RlZCB3aXRoIHRoZSBhbGlnbWVudCBvZmZzZXQgKGUuZy4g
d2hlbiB0aGUgbGluZSBpcyBjZW50ZXIgYWxpZ25lZAorICAgICAgICAvLyBHcmFwaGljc1RleHRS
dW4gZXhwZWN0cyB0aGUgeFBvcyB0byBiZSBhZGp1c3RlZCB3aXRoIHRoZSBhbGlnbWVudCBvZmZz
ZXQgKGUuZy4gd2hlbiB0aGUgbGluZSBpcyBjZW50ZXIgYWxpZ25lZAogICAgICAgICAvLyBhbmQg
dGhlIHJ1biBzdGFydHMgYXQgMTAwcHgsIGR1ZSB0byB0aGUgaG9yaXpvbnRhbCBhbGlnbWVudCwg
dGhlIHhwb3MgaXMgc3VwcG9zZWQgdG8gYmUgYXQgMHB4KS4KICAgICAgICAgYXV0byYgZm9udENh
c2NhZGUgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwogICAgICAgICBhdXRvIHhQb3MgPSByZWN0Lngo
KSAtIChsaW5lLmxpbmVCb3hMZWZ0KCkgKyBsaW5lLmNvbnRlbnRMZWZ0KCkpOwotICAgICAgICBX
ZWJDb3JlOjpUZXh0UnVuIHRleHRSdW4geyB0ZXh0Q29udGVudC5yZW5kZXJlZENvbnRlbnQoKSwg
eFBvcywgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9
OworICAgICAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1biB7IHRleHRDb250ZW50LnJlbmRlcmVk
Q29udGVudCgpLCB4UG9zLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9u
LmJlaGF2aW9yIH07CiAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VX
aGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAKICAgICAgICAgVGV4dFBhaW50ZXIgdGV4
dFBhaW50ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4IDcxMmIzYTI5MDNlMC4uNzJiOGYzZmM2OWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaApA
QCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc2VsZWN0
YWJsZVJhbmdlKCkuY2xhbXAob2Zmc2V0KTsKIAogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlv
blJlY3QgPSBMYXlvdXRSZWN0KHJlY3QoKS54KCksIDAsIDAsIDApOwotICAgICAgICBUZXh0UnVu
IHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6Oklnbm9yZSk7CisgICAgICAgIGF1
dG8gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZTo6SWdub3JlKTsKICAgICAgICAg
cnVuKCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRl
eHRSdW4sIHNlbGVjdGlvblJlY3QsIDAsIGVuZE9mZnNldCk7CiAgICAgICAgIHJldHVybiBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLm1h
eFgoKTsKICAgICB9CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogCiAgICAgICAgIExheW91
dFJlY3Qgc2VsZWN0aW9uUmVjdCB7IGxvZ2ljYWxMZWZ0LCBzZWxlY3Rpb25Ub3AsIGxvZ2ljYWxX
aWR0aCwgc2VsZWN0aW9uSGVpZ2h0IH07CiAKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gY3Jl
YXRlVGV4dFJ1bihIeXBoZW5Nb2RlOjpJbmNsdWRlKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuID0g
Y3JlYXRlVGV4dFJ1bihIeXBoZW5Nb2RlOjpJbmNsdWRlKTsKICAgICAgICAgaWYgKGNsYW1wZWRT
dGFydCB8fCBjbGFtcGVkRW5kICE9IHRleHRSdW4ubGVuZ3RoKCkpCiAgICAgICAgICAgICBydW4o
KS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1
biwgc2VsZWN0aW9uUmVjdCwgY2xhbXBlZFN0YXJ0LCBjbGFtcGVkRW5kKTsKIApAQCAtMjE2LDcg
KzIxNiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgZW51bSBjbGFzcyBIeXBoZW5Nb2RlIHsg
SW5jbHVkZSwgSWdub3JlIH07Ci0gICAgVGV4dFJ1biBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGUg
aHlwaGVuTW9kZSkgY29uc3QKKyAgICBHcmFwaGljc1RleHRSdW4gY3JlYXRlVGV4dFJ1bihIeXBo
ZW5Nb2RlIGh5cGhlbk1vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBhdXRvJiBzdHlsZSA9IHJ1
bigpLnN0eWxlKCk7CiAgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuKCkuZXhwYW5zaW9uKCk7
CkBAIC0yMzAsNyArMjMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKHRleHQoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwogICAgICAgICB9KCk7CiAKLSAgICAg
ICAgVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dEZvclJ1biwgeFBvcywgZXhwYW5zaW9uLmhvcml6b250
YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1biB7IHRleHRGb3JSdW4sIHhQb3MsIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5z
aW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFz
dHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKICAgICAgICAgcmV0
dXJuIHRleHRSdW47CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA1OWU2ZDgxOGY4ZTkuLjI5ODdi
NWE3OTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxMYXlvdXRTaXplPiBhY2N1bXVsYXRlZE9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRDb250
aW51YXRpbwogCiBzdGF0aWMgYm9vbCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyhjb25z
dCBTdHJpbmdWaWV3JiBjb250ZW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCB3aGl0
ZXNwYWNlSXNDb2xsYXBzZWQpCiB7Ci0gICAgaWYgKGZvbnQuY29kZVBhdGgoVGV4dFJ1bihjb250
ZW50KSkgPT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpDb21wbGV4KQorICAgIGlmIChmb250LmNv
ZGVQYXRoKEdyYXBoaWNzVGV4dFJ1bihjb250ZW50KSkgPT0gRm9udENhc2NhZGU6OkNvZGVQYXRo
OjpDb21wbGV4KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoZm9udC53b3JkU3Bh
Y2luZygpIHx8IGZvbnQubGV0dGVyU3BhY2luZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAppbmRleCBiNTk2NWY1NmE0OWEuLjQ3NDQ4MDk3ZjZhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTE3Miw3ICsxNzIsNyBA
QCBzdGF0aWMgdm9pZCBkcmF3UmlnaHRBbGlnbmVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgYwogICAgIGZsb2F0IHRleHRHYXAgPSAxMDsKICAgICBm
bG9hdCB0ZXh0QmFzZWxpbmVGcm9tVG9wID0gMTQ7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBU
ZXh0UnVuKHRleHQpOworICAgIGF1dG8gdGV4dFJ1biA9IEdyYXBoaWNzVGV4dFJ1biB7IHRleHQg
fTsKICAgICBmbG9hdCB0ZXh0V2lkdGggPSBmb250LndpZHRoKHRleHRSdW4pOwogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgY29udGV4dC5kcmF3VGV4dChmb250
LCB0ZXh0UnVuLCBib3hMb2NhdGlvbiArIEZsb2F0U2l6ZSgtKHRleHRXaWR0aCArIHRleHRHYXAp
LCB0ZXh0QmFzZWxpbmVGcm9tVG9wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCAxODY0Yjk5ZmY3MDku
LmUyYzBmMjNmOGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNv
dXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4
L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC05MywzMiArOTMsMzIgQEAgcHJpdmF0
ZToKIAogICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0geyAxMCwgMjAgfTsKICAgICAgICAg
U3RyaW5nIHN0cmluZyA9ICAiQ1BVOiAiICsgY3B1VXNhZ2VTdHJpbmcoZ0RhdGEuY3B1KTsKLSAg
ICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBUZXh0UnVuKHN0cmluZyksIHBvc2l0
aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBHcmFwaGljc1RleHRS
dW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvbi5tb3ZlKDAsIGdGb250U2l6
ZSArIDIpOwogCiAgICAgICAgIHN0cmluZyA9ICJNZW1vcnk6ICIgKyBmb3JtYXRCeXRlTnVtYmVy
KGdEYXRhLnRvdGFsRGlydHlTaXplKTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRG
b250LCBUZXh0UnVuKHN0cmluZyksIHBvc2l0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4
dChtX3RleHRGb250LCBHcmFwaGljc1RleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAg
ICBwb3NpdGlvbi5tb3ZlKDAsIGdGb250U2l6ZSArIDIpOwogCiAgICAgICAgIHN0cmluZyA9ICJF
eHRlcm5hbDogIiArIGZvcm1hdEJ5dGVOdW1iZXIoZ0RhdGEudG90YWxFeHRlcm5hbFNpemUpOwot
ICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9z
aXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4
dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRT
aXplICsgMik7CiAKICAgICAgICAgc3RyaW5nID0gIkdDIEhlYXA6ICIgKyBmb3JtYXRCeXRlTnVt
YmVyKGdEYXRhLmNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDSGVhcF0uZGlydHlTaXplKTsK
LSAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBUZXh0UnVuKHN0cmluZyksIHBv
c2l0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBHcmFwaGljc1Rl
eHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvbi5tb3ZlKDAsIGdGb250
U2l6ZSArIDIpOwogCiAgICAgICAgIHN0cmluZyA9ICJHQyBvd25lZDogIiArIGZvcm1hdEJ5dGVO
dW1iZXIoZ0RhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NPd25lZF0uZGlydHlTaXpl
KTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBUZXh0UnVuKHN0cmluZyks
IHBvc2l0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBHcmFwaGlj
c1RleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvbi5tb3ZlKDAsIGdG
b250U2l6ZSArIDIpOwogCiAgICAgICAgIE1vbm90b25pY1RpbWUgbm93ID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAgICAgICAgIHN0cmluZyA9ICJFZGVuIEdDOiAiICsgZ2NUaW1lclN0cmluZyhn
RGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24sIG5vdyk7Ci0gICAgICAgIGNvbnRleHQuZHJh
d1RleHQobV90ZXh0Rm9udCwgVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CisgICAgICAgIGNv
bnRleHQuZHJhd1RleHQobV90ZXh0Rm9udCwgR3JhcGhpY3NUZXh0UnVuKHN0cmluZyksIHBvc2l0
aW9uKTsKICAgICAgICAgcG9zaXRpb24ubW92ZSgwLCBnRm9udFNpemUgKyAyKTsKIAogICAgICAg
ICBzdHJpbmcgPSAiRnVsbCBHQzogIiArIGdjVGltZXJTdHJpbmcoZ0RhdGEudGltZU9mTmV4dEZ1
bGxDb2xsZWN0aW9uLCBub3cpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQs
IFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1f
dGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAgIHBv
c2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IGMwY2U3MmM1ZmZjMS4uNWI0Zjc4MDVlM2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3Jh
cGhpY3NDb250ZXh0LmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQmlmdXJjYXRlZEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMs
IGRvCiB9CiAjZW5kaWYKIAotRmxvYXRTaXplIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRy
YXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB0bykKK0Zsb2F0U2l6ZSBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB0bykKIHsKICAgICBhdXRvIHNpemUgPSBtX3ByaW1hcnlDb250ZXh0LmRyYXdUZXh0KGNh
c2NhZGUsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKICAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJh
d1RleHQoY2FzY2FkZSwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwpAQCAtMzU0LDEzICszNTQsMTMg
QEAgdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2wKICAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJhd0ds
eXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHBvaW50LCBmb250U21vb3Ro
aW5nTW9kZSk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhh
c2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGNhc2NhZGUsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQordm9pZCBCaWZ1cmNhdGVkR3JhcGhp
Y3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwg
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0bykKIHsKICAgICBtX3ByaW1hcnlDb250ZXh0LmRyYXdFbXBoYXNpc01hcmtzKGNhc2NhZGUs
IHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKICAgICBtX3NlY29uZGFyeUNvbnRleHQuZHJh
d0VtcGhhc2lzTWFya3MoY2FzY2FkZSwgcnVuLCBtYXJrLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250
Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24pCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dChjb25zdCBGb250Q2FzY2FkZSYgY2FzY2FkZSwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikKIHsKICAgICBtX3ByaW1hcnlDb250ZXh0
LmRyYXdCaWRpVGV4dChjYXNjYWRlLCBydW4sIHBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24pOwogICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3QmlkaVRleHQoY2FzY2FkZSwgcnVuLCBw
b2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaApp
bmRleCAyZGVkNTM2ZGQxMzYuLmY2ZWYxZGNkYTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQu
aApAQCAtMTIzLDEwICsxMjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhj
b25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGRvdWJsZSwgYm9vbCYsIGNvbnN0IENvbG9yJikgZmlu
YWw7CiAjZW5kaWYKIAotICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKKyAgICBGbG9h
dFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGljc1RleHRSdW4m
LCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKICAgICB2b2lkIGRyYXdHbHlwaHMoY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFu
Y2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5n
TW9kZSkgZmluYWw7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3Rk
OjpudWxsb3B0KSBmaW5hbDsKLSAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVh
ZHkpIGZpbmFsOworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBHcmFwaGljc1RleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRv
ID0gc3RkOjpudWxsb3B0KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250
Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250
Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFp
bnRJZkZvbnROb3RSZWFkeSkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMs
IGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKaW5kZXggNDQ5MzJkZWZjZDk4Li40ODVhMTdiY2JkMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogI2luY2x1ZGUgIkNoYXJhY3RlclBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJGb250Q2FzY2Fk
ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2Nr
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNs
dWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgVGV4dExheW91dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNOZWVkZWQoUmVuZGVy
VGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgewotICAgICAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHRleHQuc3R5bGUo
KSk7CisgICAgICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4
dCwgdGV4dC5zdHlsZSgpKTsKICAgICAgICAgcmV0dXJuIGZvbnQuY29kZVBhdGgocnVuKSA9PSBG
b250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXg7CiAgICAgfQogCkBAIC03MCwxNiArNzAsMTYg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1
Y3RUZXh0UnVuKFJlbmRlclRleHQmIHRleHQsIGZsb2F0IHhQb3MpCisgICAgc3RhdGljIEdyYXBo
aWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclRleHQmIHRleHQsIGZsb2F0IHhQb3Mp
CiAgICAgewotICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKHRleHQsIHRleHQuc3R5bGUoKSk7CisgICAgICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKICAgICAgICAgcnVuLnNldFhQ
b3MoeFBvcyk7CiAgICAgICAgIHJldHVybiBydW47CiAgICAgfQogCiAgICAgLy8gQ29tcGxleFRl
eHRDb250cm9sbGVyIGhhcyBvbmx5IHJlZmVyZW5jZXMgdG8gaXRzIEZvbnRDYXNjYWRlIGFuZCBU
ZXh0UnVuIHNvIHRoZXkgbXVzdCBiZSBrZXB0IGFsaXZlIGhlcmUuCiAgICAgRm9udENhc2NhZGUg
bV9mb250OwotICAgIFRleHRSdW4gbV9ydW47CisgICAgR3JhcGhpY3NUZXh0UnVuIG1fcnVuOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21wbGV4VGV4dENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsK
IH07CiAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29t
cHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXR5KCkKICAgICB9CiB9CiAKLUNvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBUZXh0UnVuJiBydW4sIGJvb2wgbWF5VXNlTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24sIEhhc2hT
ZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBib29sIGZvclRleHRFbXBoYXNpcykKK0Nv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgYm9vbCBtYXlVc2VOYXR1cmFs
V3JpdGluZ0RpcmVjdGlvbiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIGJv
b2wgZm9yVGV4dEVtcGhhc2lzKQogICAgIDogbV9mYWxsYmFja0ZvbnRzKGZhbGxiYWNrRm9udHMp
CiAgICAgLCBtX2ZvbnQoZm9udCkKICAgICAsIG1fcnVuKHJ1bikKQEAgLTEzMCw3ICsxMzAsNyBA
QCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29udHJvbGxlcihjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dAogICAgIGZpbmlzaENvbnN0cnVjdGlvbigpOwogfQog
Ci1Db21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29udHJvbGxlcihjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBWZWN0b3I8UmVmPENvbXBsZXhUZXh0
UnVuPj4mIHJ1bnMpCitDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29udHJvbGxl
cihjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIFZl
Y3RvcjxSZWY8Q29tcGxleFRleHRSdW4+PiYgcnVucykKICAgICA6IG1fZm9udChmb250KQogICAg
ICwgbV9ydW4ocnVuKQogICAgICwgbV9lbmQocnVuLmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaApp
bmRleCAyZTRlMTZiN2I1MmYuLjYyZGM2NmI0NjQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKQEAgLTQz
LDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q2FzY2FkZTsKIGNs
YXNzIEZvbnQ7Ci1jbGFzcyBUZXh0UnVuOworY2xhc3MgR3JhcGhpY3NUZXh0UnVuOwogCiBlbnVt
IEdseXBoSXRlcmF0aW9uU3R5bGUgeyBJbmNsdWRlUGFydGlhbEdseXBocywgQnlXaG9sZUdseXBo
cyB9OwogCkBAIC01MSwxMCArNTEsMTAgQEAgZW51bSBHbHlwaEl0ZXJhdGlvblN0eWxlIHsgSW5j
bHVkZVBhcnRpYWxHbHlwaHMsIEJ5V2hvbGVHbHlwaHMgfTsKIGNsYXNzIENvbXBsZXhUZXh0Q29u
dHJvbGxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ29t
cGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGJv
b2wgbWF5VXNlTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24gPSBmYWxzZSwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBib29sIGZvclRleHRFbXBoYXNpcyA9IGZhbHNlKTsK
KyAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFw
aGljc1RleHRSdW4mLCBib29sIG1heVVzZU5hdHVyYWxXcml0aW5nRGlyZWN0aW9uID0gZmFsc2Us
IEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgYm9vbCBmb3JUZXh0RW1w
aGFzaXMgPSBmYWxzZSk7CiAKICAgICBjbGFzcyBDb21wbGV4VGV4dFJ1bjsKLSAgICBXRUJDT1JF
X0VYUE9SVCBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBU
ZXh0UnVuJiwgVmVjdG9yPFJlZjxDb21wbGV4VGV4dFJ1bj4+Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgQ29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiwgVmVjdG9yPFJlZjxDb21wbGV4VGV4dFJ1bj4+Jik7CiAKICAgICAvLyBBZHZh
bmNlIGFuZCBlbWl0IGdseXBocyB1cCB0byB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4KICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UodW5zaWduZWQgdG8sIEdseXBoQnVmZmVyKiA9IG51
bGxwdHIsIEdseXBoSXRlcmF0aW9uU3R5bGUgPSBJbmNsdWRlUGFydGlhbEdseXBocywgSGFzaFNl
dDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSBudWxscHRyKTsKQEAgLTE4Myw3ICsxODMs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2ZhbGxiYWNrRm9udHMg
eyBudWxscHRyIH07CiAKICAgICBjb25zdCBGb250Q2FzY2FkZSYgbV9mb250OwotICAgIGNvbnN0
IFRleHRSdW4mIG1fcnVuOworICAgIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgbV9ydW47CiAKICAg
ICB1bnNpZ25lZCBtX2N1cnJlbnRDaGFyYWN0ZXIgeyAwIH07CiAgICAgdW5zaWduZWQgbV9lbmQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKaW5kZXggMDUwZTI4N2Q5OWRjLi4zNmZlMWQ5MmFmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMxLDEwICszMSwx
MCBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgi
CiAjaW5jbHVkZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3Qu
aCIKICNpbmNsdWRlICJTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRl
ICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2lkdGhJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250
U2VsZWN0b3IpIGNvbnN0CiAgICAgRm9udENhY2hlOjpmb250Q2FjaGVGYWxsaW5nQmFja1RvU2lu
Z2xldG9uKGZvbnRTZWxlY3RvcikudXBkYXRlRm9udENhc2NhZGUoKnRoaXMsIFdURk1vdmUoZm9u
dFNlbGVjdG9yKSk7CiB9CiAKLUdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENv
ZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QK
K0dseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRoVG9V
c2UsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewogICAgIGlm
IChjb2RlUGF0aFRvVXNlICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1cm4gbGF5
b3V0U2ltcGxlVGV4dChydW4sIGZyb20sIHRvLCBmb3JUZXh0RW1waGFzaXMpOwpAQCAtMTY2LDcg
KzE2Niw3IEBAIEdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNv
ZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICByZXR1cm4gbGF5b3V0Q29tcGxl
eFRleHQocnVuLCBmcm9tLCB0bywgZm9yVGV4dEVtcGhhc2lzKTsKIH0KIAotRmxvYXRTaXplIEZv
bnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uKSBjb25zdAorRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNv
bnN0CiB7CiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3Ro
KCkpOwogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJv
bSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBGbG9h
dFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjbwogICAgIHJldHVybiBzdGFydFBvaW50IC0gcG9pbnQ7CiB9CiAK
LXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZv
bnRzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRl
eHRSdW4mIHJ1bgogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIGdseXBoQnVmZmVyLCBt
YXJrLCBzdGFydFBvaW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1l
bW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCBz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCB1bnNp
Z25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoIWNv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKTsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRv
LnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CkBAIC0yMjMsNyArMjIzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxh
eUxpc3RGb3JUZXgKICAgICByZXR1cm4gZGlzcGxheUxpc3Q7CiB9CiAgICAgCi1mbG9hdCBGb250
Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgZmxv
YXQqIG91dFdpZHRoQmVmb3JlUmFuZ2UsIGZsb2F0KiBvdXRXaWR0aEFmdGVyUmFuZ2UpIGNvbnN0
CitmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBHcmFwaGljc1RleHRS
dW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+
KiBmYWxsYmFja0ZvbnRzLCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSwgZmxvYXQqIG91dFdp
ZHRoQWZ0ZXJSYW5nZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZnJvbSA8PSB0byk7CiAgICAgQVNT
RVJUKHRvIDw9IHJ1bi5sZW5ndGgoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgZmxvYXQgRm9udENh
c2NhZGU6OndpZHRoT2ZUZXh0UmFuZ2UoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZAogICAgIHJldHVybiBvZmZzZXRBZnRlclJhbmdlIC0gb2Zmc2V0QmVmb3JlUmFu
Z2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aChjb25zdCBUZXh0UnVuJiBydW4sIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93KSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OndpZHRoKGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVy
ZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKICAgICBpZiAoIXJ1bi5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0zMDYsNyArMzA2LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVj
dGkKIHsKICAgICBpZiAodGV4dC5pc051bGwoKSB8fCB0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgQVNTRVJUKGNvZGVQYXRoKFRleHRSdW4odGV4dCkpICE9IENvZGVQYXRo
OjpDb21wbGV4KTsKKyAgICBBU1NFUlQoY29kZVBhdGgoR3JhcGhpY3NUZXh0UnVuKHRleHQpKSAh
PSBDb2RlUGF0aDo6Q29tcGxleCk7CiAgICAgZmxvYXQqIGNhY2hlRW50cnkgPSBtX2ZvbnRzLT53
aWR0aENhY2hlKCkuYWRkKHRleHQsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKSk7CiAgICAgaWYgKGNhY2hlRW50cnkgJiYgIXN0ZDo6aXNuYW4oKmNhY2hlRW50cnkpKQog
ICAgICAgICByZXR1cm4gKmNhY2hlRW50cnk7CkBAIC00MjAsNyArNDIwLDcgQEAgYm9vbCBGb250
Q2FzY2FkZTo6ZmFzdEF2ZXJhZ2VDaGFyV2lkdGhJZkF2YWlsYWJsZShmbG9hdCYgd2lkdGgpIGNv
bnN0CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNl
bGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0
aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0
Cit2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBHcmFw
aGljc1RleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJv
bSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgZGVz
dGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlmIChjb2RlUGF0aChy
dW4sIGZyb20sIHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKQEAgLTQyOSw3ICs0MjksNyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIExheW91dFJlY3QmIHNlbAogICAgIHJldHVybiBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9y
Q29tcGxleFRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7CiB9CiAK
LWludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYgcnVuLCBm
bG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAoraW50IEZvbnRDYXNjYWRl
OjpvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQgeCwg
Ym9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKICAgICBpZiAoY29kZVBhdGgocnVu
LCB4KSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIG9mZnNldEZvclBvc2l0
aW9uRm9yU2ltcGxlVGV4dChydW4sIHgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTQ4OSw3
ICs0ODksNyBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKCkK
ICAgICByZXR1cm4gc19jb2RlUGF0aDsKIH0KIAotRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRD
YXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKSBjb25zdAorRm9udENhc2NhZGU6
OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1
biwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8pIGNvbnN0CiB7CiAgICAgaWYgKHNfY29kZVBhdGggIT0gQ29kZVBhdGg6OkF1dG8pCiAgICAg
ICAgIHJldHVybiBzX2NvZGVQYXRoOwpAQCAtMTEzNSw3ICsxMTM1LDcgQEAgZW51bSBjbGFzcyBH
bHlwaFVuZGVybGluZVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3T3ZlckdseXBoCiB9OwogICAg
IAotc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVk
IGluZGV4KQorc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShj
b25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgLy8gSW4gZ2VuZXJhbCwgd2Ugd2FudCB0byBz
a2lwIGRlc2NlbmRlcnMuIEhvd2V2ZXIsIHNraXBwaW5nIGRlc2NlbmRlcnMgb24gQ0pLIGNoYXJh
Y3RlcnMgbGVhZHMgdG8gdW5kZXNpcmFibGUgcmVuZGVyaW5ncywKICAgICAvLyBzbyB3ZSB3YW50
IHRvIGRyYXcgdGhyb3VnaCBDSksgY2hhcmFjdGVycyAob24gYSBjaGFyYWN0ZXItYnktY2hhcmFj
dGVyIGJhc2lzKS4KQEAgLTEyNDcsNyArMTI0Nyw3IEBAIGludCBGb250Q2FzY2FkZTo6ZW1waGFz
aXNNYXJrSGVpZ2h0KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiAgICAgcmV0dXJuIG1h
cmtGb250RGF0YS0+Zm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKIH0KIAotR2x5cGhCdWZmZXIgRm9u
dENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBj
b25zdAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5
cGhCdWZmZXI7CiAKQEAgLTEyODMsNyArMTI4Myw3IEBAIEdseXBoQnVmZmVyIEZvbnRDYXNjYWRl
OjpsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5z
CiAgICAgcmV0dXJuIGdseXBoQnVmZmVyOwogfQogCi1HbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6
bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorR2x5
cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVy
OwogCkBAIC0xNDA1LDcgKzE0MDUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdseXBoQnVmZmVyJgogICAgIGRy
YXdHbHlwaEJ1ZmZlcihjb250ZXh0LCBtYXJrQnVmZmVyLCBzdGFydFBvaW50LCBDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiB9CiAKLWZsb2F0IEZv
bnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93KSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0
KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKICAgICBXaWR0
aEl0ZXJhdG9yIGl0KCp0aGlzLCBydW4sIGZhbGxiYWNrRm9udHMsIGdseXBoT3ZlcmZsb3cpOwog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgZmxvYXQg
Rm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
SGFzaFNldDxjb25zdCBGb24KICAgICByZXR1cm4gaXQucnVuV2lkdGhTb0ZhcigpOwogfQogCi1m
bG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cq
IGdseXBoT3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvckNv
bXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsK
ICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigqdGhpcywgcnVuLCB0cnVlLCBm
YWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5cGhPdmVyZmxvdykgewpAQCAtMTQzNCw3ICsxNDM0
LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm8KICAgICByZXR1cm4gY29udHJvbGxlci50b3Rh
bEFkdmFuY2UoKS53aWR0aCgpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rp
b25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVj
dGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAordm9pZCBGb250Q2Fz
Y2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0
UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIFdpZHRo
SXRlcmF0b3IgaXQoKnRoaXMsIHJ1bik7CkBAIC0xNDU1LDcgKzE0NTUsNyBAQCB2b2lkIEZvbnRD
YXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIExheW91dFJlYwogICAgIHNlbGVjdGlvblJlY3Quc2V0V2lkdGgoTGF5b3V0VW5pdDo6ZnJv
bUZsb2F0Q2VpbChhZnRlcldpZHRoIC0gYmVmb3JlV2lkdGgpKTsKIH0KIAotdm9pZCBGb250Q2Fz
Y2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1
biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8p
IGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRl
eHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdAogewogICAgIENvbXBsZXhUZXh0Q29u
dHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4pOwogICAgIGNvbnRyb2xsZXIuYWR2YW5jZShm
cm9tKTsKQEAgLTE0NzAsNyArMTQ3MCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIExheW91dFJlCiAgICAg
c2VsZWN0aW9uUmVjdC5zZXRXaWR0aChMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGFmdGVyV2lk
dGggLSBiZWZvcmVXaWR0aCkpOwogfQogCi1pbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0
aW9uRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0CitpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9u
Rm9yU2ltcGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKICAgICBmbG9hdCBkZWx0YSA9IHg7CiAKQEAg
LTE1MTQsNyArMTUxNCw3IEBAIGludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JT
aW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vCiAgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAotaW50IEZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykgY29uc3QKK2ludCBGb250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4
dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlh
bEdseXBocykgY29uc3QKIHsKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigq
dGhpcywgcnVuKTsKICAgICByZXR1cm4gY29udHJvbGxlci5vZmZzZXRGb3JQb3NpdGlvbih4LCBp
bmNsdWRlUGFydGlhbEdseXBocyk7CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBzdGF0aWMgdm9pZCBm
aW5kUGF0aEludGVyc2VjdGlvbnMoR2x5cGhJdGVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IFBh
dGhFbGVtZW50JgogCiBjbGFzcyBHbHlwaFRvUGF0aFRyYW5zbGF0b3IgewogcHVibGljOgotICAg
IEdseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4pCisgICAg
R2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29u
c3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2lu
KQogICAgICAgICA6IG1faW5kZXgoMCkKICAgICAgICAgLCBtX3RleHRSdW4odGV4dFJ1bikKICAg
ICAgICAgLCBtX2dseXBoQnVmZmVyKGdseXBoQnVmZmVyKQpAQCAtMTYyNCw3ICsxNjI0LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0gICAgY29uc3QgVGV4
dFJ1biYgbV90ZXh0UnVuOworICAgIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgbV90ZXh0UnVuOwog
ICAgIGNvbnN0IEdseXBoQnVmZmVyJiBtX2dseXBoQnVmZmVyOwogICAgIGNvbnN0IEZvbnQqIG1f
Zm9udERhdGE7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNsYXRpb247CkBAIC0xNjU5LDcg
KzE2NTksNyBAQCB2b2lkIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6YWR2YW5jZSgpCiAgICAgICAg
IG1fZm9udERhdGEgPSAmbV9nbHlwaEJ1ZmZlci5mb250QXQobV9pbmRleCk7CiB9CiAKLURhc2hB
cnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cykgY29uc3QKK0Rhc2hBcnJheSBGb250Q2FzY2FkZTo6ZGFzaGVzRm9ySW50
ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdAog
ewogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm4gRGFzaEFy
cmF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
aAppbmRleCA2YzUwNjU3YjE5M2QuLjI2ZGE5NDNjMWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC00MiwxMCArNDIsMTAgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgR3JhcGhp
Y3NUZXh0UnVuOwogY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBU
ZXh0TGF5b3V0OwotY2xhc3MgVGV4dFJ1bjsKIAogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNs
YXNzIEluTWVtb3J5RGlzcGxheUxpc3Q7CkBAIC0xMjUsMjEgKzEyNSwyMSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51
bGxwdHIpIGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05v
dFBhaW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
biA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
RmxvYXRTaXplIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCos
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEF0b21T
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgRGFzaEFy
cmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykgY29u
c3Q7CisgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBH
cmFwaGljc1RleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9h
dFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKIAotICAgIGZsb2F0IHdpZHRoT2ZUZXh0UmFuZ2Uo
Y29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGZsb2F0KiBvdXRXaWR0aEJlZm9yZVJhbmdlID0g
bnVsbHB0ciwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSA9IG51bGxwdHIpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIGZsb2F0IHdpZHRoKGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Cisg
ICAgZmxvYXQgd2lkdGhPZlRleHRSYW5nZShjb25zdCBHcmFwaGljc1RleHRSdW4mLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0bywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMg
PSAwLCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSA9IG51bGxwdHIsIGZsb2F0KiBvdXRXaWR0
aEFmdGVyUmFuZ2UgPSBudWxscHRyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB3
aWR0aChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJh
Y2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CiAgICAgZmxvYXQgd2lkdGhG
b3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCwgVGV4dERpcmVjdGlvbiA9IFRleHREaXJlY3Rp
b246OkxUUikgY29uc3Q7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dExheW91dCwgVGV4dExh
eW91dERlbGV0ZXI+IGNyZWF0ZUxheW91dChSZW5kZXJUZXh0JiwgZmxvYXQgeFBvcywgYm9vbCBj
b2xsYXBzZVdoaXRlU3BhY2UpIGNvbnN0OwogICAgIHN0YXRpYyBmbG9hdCB3aWR0aChUZXh0TGF5
b3V0JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiog
ZmFsbGJhY2tGb250cyA9IDApOwogCi0gICAgaW50IG9mZnNldEZvclBvc2l0aW9uKGNvbnN0IFRl
eHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7
Ci0gICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5
b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb24oY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRl
eHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5z
aWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0
KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRE
ZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGw7IH0KIApA
QCAtMjAwLDcgKzIwMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1N1YnBpeGVsQW50
aWFsaWFzaW5nQXZhaWxhYmxlKCk7CiAKICAgICBlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhf
dCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKLSAg
ICBDb2RlUGF0aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OworICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBzdGQ6Om51bGxvcHQsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBzdGF0aWMg
Q29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBMQ2hhciosIHVuc2lnbmVkKSB7
IHJldHVybiBDb2RlUGF0aDo6U2ltcGxlOyB9CiAgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3Rl
clJhbmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW4pOwogCkBAIC0yMDgsNyAr
MjA4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGZsb2F0IHN5bnRoZXRpY09ibGlxdWVBbmds
ZSgpIHsgcmV0dXJuIDE0OyB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6Oklu
TWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0geyB9LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdEZvclRl
eHRSdW4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgdW5zaWduZWQg
ZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0geyB9LCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gPSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb246OkRvTm90UGFpbnRJZkZvbnRO
b3RSZWFkeSkgY29uc3Q7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykKICAgICBzdGF0
aWMgdm9pZCBzZXRGb250U21vb3RoaW5nTGV2ZWwoaW50KTsKQEAgLTIyMSwyMyArMjIxLDIzIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZW51bSBGb3JUZXh0RW1waGFzaXNPck5vdCB7IE5vdEZv
clRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhhc2lzIH07CiAKLSAgICBHbHlwaEJ1ZmZlciBsYXlv
dXRUZXh0KENvZGVQYXRoLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKLSAg
ICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFz
aXMpIGNvbnN0OworICAgIEdseXBoQnVmZmVyIGxheW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFz
aXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CisgICAgR2x5cGhCdWZmZXIgbGF5
b3V0U2ltcGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0
OwogICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdseXBo
QnVmZmVyJiwgRmxvYXRQb2ludCYsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3Q7CiAg
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBHbHlwaEJ1
ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
LSAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7Ci0gICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0Owor
ICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYs
IEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyog
PSAwKSBjb25zdDsKKyAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzKSBjb25zdDsKKyAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNv
bnN0IEdyYXBoaWNzVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvKSBjb25zdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGhEYXRh
PiBnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGJvb2wgY2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7CiAg
ICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsK
IAotICAgIEdseXBoQnVmZmVyIGxheW91dENvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0
RW1waGFzaXMpIGNvbnN0OwotICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25z
dCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlw
aE92ZXJmbG93KiA9IDApIGNvbnN0OwotICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBs
ZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlh
bEdseXBocykgY29uc3Q7Ci0gICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZy
b20sIHVuc2lnbmVkIHRvKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRDb21wbGV4VGV4
dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9y
VGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBIYXNoU2V0
PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29u
c3Q7CisgICAgaW50IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNv
bnN0OworICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvKSBjb25zdDsKIAogICAgIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIGJv
b2w+IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgVGV4dERpcmVjdGlvbiwgRXhwYW5zaW9uQmVoYXZpb3IpOwogICAgIHN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRl
cm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVGV4dERpcmVjdGlvbiwgRXhwYW5z
aW9uQmVoYXZpb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggOTRlMWEwZjc5YjRmLi43NTI4NWFjZmZmNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNp
bmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNs
dWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk51bGxHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJSb3VuZGVkUmVjdC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBUZXh0UnVuSXRlcmF0b3IoY29uc3QgVGV4
dFJ1biogdGV4dFJ1biwgdW5zaWduZWQgb2Zmc2V0KQorICAgIFRleHRSdW5JdGVyYXRvcihjb25z
dCBHcmFwaGljc1RleHRSdW4qIHRleHRSdW4sIHVuc2lnbmVkIG9mZnNldCkKICAgICAgICAgOiBt
X3RleHRSdW4odGV4dFJ1bikKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgewpAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRSdW5J
dGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCiBwcml2YXRl
OgotICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1bjsKKyAgICBjb25zdCBHcmFwaGljc1RleHRS
dW4qIG1fdGV4dFJ1bjsKICAgICB1bnNpZ25lZCBtX29mZnNldDsKIH07CiAKQEAgLTQ4MSw3ICs0
ODEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAg
IC0tbV90cmFuc3BhcmVuY3lMYXllckNvdW50OwogfQogCi1GbG9hdFNpemUgR3JhcGhpY3NDb250
ZXh0OjpkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8pCitGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykK
IHsKICAgICAvLyBEaXNwbGF5IGxpc3QgcmVjb3JkaW5nIGZvciB0ZXh0IGNvbnRlbnQgaXMgZG9u
ZSBhdCBnbHlwaHMgbGV2ZWwuIFNlZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMuCiAgICAg
cmV0dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKQEAgLTQ5
MiwxMiArNDkyLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBoCiAgICAgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgcG9p
bnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdF
bXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25l
ZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKIHsKICAg
ICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50LCBmcm9tLCB0
byk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbikKIHsKICAgICBCaWRpUmVzb2x2ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRp
Q2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CiAgICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhC
aWRpU3RhdHVzKHJ1bi5kaXJlY3Rpb24oKSwgcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpOwpA
QCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBGbG9hdFBvaW50
IGN1cnJQb2ludCA9IHBvaW50OwogICAgIEJpZGlDaGFyYWN0ZXJSdW4qIGJpZGlSdW4gPSBiaWRp
UnVucy5maXJzdFJ1bigpOwogICAgIHdoaWxlIChiaWRpUnVuKSB7Ci0gICAgICAgIFRleHRSdW4g
c3VicnVuID0gcnVuLnN1YlJ1bihiaWRpUnVuLT5zdGFydCgpLCBiaWRpUnVuLT5zdG9wKCkgLSBi
aWRpUnVuLT5zdGFydCgpKTsKKyAgICAgICAgYXV0byBzdWJydW4gPSBydW4uc3ViUnVuKGJpZGlS
dW4tPnN0YXJ0KCksIGJpZGlSdW4tPnN0b3AoKSAtIGJpZGlSdW4tPnN0YXJ0KCkpOwogICAgICAg
ICBib29sIGlzUlRMID0gYmlkaVJ1bi0+bGV2ZWwoKSAlIDI7CiAgICAgICAgIHN1YnJ1bi5zZXRE
aXJlY3Rpb24oaXNSVEwgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFIp
OwogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uYWxPdmVycmlkZShiaWRpUnVuLT5kaXJPdmVy
cmlkZShmYWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAppbmRleCAyNTI4NjllMGJmZWEuLjkyZWU0ZmFmMTJmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTg4LDEzICs4OCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJv
dW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU7CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVBsYXllcjsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBQYXRoOwotY2xhc3MgVGV4dFJ1bjsKIGNsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAtNDY4
LDEwICs0NjgsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGV4dAogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBU
ZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGlj
c1RleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90
UmVhZHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEF0b21T
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFw
aGljc1RleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JU
ZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUZXh0UnVuLmNw
cApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUZXh0UnVuLmNwcAppbmRleCA2M2U2NjM4MDk1ZDAuLmRlMWU5YTQ4
ODRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUZXh0
UnVuLmNwcApAQCAtMjQsMTEgKzI0LDExIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgRXhwZWN0ZWRUZXh0UnVuU2l6ZSB7CitzdHJ1Y3Qg
RXhwZWN0ZWRHcmFwaGljc1RleHRSdW5TaXplIHsKICAgICBTdHJpbmcgdGV4dDsKICAgICBUYWJT
aXplIHRhYlNpemU7CiAgICAgZmxvYXQgZmxvYXQxOwpAQCAtMzcsNiArMzcsNiBAQCBzdHJ1Y3Qg
RXhwZWN0ZWRUZXh0UnVuU2l6ZSB7CiAgICAgdW5zaWduZWQgYml0ZmllbGRzIDogOTsKIH07CiAK
LUNPTVBJTEVfQVNTRVJUKHNpemVvZihUZXh0UnVuKSA9PSBzaXplb2YoRXhwZWN0ZWRUZXh0UnVu
U2l6ZSksIFRleHRSdW5faXNfbm90X29mX2V4cGVjdGVkX3NpemUpOworQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEdyYXBoaWNzVGV4dFJ1bikgPT0gc2l6ZW9mKEV4cGVjdGVkR3JhcGhpY3NUZXh0UnVu
U2l6ZSksIEdyYXBoaWNzVGV4dFJ1bl9pc19ub3Rfb2ZfZXhwZWN0ZWRfc2l6ZSk7CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5oCnNpbWlsYXJp
dHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RleHRSdW4uaApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NUZXh0UnVuLmgKaW5kZXggMWQ0N2Q2NWQ2ODI0Li4wMzdkNzEwNzgzMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaApAQCAtMjEsOCAr
MjEsNyBAQAogICoKICAqLwogCi0jaWZuZGVmIFRleHRSdW5faAotI2RlZmluZSBUZXh0UnVuX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGFiU2l6ZS5oIgogI2luY2x1ZGUgIlRleHRGbGFn
cy5oIgpAQCAtNDAsMTAgKzM5LDEwIEBAIGNsYXNzIEZvbnQ7CiAKIHN0cnVjdCBHbHlwaERhdGE7
CiAKLWNsYXNzIFRleHRSdW4geworY2xhc3MgR3JhcGhpY3NUZXh0UnVuIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUZXh0UnVuKGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVy
cmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCisgICAg
ZXhwbGljaXQgR3JhcGhpY3NUZXh0UnVuKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeHBvcyA9
IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2
aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGly
ZWN0aW9uOjpMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJh
Y3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCiAgICAgICAgIDogbV90ZXh0KHRleHQpCiAgICAg
ICAgICwgbV90YWJTaXplKDApCiAgICAgICAgICwgbV94cG9zKHhwb3MpCkBAIC01OSwxMiArNTgs
MTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1fdGV4dC5pc051bGwoKSk7CiAgICAgfQog
Ci0gICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGZsb2F0IHhwb3Mg
PSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhh
dmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERp
cmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFy
YWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQotICAgICAgICA6IFRleHRSdW4oc3RyaW5nVmll
dy50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIHhwb3MsIGV4cGFuc2lvbiwgZXhwYW5zaW9uQmVo
YXZpb3IsIGRpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSwgY2hhcmFjdGVyU2NhbkZvckNv
ZGVQYXRoKQorICAgIGV4cGxpY2l0IEdyYXBoaWNzVGV4dFJ1bihTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlv
ciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBm
YWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQorICAgICAgICA6IEdy
YXBoaWNzVGV4dFJ1bihzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgeHBvcywg
ZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvciwgZGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJy
aWRlLCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCiAgICAgewogICAgIH0KIAotICAgIFRleHRS
dW4gc3ViUnVuKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Cisg
ICAgR3JhcGhpY3NUZXh0UnVuIHN1YlJ1bih1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oKHN0YXJ0T2Zmc2V0ICsgbGVuZ3RoKSA8PSBtX3RleHQubGVuZ3RoKCkpOwogCkBAIC0x
MzYsMTIgKzEzNSwxMCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGlzYWJsZVNwYWNpbmcg
OiAxOwogfTsKIAotaW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFsbG93LCBj
b25zdCBUYWJTaXplJiBzaXplKQoraW5saW5lIHZvaWQgR3JhcGhpY3NUZXh0UnVuOjpzZXRUYWJT
aXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUmIHNpemUpCiB7CiAgICAgbV9hbGxvd1RhYnMg
PSBhbGxvdzsKICAgICBtX3RhYlNpemUgPSBzaXplOwogfQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4
dC5oCmluZGV4IDc5MDZkMzU2ZTcwNy4uMWZlZTUxMjBiZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCkBAIC0x
MDUsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkcmF3UmFpc2VkRWxsaXBzZShj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJikgZmluYWwgeyB9CiAK
LSAgICBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIEZsb2F0U2l6ZSBk
cmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+ID0gc3Rk
OjpudWxsb3B0KSBmaW5hbCB7IHJldHVybiB7IH07IH0KIAogICAgIHZvaWQgZHJhd0dseXBocyhj
b25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSosIHVuc2lnbmVkLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpIGZp
bmFsIHsgfQogCi0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFs
IHsgfQotICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgZmluYWwgeyB9
CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwg
eyB9CisgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFw
aGljc1RleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGZp
bmFsIHsgfQogCiAgICAgdm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0
UmVjdCYsIERvY3VtZW50TWFya2VyTGluZVN0eWxlKSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXgg
YTYzZmM4YTczZWNiLi45ODk0ZDAyZDkzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+Ci0jaW5jbHVkZSAiVGV4
dFJ1bi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHVuaWNvZGUv
dWJyay5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMg
dW5zaWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgdW5zaQogCiBzdGF0aWMgZmxvYXQgc3RyaW5nV2lkdGgoY29uc3QgRm9udENh
c2NhZGUmIHJlbmRlcmVyLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQogewotICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSk7Cisg
ICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0aCkpOwog
ICAgIHJldHVybiByZW5kZXJlci53aWR0aChydW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgKaW5kZXggNTJhN2IwODY2Y2QwLi44ZDg1ZmEy
NDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hl
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2lkdGhDYWNoZV9oCiAjZGVmaW5lIFdpZHRo
Q2FjaGVfaAogCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1
bi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTMzLDcgKzEzMyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkZFNsb3dDYXNlKHRleHQsIGVudHJ5KTsKICAgICB9CiAKLSAg
ICBmbG9hdCogYWRkKGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgZW50cnksIGJvb2wgaGFzS2Vy
bmluZ09yTGlnYXR1cmVzLCBib29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5nLCBHbHlw
aE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KQorICAgIGZsb2F0KiBhZGQoY29uc3QgR3JhcGhpY3NU
ZXh0UnVuJiBydW4sIGZsb2F0IGVudHJ5LCBib29sIGhhc0tlcm5pbmdPckxpZ2F0dXJlcywgYm9v
bCBoYXNXb3JkU3BhY2luZ09yTGV0dGVyU3BhY2luZywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVy
ZmxvdykKICAgICB7CiAgICAgICAgIGlmIChNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRv
bigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwCmluZGV4IGU1M2UxZjY4ODU5Zi4uYTc2MzJlZTc4OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiAKLVdpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMs
IGJvb2wgYWNjb3VudEZvckdseXBoQm91bmRzLCBib29sIGZvclRleHRFbXBoYXNpcykKK1dpZHRo
SXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywg
Ym9vbCBhY2NvdW50Rm9yR2x5cGhCb3VuZHMsIGJvb2wgZm9yVGV4dEVtcGhhc2lzKQogICAgIDog
bV9mb250KGZvbnQpCiAgICAgLCBtX3J1bihydW4pCiAgICAgLCBtX2ZhbGxiYWNrRm9udHMoZmFs
bGJhY2tGb250cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dpZHRoSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuaAppbmRleCAyNDA1OGIxY2U1ZTQuLmM2NzFjZDUzMGY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaApAQCAtMjksOSAr
MjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZvbnRDYXNjYWRlOworY2xh
c3MgRm9udENhc2NhZGU7ICAKIGNsYXNzIEZvbnQ7Ci1jbGFzcyBUZXh0UnVuOworY2xhc3MgR3Jh
cGhpY3NUZXh0UnVuOwogc3RydWN0IEdseXBoRGF0YTsKIHN0cnVjdCBHbHlwaEluZGV4UmFuZ2U7
CiBzdHJ1Y3QgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlOwpAQCAt
NDEsNyArNDEsNyBAQCB1c2luZyBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UgPSBWZWN0b3I8T3Jp
Z2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYQogc3RydWN0IFdpZHRoSXRlcmF0
b3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdpZHRoSXRl
cmF0b3IoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBib29sIGFjY291bnRGb3JHbHlwaEJvdW5kcyA9IGZh
bHNlLCBib29sIGZvclRleHRFbXBoYXNpcyA9IGZhbHNlKTsKKyAgICBXaWR0aEl0ZXJhdG9yKGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBib29sIGFjY291bnRGb3JHbHlwaEJvdW5kcyA9IGZh
bHNlLCBib29sIGZvclRleHRFbXBoYXNpcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgYWR2YW5jZSh1
bnNpZ25lZCB0bywgR2x5cGhCdWZmZXImKTsKICAgICBib29sIGFkdmFuY2VPbmVDaGFyYWN0ZXIo
ZmxvYXQmIHdpZHRoLCBHbHlwaEJ1ZmZlciYpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgZmlyc3RHbHlwaE92ZXJmbG93KCkgY29uc3QgeyBBU1NFUlQobV9hY2NvdW50Rm9y
R2x5cGhCb3VuZHMpOyByZXR1cm4gbV9maXJzdEdseXBoT3ZlcmZsb3c7IH0KICAgICBmbG9hdCBs
YXN0R2x5cGhPdmVyZmxvdygpIGNvbnN0IHsgQVNTRVJUKG1fYWNjb3VudEZvckdseXBoQm91bmRz
KTsgcmV0dXJuIG1fbGFzdEdseXBoT3ZlcmZsb3c7IH0KIAotICAgIGNvbnN0IFRleHRSdW4mIHJ1
bigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CisgICAgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBy
dW4oKSBjb25zdCB7IHJldHVybiBtX3J1bjsgfQogICAgIGZsb2F0IHJ1bldpZHRoU29GYXIoKSBj
b25zdCB7IHJldHVybiBtX3J1bldpZHRoU29GYXI7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50Q2hh
cmFjdGVySW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDaGFyYWN0ZXJJbmRleDsgfQog
CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseUFkZGl0aW9uYWxXaWR0
aChHbHlwaEJ1ZmZlciYsIEdseXBoSW5kZXhSYW5nZSwgZmxvYXQgbGVmdEFkZGl0aW9uYWxXaWR0
aCwgZmxvYXQgcmlnaHRBZGRpdGlvbmFsV2lkdGgsIGZsb2F0IGxlZnRFeHBhbnNpb25BZGRpdGlv
bmFsV2lkdGgsIGZsb2F0IHJpZ2h0RXhwYW5zaW9uQWRkaXRpb25hbFdpZHRoKTsKIAogICAgIGNv
bnN0IEZvbnRDYXNjYWRlJiBtX2ZvbnQ7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV9ydW47CisgICAg
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJiBtX3J1bjsKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiog
bV9mYWxsYmFja0ZvbnRzIHsgbnVsbHB0ciB9OwogCiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gbV9sYXN0Q2hhcmFjdGVySW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAxZjM5MmY1NDc3Mzku
LjE0YzliZjBjYmIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgUGxhCiAgICAgY29uc3RleHByIGF1dG8gbGluZWFyR2x5cGhNYXNrT3V0bGlu
ZUNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgxOTIpOwogICAgIGNvbnN0
ZXhwciBhdXRvIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRo
QWxwaGFCeXRlKDE2Nik7CiAKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVw
YWludENvdW50KSk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIo
cmVwYWludENvdW50KSk7CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlw
dGlvbjsKICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJIZWx2ZXRpY2EiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNjg4MTIyMWIwNDU4Li42MTllMzk1OTBlZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJHRElVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtQ0FBbmltYXRpb25XaW4uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJX
aW5JbnRlcm5hbC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlICJUaWxlQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIldlYlRpbGVkQmFja2luZ0xheWVyV2luLmgiCiAjaW5jbHVkZSA8
UXVhcnR6Q29yZS9Db3JlQW5pbWF0aW9uQ0YuaD4KQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIFBs
YXRmb3JtQ0FMYXllcldpbjo6ZHJhd1RleHRBdFBvaW50KENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R0Zsb2F0IHgsIENHRmxvYQogCiAgICAgR3JhcGhpY3NDb250ZXh0Q0cgY2coY29udGV4dCk7CiAg
ICAgY2cuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgY2cuZHJhd1RleHQoZm9udCwg
VGV4dFJ1bih0ZXh0KSwgSW50UG9pbnQoeCwgeSkpOworICAgIGNnLmRyYXdUZXh0KGZvbnQsIEdy
YXBoaWNzVGV4dFJ1bih0ZXh0KSwgSW50UG9pbnQoeCwgeSkpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCA1
MmNiODhmNTNkMDUuLjZlZDE4M2VmODNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5j
bHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CmluZGV4IGNlOGM3ZDQ4MTc5MC4uY2VhN2MyYWVkNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkdl
b21ldHJ5VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW1wb3J0ICJHcmFwaGljc1RleHRSdW4uaCIKICNpbXBv
cnQgIkltYWdlLmgiCiAjaW1wb3J0ICJOb3RJbXBsZW1lbnRlZC5oIgogI2ltcG9ydCAiUGFnZS5o
IgpAQCAtNDQsNyArNDUsNiBAQAogI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0
cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dEluZGljYXRvci5oIgotI2ltcG9ydCAiVGV4
dFJ1bi5oIgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2ltcG9ydCA8
Q29yZVRleHQvQ29yZVRleHQuaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KQEAgLTE0MSw5
ICsxNDEsOSBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiBs
aW5rRWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0IFN0cmluZwogICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCBDR1JlY3RHZXRIZWlnaHQoaW1hZ2VSZWN0KSk7CiAgICAgICAgIGNvbnRleHQuc2Nh
bGUoeyAxLCAtMSB9KTsKICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChpbWFnZVJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpKDQpKSwgQ29sb3I6Ondo
aXRlKTsKLSAgICAgICAgdGl0bGVGb250Q2FzY2FkZS5nZXQoKS5kcmF3VGV4dChjb250ZXh0LCBU
ZXh0UnVuKHRydW5jYXRlZFRvcFN0cmluZyksIEZsb2F0UG9pbnQoZHJhZ0ltYWdlUGFkZGluZywg
MTggKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CisgICAgICAgIHRpdGxlRm9udENhc2NhZGUuZ2V0KCku
ZHJhd1RleHQoY29udGV4dCwgR3JhcGhpY3NUZXh0UnVuKHRydW5jYXRlZFRvcFN0cmluZyksIEZs
b2F0UG9pbnQoZHJhZ0ltYWdlUGFkZGluZywgMTggKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CiAgICAg
ICAgIGlmICghdHJ1bmNhdGVkQm90dG9tU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHVy
bEZvbnRDYXNjYWRlLmdldCgpLmRyYXdUZXh0KGNvbnRleHQsIFRleHRSdW4odHJ1bmNhdGVkQm90
dG9tU3RyaW5nKSwgRmxvYXRQb2ludChkcmFnSW1hZ2VQYWRkaW5nLCA0MCArIGRyYWdJbWFnZVBh
ZGRpbmcpKTsKKyAgICAgICAgICAgIHVybEZvbnRDYXNjYWRlLmdldCgpLmRyYXdUZXh0KGNvbnRl
eHQsIEdyYXBoaWNzVGV4dFJ1bih0cnVuY2F0ZWRCb3R0b21TdHJpbmcpLCBGbG9hdFBvaW50KGRy
YWdJbWFnZVBhZGRpbmcsIDQwICsgZHJhZ0ltYWdlUGFkZGluZykpOwogICAgIH1dOwogCiAgICAg
Y29uc3RleHByIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBkZWZhdWx0TGlua0luZGlj
YXRvck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCBlZTBjZmY2NDA4Y2YuLjY4ZGZjMWVk
ZDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTM1NiwyOSArMzU2LDI5IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUpOwogICAgIGNvbnRleHQuc2V0VGV4
dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZTo6RmlsbCk7CiAgICAgYXV0byBzdHJpbmcgPSBt
YWtlU3RyaW5nKHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBtaW51dGVzKSwg
JzonLCBwYWQoJzAnLCAyLCBzZWNvbmRzKSwgJy4nLCBwYWQoJzAnLCAzLCBtaWxsaXNlY29uZHMg
JSAxMDAwKSk7Ci0gICAgY29udGV4dC5kcmF3VGV4dCh0aW1lRm9udCwgVGV4dFJ1bigoU3RyaW5n
VmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4dCh0aW1l
Rm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9u
KTsKIAogICAgIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgNiwgbV9mcmFtZU51bWJlcisr
KSk7CiAgICAgdGltZUxvY2F0aW9uLm1vdmUoMCwgbV9iYXNlRm9udFNpemUpOwotICAgIGNvbnRl
eHQuZHJhd1RleHQodGltZUZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCB0aW1l
TG9jYXRpb24pOworICAgIGNvbnRleHQuZHJhd1RleHQodGltZUZvbnQsIEdyYXBoaWNzVGV4dFJ1
bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlvbik7CiAKICAgICBGbG9hdFBvaW50
IHN0YXRzTG9jYXRpb24oY2FwdHVyZVNpemUud2lkdGgoKSAqIC40NSwgY2FwdHVyZVNpemUuaGVp
Z2h0KCkgKiAuNzUpOwogICAgIHN0cmluZyA9IG1ha2VTdHJpbmcoIlJlcXVlc3RlZCBmcmFtZSBy
YXRlOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZnJhbWVSYXRlKCksIDEpLCAiIGZw
cyIpOwotICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3
KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0Zv
bnQsIEdyYXBoaWNzVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24p
OwogCiAgICAgc3RhdHNMb2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CiAgICAgc3Ry
aW5nID0gbWFrZVN0cmluZygiT2JzZXJ2ZWQgZnJhbWUgcmF0ZTogIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKG9ic2VydmVkRnJhbWVSYXRlKCksIDEpLCAiIGZwcyIpOwotICAgIGNvbnRl
eHQuZHJhd1RleHQoc3RhdHNGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3Rh
dHNMb2NhdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIEdyYXBoaWNzVGV4
dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24pOwogCiAgICAgYXV0byBz
aXplID0gdGhpcy0+c2l6ZSgpOwogICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9u
dFNpemUpOwogICAgIHN0cmluZyA9IG1ha2VTdHJpbmcoIlNpemU6ICIsIHNpemUud2lkdGgoKSwg
IiB4ICIsIHNpemUuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBU
ZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CisgICAgY29udGV4
dC5kcmF3VGV4dChzdGF0c0ZvbnQsIEdyYXBoaWNzVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcp
KSksIHN0YXRzTG9jYXRpb24pOwogCiAgICAgaWYgKG1vY2tDYW1lcmEoKSkgewogICAgICAgICBz
dGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKICAgICAgICAgc3RyaW5nID0g
bWFrZVN0cmluZygiUHJlc2V0IHNpemU6ICIsIGNhcHR1cmVTaXplLndpZHRoKCksICIgeCAiLCBj
YXB0dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250
LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CisgICAgICAg
IGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBHcmFwaGljc1RleHRSdW4oKFN0cmluZ1ZpZXco
c3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKIAogICAgICAgICBjb25zdCBjaGFyKiBjYW1lcmE7
CiAgICAgICAgIHN3aXRjaCAoZmFjaW5nTW9kZSgpKSB7CkBAIC00MDAsMTAgKzQwMCwxMCBAQCB2
b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiAgICAgICAgIH0KICAgICAgICAgc3RyaW5nID0gbWFrZVN0cmluZygiQ2FtZXJhOiAi
LCBjYW1lcmEpOwogICAgICAgICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXpl
KTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1Zp
ZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChz
dGF0c0ZvbnQsIEdyYXBoaWNzVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9j
YXRpb24pOwogICAgIH0gZWxzZSBpZiAoIW5hbWUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0
c0xvY2F0aW9uLm1vdmUoMCwgbV9zdGF0c0ZvbnRTaXplKTsKLSAgICAgICAgY29udGV4dC5kcmF3
VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4geyBuYW1lKCkgfSwgc3RhdHNMb2NhdGlvbik7CisgICAg
ICAgIGNvbnRleHQuZHJhd1RleHQoc3RhdHNGb250LCBHcmFwaGljc1RleHRSdW4geyBuYW1lKCkg
fSwgc3RhdHNMb2NhdGlvbik7CiAgICAgfQogCiAgICAgRmxvYXRQb2ludCBiaXBCb3BMb2NhdGlv
bihjYXB0dXJlU2l6ZS53aWR0aCgpICogLjYsIGNhcHR1cmVTaXplLmhlaWdodCgpICogLjYpOwpA
QCAtNDExLDExICs0MTEsMTEgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1Rl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGlmIChmcmFtZU1vZCA8PSAxNSkgewog
ICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Y3lhbik7CiAgICAgICAgIFN0cmlu
ZyBiaXAoIkJpcCJfcyk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoYmlwQm9wRm9udCwgVGV4
dFJ1bihTdHJpbmdWaWV3KGJpcCkpLCBiaXBCb3BMb2NhdGlvbik7CisgICAgICAgIGNvbnRleHQu
ZHJhd1RleHQoYmlwQm9wRm9udCwgR3JhcGhpY3NUZXh0UnVuKFN0cmluZ1ZpZXcoYmlwKSksIGJp
cEJvcExvY2F0aW9uKTsKICAgICB9IGVsc2UgaWYgKGZyYW1lTW9kID4gMzAgJiYgZnJhbWVNb2Qg
PD0gNDUpIHsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnllbGxvdyk7CiAg
ICAgICAgIFN0cmluZyBib3AoIkJvcCJfcyk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQoYmlw
Qm9wRm9udCwgVGV4dFJ1bihTdHJpbmdWaWV3KGJvcCkpLCBiaXBCb3BMb2NhdGlvbik7CisgICAg
ICAgIGNvbnRleHQuZHJhd1RleHQoYmlwQm9wRm9udCwgR3JhcGhpY3NUZXh0UnVuKFN0cmluZ1Zp
ZXcoYm9wKSksIGJpcEJvcExvY2F0aW9uKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggYWM2ZTI0NGQwNDFlLi4xNDlhZTY1
NWU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRXaW4uaCIKKyNp
bmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRJ
bmRpY2F0b3IuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRleHRS
ZW5kZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVVJM
Lmg+CkBAIC0xNTEsOCArMTUxLDggQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxp
bmsoRWxlbWVudCYsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIFQKICAgICB9CiAK
ICAgICAvLyBGaXJzdCBzdGVwIGluIGRyYXdpbmcgdGhlIGxpbmsgZHJhZyBpbWFnZSB3aWR0aC4K
LSAgICBUZXh0UnVuIGxhYmVsUnVuKGxhYmVsKTsKLSAgICBUZXh0UnVuIHVybFJ1bih1cmxTdHJp
bmcpOworICAgIEdyYXBoaWNzVGV4dFJ1biBsYWJlbFJ1bihsYWJlbCk7CisgICAgR3JhcGhpY3NU
ZXh0UnVuIHVybFJ1bih1cmxTdHJpbmcpOwogICAgIEludFNpemUgbGFiZWxTaXplKGxhYmVsRm9u
dC0+d2lkdGgobGFiZWxSdW4pLCBsYWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKyBs
YWJlbEZvbnQtPmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpKTsKIAogICAgIGlmIChsYWJlbFNpemUu
d2lkdGgoKSA+IE1heERyYWdMYWJlbFN0cmluZ1dpZHRoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDI0OGUzZGMxZTM4Mi4uYWNkNTZkYTJk
YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkdESVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFdpbi5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhXbmREQy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKQEAgLTQ4LDcgKzQ5LDYgQEAKICNp
bmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lV2luLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUg
IldlYkNvcmVJbnN0YW5jZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvV2luZG93c0V4dHJhcy5oPgpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgUG9w
dXBNZW51V2luOjpjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYgciwgRnJh
bWVWaWV3KiB2KQogICAgICAgICAgICAgaXRlbUZvbnQudXBkYXRlKG1fcG9wdXBDbGllbnQtPmZv
bnRTZWxlY3RvcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIHBvcHVwV2lkdGggPSBzdGQ6Om1h
eChwb3B1cFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKGl0ZW1Gb250LndpZHRoKFRleHRS
dW4odGV4dCkpKSkpOworICAgICAgICBwb3B1cFdpZHRoID0gc3RkOjptYXgocG9wdXBXaWR0aCwg
c3RhdGljX2Nhc3Q8aW50PihjZWlsZihpdGVtRm9udC53aWR0aChHcmFwaGljc1RleHRSdW4odGV4
dCkpKSkpOwogICAgIH0KIAogICAgIGlmIChuYXR1cmFsSGVpZ2h0ID4gbWF4UG9wdXBIZWlnaHQp
CkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAKICAgICAgICAgU3RyaW5nIGl0ZW1UZXh0ID0gY2xp
ZW50KCktPml0ZW1UZXh0KGluZGV4KTsKIAotICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRl
eHQsIDAsIDAsIEFsbG93TGVmdEV4cGFuc2lvbiwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwg
aXRlbVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKKyAgICAgICAgR3JhcGhpY3NU
ZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93TGVmdEV4cGFuc2lvbiwgaXRlbVN0
eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgp
KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Iob3B0aW9uVGV4dENvbG9yKTsKIAogICAg
ICAgICBGb250Q2FzY2FkZSBpdGVtRm9udCA9IG1fZm9udDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAppbmRleCBlOWMzYzlhZWYw
MGIuLmUxNjQ5ZWNlNzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcApAQCAtMjgsMTQgKzI4LDE0IEBACiAjaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRl
ICJTdHJpbmdUcnVuY2F0b3IuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHRydWU7CiAK
LXN0YXRpYyBib29sIGlzT25lTGVmdFRvUmlnaHRSdW4oY29uc3QgVGV4dFJ1biYgcnVuKQorc3Rh
dGljIGJvb2wgaXNPbmVMZWZ0VG9SaWdodFJ1bihjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1bikK
IHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bi5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAg
IFVDaGFyRGlyZWN0aW9uIGRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihydW5baV0pOwpAQCAt
NDcsNyArNDcsNyBAQCBzdGF0aWMgYm9vbCBpc09uZUxlZnRUb1JpZ2h0UnVuKGNvbnN0IFRleHRS
dW4mIHJ1bikKIAogc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEludFBvaW50JiBwb2ludCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IENvbG9yJiBjb2xvciwgaW50IHVuZGVybGluZWRJ
bmRleCkKIHsKLSAgICBUZXh0UnVuIHJ1bih0ZXh0KTsKKyAgICBHcmFwaGljc1RleHRSdW4gcnVu
KHRleHQpOwogCiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3IpOwogICAgIGlmIChpc09u
ZUxlZnRUb1JpZ2h0UnVuKHJ1bikpCkBAIC02MCwxMiArNjAsMTIgQEAgc3RhdGljIHZvaWQgZG9E
cmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVmb3JlV2lkdGg7CiAgICAgICAgIGlmICh1bmRlcmxp
bmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAgICBUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3
KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKKyAgICAgICAgICAgIEdyYXBo
aWNzVGV4dFJ1biBiZWZvcmVSdW4oU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcoMCwgdW5kZXJs
aW5lZEluZGV4KSk7CiAgICAgICAgICAgICBiZWZvcmVXaWR0aCA9IGZvbnQud2lkdGgoYmVmb3Jl
UnVuKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiZWZvcmVXaWR0aCA9IDA7CiAKLSAg
ICAgICAgVGV4dFJ1biB1bmRlcmxpbmVkUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHVu
ZGVybGluZWRJbmRleCwgMSkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdW5kZXJsaW5lZFJ1
bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZyh1bmRlcmxpbmVkSW5kZXgsIDEpKTsKICAgICAg
ICAgaW50IHVuZGVybGluZWRXaWR0aCA9IGZvbnQud2lkdGgodW5kZXJsaW5lZFJ1bik7CiAKICAg
ICAgICAgSW50UG9pbnQgdW5kZXJsaW5lUG9pbnQocG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dseXBoRGlzcGxheUxpc3RDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dseXBoRGlzcGxheUxpc3RDYWNoZS5oCmluZGV4IGExNWE3NDQ4NWE1Zi4u
ZDI2NTA5NTg5MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhE
aXNwbGF5TGlzdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dseXBoRGlz
cGxheUxpc3RDYWNoZS5oCkBAIC0yNiw5ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVk
ZSAiSW5NZW1vcnlEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNhY2hlOwogICAgIH0KIAot
ICAgIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0KGNvbnN0IExheW91dFJ1biYgcnVuLCBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuKQorICAgIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCogZ2V0KGNvbnN0
IExheW91dFJ1biYgcnVuLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4pCiAgICAgewogICAgICAg
ICBpZiAoTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJl
c3N1cmUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2dseXBoUnVuTWFwLmlzRW1wdHkoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKaW5kZXgg
MjdlNWQyMTE4NDBlLi44MjM5YjgwZjUzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lFbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcApAQCAtMjMsMTEgKzIzLDExIEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVkZSAi
TGVnYWN5Um9vdElubGluZUJveC5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgotI2luY2x1ZGUg
IlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBMZWdhY3lFbGxpcHNpc0JveDo6
cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAg
Ly8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3Qg
dGV4dCBydW4gZmxhZ3MgYmVsb3cuCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgTGF5
b3V0VW5pdCh4KCkgKyBwYWludE9mZnNldC54KCkpLCBMYXlvdXRVbml0KHkoKSArIHBhaW50T2Zm
c2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCkpLCAwX2x1LCByb290Qm94LnNlbGVjdGlv
bkhlaWdodCgpIH07Ci0gICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4
dFJ1bihtX3N0ciwgc3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pOworICAgIGF1dG8gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4obV9zdHIsIHN0eWxlLCBBbGxvd1JpZ2h0RXhw
YW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0
aW9uUmVjdCk7CiAgICAgY29udGV4dC5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0
aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSksIGMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guY3BwCmluZGV4IDE5NmY2Mzc5ZDkwNi4u
Yjk5ZTU3MTAyNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5
SW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZVRleHRCb3guY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgTGF5b3V0UmVjdCBMZWdhY3lJbmxp
bmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlvblJlY3QodW5zaWduZWQgc3RhcnRQb3MsIHVuc2lnbmVk
IGUKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcCA9IHRoaXMtPnNlbGVjdGlvblRvcCgpOwog
ICAgIExheW91dFVuaXQgc2VsZWN0aW9uSGVpZ2h0ID0gdGhpcy0+c2VsZWN0aW9uSGVpZ2h0KCk7
CiAKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgYXV0byB0ZXh0
UnVuID0gY3JlYXRlVGV4dFJ1bigpOwogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsg
TGF5b3V0VW5pdChsb2dpY2FsTGVmdCgpKSwgc2VsZWN0aW9uVG9wLCBMYXlvdXRVbml0KGxvZ2lj
YWxXaWR0aCgpKSwgc2VsZWN0aW9uSGVpZ2h0IH07CiAgICAgLy8gQXZvaWQgbWVhc3VyaW5nIHRo
ZSB0ZXh0IHdoZW4gdGhlIGVudGlyZSBsaW5lIGJveCBpcyBzZWxlY3RlZCBhcyBhbiBvcHRpbWl6
YXRpb24uCkBAIC01NzIsNyArNTcyLDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBi
b29sIGhpZ2hsaWdodERlY29yYXRpb25zID0gIU1hcmtlZFRleHQ6OmNvbGxlY3RGb3JIaWdobGln
aHRzKHJlbmRlcmVyKCksIHBhcmVudCgpLT5yZW5kZXJlcigpLCBzZWxlY3RhYmxlUmFuZ2UoKSwg
TWFya2VkVGV4dDo6UGFpbnRQaGFzZTo6RGVjb3JhdGlvbikuaXNFbXB0eSgpOwogICAgIGJvb2wg
bGluZURlY29yYXRpb25zID0gIXRleHREZWNvcmF0aW9ucy5pc0VtcHR5KCk7CiAgICAgaWYgKChs
aW5lRGVjb3JhdGlvbnMgfHwgaGlnaGxpZ2h0RGVjb3JhdGlvbnMpICYmIHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlOjpTZWxlY3Rpb24pIHsKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0g
Y3JlYXRlVGV4dFJ1bigpOworICAgICAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7
CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHRSdW4ubGVuZ3RoKCk7CiAgICAgICAgIGlm
IChtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikKICAgICAgICAgICAgIGxlbmd0aCA9IG1f
dHJ1bmNhdGlvbjsKQEAgLTY4Myw3ICs2ODMsNyBAQCBGbG9hdFJlY3QgTGVnYWN5SW5saW5lVGV4
dEJveDo6Y2FsY3VsYXRlRG9jdW1lbnRNYXJrZXJCb3VuZHMoY29uc3QgTWFya2VkVGV4dCYgbQog
CiAgICAgLy8gQXZvaWQgbWVhc3VyaW5nIHRoZSB0ZXh0IHdoZW4gdGhlIGVudGlyZSBsaW5lIGJv
eCBpcyBzZWxlY3RlZCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgICAgaWYgKG1hcmtlZFRleHQuc3Rh
cnRPZmZzZXQgfHwgbWFya2VkVGV4dC5lbmRPZmZzZXQgIT0gc2VsZWN0YWJsZVJhbmdlKCkuY2xh
bXAoZW5kKCkpKSB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gY3JlYXRlVGV4dFJ1bigpOworICAg
ICAgICBhdXRvIHJ1biA9IGNyZWF0ZVRleHRSdW4oKTsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0ID0gTGF5b3V0UmVjdCgwLCB5LCAwLCBoZWlnaHQpOwogICAgICAgICBsaW5lRm9u
dCgpLmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgbWFya2Vk
VGV4dC5zdGFydE9mZnNldCwgbWFya2VkVGV4dC5lbmRPZmZzZXQpOwogICAgICAgICByZXR1cm4g
c2VsZWN0aW9uUmVjdDsKQEAgLTc3Miw3ICs3NzIsNyBAQCB2b2lkIExlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
CiAKICAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVkLCB3ZSBsZXQgdGhl
IHRoaW5nIGJlaW5nIHBhaW50ZWQgaW4gdGhlIHRydW5jYXRpb24KICAgICAvLyBkcmF3IGl0cyBv
d24gaGlnaGxpZ2h0LgotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oKTsKKyAg
ICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CiAKICAgICBjb25zdCBMZWdhY3lSb290
SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwogICAgIExheW91dFVuaXQgc2VsZWN0aW9uQm90
dG9tID0gcm9vdEJveC5zZWxlY3Rpb25Cb3R0b20oKTsKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lk
IExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEZvcmVncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0CiAgICAgaWYgKGF1dG8qIGRlYnVnU2hhZG93ID0gZGVidWdUZXh0
U2hhZG93KCkpCiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdyk7CiAK
LSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgYXV0byB0ZXh0UnVu
ID0gY3JlYXRlVGV4dFJ1bigpOwogICAgIHRleHRQYWludGVyLnNldEdseXBoRGlzcGxheUxpc3RJ
Zk5lZWRlZCgqdGhpcywgcGFpbnRJbmZvLCBmb250LCBjb250ZXh0LCB0ZXh0UnVuKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlciB7IGNvbnRleHQsIGZhbHNlIH07
CkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtl
ZFRleHREZWNvcmF0aW9uKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdAogCiAgICAgLy8gTm90
ZSB0aGF0IGlmIHRoZSB0ZXh0IGlzIHRydW5jYXRlZCwgd2UgbGV0IHRoZSB0aGluZyBiZWluZyBw
YWludGVkIGluIHRoZSB0cnVuY2F0aW9uCiAgICAgLy8gZHJhdyBpdHMgb3duIGRlY29yYXRpb24u
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOworICAgIGF1dG8gdGV4dFJ1
biA9IGNyZWF0ZVRleHRSdW4oKTsKIAogICAgIC8vIEF2b2lkIG1lYXN1cmluZyB0aGUgdGV4dCB3
aGVuIHRoZSBlbnRpcmUgbGluZSBib3ggaXMgc2VsZWN0ZWQgYXMgYW4gb3B0aW1pemF0aW9uLgog
ICAgIEZsb2F0UmVjdCBzbmFwcGVkU2VsZWN0aW9uUmVjdCA9IGJveFJlY3Q7CkBAIC0xMDU1LDE1
ICsxMDU1LDE1IEBAIGZsb2F0IExlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9uRm9yT2Zmc2V0
KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBM
YXlvdXRSZWN0KGxvZ2ljYWxMZWZ0KCksIDAsIDAsIDApOwogICAgIGJvb2wgaWdub3JlQ29tYmlu
ZWRUZXh0ID0gdHJ1ZTsKICAgICBib29sIGlnbm9yZUh5cGhlbiA9IHRydWU7Ci0gICAgVGV4dFJ1
biB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihpZ25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhl
bik7CisgICAgYXV0byB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihpZ25vcmVDb21iaW5lZFRleHQs
IGlnbm9yZUh5cGhlbik7CiAgICAgbGluZUZvbnQoKS5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4
dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICBy
ZXR1cm4gc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlv
blJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCB0ZXh0UnVu
Lmx0cigpKS5tYXhYKCk7CiB9CiAKLVRleHRSdW4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y3JlYXRl
VGV4dFJ1bihib29sIGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0
CitHcmFwaGljc1RleHRSdW4gTGVnYWN5SW5saW5lVGV4dEJveDo6Y3JlYXRlVGV4dFJ1bihib29s
IGlnbm9yZUNvbWJpbmVkVGV4dCwgYm9vbCBpZ25vcmVIeXBoZW4pIGNvbnN0CiB7CiAgICAgY29u
c3QgYXV0byYgc3R5bGUgPSBsaW5lU3R5bGUoKTsKLSAgICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0
KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKSwgdGV4dFBvcygpLCBleHBhbnNpb24o
KSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9uKCksIGRpck92ZXJyaWRlKCkgfHwgc3R5
bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsLCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1w
bGVGb250Q29kZVBhdGgoKSB9OworICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dChp
Z25vcmVDb21iaW5lZFRleHQsIGlnbm9yZUh5cGhlbiksIHRleHRQb3MoKSwgZXhwYW5zaW9uKCks
IGV4cGFuc2lvbkJlaGF2aW9yKCksIGRpcmVjdGlvbigpLCBkaXJPdmVycmlkZSgpIHx8IHN0eWxl
LnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCwgIXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxl
Rm9udENvZGVQYXRoKCkgfTsKICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNl
V2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJldHVybiB0ZXh0UnVuOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKaW5kZXgg
ODkyZjIwMjA4Mjk1Li41MGViZTc1YTI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZVRleHRCb3guaApAQCAtMjIsMTAgKzIyLDEwIEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiTGVnYWN5SW5s
aW5lQm94LmgiCiAjaW5jbHVkZSAiTWFya2VkVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgU2hhZG93RGF0YSogZGVidWdUZXh0U2hhZG93KCk7
CiAKICAgICBTdHJpbmcgdGV4dChib29sIGlnbm9yZUNvbWJpbmVkVGV4dCA9IGZhbHNlLCBib29s
IGlnbm9yZUh5cGhlbiA9IGZhbHNlKSBjb25zdDsgLy8gVGhlIGVmZmVjdGl2ZSB0ZXh0IGZvciB0
aGUgcnVuLgotICAgIFRleHRSdW4gY3JlYXRlVGV4dFJ1bihib29sIGlnbm9yZUNvbWJpbmVkVGV4
dCA9IGZhbHNlLCBib29sIGlnbm9yZUh5cGhlbiA9IGZhbHNlKSBjb25zdDsKKyAgICBHcmFwaGlj
c1RleHRSdW4gY3JlYXRlVGV4dFJ1bihib29sIGlnbm9yZUNvbWJpbmVkVGV4dCA9IGZhbHNlLCBi
b29sIGlnbm9yZUh5cGhlbiA9IGZhbHNlKSBjb25zdDsKIAogICAgIEV4cGFuc2lvbkJlaGF2aW9y
IGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDc2YWRhZGQwZGNiMy4uMGM1NWQ1OWNiZGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTMxMDAsNyArMzEwMCw3IEBAIGNv
bnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIlJl
bmRlckJsb2NrIjsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCitHcmFwaGljc1RleHRSdW4g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1
bkZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gdGV4dERpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246
OkxUUjsKICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygp
ID09IE9yZGVyOjpWaXN1YWw7CkBAIC0zMTE2LDM3ICszMTE2LDM3IEBAIFRleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBjb25zdCBSZW5k
ZXJTdHlsZSYKICAgICAvLyAyLiBUaGlzIHJlcGxhY2VtZW50IGRvZXNuJ3QgYWZmZWN0IHN0cmlu
ZyBpbmRpY2VzLiBXZSdyZSByZXBsYWNpbmcgYSBzaW5nbGUgVW5pY29kZSBjb2RlIHVuaXQgd2l0
aCBhbm90aGVyIFVuaWNvZGUgY29kZSB1bml0LgogICAgIC8vIEhvdyBjb252ZW5pZW50LgogICAg
IGF1dG8gdXBkYXRlZFN0cmluZyA9IFJlbmRlckJsb2NrOjp1cGRhdGVTZWN1cml0eURpc2NDaGFy
YWN0ZXJzKHN0eWxlLCBzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAg
cmV0dXJuIFRleHRSdW4oV1RGTW92ZSh1cGRhdGVkU3RyaW5nKSwgMCwgMCwgZXhwYW5zaW9uLCB0
ZXh0RGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKKyAgICByZXR1cm4gR3JhcGhpY3NU
ZXh0UnVuIHsgV1RGTW92ZSh1cGRhdGVkU3RyaW5nKSwgMCwgMCwgZXhwYW5zaW9uLCB0ZXh0RGly
ZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJyaWRlIH07CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3Mp
CitHcmFwaGljc1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIGNvbnN0cnVjdFRl
eHRSdW4oU3RyaW5nVmlldyhzdHJpbmcpLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiB9CiAK
LVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0cmluZyYg
YXRvbVN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBl
eHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZs
YWdzIGZsYWdzKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcoYXRv
bVN0cmluZyksIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKK0dyYXBoaWNzVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikK
IHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1ZpZXcoKSwgc3R5bGUs
IGV4cGFuc2lvbik7CiB9CiAKLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
Y29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQor
R3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRl
clRleHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKIHsKICAgICB1bnNp
Z25lZCBzdG9wID0gb2Zmc2V0ICsgbGVuZ3RoOwogICAgIEFTU0VSVChzdG9wIDw9IHRleHQudGV4
dCgpLmxlbmd0aCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bih0ZXh0LnN0cmluZ1Zp
ZXcob2Zmc2V0LCBzdG9wKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKLVRleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb24pCitHcmFwaGljc1RleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCiB7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdFRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpLCBzdHlsZSwgZXhwYW5z
aW9uKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3Rl
cnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCA2NTBjNjYzZmQ4MjIuLjc1NTk5ZWU5OGM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIzLDkgKzIzLDkgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiR2FwUmVjdHMuaCIKKyNpbmNsdWRlICJHcmFwaGljc1RleHRSdW4u
aCIKICNpbmNsdWRlICJMaW5lV2lkdGguaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKLSNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgogCkBAIC0xOTUsMTkgKzE5NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBv
YmouaXNGbG9hdGluZygpIHx8IChvYmouaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIW9iai5z
dHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpICYmICFvYmouY29udGFpbmVyKCkt
PmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVj
dFRleHRSdW4oU3RyaW5nVmlldywgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgIHN0YXRpYyBHcmFw
aGljc1RleHRSdW4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3LCBjb25zdCBSZW5kZXJTdHls
ZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1
bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGlj
IEdyYXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJl
bmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9u
LCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKLSAgICBzdGF0aWMgVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYs
CisgICAgc3RhdGljIEdyYXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0g
RGVmYXVsdEV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzID0gRGVmYXVsdFRleHRSdW5GbGFncyk7Ci0g
ICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiwgY29u
c3QgUmVuZGVyU3R5bGUmLAorICAgIHN0YXRpYyBHcmFwaGljc1RleHRSdW4gY29uc3RydWN0VGV4
dFJ1bihjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBh
bnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwotICAgIHN0YXRpYyBUZXh0UnVuIGNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNzVGV4dFJ1
biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25CZWhh
dmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRl
eHRSdW4oY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVu
ZGVyU3R5bGUmLAorICAgIHN0YXRpYyBHcmFwaGljc1RleHRSdW4gY29uc3RydWN0VGV4dFJ1bihj
b25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHls
ZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7Ci0gICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNz
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBEZWZhdWx0RXhwYW5zaW9uKTsKICAgICAKICAgICBMYXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKaW5kZXggZTFjZDAyNDlhZDcwLi5lYzc0ZTlmZmYwYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Rl
eHRSdW4uaCIKICNpbmNsdWRlICJIVE1MRW1iZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKQEAgLTUzLDcgKzU0LDYgQEAK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KIApAQCAtMjM1LDcgKzIzNSw3
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgRmxvYXRSZWN0IHJlcGxhY2VtZW50VGV4
dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250Q2FzY2FkZSBmb250Owot
ICAgIFRleHRSdW4gcnVuKGVtcHR5U3RyaW5nKCkpOworICAgIEdyYXBoaWNzVGV4dFJ1biBydW4o
ZW1wdHlTdHJpbmcoKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAgIGdldFJlcGxhY2VtZW50
VGV4dEdlb21ldHJ5KHBhaW50T2Zmc2V0LCBjb250ZW50UmVjdCwgaW5kaWNhdG9yUmVjdCwgcmVw
bGFjZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0LCBmb250LCBydW4sIHRleHRXaWR0aCk7CiAKQEAg
LTI5MSwxMyArMjkxLDEzIEBAIExheW91dFJlY3QgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJl
cGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExheW91dFBvaW50JiBhCiAgICAgRmxvYXRSZWN0
IHJlcGxhY2VtZW50VGV4dFJlY3Q7CiAgICAgRmxvYXRSZWN0IGFycm93UmVjdDsKICAgICBGb250
Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKGVtcHR5U3RyaW5nKCkpOworICAgIEdyYXBo
aWNzVGV4dFJ1biBydW4oZW1wdHlTdHJpbmcoKSk7CiAgICAgZmxvYXQgdGV4dFdpZHRoOwogICAg
IGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGFjY3VtdWxhdGVkT2Zmc2V0LCBjb250ZW50UmVj
dCwgaW5kaWNhdG9yUmVjdCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgYXJyb3dSZWN0LCBmb250LCBy
dW4sIHRleHRXaWR0aCk7CiAgICAgcmV0dXJuIExheW91dFJlY3QoaW5kaWNhdG9yUmVjdCk7CiB9
CiAKLXZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5
KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgRmxvYXRSZWN0JiBjb250ZW50
UmVjdCwgRmxvYXRSZWN0JiBpbmRpY2F0b3JSZWN0LCBGbG9hdFJlY3QmIHJlcGxhY2VtZW50VGV4
dFJlY3QsIEZsb2F0UmVjdCYgYXJyb3dSZWN0LCBGb250Q2FzY2FkZSYgZm9udCwgVGV4dFJ1biYg
cnVuLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdAordm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3QmIGluZGljYXRvclJlY3Qs
IEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0JiBhcnJvd1JlY3QsIEZv
bnRDYXNjYWRlJiBmb250LCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQmIHRleHRXaWR0aCkg
Y29uc3QKIHsKICAgICBib29sIGluY2x1ZGVzQXJyb3cgPSBzaG91bGRVbmF2YWlsYWJsZVBsdWdp
bk1lc3NhZ2VCZUJ1dHRvbihwYWdlKCksIG1fcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pOwog
CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0UmVwbGFj
ZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWwKICAgICBmb250ID0g
Rm9udENhc2NhZGUoV1RGTW92ZShmb250RGVzY3JpcHRpb24pLCAwLCAwKTsKICAgICBmb250LnVw
ZGF0ZSgwKTsKIAotICAgIHJ1biA9IFRleHRSdW4obV91bmF2YWlsYWJsZVBsdWdpblJlcGxhY2Vt
ZW50VGV4dCk7CisgICAgcnVuID0gR3JhcGhpY3NUZXh0UnVuKG1fdW5hdmFpbGFibGVQbHVnaW5S
ZXBsYWNlbWVudFRleHQpOwogICAgIHRleHRXaWR0aCA9IGZvbnQud2lkdGgocnVuKTsKIAogICAg
IHJlcGxhY2VtZW50VGV4dFJlY3Quc2V0U2l6ZShGbG9hdFNpemUodGV4dFdpZHRoICsgcmVwbGFj
ZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1hcmdpbiArIChpbmNsdWRlc0Fycm93ID8gcmVw
bGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSaWdodFRleHRNYXJnaW5XaXRoQXJyb3cgOiByZXBsYWNl
bWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4dE1hcmdpbiksIHJlcGxhY2VtZW50VGV4dFJvdW5k
ZWRSZWN0SGVpZ2h0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5oCmluZGV4IGViNmJkNDM2MjFkYi4uOWM4NmY0MWM4OGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtMjYsOCAr
MjYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzVGV4dFJ1bjsK
IGNsYXNzIE1vdXNlRXZlbnQ7Ci1jbGFzcyBUZXh0UnVuOwogCiAvLyBSZW5kZXJlciBmb3IgZW1i
ZWRzIGFuZCBvYmplY3RzLCBvZnRlbiwgYnV0IG5vdCBhbHdheXMsIHJlbmRlcmVkIHZpYSBwbHVn
LWlucy4KIC8vIEZvciBleGFtcGxlLCA8ZW1iZWQgc3JjPSJmb28uaHRtbCI+IGRvZXMgbm90IGlu
dm9rZSBhIHBsdWctaW4uCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRV
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZChib29sKTsKICAgICBib29sIGlzSW5V
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBNb3VzZUV2ZW50JikgY29uc3Q7CiAgICAg
Ym9vbCBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgRmxvYXRQb2ludCYpIGNv
bnN0OwotICAgIHZvaWQgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3Qm
IGluZGljYXRvclJlY3QsIEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0
JiBhcnJvd1JlY3QsIEZvbnRDYXNjYWRlJiwgVGV4dFJ1biYsIGZsb2F0JiB0ZXh0V2lkdGgpIGNv
bnN0OworICAgIHZvaWQgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3Qm
IGluZGljYXRvclJlY3QsIEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0
JiBhcnJvd1JlY3QsIEZvbnRDYXNjYWRlJiwgR3JhcGhpY3NUZXh0UnVuJiwgZmxvYXQmIHRleHRX
aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCiAgICAgYm9vbCBt
X2lzUGx1Z2luVW5hdmFpbGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCA4Nzg1ZjIyOTljODAuLjNiMDFkZDY2
ZWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxv
YWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIK
ICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJY29uLmgiCkBAIC0zNCw3ICsz
NSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2luCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpGb3JlZ3Jv
dW5kKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheWVkRmlsZW5hbWUgPSBmaWxlVGV4
dFZhbHVlKCk7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250
Q2FzY2FkZSgpOwotICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKGRp
c3BsYXllZEZpbGVuYW1lLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBSZXNwZWN0RGly
ZWN0aW9uIHwgUmVzcGVjdERpcmVjdGlvbk92ZXJyaWRlKTsKKyAgICAgICAgYXV0byB0ZXh0UnVu
ID0gY29uc3RydWN0VGV4dFJ1bihkaXNwbGF5ZWRGaWxlbmFtZSwgc3R5bGUoKSwgQWxsb3dSaWdo
dEV4cGFuc2lvbiwgUmVzcGVjdERpcmVjdGlvbiB8IFJlc3BlY3REaXJlY3Rpb25PdmVycmlkZSk7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpbnQgaWNvbkhlaWdodCA9IG5v
ZGVIZWlnaHQodXBsb2FkQnV0dG9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKaW5kZXggZWM0ZjhmZmJlNzAwLi5lNDExOGJmMjBlY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAKICAgICAgICAgICAgICAgICAvLyBPbmx5IGRyYXcgdGhlIGFsdCB0
ZXh0IGlmIGl0J2xsIGZpdCB3aXRoaW4gdGhlIGNvbnRlbnQgYm94LAogICAgICAgICAgICAgICAg
IC8vIGFuZCBvbmx5IGlmIGl0IGZpdHMgYWJvdmUgdGhlIGVycm9yIGltYWdlLgotICAgICAgICAg
ICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRl
eHQsIHN0eWxlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCkpOwogICAgICAgICAgICAgICAgIExheW91
dFVuaXQgdGV4dFdpZHRoIHsgZm9udC53aWR0aCh0ZXh0UnVuKSB9OwogICAgICAgICAgICAgICAg
IGlmIChlcnJvclBpY3R1cmVEcmF3bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxl
U2l6ZS53aWR0aCgpID49IHRleHRXaWR0aCAmJiBmb250TWV0cmljcy5oZWlnaHQoKSA8PSBpbWFn
ZU9mZnNldC5oZWlnaHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggNmU4YWI5MWFmNWQxLi5hODk1ZTAzMDBiOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMjkw
LDcgKzMyOTAsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlv
bihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2Fk
ZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBk
YXRlKG51bGxwdHIpOwogCi0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3Jp
cHRpb24ubmFtZSk7CisgICAgICAgIGF1dG8gdGV4dFJ1biA9IEdyYXBoaWNzVGV4dFJ1bihkZXNj
cmlwdGlvbi5uYW1lKTsKICAgICAgICAgaW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihkZXNjcmlw
dGlvbi5maWxsQ29sb3IpOwogCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCB0ZXh0R2FwID0gNDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAxZGU2OWQ2
OTM2ZWEuLjdhZDRjOWFiNGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRT
Y3JvbGxiYXIoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAg
ICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWlu
dEluZm8ucmVjdCkpOwogfQogCi1zdGF0aWMgTGF5b3V0U2l6ZSBpdGVtT2Zmc2V0Rm9yQWxpZ25t
ZW50KFRleHRSdW4gdGV4dFJ1biwgY29uc3QgUmVuZGVyU3R5bGUqIGl0ZW1TdHlsZSwgRm9udENh
c2NhZGUgaXRlbUZvbnQsIExheW91dFJlY3QgaXRlbUJvdWRpbmdCb3gpCitzdGF0aWMgTGF5b3V0
U2l6ZSBpdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuLCBjb25z
dCBSZW5kZXJTdHlsZSogaXRlbVN0eWxlLCBGb250Q2FzY2FkZSBpdGVtRm9udCwgTGF5b3V0UmVj
dCBpdGVtQm91ZGluZ0JveCkKIHsKICAgICBUZXh0QWxpZ25Nb2RlIGFjdHVhbEFsaWdubWVudCA9
IGl0ZW1TdHlsZS0+dGV4dEFsaWduKCk7CiAgICAgLy8gRklYTUU6IEZpcmVmb3ggZG9lc24ndCBy
ZXNwZWN0IFRleHRBbGlnbk1vZGU6Okp1c3RpZnkuIFNob3VsZCB3ZT8KQEAgLTQyNyw3ICs0Mjcs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRGaWxsQ29sb3IodGV4dENvbG9yKTsKIAotICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwg
MCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgaXRlbVN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJy
aWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSk7CisgICAgR3JhcGhpY3NUZXh0UnVu
IHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24sIGl0ZW1TdHlsZS5k
aXJlY3Rpb24oKSwgaXNPdmVycmlkZShpdGVtU3R5bGUudW5pY29kZUJpZGkoKSksIHRydWUpOwog
ICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgIExh
eW91dFJlY3QgciA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7
CiAgICAgci5tb3ZlKGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQodGV4dFJ1biwgJml0ZW1TdHlsZSwg
aXRlbUZvbnQsIHIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCA5NzFjN2UyNzA5OTMuLjhhM2M5OWFiMDhmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTU0NCw5ICsxNTQ0LDkg
QEAgc3RhdGljIFN0cmluZyByZXZlcnNlZChTdHJpbmdWaWV3IHN0cmluZykKIH0KIAogc3RydWN0
IFJlbmRlckxpc3RNYXJrZXI6OlRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmluZyB7Ci0gICAgVGV4
dFJ1biB0ZXh0UnVuOworICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuOwogICAgIFN0cmluZyB1
bmRlcmx5aW5nU3RyaW5nOwotICAgIG9wZXJhdG9yIGNvbnN0IFRleHRSdW4mKCkgY29uc3QgeyBy
ZXR1cm4gdGV4dFJ1bjsgfQorICAgIG9wZXJhdG9yIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYoKSBj
b25zdCB7IHJldHVybiB0ZXh0UnVuOyB9CiB9OwogCiBhdXRvIFJlbmRlckxpc3RNYXJrZXI6OnRl
eHRSdW4oKSBjb25zdCAtPiBUZXh0UnVuV2l0aFVuZGVybHlpbmdTdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDc3MzIzM2MxNGZjMi4uNjc5
OGMxY2ExMzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2xvckJsZW5kaW5nLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Rl
eHRSdW4uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKQEAgLTQ1LDcgKzQ2LDYg
QEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0y
MDcsMTMgKzIwNywxMyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25zV2lkdGgo
KQogICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChv
cHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAwKTsKICAgICAgICAgICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxl
KCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCkpOworICAgICAgICAgICAgICAgIGF1
dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgb3B0aW9uV2lkdGggKz0gZm9udC53aWR0aChydW4pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBzdGQ6Om1heChtYXhPcHRpb25XaWR0
aCwgb3B0aW9uV2lkdGgpOwogICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRl
KCk7Ci0gICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKHRleHQsIHN0eWxlKCkpOworICAgICAgICAgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAgICAgICAgIG1heE9wdGlvbldp
ZHRoID0gc3RkOjptYXgobWF4T3B0aW9uV2lkdGgsIGZvbnQud2lkdGgocnVuKSk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggOWM5
N2UwOGMxOWFiLi5jMTRhZTk1MjI0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKQEAgLTcwNiw3ICs3MDYsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IFJlbmRlclRl
eHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCB1bnNpZ25lZCBzdAogICAg
ICAgICAgICAgcmV0dXJuIGNvbWJpbmVUZXh0LmNvbWJpbmVkVGV4dFdpZHRoKGYpOwogICAgIH0K
IAotICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMs
IHN0YXJ0LCBsZW4sIHN0eWxlKTsKKyAgICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1
Y3RUZXh0UnVuKCp0aGlzLCBzdGFydCwgbGVuLCBzdHlsZSk7CiAgICAgcnVuLnNldENoYXJhY3Rl
clNjYW5Gb3JDb2RlUGF0aCghY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgIHJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
ICAgICBydW4uc2V0WFBvcyh4UG9zKTsKQEAgLTk0NSw3ICs5NDUsNyBAQCBzdGF0aWMgZmxvYXQg
bWF4V29yZEZyYWdtZW50V2lkdGgoUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZQogICAgICAgICBmcmFnbWVudFdpdGhIeXBoZW4uYXBwZW5kKHdvcmQuc3Vic3Ry
aW5nKHN1ZmZpeFN0YXJ0LCBmcmFnbWVudExlbmd0aCkpOwogICAgICAgICBmcmFnbWVudFdpdGhI
eXBoZW4uYXBwZW5kKHN0eWxlLmh5cGhlblN0cmluZygpKTsKIAotICAgICAgICBUZXh0UnVuIHJ1
biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGZyYWdtZW50V2l0aEh5cGhlbi50b1N0
cmluZygpLCBzdHlsZSk7CisgICAgICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4oZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKICAgICAgICAg
cnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghcmVuZGVyZXIuY2FuVXNlU2ltcGxlRm9u
dENvZGVQYXRoKCkpOwogICAgICAgICBmbG9hdCBmcmFnbWVudFdpZHRoID0gZm9udC53aWR0aChy
dW4sICZmYWxsYmFja0ZvbnRzLCAmZ2x5cGhPdmVyZmxvdyk7CiAKQEAgLTExNzIsNyArMTE3Miw3
IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgICAgICAgICAgICAgIG1fbWF4V2lk
dGggPSBjdXJyTWF4V2lkdGg7CiAgICAgICAgICAgICAgICAgY3Vyck1heFdpZHRoID0gMDsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bigqdGhpcywgaSwgMSwgc3R5bGUpOworICAgICAgICAgICAg
ICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGksIDEs
IHN0eWxlKTsKICAgICAgICAgICAgICAgICBydW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VX
aGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgICAgICAgICAgcnVuLnNldFhQ
b3MobGVhZFdpZHRoICsgY3Vyck1heFdpZHRoKTsKIApAQCAtMTQyNiw3ICsxNDI2LDcgQEAgYm9v
bCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcoKSBjb25z
dAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRo
ZSBmb250IGNvZGVwYXRoLgotICAgIFRleHRSdW4gcnVuKG1fdGV4dCk7CisgICAgR3JhcGhpY3NU
ZXh0UnVuIHJ1bihtX3RleHQpOwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgo
ZmFsc2UpOwogICAgIGlmIChmb250LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OkNvZGVQ
YXRoOjpTaW1wbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NDcsNyArMTU0Nyw3IEBA
IGZsb2F0IFJlbmRlclRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgY29u
c3QgRm9udENhc2NhZGUmIGYsIGZsb2F0CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdyA9
IHdpZHRoRnJvbUNhY2hlKGYsIGZyb20sIGxlbiwgeFBvcywgZmFsbGJhY2tGb250cywgZ2x5cGhP
dmVyZmxvdywgc3R5bGUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIGZyb20sIGxlbiwgc3R5bGUpOworICAg
ICAgICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCp0aGlzLCBmcm9t
LCBsZW4sIHN0eWxlKTsKICAgICAgICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCgh
Y2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgICAgICBydW4uc2V0VGFiU2l6ZSghc3R5
bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgIHJ1bi5z
ZXRYUG9zKHhQb3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKaW5kZXggMGYyODFhMDU3Y2Y2Li5iNjJhNGQyZmI2NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTQzLDcgKzE0Myw3
IEBAIGZsb2F0IFJlbmRlclRleHRDb250cm9sOjpnZXRBdmVyYWdlQ2hhcldpZHRoKCkKICAgICBj
b25zdCBVQ2hhciBjaCA9ICcwJzsKICAgICBjb25zdCBTdHJpbmcgc3RyID0gU3RyaW5nKCZjaCwg
MSk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFs
bG93UmlnaHRFeHBhbnNpb24pOworICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4o
c3RyLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uKTsKICAgICByZXR1cm4gZm9udC53aWR0
aCh0ZXh0UnVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCmluZGV4IDU0Nzk5MThhMjhlMC4uNjc4MDg5YmE5NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC02NDYsNyArNjQ2LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICBmbG9hdCBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4oc3RyaW5nLCBtX3N0eWxlKTsKKyAgICAgICAgYXV0byBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1fc3R5bGUpOwogICAgICAgICByZXR1cm4g
bV9mb250LndpZHRoKHJ1bik7CiAgICAgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKaW5kZXggOGM2MzcyZDRlNmRk
Li40MWYxZDcwYjQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRmlsdGVy
T3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSFRN
TEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9udEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVUZXh0Qm94U3R5bGUuaCIKQEAgLTMzLDcgKzM0LDYgQEAKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTaGFkb3dEYXRh
LmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIw
OSw3ICsyMDksNyBAQCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRl
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldAogewogfQogCi12b2lkIFRleHRE
ZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0
UnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFBvaW50JiBib3hP
cmlnaW4pCit2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbihj
b25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKIHsKICAgICBjb25zdCBhdXRvJiBmb250
TWV0cmljcyA9IG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgdGV4dERlY29y
YXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJl
c29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXgg
OWJmNGI0ZDk4NjY4Li5lZmUxMGUzNDRjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTM0LDEzICszNCwxMyBAQCBjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFzcyBGbG9hdFJlY3Q7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBMZWdh
Y3lJbmxpbmVUZXh0Qm94OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiBjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgU2hhZG93RGF0YTsKLWNsYXNzIFRleHRSdW47Ci0g
ICAgCisKIGNsYXNzIFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0
IFN0eWxlczsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dFNoYWRv
dyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7IG1fc2hhZG93ID0gdGV4dFNoYWRvdzsg
fQogICAgIHZvaWQgc2V0U2hhZG93Q29sb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyog
Y29sb3JGaWx0ZXIpIHsgbV9zaGFkb3dDb2xvckZpbHRlciA9IGNvbG9yRmlsdGVyOyB9CiAKLSAg
ICB2b2lkIHBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbik7CisgICAgdm9pZCBw
YWludFRleHREZWNvcmF0aW9uKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbik7CiAKICAgICBzdHJ1
Y3QgU3R5bGVzIHsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5kZXggNzQ4NTJhNmIw
ZDI1Li5kYzdmNTMzZDU2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFRleHRQYWludGVyOjpUZXh0UGFpbnRlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiB7CiB9CiAKLXZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9y
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4
dFJ1biwgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLAordm9pZCBUZXh0UGFpbnRlcjo6
cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBH
cmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyaywK
ICAgICBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCiB7CiAgICAgQVNT
RVJUKHN0YXJ0T2Zmc2V0IDwgZW5kT2Zmc2V0KTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFRl
eHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IFRleHRSdQogICAgIG1fZ2x5cGhEaXNwbGF5TGlzdCA9IG51bGxwdHI7CiB9CiAK
LXZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEq
IHNoYWRvdywgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJv
eFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCit2b2lkIFRleHRQYWludGVyOjpw
YWludFRleHRXaXRoU2hhZG93cyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMqIGNvbG9yRmlsdGVyLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sCiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCwgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9hdCBlbXBo
YXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCkKIHsKICAgICBpZiAoIXNoYWRvdykgewpAQCAt
MTU0LDcgKzE1NCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmlsdGVyT3BlCiAgICAgfQogfQogCi12b2lk
IFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4
dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LAor
dm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25z
dCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0LAogICAgIGNvbnN0IFRleHRQYWludFN0eWxlJiBwYWludFN0eWxlLCBjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIHNoYWRvd0NvbG9yRmls
dGVyKQogewogICAgIGlmIChwYWludFN0eWxlLnBhaW50T3JkZXIgPT0gUGFpbnRPcmRlcjo6Tm9y
bWFsKSB7CkBAIC0xOTYsOCArMTk2LDggQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5k
RW1waGFzaXNNYXJrc0lmTmVlZGVkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnMKIAogICAg
IEZsb2F0UG9pbnQgYm94T3JpZ2luID0gYm94UmVjdC5sb2NhdGlvbigpOwogICAgIHVwZGF0ZUdy
YXBoaWNzQ29udGV4dChtX2NvbnRleHQsIHBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9y
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dFJ1bj4gb2JqZWN0UmVwbGFjZW1lbnRD
aGFyYWN0ZXJUZXh0UnVuKFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAx
KSk7Ci0gICAgY29uc3QgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRU
ZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3JhcGhpY3NUZXh0UnVuPiBvYmplY3RSZXBsYWNl
bWVudENoYXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0
ZXIsIDEpKTsKKyAgICBjb25zdCBHcmFwaGljc1RleHRSdW4mIGVtcGhhc2lzTWFya1RleHRSdW4g
PSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bi5nZXQo
KSA6IHRleHRSdW47CiAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gbV9j
b21iaW5lZFRleHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBib3hSZWN0LndpZHRoKCkg
LyAyLCBib3hPcmlnaW4ueSgpICsgbV9mb250LT5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IHRl
eHRPcmlnaW47CiAgICAgaWYgKG1fY29tYmluZWRUZXh0KQogICAgICAgICBtX2NvbnRleHQuY29u
Y2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENsb2Nrd2lzZSkpOwpAQCAtMjEwLDEyICsyMTAsMTIg
QEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKGNv
bnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnMKICAgICAgICAgbV9jb250ZXh0LmNvbmNhdENUTShy
b3RhdGlvbihib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKLXZvaWQgVGV4dFBhaW50
ZXI6OnBhaW50KGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbikKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50
KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luKQogewogICAgIHBhaW50UmFuZ2UodGV4dFJ1
biwgYm94UmVjdCwgdGV4dE9yaWdpbiwgMCwgdGV4dFJ1bi5sZW5ndGgoKSk7CiB9CiAKLXZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50UmFuZ2UoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxv
YXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZShjb25zdCBH
cmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3Qg
RmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKIHsK
ICAgICBBU1NFUlQobV9mb250KTsKICAgICBBU1NFUlQoc3RhcnQgPCBlbmQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaAppbmRleCBlNDUzNGNiZmJmMTguLmIzNWZmMjg1MmE3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKQEAgLTMzLDkgKzMzLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3Mg
Rm9udENhc2NhZGU7CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBSZW5kZXJDb21iaW5l
VGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7Ci1jbGFzcyBUZXh0UnVuOwogCiBzdHJ1Y3QgVGV4dFBh
aW50U3R5bGU7CiAKQEAgLTU4LDExICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0hv
cml6b250YWwoYm9vbCBpc0hvcml6b250YWwpIHsgbV90ZXh0Qm94SXNIb3Jpem9udGFsID0gaXNI
b3Jpem9udGFsOyB9CiAgICAgdm9pZCBzZXRFbXBoYXNpc01hcmsoY29uc3QgQXRvbVN0cmluZyYg
bWFyaywgZmxvYXQgb2Zmc2V0LCBjb25zdCBSZW5kZXJDb21iaW5lVGV4dCopOwogCi0gICAgdm9p
ZCBwYWludChjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBG
bG9hdFBvaW50JiB0ZXh0T3JpZ2luKTsKLSAgICB2b2lkIHBhaW50UmFuZ2UoY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdp
biwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7CisgICAgdm9pZCBwYWludChjb25zdCBH
cmFwaGljc1RleHRSdW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4pOworICAgIHZvaWQgcGFpbnRSYW5nZShjb25zdCBHcmFwaGljc1RleHRS
dW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTGF5b3V0UnVuPgotICAgIHZvaWQgc2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKGNvbnN0
IExheW91dFJ1biYgcnVuLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgdGV4
dFJ1bikKKyAgICB2b2lkIHNldEdseXBoRGlzcGxheUxpc3RJZk5lZWRlZChjb25zdCBMYXlvdXRS
dW4mIHJ1biwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4
dFJ1bikKICAgICB7CiAgICAgICAgIGlmICghVGV4dFBhaW50ZXI6OnNob3VsZFVzZUdseXBoRGlz
cGxheUxpc3QocGFpbnRJbmZvKSkKICAgICAgICAgICAgIFRleHRQYWludGVyOjpyZW1vdmVHbHlw
aERpc3BsYXlMaXN0KHJ1bik7CkBAIC03NywxMSArNzcsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHNob3VsZFVzZUdseXBoRGlzcGxheUxpc3QoY29uc3QgUGFpbnRJbmZvJik7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBwYWludFRleHRPckVtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLCBmbG9h
dCBlbXBoYXNpc01hcmtPZmZzZXQsCisgICAgdm9pZCBwYWludFRleHRPckVtcGhhc2lzTWFya3Mo
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGljc1RleHRSdW4mLCBjb25zdCBBdG9tU3Ry
aW5nJiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwKICAgICAgICAgY29u
c3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7Ci0gICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhjb25zdCBTaGFkb3dE
YXRhKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyosIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4
dE9yaWdpbiwKKyAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEq
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFw
aGljc1RleHRSdW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQm
IHRleHRPcmlnaW4sCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyaywgZmxvYXQgZW1waGFzaXNNYXJr
T2Zmc2V0LCBib29sIHN0cm9rZWQpOwotICAgIHZvaWQgcGFpbnRUZXh0QW5kRW1waGFzaXNNYXJr
c0lmTmVlZGVkKGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQsCisgICAgdm9pZCBwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29u
c3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9h
dFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0LAogICAgICAgICBjb25zdCBUZXh0UGFpbnRTdHlsZSYsIGNvbnN0IFNoYWRvd0RhdGEqLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zKik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgK
aW5kZXggZWJlYmU0ZmI2ZDk3Li5lMTFjNzE5OTQ0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCkBAIC01NTMsNyArNTUzLDcgQEAgQUxX
QVlTX0lOTElORSBmbG9hdCB0ZXh0V2lkdGgoUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbGVuLCBjb24KICAgICBpZiAobGF5b3V0KQogICAgICAgICByZXR1cm4gRm9u
dENhc2NhZGU6OndpZHRoKCpsYXlvdXQsIGZyb20sIGxlbiwgJmZhbGxiYWNrRm9udHMpOwogCi0g
ICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBmcm9t
LCBsZW4sIHN0eWxlKTsKKyAgICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKHRleHQsIGZyb20sIGxlbiwgc3R5bGUpOwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9y
Q29kZVBhdGgoIXRleHQuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgIHJ1bi5zZXRU
YWJTaXplKCFjb2xsYXBzZVdoaXRlU3BhY2UsIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgcnVuLnNl
dFhQb3MoeFBvcyk7CkBAIC01OTcsNyArNTk3LDcgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRp
bmcoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEF0b20K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGV4dC5z
dHlsZSgpOwotICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
dGV4dCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIHN0eWxlKTsKKyAgICBhdXRvIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIGxhc3RTcGFjZSwgcG9zIC0gbGFz
dFNwYWNlLCBzdHlsZSk7CiAgICAgcnVuLnNldFRhYlNpemUoIWNvbGxhcHNlV2hpdGVTcGFjZSwg
c3R5bGUudGFiU2l6ZSgpKTsKICAgICBydW4uc2V0WFBvcyh4UG9zICsgbGFzdFNwYWNlV29yZFNw
YWNpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCBjOTFlZGNjNjM4YjUuLjQ4ZjczODZkOTE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC05MCw3
ICs5MCw3IEBAIGludCBTVkdJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbkluRnJhZ21l
bnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVuCiAgICAgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9y
KTsKIAotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4ocmVuZGVyZXIoKS5z
dHlsZSgpLCBmcmFnbWVudCk7CisgICAgYXV0byB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihy
ZW5kZXJlcigpLnN0eWxlKCksIGZyYWdtZW50KTsKIAogICAgIC8vIEV2ZW50dWFsbHkgaGFuZGxl
IGxlbmd0aEFkanVzdD0ic3BhY2luZ0FuZEdseXBocyIuCiAgICAgLy8gRklYTUU6IEhhbmRsZSB2
ZXJ0aWNhbCB0ZXh0LgpAQCAtMTI1LDcgKzEyNSw3IEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0
Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGNvbnN0IFNWR1RleHRGcmFnbWVudCYK
ICAgICB0ZXh0T3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkp
OwogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgdGV4dE9yaWdpbiwgTGF5b3V0U2l6
ZSgwLCBMYXlvdXRVbml0KGZyYWdtZW50LmhlaWdodCAqIHNjYWxpbmdGYWN0b3IpKSB9OwotICAg
IFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQpOworICAgIGF1
dG8gcnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQpOwogICAgIHNjYWxlZEZv
bnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBzdGFydFBv
c2l0aW9uLCBlbmRQb3NpdGlvbik7CiAgICAgRmxvYXRSZWN0IHNuYXBwZWRTZWxlY3Rpb25SZWN0
ID0gc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJl
Y3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkp
OwogICAgIGlmIChzY2FsaW5nRmFjdG9yID09IDEpCkBAIC0zOTMsOSArMzkzLDkgQEAgdm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpyZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmco
R3JhcGhpY3NDb250ZXh0KiYKICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCAv
KiBwYXRoICovbnVsbHB0cik7CiB9CiAKLVRleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3Ry
dWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYgZnJhZ21lbnQpIGNvbnN0CitHcmFwaGljc1RleHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29u
c3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQpIGNvbnN0CiB7Ci0gICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZW5k
ZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgZnJhZ21l
bnQubGVuZ3RoKQorICAgIEdyYXBoaWNzVGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZW5kZXJlcigp
LnRleHQoKSkuc3Vic3RyaW5nKGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCwgZnJhZ21lbnQubGVu
Z3RoKQogICAgICAgICAgICAgICAgICwgMCAvKiB4UG9zLCBvbmx5IHJlbGV2YW50IHdpdGggYWxs
b3dUYWJzPXRydWUgKi8KICAgICAgICAgICAgICAgICAsIDAgLyogcGFkZGluZywgb25seSByZWxl
dmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5vdCByZWxldmFudCBmb3IgU1ZHICovCiAgICAgICAg
ICAgICAgICAgLCBBbGxvd1JpZ2h0RXhwYW5zaW9uCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBPcHRpb24KICAgICAgICAgcmVsZWFzZVBhaW50aW5nUmVzb3VyY2UoY29udGV4
dFB0ciwgJnBhdGgpOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhT
aGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCB1bnNp
Z25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwg
dW5zaWduZWQgZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRl
cmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKQEAgLTU5
OCw3ICs1OTgsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdAogICAgIH0KIAogICAgIC8vIEZh
c3QgcGF0aCBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24sIGp1c3QgZHJhdyB0aGUgd2hvbGUgY2h1
bmsgcGFydCB1c2luZyB0aGUgcmVndWxhciBzdHlsZQotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNv
bnN0cnVjdFRleHRSdW4oc3R5bGUsIGZyYWdtZW50KTsKKyAgICBhdXRvIHRleHRSdW4gPSBjb25z
dHJ1Y3RUZXh0UnVuKHN0eWxlLCBmcmFnbWVudCk7CiAgICAgaWYgKCFoYXNTZWxlY3Rpb24gfHwg
c3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikgewogICAgICAgICBwYWludFRleHRXaXRoU2hh
ZG93cyhjb250ZXh0LCBzdHlsZSwgdGV4dFJ1biwgZnJhZ21lbnQsIDAsIGZyYWdtZW50Lmxlbmd0
aCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggNjliZDI1NjNiM2VmLi4xNjAwMzBkMmM0NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0lubGluZVRleHRC
b3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBUZXh0UnVuIGNvbnN0
cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKSBj
b25zdDsKKyAgICBHcmFwaGljc1RleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYpIGNvbnN0OwogCiAgICAgYm9vbCBhY3F1aXJl
UGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiwgZmxvYXQgc2NhbGluZ0ZhY3Rvciwg
UmVuZGVyQm94TW9kZWxPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZvaWQgcmVs
ZWFzZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFBhdGgqKTsKQEAg
LTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBo
aWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYpOwogICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4
dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJl
bmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRU
ZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBUZXh0
UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5z
aWduZWQgZW5kUG9zaXRpb24pOworICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBHcmFwaGljc1RleHRSdW4mLCBj
b25zdCBTVkdUZXh0RnJhZ21lbnQmLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBl
bmRQb3NpdGlvbik7CiAgICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYgc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0
T25seSk7CiAKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCmluZGV4IDM5MDkx
ZWY4YWYzZC4uODdlOTZmMjIzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBTVkdUZXh0TWV0cmljczo6
U1ZHVGV4dE1ldHJpY3MoU1ZHVGV4dE1ldHJpY3M6Ok1ldHJpY3NUeXBlKQogewogfQogCi1TVkdU
ZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRl
cmVyLCBjb25zdCBUZXh0UnVuJiBydW4pCitTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3Mo
UmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyLCBjb25zdCBHcmFwaGljc1RleHRSdW4m
IHJ1bikKIHsKICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gdGV4dFJlbmRlcmVyLnNjYWxpbmdG
YWN0b3IoKTsKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CkBAIC01OSwxMSArNTksMTEgQEAg
U1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRleHQmIHRleHRS
ZW5kZXJlciwgY29uc3QgVGV4dFJ1biYKICAgICBtX2xlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsZW5ndGgpOwogfQogCi1UZXh0UnVuIFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RUZXh0
UnVuKFJlbmRlclNWR0lubGluZVRleHQmIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25l
ZCBsZW5ndGgpCitHcmFwaGljc1RleHRSdW4gU1ZHVGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRS
dW4oUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0ZXh0LnN0eWxlKCk7
CiAKLSAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHRleHQudGV4dCgpKS5zdWJzdHJpbmcocG9z
aXRpb24sIGxlbmd0aCkKKyAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dC50
ZXh0KCkpLnN1YnN0cmluZyhwb3NpdGlvbiwgbGVuZ3RoKQogICAgICAgICAgICAgICAgICwgMCAv
KiB4UG9zLCBvbmx5IHJlbGV2YW50IHdpdGggYWxsb3dUYWJzPXRydWUgKi8KICAgICAgICAgICAg
ICAgICAsIDAgLyogcGFkZGluZywgb25seSByZWxldmFudCBmb3IganVzdGlmaWVkIHRleHQsIG5v
dCByZWxldmFudCBmb3IgU1ZHICovCiAgICAgICAgICAgICAgICAgLCBBbGxvd1JpZ2h0RXhwYW5z
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgKaW5k
ZXggODA5NjI5ZDBmNjQzLi5mMDk4YjFmMzVlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgKQEAgLTIzLDkgKzIzLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBSZW5kZXJTVkdJbmxp
bmVUZXh0OwogY2xhc3MgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXM7Ci1jbGFzcyBUZXh0UnVuOwog
CiBjbGFzcyBTVkdUZXh0TWV0cmljcyB7CiBwdWJsaWM6CkBAIC0zNiw3ICszNiw3IEBAIHB1Ymxp
YzoKICAgICBTVkdUZXh0TWV0cmljcyhSZW5kZXJTVkdJbmxpbmVUZXh0JiwgdW5zaWduZWQgbGVu
Z3RoLCBmbG9hdCB3aWR0aCk7CiAKICAgICBzdGF0aWMgU1ZHVGV4dE1ldHJpY3MgbWVhc3VyZUNo
YXJhY3RlclJhbmdlKFJlbmRlclNWR0lubGluZVRleHQmLCB1bnNpZ25lZCBwb3NpdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRl
clNWR0lubGluZVRleHQmLCB1bnNpZ25lZCBwb3NpdGlvbiA9IDAsIHVuc2lnbmVkIGxlbmd0aCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgc3RhdGljIEdyYXBo
aWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclNWR0lubGluZVRleHQmLCB1bnNpZ25l
ZCBwb3NpdGlvbiA9IDAsIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV93
aWR0aCAmJiAhbV9oZWlnaHQgJiYgIW1fZ2x5cGguaXNWYWxpZCAmJiBtX2xlbmd0aCA9PSAxOyB9
CiAKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdseXBoJiBnbHlwaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2x5cGg7IH0KIAogcHJpdmF0ZToKLSAgICBTVkdUZXh0TWV0cmljcyhS
ZW5kZXJTVkdJbmxpbmVUZXh0JiwgY29uc3QgVGV4dFJ1biYpOworICAgIFNWR1RleHRNZXRyaWNz
KFJlbmRlclNWR0lubGluZVRleHQmLCBjb25zdCBHcmFwaGljc1RleHRSdW4mKTsKIAogICAgIGZs
b2F0IG1fd2lkdGg7CiAgICAgZmxvYXQgbV9oZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAppbmRleCA0Zjc0MDI1MjM5
ZGQuLjM1YTM0NmE4NzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCkBAIC0xOSw4ICsxOSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2lkdGhJ
dGVyYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBtZWFzdXJlVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQmLCBN
ZWFzdXJlVGV4dERhdGEqKTsKIAogICAgIFJlbmRlclNWR0lubGluZVRleHQqIG1fdGV4dDsKLSAg
ICBUZXh0UnVuIG1fcnVuOworICAgIEdyYXBoaWNzVGV4dFJ1biBtX3J1bjsKICAgICB1bnNpZ25l
ZCBtX3RleHRQb3NpdGlvbjsKICAgICBib29sIG1faXNDb21wbGV4VGV4dDsKICAgICBTVkdUZXh0
TWV0cmljcyBtX2N1cnJlbnRNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZmQwMjVhYjU5ODMuLjcxMDY5
YWY0YzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOC0yMCAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSdW4gdW5kZXIg
Z3JhcGhpY3MgdG8gR3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBv
cHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEpOgorCiAyMDIxLTA4LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBhbiBPYmplY3RJZGVudGlmaWVyPD4gZm9yIHRleHQgY2hl
Y2tlciByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCmluZGV4IDJjYTM1NzQy
NjdhNi4uYmZiYzEyNjNhNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIFBsCiAgICAgICAgICAgICBpdGVtRm9u
dENhc2NhZGUudXBkYXRlKG1fcG9wdXBDbGllbnQtPmZvbnRTZWxlY3RvcigpKTsKICAgICAgICAg
fQogCi0gICAgICAgIHBvcHVwV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4ocG9wdXBXaWR0aCwgY2Vp
bGYoaXRlbUZvbnRDYXNjYWRlLndpZHRoKFRleHRSdW4odGV4dCkpKSk7CisgICAgICAgIHBvcHVw
V2lkdGggPSBzdGQ6Om1heDxmbG9hdD4ocG9wdXBXaWR0aCwgY2VpbGYoaXRlbUZvbnRDYXNjYWRl
LndpZHRoKEdyYXBoaWNzVGV4dFJ1bih0ZXh0KSkpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
cG9wdXBXaWR0aCBzaG91bGQgcHJvYmFibHkgdGFrZSBpbnRvIGFjY291bnQgbW9uaXRvciBjb25z
dHJhaW50cyBhcyBpcyBkb25lIHdpdGggV2ViUG9wdXBNZW51UHJveHlXaW46OmNhbGN1bGF0ZVBv
c2l0aW9uQW5kU2l6ZS4KQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0
VXBQbGF0Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQ
bAogCiAgICAgICAgIFN0cmluZyBpdGVtVGV4dCA9IG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGlu
ZGV4KTsKIAotICAgICAgICBUZXh0UnVuIHRleHRSdW4oaXRlbVRleHQsIDAsIDAsIEFsbG93Umln
aHRFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUoKSk7CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuKGl0
ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlv
bigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogCiAgICAgICAgIG5v
dFNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+c2V0RmlsbENvbG9yKG9wdGlvblRleHRDb2xv
cik7CiAgICAgICAgIHNlbGVjdGVkQmFja2luZ1N0b3JlQ29udGV4dC0+c2V0RmlsbENvbG9yKGFj
dGl2ZU9wdGlvblRleHRDb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDFl
MWI4ZTUzOGY4Li5lMTlkNWEyYTM2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMS0wOC0yMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSdW4gdW5kZXIgZ3JhcGhpY3MgdG8gR3JhcGhpY3NU
ZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjkzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJf
ZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6XSk6CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJf
d2lkdGhXaXRoRm9udDpdKToKKwogMjAyMS0wOC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dh
cmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvbGQgdW51c2VkIGNvZGUgYW5kIG91
dCBvZiBkYXRlIGNvbW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggNzgzMjU2MTljMWFjLi44NjBiODM1ZjEz
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0
cmluZ0V4dHJhcy5tbQpAQCAtMzEsOCArMzEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1h
Yy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRDRy5oPgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc1RleHRSdW4uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMuaD4KLSNpbXBvcnQgPFdlYkNvcmUv
VGV4dFJ1bi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBv
cnQgPHN5cy9wYXJhbS5oPgogI2ltcG9ydCA8dW5pY29kZS91Y2hhci5oPgpAQCAtNjksNyArNjks
NyBAQCBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciogYnVmZmVy
LCB1bnNpZ25lZCBsZW5ndGgpCiAKICAgICBpZiAoY2FuVXNlRmFzdFJlbmRlcmVyKGJ1ZmZlci5k
YXRhKCksIGxlbmd0aCkpIHsKICAgICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBs
YXRmb3JtRGF0YSgoX19icmlkZ2UgQ1RGb250UmVmKWZvbnQsIFtmb250IHBvaW50U2l6ZV0pKTsK
LSAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVD
aGFyKj4oYnVmZmVyLmRhdGEoKSksIGxlbmd0aCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4g
cnVuKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1ZmZlci5kYXRh
KCkpLCBsZW5ndGgpKTsKIAogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGEgaGFsZi1hc3Nl
ZCBhdHRlbXB0IHRvIG1hdGNoIEFwcEtpdCdzIHJvdW5kaW5nIHJ1bGVzIGZvciBkcmF3QXRQb2lu
dC4KICAgICAgICAgLy8gSWYgeW91IGNoYW5nZSBpdCwgYmUgc3VyZSB0byB0ZXN0IGFsbCB0aGUg
dGV4dCBkcmF3biB0aGlzIHdheSBpbiBTYWZhcmksIGluY2x1ZGluZwpAQCAtMTA5LDcgKzEwOSw3
IEBAIHN0YXRpYyBib29sIGNhblVzZUZhc3RSZW5kZXJlcihjb25zdCBVbmlDaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGxlbmd0aCkKIAogICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVyLmRh
dGEoKSwgbGVuZ3RoKSkgewogICAgICAgICBGb250Q2FzY2FkZSB3ZWJDb3JlRm9udChGb250UGxh
dGZvcm1EYXRhKChfX2JyaWRnZSBDVEZvbnRSZWYpZm9udCwgW2ZvbnQgcG9pbnRTaXplXSkpOwot
ICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihidWZmZXIuZGF0YSgpKSwgbGVuZ3RoKSk7CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biBy
dW4oU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYnVmZmVyLmRhdGEo
KSksIGxlbmd0aCkpOwogICAgICAgICByZXR1cm4gd2ViQ29yZUZvbnQud2lkdGgocnVuKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhYTg4NzgxMjAxOTkuLjljMjUw
YTk1YmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTA4LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgVGV4dFJ1biB1bmRlciBncmFwaGljcyB0byBHcmFwaGljc1RleHRSdW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTMzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkcmF3
KToKKwogMjAyMS0wOC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIE1lZGlhUGxheWVyOjpzZXRWaXNpYmxlIHRvIE1lZGlhUGxheWVyOjpzZXRQ
YWdlSXNWaXNpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDk4YWZlMDU5ZjhmNS4uOTE4OGRjZTQ1YWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcApAQCAtMzcsOSArMzcsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRm9udFNlbGVj
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dFdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NU
ZXh0UnVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1RleHRSdW4uaD4KICNpbmNsdWRlIDx3aW5kb3dz
eC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTUzNiwxMyArNTM2LDEzIEBAIHZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdygpCiAgICAgLy8gTGVmdCBzdHJpbmcKICAgICBz
ID0gdGltZVRvU3RyaW5nKGN1cnJlbnRUaW1lKCkpOwogICAgIGludCBmb250SGVpZ2h0ID0gZm9u
dC5mb250TWV0cmljcygpLmhlaWdodCgpOwotICAgIFRleHRSdW4gbGVmdFRleHQocyk7CisgICAg
R3JhcGhpY3NUZXh0UnVuIGxlZnRUZXh0KHMpOwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yKHRleHRDb2xvcikpOwogICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgbGVmdFRleHQsIElu
dFBvaW50KHdpbmRvd1dpZHRoIC8gMiAtIHRpbWVTbGlkZXJXaWR0aCAvIDIgLSBtYXJnaW4gLSBm
b250LndpZHRoKGxlZnRUZXh0KSwgd2luZG93SGVpZ2h0IC0gbWFyZ2luIC0gc2xpZGVySGVpZ2h0
IC8gMiArIGZvbnRIZWlnaHQgLyA0KSk7CiAKICAgICAvLyBSaWdodCBzdHJpbmcKICAgICBzID0g
dGltZVRvU3RyaW5nKGN1cnJlbnRUaW1lKCkgLSBkdXJhdGlvbigpKTsKLSAgICBUZXh0UnVuIHJp
Z2h0VGV4dChzKTsKKyAgICBHcmFwaGljc1RleHRSdW4gcmlnaHRUZXh0KHMpOwogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yKHRleHRDb2xvcikpOwogICAgIGNvbnRleHQuZHJhd1RleHQo
Zm9udCwgcmlnaHRUZXh0LCBJbnRQb2ludCh3aW5kb3dXaWR0aCAvIDIgKyB0aW1lU2xpZGVyV2lk
dGggLyAyICsgbWFyZ2luLCB3aW5kb3dIZWlnaHQgLSBtYXJnaW4gLSBzbGlkZXJIZWlnaHQgLyAy
ICsgZm9udEhlaWdodCAvIDQpKTsKIAo=
</data>
<flag name="commit-queue"
          id="458920"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435980</attachid>
            <date>2021-08-20 06:38:34 -0700</date>
            <delta_ts>2021-08-20 07:43:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicstextrun-rename-2.patch</filename>
            <type>text/plain</type>
            <size>154713</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzE5ZGM2ODI5N2MuLjRkNmZiOWFkOTQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5NSBAQAorMjAyMS0wOC0yMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSdW4gdW5kZXIgcGxhdGZvcm0vZ3JhcGhpY3MgdG8g
R3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBoYXZlIHNldmVyYWwgdHlwZXMgb2YgdGV4dCBydW5zIG9uIGRpZmZlcmVudCBs
ZXZlbHMgYW5kIGl0IGlzIGdldHRpbmcgY29uZnVzaW5nLgorICAgICAgICBSZW5hbWUgdGhlIHBs
YXRmb3JtIHR5cGUgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxh
eS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojp3aWR0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmRy
YXdCaWRpVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3RWxlbWVudFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdM
YXlvdXRMYWJlbCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAqIGxh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUZXh0VXRpbDo6d2lkdGgpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JGb250QW5kVGV4dCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGgu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVy
blBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5Vc2VT
aW1wbGlmaWVkVGV4dE1lYXN1cmluZyk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UmlnaHRBbGlnbmVkVGV4dCk6CisgICAgICAg
ICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojppc05lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TGF5b3V0Ojpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdF
bXBoYXNpc01hcmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoT2ZUZXh0UmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNl
bGVjdGlvblJlY3RGb3JUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpvZmZzZXRGb3JQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yU2ltcGxl
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZv
ckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0
aW9uRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuSXRl
cmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vt
cGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Qmlk
aVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzVGV4dFJ1bjo6R3JhcGhpY3NUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzVGV4dFJ1bjo6c3ViUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzVGV4dFJ1bjo6c2V0VGFiU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTnVs
bEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1Ry
dW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaWR0aCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhD
YWNoZTo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldpZHRoSXRlcmF0b3I6OnJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
V2luOjpkcmF3VGV4dEF0UG9pbnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250V2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0lt
YWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09u
ZUxlZnRUb1JpZ2h0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaERpc3BsYXlMaXN0Q2FjaGU6OmdldCk6CisgICAgICAgICogcmVuZGVyaW5n
L0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUVsbGlwc2lz
Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxT
ZWxlY3Rpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNhbGN1
bGF0ZURvY3VtZW50TWFya2VyQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNv
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9u
Rm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVU
ZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJl
cGxhY2VtZW50VGV4dEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBh
aW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZv
ckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RN
YXJrZXI6OlRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmluZzo6b3BlcmF0b3IgY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpU
ZXh0UnVuV2l0aFVuZGVybHlpbmdTdHJpbmc6Om9wZXJhdG9yIGNvbnN0IFRleHRSdW4mIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAg
ICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bWF4V29yZEZyYWdtZW50V2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJhZ2VDaGFy
V2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAg
KiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRXaXRoU2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVy
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6c2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRl
eHRCb3g6Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0
aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBCYXNpYyBzdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZDRmZDhiNzI3MTIuLjI3MGE2MjdhNzIxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjU1LDYgKzEyNTUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZhY3RvcnkuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1RleHRSdW4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCkBAIC0xMzI1LDcgKzEzMjYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UcmFj
a1ByaXZhdGVCYXNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMDNlMTJhN2E3ODcyLi43Yzg3Zjc1ZmMy
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTE4LDYgKzE5MTgsNyBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zv
cm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvSWNvbi5jcHAKQEAgLTE5NTgsNyArMTk1OSw2IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRl
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODNiMjVjY2ZiMmIuLjQzNTNmZmYzMDA4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzUxNCw3ICszNTE0LDcgQEAKIAkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8qIENo
aWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4MTg3MjE1MDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggKi87IH07CiAJ
CUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg3MjE4MDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBODIzOUUwMTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyMzlERkYwOUIzQ0Y4
QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyNEI0NjQwRTJF
RjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NU
ZXh0UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NUZXh0UnVuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgzM0M3Q0EwQTJDRjA2QjAw
RDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi87
IH07CiAJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVBMDlEMTUwOEQw
MDBFNjFENyAvKiBYTGlua05hbWVzLmNwcCAqLzsgfTsKIAkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3
NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MzNDODBBMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgKi87IH07
CkBAIC03NjIyLDcgKzc2MjIsNyBAQAogCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4
dEJvdW5kYXJpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4
dEJvdW5kYXJpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJDMDBEODEy
OTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1
Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJFRkMgLyogR3JhcGhpY3NUZXh0UnVuLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzVGV4dFJ1bi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlD
QSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogTmF0aXZlSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXRpdmVJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
OTk5LDcgKzEyOTk5LDcgQEAKIAkJQTgxODcyMUEwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9k
ZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkTm9k
ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODIzOURGRTA5QjNDRjhB
MDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MjM5REZG
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MjRCNDY0
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgyNEI0NjQw
RTJFRjJFQTAwODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc1RleHRSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTgzM0M3RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTgzM0M4MEEwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBYTUxOYW1lcy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1hNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBYTUxOYW1lcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9YTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtMjY2MDksNiArMjY2MDksOCBAQAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCisJCQkJMzc2RENDRTAxM0I0Rjk2NjAw
MkVCRUZDIC8qIEdyYXBoaWNzVGV4dFJ1bi5jcHAgKi8sCisJCQkJQTgyNEI0NjQwRTJFRjJFQTAw
ODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oICovLAogCQkJCUIyQTAxNTk0MEFGNkNENTMwMDZC
Q0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlCMkEwMTU5NTBBRjZDRDUzMDA2QkNF
MEUgLyogR3JhcGhpY3NUeXBlcy5oICovLAogCQkJCTc3QTE3QTdBMTJGMjg5MEIwMDRFMDJGNiAv
KiBHcmFwaGljc1R5cGVzR0wuaCAqLywKQEAgLTI2NzMxLDggKzI2NzMzLDYgQEAKIAkJCQkwODc1
NThDMzEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNw
cCAqLywKIAkJCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmggKi8sCiAJCQkJM0JCNkI4MEYyMkE3RDMxMTAwM0EyQTY5IC8qIFRhYlNp
emUuaCAqLywKLQkJCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8s
Ci0JCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCAqLywKIAkJCQlDRDFF
NzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwICovLAog
CQkJCUNERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
ICovLAogCQkJCTFBRjg5QTQxMTUxOEZERUEwMEU1NDdCNSAvKiBUaWxlZEJhY2tpbmcuaCAqLywK
QEAgLTM1MDEwLDcgKzM1MDEwLDcgQEAKIAkJCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyog
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4QjdENTMyNUMz
NDFFNjAwOUU3NUREIC8qIFRleHRSZWNvZ25pdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NUZXh0
UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4
dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAy
NkEyREQgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MzE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAxZjY1YmJmYzAz
YTEuLmYyMzUxYThmYWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheUJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3hQYWludGVyLmNwcApAQCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgIkRpc3BsYXlU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVRyZWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBCb3hQYWludGVyOjpwYWludEJveENvbnRlbnQoY29uc3QgQm94JiBib3gsIFBhaW50aW5n
Q29udGV4dCYgcGFpbnRpbmdDb250ZXgKICAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0
LnkoKSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAgICAgIGF1dG8gZXhwYW5z
aW9uID0gdGV4dEJveC5leHBhbnNpb24oKTsKIAotICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0
UnVuIHsgdGV4dEJveC50ZXh0KCkuY29udGVudCgpLnN1YnN0cmluZyh0ZXh0Qm94LnRleHQoKS5z
dGFydCgpLCB0ZXh0Qm94LnRleHQoKS5sZW5ndGgoKSksIHRleHRSZWN0LngoKSwgZXhwYW5zaW9u
Lmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBhdXRv
IHRleHRSdW4gPSBHcmFwaGljc1RleHRSdW4geyB0ZXh0Qm94LnRleHQoKS5jb250ZW50KCkuc3Vi
c3RyaW5nKHRleHRCb3gudGV4dCgpLnN0YXJ0KCksIHRleHRCb3gudGV4dCgpLmxlbmd0aCgpKSwg
dGV4dFJlY3QueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJl
aGF2aW9yIH07CiAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0
ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250
ZXh0LmRyYXdUZXh0KHN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4sIHsgdGV4dFJlY3QueCgp
LCBiYXNlbGluZSB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNGQ1OTUw
ZTBjYzJiLi5jMTI4YzU3ZmMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5UGFyc2VyV29ya2VyU2FmZS5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKQEAgLTU2
LDcgKzU3LDYgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVGb3JGb250UmF3LmgiCiAjaW5jbHVk
ZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgotI2luY2x1
ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC0yMDcsNyArMjA3LDcgQEAgUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjb25zdCBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZTsKICAgICBhdXRvIGRpcmVjdGlvbiA9IHRvVGV4dERpcmVjdGlv
bihzdGF0ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOwogICAgIGJvb2wgb3ZlcnJpZGUg
PSBjb21wdXRlZFN0eWxlICYmIGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGko
KSk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0
RXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGly
ZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIG1lYXN1cmVUZXh0SW50ZXJuYWwo
dGV4dFJ1bik7CiB9CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBk
bwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlOwogICAgIGF1dG8gZGlyZWN0
aW9uID0gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7
CiAgICAgYm9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgJiYgaXNPdmVycmlkZShjb21wdXRl
ZFN0eWxlLT51bmljb2RlQmlkaSgpKTsKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRl
eHQsIDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHRydWUp
OworICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxv
d1JpZ2h0RXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKICAgICBkcmF3VGV4
dFVuY2hlY2tlZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBtYXhXaWR0aCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKaW5kZXggODI2YjM4YzljN2JjLi40NTBjNGZkNDA3ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBs
YXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgpAQCAtNjgsNyArNjksNiBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgotI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC00MTQsMTIgKzQxNCwxMiBAQCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnREZXNjcgogICAgIHJl
dHVybiBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCk7CiB9CiAKLWZsb2F0IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6d2lkdGgoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwg
R2x5cGhPdmVyZmxvdyogb3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpGb250UHJveHk6OndpZHRoKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1
biwgR2x5cGhPdmVyZmxvdyogb3ZlcmZsb3cpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZm9udC53
aWR0aCh0ZXh0UnVuLCAwLCBvdmVyZmxvdyk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5OjpkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2Fz
Y2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGFjdGlvbikgY29uc3QKK3ZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5OjpkcmF3QmlkaVRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gYWN0aW9u
KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KG1fZm9udCwgcnVuLCBwb2ludCwg
YWN0aW9uKTsKIH0KQEAgLTI0MTYsMTEgKzI0MTYsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3Vi
bGUKIAogICAgIFN0cmluZyBub3JtYWxpemVkVGV4dCA9IG5vcm1hbGl6ZVNwYWNlcyh0ZXh0KTsK
ICAgICBhdXRvIGRpcmVjdGlvbiA9IChzdGF0ZSgpLmRpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlJ0
bCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7Ci0gICAgVGV4dFJ1
biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBkaXJl
Y3Rpb24sIGZhbHNlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihub3JtYWxp
emVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBmYWxzZSwgdHJ1
ZSk7CiAgICAgZHJhd1RleHRVbmNoZWNrZWQodGV4dFJ1biwgeCwgeSwgZmlsbCwgbWF4V2lkdGgp
OwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVj
a2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4
dFJ1biwgZG91YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtYXhXaWR0aCkKIHsKICAgICBhdXRvKiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBhdXRv
JiBmb250UHJveHkgPSAqdGhpcy0+Zm9udFByb3h5KCk7CkBAIC0yNTQzLDExICsyNTQzLDExIEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRl
eHRJbnRlcm5hbChjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRUZXh0ID0g
bm9ybWFsaXplU3BhY2VzKHRleHQpOwogICAgIGF1dG8gZGlyZWN0aW9uID0gKHN0YXRlKCkuZGly
ZWN0aW9uID09IERpcmVjdGlvbjo6UnRsKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJl
Y3Rpb246OkxUUjsKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRleHQsIDAsIDAsIEFs
bG93UmlnaHRFeHBhbnNpb24sIGRpcmVjdGlvbiwgZmFsc2UsIHRydWUpOworICAgIEdyYXBoaWNz
VGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
LCBkaXJlY3Rpb24sIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gbWVhc3VyZVRleHRJbnRlcm5h
bCh0ZXh0UnVuKTsKIH0KIAotUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IFRleHRSdW4mIHRleHRSdW4pCitSZWY8
VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om1lYXN1cmVUZXh0SW50
ZXJuYWwoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuKQogewogICAgIFJlZjxUZXh0TWV0
cmljcz4gbWV0cmljcyA9IFRleHRNZXRyaWNzOjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5o
CmluZGV4IGExNDMxMzg5OTQ0YS4uZDRiYTE4YzlkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBA
IC0yMzYsOCArMjM2LDggQEAgcHVibGljOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoRm9udFNl
bGVjdG9yJiwgY29uc3QgRm9udENhc2NhZGUmKTsKICAgICAgICAgY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0OwotICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBU
ZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKLSAgICAgICAgdm9pZCBkcmF3Qmlk
aVRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKKyAgICAgICAg
ZmxvYXQgd2lkdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKKyAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
Ym9vbCBpc1BvcHVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5mb250cygpOyB9CkBAIC0z
MDQsOSArMzA0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIGJvb2wgY2FuRHJhd1RleHQoZG91
YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiwgZG91YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dFVuY2hlY2tlZChj
b25zdCBHcmFwaGljc1RleHRSdW4mLCBkb3VibGUgeCwgZG91YmxlIHksIGJvb2wgZmlsbCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAotICAgIFJlZjxU
ZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuJik7CisgICAgUmVm
PFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYp
OwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcm
IHRleHQpOwogCiAgICAgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCA3ZGYzNWNkZWVlZTcu
LmYyMzVlMmU4OGFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcApAQCAtODY5LDcgKzg2OSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsCiAK
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHZlcnRpY2FsTGFiZWxT
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHpv
b20oeCkgKyAwLjVmLCBzY3JvbGxZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0
KGZvbnQsIFRleHRSdW4oU3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVs
ZXJMYWJlbFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJp
Y3MoKS5oZWlnaHQoKSAtIDEuMGYgfSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCBHcmFwaGljc1RleHRSdW4oU3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BF
ZGdlID8gcnVsZXJMYWJlbFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSAtIDEuMGYgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsCiAgICAgICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBob3Jpem9udGFsTGFiZWxTdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbFgs
IHpvb20oeSkgKyAwLjVmKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZShkcmF3TGVm
dEVkZ2UgPyAtcGlPdmVyVHdvRmxvYXQgOiBwaU92ZXJUd29GbG9hdCk7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKFN0cmluZzo6bnVtYmVyKHkpKSwgeyAy
LCBkcmF3TGVmdEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJT
aXplIH0pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NU
ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHkpKSwgeyAyLCBkcmF3TGVmdEVkZ2UgPyBydWxlckxhYmVs
U2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplIH0pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
ZHJhd1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJs
CiAgICAgICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdmlld3BvcnRS
ZWN0ID0gcGFnZVZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpOwotICAgICAgICBUZXh0UnVuIHZp
ZXdwb3J0VGV4dFJ1bihtYWtlU3RyaW5nKHZpZXdwb3J0UmVjdC53aWR0aCgpIC8gcGFnZVpvb21G
YWN0b3IsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25TaWduLCAnICcsIHZpZXdwb3J0UmVjdC5o
ZWlnaHQoKSAvIHBhZ2Vab29tRmFjdG9yLCAicHgiKSk7CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1
biB2aWV3cG9ydFRleHRSdW4obWFrZVN0cmluZyh2aWV3cG9ydFJlY3Qud2lkdGgoKSAvIHBhZ2Va
b29tRmFjdG9yLCAicHgiLCAnICcsIG11bHRpcGxpY2F0aW9uU2lnbiwgJyAnLCB2aWV3cG9ydFJl
Y3QuaGVpZ2h0KCkgLyBwYWdlWm9vbUZhY3RvciwgInB4IikpOwogCiAgICAgICAgIGNvbnN0IGZs
b2F0IG1hcmdpbiA9IDQ7CiAgICAgICAgIGNvbnN0IGZsb2F0IHBhZGRpbmcgPSAyOwpAQCAtMTA1
MCw4ICsxMDUwLDggQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSYgbm9kZSwgY28KICAgICAgICAgYXV0byBmaXJz
dExpbmUgPSBtYWtlU3RyaW5nKGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SURWYWx1ZSwgZWxlbWVu
dENsYXNzVmFsdWUsIGVsZW1lbnRQc2V1ZG9UeXBlLCAnICcsIGVsZW1lbnRXaWR0aCwgInB4Iiwg
JyAnLCBtdWx0aXBsaWNhdGlvblNpZ24sICcgJywgZWxlbWVudEhlaWdodCwgInB4Iik7CiAgICAg
ICAgIGF1dG8gc2Vjb25kTGluZSA9IG1ha2VTdHJpbmcoIlJvbGUgIiwgZWxlbWVudFJvbGUpOwog
Ci0gICAgICAgIGZsb2F0IGZpcnN0TGluZVdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGZpcnN0
TGluZSkpOwotICAgICAgICBmbG9hdCBzZWNvbmRMaW5lV2lkdGggPSBmb250LndpZHRoKFRleHRS
dW4oc2Vjb25kTGluZSkpOworICAgICAgICBmbG9hdCBmaXJzdExpbmVXaWR0aCA9IGZvbnQud2lk
dGgoR3JhcGhpY3NUZXh0UnVuKGZpcnN0TGluZSkpOworICAgICAgICBmbG9hdCBzZWNvbmRMaW5l
V2lkdGggPSBmb250LndpZHRoKEdyYXBoaWNzVGV4dFJ1bihzZWNvbmRMaW5lKSk7CiAKICAgICAg
ICAgZWxlbWVudERhdGFXaWR0aCA9IHN0ZDo6Zm1heChmaXJzdExpbmVXaWR0aCwgc2Vjb25kTGlu
ZVdpZHRoKTsKICAgICAgICAgaWYgKGhhc1NlY29uZExpbmUpCkBAIC0xMTQyLDcgKzExNDIsNyBA
QCBQYXRoIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBOb2RlJiBub2RlLCBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKLSAgICAgICAgdGV4dFBvc2l0aW9uICs9IGNv
bnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bih0ZXh0KSwgdGV4dFBvc2l0aW9uKTsKKyAgICAg
ICAgdGV4dFBvc2l0aW9uICs9IGNvbnRleHQuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NUZXh0UnVu
KHRleHQpLCB0ZXh0UG9zaXRpb24pOwogICAgIH07CiAKICAgICBkcmF3VGV4dChlbGVtZW50VGFn
TmFtZSwgeyAxMzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmll
d2VyLmNzcyAoLnRhZykKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBGbG9hdFNpemUgZXhw
ZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwoU3RyaW5nIGxhYmVsLCBJbnNwZWN0b3JPdmVybGF5OjpM
YWJlCiAgICAgYXV0byBmb250ID0gSW5zcGVjdG9yT3ZlcmxheTo6Zm9udEZvckxheW91dExhYmVs
KCk7CiAKICAgICBmbG9hdCB0ZXh0SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVp
Z2h0KCk7Ci0gICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7
CisgICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChHcmFwaGljc1RleHRSdW4obGFiZWwp
KTsKICAgICBpZiAobWF4aW11bVdpZHRoICYmIHRleHRXaWR0aCArIChsYXlvdXRMYWJlbFBhZGRp
bmcgKiAyKSA+IG1heGltdW1XaWR0aCkKICAgICAgICAgdGV4dFdpZHRoID0gbWF4aW11bVdpZHRo
OwogCkBAIC0xMzc5LDEzICsxMzc5LDEzIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0xh
eW91dExhYmVsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU3RyaW5nIGxhYmVsLCBGCiAgICAg
ZmxvYXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwogICAg
IGZsb2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOwog
ICAgIAotICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwor
ICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoR3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7
CiAgICAgaWYgKG1heGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5n
ICogMikgPiBtYXhpbXVtV2lkdGgpIHsKICAgICAgICAgbGFiZWwuYXBwZW5kKCIuLi4iX3MpOwog
ICAgICAgICB3aGlsZSAodGV4dFdpZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4
aW11bVdpZHRoICYmIGxhYmVsLmxlbmd0aCgpID49IDQpIHsKICAgICAgICAgICAgIC8vIFJlbW92
ZSB0aGUgZm91cnRoIGZyb20gbGFzdCBjaGFyYWN0ZXIgKHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRo
ZSBlbGxpcHNpcykgYW5kIHJlbWVhc3VyZS4KICAgICAgICAgICAgIGxhYmVsLnJlbW92ZShsYWJl
bC5sZW5ndGgoKSAtIDQpOwotICAgICAgICAgICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0
UnVuKGxhYmVsKSk7CisgICAgICAgICAgICB0ZXh0V2lkdGggPSBmb250LndpZHRoKEdyYXBoaWNz
VGV4dFJ1bihsYWJlbCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDYzLDcgKzE0NjMsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFN0cmluZyBsYWJlbCwgRgogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChsYWJlbFBh
dGgpOwogICAgIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAg
Y29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKGxhYmVsKSwgdGV4dFBvc2l0aW9uKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIEdyYXBoaWNzVGV4dFJ1bihsYWJlbCksIHRleHRQb3Np
dGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0dyaWRPdmVybGF5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpH
cmlkSGlnaGxpZ2h0T3ZlcmxheSYgZ3JpZE92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggYTE2MTJjNWQzYmQ5Li43NDRmYThmMDZiOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKQEAgLTQ1
NCw3ICs0NTQsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFs
UnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbgogCiAgICAgICAgICAgICB1bnNp
Z25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsKICAgICAgICAgICAgIGF1dG8mIGZvbnRD
YXNjYWRlID0gc3R5bGUuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIGF1dG8gaHlwaGVuV2lk
dGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENhc2NhZGUud2lkdGgoVGV4dFJ1biB7IFN0cmlu
Z1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0pIH07CisgICAgICAgICAgICBhdXRvIGh5
cGhlbldpZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IGZvbnRDYXNjYWRlLndpZHRoKEdyYXBoaWNz
VGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0pIH07CiAgICAg
ICAgICAgICBpZiAoIWF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewogICAgICAgICAgICAgICAg
IGF1dG8gYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPSAqYXZhaWxhYmxlV2lkdGggLSBo
eXBoZW5XaWR0aDsKICAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdI
eXBoZW4gPD0gMCB8fCAhZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFibGVXaWR0aEV4
Y2x1ZGluZ0h5cGhlbiwgZm9udENhc2NhZGUucGl4ZWxTaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcAppbmRleCBmMGJmMzFkMDk3YzMuLjRmNzBhMGM1YTJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRl
eHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgSW5saW5lTGF5
b3V0VQogICAgIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LnJlc2V0KCk7CiAgICAgaWYgKCFm
b3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0
ZXJTcGFjaW5nKCkgJiYgIWlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmIHN0eWxlLmxl
dHRlclNwYWNpbmcoKSA+IDApCiAgICAgICAgIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LmFk
ZFBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQobV9ydW5zLnNpemUoKSAtIDEsIHN0eWxlLmxldHRl
clNwYWNpbmcoKSk7Ci0gICAgbV90cmFpbGluZ1NvZnRIeXBoZW5XaWR0aCA9IGlubGluZVRleHRJ
dGVtLmhhc1RyYWlsaW5nU29mdEh5cGhlbigpID8gc3RkOjptYWtlX29wdGlvbmFsKHN0eWxlLmZv
bnRDYXNjYWRlKCkud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJp
bmcoKSB9IH0pKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRo
ID0gaW5saW5lVGV4dEl0ZW0uaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCkgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwoc3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChHcmFwaGljc1RleHRSdW4geyBTdHJpbmdW
aWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVt
JiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3RleHQvVGV4dFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKaW5kZXggN2U1NzViY2U3Mjg1Li5mMGJmODRi
ODRlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIElubGluZUxheW91dFVuaXQgVGV4dFV0aWw6OndpZHRoKGNvbnN0IElubGluZVRleHRCb3gm
IGlubGluZVRleHRCb3gsIHVuc2lnbmVkIGZyCiAgICAgICAgIHdpZHRoID0gZm9udC53aWR0aEZv
clNpbXBsZVRleHQoU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcoZnJvbSwgdG8gLSBmcm9tKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gdGFiV2lkdGggPSBzdHlsZS5jb2xsYXBzZVdoaXRl
U3BhY2UoKSA/IFRhYlNpemUoMCkgOiBzdHlsZS50YWJTaXplKCk7Ci0gICAgICAgIFdlYkNvcmU6
OlRleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKGZyb20sIHRvIC0gZnJvbSks
IGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzVGV4dFJ1biBy
dW4oU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcoZnJvbSwgdG8gLSBmcm9tKSwgY29udGVudExv
Z2ljYWxMZWZ0KTsKICAgICAgICAgaWYgKHRhYldpZHRoKQogICAgICAgICAgICAgcnVuLnNldFRh
YlNpemUodHJ1ZSwgdGFiV2lkdGgpOwogICAgICAgICB3aWR0aCA9IGZvbnQud2lkdGgocnVuKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCAwMDhmMmM1YmJmMDUuLmM5ZDZhNDUy
NDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBA
IHN0YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JGb250QW5kVGV4dChj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjCiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNr
IHRoZSBjb2RlIHBhdGggYXQgdGhpcyBwb2ludC4gV2UgYWxyZWFkeSBrbm93IGl0IGNhbid0IGJl
IHNpbXBsZS4KICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc0NvbXBsZXhGb250Q29kZVBhdGgsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlRleHRSdW4gcnVuKFN0cmluZyh0ZXh0
UmVuZGVyZXIudGV4dCgpKSk7CisgICAgICAgICAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmlu
Zyh0ZXh0UmVuZGVyZXIudGV4dCgpKSk7CiAgICAgICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2Nh
bkZvckNvZGVQYXRoKGZhbHNlKTsKICAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgp
LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAg
ICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzQ29tcGxleEZv
bnRDb2RlUGF0aCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDU2OGM1OTc0ZjZhMS4uNTQ1
MTAxNWM3ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1
aWxkZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6
Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1MKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGF1dG8gcnVuTG9naWNhbFJlY3QgPSBsaW5lUnVuLmxvZ2ljYWxS
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gc3R5bGUuZm9udENh
c2NhZGUoKS53aWR0aChXZWJDb3JlOjpUZXh0UnVuIHsgJmhvcml6b250YWxFbGxpcHNpcyB9KTsK
KyAgICAgICAgICAgICAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSBzdHlsZS5mb250Q2FzY2FkZSgp
LndpZHRoKEdyYXBoaWNzVGV4dFJ1biB7ICZob3Jpem9udGFsRWxsaXBzaXMgfSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkgKyBlbGxpcHNpc1dpZHRoID4gbGlu
ZUJveExvZ2ljYWxSZWN0LnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5l
eHQgcnVuIHdpdGggZWxsaXBzaXMgd291bGQgc3VyZWx5IG92ZXJmbG93LiBTbyBsZXQncyBqdXN0
IGFkZCBpdCB0byB0aGlzIHJ1biBldmVuIGlmCiAgICAgICAgICAgICAgICAgICAgIC8vIGl0IG1h
a2VzIHRoZSBydW4gd2lkZXIgdGhhbiBpdCBvcmlnaW5hbGx5IHdhcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKaW5kZXggNDgxMjBiN2I3OWI5Li5iNzJjY2RkNjFhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC00OTIsMTEgKzQ5MiwxMSBAQCB2b2lk
IExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiAKICAgICAgICAgYXV0byYgbGluZSA9IGlubGluZUNvbnRlbnQubGlu
ZUZvclJ1bihydW4pOwogICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1bi5leHBhbnNpb24oKTsK
LSAgICAgICAgLy8gVGV4dFJ1biBleHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVzdGVkIHdpdGgg
dGhlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVk
CisgICAgICAgIC8vIEdyYXBoaWNzVGV4dFJ1biBleHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVz
dGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRl
ciBhbGlnbmVkCiAgICAgICAgIC8vIGFuZCB0aGUgcnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRv
IHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0aGUgeHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAw
cHgpLgogICAgICAgICBhdXRvJiBmb250Q2FzY2FkZSA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAg
ICAgICAgIGF1dG8geFBvcyA9IHJlY3QueCgpIC0gKGxpbmUubGluZUJveExlZnQoKSArIGxpbmUu
Y29udGVudExlZnQoKSk7Ci0gICAgICAgIFdlYkNvcmU6OlRleHRSdW4gdGV4dFJ1biB7IHRleHRD
b250ZW50LnJlbmRlcmVkQ29udGVudCgpLCB4UG9zLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFu
c2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0
UnVuIHsgdGV4dENvbnRlbnQucmVuZGVyZWRDb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jp
em9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
IAogICAgICAgICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXgg
NzEyYjNhMjkwM2UwLi43MmI4ZjNmYzY5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byBlbmRPZmZzZXQgPSBzZWxlY3RhYmxlUmFuZ2UoKS5jbGFtcChvZmZzZXQpOwogCiAg
ICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QocmVjdCgpLngoKSwg
MCwgMCwgMCk7Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oSHlwaGVu
TW9kZTo6SWdub3JlKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihIeXBo
ZW5Nb2RlOjpJZ25vcmUpOwogICAgICAgICBydW4oKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkuYWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgZW5kT2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0Rp
cmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSkubWF4WCgpOwogICAgIH0KQEAgLTEyMiw3ICsxMjIsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgbG9naWNhbExl
ZnQsIHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoLCBzZWxlY3Rpb25IZWlnaHQgfTsKIAotICAg
ICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6OkluY2x1ZGUp
OworICAgICAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6OkluY2x1
ZGUpOwogICAgICAgICBpZiAoY2xhbXBlZFN0YXJ0IHx8IGNsYW1wZWRFbmQgIT0gdGV4dFJ1bi5s
ZW5ndGgoKSkKICAgICAgICAgICAgIHJ1bigpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5hZGp1c3RT
ZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBjbGFtcGVkU3RhcnQs
IGNsYW1wZWRFbmQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBlbnVtIGNsYXNzIEh5cGhlbk1vZGUgeyBJbmNsdWRlLCBJZ25vcmUgfTsKLSAgICBUZXh0UnVu
IGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZSBoeXBoZW5Nb2RlKSBjb25zdAorICAgIEdyYXBoaWNz
VGV4dFJ1biBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGUgaHlwaGVuTW9kZSkgY29uc3QKICAgICB7
CiAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuKCkuc3R5bGUoKTsKICAgICAgICAgYXV0byBleHBh
bnNpb24gPSBydW4oKS5leHBhbnNpb24oKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodGV4dCgpLCBzdHlsZS5oeXBoZW5TdHJpbmco
KSk7CiAgICAgICAgIH0oKTsKIAotICAgICAgICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0Rm9yUnVu
LCB4UG9zLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9y
IH07CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dEZvclJ1biwgeFBvcywg
ZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAg
ICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHls
ZS50YWJTaXplKCkpOwogICAgICAgICByZXR1cm4gdGV4dFJ1bjsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDU5ZTZkODE4ZjhlOS4uMjk4N2I1YTc5Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zm
c2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVhdGlvCiAKIHN0YXRpYyBib29sIGNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBib29sIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAo
Zm9udC5jb2RlUGF0aChUZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6
OkNvbXBsZXgpCisgICAgaWYgKGZvbnQuY29kZVBhdGgoR3JhcGhpY3NUZXh0UnVuKGNvbnRlbnQp
KSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChmb250LndvcmRTcGFjaW5nKCkgfHwgZm9udC5sZXR0ZXJTcGFjaW5nKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGI1OTY1ZjU2
YTQ5YS4uNDc0NDgwOTdmNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSaWdodEFsaWduZWRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ZmxvYXQgdGV4dEdhcCA9IDEwOwogICAgIGZsb2F0IHRleHRCYXNlbGluZUZyb21Ub3AgPSAxNDsK
IAotICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4odGV4dCk7CisgICAgYXV0byB0ZXh0UnVu
ID0gR3JhcGhpY3NUZXh0UnVuIHsgdGV4dCB9OwogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQu
d2lkdGgodGV4dFJ1bik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsK
ICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIGJveExvY2F0aW9uICsgRmxvYXRT
aXplKC0odGV4dFdpZHRoICsgdGV4dEdhcCksIHRleHRCYXNlbGluZUZyb21Ub3ApKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwCmluZGV4IDE4NjRiOTlmZjcwOS4uZTJjMGYyM2Y4ZDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAK
QEAgLTkzLDMyICs5MywzMiBAQCBwcml2YXRlOgogCiAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24gPSB7IDEwLCAyMCB9OwogICAgICAgICBTdHJpbmcgc3RyaW5nID0gICJDUFU6ICIgKyBjcHVV
c2FnZVN0cmluZyhnRGF0YS5jcHUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZv
bnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0
KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAg
IHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgc3RyaW5nID0gIk1l
bW9yeTogIiArIGZvcm1hdEJ5dGVOdW1iZXIoZ0RhdGEudG90YWxEaXJ0eVNpemUpOwotICAgICAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24p
OworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihz
dHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsg
Mik7CiAKICAgICAgICAgc3RyaW5nID0gIkV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihn
RGF0YS50b3RhbEV4dGVybmFsU2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQobV90ZXh0
Rm9udCwgVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CisgICAgICAgIGNvbnRleHQuZHJhd1Rl
eHQobV90ZXh0Rm9udCwgR3JhcGhpY3NUZXh0UnVuKHN0cmluZyksIHBvc2l0aW9uKTsKICAgICAg
ICAgcG9zaXRpb24ubW92ZSgwLCBnRm9udFNpemUgKyAyKTsKIAogICAgICAgICBzdHJpbmcgPSAi
R0MgSGVhcDogIiArIGZvcm1hdEJ5dGVOdW1iZXIoZ0RhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6R0NIZWFwXS5kaXJ0eVNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4
dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdU
ZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAg
ICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgc3RyaW5nID0g
IkdDIG93bmVkOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihnRGF0YS5jYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpHQ093bmVkXS5kaXJ0eVNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1f
dGV4dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAg
ICAgICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgTW9ub3Rv
bmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgc3RyaW5nID0gIkVk
ZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGdEYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiwg
bm93KTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBUZXh0UnVuKHN0cmlu
ZyksIHBvc2l0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBHcmFw
aGljc1RleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvbi5tb3ZlKDAs
IGdGb250U2l6ZSArIDIpOwogCiAgICAgICAgIHN0cmluZyA9ICJGdWxsIEdDOiAiICsgZ2NUaW1l
clN0cmluZyhnRGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5vdyk7Ci0gICAgICAgIGNv
bnRleHQuZHJhd1RleHQobV90ZXh0Rm9udCwgVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7Cisg
ICAgICAgIGNvbnRleHQuZHJhd1RleHQobV90ZXh0Rm9udCwgR3JhcGhpY3NUZXh0UnVuKHN0cmlu
ZyksIHBvc2l0aW9uKTsKICAgICAgICAgcG9zaXRpb24ubW92ZSgwLCBnRm9udFNpemUgKyAyKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYzBjZTcyYzVmZmMxLi41
YjRmNzgwNWUzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNDEsNyArMzQx
LDcgQEAgdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZG8KIH0KICNlbmRpZgogCi1GbG9hdFNpemUgQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGNhc2Nh
ZGUsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorRmxvYXRTaXplIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25z
dCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGF1dG8gc2l6ZSA9IG1f
cHJpbWFyeUNvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwog
ICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3VGV4dChjYXNjYWRlLCBydW4sIHBvaW50LCBmcm9t
LCB0byk7CkBAIC0zNTQsMTMgKzM1NCwxMyBAQCB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbAogICAg
IG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51
bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgY2Fz
Y2FkZSwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8pCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNv
bnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29u
c3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZy
b20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIG1fcHJpbWFyeUNvbnRleHQu
ZHJhd0VtcGhhc2lzTWFya3MoY2FzY2FkZSwgcnVuLCBtYXJrLCBwb2ludCwgZnJvbSwgdG8pOwog
ICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3RW1waGFzaXNNYXJrcyhjYXNjYWRlLCBydW4sIG1h
cmssIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikKK3ZvaWQgQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBj
b25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRD
YXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KQogewogICAgIG1fcHJpbWFyeUNvbnRleHQuZHJhd0JpZGlUZXh0KGNhc2NhZGUsIHJ1biwgcG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LmRy
YXdCaWRpVGV4dChjYXNjYWRlLCBydW4sIHBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDJkZWQ1MzZkZDEzNi4uZjZlZjFkY2RhMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91Ymxl
LCBib29sJiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKICNlbmRpZgogCi0gICAgRmxvYXRTaXplIGRy
YXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6
Om51bGxvcHQpIGZpbmFsOworICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFs
OwogICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdFbXBo
YXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21T
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwotICAgIHZvaWQgZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2Nh
ZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgZmluYWw7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOworICAgIHZv
aWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhpY3NUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBmaW5hbDsKIAogICAg
IHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5l
cywgU3Ryb2tlU3R5bGUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA0NDkzMmRl
ZmNkOTguLjQ4NWExN2JjYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yOCw5ICsyOCw5
IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVu
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCi0j
aW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCkKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKKyAgICAgICAgYXV0byBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwogICAgICAgICByZXR1
cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleDsK
ICAgICB9CiAKQEAgLTcwLDE2ICs3MCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyVGV4dCYgdGV4dCwgZmxv
YXQgeFBvcykKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyVGV4dCYgdGV4dCwgZmxvYXQgeFBvcykKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKKyAgICAg
ICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0
eWxlKCkpOwogICAgICAgICBydW4uc2V0WFBvcyh4UG9zKTsKICAgICAgICAgcmV0dXJuIHJ1bjsK
ICAgICB9CiAKICAgICAvLyBDb21wbGV4VGV4dENvbnRyb2xsZXIgaGFzIG9ubHkgcmVmZXJlbmNl
cyB0byBpdHMgRm9udENhc2NhZGUgYW5kIFRleHRSdW4gc28gdGhleSBtdXN0IGJlIGtlcHQgYWxp
dmUgaGVyZS4KICAgICBGb250Q2FzY2FkZSBtX2ZvbnQ7Ci0gICAgVGV4dFJ1biBtX3J1bjsKKyAg
ICBHcmFwaGljc1RleHRSdW4gbV9ydW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBsZXhUZXh0
Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKQogICAg
IH0KIH0KIAotQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dENvbnRyb2xsZXIoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgYm9vbCBtYXlVc2VOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMs
IGJvb2wgZm9yVGV4dEVtcGhhc2lzKQorQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4
dENvbnRyb2xsZXIoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYgcnVuLCBib29sIG1heVVzZU5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiogZmFsbGJhY2tGb250cywgYm9vbCBmb3JUZXh0RW1waGFzaXMpCiAgICAgOiBtX2Zh
bGxiYWNrRm9udHMoZmFsbGJhY2tGb250cykKICAgICAsIG1fZm9udChmb250KQogICAgICwgbV9y
dW4ocnVuKQpAQCAtMTMwLDcgKzEzMCw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0CiAgICAg
ZmluaXNoQ29uc3RydWN0aW9uKCk7CiB9CiAKLUNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIFZlY3RvcjxSZWY8Q29tcGxleFRleHRSdW4+PiYgcnVucykKK0NvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBHcmFwaGljc1RleHRSdW4mIHJ1biwgVmVjdG9yPFJlZjxDb21wbGV4VGV4dFJ1bj4+JiBydW5z
KQogICAgIDogbV9mb250KGZvbnQpCiAgICAgLCBtX3J1bihydW4pCiAgICAgLCBtX2VuZChydW4u
bGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IDJlNGUxNmI3YjUyZi4uNjJkYzY2YjQ2NDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udDsKLWNsYXNzIFRleHRSdW47CitjbGFz
cyBHcmFwaGljc1RleHRSdW47CiAKIGVudW0gR2x5cGhJdGVyYXRpb25TdHlsZSB7IEluY2x1ZGVQ
YXJ0aWFsR2x5cGhzLCBCeVdob2xlR2x5cGhzIH07CiAKQEAgLTUxLDEwICs1MSwxMCBAQCBlbnVt
IEdseXBoSXRlcmF0aW9uU3R5bGUgeyBJbmNsdWRlUGFydGlhbEdseXBocywgQnlXaG9sZUdseXBo
cyB9OwogY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgYm9vbCBtYXlVc2VOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
biA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
Zm9yVGV4dEVtcGhhc2lzID0gZmFsc2UpOworICAgIENvbXBsZXhUZXh0Q29udHJvbGxlcihjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGJvb2wgbWF5VXNlTmF0dXJh
bFdyaXRpbmdEaXJlY3Rpb24gPSBmYWxzZSwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMgPSAwLCBib29sIGZvclRleHRFbXBoYXNpcyA9IGZhbHNlKTsKIAogICAgIGNsYXNzIENv
bXBsZXhUZXh0UnVuOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbXBsZXhUZXh0Q29udHJvbGxlcihj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBWZWN0b3I8UmVmPENvbXBsZXhUZXh0
UnVuPj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGljc1RleHRSdW4mLCBWZWN0b3I8UmVmPENvbXBsZXhU
ZXh0UnVuPj4mKTsKIAogICAgIC8vIEFkdmFuY2UgYW5kIGVtaXQgZ2x5cGhzIHVwIHRvIHRoZSBz
cGVjaWZpZWQgY2hhcmFjdGVyLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZSh1bnNp
Z25lZCB0bywgR2x5cGhCdWZmZXIqID0gbnVsbHB0ciwgR2x5cGhJdGVyYXRpb25TdHlsZSA9IElu
Y2x1ZGVQYXJ0aWFsR2x5cGhzLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9
IG51bGxwdHIpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxjb25z
dCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7IG51bGxwdHIgfTsKIAogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBtX2ZvbnQ7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV9ydW47CisgICAgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBtX3J1bjsKIAogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2VuZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAwNTBlMjg3ZDk5ZGMuLjM2ZmUx
ZDkyYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAj
aW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlICJXaWR0aEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBGb250Q2FjaGU6
OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKS51cGRhdGVGb250
Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3IpKTsKIH0KIAotR2x5cGhCdWZmZXIg
Rm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91
dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4s
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0
RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNv
bXBsZXgpCiAgICAgICAgIHJldHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZv
clRleHRFbXBoYXNpcyk7CkBAIC0xNjYsNyArMTY2LDcgQEAgR2x5cGhCdWZmZXIgRm9udENhc2Nh
ZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVu
LAogICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBmb3JUZXh0RW1w
aGFzaXMpOwogfQogCi1GbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitGbG9hdFNpemUg
Rm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlv
biA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAgICAgYXV0byBnbHlwaEJ1ZmZlciA9IGxh
eW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24p
OwpAQCAtMTgwLDcgKzE4MCw3IEBAIEZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvCiAgICAgcmV0dXJu
IHN0YXJ0UG9pbnQgLSBwb2ludDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR3JhcGhpY3NU
ZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsK
ICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgZHJhd0VtcGhhc2lzTWFy
a3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9pbnQpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpk
aXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAorc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2Fk
ZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSBjb25zdAogewogICAgIEFTU0VSVCghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpOwogICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKQEAgLTIy
Myw3ICsyMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxh
eUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleAogICAgIHJldHVybiBkaXNwbGF5
TGlzdDsKIH0KICAgICAKLWZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0
IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+KiBmYWxsYmFja0ZvbnRzLCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSwgZmxvYXQq
IG91dFdpZHRoQWZ0ZXJSYW5nZSkgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4
dFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIGZsb2F0KiBvdXRXaWR0
aEJlZm9yZVJhbmdlLCBmbG9hdCogb3V0V2lkdGhBZnRlclJhbmdlKSBjb25zdAogewogICAgIEFT
U0VSVChmcm9tIDw9IHRvKTsKICAgICBBU1NFUlQodG8gPD0gcnVuLmxlbmd0aCgpKTsKQEAgLTI2
Nyw3ICsyNjcsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBU
ZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgcmV0dXJuIG9mZnNldEFm
dGVyUmFuZ2UgLSBvZmZzZXRCZWZvcmVSYW5nZTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6d2lkdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+
KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewog
ICAgIGlmICghcnVuLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMwNiw3ICszMDYs
NyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4
dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogewogICAgIGlmICh0ZXh0LmlzTnVsbCgpIHx8
IHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQoY29kZVBhdGgo
VGV4dFJ1bih0ZXh0KSkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpOworICAgIEFTU0VSVChjb2RlUGF0
aChHcmFwaGljc1RleHRSdW4odGV4dCkpICE9IENvZGVQYXRoOjpDb21wbGV4KTsKICAgICBmbG9h
dCogY2FjaGVFbnRyeSA9IG1fZm9udHMtPndpZHRoQ2FjaGUoKS5hZGQodGV4dCwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKICAgICBpZiAoY2FjaGVFbnRyeSAmJiAh
c3RkOjppc25hbigqY2FjaGVFbnRyeSkpCiAgICAgICAgIHJldHVybiAqY2FjaGVFbnRyeTsKQEAg
LTQyMCw3ICs0MjAsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElm
QXZhaWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAot
dm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBz
ZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5n
dGgoKSk7CiAgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pICE9IENvZGVQYXRoOjpDb21w
bGV4KQpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsCiAgICAgcmV0
dXJuIGFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChydW4sIHNlbGVjdGlvblJlY3Qs
IGZyb20sIGRlc3RpbmF0aW9uKTsKIH0KIAotaW50IEZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3Np
dGlvbihjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlw
aHMpIGNvbnN0CitpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9uKGNvbnN0IEdyYXBo
aWNzVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25z
dAogewogICAgIGlmIChjb2RlUGF0aChydW4sIHgpICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAg
ICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KHJ1biwgeCwgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0
aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogICAgIHJldHVybiBzX2NvZGVQYXRoOwogfQogCi1G
b250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4m
IHJ1biwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8pIGNvbnN0CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRo
KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAgICBpZiAoc19jb2RlUGF0
aCAhPSBDb2RlUGF0aDo6QXV0bykKICAgICAgICAgcmV0dXJuIHNfY29kZVBhdGg7CkBAIC0xMTM1
LDcgKzExMzUsNyBAQCBlbnVtIGNsYXNzIEdseXBoVW5kZXJsaW5lVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIERyYXdPdmVyR2x5cGgKIH07CiAgICAgCi1zdGF0aWMgR2x5cGhVbmRlcmxpbmVUeXBlIGNv
bXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgR2x5cGhVbmRlcmxpbmVU
eXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICAv
LyBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIHNraXAgZGVzY2VuZGVycy4gSG93ZXZlciwgc2tpcHBp
bmcgZGVzY2VuZGVycyBvbiBDSksgY2hhcmFjdGVycyBsZWFkcyB0byB1bmRlc2lyYWJsZSByZW5k
ZXJpbmdzLAogICAgIC8vIHNvIHdlIHdhbnQgdG8gZHJhdyB0aHJvdWdoIENKSyBjaGFyYWN0ZXJz
IChvbiBhIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgYmFzaXMpLgpAQCAtMTI0Nyw3ICsxMjQ3LDcg
QEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYg
bWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygpLmhlaWdo
dCgpOwogfQogCi1HbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25z
dCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFz
aXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6
bGF5b3V0U2ltcGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29u
c3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKIApAQCAtMTI4Myw3ICsxMjgzLDcg
QEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnMKICAgICByZXR1cm4gZ2x5cGhCdWZmZXI7CiB9CiAK
LUdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBm
b3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0Q29t
cGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAKQEAgLTE0MDUsNyArMTQwNSw3IEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgR2x5cGhCdWZmZXImCiAgICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIG1hcmtCdWZm
ZXIsIHN0YXJ0UG9pbnQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbjo6RG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5KTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93KSBjb25zdAogewogICAgIFdpZHRoSXRlcmF0b3IgaXQoKnRoaXMsIHJ1biwgZmFsbGJh
Y2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBA
IC0xNDIyLDcgKzE0MjIsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBs
ZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbgogICAgIHJldHVybiBp
dC5ydW5XaWR0aFNvRmFyKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9y
Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKK2Zsb2F0IEZv
bnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVu
JiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93
KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250
cm9sbGVyKCp0aGlzLCBydW4sIHRydWUsIGZhbGxiYWNrRm9udHMpOwogICAgIGlmIChnbHlwaE92
ZXJmbG93KSB7CkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRX
aWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGbwog
ICAgIHJldHVybiBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCk7CiB9CiAKLXZvaWQg
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2lt
cGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZm
ZXIgZ2x5cGhCdWZmZXI7CiAgICAgV2lkdGhJdGVyYXRvciBpdCgqdGhpcywgcnVuKTsKQEAgLTE0
NTUsNyArMTQ1NSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JT
aW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjCiAgICAgc2VsZWN0aW9uUmVj
dC5zZXRXaWR0aChMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGFmdGVyV2lkdGggLSBiZWZvcmVX
aWR0aCkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0CiB7CiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMsIHJ1bik7
CiAgICAgY29udHJvbGxlci5hZHZhbmNlKGZyb20pOwpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mIHJ1biwgTGF5b3V0UmUKICAgICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKExheW91dFVu
aXQ6OmZyb21GbG9hdENlaWwoYWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoKSk7CiB9CiAKLWludCBG
b250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKK2ludCBGb250
Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewog
ICAgIGZsb2F0IGRlbHRhID0geDsKIApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgaW50IEZvbnRDYXNj
YWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBm
bG9hdCB4LCBib28KICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbnQgRm9udENhc2NhZGU6Om9m
ZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4
LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAoraW50IEZvbnRDYXNjYWRlOjpvZmZz
ZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBm
bG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewogICAgIENvbXBsZXhU
ZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4pOwogICAgIHJldHVybiBjb250cm9s
bGVyLm9mZnNldEZvclBvc2l0aW9uKHgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTE2MDQs
NyArMTYwNCw3IEBAIHN0YXRpYyB2b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJh
dGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgUGF0aEVsZW1lbnQmCiAKIGNsYXNzIEdseXBoVG9QYXRo
VHJhbnNsYXRvciB7CiBwdWJsaWM6Ci0gICAgR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRl
eHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgRmxv
YXRQb2ludCYgdGV4dE9yaWdpbikKKyAgICBHbHlwaFRvUGF0aFRyYW5zbGF0b3IoY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNv
bnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4pCiAgICAgICAgIDogbV9pbmRleCgwKQogICAgICAg
ICAsIG1fdGV4dFJ1bih0ZXh0UnVuKQogICAgICAgICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZm
ZXIpCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9pbmRleDsKLSAgICBjb25zdCBUZXh0UnVuJiBtX3RleHRSdW47CisgICAgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBtX3RleHRSdW47CiAgICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhC
dWZmZXI7CiAgICAgY29uc3QgRm9udCogbV9mb250RGF0YTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
bV90cmFuc2xhdGlvbjsKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgR2x5cGhUb1BhdGhUcmFu
c2xhdG9yOjphZHZhbmNlKCkKICAgICAgICAgbV9mb250RGF0YSA9ICZtX2dseXBoQnVmZmVyLmZv
bnRBdChtX2luZGV4KTsKIH0KIAotRGFzaEFycmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRl
cnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0
ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdAorRGFzaEFycmF5
IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0
UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0CiB7CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRz
KCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDZjNTA2NTdiMTkzZC4uMjZkYTk0M2Mx
ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKQEAgLTQyLDEwICs0MiwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBMYXlvdXRSZWN0Owog
Y2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFRleHRMYXlvdXQ7Ci1jbGFzcyBUZXh0UnVuOwogCiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgSW5NZW1vcnlEaXNwbGF5TGlzdDsKQEAgLTEy
NSwyMSArMTI1LDIxIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICBlbnVtIEN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSB9OwotICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9w
dCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCwgQ3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsK
ICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwot
ICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CiAKLSAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhS
ZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBG
bG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKKyAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50
ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCi0g
ICAgZmxvYXQgd2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgZmxv
YXQqIG91dFdpZHRoQmVmb3JlUmFuZ2UgPSBudWxscHRyLCBmbG9hdCogb3V0V2lkdGhBZnRlclJh
bmdlID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgd2lkdGgoY29u
c3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5
cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICBmbG9hdCB3aWR0aE9mVGV4dFJhbmdlKGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBIYXNoU2V0PGNv
bnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGZsb2F0KiBvdXRXaWR0aEJlZm9yZVJhbmdl
ID0gbnVsbHB0ciwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHdpZHRoKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdDsKICAgICBmbG9hdCB3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBU
ZXh0RGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSBjb25zdDsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0TGF5b3V0LCBUZXh0TGF5b3V0RGVsZXRlcj4gY3JlYXRlTGF5b3V0KFJlbmRl
clRleHQmLCBmbG9hdCB4UG9zLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSkgY29uc3Q7CiAgICAg
c3RhdGljIGZsb2F0IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBs
ZW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKLSAgICBpbnQg
b2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25l
ZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OworICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBHcmFwaGljc1RleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CisgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBMYXlv
dXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2Fw
cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9u
dFZhcmlhbnRDYXBzOjpTbWFsbDsgfQogCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAogICAgIGVu
dW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2ltcGxlLCBDb21wbGV4LCBTaW1w
bGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRleHRS
dW4mLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgQ29kZVBhdGgg
Y29kZVBhdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
ZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7IH0KICAg
ICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbik7CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
ZmxvYXQgc3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgeyByZXR1cm4gMTQ7IH0KIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3RG
b3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9t
ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSB7IH0sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiA9IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbjo6RG9Ob3RQYWludElmRm9udE5vdFJl
YWR5KSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBH
cmFwaGljc1RleHRSdW4mLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSB7IH0sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbjo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KFdJTikgJiYgVVNFKENHKQogICAgIHN0YXRpYyB2b2lkIHNldEZvbnRTbW9vdGhpbmdMZXZlbChp
bnQpOwpAQCAtMjIxLDIzICsyMjEsMjMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBlbnVtIEZv
clRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1waGFzaXMg
fTsKIAotICAgIEdseXBoQnVmZmVyIGxheW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4m
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RG
b3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIEdseXBoQnVmZmVyIGxheW91dFNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFz
aXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CisgICAgR2x5cGhCdWZmZXIgbGF5
b3V0VGV4dChDb2RlUGF0aCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBj
b25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9
IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3R2x5cGhCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JiwgQ3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBH
bHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwotICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvclNp
bXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRl
eHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OworICAgIGludCBvZmZzZXRGb3JQ
b3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgZmxvYXQgcG9zaXRp
b24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0U2Vs
ZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCiAg
ICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25z
dCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5SZXR1cm5GYWxsYmFj
a0ZvbnRzRm9yQ29tcGxleFRleHQoKTsKICAgICBzdGF0aWMgYm9vbCBjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogCi0gICAgR2x5cGhCdWZmZXIgbGF5b3V0Q29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0
RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZmxv
YXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgaW50
IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBv
c2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYg
c2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIEds
eXBoQnVmZmVyIGxheW91dENvbXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRF
bXBoYXNpcykgY29uc3Q7CisgICAgZmxvYXQgZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
MCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9v
bCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25S
ZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2Vs
ZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCiAgICAgc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudElu
dGVybmFsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBUZXh0RGlyZWN0aW9uLCBFeHBh
bnNpb25CZWhhdmlvcik7CiAgICAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBUZXh0RGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5NGUx
YTBmNzliNGYuLjc1Mjg1YWNmZmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTnVs
bEdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCi0jaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IFRleHRSdW5JdGVyYXRvcihjb25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgVGV4dFJ1bkl0ZXJhdG9yKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biogdGV4dFJ1biwgdW5z
aWduZWQgb2Zmc2V0KQogICAgICAgICA6IG1fdGV4dFJ1bih0ZXh0UnVuKQogICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKICAgICB7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgVGV4dFJ1bkl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gIW9wZXJh
dG9yPT0ob3RoZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgVGV4dFJ1biogbV90ZXh0UnVu
OworICAgIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biogbV90ZXh0UnVuOwogICAgIHVuc2lnbmVkIG1f
b2Zmc2V0OwogfTsKIApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgLS1tX3RyYW5zcGFyZW5jeUxheWVyQ291bnQ7CiB9
CiAKLUZsb2F0U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKK0Zsb2F0U2l6ZSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGlj
c1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIC8vIERpc3BsYXkgbGlzdCByZWNvcmRp
bmcgZm9yIHRleHQgY29udGVudCBpcyBkb25lIGF0IGdseXBocyBsZXZlbC4gU2VlIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0dseXBocy4KICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhpcywgcnVu
LCBwb2ludCwgZnJvbSwgdG8pOwpAQCAtNDkyLDEyICs0OTIsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGgKICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRvKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3MoKnRoaXMs
IHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRS
dW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQogewogICAgIEJpZGlSZXNv
bHZlcjxUZXh0UnVuSXRlcmF0b3IsIEJpZGlDaGFyYWN0ZXJSdW4+IGJpZGlSZXNvbHZlcjsKICAg
ICBiaWRpUmVzb2x2ZXIuc2V0U3RhdHVzKEJpZGlTdGF0dXMocnVuLmRpcmVjdGlvbigpLCBydW4u
ZGlyZWN0aW9uYWxPdmVycmlkZSgpKSk7CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgIEZsb2F0UG9pbnQgY3VyclBvaW50ID0gcG9pbnQ7CiAgICAgQmlkaUNo
YXJhY3RlclJ1biogYmlkaVJ1biA9IGJpZGlSdW5zLmZpcnN0UnVuKCk7CiAgICAgd2hpbGUgKGJp
ZGlSdW4pIHsKLSAgICAgICAgVGV4dFJ1biBzdWJydW4gPSBydW4uc3ViUnVuKGJpZGlSdW4tPnN0
YXJ0KCksIGJpZGlSdW4tPnN0b3AoKSAtIGJpZGlSdW4tPnN0YXJ0KCkpOworICAgICAgICBhdXRv
IHN1YnJ1biA9IHJ1bi5zdWJSdW4oYmlkaVJ1bi0+c3RhcnQoKSwgYmlkaVJ1bi0+c3RvcCgpIC0g
YmlkaVJ1bi0+c3RhcnQoKSk7CiAgICAgICAgIGJvb2wgaXNSVEwgPSBiaWRpUnVuLT5sZXZlbCgp
ICUgMjsKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246
OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25h
bE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDI1Mjg2OWUw
YmZlYS4uOTJlZTRmYWYxMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODgsMTMgKzg4LDEzIEBAIGNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKK2NsYXNzIEdyYXBoaWNzVGV4dFJ1
bjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE1lZGlhUGxheWVy
OwogY2xhc3MgUm91bmRlZFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFBh
dGg7Ci1jbGFzcyBUZXh0UnVuOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CkBAIC00NjgsMTAgKzQ2OCwxMCBAQCBwdWJsaWM6CiAKICAgICAv
LyBUZXh0CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxv
cHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENh
c2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qg
Y29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmlu
dGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdMaW5lRm9yVGV4dChj
b25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzID0gZmFsc2Us
IFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCmlu
ZGV4IDYzZTY2MzgwOTVkMC4uZGUxZTlhNDg4NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCkBAIC0yNCwxMSArMjQsMTEgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzVGV4dFJ1bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBFeHBl
Y3RlZFRleHRSdW5TaXplIHsKK3N0cnVjdCBFeHBlY3RlZEdyYXBoaWNzVGV4dFJ1blNpemUgewog
ICAgIFN0cmluZyB0ZXh0OwogICAgIFRhYlNpemUgdGFiU2l6ZTsKICAgICBmbG9hdCBmbG9hdDE7
CkBAIC0zNyw2ICszNyw2IEBAIHN0cnVjdCBFeHBlY3RlZFRleHRSdW5TaXplIHsKICAgICB1bnNp
Z25lZCBiaXRmaWVsZHMgOiA5OwogfTsKIAotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRleHRSdW4p
ID09IHNpemVvZihFeHBlY3RlZFRleHRSdW5TaXplKSwgVGV4dFJ1bl9pc19ub3Rfb2ZfZXhwZWN0
ZWRfc2l6ZSk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoR3JhcGhpY3NUZXh0UnVuKSA9PSBzaXpl
b2YoRXhwZWN0ZWRHcmFwaGljc1RleHRSdW5TaXplKSwgR3JhcGhpY3NUZXh0UnVuX2lzX25vdF9v
Zl9leHBlY3RlZF9zaXplKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUZXh0UnVuLmgKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCnJlbmFtZSB0byBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaAppbmRleCAxZDQ3ZDY1ZDY4
MjQuLjAzN2Q3MTA3ODMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVGV4dFJ1bi5oCkBAIC0yMSw4ICsyMSw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgVGV4
dFJ1bl9oCi0jZGVmaW5lIFRleHRSdW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUYWJT
aXplLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCkBAIC00MCwxMCArMzksMTAgQEAgY2xhc3Mg
Rm9udDsKIAogc3RydWN0IEdseXBoRGF0YTsKIAotY2xhc3MgVGV4dFJ1biB7CitjbGFzcyBHcmFw
aGljc1RleHRSdW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxv
YXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBE
ZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246
OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2Nh
bkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBleHBsaWNpdCBHcmFwaGljc1RleHRSdW4oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5z
aW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92
ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKICAg
ICAgICAgOiBtX3RleHQodGV4dCkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBt
X3hwb3MoeHBvcykKQEAgLTU5LDEyICs1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgh
bV90ZXh0LmlzTnVsbCgpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1Zp
ZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJvb2wgZGlyZWN0aW9uYWxP
dmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCi0g
ICAgICAgIDogVGV4dFJ1bihzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgeHBv
cywgZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvciwgZGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92
ZXJyaWRlLCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCisgICAgZXhwbGljaXQgR3JhcGhpY3NU
ZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFu
c2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4
cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJv
b2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2Rl
UGF0aCA9IHRydWUpCisgICAgICAgIDogR3JhcGhpY3NUZXh0UnVuKHN0cmluZ1ZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpLCB4cG9zLCBleHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yLCBk
aXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUsIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkK
ICAgICB7CiAgICAgfQogCi0gICAgVGV4dFJ1biBzdWJSdW4odW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKKyAgICBHcmFwaGljc1RleHRSdW4gc3ViUnVuKHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigoc3RhcnRPZmZzZXQgKyBsZW5ndGgpIDw9
IG1fdGV4dC5sZW5ndGgoKSk7CiAKQEAgLTEzNiwxMiArMTM1LDEwIEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9OwogCi1pbmxpbmUgdm9pZCBUZXh0UnVu
OjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUmIHNpemUpCitpbmxpbmUgdm9p
ZCBHcmFwaGljc1RleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgY29uc3QgVGFiU2l6ZSYg
c2l6ZSkKIHsKICAgICBtX2FsbG93VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6ZSA9IHNpemU7
CiB9CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNzkwNmQzNTZlNzA3Li4xZmVlNTEy
MGJmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
dWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgQ29sb3ImKSBmaW5hbCB7IH0KIAotICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
PSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyByZXR1
cm4geyB9OyB9CisgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsg
fQogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWwgeyB9CiAKLSAgICB2b2lkIGRyYXdFbXBoYXNp
c01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRD
YXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWlu
dElmRm9udE5vdFJlYWR5KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhNjNmYzhhNzNlY2IuLjk4OTRkMDJkOTM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0
b3IuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
IAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KLSNpbmNsdWRlICJUZXh0UnVuLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0
UnVuLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsZWZ0VHJ1bmNhdGVUb0J1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpCiAKIHN0YXRpYyBmbG9h
dCBzdHJpbmdXaWR0aChjb25zdCBGb250Q2FzY2FkZSYgcmVuZGVyZXIsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgVGV4dFJ1biBydW4oU3RyaW5nVmll
dyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmluZ1Zp
ZXcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgcmV0dXJuIHJlbmRlcmVyLndpZHRoKHJ1bik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApp
bmRleCA1MmE3YjA4NjZjZDAuLjhkODVmYTI0MmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBX
aWR0aENhY2hlX2gKICNkZWZpbmUgV2lkdGhDYWNoZV9oCiAKLSNpbmNsdWRlICJUZXh0UnVuLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uo
dGV4dCwgZW50cnkpOwogICAgIH0KIAotICAgIGZsb2F0KiBhZGQoY29uc3QgVGV4dFJ1biYgcnVu
LCBmbG9hdCBlbnRyeSwgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXMsIGJvb2wgaGFzV29yZFNw
YWNpbmdPckxldHRlclNwYWNpbmcsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpCisgICAg
ZmxvYXQqIGFkZChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQgZW50cnksIGJvb2wg
aGFzS2VybmluZ09yTGlnYXR1cmVzLCBib29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5n
LCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KQogICAgIHsKICAgICAgICAgaWYgKE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggZTUzZTFmNjg4NTlmLi5hNzYzMmVl
Nzg5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAotV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRv
cihjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNv
bnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgYm9vbCBhY2NvdW50Rm9yR2x5cGhCb3VuZHMsIGJv
b2wgZm9yVGV4dEVtcGhhc2lzKQorV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBib29sIGFjY291bnRGb3JHbHlwaEJvdW5kcywgYm9v
bCBmb3JUZXh0RW1waGFzaXMpCiAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAsIG1fcnVuKHJ1bikK
ICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCmluZGV4IDI0MDU4YjFjZTVlNC4u
YzY3MWNkNTMwZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5oCkBAIC0yOSw5ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGb250Q2FzY2FkZTsgIAogY2xhc3MgRm9udDsK
LWNsYXNzIFRleHRSdW47CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBzdHJ1Y3QgR2x5cGhEYXRh
Owogc3RydWN0IEdseXBoSW5kZXhSYW5nZTsKIHN0cnVjdCBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hh
cmFjdGVyVHJlYXRlZEFzU3BhY2U7CkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIENoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZSA9IFZlY3RvcjxPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRl
ZEFzU3BhCiBzdHJ1Y3QgV2lkdGhJdGVyYXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgV2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
YWNjb3VudEZvckdseXBoQm91bmRzID0gZmFsc2UsIGJvb2wgZm9yVGV4dEVtcGhhc2lzID0gZmFs
c2UpOworICAgIFdpZHRoSXRlcmF0b3IoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGlj
c1RleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
YWNjb3VudEZvckdseXBoQm91bmRzID0gZmFsc2UsIGJvb2wgZm9yVGV4dEVtcGhhc2lzID0gZmFs
c2UpOwogCiAgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpOwogICAg
IGJvb2wgYWR2YW5jZU9uZUNoYXJhY3RlcihmbG9hdCYgd2lkdGgsIEdseXBoQnVmZmVyJik7CkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBmaXJzdEdseXBoT3ZlcmZsb3coKSBj
b25zdCB7IEFTU0VSVChtX2FjY291bnRGb3JHbHlwaEJvdW5kcyk7IHJldHVybiBtX2ZpcnN0R2x5
cGhPdmVyZmxvdzsgfQogICAgIGZsb2F0IGxhc3RHbHlwaE92ZXJmbG93KCkgY29uc3QgeyBBU1NF
UlQobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpOyByZXR1cm4gbV9sYXN0R2x5cGhPdmVyZmxvdzsg
fQogCi0gICAgY29uc3QgVGV4dFJ1biYgcnVuKCkgY29uc3QgeyByZXR1cm4gbV9ydW47IH0KKyAg
ICBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CiAg
ICAgZmxvYXQgcnVuV2lkdGhTb0ZhcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0Zhcjsg
fQogICAgIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudENoYXJhY3RlckluZGV4OyB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGx5QWRkaXRpb25hbFdpZHRoKEdseXBoQnVmZmVyJiwgR2x5cGhJbmRleFJhbmdl
LCBmbG9hdCBsZWZ0QWRkaXRpb25hbFdpZHRoLCBmbG9hdCByaWdodEFkZGl0aW9uYWxXaWR0aCwg
ZmxvYXQgbGVmdEV4cGFuc2lvbkFkZGl0aW9uYWxXaWR0aCwgZmxvYXQgcmlnaHRFeHBhbnNpb25B
ZGRpdGlvbmFsV2lkdGgpOwogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9udDsKLSAgICBj
b25zdCBUZXh0UnVuJiBtX3J1bjsKKyAgICBjb25zdCBHcmFwaGljc1RleHRSdW4mIG1fcnVuOwog
ICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2ZhbGxiYWNrRm9udHMgeyBudWxscHRyIH07CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwCmluZGV4IDFmMzkyZjU0NzczOS4uMTRjOWJmMGNiYjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNh
dG9yKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBQbGEKICAgICBjb25zdGV4cHIg
YXV0byBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRo
QWxwaGFCeXRlKDE5Mik7CiAgICAgY29uc3RleHByIGF1dG8gZGlzcGxheUxpc3RCb3JkZXJDb2xv
ciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTY2KTsKIAotICAgIFRleHRSdW4g
dGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoIkhlbHZldGljYSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA2
ODgxMjIxYjA0NTguLjYxOWUzOTU5MGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdE
SVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgiCi0jaW5jbHVkZSAiVGV4dFJ1
bi5oIgogI2luY2x1ZGUgIlRpbGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uaCIKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb25DRi5oPgpA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpkcmF3VGV4dEF0UG9p
bnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgeCwgQ0dGbG9hCiAKICAgICBHcmFwaGlj
c0NvbnRleHRDRyBjZyhjb250ZXh0KTsKICAgICBjZy5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKLSAgICBjZy5kcmF3VGV4dChmb250LCBUZXh0UnVuKHRleHQpLCBJbnRQb2ludCh4LCB5KSk7
CisgICAgY2cuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NUZXh0UnVuKHRleHQpLCBJbnRQb2ludCh4
LCB5KSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRXaW4uY3BwCmluZGV4IDUyY2I4OGY1M2QwNS4uNmVkMTgzZWY4M2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCkBA
IC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZm
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Rl
eHRSdW4uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggY2U4YzdkNDgxNzkwLi5jZWE3YzJhZWQ2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAt
MzcsNiArMzcsNyBAQAogI2ltcG9ydCAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQg
IkdyYXBoaWNzVGV4dFJ1bi5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW1wb3J0ICJQYWdlLmgiCkBAIC00NCw3ICs0NSw2IEBACiAjaW1wb3J0ICJT
aW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0
SW5kaWNhdG9yLmgiCi0jaW1wb3J0ICJUZXh0UnVuLmgiCiAjaW1wb3J0IDxDb3JlR3JhcGhpY3Mv
Q29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgogI2ltcG9ydCA8
VUlLaXQvVUlDb2xvci5oPgpAQCAtMTQxLDkgKzE0MSw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIENHUmVjdEdldEhlaWdodChpbWFnZVJl
Y3QpKTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwogICAgICAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGltYWdlUmVjdCwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoNCkpLCBDb2xvcjo6d2hpdGUpOwotICAgICAgICB0aXRsZUZvbnRDYXNjYWRl
LmdldCgpLmRyYXdUZXh0KGNvbnRleHQsIFRleHRSdW4odHJ1bmNhdGVkVG9wU3RyaW5nKSwgRmxv
YXRQb2ludChkcmFnSW1hZ2VQYWRkaW5nLCAxOCArIGRyYWdJbWFnZVBhZGRpbmcpKTsKKyAgICAg
ICAgdGl0bGVGb250Q2FzY2FkZS5nZXQoKS5kcmF3VGV4dChjb250ZXh0LCBHcmFwaGljc1RleHRS
dW4odHJ1bmNhdGVkVG9wU3RyaW5nKSwgRmxvYXRQb2ludChkcmFnSW1hZ2VQYWRkaW5nLCAxOCAr
IGRyYWdJbWFnZVBhZGRpbmcpKTsKICAgICAgICAgaWYgKCF0cnVuY2F0ZWRCb3R0b21TdHJpbmcu
aXNFbXB0eSgpKQotICAgICAgICAgICAgdXJsRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29u
dGV4dCwgVGV4dFJ1bih0cnVuY2F0ZWRCb3R0b21TdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFn
ZVBhZGRpbmcsIDQwICsgZHJhZ0ltYWdlUGFkZGluZykpOworICAgICAgICAgICAgdXJsRm9udENh
c2NhZGUuZ2V0KCkuZHJhd1RleHQoY29udGV4dCwgR3JhcGhpY3NUZXh0UnVuKHRydW5jYXRlZEJv
dHRvbVN0cmluZyksIEZsb2F0UG9pbnQoZHJhZ0ltYWdlUGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQ
YWRkaW5nKSk7CiAgICAgfV07CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PFRleHRJbmRpY2F0
b3JPcHRpb24+IGRlZmF1bHRMaW5rSW5kaWNhdG9yT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGVlMGNmZjY0MDhjZi4uNjhkZmMxZWRkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzU2
LDI5ICszNTYsMjkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSk7CiAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpG
aWxsKTsKICAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMpLCAn
OicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLics
IHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKLSAgICBjb250ZXh0LmRyYXdUZXh0
KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9uKTsK
KyAgICBjb250ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBHcmFwaGljc1RleHRSdW4oKFN0cmluZ1Zp
ZXcoc3RyaW5nKSkpLCB0aW1lTG9jYXRpb24pOwogCiAgICAgc3RyaW5nID0gbWFrZVN0cmluZyhw
YWQoJzAnLCA2LCBtX2ZyYW1lTnVtYmVyKyspKTsKICAgICB0aW1lTG9jYXRpb24ubW92ZSgwLCBt
X2Jhc2VGb250U2l6ZSk7Ci0gICAgY29udGV4dC5kcmF3VGV4dCh0aW1lRm9udCwgVGV4dFJ1bigo
U3RyaW5nVmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4
dCh0aW1lRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxv
Y2F0aW9uKTsKIAogICAgIEZsb2F0UG9pbnQgc3RhdHNMb2NhdGlvbihjYXB0dXJlU2l6ZS53aWR0
aCgpICogLjQ1LCBjYXB0dXJlU2l6ZS5oZWlnaHQoKSAqIC43NSk7CiAgICAgc3RyaW5nID0gbWFr
ZVN0cmluZygiUmVxdWVzdGVkIGZyYW1lIHJhdGU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChmcmFtZVJhdGUoKSwgMSksICIgZnBzIik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChzdGF0
c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3
KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAKICAgICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwg
bV9zdGF0c0ZvbnRTaXplKTsKICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCJPYnNlcnZlZCBmcmFt
ZSByYXRlOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgob2JzZXJ2ZWRGcmFtZVJhdGUo
KSwgMSksICIgZnBzIik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4o
KFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdU
ZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3Rh
dHNMb2NhdGlvbik7CiAKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgc3RhdHNM
b2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CiAgICAgc3RyaW5nID0gbWFrZVN0cmlu
ZygiU2l6ZTogIiwgc2l6ZS53aWR0aCgpLCAiIHggIiwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29u
dGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBz
dGF0c0xvY2F0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NU
ZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAKICAgICBpZiAo
bW9ja0NhbWVyYSgpKSB7CiAgICAgICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9u
dFNpemUpOwogICAgICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCJQcmVzZXQgc2l6ZTogIiwgY2Fw
dHVyZVNpemUud2lkdGgoKSwgIiB4ICIsIGNhcHR1cmVTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
Y29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkp
LCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIEdy
YXBoaWNzVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24pOwogCiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsKICAgICAgICAgc3dpdGNoIChmYWNpbmdNb2RlKCkp
IHsKQEAgLTQwMCwxMCArNDAwLDEwIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRy
YXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgfQogICAgICAgICBzdHJp
bmcgPSBtYWtlU3RyaW5nKCJDYW1lcmE6ICIsIGNhbWVyYSk7CiAgICAgICAgIHN0YXRzTG9jYXRp
b24ubW92ZSgwLCBtX3N0YXRzRm9udFNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0
YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24pOwor
ICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJp
bmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAgICAgfSBlbHNlIGlmICghbmFtZSgp
LmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9udFNp
emUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgVGV4dFJ1biB7IG5hbWUo
KSB9LCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQs
IEdyYXBoaWNzVGV4dFJ1biB7IG5hbWUoKSB9LCBzdGF0c0xvY2F0aW9uKTsKICAgICB9CiAKICAg
ICBGbG9hdFBvaW50IGJpcEJvcExvY2F0aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuNiwgY2Fw
dHVyZVNpemUuaGVpZ2h0KCkgKiAuNik7CkBAIC00MTEsMTEgKzQxMSwxMSBAQCB2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAg
ICAgaWYgKGZyYW1lTW9kIDw9IDE1KSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpjeWFuKTsKICAgICAgICAgU3RyaW5nIGJpcCgiQmlwIl9zKTsKLSAgICAgICAgY29udGV4
dC5kcmF3VGV4dChiaXBCb3BGb250LCBUZXh0UnVuKFN0cmluZ1ZpZXcoYmlwKSksIGJpcEJvcExv
Y2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250LCBHcmFwaGljc1Rl
eHRSdW4oU3RyaW5nVmlldyhiaXApKSwgYmlwQm9wTG9jYXRpb24pOwogICAgIH0gZWxzZSBpZiAo
ZnJhbWVNb2QgPiAzMCAmJiBmcmFtZU1vZCA8PSA0NSkgewogICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6eWVsbG93KTsKICAgICAgICAgU3RyaW5nIGJvcCgiQm9wIl9zKTsKLSAg
ICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250LCBUZXh0UnVuKFN0cmluZ1ZpZXcoYm9w
KSksIGJpcEJvcExvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250
LCBHcmFwaGljc1RleHRSdW4oU3RyaW5nVmlldyhib3ApKSwgYmlwQm9wTG9jYXRpb24pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApp
bmRleCBhYzZlMjQ0ZDA0MWUuLjE0OWFlNjU1ZTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTMzLDExICszMywxMSBAQAogI2luY2x1ZGUg
IkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dFdpbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1
bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlRleHRSdW4u
aCIKICNpbmNsdWRlICJXZWJDb3JlVGV4dFJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE1MSw4ICsxNTEsOCBAQCBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiwgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgaW5MYWJlbCwgVAogICAgIH0KIAogICAgIC8vIEZpcnN0IHN0ZXAgaW4gZHJhd2luZyB0
aGUgbGluayBkcmFnIGltYWdlIHdpZHRoLgotICAgIFRleHRSdW4gbGFiZWxSdW4obGFiZWwpOwot
ICAgIFRleHRSdW4gdXJsUnVuKHVybFN0cmluZyk7CisgICAgR3JhcGhpY3NUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdXJsUnVuKHVybFN0cmluZyk7CiAgICAg
SW50U2l6ZSBsYWJlbFNpemUobGFiZWxGb250LT53aWR0aChsYWJlbFJ1biksIGxhYmVsRm9udC0+
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1ldHJpY3MoKS5kZXNjZW50
KCkpOwogCiAgICAgaWYgKGxhYmVsU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xhYmVsU3RyaW5nV2lk
dGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5k
ZXggMjQ4ZTNkYzFlMzgyLi5hY2Q1NmRhMmRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiR0RJ
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0V2luLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgpAQCAtNDgsNyArNDksNiBAQAogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVXaW4uaCIKLSNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBA
IC0zNTIsNyArMzUyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5k
U2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAgICAgICAgICAgICBpdGVtRm9u
dC51cGRhdGUobV9wb3B1cENsaWVudC0+Zm9udFNlbGVjdG9yKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9wdXBXaWR0aCA9IHN0ZDo6bWF4KHBvcHVwV2lkdGgsIHN0YXRpY19jYXN0PGludD4o
Y2VpbGYoaXRlbUZvbnQud2lkdGgoVGV4dFJ1bih0ZXh0KSkpKSk7CisgICAgICAgIHBvcHVwV2lk
dGggPSBzdGQ6Om1heChwb3B1cFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKGl0ZW1Gb250
LndpZHRoKEdyYXBoaWNzVGV4dFJ1bih0ZXh0KSkpKSk7CiAgICAgfQogCiAgICAgaWYgKG5hdHVy
YWxIZWlnaHQgPiBtYXhQb3B1cEhlaWdodCkKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIFBvcHVw
TWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAg
ICAgICBTdHJpbmcgaXRlbVRleHQgPSBjbGllbnQoKS0+aXRlbVRleHQoaW5kZXgpOwogCi0gICAg
ICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dMZWZ0RXhwYW5zaW9uLCBp
dGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJy
aWRlKCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwg
QWxsb3dMZWZ0RXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUu
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihvcHRpb25UZXh0Q29sb3IpOwogCiAgICAgICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gbV9m
b250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFlZjAwYi4uZTE2NDllY2U3NmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCkBAIC0y
OCwxNCArMjgsMTQgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgotI2luY2x1ZGUg
IlRleHRSdW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBzaG91bGRV
c2VGb250U21vb3RoaW5nID0gdHJ1ZTsKIAotc3RhdGljIGJvb2wgaXNPbmVMZWZ0VG9SaWdodFJ1
bihjb25zdCBUZXh0UnVuJiBydW4pCitzdGF0aWMgYm9vbCBpc09uZUxlZnRUb1JpZ2h0UnVuKGNv
bnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVu
Lmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gdV9j
aGFyRGlyZWN0aW9uKHJ1bltpXSk7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBib29sIGlzT25l
TGVmdFRvUmlnaHRSdW4oY29uc3QgVGV4dFJ1biYgcnVuKQogCiBzdGF0aWMgdm9pZCBkb0RyYXdU
ZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4KQogewotICAgIFRleHRSdW4gcnVuKHRleHQp
OworICAgIEdyYXBoaWNzVGV4dFJ1biBydW4odGV4dCk7CiAKICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihjb2xvcik7CiAgICAgaWYgKGlzT25lTGVmdFRvUmlnaHRSdW4ocnVuKSkKQEAgLTYwLDEy
ICs2MCwxMiBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29ucwogCiAgICAgICAgIGludCBiZWZvcmVX
aWR0aDsKICAgICAgICAgaWYgKHVuZGVybGluZWRJbmRleCA+IDApIHsKLSAgICAgICAgICAgIFRl
eHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKDAsIHVuZGVybGluZWRJ
bmRleCkpOworICAgICAgICAgICAgR3JhcGhpY3NUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3
KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9y
ZVdpZHRoID0gZm9udC53aWR0aChiZWZvcmVSdW4pOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGJlZm9yZVdpZHRoID0gMDsKIAotICAgICAgICBUZXh0UnVuIHVuZGVybGluZWRSdW4oU3Ry
aW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcodW5kZXJsaW5lZEluZGV4LCAxKSk7CisgICAgICAgIEdy
YXBoaWNzVGV4dFJ1biB1bmRlcmxpbmVkUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHVu
ZGVybGluZWRJbmRleCwgMSkpOwogICAgICAgICBpbnQgdW5kZXJsaW5lZFdpZHRoID0gZm9udC53
aWR0aCh1bmRlcmxpbmVkUnVuKTsKIAogICAgICAgICBJbnRQb2ludCB1bmRlcmxpbmVQb2ludChw
b2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5
TGlzdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENh
Y2hlLmgKaW5kZXggYTE1YTc0NDg1YTVmLi5kMjY1MDk1ODkxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgKQEAgLTI2LDkgKzI2LDkg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY2FjaGU7CiAgICAgfQogCi0gICAgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KiBn
ZXQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4pCisgICAgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0KiBnZXQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYgdGV4dFJ1bikKICAgICB7CiAgICAgICAgIGlmIChNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1f
Z2x5cGhSdW5NYXAuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUVsbGlwc2lzQm94LmNwcAppbmRleCAyN2U1ZDIxMTg0MGUuLjgyMzliODBmNTNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCkBAIC0y
MywxMSArMjMsMTEgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NU
ZXh0UnVuLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVk
ZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIExlZ2FjeUVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExU
Uj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KHgoKSArIHBhaW50T2Zmc2V0LngoKSks
IExheW91dFVuaXQoeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3Ao
KSksIDBfbHUsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkgfTsKLSAgICBUZXh0UnVuIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBzdHlsZSwgQWxsb3dSaWdodEV4
cGFuc2lvbik7CisgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1biht
X3N0ciwgc3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0KTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggMTk2ZjYzNzlkOTA2Li5iOTllNTcxMDI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTIyNCw3ICsyMjQs
NyBAQCBMYXlvdXRSZWN0IExlZ2FjeUlubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1
bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZWQgZQogICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9w
ID0gdGhpcy0+c2VsZWN0aW9uVG9wKCk7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQg
PSB0aGlzLT5zZWxlY3Rpb25IZWlnaHQoKTsKIAotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0
ZVRleHRSdW4oKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CiAKICAgICBM
YXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KGxvZ2ljYWxMZWZ0KCkpLCBzZWxl
Y3Rpb25Ub3AsIExheW91dFVuaXQobG9naWNhbFdpZHRoKCkpLCBzZWxlY3Rpb25IZWlnaHQgfTsK
ICAgICAvLyBBdm9pZCBtZWFzdXJpbmcgdGhlIHRleHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94
IGlzIHNlbGVjdGVkIGFzIGFuIG9wdGltaXphdGlvbi4KQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lk
IExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgIGJvb2wgaGlnaGxpZ2h0RGVjb3JhdGlvbnMgPSAhTWFy
a2VkVGV4dDo6Y29sbGVjdEZvckhpZ2hsaWdodHMocmVuZGVyZXIoKSwgcGFyZW50KCktPnJlbmRl
cmVyKCksIHNlbGVjdGFibGVSYW5nZSgpLCBNYXJrZWRUZXh0OjpQYWludFBoYXNlOjpEZWNvcmF0
aW9uKS5pc0VtcHR5KCk7CiAgICAgYm9vbCBsaW5lRGVjb3JhdGlvbnMgPSAhdGV4dERlY29yYXRp
b25zLmlzRW1wdHkoKTsKICAgICBpZiAoKGxpbmVEZWNvcmF0aW9ucyB8fCBoaWdobGlnaHREZWNv
cmF0aW9ucykgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbikgewot
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgICAgIGF1dG8g
dGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4
dFJ1bi5sZW5ndGgoKTsKICAgICAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9u
KQogICAgICAgICAgICAgbGVuZ3RoID0gbV90cnVuY2F0aW9uOwpAQCAtNjgzLDcgKzY4Myw3IEBA
IEZsb2F0UmVjdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBNYXJrZWRUZXh0JiBtCiAKICAgICAvLyBBdm9pZCBtZWFzdXJpbmcgdGhlIHRl
eHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94IGlzIHNlbGVjdGVkIGFzIGFuIG9wdGltaXphdGlv
bi4KICAgICBpZiAobWFya2VkVGV4dC5zdGFydE9mZnNldCB8fCBtYXJrZWRUZXh0LmVuZE9mZnNl
dCAhPSBzZWxlY3RhYmxlUmFuZ2UoKS5jbGFtcChlbmQoKSkpIHsKLSAgICAgICAgVGV4dFJ1biBy
dW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgICAgIGF1dG8gcnVuID0gY3JlYXRlVGV4dFJ1bigp
OwogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KDAsIHksIDAs
IGhlaWdodCk7CiAgICAgICAgIGxpbmVGb250KCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
cnVuLCBzZWxlY3Rpb25SZWN0LCBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0LCBtYXJrZWRUZXh0LmVu
ZE9mZnNldCk7CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0OwpAQCAtNzcyLDcgKzc3Miw3
IEBAIHZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QKIAogICAgIC8vIE5vdGUgdGhhdCBpZiB0aGUgdGV4
dCBpcyB0cnVuY2F0ZWQsIHdlIGxldCB0aGUgdGhpbmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUgdHJ1
bmNhdGlvbgogICAgIC8vIGRyYXcgaXRzIG93biBoaWdobGlnaHQuCi0gICAgVGV4dFJ1biB0ZXh0
UnVuID0gY3JlYXRlVGV4dFJ1bigpOworICAgIGF1dG8gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4o
KTsKIAogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAg
ICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20gPSByb290Qm94LnNlbGVjdGlvbkJvdHRvbSgp
OwpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJr
ZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QKICAgICBpZiAoYXV0
byogZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKICAgICAgICAgdGV4dFBhaW50ZXIu
c2V0U2hhZG93KGRlYnVnU2hhZG93KTsKIAotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRl
eHRSdW4oKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CiAgICAgdGV4dFBh
aW50ZXIuc2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKCp0aGlzLCBwYWludEluZm8sIGZvbnQs
IGNvbnRleHQsIHRleHRSdW4pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyIHsgY29udGV4dCwgZmFsc2UgfTsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIExlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24oUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0CiAKICAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVk
LCB3ZSBsZXQgdGhlIHRoaW5nIGJlaW5nIHBhaW50ZWQgaW4gdGhlIHRydW5jYXRpb24KICAgICAv
LyBkcmF3IGl0cyBvd24gZGVjb3JhdGlvbi4KLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVU
ZXh0UnVuKCk7CisgICAgYXV0byB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwogCiAgICAgLy8g
QXZvaWQgbWVhc3VyaW5nIHRoZSB0ZXh0IHdoZW4gdGhlIGVudGlyZSBsaW5lIGJveCBpcyBzZWxl
Y3RlZCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgICAgRmxvYXRSZWN0IHNuYXBwZWRTZWxlY3Rpb25S
ZWN0ID0gYm94UmVjdDsKQEAgLTEwNTUsMTUgKzEwNTUsMTUgQEAgZmxvYXQgTGVnYWN5SW5saW5l
VGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogICAgIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QobG9naWNhbExlZnQoKSwgMCwgMCwg
MCk7CiAgICAgYm9vbCBpZ25vcmVDb21iaW5lZFRleHQgPSB0cnVlOwogICAgIGJvb2wgaWdub3Jl
SHlwaGVuID0gdHJ1ZTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKGlnbm9y
ZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVU
ZXh0UnVuKGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKTsKICAgICBsaW5lRm9udCgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpOwogICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0
aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLm1heFgoKTsKIH0KIAotVGV4dFJ1biBM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0
LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKK0dyYXBoaWNzVGV4dFJ1biBMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9y
ZUh5cGhlbikgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGxpbmVTdHlsZSgpOwot
ICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHQoaWdub3JlQ29tYmluZWRUZXh0LCBpZ25vcmVIeXBo
ZW4pLCB0ZXh0UG9zKCksIGV4cGFuc2lvbigpLCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rp
b24oKSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1
YWwsICFyZW5kZXJlcigpLmNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIH07CisgICAgR3JhcGhp
Y3NUZXh0UnVuIHRleHRSdW4geyB0ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVu
KSwgdGV4dFBvcygpLCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9u
KCksIGRpck92ZXJyaWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFs
LCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OwogICAgIHRleHRSdW4u
c2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHRSdW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZVRleHRCb3guaAppbmRleCA4OTJmMjAyMDgyOTUuLjUwZWJlNzVhMjQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCkBAIC0y
MiwxMCArMjIsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc1RleHRS
dW4uaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVCb3guaCIKICNpbmNsdWRlICJNYXJrZWRUZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICBTaGFk
b3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKTsKIAogICAgIFN0cmluZyB0ZXh0KGJvb2wgaWdub3Jl
Q29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0gZmFsc2UpIGNvbnN0OyAv
LyBUaGUgZWZmZWN0aXZlIHRleHQgZm9yIHRoZSBydW4uCi0gICAgVGV4dFJ1biBjcmVhdGVUZXh0
UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0g
ZmFsc2UpIGNvbnN0OworICAgIEdyYXBoaWNzVGV4dFJ1biBjcmVhdGVUZXh0UnVuKGJvb2wgaWdu
b3JlQ29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNzZhZGFkZDBkY2Iz
Li4wYzU1ZDU5Y2JkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtMzEwMCw3ICszMTAwLDcgQEAgY29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5h
bWUoKSBjb25zdAogICAgIHJldHVybiAiUmVuZGVyQmxvY2siOwogfQogCi1UZXh0UnVuIFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFn
cyBmbGFncykKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byB0ZXh0
RGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVy
cmlkZSA9IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsKQEAgLTMxMTYsMzcg
KzMxMTYsMzcgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJgogICAgIC8vIDIuIFRoaXMgcmVwbGFj
ZW1lbnQgZG9lc24ndCBhZmZlY3Qgc3RyaW5nIGluZGljZXMuIFdlJ3JlIHJlcGxhY2luZyBhIHNp
bmdsZSBVbmljb2RlIGNvZGUgdW5pdCB3aXRoIGFub3RoZXIgVW5pY29kZSBjb2RlIHVuaXQuCiAg
ICAgLy8gSG93IGNvbnZlbmllbnQuCiAgICAgYXV0byB1cGRhdGVkU3RyaW5nID0gUmVuZGVyQmxv
Y2s6OnVwZGF0ZVNlY3VyaXR5RGlzY0NoYXJhY3RlcnMoc3R5bGUsIHN0cmluZ1ZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKTsKLSAgICByZXR1cm4gVGV4dFJ1bihXVEZNb3ZlKHVwZGF0ZWRT
dHJpbmcpLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUpOworICAgIHJldHVybiBHcmFwaGljc1RleHRSdW4geyBXVEZNb3ZlKHVwZGF0ZWRTdHJpbmcp
LCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfTsK
IH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcm
IHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykK
IHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxl
LCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bihjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQor
R3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21T
dHJpbmcmIGF0b21TdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdFRleHRSdW4oU3RyaW5nVmlldyhhdG9tU3RyaW5nKSwgc3R5bGUsIGV4cGFuc2lvbiwgZmxh
Z3MpOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJl
bmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uKQorR3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
KHRleHQuc3RyaW5nVmlldygpLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0KIAotVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb24pCitHcmFwaGljc1RleHRSdW4gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7CiAg
ICAgQVNTRVJUKHN0b3AgPD0gdGV4dC50ZXh0KCkubGVuZ3RoKCkpOwogICAgIHJldHVybiBjb25z
dHJ1Y3RUZXh0UnVuKHRleHQuc3RyaW5nVmlldyhvZmZzZXQsIHN0b3ApLCBzdHlsZSwgZXhwYW5z
aW9uKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3Rl
cnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9u
KQorR3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDY1MGM2NjNmZDgy
Mi4uNzU1OTllZTk4Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtMjMsOSArMjMsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHYXBSZWN0cy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKQEAgLTE5NSwxOSArMTk1LDE5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iai5pc0Zsb2F0aW5nKCkgfHwgKG9iai5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhb2JqLnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVU
eXBlKCkgJiYgIW9iai5jb250YWluZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3LCBjb25zdCBSZW5k
ZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFN0
cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsK
LSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFJlbmRlclN0eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRS
dW4oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVu
RmxhZ3MpOwotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNv
bnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAg
ICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3Mg
PSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdy
YXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lv
bik7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwK
KyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVy
VGV4dCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHls
ZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7Ci0gICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNz
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBEZWZhdWx0RXhwYW5zaW9uKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVu
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0
eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAog
ICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwogICAgIAogICAg
IExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlMWNkMDI0OWFkNzAu
LmVjNzRlOWZmZjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxFbWJlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxl
bWVudC5oIgpAQCAtNTMsNyArNTQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tT
dGF0cy5oPgogCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRUZXh0UmVjdDsKICAgICBGbG9hdFJlY3QgYXJyb3dSZWN0
OwogICAgIEZvbnRDYXNjYWRlIGZvbnQ7Ci0gICAgVGV4dFJ1biBydW4oZW1wdHlTdHJpbmcoKSk7
CisgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0
V2lkdGg7CiAgICAgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRl
bnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZv
bnQsIHJ1biwgdGV4dFdpZHRoKTsKIApAQCAtMjkxLDEzICsyOTEsMTMgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5
b3V0UG9pbnQmIGEKICAgICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRUZXh0UmVjdDsKICAgICBGbG9h
dFJlY3QgYXJyb3dSZWN0OwogICAgIEZvbnRDYXNjYWRlIGZvbnQ7Ci0gICAgVGV4dFJ1biBydW4o
ZW1wdHlTdHJpbmcoKSk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsK
ICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoYWNj
dW11bGF0ZWRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRl
eHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKTsKICAgICByZXR1cm4gTGF5
b3V0UmVjdChpbmRpY2F0b3JSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3QmIGluZGljYXRvclJlY3Qs
IEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0JiBhcnJvd1JlY3QsIEZv
bnRDYXNjYWRlJiBmb250LCBUZXh0UnVuJiBydW4sIGZsb2F0JiB0ZXh0V2lkdGgpIGNvbnN0Cit2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVjdCYgY29udGVudFJlY3Qs
IEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBsYWNlbWVudFRleHRSZWN0
LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmIGZvbnQsIEdyYXBoaWNzVGV4dFJ1
biYgcnVuLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdAogewogICAgIGJvb2wgaW5jbHVkZXNBcnJv
dyA9IHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKHBhZ2UoKSwgbV9wbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bAogICAgIGZvbnQgPSBGb250Q2FzY2FkZShXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwogCi0gICAgcnVuID0gVGV4dFJ1biht
X3VuYXZhaWxhYmxlUGx1Z2luUmVwbGFjZW1lbnRUZXh0KTsKKyAgICBydW4gPSBHcmFwaGljc1Rl
eHRSdW4obV91bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dCk7CiAgICAgdGV4dFdpZHRo
ID0gZm9udC53aWR0aChydW4pOwogCiAgICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRTaXplKEZs
b2F0U2l6ZSh0ZXh0V2lkdGggKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFy
Z2luICsgKGluY2x1ZGVzQXJyb3cgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4
dE1hcmdpbldpdGhBcnJvdyA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmlnaHRUZXh0TWFy
Z2luKSwgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RIZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggZWI2YmQ0MzYyMWRi
Li45Yzg2ZjQxYzg4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5oCkBAIC0yNiw4ICsyNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgR3JhcGhpY3NUZXh0UnVuOwogY2xhc3MgTW91c2VFdmVudDsKLWNsYXNzIFRleHRS
dW47CiAKIC8vIFJlbmRlcmVyIGZvciBlbWJlZHMgYW5kIG9iamVjdHMsIG9mdGVuLCBidXQgbm90
IGFsd2F5cywgcmVuZGVyZWQgdmlhIHBsdWctaW5zLgogLy8gRm9yIGV4YW1wbGUsIDxlbWJlZCBz
cmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1Zy1pbi4KQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVz
c2VkKGJvb2wpOwogICAgIGJvb2wgaXNJblVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKGNvbnN0
IE1vdXNlRXZlbnQmKSBjb25zdDsKICAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvcihjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdm9pZCBnZXRSZXBsYWNlbWVudFRl
eHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVj
dCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBs
YWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmLCBUZXh0
UnVuJiwgZmxvYXQmIHRleHRXaWR0aCkgY29uc3Q7CisgICAgdm9pZCBnZXRSZXBsYWNlbWVudFRl
eHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVj
dCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBs
YWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmLCBHcmFw
aGljc1RleHRSdW4mLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGdl
dFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Q7CiAKICAgICBib29sIG1faXNQbHVnaW5VbmF2YWlsYWJsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmlu
ZGV4IDg3ODVmMjI5OWM4MC4uM2IwMWRkNjZlZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkljb24uaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
LSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xMzQs
NyArMTM0LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBk
aXNwbGF5ZWRGaWxlbmFtZSA9IGZpbGVUZXh0VmFsdWUoKTsKICAgICAgICAgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgIFRleHRSdW4gdGV4
dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oZGlzcGxheWVkRmlsZW5hbWUsIHN0eWxlKCksIEFsbG93
UmlnaHRFeHBhbnNpb24sIFJlc3BlY3REaXJlY3Rpb24gfCBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJp
ZGUpOworICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKGRpc3BsYXllZEZp
bGVuYW1lLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBSZXNwZWN0RGlyZWN0aW9uIHwg
UmVzcGVjdERpcmVjdGlvbk92ZXJyaWRlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIGludCBpY29uSGVpZ2h0ID0gbm9kZUhlaWdodCh1cGxvYWRCdXR0b24oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBlYzRmOGZmYmU3MDAuLmU0
MTE4YmYyMGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAgICAg
ICAgIC8vIE9ubHkgZHJhdyB0aGUgYWx0IHRleHQgaWYgaXQnbGwgZml0IHdpdGhpbiB0aGUgY29u
dGVudCBib3gsCiAgICAgICAgICAgICAgICAgLy8gYW5kIG9ubHkgaWYgaXQgZml0cyBhYm92ZSB0
aGUgZXJyb3IgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAg
YXV0byB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUo
KSk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lkdGggeyBmb250LndpZHRoKHRl
eHRSdW4pIH07CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yUGljdHVyZURyYXduKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh1c2FibGVTaXplLndpZHRoKCkgPj0gdGV4dFdpZHRoICYmIGZv
bnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2ZThhYjkxYWY1
ZDEuLmE4OTVlMDMwMGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTMyOTAsNyArMzI5MCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0
dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgRmxvCiAgICAgICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShmb250RGVzY3JpcHRpb24p
LCAwLCAwKTsKICAgICAgICAgZm9udC51cGRhdGUobnVsbHB0cik7CiAKLSAgICAgICAgVGV4dFJ1
biB0ZXh0UnVuID0gVGV4dFJ1bihkZXNjcmlwdGlvbi5uYW1lKTsKKyAgICAgICAgYXV0byB0ZXh0
UnVuID0gR3JhcGhpY3NUZXh0UnVuKGRlc2NyaXB0aW9uLm5hbWUpOwogICAgICAgICBpbWFnZUNv
bnRleHQuc2V0RmlsbENvbG9yKGRlc2NyaXB0aW9uLmZpbGxDb2xvcik7CiAKICAgICAgICAgY29u
c3RleHByIGZsb2F0IHRleHRHYXAgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCmluZGV4IDFkZTY5ZDY5MzZlYS4uN2FkNGM5YWI0YzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250
ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKLXN0YXRpYyBMYXlv
dXRTaXplIGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5k
ZXJTdHlsZSogaXRlbVN0eWxlLCBGb250Q2FzY2FkZSBpdGVtRm9udCwgTGF5b3V0UmVjdCBpdGVt
Qm91ZGluZ0JveCkKK3N0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQoR3Jh
cGhpY3NUZXh0UnVuIHRleHRSdW4sIGNvbnN0IFJlbmRlclN0eWxlKiBpdGVtU3R5bGUsIEZvbnRD
YXNjYWRlIGl0ZW1Gb250LCBMYXlvdXRSZWN0IGl0ZW1Cb3VkaW5nQm94KQogewogICAgIFRleHRB
bGlnbk1vZGUgYWN0dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT50ZXh0QWxpZ24oKTsKICAgICAv
LyBGSVhNRTogRmlyZWZveCBkb2Vzbid0IHJlc3BlY3QgVGV4dEFsaWduTW9kZTo6SnVzdGlmeS4g
U2hvdWxkIHdlPwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJ
dGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAK
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogCi0gICAg
VGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBpdGVt
U3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0
cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dS
aWdodEV4cGFuc2lvbiwgaXRlbVN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHls
ZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgTGF5b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVj
dChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdu
bWVudCh0ZXh0UnVuLCAmaXRlbVN0eWxlLCBpdGVtRm9udCwgcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDk3MWM3ZTI3MDk5My4uOGEz
Yzk5YWIwOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCkBAIC0xNTQ0LDkgKzE1NDQsOSBAQCBzdGF0aWMgU3RyaW5nIHJldmVyc2VkKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogfQogCiBzdHJ1Y3QgUmVuZGVyTGlzdE1hcmtlcjo6VGV4dFJ1bldpdGhV
bmRlcmx5aW5nU3RyaW5nIHsKLSAgICBUZXh0UnVuIHRleHRSdW47CisgICAgR3JhcGhpY3NUZXh0
UnVuIHRleHRSdW47CiAgICAgU3RyaW5nIHVuZGVybHlpbmdTdHJpbmc7Ci0gICAgb3BlcmF0b3Ig
Y29uc3QgVGV4dFJ1biYoKSBjb25zdCB7IHJldHVybiB0ZXh0UnVuOyB9CisgICAgb3BlcmF0b3Ig
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJigpIGNvbnN0IHsgcmV0dXJuIHRleHRSdW47IH0KIH07CiAK
IGF1dG8gUmVuZGVyTGlzdE1hcmtlcjo6dGV4dFJ1bigpIGNvbnN0IC0+IFRleHRSdW5XaXRoVW5k
ZXJseWluZ1N0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKaW5kZXggNzczMjMzYzE0ZmMyLi42Nzk4YzFjYTEzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkNvbG9yQmxlbmRpbmcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3Vw
RWxlbWVudC5oIgpAQCAtNDUsNyArNDYsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIK
LSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTIwNywxMyArMjA3LDEzIEBAIHZvaWQgUmVuZGVyTWVu
dUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCgpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGgg
Kz0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9wdGlvblN0eWxlLT50ZXh0SW5kZW50KCksIDApOwog
ICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5
bGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBm
b250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXhPcHRpb25XaWR0
aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldpZHRoLCBvcHRpb25XaWR0aCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIFRleHRSdW4gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSk7CisgICAgICAgICAg
ICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCkp
OwogICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBzdGQ6Om1heChtYXhPcHRpb25XaWR0aCwg
Zm9udC53aWR0aChydW4pKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCA5Yzk3ZTA4YzE5YWIuLmMxNGFlOTUyMjQzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNzA2LDcgKzcwNiw3IEBAIEFM
V0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENh
c2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgICAgICAgICByZXR1cm4gY29tYmluZVRleHQuY29t
YmluZWRUZXh0V2lkdGgoZik7CiAgICAgfQogCi0gICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bigqdGhpcywgc3RhcnQsIGxlbiwgc3R5bGUpOworICAgIGF1dG8g
cnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIHN0YXJ0LCBsZW4sIHN0
eWxlKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCFjYW5Vc2VTaW1wbGVG
b250Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVT
cGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJ1bi5zZXRYUG9zKHhQb3MpOwpAQCAtOTQ1
LDcgKzk0NSw3IEBAIHN0YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0
JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlCiAgICAgICAgIGZyYWdtZW50V2l0
aEh5cGhlbi5hcHBlbmQod29yZC5zdWJzdHJpbmcoc3VmZml4U3RhcnQsIGZyYWdtZW50TGVuZ3Ro
KSk7CiAgICAgICAgIGZyYWdtZW50V2l0aEh5cGhlbi5hcHBlbmQoc3R5bGUuaHlwaGVuU3RyaW5n
KCkpOwogCi0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKKyAgICAgICAgYXV0byBy
dW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihmcmFnbWVudFdpdGhIeXBoZW4udG9T
dHJpbmcoKSwgc3R5bGUpOwogICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KCFyZW5kZXJlci5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAgICAgICAgIGZsb2F0IGZy
YWdtZW50V2lkdGggPSBmb250LndpZHRoKHJ1biwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJm
bG93KTsKIApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAg
ICAgICAgICAgICAgICAgICAgbV9tYXhXaWR0aCA9IGN1cnJNYXhXaWR0aDsKICAgICAgICAgICAg
ICAgICBjdXJyTWF4V2lkdGggPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCp0aGlzLCBp
LCAxLCBzdHlsZSk7CisgICAgICAgICAgICAgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bigqdGhpcywgaSwgMSwgc3R5bGUpOwogICAgICAgICAgICAgICAgIHJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBydW4uc2V0WFBvcyhsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgpOwog
CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1w
bGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCi0gICAgVGV4dFJ1biBy
dW4obV90ZXh0KTsKKyAgICBHcmFwaGljc1RleHRSdW4gcnVuKG1fdGV4dCk7CiAgICAgcnVuLnNl
dENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7CiAgICAgaWYgKGZvbnQuY29kZVBhdGgo
cnVuKSAhPSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OlNpbXBsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2FkZSYgZiwgZmxvYXQKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUoZiwgZnJvbSwgbGVuLCB4
UG9zLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93LCBzdHlsZSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigqdGhp
cywgZnJvbSwgbGVuLCBzdHlsZSk7CisgICAgICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oKnRoaXMsIGZyb20sIGxlbiwgc3R5bGUpOwogICAgICAgICBydW4uc2V0
Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCFjYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAg
ICAgICAgIHJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUu
dGFiU2l6ZSgpKTsKICAgICAgICAgcnVuLnNldFhQb3MoeFBvcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCAwZjI4MWEwNTdjZjYuLmI2
MmE0ZDJmYjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6Omdl
dEF2ZXJhZ2VDaGFyV2lkdGgoKQogICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOwogICAgIGNvbnN0
IFN0cmluZyBzdHIgPSBTdHJpbmcoJmNoLCAxKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHN0ciwgc3R5bGUoKSwgQWxsb3dSaWdodEV4cGFuc2lvbik7CisgICAgYXV0byB0
ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNp
b24pOwogICAgIHJldHVybiBmb250LndpZHRoKHRleHRSdW4pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTQ3OTkxOGEyOGUwLi42NzgwODli
YTk2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTY0Niw3ICs2NDYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGZsb2F0IG1lYXN1cmVUZXh0KGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1fc3R5bGUpOwor
ICAgICAgICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN0cmluZywg
bV9zdHlsZSk7CiAgICAgICAgIHJldHVybiBtX2ZvbnQud2lkdGgocnVuKTsKICAgICB9CiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcAppbmRleCA4YzYzNzJkNGU2ZGQuLjQxZjFkNzBiNDhiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRm9udENh
c2NhZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1RleHRSdW4uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxGb250RWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgpAQCAtMzMs
NyArMzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0
aW9uU2V0CiB7CiB9CiAKLXZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNv
cmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKK3ZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
KQogewogICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJp
Y3MoKTsKICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRT
aXplKCksIGZvbnRNZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA5YmY0YjRkOTg2NjguLmVmZTEwZTM0NGNlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApA
QCAtMzQsMTMgKzM0LDEzIEBAIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGb250Q2Fz
Y2FkZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEdy
YXBoaWNzVGV4dFJ1bjsKIGNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBTaGFk
b3dEYXRhOwotY2xhc3MgVGV4dFJ1bjsKLSAgICAKKwogY2xhc3MgVGV4dERlY29yYXRpb25QYWlu
dGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cp
IHsgbV9zaGFkb3cgPSB0ZXh0U2hhZG93OyB9CiAgICAgdm9pZCBzZXRTaGFkb3dDb2xvckZpbHRl
cihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBjb2xvckZpbHRlcikgeyBtX3NoYWRvd0NvbG9yRmls
dGVyID0gY29sb3JGaWx0ZXI7IH0KIAotICAgIHZvaWQgcGFpbnRUZXh0RGVjb3JhdGlvbihjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luKTsKKyAgICB2b2lkIHBhaW50VGV4dERlY29yYXRpb24oY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luKTsKIAogICAgIHN0cnVjdCBTdHlsZXMgewogICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcAppbmRleCA3NDg1MmE2YjBkMjUuLmRjN2Y1MzNkNTZlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgVGV4dFBh
aW50ZXI6OlRleHRQYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKIH0KIAotdm9p
ZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9tU3RyaW5nJiBlbXBoYXNp
c01hcmssCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
QXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLAogICAgIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKIHsKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpOwpA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1CiAgICAgbV9nbHlwaERp
c3BsYXlMaXN0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
KiBjb2xvckZpbHRlciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRl
eHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9y
aWdpbiwKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKICAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBBdG9tU3RyaW5n
JiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwgYm9vbCBzdHJva2VkKQog
ewogICAgIGlmICghc2hhZG93KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBUZXh0UGFpbnRl
cjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBG
aWx0ZXJPcGUKICAgICB9CiB9CiAKLXZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhh
c2lzTWFya3NJZk5lZWRlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3Qm
IGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRF
bXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25z
dCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCiAgICAgY29uc3QgVGV4dFBhaW50
U3R5bGUmIHBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyogc2hhZG93Q29sb3JGaWx0ZXIpCiB7CiAgICAgaWYgKHBhaW50U3R5bGUucGFp
bnRPcmRlciA9PSBQYWludE9yZGVyOjpOb3JtYWwpIHsKQEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lk
IFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4
dFJ1biYgdGV4dFJ1biwgY29ucwogCiAgICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0
LmxvY2F0aW9uKCk7CiAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KG1fY29udGV4dCwgcGFpbnRT
dHlsZSwgVXNlRW1waGFzaXNNYXJrQ29sb3IpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2Jq
ZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKLSAgICBjb25zdCBUZXh0UnVuJiBlbXBoYXNp
c01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rl
clRleHRSdW4uZ2V0KCkgOiB0ZXh0UnVuOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHcmFw
aGljc1RleHRSdW4+IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bihTdHJpbmdWaWV3
KCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgIGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFj
ZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsKICAgICBGbG9hdFBvaW50IGVt
cGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3Jp
Z2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKICAgICBpZiAobV9jb21iaW5lZFRl
eHQpCiAgICAgICAgIG1fY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3
aXNlKSk7CkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29ucwogICAg
ICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9ja3dp
c2UpKTsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2lu
KQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVu
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4p
CiB7CiAgICAgcGFpbnRSYW5nZSh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCAwLCB0ZXh0
UnVuLmxlbmd0aCgpKTsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZShjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCit2b2lkIFRleHRQ
YWludGVyOjpwYWludFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
RmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kKQogewogICAgIEFTU0VSVChtX2ZvbnQpOwogICAgIEFTU0VS
VChzdGFydCA8IGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCmluZGV4
IGU0NTM0Y2JmYmYxOC4uYjM1ZmYyODUyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuaApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGb250Q2FzY2FkZTsKK2NsYXNzIEdyYXBoaWNzVGV4
dFJ1bjsKIGNsYXNzIFJlbmRlckNvbWJpbmVUZXh0OwogY2xhc3MgU2hhZG93RGF0YTsKLWNsYXNz
IFRleHRSdW47CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZTsKIApAQCAtNTgsMTEgKzU4LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzSG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBt
X3RleHRCb3hJc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KICAgICB2b2lkIHNldEVtcGhh
c2lzTWFyayhjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBmbG9hdCBvZmZzZXQsIGNvbnN0IFJlbmRl
ckNvbWJpbmVUZXh0Kik7CiAKLSAgICB2b2lkIHBhaW50KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4pOwotICAgIHZv
aWQgcGFpbnRSYW5nZShjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
KTsKKyAgICB2b2lkIHBhaW50KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVj
dCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbik7CisgICAgdm9pZCBwYWlu
dFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXlvdXRSdW4+Ci0gICAgdm9pZCBzZXRHbHlw
aERpc3BsYXlMaXN0SWZOZWVkZWQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuKQorICAgIHZvaWQgc2V0R2x5cGhEaXNwbGF5
TGlzdElmTmVlZGVkKGNvbnN0IExheW91dFJ1biYgcnVuLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuKQogICAgIHsKICAgICAgICAgaWYgKCFUZXh0
UGFpbnRlcjo6c2hvdWxkVXNlR2x5cGhEaXNwbGF5TGlzdChwYWludEluZm8pKQogICAgICAgICAg
ICAgVGV4dFBhaW50ZXI6OnJlbW92ZUdseXBoRGlzcGxheUxpc3QocnVuKTsKQEAgLTc3LDExICs3
NywxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlR2x5cGhEaXNwbGF5TGlz
dChjb25zdCBQYWludEluZm8mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
U3RyaW5nJiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwKKyAgICB2b2lk
IHBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBo
aWNzVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyaywgZmxvYXQgZW1waGFz
aXNNYXJrT2Zmc2V0LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKLSAgICB2b2lkIHBhaW50VGV4
dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiwg
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAorICAgIHZvaWQgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqLCBjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKICAgICAgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgQXRvbVN0cmluZyYgZW1waGFz
aXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCk7Ci0gICAgdm9p
ZCBwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwKKyAgICB2b2lkIHBhaW50VGV4dEFu
ZEVtcGhhc2lzTWFya3NJZk5lZWRlZChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBjb25zdCBGbG9h
dFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCiAgICAgICAgIGNvbnN0IFRleHRQYWludFN0
eWxlJiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCBlYmViZTRmYjZkOTcuLmUxMWM3MTk5NDQ2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKQEAgLTU1Myw3ICs1NTMsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRXaWR0aChSZW5k
ZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgogICAgIGlmIChs
YXlvdXQpCiAgICAgICAgIHJldHVybiBGb250Q2FzY2FkZTo6d2lkdGgoKmxheW91dCwgZnJvbSwg
bGVuLCAmZmFsbGJhY2tGb250cyk7CiAKLSAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZyb20sIGxlbiwgc3R5bGUpOworICAgIGF1dG8gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgZnJvbSwgbGVuLCBzdHlsZSk7CiAg
ICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghdGV4dC5jYW5Vc2VTaW1wbGVGb250
Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIWNvbGxhcHNlV2hpdGVTcGFjZSwgc3R5
bGUudGFiU2l6ZSgpKTsKICAgICBydW4uc2V0WFBvcyh4UG9zKTsKQEAgLTU5Nyw3ICs1OTcsNyBA
QCBpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUgPSB0ZXh0LnN0eWxlKCk7Ci0gICAgVGV4dFJ1biBydW4gPSBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFj
ZSwgc3R5bGUpOworICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
dGV4dCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIHN0eWxlKTsKICAgICBydW4uc2V0VGFi
U2l6ZSghY29sbGFwc2VXaGl0ZVNwYWNlLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJ1bi5zZXRY
UG9zKHhQb3MgKyBsYXN0U3BhY2VXb3JkU3BhY2luZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGM5MWVkY2M2MzhiNS4u
NDhmNzM4NmQ5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgaW50IFNWR0lubGluZVRleHRCb3g6
Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudChjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW4KICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7
CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCi0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29u
c3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLnN0eWxlKCksIGZyYWdtZW50KTsKKyAgICBhdXRvIHRl
eHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyKCkuc3R5bGUoKSwgZnJhZ21lbnQpOwog
CiAgICAgLy8gRXZlbnR1YWxseSBoYW5kbGUgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhz
Ii4KICAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2FsIHRleHQuCkBAIC0xMjUsNyArMTI1LDcg
QEAgRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21l
bnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JgogICAgIHRleHRPcmlnaW4ubW92ZSgwLCAtc2NhbGVk
Rm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSk7CiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QgeyB0ZXh0T3JpZ2luLCBMYXlvdXRTaXplKDAsIExheW91dFVuaXQoZnJhZ21lbnQuaGVpZ2h0
ICogc2NhbGluZ0ZhY3RvcikpIH07Ci0gICAgVGV4dFJ1biBydW4gPSBjb25zdHJ1Y3RUZXh0UnVu
KHN0eWxlLCBmcmFnbWVudCk7CisgICAgYXV0byBydW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxl
LCBmcmFnbWVudCk7CiAgICAgc2NhbGVkRm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChy
dW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICBGbG9h
dFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdy
aXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSk7CiAgICAgaWYgKHNjYWxpbmdGYWN0b3IgPT0gMSkK
QEAgLTM5Myw5ICszOTMsOSBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnJlc3RvcmVHcmFwaGlj
c0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJgogICAgIHJlbGVhc2VQ
YWludGluZ1Jlc291cmNlKGNvbnRleHQsIC8qIHBhdGggKi9udWxscHRyKTsKIH0KIAotVGV4dFJ1
biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkgY29uc3QKK0dyYXBoaWNzVGV4
dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkgY29uc3QKIHsKLSAgICBU
ZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoZnJhZ21l
bnQuY2hhcmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpCisgICAgR3JhcGhpY3NUZXh0UnVu
IHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoZnJhZ21lbnQuY2hh
cmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpCiAgICAgICAgICAgICAgICAgLCAwIC8qIHhQ
b3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1RhYnM9dHJ1ZSAqLwogICAgICAgICAgICAgICAg
ICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJl
bGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAgICAgICAsIEFsbG93UmlnaHRFeHBhbnNpb24K
QEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvbgogICAgICAgICByZWxl
YXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCAmcGF0aCk7CiB9CiAKLXZvaWQgU1ZHSW5s
aW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVu
ZFBvc2l0aW9uKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50
LCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikKIHsKICAgICBm
bG9hdCBzY2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNT
RVJUKHNjYWxpbmdGYWN0b3IpOwpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0CiAgICAgfQogCiAgICAgLy8gRmFzdCBwYXRoIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlv
biwganVzdCBkcmF3IHRoZSB3aG9sZSBjaHVuayBwYXJ0IHVzaW5nIHRoZSByZWd1bGFyIHN0eWxl
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQp
OworICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZyYWdtZW50KTsK
ICAgICBpZiAoIWhhc1NlbGVjdGlvbiB8fCBzdGFydFBvc2l0aW9uID49IGVuZFBvc2l0aW9uKSB7
CiAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIHN0eWxlLCB0ZXh0UnVuLCBm
cmFnbWVudCwgMCwgZnJhZ21lbnQubGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCA2OWJkMjU2
M2IzZWYuLjE2MDAzMGQyYzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIGlzU1ZHSW5saW5lVGV4dEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYpIGNvbnN0OworICAgIEdyYXBoaWNzVGV4dFJ1biBjb25z
dHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jikg
Y29uc3Q7CiAKICAgICBib29sIGFjcXVpcmVQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29udGV4
dComLCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlJik7CiAgICAgdm9pZCByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0Nv
bnRleHQqJiwgY29uc3QgUGF0aCopOwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7CiAgICAgdm9pZCBwYWludERlY29yYXRp
b25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25S
ZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIFRleHRSdW4mLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbik7CisgICAgdm9pZCBw
YWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKTsKICAgICB2b2lkIHBhaW50VGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
JiBzZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rp
b24sIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKIAogICAgIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAKaW5kZXggMzkwOTFlZjhhZjNkLi44N2U5NmYyMjM5MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFNWR1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhTVkdUZXh0TWV0cmljczo6
TWV0cmljc1R5cGUpCiB7CiB9CiAKLVNWR1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhSZW5k
ZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIsIGNvbnN0IFRleHRSdW4mIHJ1bikKK1NWR1Rl
eHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVy
ZXIsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuKQogewogICAgIGZsb2F0IHNjYWxpbmdGYWN0
b3IgPSB0ZXh0UmVuZGVyZXIuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFj
dG9yKTsKQEAgLTU5LDExICs1OSwxMSBAQCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3Mo
UmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1f
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKLVRleHRSdW4gU1ZH
VGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwg
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK0dyYXBoaWNzVGV4dFJ1biBTVkdU
ZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSA9IHRleHQuc3R5bGUoKTsKIAotICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXco
dGV4dC50ZXh0KCkpLnN1YnN0cmluZyhwb3NpdGlvbiwgbGVuZ3RoKQorICAgIEdyYXBoaWNzVGV4
dFJ1biBydW4oU3RyaW5nVmlldyh0ZXh0LnRleHQoKSkuc3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5n
dGgpCiAgICAgICAgICAgICAgICAgLCAwIC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxv
d1RhYnM9dHJ1ZSAqLwogICAgICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2
YW50IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAg
ICAgICAgICAsIEFsbG93UmlnaHRFeHBhbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAppbmRleCA4MDk2MjlkMGY2NDMuLmYwOThiMWYzNWU3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaApAQCAt
MjMsOSArMjMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzVGV4
dFJ1bjsKIGNsYXNzIFJlbmRlclNWR0lubGluZVRleHQ7CiBjbGFzcyBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlczsKLWNsYXNzIFRleHRSdW47CiAKIGNsYXNzIFNWR1RleHRNZXRyaWNzIHsKIHB1Ymxp
YzoKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFNWR1RleHRNZXRyaWNzKFJlbmRlclNW
R0lubGluZVRleHQmLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHdpZHRoKTsKIAogICAgIHN0YXRp
YyBTVkdUZXh0TWV0cmljcyBtZWFzdXJlQ2hhcmFjdGVyUmFuZ2UoUmVuZGVyU1ZHSW5saW5lVGV4
dCYsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5lVGV4dCYsIHVuc2lnbmVkIHBvc2l0
aW9uID0gMCwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyU1ZHSW5saW5lVGV4dCYsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCwgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3dpZHRoICYmICFtX2hlaWdodCAmJiAhbV9nbHlwaC5p
c1ZhbGlkICYmIG1fbGVuZ3RoID09IDE7IH0KIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgR2x5cGgmIGdseXBoKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaDsgfQogCiBwcml2
YXRlOgotICAgIFNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRleHQmLCBjb25zdCBUZXh0
UnVuJik7CisgICAgU1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYsIGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYpOwogCiAgICAgZmxvYXQgbV93aWR0aDsKICAgICBmbG9hdCBtX2hlaWdo
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
QnVpbGRlci5oCmluZGV4IDRmNzQwMjUyMzlkZC4uMzVhMzQ2YTg3NTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKQEAg
LTE5LDggKzE5LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc1RleHRS
dW4uaCIKICNpbmNsdWRlICJTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIgotI2luY2x1ZGUgIlRl
eHRSdW4uaCIKICNpbmNsdWRlICJXaWR0aEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lYXN1cmVUZXh0UmVuZGVy
ZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYsIE1lYXN1cmVUZXh0RGF0YSopOwogCiAgICAgUmVuZGVy
U1ZHSW5saW5lVGV4dCogbV90ZXh0OwotICAgIFRleHRSdW4gbV9ydW47CisgICAgR3JhcGhpY3NU
ZXh0UnVuIG1fcnVuOwogICAgIHVuc2lnbmVkIG1fdGV4dFBvc2l0aW9uOwogICAgIGJvb2wgbV9p
c0NvbXBsZXhUZXh0OwogICAgIFNWR1RleHRNZXRyaWNzIG1fY3VycmVudE1ldHJpY3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJmZDAyNWFiNTk4My4uNzEwNjlhZjRjMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA4LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW5hbWUgVGV4dFJ1biB1bmRlciBncmFwaGljcyB0byBHcmFwaGljc1RleHRSdW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTMzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YSk6CisKIDIwMjEtMDgtMTkgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFuIE9iamVj
dElkZW50aWZpZXI8PiBmb3IgdGV4dCBjaGVja2VyIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JI
aWdobGlnaHRWaWV3Lm1tCmluZGV4IGM3YjhhZjY0MjY0OS4uNzkyNDZhZTJmNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGln
aGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9z
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NUZXh0UnVuLmg+
CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcKIApAQCAtMzI2LDEz
ICszMjYsMTMgQEAgc3RhdGljIENBTGF5ZXIgKiBjcmVhdGVMYXlvdXRMYWJlbExheWVyKFN0cmlu
ZyBsYWJlbCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCwKICAgICBjb25zdGV4cHIgYXV0byBh
cnJvd1NpemUgPSA2OwogICAgIGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCku
ZmxvYXRIZWlnaHQoKTsKIAotICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoV2ViQ29y
ZTo6VGV4dFJ1bihsYWJlbCkpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoV2Vi
Q29yZTo6R3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1heGltdW1XaWR0aCAmJiB0
ZXh0V2lkdGggKyAocGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CiAgICAgICAgIGxhYmVs
LmFwcGVuZCgiLi4uIl9zKTsKICAgICAgICAgd2hpbGUgKHRleHRXaWR0aCArIChwYWRkaW5nICog
MikgPiBtYXhpbXVtV2lkdGggJiYgbGFiZWwubGVuZ3RoKCkgPj0gNCkgewogICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBmb3VydGggZnJvbSBsYXN0IGNoYXJhY3RlciAodGhlIGNoYXJhY3RlciBi
ZWZvcmUgdGhlIGVsbGlwc2lzKSBhbmQgcmVtZWFzdXJlLgogICAgICAgICAgICAgbGFiZWwucmVt
b3ZlKGxhYmVsLmxlbmd0aCgpIC0gNCk7Ci0gICAgICAgICAgICB0ZXh0V2lkdGggPSBmb250Lndp
ZHRoKFdlYkNvcmU6OlRleHRSdW4obGFiZWwpKTsKKyAgICAgICAgICAgIHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoV2ViQ29yZTo6R3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAppbmRleCAyY2EzNTc0MjY3YTYuLmJm
YmMxMjYzYTczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogICAgICAgICAgICAgaXRlbUZvbnRDYXNjYWRl
LnVwZGF0ZShtX3BvcHVwQ2xpZW50LT5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBwb3B1cFdpZHRoID0gc3RkOjptYXg8ZmxvYXQ+KHBvcHVwV2lkdGgsIGNlaWxmKGl0ZW1G
b250Q2FzY2FkZS53aWR0aChUZXh0UnVuKHRleHQpKSkpOworICAgICAgICBwb3B1cFdpZHRoID0g
c3RkOjptYXg8ZmxvYXQ+KHBvcHVwV2lkdGgsIGNlaWxmKGl0ZW1Gb250Q2FzY2FkZS53aWR0aChH
cmFwaGljc1RleHRSdW4odGV4dCkpKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHBvcHVwV2lk
dGggc2hvdWxkIHByb2JhYmx5IHRha2UgaW50byBhY2NvdW50IG1vbml0b3IgY29uc3RyYWludHMg
YXMgaXMgZG9uZSB3aXRoIFdlYlBvcHVwTWVudVByb3h5V2luOjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUuCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZv
cm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgUGwKIAogICAg
ICAgICBTdHJpbmcgaXRlbVRleHQgPSBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpbmRleCk7CiAK
LSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5z
aW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlKCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwg
MCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRl
bVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKIAogICAgICAgICBub3RTZWxlY3Rl
ZEJhY2tpbmdTdG9yZUNvbnRleHQtPnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IpOwogICAg
ICAgICBzZWxlY3RlZEJhY2tpbmdTdG9yZUNvbnRleHQtPnNldEZpbGxDb2xvcihhY3RpdmVPcHRp
b25UZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDAxZTFiOGU1Mzhm
OC4uZTE5ZDVhMmEzNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMDgtMjAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbmFtZSBUZXh0UnVuIHVuZGVyIGdyYXBoaWNzIHRvIEdyYXBoaWNzVGV4dFJ1bgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBv
aW50OmZvbnQ6dGV4dENvbG9yOl0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX3dpZHRoV2l0
aEZvbnQ6XSk6CisKIDIwMjEtMDgtMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIHVudXNlZCBjb2RlIGFuZCBvdXQgb2YgZGF0
ZSBjb21tZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDc4MzI1NjE5YzFhYy4uODYwYjgzNWYxMzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW0KQEAgLTMxLDggKzMxLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NUZXh0UnVuLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1RleHRSdW4u
aD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxzeXMv
cGFyYW0uaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KQEAgLTY5LDcgKzY5LDcgQEAgc3Rh
dGljIGJvb2wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKQogCiAgICAgaWYgKGNhblVzZUZhc3RSZW5kZXJlcihidWZmZXIuZGF0YSgpLCBs
ZW5ndGgpKSB7CiAgICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0Zm9ybURh
dGEoKF9fYnJpZGdlIENURm9udFJlZilmb250LCBbZm9udCBwb2ludFNpemVdKSk7Ci0gICAgICAg
IFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1
ZmZlci5kYXRhKCkpLCBsZW5ndGgpKTsKKyAgICAgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVu
Z3RoKSk7CiAKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBhIGhhbGYtYXNzZWQgYXR0ZW1w
dCB0byBtYXRjaCBBcHBLaXQncyByb3VuZGluZyBydWxlcyBmb3IgZHJhd0F0UG9pbnQuCiAgICAg
ICAgIC8vIElmIHlvdSBjaGFuZ2UgaXQsIGJlIHN1cmUgdG8gdGVzdCBhbGwgdGhlIHRleHQgZHJh
d24gdGhpcyB3YXkgaW4gU2FmYXJpLCBpbmNsdWRpbmcKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0
aWMgYm9vbCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAKICAgICBpZiAoY2FuVXNlRmFzdFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpIHsKICAgICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0
YSgoX19icmlkZ2UgQ1RGb250UmVmKWZvbnQsIFtmb250IHBvaW50U2l6ZV0pKTsKLSAgICAgICAg
VGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYnVm
ZmVyLmRhdGEoKSksIGxlbmd0aCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5n
dGgpKTsKICAgICAgICAgcmV0dXJuIHdlYkNvcmVGb250LndpZHRoKHJ1bik7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggYWE4ODc4MTIwMTk5Li45YzI1MGE5NWJkMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOC0y
MCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFRl
eHRSdW4gdW5kZXIgZ3JhcGhpY3MgdG8gR3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdyk6CisKIDIw
MjEtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBNZWRpYVBsYXllcjo6c2V0VmlzaWJsZSB0byBNZWRpYVBsYXllcjo6c2V0UGFnZUlzVmlz
aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAppbmRleCA5OGFmZTA1OWY4ZjUuLjkxODhkY2U0NWFiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRXaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVGV4dFJ1bi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0UnVuLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC01MzYsMTMgKzUzNiwxMyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcoKQogICAgIC8vIExlZnQgc3RyaW5nCiAgICAgcyA9IHRpbWVU
b1N0cmluZyhjdXJyZW50VGltZSgpKTsKICAgICBpbnQgZm9udEhlaWdodCA9IGZvbnQuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKTsKLSAgICBUZXh0UnVuIGxlZnRUZXh0KHMpOworICAgIEdyYXBoaWNz
VGV4dFJ1biBsZWZ0VGV4dChzKTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0
Q29sb3IpKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGxlZnRUZXh0LCBJbnRQb2ludCh3
aW5kb3dXaWR0aCAvIDIgLSB0aW1lU2xpZGVyV2lkdGggLyAyIC0gbWFyZ2luIC0gZm9udC53aWR0
aChsZWZ0VGV4dCksIHdpbmRvd0hlaWdodCAtIG1hcmdpbiAtIHNsaWRlckhlaWdodCAvIDIgKyBm
b250SGVpZ2h0IC8gNCkpOwogCiAgICAgLy8gUmlnaHQgc3RyaW5nCiAgICAgcyA9IHRpbWVUb1N0
cmluZyhjdXJyZW50VGltZSgpIC0gZHVyYXRpb24oKSk7Ci0gICAgVGV4dFJ1biByaWdodFRleHQo
cyk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHJpZ2h0VGV4dChzKTsKICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcih0ZXh0Q29sb3IpKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHJp
Z2h0VGV4dCwgSW50UG9pbnQod2luZG93V2lkdGggLyAyICsgdGltZVNsaWRlcldpZHRoIC8gMiAr
IG1hcmdpbiwgd2luZG93SGVpZ2h0IC0gbWFyZ2luIC0gc2xpZGVySGVpZ2h0IC8gMiArIGZvbnRI
ZWlnaHQgLyA0KSk7CiAK
</data>
<flag name="commit-queue"
          id="458921"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435983</attachid>
            <date>2021-08-20 07:43:53 -0700</date>
            <delta_ts>2021-08-20 08:45:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>graphicstextrun-rename-3.patch</filename>
            <type>text/plain</type>
            <size>161773</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzE5ZGM2ODI5N2MuLjRkNmZiOWFkOTQ5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5NSBAQAorMjAyMS0wOC0yMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSdW4gdW5kZXIgcGxhdGZvcm0vZ3JhcGhpY3MgdG8g
R3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZSBoYXZlIHNldmVyYWwgdHlwZXMgb2YgdGV4dCBydW5zIG9uIGRpZmZlcmVudCBs
ZXZlbHMgYW5kIGl0IGlzIGdldHRpbmcgY29uZnVzaW5nLgorICAgICAgICBSZW5hbWUgdGhlIHBs
YXRmb3JtIHR5cGUgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxh
eS9jc3MvRGlzcGxheUJveFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94UGFpbnRlcjo6cGFpbnRCb3hDb250ZW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojp3aWR0aCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmRy
YXdCaWRpVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yT3ZlcmxheTo6ZHJhd1J1bGVycyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpkcmF3RWxlbWVudFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGVjdGVkU2l6ZUZv
ckxheW91dExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdM
YXlvdXRMYWJlbCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAqIGxh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUZXh0VXRpbDo6d2lkdGgpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpjYW5Vc2VGb3JGb250QW5kVGV4dCk6CisgICAgICAgICog
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OklubGluZUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAgKiBs
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGgu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVy
blBhdGg6OnBvc2l0aW9uRm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OnNlbGVjdGlvblJlY3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yTW9kZXJu
UGF0aDo6Y3JlYXRlVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5Vc2VT
aW1wbGlmaWVkVGV4dE1lYXN1cmluZyk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3UmlnaHRBbGlnbmVkVGV4dCk6CisgICAgICAg
ICogcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojppc05lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TGF5b3V0Ojpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdF
bXBoYXNpc01hcmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoT2ZUZXh0UmFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6
OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNp
bXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmFkanVzdFNl
bGVjdGlvblJlY3RGb3JUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpvZmZzZXRGb3JQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2Fk
ZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yU2ltcGxl
VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZv
ckNvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjphZGp1
c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRl
eHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0
aW9uRm9yQ29tcGxleFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFRvUGF0aFRyYW5zbGF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuSXRl
cmF0b3I6OlRleHRSdW5JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0Vt
cGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Qmlk
aVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzVGV4dFJ1bjo6R3JhcGhpY3NUZXh0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzVGV4dFJ1bjo6c3ViUnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzVGV4dFJ1bjo6c2V0VGFiU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTnVs
bEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1Ry
dW5jYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdXaWR0aCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhD
YWNoZTo6YWRkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldpZHRoSXRlcmF0b3I6OnJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
V2luOjpkcmF3VGV4dEF0UG9pbnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250V2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQpOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0lt
YWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc09u
ZUxlZnRUb1JpZ2h0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaERpc3BsYXlMaXN0Q2FjaGU6OmdldCk6CisgICAgICAgICogcmVuZGVyaW5n
L0xlZ2FjeUVsbGlwc2lzQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUVsbGlwc2lz
Qm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6bG9jYWxT
ZWxlY3Rpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRC
b3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OmNhbGN1
bGF0ZURvY3VtZW50TWFya2VyQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dEJhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0Rm9yZWdyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94OjpwYWludE1hcmtlZFRleHREZWNv
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6OnBvc2l0aW9u
Rm9yT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g6
OmNyZWF0ZVRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9MZWdhY3lJbmxpbmVU
ZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJl
cGxhY2VtZW50VGV4dEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBh
aW50T2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZv
ckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RN
YXJrZXI6OlRleHRSdW5XaXRoVW5kZXJseWluZ1N0cmluZzo6b3BlcmF0b3IgY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpU
ZXh0UnVuV2l0aFVuZGVybHlpbmdTdHJpbmc6Om9wZXJhdG9yIGNvbnN0IFRleHRSdW4mIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAg
ICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lk
dGhGcm9tQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6bWF4V29yZEZyYWdtZW50V2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHQ6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmdldEF2ZXJhZ2VDaGFy
V2lkdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAg
KiByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
T3JFbXBoYXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRl
eHRXaXRoU2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0
QW5kRW1waGFzaXNNYXJrc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVy
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1RleHRQYWludGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
UGFpbnRlcjo6c2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRl
eHRCb3g6Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNvbnN0cnVjdFRleHRSdW4g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0
aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMTkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFs6aGFzKCkgcHNldWRvLWNsYXNzXSBCYXNpYyBzdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQppbmRleCA3ZDRmZDhiNzI3MTIuLjI3MGE2MjdhNzIxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjU1LDYgKzEyNTUsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckZhY3RvcnkuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1RleHRSdW4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXNHTC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCkBAIC0xMzI1LDcgKzEzMjYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UcmFj
a1ByaXZhdGVCYXNlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMDNlMTJhN2E3ODcyLi43Yzg3Zjc1ZmMy
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTE4LDYgKzE5MTgsNyBAQCBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zv
cm0uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKK3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVGV4dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzVHlwZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvSWNvbi5jcHAKQEAgLTE5NTgsNyArMTk1OSw2IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRl
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODNiMjVjY2ZiMmIuLjQzNTNmZmYzMDA4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzUxNCw3ICszNTE0LDcgQEAKIAkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5IC8qIENo
aWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4MTg3MjE1MDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmggKi87IH07CiAJ
CUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MTg3MjE4MDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBODIzOUUwMTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyMzlERkYwOUIzQ0Y4
QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgyNEI0NjQwRTJF
RjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NU
ZXh0UnVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
ODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NUZXh0UnVuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTgzM0M3Q0EwQTJDRjA2QjAw
RDU3NjY0IC8qIFNWR05hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi87
IH07CiAJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUVBMDlEMTUwOEQw
MDBFNjFENyAvKiBYTGlua05hbWVzLmNwcCAqLzsgfTsKIAkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3
NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4MzNDODBBMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgKi87IH07
CkBAIC03NjIyLDcgKzc2MjIsNyBAQAogCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4
dEJvdW5kYXJpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4
dEJvdW5kYXJpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzJDMDBEODEy
OTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc1
Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEh5cGhlbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRSdW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJFRkMgLyogR3JhcGhpY3NUZXh0UnVuLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzVGV4dFJ1bi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlD
QSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogTmF0aXZlSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXRpdmVJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
OTk5LDcgKzEyOTk5LDcgQEAKIAkJQTgxODcyMUEwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9k
ZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkTm9k
ZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODIzOURGRTA5QjNDRjhB
MDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MjM5REZG
MDlCM0NGOEEwMEI2MDY0MSAvKiBMb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4MjRCNDY0
MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTgyNEI0NjQw
RTJFRjJFQTAwODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHcmFwaGljc1RleHRSdW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTgzM0M3RjYwQTJDRjFEODAwRDU3NjY0IC8qIHhtbGF0dHJzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSB4bWxhdHRycy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTgzM0M4MEEwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBYTUxOYW1lcy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1hNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJQTgzM0M4MEIwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBYTUxOYW1lcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9YTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtMjY2MDksNiArMjY2MDksOCBAQAogCQkJCTFBQzY5NTkyMTYxQTFFNTMwMDM3MzJDQiAvKiBH
cmFwaGljc0xheWVyRmFjdG9yeS5oICovLAogCQkJCTBGQTI0RDc3MTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8sCiAJCQkJMEZBMjRENzgxNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8sCisJCQkJMzc2RENDRTAxM0I0Rjk2NjAw
MkVCRUZDIC8qIEdyYXBoaWNzVGV4dFJ1bi5jcHAgKi8sCisJCQkJQTgyNEI0NjQwRTJFRjJFQTAw
ODFBN0I3IC8qIEdyYXBoaWNzVGV4dFJ1bi5oICovLAogCQkJCUIyQTAxNTk0MEFGNkNENTMwMDZC
Q0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlCMkEwMTU5NTBBRjZDRDUzMDA2QkNF
MEUgLyogR3JhcGhpY3NUeXBlcy5oICovLAogCQkJCTc3QTE3QTdBMTJGMjg5MEIwMDRFMDJGNiAv
KiBHcmFwaGljc1R5cGVzR0wuaCAqLywKQEAgLTI2NzMxLDggKzI2NzMzLDYgQEAKIAkJCQkwODc1
NThDMzEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNw
cCAqLywKIAkJCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmggKi8sCiAJCQkJM0JCNkI4MEYyMkE3RDMxMTAwM0EyQTY5IC8qIFRhYlNp
emUuaCAqLywKLQkJCQkzNzZEQ0NFMDEzQjRGOTY2MDAyRUJFRkMgLyogVGV4dFJ1bi5jcHAgKi8s
Ci0JCQkJQTgyNEI0NjQwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCAqLywKIAkJCQlDRDFF
NzM0NjE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwICovLAog
CQkJCUNERDFFNTI1MTY3QkE1NjQwMENFODIwQiAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5o
ICovLAogCQkJCTFBRjg5QTQxMTUxOEZERUEwMEU1NDdCNSAvKiBUaWxlZEJhY2tpbmcuaCAqLywK
QEAgLTM1MDEwLDcgKzM1MDEwLDcgQEAKIAkJCQlDRTIxMjE1ODI0MERCRUI5MDA2RUQ0NDMgLyog
VGV4dFBsYWNlaG9sZGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4QjdENTMyNUMz
NDFFNjAwOUU3NUREIC8qIFRleHRSZWNvZ25pdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk4RjYwODI0NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBODI0QjQ2NTBFMkVGMkVBMDA4MUE3QjcgLyogR3JhcGhpY3NUZXh0
UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4
dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAy
NkEyREQgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MzE0RUYxQ0Y4
MDAyNkEyREQgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hQYWludGVyLmNwcAppbmRleCAxZjY1YmJmYzAz
YTEuLmYyMzUxYThmYWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheUJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3hQYWludGVyLmNwcApAQCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgIkRpc3BsYXlU
ZXh0Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVRyZWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBCb3hQYWludGVyOjpwYWludEJveENvbnRlbnQoY29uc3QgQm94JiBib3gsIFBhaW50aW5n
Q29udGV4dCYgcGFpbnRpbmdDb250ZXgKICAgICAgICAgYXV0byBiYXNlbGluZSA9IHRleHRSZWN0
LnkoKSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAgICAgIGF1dG8gZXhwYW5z
aW9uID0gdGV4dEJveC5leHBhbnNpb24oKTsKIAotICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0
UnVuIHsgdGV4dEJveC50ZXh0KCkuY29udGVudCgpLnN1YnN0cmluZyh0ZXh0Qm94LnRleHQoKS5z
dGFydCgpLCB0ZXh0Qm94LnRleHQoKS5sZW5ndGgoKSksIHRleHRSZWN0LngoKSwgZXhwYW5zaW9u
Lmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBhdXRv
IHRleHRSdW4gPSBHcmFwaGljc1RleHRSdW4geyB0ZXh0Qm94LnRleHQoKS5jb250ZW50KCkuc3Vi
c3RyaW5nKHRleHRCb3gudGV4dCgpLnN0YXJ0KCksIHRleHRCb3gudGV4dCgpLmxlbmd0aCgpKSwg
dGV4dFJlY3QueCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJl
aGF2aW9yIH07CiAgICAgICAgIHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0
ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAgICAgIHBhaW50aW5nQ29udGV4dC5jb250
ZXh0LmRyYXdUZXh0KHN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4sIHsgdGV4dFJlY3QueCgp
LCBiYXNlbGluZSB9KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNGQ1OTUw
ZTBjYzJiLi5jMTI4YzU3ZmMyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5UGFyc2VyV29ya2VyU2FmZS5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKQEAgLTU2
LDcgKzU3LDYgQEAKICNpbmNsdWRlICJTdHlsZVJlc29sdmVGb3JGb250UmF3LmgiCiAjaW5jbHVk
ZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgotI2luY2x1
ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC0yMDcsNyArMjA3LDcgQEAgUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBjb25zdCBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZTsKICAgICBhdXRvIGRpcmVjdGlvbiA9IHRvVGV4dERpcmVjdGlv
bihzdGF0ZSgpLmRpcmVjdGlvbiwgJmNvbXB1dGVkU3R5bGUpOwogICAgIGJvb2wgb3ZlcnJpZGUg
PSBjb21wdXRlZFN0eWxlICYmIGlzT3ZlcnJpZGUoY29tcHV0ZWRTdHlsZS0+dW5pY29kZUJpZGko
KSk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0
RXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihub3JtYWxpemVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGly
ZWN0aW9uLCBvdmVycmlkZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIG1lYXN1cmVUZXh0SW50ZXJuYWwo
dGV4dFJ1bik7CiB9CiAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBk
bwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlOwogICAgIGF1dG8gZGlyZWN0
aW9uID0gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uLCAmY29tcHV0ZWRTdHlsZSk7
CiAgICAgYm9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgJiYgaXNPdmVycmlkZShjb21wdXRl
ZFN0eWxlLT51bmljb2RlQmlkaSgpKTsKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRl
eHQsIDAsIDAsIEFsbG93UmlnaHRFeHBhbnNpb24sIGRpcmVjdGlvbiwgb3ZlcnJpZGUsIHRydWUp
OworICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxv
d1JpZ2h0RXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlLCB0cnVlKTsKICAgICBkcmF3VGV4
dFVuY2hlY2tlZCh0ZXh0UnVuLCB4LCB5LCBmaWxsLCBtYXhXaWR0aCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKaW5kZXggODI2YjM4YzljN2JjLi40NTBjNGZkNDA3ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZXBs
YXllci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgpAQCAtNjgsNyArNjksNiBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgotI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC00MTQsMTIgKzQxNCwxMiBAQCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnREZXNjcgogICAgIHJl
dHVybiBtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCk7CiB9CiAKLWZsb2F0IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6d2lkdGgoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwg
R2x5cGhPdmVyZmxvdyogb3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpGb250UHJveHk6OndpZHRoKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1
biwgR2x5cGhPdmVyZmxvdyogb3ZlcmZsb3cpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZm9udC53
aWR0aCh0ZXh0UnVuLCAwLCBvdmVyZmxvdyk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5OjpkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2Fz
Y2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGFjdGlvbikgY29uc3QKK3ZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5OjpkcmF3QmlkaVRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gYWN0aW9u
KSBjb25zdAogewogICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KG1fZm9udCwgcnVuLCBwb2ludCwg
YWN0aW9uKTsKIH0KQEAgLTI0MTYsMTEgKzI0MTYsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGRvdWJsZSB4LCBkb3Vi
bGUKIAogICAgIFN0cmluZyBub3JtYWxpemVkVGV4dCA9IG5vcm1hbGl6ZVNwYWNlcyh0ZXh0KTsK
ICAgICBhdXRvIGRpcmVjdGlvbiA9IChzdGF0ZSgpLmRpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlJ0
bCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7Ci0gICAgVGV4dFJ1
biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBkaXJl
Y3Rpb24sIGZhbHNlLCB0cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihub3JtYWxp
emVkVGV4dCwgMCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgZGlyZWN0aW9uLCBmYWxzZSwgdHJ1
ZSk7CiAgICAgZHJhd1RleHRVbmNoZWNrZWQodGV4dFJ1biwgeCwgeSwgZmlsbCwgbWF4V2lkdGgp
OwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVj
a2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBmaWxs
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4V2lkdGgpCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4
dFJ1biwgZG91YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtYXhXaWR0aCkKIHsKICAgICBhdXRvKiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBhdXRv
JiBmb250UHJveHkgPSAqdGhpcy0+Zm9udFByb3h5KCk7CkBAIC0yNTQzLDExICsyNTQzLDExIEBA
IFJlZjxUZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bWVhc3VyZVRl
eHRJbnRlcm5hbChjb25zdCBTdHJpbmcmCiB7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRUZXh0ID0g
bm9ybWFsaXplU3BhY2VzKHRleHQpOwogICAgIGF1dG8gZGlyZWN0aW9uID0gKHN0YXRlKCkuZGly
ZWN0aW9uID09IERpcmVjdGlvbjo6UnRsKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJl
Y3Rpb246OkxUUjsKLSAgICBUZXh0UnVuIHRleHRSdW4obm9ybWFsaXplZFRleHQsIDAsIDAsIEFs
bG93UmlnaHRFeHBhbnNpb24sIGRpcmVjdGlvbiwgZmFsc2UsIHRydWUpOworICAgIEdyYXBoaWNz
VGV4dFJ1biB0ZXh0UnVuKG5vcm1hbGl6ZWRUZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9u
LCBkaXJlY3Rpb24sIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gbWVhc3VyZVRleHRJbnRlcm5h
bCh0ZXh0UnVuKTsKIH0KIAotUmVmPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjptZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IFRleHRSdW4mIHRleHRSdW4pCitSZWY8
VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om1lYXN1cmVUZXh0SW50
ZXJuYWwoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuKQogewogICAgIFJlZjxUZXh0TWV0
cmljcz4gbWV0cmljcyA9IFRleHRNZXRyaWNzOjpjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5o
CmluZGV4IGExNDMxMzg5OTQ0YS4uZDRiYTE4YzlkNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCkBA
IC0yMzYsOCArMjM2LDggQEAgcHVibGljOgogICAgICAgICB2b2lkIGluaXRpYWxpemUoRm9udFNl
bGVjdG9yJiwgY29uc3QgRm9udENhc2NhZGUmKTsKICAgICAgICAgY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0OwotICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBU
ZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKLSAgICAgICAgdm9pZCBkcmF3Qmlk
aVRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKKyAgICAgICAg
ZmxvYXQgd2lkdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKKyAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pIGNvbnN0OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
Ym9vbCBpc1BvcHVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC5mb250cygpOyB9CkBAIC0z
MDQsOSArMzA0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGRvdWJsZSB4LCBkb3VibGUgeSwgYm9vbCBmaWxsLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIGJvb2wgY2FuRHJhd1RleHQoZG91
YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCBkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0
UnVuJiwgZG91YmxlIHgsIGRvdWJsZSB5LCBib29sIGZpbGwsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dFVuY2hlY2tlZChj
b25zdCBHcmFwaGljc1RleHRSdW4mLCBkb3VibGUgeCwgZG91YmxlIHksIGJvb2wgZmlsbCwgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAotICAgIFJlZjxU
ZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuJik7CisgICAgUmVm
PFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYp
OwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcm
IHRleHQpOwogCiAgICAgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRleCA3ZGYzNWNkZWVlZTcu
LmYyMzVlMmU4OGFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JP
dmVybGF5LmNwcApAQCAtODY5LDcgKzg2OSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsCiAK
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHZlcnRpY2FsTGFiZWxT
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHpv
b20oeCkgKyAwLjVmLCBzY3JvbGxZKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0
KGZvbnQsIFRleHRSdW4oU3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BFZGdlID8gcnVs
ZXJMYWJlbFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQuZm9udE1ldHJp
Y3MoKS5oZWlnaHQoKSAtIDEuMGYgfSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCBHcmFwaGljc1RleHRSdW4oU3RyaW5nOjpudW1iZXIoeCkpLCB7IDIsIGRyYXdUb3BF
ZGdlID8gcnVsZXJMYWJlbFNpemUgOiBydWxlckxhYmVsU2l6ZSAtIHJ1bGVyU2l6ZSArIGZvbnQu
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKSAtIDEuMGYgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVy
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJsCiAgICAgICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBob3Jpem9udGFsTGFiZWxTdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbFgs
IHpvb20oeSkgKyAwLjVmKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdGF0ZShkcmF3TGVm
dEVkZ2UgPyAtcGlPdmVyVHdvRmxvYXQgOiBwaU92ZXJUd29GbG9hdCk7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKFN0cmluZzo6bnVtYmVyKHkpKSwgeyAy
LCBkcmF3TGVmdEVkZ2UgPyBydWxlckxhYmVsU2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJT
aXplIH0pOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NU
ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHkpKSwgeyAyLCBkcmF3TGVmdEVkZ2UgPyBydWxlckxhYmVs
U2l6ZSA6IHJ1bGVyTGFiZWxTaXplIC0gcnVsZXJTaXplIH0pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
ZHJhd1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluc3BlY3Rvck92ZXJs
CiAgICAgICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdmlld3BvcnRS
ZWN0ID0gcGFnZVZpZXctPnZpc3VhbFZpZXdwb3J0UmVjdCgpOwotICAgICAgICBUZXh0UnVuIHZp
ZXdwb3J0VGV4dFJ1bihtYWtlU3RyaW5nKHZpZXdwb3J0UmVjdC53aWR0aCgpIC8gcGFnZVpvb21G
YWN0b3IsICJweCIsICcgJywgbXVsdGlwbGljYXRpb25TaWduLCAnICcsIHZpZXdwb3J0UmVjdC5o
ZWlnaHQoKSAvIHBhZ2Vab29tRmFjdG9yLCAicHgiKSk7CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1
biB2aWV3cG9ydFRleHRSdW4obWFrZVN0cmluZyh2aWV3cG9ydFJlY3Qud2lkdGgoKSAvIHBhZ2Va
b29tRmFjdG9yLCAicHgiLCAnICcsIG11bHRpcGxpY2F0aW9uU2lnbiwgJyAnLCB2aWV3cG9ydFJl
Y3QuaGVpZ2h0KCkgLyBwYWdlWm9vbUZhY3RvciwgInB4IikpOwogCiAgICAgICAgIGNvbnN0IGZs
b2F0IG1hcmdpbiA9IDQ7CiAgICAgICAgIGNvbnN0IGZsb2F0IHBhZGRpbmcgPSAyOwpAQCAtMTA1
MCw4ICsxMDUwLDggQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSYgbm9kZSwgY28KICAgICAgICAgYXV0byBmaXJz
dExpbmUgPSBtYWtlU3RyaW5nKGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SURWYWx1ZSwgZWxlbWVu
dENsYXNzVmFsdWUsIGVsZW1lbnRQc2V1ZG9UeXBlLCAnICcsIGVsZW1lbnRXaWR0aCwgInB4Iiwg
JyAnLCBtdWx0aXBsaWNhdGlvblNpZ24sICcgJywgZWxlbWVudEhlaWdodCwgInB4Iik7CiAgICAg
ICAgIGF1dG8gc2Vjb25kTGluZSA9IG1ha2VTdHJpbmcoIlJvbGUgIiwgZWxlbWVudFJvbGUpOwog
Ci0gICAgICAgIGZsb2F0IGZpcnN0TGluZVdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGZpcnN0
TGluZSkpOwotICAgICAgICBmbG9hdCBzZWNvbmRMaW5lV2lkdGggPSBmb250LndpZHRoKFRleHRS
dW4oc2Vjb25kTGluZSkpOworICAgICAgICBmbG9hdCBmaXJzdExpbmVXaWR0aCA9IGZvbnQud2lk
dGgoR3JhcGhpY3NUZXh0UnVuKGZpcnN0TGluZSkpOworICAgICAgICBmbG9hdCBzZWNvbmRMaW5l
V2lkdGggPSBmb250LndpZHRoKEdyYXBoaWNzVGV4dFJ1bihzZWNvbmRMaW5lKSk7CiAKICAgICAg
ICAgZWxlbWVudERhdGFXaWR0aCA9IHN0ZDo6Zm1heChmaXJzdExpbmVXaWR0aCwgc2Vjb25kTGlu
ZVdpZHRoKTsKICAgICAgICAgaWYgKGhhc1NlY29uZExpbmUpCkBAIC0xMTQyLDcgKzExNDIsNyBA
QCBQYXRoIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBOb2RlJiBub2RlLCBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKLSAgICAgICAgdGV4dFBvc2l0aW9uICs9IGNv
bnRleHQuZHJhd1RleHQoZm9udCwgVGV4dFJ1bih0ZXh0KSwgdGV4dFBvc2l0aW9uKTsKKyAgICAg
ICAgdGV4dFBvc2l0aW9uICs9IGNvbnRleHQuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NUZXh0UnVu
KHRleHQpLCB0ZXh0UG9zaXRpb24pOwogICAgIH07CiAKICAgICBkcmF3VGV4dChlbGVtZW50VGFn
TmFtZSwgeyAxMzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmll
d2VyLmNzcyAoLnRhZykKQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBGbG9hdFNpemUgZXhw
ZWN0ZWRTaXplRm9yTGF5b3V0TGFiZWwoU3RyaW5nIGxhYmVsLCBJbnNwZWN0b3JPdmVybGF5OjpM
YWJlCiAgICAgYXV0byBmb250ID0gSW5zcGVjdG9yT3ZlcmxheTo6Zm9udEZvckxheW91dExhYmVs
KCk7CiAKICAgICBmbG9hdCB0ZXh0SGVpZ2h0ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0SGVp
Z2h0KCk7Ci0gICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0UnVuKGxhYmVsKSk7
CisgICAgZmxvYXQgdGV4dFdpZHRoID0gZm9udC53aWR0aChHcmFwaGljc1RleHRSdW4obGFiZWwp
KTsKICAgICBpZiAobWF4aW11bVdpZHRoICYmIHRleHRXaWR0aCArIChsYXlvdXRMYWJlbFBhZGRp
bmcgKiAyKSA+IG1heGltdW1XaWR0aCkKICAgICAgICAgdGV4dFdpZHRoID0gbWF4aW11bVdpZHRo
OwogCkBAIC0xMzc5LDEzICsxMzc5LDEzIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0xh
eW91dExhYmVsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU3RyaW5nIGxhYmVsLCBGCiAgICAg
ZmxvYXQgdGV4dEhlaWdodCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEhlaWdodCgpOwogICAg
IGZsb2F0IHRleHREZXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0RGVzY2VudCgpOwog
ICAgIAotICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoVGV4dFJ1bihsYWJlbCkpOwor
ICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoR3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7
CiAgICAgaWYgKG1heGltdW1XaWR0aCAmJiB0ZXh0V2lkdGggKyAobGF5b3V0TGFiZWxQYWRkaW5n
ICogMikgPiBtYXhpbXVtV2lkdGgpIHsKICAgICAgICAgbGFiZWwuYXBwZW5kKCIuLi4iX3MpOwog
ICAgICAgICB3aGlsZSAodGV4dFdpZHRoICsgKGxheW91dExhYmVsUGFkZGluZyAqIDIpID4gbWF4
aW11bVdpZHRoICYmIGxhYmVsLmxlbmd0aCgpID49IDQpIHsKICAgICAgICAgICAgIC8vIFJlbW92
ZSB0aGUgZm91cnRoIGZyb20gbGFzdCBjaGFyYWN0ZXIgKHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHRo
ZSBlbGxpcHNpcykgYW5kIHJlbWVhc3VyZS4KICAgICAgICAgICAgIGxhYmVsLnJlbW92ZShsYWJl
bC5sZW5ndGgoKSAtIDQpOwotICAgICAgICAgICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChUZXh0
UnVuKGxhYmVsKSk7CisgICAgICAgICAgICB0ZXh0V2lkdGggPSBmb250LndpZHRoKEdyYXBoaWNz
VGV4dFJ1bihsYWJlbCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDYzLDcgKzE0NjMsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdMYXlvdXRMYWJlbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFN0cmluZyBsYWJlbCwgRgogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChsYWJlbFBh
dGgpOwogICAgIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7Ci0gICAg
Y29udGV4dC5kcmF3VGV4dChmb250LCBUZXh0UnVuKGxhYmVsKSwgdGV4dFBvc2l0aW9uKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIEdyYXBoaWNzVGV4dFJ1bihsYWJlbCksIHRleHRQb3Np
dGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0dyaWRPdmVybGF5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpH
cmlkSGlnaGxpZ2h0T3ZlcmxheSYgZ3JpZE92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggYTE2MTJjNWQzYmQ5Li43NDRmYThmMDZiOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKQEAgLTQ1
NCw3ICs0NTQsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFs
UnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbgogCiAgICAgICAgICAgICB1bnNp
Z25lZCBsZWZ0U2lkZUxlbmd0aCA9IHJ1bkxlbmd0aDsKICAgICAgICAgICAgIGF1dG8mIGZvbnRD
YXNjYWRlID0gc3R5bGUuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIGF1dG8gaHlwaGVuV2lk
dGggPSBJbmxpbmVMYXlvdXRVbml0IHsgZm9udENhc2NhZGUud2lkdGgoVGV4dFJ1biB7IFN0cmlu
Z1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0pIH07CisgICAgICAgICAgICBhdXRvIGh5
cGhlbldpZHRoID0gSW5saW5lTGF5b3V0VW5pdCB7IGZvbnRDYXNjYWRlLndpZHRoKEdyYXBoaWNz
VGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9IH0pIH07CiAgICAg
ICAgICAgICBpZiAoIWF2YWlsYWJsZVNwYWNlSXNJbmZpbml0ZSkgewogICAgICAgICAgICAgICAg
IGF1dG8gYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPSAqYXZhaWxhYmxlV2lkdGggLSBo
eXBoZW5XaWR0aDsKICAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdI
eXBoZW4gPD0gMCB8fCAhZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFibGVXaWR0aEV4
Y2x1ZGluZ0h5cGhlbiwgZm9udENhc2NhZGUucGl4ZWxTaXplKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcAppbmRleCBmMGJmMzFkMDk3YzMuLjRmNzBhMGM1YTJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRl
eHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgSW5saW5lTGF5
b3V0VQogICAgIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LnJlc2V0KCk7CiAgICAgaWYgKCFm
b3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0
ZXJTcGFjaW5nKCkgJiYgIWlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmIHN0eWxlLmxl
dHRlclNwYWNpbmcoKSA+IDApCiAgICAgICAgIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LmFk
ZFBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQobV9ydW5zLnNpemUoKSAtIDEsIHN0eWxlLmxldHRl
clNwYWNpbmcoKSk7Ci0gICAgbV90cmFpbGluZ1NvZnRIeXBoZW5XaWR0aCA9IGlubGluZVRleHRJ
dGVtLmhhc1RyYWlsaW5nU29mdEh5cGhlbigpID8gc3RkOjptYWtlX29wdGlvbmFsKHN0eWxlLmZv
bnRDYXNjYWRlKCkud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJp
bmcoKSB9IH0pKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRo
ID0gaW5saW5lVGV4dEl0ZW0uaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCkgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwoc3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChHcmFwaGljc1RleHRSdW4geyBTdHJpbmdW
aWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVt
JiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3RleHQvVGV4dFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAKaW5kZXggN2U1NzViY2U3Mjg1Li5mMGJmODRi
ODRlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIElubGluZUxheW91dFVuaXQgVGV4dFV0aWw6OndpZHRoKGNvbnN0IElubGluZVRleHRCb3gm
IGlubGluZVRleHRCb3gsIHVuc2lnbmVkIGZyCiAgICAgICAgIHdpZHRoID0gZm9udC53aWR0aEZv
clNpbXBsZVRleHQoU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcoZnJvbSwgdG8gLSBmcm9tKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8gdGFiV2lkdGggPSBzdHlsZS5jb2xsYXBzZVdoaXRl
U3BhY2UoKSA/IFRhYlNpemUoMCkgOiBzdHlsZS50YWJTaXplKCk7Ci0gICAgICAgIFdlYkNvcmU6
OlRleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKGZyb20sIHRvIC0gZnJvbSks
IGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzVGV4dFJ1biBy
dW4oU3RyaW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcoZnJvbSwgdG8gLSBmcm9tKSwgY29udGVudExv
Z2ljYWxMZWZ0KTsKICAgICAgICAgaWYgKHRhYldpZHRoKQogICAgICAgICAgICAgcnVuLnNldFRh
YlNpemUodHJ1ZSwgdGFiV2lkdGgpOwogICAgICAgICB3aWR0aCA9IGZvbnQud2lkdGgocnVuKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkNvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAppbmRleCAwMDhmMmM1YmJmMDUuLmM5ZDZhNDUy
NDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBA
IHN0YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNlUmVhc29uPiBjYW5Vc2VGb3JGb250QW5kVGV4dChj
b25zdCBSZW5kZXJCb3hNb2RlbE9iamVjCiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNr
IHRoZSBjb2RlIHBhdGggYXQgdGhpcyBwb2ludC4gV2UgYWxyZWFkeSBrbm93IGl0IGNhbid0IGJl
IHNpbXBsZS4KICAgICAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc0NvbXBsZXhGb250Q29kZVBhdGgsIHJlYXNvbnMsIGluY2x1ZGVSZWFzb25zKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFdlYkNvcmU6OlRleHRSdW4gcnVuKFN0cmluZyh0ZXh0
UmVuZGVyZXIudGV4dCgpKSk7CisgICAgICAgICAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmlu
Zyh0ZXh0UmVuZGVyZXIudGV4dCgpKSk7CiAgICAgICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2Nh
bkZvckNvZGVQYXRoKGZhbHNlKTsKICAgICAgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgp
LmNvZGVQYXRoKHJ1bikgIT0gRm9udENhc2NhZGU6OkNvZGVQYXRoOjpTaW1wbGUpCiAgICAgICAg
ICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzQ29tcGxleEZv
bnRDb2RlUGF0aCwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDU2OGM1OTc0ZjZhMS4uNTQ1
MTAxNWM3ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1
aWxkZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6
Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1MKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGF1dG8gcnVuTG9naWNhbFJlY3QgPSBsaW5lUnVuLmxvZ2ljYWxS
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gc3R5bGUuZm9udENh
c2NhZGUoKS53aWR0aChXZWJDb3JlOjpUZXh0UnVuIHsgJmhvcml6b250YWxFbGxpcHNpcyB9KTsK
KyAgICAgICAgICAgICAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSBzdHlsZS5mb250Q2FzY2FkZSgp
LndpZHRoKEdyYXBoaWNzVGV4dFJ1biB7ICZob3Jpem9udGFsRWxsaXBzaXMgfSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkgKyBlbGxpcHNpc1dpZHRoID4gbGlu
ZUJveExvZ2ljYWxSZWN0LnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5l
eHQgcnVuIHdpdGggZWxsaXBzaXMgd291bGQgc3VyZWx5IG92ZXJmbG93LiBTbyBsZXQncyBqdXN0
IGFkZCBpdCB0byB0aGlzIHJ1biBldmVuIGlmCiAgICAgICAgICAgICAgICAgICAgIC8vIGl0IG1h
a2VzIHRoZSBydW4gd2lkZXIgdGhhbiBpdCBvcmlnaW5hbGx5IHdhcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKaW5kZXggNDgxMjBiN2I3OWI5Li5iNzJjY2RkNjFhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC00OTIsMTEgKzQ5MiwxMSBAQCB2b2lk
IExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiAKICAgICAgICAgYXV0byYgbGluZSA9IGlubGluZUNvbnRlbnQubGlu
ZUZvclJ1bihydW4pOwogICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1bi5leHBhbnNpb24oKTsK
LSAgICAgICAgLy8gVGV4dFJ1biBleHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVzdGVkIHdpdGgg
dGhlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRlciBhbGlnbmVk
CisgICAgICAgIC8vIEdyYXBoaWNzVGV4dFJ1biBleHBlY3RzIHRoZSB4UG9zIHRvIGJlIGFkanVz
dGVkIHdpdGggdGhlIGFsaWdtZW50IG9mZnNldCAoZS5nLiB3aGVuIHRoZSBsaW5lIGlzIGNlbnRl
ciBhbGlnbmVkCiAgICAgICAgIC8vIGFuZCB0aGUgcnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRv
IHRoZSBob3Jpem9udGFsIGFsaWdtZW50LCB0aGUgeHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAw
cHgpLgogICAgICAgICBhdXRvJiBmb250Q2FzY2FkZSA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAg
ICAgICAgIGF1dG8geFBvcyA9IHJlY3QueCgpIC0gKGxpbmUubGluZUJveExlZnQoKSArIGxpbmUu
Y29udGVudExlZnQoKSk7Ci0gICAgICAgIFdlYkNvcmU6OlRleHRSdW4gdGV4dFJ1biB7IHRleHRD
b250ZW50LnJlbmRlcmVkQ29udGVudCgpLCB4UG9zLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFu
c2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0
UnVuIHsgdGV4dENvbnRlbnQucmVuZGVyZWRDb250ZW50KCksIHhQb3MsIGV4cGFuc2lvbi5ob3Jp
em9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
IAogICAgICAgICBUZXh0UGFpbnRlciB0ZXh0UGFpbnRlcihwYWludEluZm8uY29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXgg
NzEyYjNhMjkwM2UwLi43MmI4ZjNmYzY5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byBlbmRPZmZzZXQgPSBzZWxlY3RhYmxlUmFuZ2UoKS5jbGFtcChvZmZzZXQpOwogCiAg
ICAgICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QocmVjdCgpLngoKSwg
MCwgMCwgMCk7Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oSHlwaGVu
TW9kZTo6SWdub3JlKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bihIeXBo
ZW5Nb2RlOjpJZ25vcmUpOwogICAgICAgICBydW4oKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkuYWRq
dXN0U2VsZWN0aW9uUmVjdEZvclRleHQodGV4dFJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgZW5kT2Zm
c2V0KTsKICAgICAgICAgcmV0dXJuIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0Rp
cmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSwgdGV4dFJ1bi5sdHIoKSkubWF4WCgpOwogICAgIH0KQEAgLTEyMiw3ICsxMjIsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0IHsgbG9naWNhbExl
ZnQsIHNlbGVjdGlvblRvcCwgbG9naWNhbFdpZHRoLCBzZWxlY3Rpb25IZWlnaHQgfTsKIAotICAg
ICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6OkluY2x1ZGUp
OworICAgICAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGU6OkluY2x1
ZGUpOwogICAgICAgICBpZiAoY2xhbXBlZFN0YXJ0IHx8IGNsYW1wZWRFbmQgIT0gdGV4dFJ1bi5s
ZW5ndGgoKSkKICAgICAgICAgICAgIHJ1bigpLnN0eWxlKCkuZm9udENhc2NhZGUoKS5hZGp1c3RT
ZWxlY3Rpb25SZWN0Rm9yVGV4dCh0ZXh0UnVuLCBzZWxlY3Rpb25SZWN0LCBjbGFtcGVkU3RhcnQs
IGNsYW1wZWRFbmQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICBlbnVtIGNsYXNzIEh5cGhlbk1vZGUgeyBJbmNsdWRlLCBJZ25vcmUgfTsKLSAgICBUZXh0UnVu
IGNyZWF0ZVRleHRSdW4oSHlwaGVuTW9kZSBoeXBoZW5Nb2RlKSBjb25zdAorICAgIEdyYXBoaWNz
VGV4dFJ1biBjcmVhdGVUZXh0UnVuKEh5cGhlbk1vZGUgaHlwaGVuTW9kZSkgY29uc3QKICAgICB7
CiAgICAgICAgIGF1dG8mIHN0eWxlID0gcnVuKCkuc3R5bGUoKTsKICAgICAgICAgYXV0byBleHBh
bnNpb24gPSBydW4oKS5leHBhbnNpb24oKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcodGV4dCgpLCBzdHlsZS5oeXBoZW5TdHJpbmco
KSk7CiAgICAgICAgIH0oKTsKIAotICAgICAgICBUZXh0UnVuIHRleHRSdW4geyB0ZXh0Rm9yUnVu
LCB4UG9zLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9y
IH07CisgICAgICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuIHsgdGV4dEZvclJ1biwgeFBvcywg
ZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAg
ICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHls
ZS50YWJTaXplKCkpOwogICAgICAgICByZXR1cm4gdGV4dFJ1bjsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IDU5ZTZkODE4ZjhlOS4uMjk4N2I1YTc5Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPExheW91dFNpemU+IGFjY3VtdWxhdGVkT2Zm
c2V0Rm9ySW5GbG93UG9zaXRpb25lZENvbnRpbnVhdGlvCiAKIHN0YXRpYyBib29sIGNhblVzZVNp
bXBsaWZpZWRUZXh0TWVhc3VyaW5nKGNvbnN0IFN0cmluZ1ZpZXcmIGNvbnRlbnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBib29sIHdoaXRlc3BhY2VJc0NvbGxhcHNlZCkKIHsKLSAgICBpZiAo
Zm9udC5jb2RlUGF0aChUZXh0UnVuKGNvbnRlbnQpKSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6
OkNvbXBsZXgpCisgICAgaWYgKGZvbnQuY29kZVBhdGgoR3JhcGhpY3NUZXh0UnVuKGNvbnRlbnQp
KSA9PSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChmb250LndvcmRTcGFjaW5nKCkgfHwgZm9udC5sZXR0ZXJTcGFjaW5nKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGI1OTY1ZjU2
YTQ5YS4uNDc0NDgwOTdmNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSaWdodEFsaWduZWRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjCiAgICAg
ZmxvYXQgdGV4dEdhcCA9IDEwOwogICAgIGZsb2F0IHRleHRCYXNlbGluZUZyb21Ub3AgPSAxNDsK
IAotICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4odGV4dCk7CisgICAgYXV0byB0ZXh0UnVu
ID0gR3JhcGhpY3NUZXh0UnVuIHsgdGV4dCB9OwogICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQu
d2lkdGgodGV4dFJ1bik7CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsK
ICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIGJveExvY2F0aW9uICsgRmxvYXRT
aXplKC0odGV4dFdpZHRoICsgdGV4dEdhcCksIHRleHRCYXNlbGluZUZyb21Ub3ApKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwCmluZGV4IDE4NjRiOTlmZjcwOS4uZTJjMGYyM2Y4ZDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAK
QEAgLTkzLDMyICs5MywzMiBAQCBwcml2YXRlOgogCiAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24gPSB7IDEwLCAyMCB9OwogICAgICAgICBTdHJpbmcgc3RyaW5nID0gICJDUFU6ICIgKyBjcHVV
c2FnZVN0cmluZyhnRGF0YS5jcHUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZv
bnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdUZXh0
KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAg
IHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgc3RyaW5nID0gIk1l
bW9yeTogIiArIGZvcm1hdEJ5dGVOdW1iZXIoZ0RhdGEudG90YWxEaXJ0eVNpemUpOwotICAgICAg
ICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24p
OworICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihz
dHJpbmcpLCBwb3NpdGlvbik7CiAgICAgICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsg
Mik7CiAKICAgICAgICAgc3RyaW5nID0gIkV4dGVybmFsOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihn
RGF0YS50b3RhbEV4dGVybmFsU2l6ZSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd1RleHQobV90ZXh0
Rm9udCwgVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CisgICAgICAgIGNvbnRleHQuZHJhd1Rl
eHQobV90ZXh0Rm9udCwgR3JhcGhpY3NUZXh0UnVuKHN0cmluZyksIHBvc2l0aW9uKTsKICAgICAg
ICAgcG9zaXRpb24ubW92ZSgwLCBnRm9udFNpemUgKyAyKTsKIAogICAgICAgICBzdHJpbmcgPSAi
R0MgSGVhcDogIiArIGZvcm1hdEJ5dGVOdW1iZXIoZ0RhdGEuY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6R0NIZWFwXS5kaXJ0eVNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1fdGV4
dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRyYXdU
ZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAgICAg
ICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgc3RyaW5nID0g
IkdDIG93bmVkOiAiICsgZm9ybWF0Qnl0ZU51bWJlcihnRGF0YS5jYXRlZ29yaWVzW01lbW9yeUNh
dGVnb3J5OjpHQ093bmVkXS5kaXJ0eVNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KG1f
dGV4dEZvbnQsIFRleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOworICAgICAgICBjb250ZXh0LmRy
YXdUZXh0KG1fdGV4dEZvbnQsIEdyYXBoaWNzVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7CiAg
ICAgICAgIHBvc2l0aW9uLm1vdmUoMCwgZ0ZvbnRTaXplICsgMik7CiAKICAgICAgICAgTW9ub3Rv
bmljVGltZSBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICAgICAgc3RyaW5nID0gIkVk
ZW4gR0M6ICIgKyBnY1RpbWVyU3RyaW5nKGdEYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiwg
bm93KTsKLSAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBUZXh0UnVuKHN0cmlu
ZyksIHBvc2l0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChtX3RleHRGb250LCBHcmFw
aGljc1RleHRSdW4oc3RyaW5nKSwgcG9zaXRpb24pOwogICAgICAgICBwb3NpdGlvbi5tb3ZlKDAs
IGdGb250U2l6ZSArIDIpOwogCiAgICAgICAgIHN0cmluZyA9ICJGdWxsIEdDOiAiICsgZ2NUaW1l
clN0cmluZyhnRGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24sIG5vdyk7Ci0gICAgICAgIGNv
bnRleHQuZHJhd1RleHQobV90ZXh0Rm9udCwgVGV4dFJ1bihzdHJpbmcpLCBwb3NpdGlvbik7Cisg
ICAgICAgIGNvbnRleHQuZHJhd1RleHQobV90ZXh0Rm9udCwgR3JhcGhpY3NUZXh0UnVuKHN0cmlu
ZyksIHBvc2l0aW9uKTsKICAgICAgICAgcG9zaXRpb24ubW92ZSgwLCBnRm9udFNpemUgKyAyKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
ZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYzBjZTcyYzVmZmMxLi41
YjRmNzgwNWUzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNDEsNyArMzQx
LDcgQEAgdm9pZCBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0
IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZG8KIH0KICNlbmRpZgogCi1GbG9hdFNpemUgQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGNhc2Nh
ZGUsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQorRmxvYXRTaXplIEJpZnVyY2F0ZWRH
cmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25z
dCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVk
IGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGF1dG8gc2l6ZSA9IG1f
cHJpbWFyeUNvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwog
ICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3VGV4dChjYXNjYWRlLCBydW4sIHBvaW50LCBmcm9t
LCB0byk7CkBAIC0zNTQsMTMgKzM1NCwxMyBAQCB2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbAogICAg
IG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51
bUdseXBocywgcG9pbnQsIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBCaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgY2Fz
Y2FkZSwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dG8pCit2b2lkIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNv
bnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29u
c3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZy
b20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIG1fcHJpbWFyeUNvbnRleHQu
ZHJhd0VtcGhhc2lzTWFya3MoY2FzY2FkZSwgcnVuLCBtYXJrLCBwb2ludCwgZnJvbSwgdG8pOwog
ICAgIG1fc2Vjb25kYXJ5Q29udGV4dC5kcmF3RW1waGFzaXNNYXJrcyhjYXNjYWRlLCBydW4sIG1h
cmssIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKLXZvaWQgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikKK3ZvaWQgQmlmdXJjYXRlZEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBjYXNjYWRlLCBj
b25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRD
YXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KQogewogICAgIG1fcHJpbWFyeUNvbnRleHQuZHJhd0JpZGlUZXh0KGNhc2NhZGUsIHJ1biwgcG9p
bnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgbV9zZWNvbmRhcnlDb250ZXh0LmRy
YXdCaWRpVGV4dChjYXNjYWRlLCBydW4sIHBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlmdXJjYXRl
ZEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQmlm
dXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDJkZWQ1MzZkZDEzNi4uZjZlZjFkY2RhMzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiwgZG91Ymxl
LCBib29sJiwgY29uc3QgQ29sb3ImKSBmaW5hbDsKICNlbmRpZgogCi0gICAgRmxvYXRTaXplIGRy
YXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6
Om51bGxvcHQpIGZpbmFsOworICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFs
OwogICAgIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3Qg
RmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKLSAgICB2b2lkIGRyYXdFbXBo
YXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21T
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOwotICAgIHZvaWQgZHJh
d0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2Nh
ZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgZmluYWw7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGZpbmFsOworICAgIHZv
aWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhpY3NUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rp
b24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBmaW5hbDsKIAogICAg
IHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5l
cywgU3Ryb2tlU3R5bGUpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCA0NDkzMmRl
ZmNkOTguLjQ4NWExN2JjYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yOCw5ICsyOCw5
IEBACiAjaW5jbHVkZSAiQ2hhcmFjdGVyUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVu
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCi0j
aW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgpAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCkKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKKyAgICAgICAgYXV0byBydW4gPSBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0eWxlKCkpOwogICAgICAgICByZXR1
cm4gZm9udC5jb2RlUGF0aChydW4pID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleDsK
ICAgICB9CiAKQEAgLTcwLDE2ICs3MCwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyVGV4dCYgdGV4dCwgZmxv
YXQgeFBvcykKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyVGV4dCYgdGV4dCwgZmxvYXQgeFBvcykKICAgICB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgdGV4dC5zdHlsZSgpKTsKKyAgICAg
ICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB0ZXh0LnN0
eWxlKCkpOwogICAgICAgICBydW4uc2V0WFBvcyh4UG9zKTsKICAgICAgICAgcmV0dXJuIHJ1bjsK
ICAgICB9CiAKICAgICAvLyBDb21wbGV4VGV4dENvbnRyb2xsZXIgaGFzIG9ubHkgcmVmZXJlbmNl
cyB0byBpdHMgRm9udENhc2NhZGUgYW5kIFRleHRSdW4gc28gdGhleSBtdXN0IGJlIGtlcHQgYWxp
dmUgaGVyZS4KICAgICBGb250Q2FzY2FkZSBtX2ZvbnQ7Ci0gICAgVGV4dFJ1biBtX3J1bjsKKyAg
ICBHcmFwaGljc1RleHRSdW4gbV9ydW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbXBsZXhUZXh0
Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogfTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
Q29tcGxleFRleHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKQogICAg
IH0KIH0KIAotQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dENvbnRyb2xsZXIoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgYm9vbCBtYXlVc2VOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMs
IGJvb2wgZm9yVGV4dEVtcGhhc2lzKQorQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4
dENvbnRyb2xsZXIoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYgcnVuLCBib29sIG1heVVzZU5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBIYXNoU2V0PGNvbnN0
IEZvbnQqPiogZmFsbGJhY2tGb250cywgYm9vbCBmb3JUZXh0RW1waGFzaXMpCiAgICAgOiBtX2Zh
bGxiYWNrRm9udHMoZmFsbGJhY2tGb250cykKICAgICAsIG1fZm9udChmb250KQogICAgICwgbV9y
dW4ocnVuKQpAQCAtMTMwLDcgKzEzMCw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0CiAgICAg
ZmluaXNoQ29uc3RydWN0aW9uKCk7CiB9CiAKLUNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBy
dW4sIFZlY3RvcjxSZWY8Q29tcGxleFRleHRSdW4+PiYgcnVucykKK0NvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBHcmFwaGljc1RleHRSdW4mIHJ1biwgVmVjdG9yPFJlZjxDb21wbGV4VGV4dFJ1bj4+JiBydW5z
KQogICAgIDogbV9mb250KGZvbnQpCiAgICAgLCBtX3J1bihydW4pCiAgICAgLCBtX2VuZChydW4u
bGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCmluZGV4IDJlNGUxNmI3YjUyZi4uNjJkYzY2YjQ2NDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udDsKLWNsYXNzIFRleHRSdW47CitjbGFz
cyBHcmFwaGljc1RleHRSdW47CiAKIGVudW0gR2x5cGhJdGVyYXRpb25TdHlsZSB7IEluY2x1ZGVQ
YXJ0aWFsR2x5cGhzLCBCeVdob2xlR2x5cGhzIH07CiAKQEAgLTUxLDEwICs1MSwxMCBAQCBlbnVt
IEdseXBoSXRlcmF0aW9uU3R5bGUgeyBJbmNsdWRlUGFydGlhbEdseXBocywgQnlXaG9sZUdseXBo
cyB9OwogY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgYm9vbCBtYXlVc2VOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
biA9IGZhbHNlLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
Zm9yVGV4dEVtcGhhc2lzID0gZmFsc2UpOworICAgIENvbXBsZXhUZXh0Q29udHJvbGxlcihjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGJvb2wgbWF5VXNlTmF0dXJh
bFdyaXRpbmdEaXJlY3Rpb24gPSBmYWxzZSwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMgPSAwLCBib29sIGZvclRleHRFbXBoYXNpcyA9IGZhbHNlKTsKIAogICAgIGNsYXNzIENv
bXBsZXhUZXh0UnVuOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbXBsZXhUZXh0Q29udHJvbGxlcihj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBWZWN0b3I8UmVmPENvbXBsZXhUZXh0
UnVuPj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDb21wbGV4VGV4dENvbnRyb2xsZXIoY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGljc1RleHRSdW4mLCBWZWN0b3I8UmVmPENvbXBsZXhU
ZXh0UnVuPj4mKTsKIAogICAgIC8vIEFkdmFuY2UgYW5kIGVtaXQgZ2x5cGhzIHVwIHRvIHRoZSBz
cGVjaWZpZWQgY2hhcmFjdGVyLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWR2YW5jZSh1bnNp
Z25lZCB0bywgR2x5cGhCdWZmZXIqID0gbnVsbHB0ciwgR2x5cGhJdGVyYXRpb25TdHlsZSA9IElu
Y2x1ZGVQYXJ0aWFsR2x5cGhzLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9
IG51bGxwdHIpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxjb25z
dCBGb250Kj4qIG1fZmFsbGJhY2tGb250cyB7IG51bGxwdHIgfTsKIAogICAgIGNvbnN0IEZvbnRD
YXNjYWRlJiBtX2ZvbnQ7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV9ydW47CisgICAgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBtX3J1bjsKIAogICAgIHVuc2lnbmVkIG1fY3VycmVudENoYXJhY3RlciB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2VuZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAwNTBlMjg3ZDk5ZGMuLjM2ZmUx
ZDkyYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAj
aW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJHcmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlICJXaWR0aEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBGb250Q2FjaGU6
OmZvbnRDYWNoZUZhbGxpbmdCYWNrVG9TaW5nbGV0b24oZm9udFNlbGVjdG9yKS51cGRhdGVGb250
Q2FzY2FkZSgqdGhpcywgV1RGTW92ZShmb250U2VsZWN0b3IpKTsKIH0KIAotR2x5cGhCdWZmZXIg
Rm9udENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4
dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JO
b3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91
dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4s
IHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0
RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29kZVBhdGg6OkNv
bXBsZXgpCiAgICAgICAgIHJldHVybiBsYXlvdXRTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sIGZv
clRleHRFbXBoYXNpcyk7CkBAIC0xNjYsNyArMTY2LDcgQEAgR2x5cGhCdWZmZXIgRm9udENhc2Nh
ZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1biYgcnVu
LAogICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBmb3JUZXh0RW1w
aGFzaXMpOwogfQogCi1GbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgdW5zaWduZWQgZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitGbG9hdFNpemUg
Rm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlv
biA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAgICAgYXV0byBnbHlwaEJ1ZmZlciA9IGxh
eW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24p
OwpAQCAtMTgwLDcgKzE4MCw3IEBAIEZsb2F0U2l6ZSBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvCiAgICAgcmV0dXJu
IHN0YXJ0UG9pbnQgLSBwb2ludDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgR3JhcGhpY3NU
ZXh0UnVuJiBydW4sIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsK
ICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgZHJhd0VtcGhhc2lzTWFy
a3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmssIHN0YXJ0UG9pbnQpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpk
aXNwbGF5TGlzdEZvclRleHRSdW4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0
b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAorc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2Fk
ZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSBjb25zdAogewogICAgIEFTU0VSVCghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpOwogICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKQEAgLTIy
Myw3ICsyMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxh
eUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleAogICAgIHJldHVybiBkaXNwbGF5
TGlzdDsKIH0KICAgICAKLWZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4dFJhbmdlKGNvbnN0
IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3Qg
Rm9udCo+KiBmYWxsYmFja0ZvbnRzLCBmbG9hdCogb3V0V2lkdGhCZWZvcmVSYW5nZSwgZmxvYXQq
IG91dFdpZHRoQWZ0ZXJSYW5nZSkgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aE9mVGV4
dFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIGZsb2F0KiBvdXRXaWR0
aEJlZm9yZVJhbmdlLCBmbG9hdCogb3V0V2lkdGhBZnRlclJhbmdlKSBjb25zdAogewogICAgIEFT
U0VSVChmcm9tIDw9IHRvKTsKICAgICBBU1NFUlQodG8gPD0gcnVuLmxlbmd0aCgpKTsKQEAgLTI2
Nyw3ICsyNjcsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhPZlRleHRSYW5nZShjb25zdCBU
ZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkCiAgICAgcmV0dXJuIG9mZnNldEFm
dGVyUmFuZ2UgLSBvZmZzZXRCZWZvcmVSYW5nZTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6Ondp
ZHRoKGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6d2lkdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+
KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewog
ICAgIGlmICghcnVuLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMwNiw3ICszMDYs
NyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4
dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aQogewogICAgIGlmICh0ZXh0LmlzTnVsbCgpIHx8
IHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBBU1NFUlQoY29kZVBhdGgo
VGV4dFJ1bih0ZXh0KSkgIT0gQ29kZVBhdGg6OkNvbXBsZXgpOworICAgIEFTU0VSVChjb2RlUGF0
aChHcmFwaGljc1RleHRSdW4odGV4dCkpICE9IENvZGVQYXRoOjpDb21wbGV4KTsKICAgICBmbG9h
dCogY2FjaGVFbnRyeSA9IG1fZm9udHMtPndpZHRoQ2FjaGUoKS5hZGQodGV4dCwgc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKICAgICBpZiAoY2FjaGVFbnRyeSAmJiAh
c3RkOjppc25hbigqY2FjaGVFbnRyeSkpCiAgICAgICAgIHJldHVybiAqY2FjaGVFbnRyeTsKQEAg
LTQyMCw3ICs0MjAsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElm
QXZhaWxhYmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAot
dm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVj
dGlvblJlY3RGb3JUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBz
ZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykg
Y29uc3QKIHsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5n
dGgoKSk7CiAgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pICE9IENvZGVQYXRoOjpDb21w
bGV4KQpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlv
blJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsCiAgICAgcmV0
dXJuIGFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChydW4sIHNlbGVjdGlvblJlY3Qs
IGZyb20sIGRlc3RpbmF0aW9uKTsKIH0KIAotaW50IEZvbnRDYXNjYWRlOjpvZmZzZXRGb3JQb3Np
dGlvbihjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlw
aHMpIGNvbnN0CitpbnQgRm9udENhc2NhZGU6Om9mZnNldEZvclBvc2l0aW9uKGNvbnN0IEdyYXBo
aWNzVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25z
dAogewogICAgIGlmIChjb2RlUGF0aChydW4sIHgpICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAg
ICAgICByZXR1cm4gb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KHJ1biwgeCwgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0
aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoKQogICAgIHJldHVybiBzX2NvZGVQYXRoOwogfQogCi1G
b250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4m
IHJ1biwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8pIGNvbnN0CitGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OmNvZGVQYXRo
KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9t
LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKICAgICBpZiAoc19jb2RlUGF0
aCAhPSBDb2RlUGF0aDo6QXV0bykKICAgICAgICAgcmV0dXJuIHNfY29kZVBhdGg7CkBAIC0xMTM1
LDcgKzExMzUsNyBAQCBlbnVtIGNsYXNzIEdseXBoVW5kZXJsaW5lVHlwZSA6IHVpbnQ4X3Qgewog
ICAgIERyYXdPdmVyR2x5cGgKIH07CiAgICAgCi1zdGF0aWMgR2x5cGhVbmRlcmxpbmVUeXBlIGNv
bXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseXBoQnVm
ZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgR2x5cGhVbmRlcmxpbmVU
eXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICAv
LyBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIHNraXAgZGVzY2VuZGVycy4gSG93ZXZlciwgc2tpcHBp
bmcgZGVzY2VuZGVycyBvbiBDSksgY2hhcmFjdGVycyBsZWFkcyB0byB1bmRlc2lyYWJsZSByZW5k
ZXJpbmdzLAogICAgIC8vIHNvIHdlIHdhbnQgdG8gZHJhdyB0aHJvdWdoIENKSyBjaGFyYWN0ZXJz
IChvbiBhIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIgYmFzaXMpLgpAQCAtMTI0Nyw3ICsxMjQ3LDcg
QEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYg
bWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygpLmhlaWdo
dCgpOwogfQogCi1HbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25z
dCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFz
aXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6
bGF5b3V0U2ltcGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29u
c3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKIApAQCAtMTI4Myw3ICsxMjgzLDcg
QEAgR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnMKICAgICByZXR1cm4gZ2x5cGhCdWZmZXI7CiB9CiAK
LUdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBm
b3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0Q29t
cGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAKQEAgLTE0MDUsNyArMTQwNSw3IEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgR2x5cGhCdWZmZXImCiAgICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIG1hcmtCdWZm
ZXIsIHN0YXJ0UG9pbnQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbjo6RG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5KTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmZsb2F0V2lkdGhGb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlwaE92
ZXJmbG93KSBjb25zdAogewogICAgIFdpZHRoSXRlcmF0b3IgaXQoKnRoaXMsIHJ1biwgZmFsbGJh
Y2tGb250cywgZ2x5cGhPdmVyZmxvdyk7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBA
IC0xNDIyLDcgKzE0MjIsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRXaWR0aEZvclNpbXBs
ZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbgogICAgIHJldHVybiBp
dC5ydW5XaWR0aFNvRmFyKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9y
Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFs
bGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdykgY29uc3QKK2Zsb2F0IEZv
bnRDYXNjYWRlOjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVu
JiBydW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93
KiBnbHlwaE92ZXJmbG93KSBjb25zdAogewogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250
cm9sbGVyKCp0aGlzLCBydW4sIHRydWUsIGZhbGxiYWNrRm9udHMpOwogICAgIGlmIChnbHlwaE92
ZXJmbG93KSB7CkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZmxvYXRX
aWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBGbwog
ICAgIHJldHVybiBjb250cm9sbGVyLnRvdGFsQWR2YW5jZSgpLndpZHRoKCk7CiB9CiAKLXZvaWQg
Rm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2lt
cGxlVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgTGF5b3V0UmVjdCYgc2VsZWN0aW9u
UmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZm
ZXIgZ2x5cGhCdWZmZXI7CiAgICAgV2lkdGhJdGVyYXRvciBpdCgqdGhpcywgcnVuKTsKQEAgLTE0
NTUsNyArMTQ1NSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmFkanVzdFNlbGVjdGlvblJlY3RGb3JT
aW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgTGF5b3V0UmVjCiAgICAgc2VsZWN0aW9uUmVj
dC5zZXRXaWR0aChMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGFmdGVyV2lkdGggLSBiZWZvcmVX
aWR0aCkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmFkanVz
dFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwg
TGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNv
bnN0CiB7CiAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGNvbnRyb2xsZXIoKnRoaXMsIHJ1bik7
CiAgICAgY29udHJvbGxlci5hZHZhbmNlKGZyb20pOwpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mIHJ1biwgTGF5b3V0UmUKICAgICBzZWxlY3Rpb25SZWN0LnNldFdpZHRoKExheW91dFVu
aXQ6OmZyb21GbG9hdENlaWwoYWZ0ZXJXaWR0aCAtIGJlZm9yZVdpZHRoKSk7CiB9CiAKLWludCBG
b250Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwgZmxvYXQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKK2ludCBGb250
Q2FzY2FkZTo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewog
ICAgIGZsb2F0IGRlbHRhID0geDsKIApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgaW50IEZvbnRDYXNj
YWRlOjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBm
bG9hdCB4LCBib28KICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1pbnQgRm9udENhc2NhZGU6Om9m
ZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4
LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAoraW50IEZvbnRDYXNjYWRlOjpvZmZz
ZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuLCBm
bG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAogewogICAgIENvbXBsZXhU
ZXh0Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4pOwogICAgIHJldHVybiBjb250cm9s
bGVyLm9mZnNldEZvclBvc2l0aW9uKHgsIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKTsKQEAgLTE2MDQs
NyArMTYwNCw3IEBAIHN0YXRpYyB2b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJh
dGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgUGF0aEVsZW1lbnQmCiAKIGNsYXNzIEdseXBoVG9QYXRo
VHJhbnNsYXRvciB7CiBwdWJsaWM6Ci0gICAgR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRl
eHRSdW4mIHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgRmxv
YXRQb2ludCYgdGV4dE9yaWdpbikKKyAgICBHbHlwaFRvUGF0aFRyYW5zbGF0b3IoY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGNv
bnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4pCiAgICAgICAgIDogbV9pbmRleCgwKQogICAgICAg
ICAsIG1fdGV4dFJ1bih0ZXh0UnVuKQogICAgICAgICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZm
ZXIpCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9pbmRleDsKLSAgICBjb25zdCBUZXh0UnVuJiBtX3RleHRSdW47CisgICAgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiBtX3RleHRSdW47CiAgICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhC
dWZmZXI7CiAgICAgY29uc3QgRm9udCogbV9mb250RGF0YTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
bV90cmFuc2xhdGlvbjsKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgR2x5cGhUb1BhdGhUcmFu
c2xhdG9yOjphZHZhbmNlKCkKICAgICAgICAgbV9mb250RGF0YSA9ICZtX2dseXBoQnVmZmVyLmZv
bnRBdChtX2luZGV4KTsKIH0KIAotRGFzaEFycmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRl
cnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0
ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdAorRGFzaEFycmF5
IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0
UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0CiB7CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRz
KCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDZjNTA2NTdiMTkzZC4uMjZkYTk0M2Mx
ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKQEAgLTQyLDEwICs0MiwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBjbGFzcyBMYXlvdXRSZWN0Owog
Y2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFRleHRMYXlvdXQ7Ci1jbGFzcyBUZXh0UnVuOwogCiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgSW5NZW1vcnlEaXNwbGF5TGlzdDsKQEAgLTEy
NSwyMSArMTI1LDIxIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICBlbnVtIEN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSB9OwotICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9w
dCwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCwgQ3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsK
ICAgICBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5z
aWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwot
ICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBm
cm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CiAKLSAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhS
ZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBG
bG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKKyAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50
ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCi0g
ICAgZmxvYXQgd2lkdGhPZlRleHRSYW5nZShjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgZmxv
YXQqIG91dFdpZHRoQmVmb3JlUmFuZ2UgPSBudWxscHRyLCBmbG9hdCogb3V0V2lkdGhBZnRlclJh
bmdlID0gbnVsbHB0cikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgd2lkdGgoY29u
c3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5
cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICBmbG9hdCB3aWR0aE9mVGV4dFJhbmdlKGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBIYXNoU2V0PGNv
bnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGZsb2F0KiBvdXRXaWR0aEJlZm9yZVJhbmdl
ID0gbnVsbHB0ciwgZmxvYXQqIG91dFdpZHRoQWZ0ZXJSYW5nZSA9IG51bGxwdHIpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IHdpZHRoKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdDsKICAgICBmbG9hdCB3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBU
ZXh0RGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSBjb25zdDsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0TGF5b3V0LCBUZXh0TGF5b3V0RGVsZXRlcj4gY3JlYXRlTGF5b3V0KFJlbmRl
clRleHQmLCBmbG9hdCB4UG9zLCBib29sIGNvbGxhcHNlV2hpdGVTcGFjZSkgY29uc3Q7CiAgICAg
c3RhdGljIGZsb2F0IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBs
ZW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKLSAgICBpbnQg
b2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25l
ZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OworICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbihjb25zdCBHcmFwaGljc1RleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CisgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBMYXlv
dXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2Fw
cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9u
dFZhcmlhbnRDYXBzOjpTbWFsbDsgfQogCkBAIC0yMDAsNyArMjAwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAogICAgIGVu
dW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2ltcGxlLCBDb21wbGV4LCBTaW1w
bGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRleHRS
dW4mLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgQ29kZVBhdGgg
Y29kZVBhdGgoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
ZnJvbSA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRo
KGNvbnN0IExDaGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7IH0KICAg
ICBzdGF0aWMgQ29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbik7CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
ZmxvYXQgc3ludGhldGljT2JsaXF1ZUFuZ2xlKCkgeyByZXR1cm4gMTQ7IH0KIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3RG
b3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9t
ID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSB7IH0sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiA9IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbjo6RG9Ob3RQYWludElmRm9udE5vdFJl
YWR5KSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3Q+IGRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBH
cmFwaGljc1RleHRSdW4mLCB1bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSB7IH0sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbjo6RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KFdJTikgJiYgVVNFKENHKQogICAgIHN0YXRpYyB2b2lkIHNldEZvbnRTbW9vdGhpbmdMZXZlbChp
bnQpOwpAQCAtMjIxLDIzICsyMjEsMjMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBlbnVtIEZv
clRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1waGFzaXMg
fTsKIAotICAgIEdseXBoQnVmZmVyIGxheW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4m
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RG
b3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIEdseXBoQnVmZmVyIGxheW91dFNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFz
aXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CisgICAgR2x5cGhCdWZmZXIgbGF5
b3V0VGV4dChDb2RlUGF0aCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBj
b25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9
IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3R2x5cGhCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JiwgQ3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBH
bHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwotICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvclNp
bXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CisgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRl
eHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNr
Rm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OworICAgIGludCBvZmZzZXRGb3JQ
b3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgZmxvYXQgcG9zaXRp
b24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0U2Vs
ZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgTGF5b3V0UmVj
dCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCiAg
ICAgc3RkOjpvcHRpb25hbDxHbHlwaERhdGE+IGdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25z
dCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5SZXR1cm5GYWxsYmFj
a0ZvbnRzRm9yQ29tcGxleFRleHQoKTsKICAgICBzdGF0aWMgYm9vbCBjYW5FeHBhbmRBcm91bmRJ
ZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpOwogCi0gICAgR2x5cGhCdWZmZXIgbGF5b3V0Q29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0
RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZmxv
YXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQq
PiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7Ci0gICAgaW50
IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBv
c2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYg
c2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OworICAgIEds
eXBoQnVmZmVyIGxheW91dENvbXBsZXhUZXh0KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRF
bXBoYXNpcykgY29uc3Q7CisgICAgZmxvYXQgZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0
IEdyYXBoaWNzVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
MCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKKyAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9v
bCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25S
ZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2Vs
ZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pIGNvbnN0OwogCiAgICAgc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudElu
dGVybmFsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBUZXh0RGlyZWN0aW9uLCBFeHBh
bnNpb25CZWhhdmlvcik7CiAgICAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBUZXh0RGlyZWN0aW9uLCBFeHBhbnNpb25CZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA5NGUx
YTBmNzliNGYuLjc1Mjg1YWNmZmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zMCwxMyArMzAsMTMgQEAKICNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTnVs
bEdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCi0jaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IFRleHRSdW5JdGVyYXRvcihjb25zdCBUZXh0UnVuKiB0ZXh0UnVuLCB1bnNpZ25lZCBvZmZzZXQp
CisgICAgVGV4dFJ1bkl0ZXJhdG9yKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biogdGV4dFJ1biwgdW5z
aWduZWQgb2Zmc2V0KQogICAgICAgICA6IG1fdGV4dFJ1bih0ZXh0UnVuKQogICAgICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKICAgICB7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgVGV4dFJ1bkl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gIW9wZXJh
dG9yPT0ob3RoZXIpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgVGV4dFJ1biogbV90ZXh0UnVu
OworICAgIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biogbV90ZXh0UnVuOwogICAgIHVuc2lnbmVkIG1f
b2Zmc2V0OwogfTsKIApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgLS1tX3RyYW5zcGFyZW5jeUxheWVyQ291bnQ7CiB9
CiAKLUZsb2F0U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCB1bnNp
Z25lZCBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykKK0Zsb2F0U2l6ZSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGlj
c1RleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIC8vIERpc3BsYXkgbGlzdCByZWNvcmRp
bmcgZm9yIHRleHQgY29udGVudCBpcyBkb25lIGF0IGdseXBocyBsZXZlbC4gU2VlIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0dseXBocy4KICAgICByZXR1cm4gZm9udC5kcmF3VGV4dCgqdGhpcywgcnVu
LCBwb2ludCwgZnJvbSwgdG8pOwpAQCAtNDkyLDEyICs0OTIsMTIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGgKICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocygqdGhpcywgZm9udCwgZ2x5cGhz
LCBhZHZhbmNlcywgbnVtR2x5cGhzLCBwb2ludCwgZm9udFNtb290aGluZ01vZGUpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IHRvKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHRvKQogewogICAgIGZvbnQuZHJhd0VtcGhhc2lzTWFya3MoKnRoaXMs
IHJ1biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRS
dW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQogewogICAgIEJpZGlSZXNv
bHZlcjxUZXh0UnVuSXRlcmF0b3IsIEJpZGlDaGFyYWN0ZXJSdW4+IGJpZGlSZXNvbHZlcjsKICAg
ICBiaWRpUmVzb2x2ZXIuc2V0U3RhdHVzKEJpZGlTdGF0dXMocnVuLmRpcmVjdGlvbigpLCBydW4u
ZGlyZWN0aW9uYWxPdmVycmlkZSgpKSk7CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgIEZsb2F0UG9pbnQgY3VyclBvaW50ID0gcG9pbnQ7CiAgICAgQmlkaUNo
YXJhY3RlclJ1biogYmlkaVJ1biA9IGJpZGlSdW5zLmZpcnN0UnVuKCk7CiAgICAgd2hpbGUgKGJp
ZGlSdW4pIHsKLSAgICAgICAgVGV4dFJ1biBzdWJydW4gPSBydW4uc3ViUnVuKGJpZGlSdW4tPnN0
YXJ0KCksIGJpZGlSdW4tPnN0b3AoKSAtIGJpZGlSdW4tPnN0YXJ0KCkpOworICAgICAgICBhdXRv
IHN1YnJ1biA9IHJ1bi5zdWJSdW4oYmlkaVJ1bi0+c3RhcnQoKSwgYmlkaVJ1bi0+c3RvcCgpIC0g
YmlkaVJ1bi0+c3RhcnQoKSk7CiAgICAgICAgIGJvb2wgaXNSVEwgPSBiaWRpUnVuLT5sZXZlbCgp
ICUgMjsKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246
OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25h
bE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDI1Mjg2OWUw
YmZlYS4uOTJlZTRmYWYxMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODgsMTMgKzg4LDEzIEBAIGNsYXNzIEFmZmlu
ZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFkaWVudDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKK2NsYXNzIEdyYXBoaWNzVGV4dFJ1
bjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE1lZGlhUGxheWVy
OwogY2xhc3MgUm91bmRlZFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTDsKIGNsYXNzIFBh
dGg7Ci1jbGFzcyBUZXh0UnVuOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CkBAIC00NjgsMTAgKzQ2OCwxMCBAQCBwdWJsaWM6CiAKICAgICAv
LyBUZXh0CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1
bnNpZ25lZCBmcm9tID0gMCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxv
cHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENh
c2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3Jh
cGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3Qg
Y29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmlu
dGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdMaW5lRm9yVGV4dChj
b25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzID0gZmFsc2Us
IFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCnJlbmFtZSB0
byBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCmlu
ZGV4IDYzZTY2MzgwOTVkMC4uZGUxZTlhNDg4NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uY3BwCkBAIC0yNCwxMSArMjQsMTEgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2luY2x1ZGUg
IkdyYXBoaWNzVGV4dFJ1bi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBFeHBl
Y3RlZFRleHRSdW5TaXplIHsKK3N0cnVjdCBFeHBlY3RlZEdyYXBoaWNzVGV4dFJ1blNpemUgewog
ICAgIFN0cmluZyB0ZXh0OwogICAgIFRhYlNpemUgdGFiU2l6ZTsKICAgICBmbG9hdCBmbG9hdDE7
CkBAIC0zNyw2ICszNyw2IEBAIHN0cnVjdCBFeHBlY3RlZFRleHRSdW5TaXplIHsKICAgICB1bnNp
Z25lZCBiaXRmaWVsZHMgOiA5OwogfTsKIAotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRleHRSdW4p
ID09IHNpemVvZihFeHBlY3RlZFRleHRSdW5TaXplKSwgVGV4dFJ1bl9pc19ub3Rfb2ZfZXhwZWN0
ZWRfc2l6ZSk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoR3JhcGhpY3NUZXh0UnVuKSA9PSBzaXpl
b2YoRXhwZWN0ZWRHcmFwaGljc1RleHRSdW5TaXplKSwgR3JhcGhpY3NUZXh0UnVuX2lzX25vdF9v
Zl9leHBlY3RlZF9zaXplKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NUZXh0UnVuLmgKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCnJlbmFtZSB0byBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1RleHRSdW4uaAppbmRleCAxZDQ3ZDY1ZDY4
MjQuLjAzN2Q3MTA3ODMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVGV4dFJ1bi5oCkBAIC0yMSw4ICsyMSw3IEBACiAgKgogICovCiAKLSNpZm5kZWYgVGV4
dFJ1bl9oCi0jZGVmaW5lIFRleHRSdW5faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUYWJT
aXplLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCkBAIC00MCwxMCArMzksMTAgQEAgY2xhc3Mg
Rm9udDsKIAogc3RydWN0IEdseXBoRGF0YTsKIAotY2xhc3MgVGV4dFJ1biB7CitjbGFzcyBHcmFw
aGljc1RleHRSdW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxv
YXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBE
ZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246
OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2Nh
bkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBleHBsaWNpdCBHcmFwaGljc1RleHRSdW4oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5z
aW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92
ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKICAg
ICAgICAgOiBtX3RleHQodGV4dCkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBt
X3hwb3MoeHBvcykKQEAgLTU5LDEyICs1OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgh
bV90ZXh0LmlzTnVsbCgpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1Zp
ZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJvb2wgZGlyZWN0aW9uYWxP
dmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCi0g
ICAgICAgIDogVGV4dFJ1bihzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgeHBv
cywgZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvciwgZGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92
ZXJyaWRlLCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCisgICAgZXhwbGljaXQgR3JhcGhpY3NU
ZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFu
c2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4
cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJv
b2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2Rl
UGF0aCA9IHRydWUpCisgICAgICAgIDogR3JhcGhpY3NUZXh0UnVuKHN0cmluZ1ZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpLCB4cG9zLCBleHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yLCBk
aXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUsIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkK
ICAgICB7CiAgICAgfQogCi0gICAgVGV4dFJ1biBzdWJSdW4odW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKKyAgICBHcmFwaGljc1RleHRSdW4gc3ViUnVuKHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigoc3RhcnRPZmZzZXQgKyBsZW5ndGgpIDw9
IG1fdGV4dC5sZW5ndGgoKSk7CiAKQEAgLTEzNiwxMiArMTM1LDEwIEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9kaXNhYmxlU3BhY2luZyA6IDE7CiB9OwogCi1pbmxpbmUgdm9pZCBUZXh0UnVu
OjpzZXRUYWJTaXplKGJvb2wgYWxsb3csIGNvbnN0IFRhYlNpemUmIHNpemUpCitpbmxpbmUgdm9p
ZCBHcmFwaGljc1RleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgY29uc3QgVGFiU2l6ZSYg
c2l6ZSkKIHsKICAgICBtX2FsbG93VGFicyA9IGFsbG93OwogICAgIG1fdGFiU2l6ZSA9IHNpemU7
CiB9CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNzkwNmQzNTZlNzA3Li4xZmVlNTEy
MGJmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxH
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
dWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwg
Y29uc3QgQ29sb3ImKSBmaW5hbCB7IH0KIAotICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
PSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyByZXR1
cm4geyB9OyB9CisgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsg
fQogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZsb2F0UG9p
bnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWwgeyB9CiAKLSAgICB2b2lkIGRyYXdFbXBoYXNp
c01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRD
YXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWlu
dElmRm9udE5vdFJlYWR5KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBGb250Q2FzY2FkZTo6Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRv
Tm90UGFpbnRJZkZvbnROb3RSZWFkeSkgZmluYWwgeyB9CiAKICAgICB2b2lkIGRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRSZWN0JiwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhNjNmYzhhNzNlY2IuLjk4OTRkMDJkOTM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0
b3IuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
IAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KLSNpbmNsdWRlICJUZXh0UnVuLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0
UnVuLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsZWZ0VHJ1bmNhdGVUb0J1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpCiAKIHN0YXRpYyBmbG9h
dCBzdHJpbmdXaWR0aChjb25zdCBGb250Q2FzY2FkZSYgcmVuZGVyZXIsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgVGV4dFJ1biBydW4oU3RyaW5nVmll
dyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsKKyAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmluZ1Zp
ZXcoY2hhcmFjdGVycywgbGVuZ3RoKSk7CiAgICAgcmV0dXJuIHJlbmRlcmVyLndpZHRoKHJ1bik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApp
bmRleCA1MmE3YjA4NjZjZDAuLjhkODVmYTI0MmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBX
aWR0aENhY2hlX2gKICNkZWZpbmUgV2lkdGhDYWNoZV9oCiAKLSNpbmNsdWRlICJUZXh0UnVuLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkU2xvd0Nhc2Uo
dGV4dCwgZW50cnkpOwogICAgIH0KIAotICAgIGZsb2F0KiBhZGQoY29uc3QgVGV4dFJ1biYgcnVu
LCBmbG9hdCBlbnRyeSwgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXMsIGJvb2wgaGFzV29yZFNw
YWNpbmdPckxldHRlclNwYWNpbmcsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpCisgICAg
ZmxvYXQqIGFkZChjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1biwgZmxvYXQgZW50cnksIGJvb2wg
aGFzS2VybmluZ09yTGlnYXR1cmVzLCBib29sIGhhc1dvcmRTcGFjaW5nT3JMZXR0ZXJTcGFjaW5n
LCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93KQogICAgIHsKICAgICAgICAgaWYgKE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggZTUzZTFmNjg4NTlmLi5hNzYzMmVl
Nzg5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRo
SXRlcmF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKIAotV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRv
cihjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNv
bnN0IEZvbnQqPiogZmFsbGJhY2tGb250cywgYm9vbCBhY2NvdW50Rm9yR2x5cGhCb3VuZHMsIGJv
b2wgZm9yVGV4dEVtcGhhc2lzKQorV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uc3QgR3JhcGhpY3NUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBib29sIGFjY291bnRGb3JHbHlwaEJvdW5kcywgYm9v
bCBmb3JUZXh0RW1waGFzaXMpCiAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAsIG1fcnVuKHJ1bikK
ICAgICAsIG1fZmFsbGJhY2tGb250cyhmYWxsYmFja0ZvbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCmluZGV4IDI0MDU4YjFjZTVlNC4u
YzY3MWNkNTMwZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XaWR0aEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5oCkBAIC0yOSw5ICsyOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGb250Q2FzY2FkZTsgIAogY2xhc3MgRm9udDsK
LWNsYXNzIFRleHRSdW47CitjbGFzcyBHcmFwaGljc1RleHRSdW47CiBzdHJ1Y3QgR2x5cGhEYXRh
Owogc3RydWN0IEdseXBoSW5kZXhSYW5nZTsKIHN0cnVjdCBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hh
cmFjdGVyVHJlYXRlZEFzU3BhY2U7CkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIENoYXJhY3RlcnNU
cmVhdGVkQXNTcGFjZSA9IFZlY3RvcjxPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRl
ZEFzU3BhCiBzdHJ1Y3QgV2lkdGhJdGVyYXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgV2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
YWNjb3VudEZvckdseXBoQm91bmRzID0gZmFsc2UsIGJvb2wgZm9yVGV4dEVtcGhhc2lzID0gZmFs
c2UpOworICAgIFdpZHRoSXRlcmF0b3IoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBHcmFwaGlj
c1RleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIGJvb2wg
YWNjb3VudEZvckdseXBoQm91bmRzID0gZmFsc2UsIGJvb2wgZm9yVGV4dEVtcGhhc2lzID0gZmFs
c2UpOwogCiAgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIHRvLCBHbHlwaEJ1ZmZlciYpOwogICAg
IGJvb2wgYWR2YW5jZU9uZUNoYXJhY3RlcihmbG9hdCYgd2lkdGgsIEdseXBoQnVmZmVyJik7CkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBmaXJzdEdseXBoT3ZlcmZsb3coKSBj
b25zdCB7IEFTU0VSVChtX2FjY291bnRGb3JHbHlwaEJvdW5kcyk7IHJldHVybiBtX2ZpcnN0R2x5
cGhPdmVyZmxvdzsgfQogICAgIGZsb2F0IGxhc3RHbHlwaE92ZXJmbG93KCkgY29uc3QgeyBBU1NF
UlQobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpOyByZXR1cm4gbV9sYXN0R2x5cGhPdmVyZmxvdzsg
fQogCi0gICAgY29uc3QgVGV4dFJ1biYgcnVuKCkgY29uc3QgeyByZXR1cm4gbV9ydW47IH0KKyAg
ICBjb25zdCBHcmFwaGljc1RleHRSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuOyB9CiAg
ICAgZmxvYXQgcnVuV2lkdGhTb0ZhcigpIGNvbnN0IHsgcmV0dXJuIG1fcnVuV2lkdGhTb0Zhcjsg
fQogICAgIHVuc2lnbmVkIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudENoYXJhY3RlckluZGV4OyB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGx5QWRkaXRpb25hbFdpZHRoKEdseXBoQnVmZmVyJiwgR2x5cGhJbmRleFJhbmdl
LCBmbG9hdCBsZWZ0QWRkaXRpb25hbFdpZHRoLCBmbG9hdCByaWdodEFkZGl0aW9uYWxXaWR0aCwg
ZmxvYXQgbGVmdEV4cGFuc2lvbkFkZGl0aW9uYWxXaWR0aCwgZmxvYXQgcmlnaHRFeHBhbnNpb25B
ZGRpdGlvbmFsV2lkdGgpOwogCiAgICAgY29uc3QgRm9udENhc2NhZGUmIG1fZm9udDsKLSAgICBj
b25zdCBUZXh0UnVuJiBtX3J1bjsKKyAgICBjb25zdCBHcmFwaGljc1RleHRSdW4mIG1fcnVuOwog
ICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBtX2ZhbGxiYWNrRm9udHMgeyBudWxscHRyIH07CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2xhc3RDaGFyYWN0ZXJJbmRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuY3BwCmluZGV4IDFmMzkyZjU0NzczOS4uMTRjOWJmMGNiYjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNh
dG9yKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBQbGEKICAgICBjb25zdGV4cHIg
YXV0byBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRo
QWxwaGFCeXRlKDE5Mik7CiAgICAgY29uc3RleHByIGF1dG8gZGlzcGxheUxpc3RCb3JkZXJDb2xv
ciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMTY2KTsKIAotICAgIFRleHRSdW4g
dGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50Q291bnQpKTsKIAogICAgIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRP
bmVGYW1pbHkoIkhlbHZldGljYSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA2
ODgxMjIxYjA0NTguLjYxOWUzOTU5MGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdE
SVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmgiCi0jaW5jbHVkZSAiVGV4dFJ1
bi5oIgogI2luY2x1ZGUgIlRpbGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4uaCIKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NvcmVBbmltYXRpb25DRi5oPgpA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjpkcmF3VGV4dEF0UG9p
bnQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgeCwgQ0dGbG9hCiAKICAgICBHcmFwaGlj
c0NvbnRleHRDRyBjZyhjb250ZXh0KTsKICAgICBjZy5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNr
KTsKLSAgICBjZy5kcmF3VGV4dChmb250LCBUZXh0UnVuKHRleHQpLCBJbnRQb2ludCh4LCB5KSk7
CisgICAgY2cuZHJhd1RleHQoZm9udCwgR3JhcGhpY3NUZXh0UnVuKHRleHQpLCBJbnRQb2ludCh4
LCB5KSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRXaW4uY3BwCmluZGV4IDUyY2I4OGY1M2QwNS4uNmVkMTgzZWY4M2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCkBA
IC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZm
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Rl
eHRSdW4uaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggY2U4YzdkNDgxNzkwLi5jZWE3YzJhZWQ2
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAt
MzcsNiArMzcsNyBAQAogI2ltcG9ydCAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbXBvcnQg
IkdyYXBoaWNzVGV4dFJ1bi5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKICNpbXBvcnQgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW1wb3J0ICJQYWdlLmgiCkBAIC00NCw3ICs0NSw2IEBACiAjaW1wb3J0ICJT
aW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0
SW5kaWNhdG9yLmgiCi0jaW1wb3J0ICJUZXh0UnVuLmgiCiAjaW1wb3J0IDxDb3JlR3JhcGhpY3Mv
Q29yZUdyYXBoaWNzLmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9Db3JlVGV4dC5oPgogI2ltcG9ydCA8
VUlLaXQvVUlDb2xvci5oPgpAQCAtMTQxLDkgKzE0MSw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JMaW5rKEVsZW1lbnQmIGxpbmtFbGVtZW50LCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIENHUmVjdEdldEhlaWdodChpbWFnZVJl
Y3QpKTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IDEsIC0xIH0pOwogICAgICAgICBjb250ZXh0
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGltYWdlUmVjdCwgRmxvYXRSb3VuZGVk
UmVjdDo6UmFkaWkoNCkpLCBDb2xvcjo6d2hpdGUpOwotICAgICAgICB0aXRsZUZvbnRDYXNjYWRl
LmdldCgpLmRyYXdUZXh0KGNvbnRleHQsIFRleHRSdW4odHJ1bmNhdGVkVG9wU3RyaW5nKSwgRmxv
YXRQb2ludChkcmFnSW1hZ2VQYWRkaW5nLCAxOCArIGRyYWdJbWFnZVBhZGRpbmcpKTsKKyAgICAg
ICAgdGl0bGVGb250Q2FzY2FkZS5nZXQoKS5kcmF3VGV4dChjb250ZXh0LCBHcmFwaGljc1RleHRS
dW4odHJ1bmNhdGVkVG9wU3RyaW5nKSwgRmxvYXRQb2ludChkcmFnSW1hZ2VQYWRkaW5nLCAxOCAr
IGRyYWdJbWFnZVBhZGRpbmcpKTsKICAgICAgICAgaWYgKCF0cnVuY2F0ZWRCb3R0b21TdHJpbmcu
aXNFbXB0eSgpKQotICAgICAgICAgICAgdXJsRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29u
dGV4dCwgVGV4dFJ1bih0cnVuY2F0ZWRCb3R0b21TdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFn
ZVBhZGRpbmcsIDQwICsgZHJhZ0ltYWdlUGFkZGluZykpOworICAgICAgICAgICAgdXJsRm9udENh
c2NhZGUuZ2V0KCkuZHJhd1RleHQoY29udGV4dCwgR3JhcGhpY3NUZXh0UnVuKHRydW5jYXRlZEJv
dHRvbVN0cmluZyksIEZsb2F0UG9pbnQoZHJhZ0ltYWdlUGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQ
YWRkaW5nKSk7CiAgICAgfV07CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PFRleHRJbmRpY2F0
b3JPcHRpb24+IGRlZmF1bHRMaW5rSW5kaWNhdG9yT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmlu
ZGV4IGVlMGNmZjY0MDhjZi4uNjhkZmMxZWRkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMzU2
LDI5ICszNTYsMjkgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZHJhd1RleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSk7CiAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlOjpG
aWxsKTsKICAgICBhdXRvIHN0cmluZyA9IG1ha2VTdHJpbmcocGFkKCcwJywgMiwgaG91cnMpLCAn
OicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLics
IHBhZCgnMCcsIDMsIG1pbGxpc2Vjb25kcyAlIDEwMDApKTsKLSAgICBjb250ZXh0LmRyYXdUZXh0
KHRpbWVGb250LCBUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxvY2F0aW9uKTsK
KyAgICBjb250ZXh0LmRyYXdUZXh0KHRpbWVGb250LCBHcmFwaGljc1RleHRSdW4oKFN0cmluZ1Zp
ZXcoc3RyaW5nKSkpLCB0aW1lTG9jYXRpb24pOwogCiAgICAgc3RyaW5nID0gbWFrZVN0cmluZyhw
YWQoJzAnLCA2LCBtX2ZyYW1lTnVtYmVyKyspKTsKICAgICB0aW1lTG9jYXRpb24ubW92ZSgwLCBt
X2Jhc2VGb250U2l6ZSk7Ci0gICAgY29udGV4dC5kcmF3VGV4dCh0aW1lRm9udCwgVGV4dFJ1bigo
U3RyaW5nVmlldyhzdHJpbmcpKSksIHRpbWVMb2NhdGlvbik7CisgICAgY29udGV4dC5kcmF3VGV4
dCh0aW1lRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgdGltZUxv
Y2F0aW9uKTsKIAogICAgIEZsb2F0UG9pbnQgc3RhdHNMb2NhdGlvbihjYXB0dXJlU2l6ZS53aWR0
aCgpICogLjQ1LCBjYXB0dXJlU2l6ZS5oZWlnaHQoKSAqIC43NSk7CiAgICAgc3RyaW5nID0gbWFr
ZVN0cmluZygiUmVxdWVzdGVkIGZyYW1lIHJhdGU6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChmcmFtZVJhdGUoKSwgMSksICIgZnBzIik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChzdGF0
c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3
KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAKICAgICBzdGF0c0xvY2F0aW9uLm1vdmUoMCwg
bV9zdGF0c0ZvbnRTaXplKTsKICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCJPYnNlcnZlZCBmcmFt
ZSByYXRlOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgob2JzZXJ2ZWRGcmFtZVJhdGUo
KSwgMSksICIgZnBzIik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4o
KFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBzdGF0c0xvY2F0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdU
ZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3Rh
dHNMb2NhdGlvbik7CiAKICAgICBhdXRvIHNpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgc3RhdHNM
b2NhdGlvbi5tb3ZlKDAsIG1fc3RhdHNGb250U2l6ZSk7CiAgICAgc3RyaW5nID0gbWFrZVN0cmlu
ZygiU2l6ZTogIiwgc2l6ZS53aWR0aCgpLCAiIHggIiwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29u
dGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkpLCBz
dGF0c0xvY2F0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NU
ZXh0UnVuKChTdHJpbmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAKICAgICBpZiAo
bW9ja0NhbWVyYSgpKSB7CiAgICAgICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9u
dFNpemUpOwogICAgICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCJQcmVzZXQgc2l6ZTogIiwgY2Fw
dHVyZVNpemUud2lkdGgoKSwgIiB4ICIsIGNhcHR1cmVTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
Y29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIFRleHRSdW4oKFN0cmluZ1ZpZXcoc3RyaW5nKSkp
LCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQsIEdy
YXBoaWNzVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24pOwogCiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNhbWVyYTsKICAgICAgICAgc3dpdGNoIChmYWNpbmdNb2RlKCkp
IHsKQEAgLTQwMCwxMCArNDAwLDEwIEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmRy
YXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgfQogICAgICAgICBzdHJp
bmcgPSBtYWtlU3RyaW5nKCJDYW1lcmE6ICIsIGNhbWVyYSk7CiAgICAgICAgIHN0YXRzTG9jYXRp
b24ubW92ZSgwLCBtX3N0YXRzRm9udFNpemUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0
YXRzRm9udCwgVGV4dFJ1bigoU3RyaW5nVmlldyhzdHJpbmcpKSksIHN0YXRzTG9jYXRpb24pOwor
ICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgR3JhcGhpY3NUZXh0UnVuKChTdHJp
bmdWaWV3KHN0cmluZykpKSwgc3RhdHNMb2NhdGlvbik7CiAgICAgfSBlbHNlIGlmICghbmFtZSgp
LmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRzTG9jYXRpb24ubW92ZSgwLCBtX3N0YXRzRm9udFNp
emUpOwotICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0YXRzRm9udCwgVGV4dFJ1biB7IG5hbWUo
KSB9LCBzdGF0c0xvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdGF0c0ZvbnQs
IEdyYXBoaWNzVGV4dFJ1biB7IG5hbWUoKSB9LCBzdGF0c0xvY2F0aW9uKTsKICAgICB9CiAKICAg
ICBGbG9hdFBvaW50IGJpcEJvcExvY2F0aW9uKGNhcHR1cmVTaXplLndpZHRoKCkgKiAuNiwgY2Fw
dHVyZVNpemUuaGVpZ2h0KCkgKiAuNik7CkBAIC00MTEsMTEgKzQxMSwxMSBAQCB2b2lkIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAg
ICAgaWYgKGZyYW1lTW9kIDw9IDE1KSB7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpjeWFuKTsKICAgICAgICAgU3RyaW5nIGJpcCgiQmlwIl9zKTsKLSAgICAgICAgY29udGV4
dC5kcmF3VGV4dChiaXBCb3BGb250LCBUZXh0UnVuKFN0cmluZ1ZpZXcoYmlwKSksIGJpcEJvcExv
Y2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250LCBHcmFwaGljc1Rl
eHRSdW4oU3RyaW5nVmlldyhiaXApKSwgYmlwQm9wTG9jYXRpb24pOwogICAgIH0gZWxzZSBpZiAo
ZnJhbWVNb2QgPiAzMCAmJiBmcmFtZU1vZCA8PSA0NSkgewogICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6eWVsbG93KTsKICAgICAgICAgU3RyaW5nIGJvcCgiQm9wIl9zKTsKLSAg
ICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250LCBUZXh0UnVuKFN0cmluZ1ZpZXcoYm9w
KSksIGJpcEJvcExvY2F0aW9uKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChiaXBCb3BGb250
LCBHcmFwaGljc1RleHRSdW4oU3RyaW5nVmlldyhib3ApKSwgYmlwQm9wTG9jYXRpb24pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApp
bmRleCBhYzZlMjQ0ZDA0MWUuLjE0OWFlNjU1ZTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTMzLDExICszMywxMSBAQAogI2luY2x1ZGUg
IkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dFdpbi5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1
bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dEluZGljYXRvci5oIgotI2luY2x1ZGUgIlRleHRSdW4u
aCIKICNpbmNsdWRlICJXZWJDb3JlVGV4dFJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE1MSw4ICsxNTEsOCBAQCBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiwgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgaW5MYWJlbCwgVAogICAgIH0KIAogICAgIC8vIEZpcnN0IHN0ZXAgaW4gZHJhd2luZyB0
aGUgbGluayBkcmFnIGltYWdlIHdpZHRoLgotICAgIFRleHRSdW4gbGFiZWxSdW4obGFiZWwpOwot
ICAgIFRleHRSdW4gdXJsUnVuKHVybFN0cmluZyk7CisgICAgR3JhcGhpY3NUZXh0UnVuIGxhYmVs
UnVuKGxhYmVsKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdXJsUnVuKHVybFN0cmluZyk7CiAgICAg
SW50U2l6ZSBsYWJlbFNpemUobGFiZWxGb250LT53aWR0aChsYWJlbFJ1biksIGxhYmVsRm9udC0+
Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSArIGxhYmVsRm9udC0+Zm9udE1ldHJpY3MoKS5kZXNjZW50
KCkpOwogCiAgICAgaWYgKGxhYmVsU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xhYmVsU3RyaW5nV2lk
dGgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5k
ZXggMjQ4ZTNkYzFlMzgyLi5hY2Q1NmRhMmRiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiR0RJ
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0V2luLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgpAQCAtNDgsNyArNDksNiBAQAogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVXaW4uaCIKLSNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9XaW5kb3dzRXh0cmFzLmg+CkBA
IC0zNTIsNyArMzUyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5k
U2l6ZShjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAgICAgICAgICAgICBpdGVtRm9u
dC51cGRhdGUobV9wb3B1cENsaWVudC0+Zm9udFNlbGVjdG9yKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcG9wdXBXaWR0aCA9IHN0ZDo6bWF4KHBvcHVwV2lkdGgsIHN0YXRpY19jYXN0PGludD4o
Y2VpbGYoaXRlbUZvbnQud2lkdGgoVGV4dFJ1bih0ZXh0KSkpKSk7CisgICAgICAgIHBvcHVwV2lk
dGggPSBzdGQ6Om1heChwb3B1cFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKGl0ZW1Gb250
LndpZHRoKEdyYXBoaWNzVGV4dFJ1bih0ZXh0KSkpKSk7CiAgICAgfQogCiAgICAgaWYgKG5hdHVy
YWxIZWlnaHQgPiBtYXhQb3B1cEhlaWdodCkKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIFBvcHVw
TWVudVdpbjo6cGFpbnQoY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgSERDIGhkYykKIAogICAg
ICAgICBTdHJpbmcgaXRlbVRleHQgPSBjbGllbnQoKS0+aXRlbVRleHQoaW5kZXgpOwogCi0gICAg
ICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dMZWZ0RXhwYW5zaW9uLCBp
dGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJy
aWRlKCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwg
QWxsb3dMZWZ0RXhwYW5zaW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUu
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihvcHRpb25UZXh0Q29sb3IpOwogCiAgICAgICAgIEZvbnRDYXNjYWRlIGl0ZW1Gb250ID0gbV9m
b250OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFlZjAwYi4uZTE2NDllY2U3NmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCkBAIC0y
OCwxNCArMjgsMTQgQEAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgotI2luY2x1ZGUg
IlRleHRSdW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBzaG91bGRV
c2VGb250U21vb3RoaW5nID0gdHJ1ZTsKIAotc3RhdGljIGJvb2wgaXNPbmVMZWZ0VG9SaWdodFJ1
bihjb25zdCBUZXh0UnVuJiBydW4pCitzdGF0aWMgYm9vbCBpc09uZUxlZnRUb1JpZ2h0UnVuKGNv
bnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVu
Lmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgVUNoYXJEaXJlY3Rpb24gZGlyZWN0aW9uID0gdV9j
aGFyRGlyZWN0aW9uKHJ1bltpXSk7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBib29sIGlzT25l
TGVmdFRvUmlnaHRSdW4oY29uc3QgVGV4dFJ1biYgcnVuKQogCiBzdGF0aWMgdm9pZCBkb0RyYXdU
ZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgQ29s
b3ImIGNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4KQogewotICAgIFRleHRSdW4gcnVuKHRleHQp
OworICAgIEdyYXBoaWNzVGV4dFJ1biBydW4odGV4dCk7CiAKICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihjb2xvcik7CiAgICAgaWYgKGlzT25lTGVmdFRvUmlnaHRSdW4ocnVuKSkKQEAgLTYwLDEy
ICs2MCwxMiBAQCBzdGF0aWMgdm9pZCBkb0RyYXdUZXh0QXRQb2ludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29ucwogCiAgICAgICAgIGludCBiZWZvcmVX
aWR0aDsKICAgICAgICAgaWYgKHVuZGVybGluZWRJbmRleCA+IDApIHsKLSAgICAgICAgICAgIFRl
eHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKDAsIHVuZGVybGluZWRJ
bmRleCkpOworICAgICAgICAgICAgR3JhcGhpY3NUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3
KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9y
ZVdpZHRoID0gZm9udC53aWR0aChiZWZvcmVSdW4pOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGJlZm9yZVdpZHRoID0gMDsKIAotICAgICAgICBUZXh0UnVuIHVuZGVybGluZWRSdW4oU3Ry
aW5nVmlldyh0ZXh0KS5zdWJzdHJpbmcodW5kZXJsaW5lZEluZGV4LCAxKSk7CisgICAgICAgIEdy
YXBoaWNzVGV4dFJ1biB1bmRlcmxpbmVkUnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKHVu
ZGVybGluZWRJbmRleCwgMSkpOwogICAgICAgICBpbnQgdW5kZXJsaW5lZFdpZHRoID0gZm9udC53
aWR0aCh1bmRlcmxpbmVkUnVuKTsKIAogICAgICAgICBJbnRQb2ludCB1bmRlcmxpbmVQb2ludChw
b2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5
TGlzdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENh
Y2hlLmgKaW5kZXggYTE1YTc0NDg1YTVmLi5kMjY1MDk1ODkxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HbHlwaERpc3BsYXlMaXN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR2x5cGhEaXNwbGF5TGlzdENhY2hlLmgKQEAgLTI2LDkgKzI2LDkg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJH
cmFwaGljc1RleHRSdW4uaCIKICNpbmNsdWRlICJJbk1lbW9yeURpc3BsYXlMaXN0LmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY2FjaGU7CiAgICAgfQogCi0gICAgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0KiBn
ZXQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4pCisgICAgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0KiBnZXQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1
biYgdGV4dFJ1bikKICAgICB7CiAgICAgICAgIGlmIChNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNp
bmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1f
Z2x5cGhSdW5NYXAuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUVsbGlwc2lzQm94LmNwcAppbmRleCAyN2U1ZDIxMTg0MGUuLjgyMzliODBmNTNhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUVsbGlwc2lzQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5RWxsaXBzaXNCb3guY3BwCkBAIC0y
MywxMSArMjMsMTEgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NU
ZXh0UnVuLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxlZ2FjeUlu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMZWdhY3lSb290SW5saW5lQm94LmgiCiAjaW5jbHVk
ZSAiUGFpbnRJbmZvLmgiCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIExlZ2FjeUVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlzIExU
Uj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBMYXlv
dXRSZWN0IHNlbGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KHgoKSArIHBhaW50T2Zmc2V0LngoKSks
IExheW91dFVuaXQoeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3Ao
KSksIDBfbHUsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkgfTsKLSAgICBUZXh0UnVuIHJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKG1fc3RyLCBzdHlsZSwgQWxsb3dSaWdodEV4
cGFuc2lvbik7CisgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1biht
X3N0ciwgc3R5bGUsIEFsbG93UmlnaHRFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0KTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggMTk2ZjYzNzlkOTA2Li5iOTllNTcxMDI3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5jcHAKQEAgLTIyNCw3ICsyMjQs
NyBAQCBMYXlvdXRSZWN0IExlZ2FjeUlubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCh1
bnNpZ25lZCBzdGFydFBvcywgdW5zaWduZWQgZQogICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9w
ID0gdGhpcy0+c2VsZWN0aW9uVG9wKCk7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25IZWlnaHQg
PSB0aGlzLT5zZWxlY3Rpb25IZWlnaHQoKTsKIAotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0
ZVRleHRSdW4oKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CiAKICAgICBM
YXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgeyBMYXlvdXRVbml0KGxvZ2ljYWxMZWZ0KCkpLCBzZWxl
Y3Rpb25Ub3AsIExheW91dFVuaXQobG9naWNhbFdpZHRoKCkpLCBzZWxlY3Rpb25IZWlnaHQgfTsK
ICAgICAvLyBBdm9pZCBtZWFzdXJpbmcgdGhlIHRleHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94
IGlzIHNlbGVjdGVkIGFzIGFuIG9wdGltaXphdGlvbi4KQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lk
IExlZ2FjeUlubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgIGJvb2wgaGlnaGxpZ2h0RGVjb3JhdGlvbnMgPSAhTWFy
a2VkVGV4dDo6Y29sbGVjdEZvckhpZ2hsaWdodHMocmVuZGVyZXIoKSwgcGFyZW50KCktPnJlbmRl
cmVyKCksIHNlbGVjdGFibGVSYW5nZSgpLCBNYXJrZWRUZXh0OjpQYWludFBoYXNlOjpEZWNvcmF0
aW9uKS5pc0VtcHR5KCk7CiAgICAgYm9vbCBsaW5lRGVjb3JhdGlvbnMgPSAhdGV4dERlY29yYXRp
b25zLmlzRW1wdHkoKTsKICAgICBpZiAoKGxpbmVEZWNvcmF0aW9ucyB8fCBoaWdobGlnaHREZWNv
cmF0aW9ucykgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2U6OlNlbGVjdGlvbikgewot
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgICAgIGF1dG8g
dGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4oKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4
dFJ1bi5sZW5ndGgoKTsKICAgICAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9u
KQogICAgICAgICAgICAgbGVuZ3RoID0gbV90cnVuY2F0aW9uOwpAQCAtNjgzLDcgKzY4Myw3IEBA
IEZsb2F0UmVjdCBMZWdhY3lJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVEb2N1bWVudE1hcmtlckJv
dW5kcyhjb25zdCBNYXJrZWRUZXh0JiBtCiAKICAgICAvLyBBdm9pZCBtZWFzdXJpbmcgdGhlIHRl
eHQgd2hlbiB0aGUgZW50aXJlIGxpbmUgYm94IGlzIHNlbGVjdGVkIGFzIGFuIG9wdGltaXphdGlv
bi4KICAgICBpZiAobWFya2VkVGV4dC5zdGFydE9mZnNldCB8fCBtYXJrZWRUZXh0LmVuZE9mZnNl
dCAhPSBzZWxlY3RhYmxlUmFuZ2UoKS5jbGFtcChlbmQoKSkpIHsKLSAgICAgICAgVGV4dFJ1biBy
dW4gPSBjcmVhdGVUZXh0UnVuKCk7CisgICAgICAgIGF1dG8gcnVuID0gY3JlYXRlVGV4dFJ1bigp
OwogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KDAsIHksIDAs
IGhlaWdodCk7CiAgICAgICAgIGxpbmVGb250KCkuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
cnVuLCBzZWxlY3Rpb25SZWN0LCBtYXJrZWRUZXh0LnN0YXJ0T2Zmc2V0LCBtYXJrZWRUZXh0LmVu
ZE9mZnNldCk7CiAgICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0OwpAQCAtNzcyLDcgKzc3Miw3
IEBAIHZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJrZWRUZXh0QmFja2dyb3VuZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QKIAogICAgIC8vIE5vdGUgdGhhdCBpZiB0aGUgdGV4
dCBpcyB0cnVuY2F0ZWQsIHdlIGxldCB0aGUgdGhpbmcgYmVpbmcgcGFpbnRlZCBpbiB0aGUgdHJ1
bmNhdGlvbgogICAgIC8vIGRyYXcgaXRzIG93biBoaWdobGlnaHQuCi0gICAgVGV4dFJ1biB0ZXh0
UnVuID0gY3JlYXRlVGV4dFJ1bigpOworICAgIGF1dG8gdGV4dFJ1biA9IGNyZWF0ZVRleHRSdW4o
KTsKIAogICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7CiAg
ICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20gPSByb290Qm94LnNlbGVjdGlvbkJvdHRvbSgp
OwpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgTGVnYWN5SW5saW5lVGV4dEJveDo6cGFpbnRNYXJr
ZWRUZXh0Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QKICAgICBpZiAoYXV0
byogZGVidWdTaGFkb3cgPSBkZWJ1Z1RleHRTaGFkb3coKSkKICAgICAgICAgdGV4dFBhaW50ZXIu
c2V0U2hhZG93KGRlYnVnU2hhZG93KTsKIAotICAgIFRleHRSdW4gdGV4dFJ1biA9IGNyZWF0ZVRl
eHRSdW4oKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKCk7CiAgICAgdGV4dFBh
aW50ZXIuc2V0R2x5cGhEaXNwbGF5TGlzdElmTmVlZGVkKCp0aGlzLCBwYWludEluZm8sIGZvbnQs
IGNvbnRleHQsIHRleHRSdW4pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyIHsgY29udGV4dCwgZmFsc2UgfTsKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIExlZ2Fj
eUlubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERlY29yYXRpb24oUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0CiAKICAgICAvLyBOb3RlIHRoYXQgaWYgdGhlIHRleHQgaXMgdHJ1bmNhdGVk
LCB3ZSBsZXQgdGhlIHRoaW5nIGJlaW5nIHBhaW50ZWQgaW4gdGhlIHRydW5jYXRpb24KICAgICAv
LyBkcmF3IGl0cyBvd24gZGVjb3JhdGlvbi4KLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVU
ZXh0UnVuKCk7CisgICAgYXV0byB0ZXh0UnVuID0gY3JlYXRlVGV4dFJ1bigpOwogCiAgICAgLy8g
QXZvaWQgbWVhc3VyaW5nIHRoZSB0ZXh0IHdoZW4gdGhlIGVudGlyZSBsaW5lIGJveCBpcyBzZWxl
Y3RlZCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgICAgRmxvYXRSZWN0IHNuYXBwZWRTZWxlY3Rpb25S
ZWN0ID0gYm94UmVjdDsKQEAgLTEwNTUsMTUgKzEwNTUsMTUgQEAgZmxvYXQgTGVnYWN5SW5saW5l
VGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogICAgIExh
eW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QobG9naWNhbExlZnQoKSwgMCwgMCwg
MCk7CiAgICAgYm9vbCBpZ25vcmVDb21iaW5lZFRleHQgPSB0cnVlOwogICAgIGJvb2wgaWdub3Jl
SHlwaGVuID0gdHJ1ZTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjcmVhdGVUZXh0UnVuKGlnbm9y
ZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKTsKKyAgICBhdXRvIHRleHRSdW4gPSBjcmVhdGVU
ZXh0UnVuKGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVuKTsKICAgICBsaW5lRm9udCgp
LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KHRleHRSdW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpOwogICAgIHJldHVybiBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0
aFdyaXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHRleHRSdW4ubHRyKCkpLm1heFgoKTsKIH0KIAotVGV4dFJ1biBM
ZWdhY3lJbmxpbmVUZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0
LCBib29sIGlnbm9yZUh5cGhlbikgY29uc3QKK0dyYXBoaWNzVGV4dFJ1biBMZWdhY3lJbmxpbmVU
ZXh0Qm94OjpjcmVhdGVUZXh0UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0LCBib29sIGlnbm9y
ZUh5cGhlbikgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9IGxpbmVTdHlsZSgpOwot
ICAgIFRleHRSdW4gdGV4dFJ1biB7IHRleHQoaWdub3JlQ29tYmluZWRUZXh0LCBpZ25vcmVIeXBo
ZW4pLCB0ZXh0UG9zKCksIGV4cGFuc2lvbigpLCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rp
b24oKSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHlsZS5ydGxPcmRlcmluZygpID09IE9yZGVyOjpWaXN1
YWwsICFyZW5kZXJlcigpLmNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIH07CisgICAgR3JhcGhp
Y3NUZXh0UnVuIHRleHRSdW4geyB0ZXh0KGlnbm9yZUNvbWJpbmVkVGV4dCwgaWdub3JlSHlwaGVu
KSwgdGV4dFBvcygpLCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGlyZWN0aW9u
KCksIGRpck92ZXJyaWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFs
LCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSB9OwogICAgIHRleHRSdW4u
c2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHRSdW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZVRleHRCb3guaAppbmRleCA4OTJmMjAyMDgyOTUuLjUwZWJlNzVhMjQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZVRleHRCb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lVGV4dEJveC5oCkBAIC0y
MiwxMCArMjIsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc1RleHRS
dW4uaCIKICNpbmNsdWRlICJMZWdhY3lJbmxpbmVCb3guaCIKICNpbmNsdWRlICJNYXJrZWRUZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICBTaGFk
b3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3coKTsKIAogICAgIFN0cmluZyB0ZXh0KGJvb2wgaWdub3Jl
Q29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0gZmFsc2UpIGNvbnN0OyAv
LyBUaGUgZWZmZWN0aXZlIHRleHQgZm9yIHRoZSBydW4uCi0gICAgVGV4dFJ1biBjcmVhdGVUZXh0
UnVuKGJvb2wgaWdub3JlQ29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0g
ZmFsc2UpIGNvbnN0OworICAgIEdyYXBoaWNzVGV4dFJ1biBjcmVhdGVUZXh0UnVuKGJvb2wgaWdu
b3JlQ29tYmluZWRUZXh0ID0gZmFsc2UsIGJvb2wgaWdub3JlSHlwaGVuID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNzZhZGFkZDBkY2Iz
Li4wYzU1ZDU5Y2JkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtMzEwMCw3ICszMTAwLDcgQEAgY29uc3QgY2hhciogUmVuZGVyQmxvY2s6OnJlbmRlck5h
bWUoKSBjb25zdAogICAgIHJldHVybiAiUmVuZGVyQmxvY2siOwogfQogCi1UZXh0UnVuIFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFn
cyBmbGFncykKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byB0ZXh0
RGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVy
cmlkZSA9IHN0eWxlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbDsKQEAgLTMxMTYsMzcg
KzMxMTYsMzcgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJgogICAgIC8vIDIuIFRoaXMgcmVwbGFj
ZW1lbnQgZG9lc24ndCBhZmZlY3Qgc3RyaW5nIGluZGljZXMuIFdlJ3JlIHJlcGxhY2luZyBhIHNp
bmdsZSBVbmljb2RlIGNvZGUgdW5pdCB3aXRoIGFub3RoZXIgVW5pY29kZSBjb2RlIHVuaXQuCiAg
ICAgLy8gSG93IGNvbnZlbmllbnQuCiAgICAgYXV0byB1cGRhdGVkU3RyaW5nID0gUmVuZGVyQmxv
Y2s6OnVwZGF0ZVNlY3VyaXR5RGlzY0NoYXJhY3RlcnMoc3R5bGUsIHN0cmluZ1ZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKTsKLSAgICByZXR1cm4gVGV4dFJ1bihXVEZNb3ZlKHVwZGF0ZWRT
dHJpbmcpLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUpOworICAgIHJldHVybiBHcmFwaGljc1RleHRSdW4geyBXVEZNb3ZlKHVwZGF0ZWRTdHJpbmcp
LCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfTsK
IH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcm
IHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykK
IHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KHN0cmluZyksIHN0eWxl
LCBleHBhbnNpb24sIGZsYWdzKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bihjb25zdCBBdG9tU3RyaW5nJiBhdG9tU3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdzIGZsYWdzKQor
R3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IEF0b21T
dHJpbmcmIGF0b21TdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIGNvbnN0
cnVjdFRleHRSdW4oU3RyaW5nVmlldyhhdG9tU3RyaW5nKSwgc3R5bGUsIGV4cGFuc2lvbiwgZmxh
Z3MpOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJl
bmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uKQorR3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclRleHQmIHRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhw
YW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVu
KHRleHQuc3RyaW5nVmlldygpLCBzdHlsZSwgZXhwYW5zaW9uKTsKIH0KIAotVGV4dFJ1biBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0LCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb24pCitHcmFwaGljc1RleHRSdW4gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uKQogewogICAgIHVuc2lnbmVkIHN0b3AgPSBvZmZzZXQgKyBsZW5ndGg7CiAg
ICAgQVNTRVJUKHN0b3AgPD0gdGV4dC50ZXh0KCkubGVuZ3RoKCkpOwogICAgIHJldHVybiBjb25z
dHJ1Y3RUZXh0UnVuKHRleHQuc3RyaW5nVmlldyhvZmZzZXQsIHN0b3ApLCBzdHlsZSwgZXhwYW5z
aW9uKTsKIH0KIAotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKK0dyYXBoaWNzVGV4dFJ1biBSZW5kZXJC
bG9jazo6Y29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFu
c2lvbikKIHsKICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3Rl
cnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi1UZXh0UnVuIFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9u
KQorR3JhcGhpY3NUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uKQogewogICAgIHJldHVybiBjb25zdHJ1Y3RU
ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDY1MGM2NjNmZDgy
Mi4uNzU1OTllZTk4Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtMjMsOSArMjMsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHYXBSZWN0cy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkxpbmVXaWR0aC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckJveC5oIgotI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKQEAgLTE5NSwxOSArMTk1LDE5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9iai5pc0Zsb2F0aW5nKCkgfHwgKG9iai5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiAhb2JqLnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVU
eXBlKCkgJiYgIW9iai5jb250YWluZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSk7CiAgICAgfQogCi0g
ICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3LCBjb25zdCBSZW5k
ZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFN0
cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsK
LSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFJlbmRlclN0eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRS
dW4oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBFeHBhbnNpb25C
ZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHRSdW5GbGFncyA9IERlZmF1bHRUZXh0UnVu
RmxhZ3MpOwotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNv
bnN0cnVjdFRleHRSdW4oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAg
ICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3Mg
PSBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0
UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdy
YXBoaWNzVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lv
bik7Ci0gICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJUZXh0
JiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwK
KyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVy
VGV4dCYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHls
ZSYsCiAgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbik7Ci0gICAg
c3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBMQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgc3RhdGljIEdyYXBoaWNz
VGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiwKICAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3Ig
PSBEZWZhdWx0RXhwYW5zaW9uKTsKLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVu
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0
eWxlJiwKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAog
ICAgICAgICBFeHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24pOwogICAgIAogICAg
IExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlMWNkMDI0OWFkNzAu
LmVjNzRlOWZmZjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxFbWJlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxl
bWVudC5oIgpAQCAtNTMsNyArNTQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RhY2tT
dGF0cy5oPgogCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRUZXh0UmVjdDsKICAgICBGbG9hdFJlY3QgYXJyb3dSZWN0
OwogICAgIEZvbnRDYXNjYWRlIGZvbnQ7Ci0gICAgVGV4dFJ1biBydW4oZW1wdHlTdHJpbmcoKSk7
CisgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsKICAgICBmbG9hdCB0ZXh0
V2lkdGg7CiAgICAgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkocGFpbnRPZmZzZXQsIGNvbnRl
bnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRleHRSZWN0LCBhcnJvd1JlY3QsIGZv
bnQsIHJ1biwgdGV4dFdpZHRoKTsKIApAQCAtMjkxLDEzICsyOTEsMTMgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5
b3V0UG9pbnQmIGEKICAgICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRUZXh0UmVjdDsKICAgICBGbG9h
dFJlY3QgYXJyb3dSZWN0OwogICAgIEZvbnRDYXNjYWRlIGZvbnQ7Ci0gICAgVGV4dFJ1biBydW4o
ZW1wdHlTdHJpbmcoKSk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihlbXB0eVN0cmluZygpKTsK
ICAgICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgZ2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoYWNj
dW11bGF0ZWRPZmZzZXQsIGNvbnRlbnRSZWN0LCBpbmRpY2F0b3JSZWN0LCByZXBsYWNlbWVudFRl
eHRSZWN0LCBhcnJvd1JlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKTsKICAgICByZXR1cm4gTGF5
b3V0UmVjdChpbmRpY2F0b3JSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBGbG9hdFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3QmIGluZGljYXRvclJlY3Qs
IEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0JiBhcnJvd1JlY3QsIEZv
bnRDYXNjYWRlJiBmb250LCBUZXh0UnVuJiBydW4sIGZsb2F0JiB0ZXh0V2lkdGgpIGNvbnN0Cit2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVjdCYgY29udGVudFJlY3Qs
IEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBsYWNlbWVudFRleHRSZWN0
LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmIGZvbnQsIEdyYXBoaWNzVGV4dFJ1
biYgcnVuLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdAogewogICAgIGJvb2wgaW5jbHVkZXNBcnJv
dyA9IHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKHBhZ2UoKSwgbV9wbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bAogICAgIGZvbnQgPSBGb250Q2FzY2FkZShXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwogCi0gICAgcnVuID0gVGV4dFJ1biht
X3VuYXZhaWxhYmxlUGx1Z2luUmVwbGFjZW1lbnRUZXh0KTsKKyAgICBydW4gPSBHcmFwaGljc1Rl
eHRSdW4obV91bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dCk7CiAgICAgdGV4dFdpZHRo
ID0gZm9udC53aWR0aChydW4pOwogCiAgICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRTaXplKEZs
b2F0U2l6ZSh0ZXh0V2lkdGggKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFy
Z2luICsgKGluY2x1ZGVzQXJyb3cgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4
dE1hcmdpbldpdGhBcnJvdyA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmlnaHRUZXh0TWFy
Z2luKSwgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RIZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggZWI2YmQ0MzYyMWRi
Li45Yzg2ZjQxYzg4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5oCkBAIC0yNiw4ICsyNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgR3JhcGhpY3NUZXh0UnVuOwogY2xhc3MgTW91c2VFdmVudDsKLWNsYXNzIFRleHRS
dW47CiAKIC8vIFJlbmRlcmVyIGZvciBlbWJlZHMgYW5kIG9iamVjdHMsIG9mdGVuLCBidXQgbm90
IGFsd2F5cywgcmVuZGVyZWQgdmlhIHBsdWctaW5zLgogLy8gRm9yIGV4YW1wbGUsIDxlbWJlZCBz
cmM9ImZvby5odG1sIj4gZG9lcyBub3QgaW52b2tlIGEgcGx1Zy1pbi4KQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVz
c2VkKGJvb2wpOwogICAgIGJvb2wgaXNJblVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKGNvbnN0
IE1vdXNlRXZlbnQmKSBjb25zdDsKICAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvcihjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdm9pZCBnZXRSZXBsYWNlbWVudFRl
eHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVj
dCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBs
YWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmLCBUZXh0
UnVuJiwgZmxvYXQmIHRleHRXaWR0aCkgY29uc3Q7CisgICAgdm9pZCBnZXRSZXBsYWNlbWVudFRl
eHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEZsb2F0UmVj
dCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwgRmxvYXRSZWN0JiByZXBs
YWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9udENhc2NhZGUmLCBHcmFw
aGljc1RleHRSdW4mLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGdl
dFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Q7CiAKICAgICBib29sIG1faXNQbHVnaW5VbmF2YWlsYWJsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmlu
ZGV4IDg3ODVmMjI5OWM4MC4uM2IwMWRkNjZlZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTI0LDYgKzI0LDcg
QEAKICNpbmNsdWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUZXh0UnVuLmgiCiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkljb24uaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIK
LSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0xMzQs
NyArMTM0LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OkZvcmVncm91bmQpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBk
aXNwbGF5ZWRGaWxlbmFtZSA9IGZpbGVUZXh0VmFsdWUoKTsKICAgICAgICAgY29uc3QgRm9udENh
c2NhZGUmIGZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7Ci0gICAgICAgIFRleHRSdW4gdGV4
dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oZGlzcGxheWVkRmlsZW5hbWUsIHN0eWxlKCksIEFsbG93
UmlnaHRFeHBhbnNpb24sIFJlc3BlY3REaXJlY3Rpb24gfCBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJp
ZGUpOworICAgICAgICBhdXRvIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKGRpc3BsYXllZEZp
bGVuYW1lLCBzdHlsZSgpLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBSZXNwZWN0RGlyZWN0aW9uIHwg
UmVzcGVjdERpcmVjdGlvbk92ZXJyaWRlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgICAgIGludCBpY29uSGVpZ2h0ID0gbm9kZUhlaWdodCh1cGxvYWRCdXR0b24oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBlYzRmOGZmYmU3MDAuLmU0
MTE4YmYyMGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC01MzIsNyArNTMyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAgICAg
ICAgIC8vIE9ubHkgZHJhdyB0aGUgYWx0IHRleHQgaWYgaXQnbGwgZml0IHdpdGhpbiB0aGUgY29u
dGVudCBib3gsCiAgICAgICAgICAgICAgICAgLy8gYW5kIG9ubHkgaWYgaXQgZml0cyBhYm92ZSB0
aGUgZXJyb3IgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAg
YXV0byB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUo
KSk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lkdGggeyBmb250LndpZHRoKHRl
eHRSdW4pIH07CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yUGljdHVyZURyYXduKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh1c2FibGVTaXplLndpZHRoKCkgPj0gdGV4dFdpZHRoICYmIGZv
bnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA2ZThhYjkxYWY1
ZDEuLmE4OTVlMDMwMGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTMyOTAsNyArMzI5MCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0
dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
biwgRmxvCiAgICAgICAgIEZvbnRDYXNjYWRlIGZvbnQoV1RGTW92ZShmb250RGVzY3JpcHRpb24p
LCAwLCAwKTsKICAgICAgICAgZm9udC51cGRhdGUobnVsbHB0cik7CiAKLSAgICAgICAgVGV4dFJ1
biB0ZXh0UnVuID0gVGV4dFJ1bihkZXNjcmlwdGlvbi5uYW1lKTsKKyAgICAgICAgYXV0byB0ZXh0
UnVuID0gR3JhcGhpY3NUZXh0UnVuKGRlc2NyaXB0aW9uLm5hbWUpOwogICAgICAgICBpbWFnZUNv
bnRleHQuc2V0RmlsbENvbG9yKGRlc2NyaXB0aW9uLmZpbGxDb2xvcik7CiAKICAgICAgICAgY29u
c3RleHByIGZsb2F0IHRleHRHYXAgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guY3BwCmluZGV4IDFkZTY5ZDY5MzZlYS4uN2FkNGM5YWI0YzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcihQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250
ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKLXN0YXRpYyBMYXlv
dXRTaXplIGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQoVGV4dFJ1biB0ZXh0UnVuLCBjb25zdCBSZW5k
ZXJTdHlsZSogaXRlbVN0eWxlLCBGb250Q2FzY2FkZSBpdGVtRm9udCwgTGF5b3V0UmVjdCBpdGVt
Qm91ZGluZ0JveCkKK3N0YXRpYyBMYXlvdXRTaXplIGl0ZW1PZmZzZXRGb3JBbGlnbm1lbnQoR3Jh
cGhpY3NUZXh0UnVuIHRleHRSdW4sIGNvbnN0IFJlbmRlclN0eWxlKiBpdGVtU3R5bGUsIEZvbnRD
YXNjYWRlIGl0ZW1Gb250LCBMYXlvdXRSZWN0IGl0ZW1Cb3VkaW5nQm94KQogewogICAgIFRleHRB
bGlnbk1vZGUgYWN0dWFsQWxpZ25tZW50ID0gaXRlbVN0eWxlLT50ZXh0QWxpZ24oKTsKICAgICAv
LyBGSVhNRTogRmlyZWZveCBkb2Vzbid0IHJlc3BlY3QgVGV4dEFsaWduTW9kZTo6SnVzdGlmeS4g
U2hvdWxkIHdlPwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJ
dGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAK
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IpOwogCi0gICAg
VGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5zaW9uLCBpdGVt
U3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0
cnVlKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dS
aWdodEV4cGFuc2lvbiwgaXRlbVN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHls
ZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgTGF5b3V0UmVjdCByID0gaXRlbUJvdW5kaW5nQm94UmVj
dChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKICAgICByLm1vdmUoaXRlbU9mZnNldEZvckFsaWdu
bWVudCh0ZXh0UnVuLCAmaXRlbVN0eWxlLCBpdGVtRm9udCwgcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDk3MWM3ZTI3MDk5My4uOGEz
Yzk5YWIwOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCkBAIC0xNTQ0LDkgKzE1NDQsOSBAQCBzdGF0aWMgU3RyaW5nIHJldmVyc2VkKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogfQogCiBzdHJ1Y3QgUmVuZGVyTGlzdE1hcmtlcjo6VGV4dFJ1bldpdGhV
bmRlcmx5aW5nU3RyaW5nIHsKLSAgICBUZXh0UnVuIHRleHRSdW47CisgICAgR3JhcGhpY3NUZXh0
UnVuIHRleHRSdW47CiAgICAgU3RyaW5nIHVuZGVybHlpbmdTdHJpbmc7Ci0gICAgb3BlcmF0b3Ig
Y29uc3QgVGV4dFJ1biYoKSBjb25zdCB7IHJldHVybiB0ZXh0UnVuOyB9CisgICAgb3BlcmF0b3Ig
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJigpIGNvbnN0IHsgcmV0dXJuIHRleHRSdW47IH0KIH07CiAK
IGF1dG8gUmVuZGVyTGlzdE1hcmtlcjo6dGV4dFJ1bigpIGNvbnN0IC0+IFRleHRSdW5XaXRoVW5k
ZXJseWluZ1N0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKaW5kZXggNzczMjMzYzE0ZmMyLi42Nzk4YzFjYTEzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkNvbG9yQmxlbmRpbmcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVGV4dFJ1bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3Vw
RWxlbWVudC5oIgpAQCAtNDUsNyArNDYsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIK
LSNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAKQEAgLTIwNywxMyArMjA3LDEzIEBAIHZvaWQgUmVuZGVyTWVu
dUxpc3Q6OnVwZGF0ZU9wdGlvbnNXaWR0aCgpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGgg
Kz0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9wdGlvblN0eWxlLT50ZXh0SW5kZW50KCksIDApOwog
ICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwotICAgICAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5
bGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0
VGV4dFJ1bih0ZXh0LCBzdHlsZSgpKTsKICAgICAgICAgICAgICAgICBvcHRpb25XaWR0aCArPSBm
b250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtYXhPcHRpb25XaWR0
aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldpZHRoLCBvcHRpb25XaWR0aCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICAgICAgICAgIFRleHRSdW4gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgc3R5bGUoKSk7CisgICAgICAgICAg
ICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHN0eWxlKCkp
OwogICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGggPSBzdGQ6Om1heChtYXhPcHRpb25XaWR0aCwg
Zm9udC53aWR0aChydW4pKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCA5Yzk3ZTA4YzE5YWIuLmMxNGFlOTUyMjQzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNzA2LDcgKzcwNiw3IEBAIEFM
V0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENh
c2NhZGUmIGYsIHVuc2lnbmVkIHN0CiAgICAgICAgICAgICByZXR1cm4gY29tYmluZVRleHQuY29t
YmluZWRUZXh0V2lkdGgoZik7CiAgICAgfQogCi0gICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bigqdGhpcywgc3RhcnQsIGxlbiwgc3R5bGUpOworICAgIGF1dG8g
cnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oKnRoaXMsIHN0YXJ0LCBsZW4sIHN0
eWxlKTsKICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCFjYW5Vc2VTaW1wbGVG
b250Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVT
cGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJ1bi5zZXRYUG9zKHhQb3MpOwpAQCAtOTQ1
LDcgKzk0NSw3IEBAIHN0YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0
JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlCiAgICAgICAgIGZyYWdtZW50V2l0
aEh5cGhlbi5hcHBlbmQod29yZC5zdWJzdHJpbmcoc3VmZml4U3RhcnQsIGZyYWdtZW50TGVuZ3Ro
KSk7CiAgICAgICAgIGZyYWdtZW50V2l0aEh5cGhlbi5hcHBlbmQoc3R5bGUuaHlwaGVuU3RyaW5n
KCkpOwogCi0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRS
dW4oZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKKyAgICAgICAgYXV0byBy
dW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihmcmFnbWVudFdpdGhIeXBoZW4udG9T
dHJpbmcoKSwgc3R5bGUpOwogICAgICAgICBydW4uc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KCFyZW5kZXJlci5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAgICAgICAgIGZsb2F0IGZy
YWdtZW50V2lkdGggPSBmb250LndpZHRoKHJ1biwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJm
bG93KTsKIApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAg
ICAgICAgICAgICAgICAgICAgbV9tYXhXaWR0aCA9IGN1cnJNYXhXaWR0aDsKICAgICAgICAgICAg
ICAgICBjdXJyTWF4V2lkdGggPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCp0aGlzLCBp
LCAxLCBzdHlsZSk7CisgICAgICAgICAgICAgICAgYXV0byBydW4gPSBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bigqdGhpcywgaSwgMSwgc3R5bGUpOwogICAgICAgICAgICAgICAgIHJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICBydW4uc2V0WFBvcyhsZWFkV2lkdGggKyBjdXJyTWF4V2lkdGgpOwog
CkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBib29sIFJlbmRlclRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1w
bGlmaWVkVGV4dE1lYXN1cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IC8vIEFkZGl0aW9uYWwgY2hlY2sgb24gdGhlIGZvbnQgY29kZXBhdGguCi0gICAgVGV4dFJ1biBy
dW4obV90ZXh0KTsKKyAgICBHcmFwaGljc1RleHRSdW4gcnVuKG1fdGV4dCk7CiAgICAgcnVuLnNl
dENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChmYWxzZSk7CiAgICAgaWYgKGZvbnQuY29kZVBhdGgo
cnVuKSAhPSBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OlNpbXBsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGgodW5zaWdu
ZWQgZnJvbSwgdW5zaWduZWQgbGVuLCBjb25zdCBGb250Q2FzY2FkZSYgZiwgZmxvYXQKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICB3ID0gd2lkdGhGcm9tQ2FjaGUoZiwgZnJvbSwgbGVuLCB4
UG9zLCBmYWxsYmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93LCBzdHlsZSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bigqdGhp
cywgZnJvbSwgbGVuLCBzdHlsZSk7CisgICAgICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNv
bnN0cnVjdFRleHRSdW4oKnRoaXMsIGZyb20sIGxlbiwgc3R5bGUpOwogICAgICAgICBydW4uc2V0
Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCFjYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAg
ICAgICAgIHJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUu
dGFiU2l6ZSgpKTsKICAgICAgICAgcnVuLnNldFhQb3MoeFBvcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRleCAwZjI4MWEwNTdjZjYuLmI2
MmE0ZDJmYjY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgZmxvYXQgUmVuZGVyVGV4dENvbnRyb2w6Omdl
dEF2ZXJhZ2VDaGFyV2lkdGgoKQogICAgIGNvbnN0IFVDaGFyIGNoID0gJzAnOwogICAgIGNvbnN0
IFN0cmluZyBzdHIgPSBTdHJpbmcoJmNoLCAxKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKLSAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1
Y3RUZXh0UnVuKHN0ciwgc3R5bGUoKSwgQWxsb3dSaWdodEV4cGFuc2lvbik7CisgICAgYXV0byB0
ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHIsIHN0eWxlKCksIEFsbG93UmlnaHRFeHBhbnNp
b24pOwogICAgIHJldHVybiBmb250LndpZHRoKHRleHRSdW4pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNTQ3OTkxOGEyOGUwLi42NzgwODli
YTk2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTY0Niw3ICs2NDYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGZsb2F0IG1lYXN1cmVUZXh0KGNv
bnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihzdHJpbmcsIG1fc3R5bGUpOwor
ICAgICAgICBhdXRvIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHN0cmluZywg
bV9zdHlsZSk7CiAgICAgICAgIHJldHVybiBtX2ZvbnQud2lkdGgocnVuKTsKICAgICB9CiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmNwcAppbmRleCA4YzYzNzJkNGU2ZGQuLjQxZjFkNzBiNDhiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRm9udENh
c2NhZGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1RleHRSdW4uaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxGb250RWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3hTdHlsZS5oIgpAQCAtMzMs
NyArMzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKLSNpbmNsdWRlICJUZXh0UnVuLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0
aW9uU2V0CiB7CiB9CiAKLXZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNv
cmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmln
aW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbikKK3ZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
KQogewogICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJp
Y3MoKTsKICAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRT
aXplKCksIGZvbnRNZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA5YmY0YjRkOTg2NjguLmVmZTEwZTM0NGNlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApA
QCAtMzQsMTMgKzM0LDEzIEBAIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGb250Q2Fz
Y2FkZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEdy
YXBoaWNzVGV4dFJ1bjsKIGNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBTaGFk
b3dEYXRhOwotY2xhc3MgVGV4dFJ1bjsKLSAgICAKKwogY2xhc3MgVGV4dERlY29yYXRpb25QYWlu
dGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cp
IHsgbV9zaGFkb3cgPSB0ZXh0U2hhZG93OyB9CiAgICAgdm9pZCBzZXRTaGFkb3dDb2xvckZpbHRl
cihjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBjb2xvckZpbHRlcikgeyBtX3NoYWRvd0NvbG9yRmls
dGVyID0gY29sb3JGaWx0ZXI7IH0KIAotICAgIHZvaWQgcGFpbnRUZXh0RGVjb3JhdGlvbihjb25z
dCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luKTsKKyAgICB2b2lkIHBhaW50VGV4dERlY29yYXRpb24oY29uc3QgR3JhcGhp
Y3NUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2lu
dCYgYm94T3JpZ2luKTsKIAogICAgIHN0cnVjdCBTdHlsZXMgewogICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVzJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQ
YWludGVyLmNwcAppbmRleCA3NDg1MmE2YjBkMjUuLmRjN2Y1MzNkNTZlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgVGV4dFBh
aW50ZXI6OlRleHRQYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKIH0KIAotdm9p
ZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9tU3RyaW5nJiBlbXBoYXNp
c01hcmssCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRPckVtcGhhc2lzTWFya3MoY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
QXRvbVN0cmluZyYgZW1waGFzaXNNYXJrLAogICAgIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKIHsKICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpOwpA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dE9yRW1waGFzaXNN
YXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1CiAgICAgbV9nbHlwaERp
c3BsYXlMaXN0ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
KiBjb2xvckZpbHRlciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRl
eHRSdW4sIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9y
aWdpbiwKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBHcmFwaGljc1RleHRSdW4mIHRleHRSdW4sIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKICAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBBdG9tU3RyaW5n
JiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwgYm9vbCBzdHJva2VkKQog
ewogICAgIGlmICghc2hhZG93KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBUZXh0UGFpbnRl
cjo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBG
aWx0ZXJPcGUKICAgICB9CiB9CiAKLXZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dEFuZEVtcGhh
c2lzTWFya3NJZk5lZWRlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3Qm
IGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRBbmRF
bXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25z
dCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCiAgICAgY29uc3QgVGV4dFBhaW50
U3R5bGUmIHBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyogc2hhZG93Q29sb3JGaWx0ZXIpCiB7CiAgICAgaWYgKHBhaW50U3R5bGUucGFp
bnRPcmRlciA9PSBQYWludE9yZGVyOjpOb3JtYWwpIHsKQEAgLTE5Niw4ICsxOTYsOCBAQCB2b2lk
IFRleHRQYWludGVyOjpwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4
dFJ1biYgdGV4dFJ1biwgY29ucwogCiAgICAgRmxvYXRQb2ludCBib3hPcmlnaW4gPSBib3hSZWN0
LmxvY2F0aW9uKCk7CiAgICAgdXBkYXRlR3JhcGhpY3NDb250ZXh0KG1fY29udGV4dCwgcGFpbnRT
dHlsZSwgVXNlRW1waGFzaXNNYXJrQ29sb3IpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2Jq
ZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKLSAgICBjb25zdCBUZXh0UnVuJiBlbXBoYXNp
c01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rl
clRleHRSdW4uZ2V0KCkgOiB0ZXh0UnVuOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHcmFw
aGljc1RleHRSdW4+IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bihTdHJpbmdWaWV3
KCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgIGNvbnN0IEdyYXBoaWNzVGV4
dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFj
ZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDogdGV4dFJ1bjsKICAgICBGbG9hdFBvaW50IGVt
cGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94T3Jp
Z2luLngoKSArIGJveFJlY3Qud2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQtPmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkpIDogdGV4dE9yaWdpbjsKICAgICBpZiAobV9jb21iaW5lZFRl
eHQpCiAgICAgICAgIG1fY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24oYm94UmVjdCwgQ2xvY2t3
aXNlKSk7CkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRB
bmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29ucwogICAg
ICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKGJveFJlY3QsIENvdW50ZXJjbG9ja3dp
c2UpKTsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnQoY29uc3QgVGV4dFJ1biYgdGV4dFJ1
biwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2lu
KQordm9pZCBUZXh0UGFpbnRlcjo6cGFpbnQoY29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVu
LCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4p
CiB7CiAgICAgcGFpbnRSYW5nZSh0ZXh0UnVuLCBib3hSZWN0LCB0ZXh0T3JpZ2luLCAwLCB0ZXh0
UnVuLmxlbmd0aCgpKTsKIH0KIAotdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRSYW5nZShjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9p
bnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCit2b2lkIFRleHRQ
YWludGVyOjpwYWludFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
RmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgZW5kKQogewogICAgIEFTU0VSVChtX2ZvbnQpOwogICAgIEFTU0VS
VChzdGFydCA8IGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oCmluZGV4
IGU0NTM0Y2JmYmYxOC4uYjM1ZmYyODUyYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dFBhaW50ZXIuaApAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBGb250Q2FzY2FkZTsKK2NsYXNzIEdyYXBoaWNzVGV4
dFJ1bjsKIGNsYXNzIFJlbmRlckNvbWJpbmVUZXh0OwogY2xhc3MgU2hhZG93RGF0YTsKLWNsYXNz
IFRleHRSdW47CiAKIHN0cnVjdCBUZXh0UGFpbnRTdHlsZTsKIApAQCAtNTgsMTEgKzU4LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzSG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBt
X3RleHRCb3hJc0hvcml6b250YWwgPSBpc0hvcml6b250YWw7IH0KICAgICB2b2lkIHNldEVtcGhh
c2lzTWFyayhjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBmbG9hdCBvZmZzZXQsIGNvbnN0IFJlbmRl
ckNvbWJpbmVUZXh0Kik7CiAKLSAgICB2b2lkIHBhaW50KGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4pOwotICAgIHZv
aWQgcGFpbnRSYW5nZShjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
KTsKKyAgICB2b2lkIHBhaW50KGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVj
dCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbik7CisgICAgdm9pZCBwYWlu
dFJhbmdlKGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYgYm94UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXlvdXRSdW4+Ci0gICAgdm9pZCBzZXRHbHlw
aERpc3BsYXlMaXN0SWZOZWVkZWQoY29uc3QgTGF5b3V0UnVuJiBydW4sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuKQorICAgIHZvaWQgc2V0R2x5cGhEaXNwbGF5
TGlzdElmTmVlZGVkKGNvbnN0IExheW91dFJ1biYgcnVuLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgR3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuKQogICAgIHsKICAgICAgICAgaWYgKCFUZXh0
UGFpbnRlcjo6c2hvdWxkVXNlR2x5cGhEaXNwbGF5TGlzdChwYWludEluZm8pKQogICAgICAgICAg
ICAgVGV4dFBhaW50ZXI6OnJlbW92ZUdseXBoRGlzcGxheUxpc3QocnVuKTsKQEAgLTc3LDExICs3
NywxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlR2x5cGhEaXNwbGF5TGlz
dChjb25zdCBQYWludEluZm8mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHBhaW50VGV4dE9yRW1w
aGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
U3RyaW5nJiBlbXBoYXNpc01hcmssIGZsb2F0IGVtcGhhc2lzTWFya09mZnNldCwKKyAgICB2b2lk
IHBhaW50VGV4dE9yRW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBo
aWNzVGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIGVtcGhhc2lzTWFyaywgZmxvYXQgZW1waGFz
aXNNYXJrT2Zmc2V0LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKLSAgICB2b2lkIHBhaW50VGV4
dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiwg
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLAorICAgIHZvaWQgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqLCBjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IEZsb2F0UmVjdCYg
Ym94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwKICAgICAgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgQXRvbVN0cmluZyYgZW1waGFz
aXNNYXJrLCBmbG9hdCBlbXBoYXNpc01hcmtPZmZzZXQsIGJvb2wgc3Ryb2tlZCk7Ci0gICAgdm9p
ZCBwYWludFRleHRBbmRFbXBoYXNpc01hcmtzSWZOZWVkZWQoY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwKKyAgICB2b2lkIHBhaW50VGV4dEFu
ZEVtcGhhc2lzTWFya3NJZk5lZWRlZChjb25zdCBHcmFwaGljc1RleHRSdW4mLCBjb25zdCBGbG9h
dFJlY3QmIGJveFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsCiAgICAgICAgIGNvbnN0IFRleHRQYWludFN0
eWxlJiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqKTsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAppbmRleCBlYmViZTRmYjZkOTcuLmUxMWM3MTk5NDQ2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0
LmgKQEAgLTU1Myw3ICs1NTMsNyBAQCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRXaWR0aChSZW5k
ZXJUZXh0JiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgogICAgIGlmIChs
YXlvdXQpCiAgICAgICAgIHJldHVybiBGb250Q2FzY2FkZTo6d2lkdGgoKmxheW91dCwgZnJvbSwg
bGVuLCAmZmFsbGJhY2tGb250cyk7CiAKLSAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZyb20sIGxlbiwgc3R5bGUpOworICAgIGF1dG8gcnVuID0g
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgZnJvbSwgbGVuLCBzdHlsZSk7CiAg
ICAgcnVuLnNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCghdGV4dC5jYW5Vc2VTaW1wbGVGb250
Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIWNvbGxhcHNlV2hpdGVTcGFjZSwgc3R5
bGUudGFiU2l6ZSgpKTsKICAgICBydW4uc2V0WFBvcyh4UG9zKTsKQEAgLTU5Nyw3ICs1OTcsNyBA
QCBpbmxpbmUgdm9pZCB0cnlIeXBoZW5hdGluZyhSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgQXRvbQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUgPSB0ZXh0LnN0eWxlKCk7Ci0gICAgVGV4dFJ1biBydW4gPSBSZW5k
ZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFj
ZSwgc3R5bGUpOworICAgIGF1dG8gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
dGV4dCwgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIHN0eWxlKTsKICAgICBydW4uc2V0VGFi
U2l6ZSghY29sbGFwc2VXaGl0ZVNwYWNlLCBzdHlsZS50YWJTaXplKCkpOwogICAgIHJ1bi5zZXRY
UG9zKHhQb3MgKyBsYXN0U3BhY2VXb3JkU3BhY2luZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IGM5MWVkY2M2MzhiNS4u
NDhmNzM4NmQ5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgaW50IFNWR0lubGluZVRleHRCb3g6
Om9mZnNldEZvclBvc2l0aW9uSW5GcmFnbWVudChjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW4KICAgICBmbG9hdCBzY2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7
CiAgICAgQVNTRVJUKHNjYWxpbmdGYWN0b3IpOwogCi0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29u
c3RydWN0VGV4dFJ1bihyZW5kZXJlcigpLnN0eWxlKCksIGZyYWdtZW50KTsKKyAgICBhdXRvIHRl
eHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyKCkuc3R5bGUoKSwgZnJhZ21lbnQpOwog
CiAgICAgLy8gRXZlbnR1YWxseSBoYW5kbGUgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nQW5kR2x5cGhz
Ii4KICAgICAvLyBGSVhNRTogSGFuZGxlIHZlcnRpY2FsIHRleHQuCkBAIC0xMjUsNyArMTI1LDcg
QEAgRmxvYXRSZWN0IFNWR0lubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21l
bnQoY29uc3QgU1ZHVGV4dEZyYWdtZW50JgogICAgIHRleHRPcmlnaW4ubW92ZSgwLCAtc2NhbGVk
Rm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSk7CiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QgeyB0ZXh0T3JpZ2luLCBMYXlvdXRTaXplKDAsIExheW91dFVuaXQoZnJhZ21lbnQuaGVpZ2h0
ICogc2NhbGluZ0ZhY3RvcikpIH07Ci0gICAgVGV4dFJ1biBydW4gPSBjb25zdHJ1Y3RUZXh0UnVu
KHN0eWxlLCBmcmFnbWVudCk7CisgICAgYXV0byBydW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxl
LCBmcmFnbWVudCk7CiAgICAgc2NhbGVkRm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChy
dW4sIHNlbGVjdGlvblJlY3QsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKICAgICBGbG9h
dFJlY3Qgc25hcHBlZFNlbGVjdGlvblJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzV2l0aFdy
aXRpbmdEaXJlY3Rpb24oc2VsZWN0aW9uUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCksIHJ1bi5sdHIoKSk7CiAgICAgaWYgKHNjYWxpbmdGYWN0b3IgPT0gMSkK
QEAgLTM5Myw5ICszOTMsOSBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnJlc3RvcmVHcmFwaGlj
c0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJgogICAgIHJlbGVhc2VQ
YWludGluZ1Jlc291cmNlKGNvbnRleHQsIC8qIHBhdGggKi9udWxscHRyKTsKIH0KIAotVGV4dFJ1
biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkgY29uc3QKK0dyYXBoaWNzVGV4
dFJ1biBTVkdJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkgY29uc3QKIHsKLSAgICBU
ZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoZnJhZ21l
bnQuY2hhcmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpCisgICAgR3JhcGhpY3NUZXh0UnVu
IHJ1bihTdHJpbmdWaWV3KHJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoZnJhZ21lbnQuY2hh
cmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpCiAgICAgICAgICAgICAgICAgLCAwIC8qIHhQ
b3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxvd1RhYnM9dHJ1ZSAqLwogICAgICAgICAgICAgICAg
ICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2YW50IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJl
bGV2YW50IGZvciBTVkcgKi8KICAgICAgICAgICAgICAgICAsIEFsbG93UmlnaHRFeHBhbnNpb24K
QEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvbgogICAgICAgICByZWxl
YXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCAmcGF0aCk7CiB9CiAKLXZvaWQgU1ZHSW5s
aW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVu
ZFBvc2l0aW9uKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
R3JhcGhpY3NUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50
LCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbikKIHsKICAgICBm
bG9hdCBzY2FsaW5nRmFjdG9yID0gcmVuZGVyZXIoKS5zY2FsaW5nRmFjdG9yKCk7CiAgICAgQVNT
RVJUKHNjYWxpbmdGYWN0b3IpOwpAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0CiAgICAgfQogCiAgICAgLy8gRmFzdCBwYXRoIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGlv
biwganVzdCBkcmF3IHRoZSB3aG9sZSBjaHVuayBwYXJ0IHVzaW5nIHRoZSByZWd1bGFyIHN0eWxl
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gY29uc3RydWN0VGV4dFJ1bihzdHlsZSwgZnJhZ21lbnQp
OworICAgIGF1dG8gdGV4dFJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZyYWdtZW50KTsK
ICAgICBpZiAoIWhhc1NlbGVjdGlvbiB8fCBzdGFydFBvc2l0aW9uID49IGVuZFBvc2l0aW9uKSB7
CiAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIHN0eWxlLCB0ZXh0UnVuLCBm
cmFnbWVudCwgMCwgZnJhZ21lbnQubGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCA2OWJkMjU2
M2IzZWYuLjE2MDAzMGQyYzQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBib29sIGlzU1ZHSW5saW5lVGV4dEJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYpIGNvbnN0OworICAgIEdyYXBoaWNzVGV4dFJ1biBjb25z
dHJ1Y3RUZXh0UnVuKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jikg
Y29uc3Q7CiAKICAgICBib29sIGFjcXVpcmVQYWludGluZ1Jlc291cmNlKEdyYXBoaWNzQ29udGV4
dComLCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlJik7CiAgICAgdm9pZCByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0Nv
bnRleHQqJiwgY29uc3QgUGF0aCopOwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNv
cmF0aW9uPiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7CiAgICAgdm9pZCBwYWludERlY29yYXRp
b25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25S
ZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIFRleHRSdW4mLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCB1
bnNpZ25lZCBzdGFydFBvc2l0aW9uLCB1bnNpZ25lZCBlbmRQb3NpdGlvbik7CisgICAgdm9pZCBw
YWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIGVuZFBvc2l0aW9uKTsKICAgICB2b2lkIHBhaW50VGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
JiBzZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rp
b24sIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKIAogICAgIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljcy5jcHAKaW5kZXggMzkwOTFlZjhhZjNkLi44N2U5NmYyMjM5MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIFNWR1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhTVkdUZXh0TWV0cmljczo6
TWV0cmljc1R5cGUpCiB7CiB9CiAKLVNWR1RleHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhSZW5k
ZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVyZXIsIGNvbnN0IFRleHRSdW4mIHJ1bikKK1NWR1Rl
eHRNZXRyaWNzOjpTVkdUZXh0TWV0cmljcyhSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0UmVuZGVy
ZXIsIGNvbnN0IEdyYXBoaWNzVGV4dFJ1biYgcnVuKQogewogICAgIGZsb2F0IHNjYWxpbmdGYWN0
b3IgPSB0ZXh0UmVuZGVyZXIuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFj
dG9yKTsKQEAgLTU5LDExICs1OSwxMSBAQCBTVkdUZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3Mo
UmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dFJlbmRlcmVyLCBjb25zdCBUZXh0UnVuJgogICAgIG1f
bGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKLVRleHRSdW4gU1ZH
VGV4dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwg
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK0dyYXBoaWNzVGV4dFJ1biBTVkdU
ZXh0TWV0cmljczo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0LCB1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSA9IHRleHQuc3R5bGUoKTsKIAotICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXco
dGV4dC50ZXh0KCkpLnN1YnN0cmluZyhwb3NpdGlvbiwgbGVuZ3RoKQorICAgIEdyYXBoaWNzVGV4
dFJ1biBydW4oU3RyaW5nVmlldyh0ZXh0LnRleHQoKSkuc3Vic3RyaW5nKHBvc2l0aW9uLCBsZW5n
dGgpCiAgICAgICAgICAgICAgICAgLCAwIC8qIHhQb3MsIG9ubHkgcmVsZXZhbnQgd2l0aCBhbGxv
d1RhYnM9dHJ1ZSAqLwogICAgICAgICAgICAgICAgICwgMCAvKiBwYWRkaW5nLCBvbmx5IHJlbGV2
YW50IGZvciBqdXN0aWZpZWQgdGV4dCwgbm90IHJlbGV2YW50IGZvciBTVkcgKi8KICAgICAgICAg
ICAgICAgICAsIEFsbG93UmlnaHRFeHBhbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAppbmRleCA4MDk2MjlkMGY2NDMuLmYwOThiMWYzNWU3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaApAQCAt
MjMsOSArMjMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzVGV4
dFJ1bjsKIGNsYXNzIFJlbmRlclNWR0lubGluZVRleHQ7CiBjbGFzcyBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlczsKLWNsYXNzIFRleHRSdW47CiAKIGNsYXNzIFNWR1RleHRNZXRyaWNzIHsKIHB1Ymxp
YzoKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFNWR1RleHRNZXRyaWNzKFJlbmRlclNW
R0lubGluZVRleHQmLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHdpZHRoKTsKIAogICAgIHN0YXRp
YyBTVkdUZXh0TWV0cmljcyBtZWFzdXJlQ2hhcmFjdGVyUmFuZ2UoUmVuZGVyU1ZHSW5saW5lVGV4
dCYsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBUZXh0
UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5lVGV4dCYsIHVuc2lnbmVkIHBvc2l0
aW9uID0gMCwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICBzdGF0aWMgR3JhcGhpY3NUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyU1ZHSW5saW5lVGV4dCYsIHVuc2lnbmVkIHBvc2l0aW9uID0gMCwgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3dpZHRoICYmICFtX2hlaWdodCAmJiAhbV9nbHlwaC5p
c1ZhbGlkICYmIG1fbGVuZ3RoID09IDE7IH0KIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgR2x5cGgmIGdseXBoKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaDsgfQogCiBwcml2
YXRlOgotICAgIFNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lubGluZVRleHQmLCBjb25zdCBUZXh0
UnVuJik7CisgICAgU1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCYsIGNvbnN0IEdy
YXBoaWNzVGV4dFJ1biYpOwogCiAgICAgZmxvYXQgbV93aWR0aDsKICAgICBmbG9hdCBtX2hlaWdo
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
QnVpbGRlci5oCmluZGV4IDRmNzQwMjUyMzlkZC4uMzVhMzQ2YTg3NTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmgKQEAg
LTE5LDggKzE5LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHcmFwaGljc1RleHRS
dW4uaCIKICNpbmNsdWRlICJTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIgotI2luY2x1ZGUgIlRl
eHRSdW4uaCIKICNpbmNsdWRlICJXaWR0aEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lYXN1cmVUZXh0UmVuZGVy
ZXIoUmVuZGVyU1ZHSW5saW5lVGV4dCYsIE1lYXN1cmVUZXh0RGF0YSopOwogCiAgICAgUmVuZGVy
U1ZHSW5saW5lVGV4dCogbV90ZXh0OwotICAgIFRleHRSdW4gbV9ydW47CisgICAgR3JhcGhpY3NU
ZXh0UnVuIG1fcnVuOwogICAgIHVuc2lnbmVkIG1fdGV4dFBvc2l0aW9uOwogICAgIGJvb2wgbV9p
c0NvbXBsZXhUZXh0OwogICAgIFNWR1RleHRNZXRyaWNzIG1fY3VycmVudE1ldHJpY3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJmZDAyNWFiNTk4My4uNzEwNjlhZjRjMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA4LTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZW5hbWUgVGV4dFJ1biB1bmRlciBncmFwaGljcyB0byBHcmFwaGljc1RleHRSdW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTMzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YSk6CisKIDIwMjEtMDgtMTkgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFuIE9iamVj
dElkZW50aWZpZXI8PiBmb3IgdGV4dCBjaGVja2VyIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JI
aWdobGlnaHRWaWV3Lm1tCmluZGV4IGM3YjhhZjY0MjY0OS4uNzkyNDZhZTJmNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGln
aGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9z
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Gb250Q2FzY2FkZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dlb21ldHJ5VXRpbGl0aWVzLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL1RleHRSdW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NUZXh0UnVuLmg+
CiAKIEBpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvckhpZ2hsaWdodFZpZXcKIApAQCAtMzI2LDEz
ICszMjYsMTMgQEAgc3RhdGljIENBTGF5ZXIgKiBjcmVhdGVMYXlvdXRMYWJlbExheWVyKFN0cmlu
ZyBsYWJlbCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCwKICAgICBjb25zdGV4cHIgYXV0byBh
cnJvd1NpemUgPSA2OwogICAgIGZsb2F0IHRleHRIZWlnaHQgPSBmb250LmZvbnRNZXRyaWNzKCku
ZmxvYXRIZWlnaHQoKTsKIAotICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoV2ViQ29y
ZTo6VGV4dFJ1bihsYWJlbCkpOworICAgIGZsb2F0IHRleHRXaWR0aCA9IGZvbnQud2lkdGgoV2Vi
Q29yZTo6R3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7CiAgICAgaWYgKG1heGltdW1XaWR0aCAmJiB0
ZXh0V2lkdGggKyAocGFkZGluZyAqIDIpID4gbWF4aW11bVdpZHRoKSB7CiAgICAgICAgIGxhYmVs
LmFwcGVuZCgiLi4uIl9zKTsKICAgICAgICAgd2hpbGUgKHRleHRXaWR0aCArIChwYWRkaW5nICog
MikgPiBtYXhpbXVtV2lkdGggJiYgbGFiZWwubGVuZ3RoKCkgPj0gNCkgewogICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBmb3VydGggZnJvbSBsYXN0IGNoYXJhY3RlciAodGhlIGNoYXJhY3RlciBi
ZWZvcmUgdGhlIGVsbGlwc2lzKSBhbmQgcmVtZWFzdXJlLgogICAgICAgICAgICAgbGFiZWwucmVt
b3ZlKGxhYmVsLmxlbmd0aCgpIC0gNCk7Ci0gICAgICAgICAgICB0ZXh0V2lkdGggPSBmb250Lndp
ZHRoKFdlYkNvcmU6OlRleHRSdW4obGFiZWwpKTsKKyAgICAgICAgICAgIHRleHRXaWR0aCA9IGZv
bnQud2lkdGgoV2ViQ29yZTo6R3JhcGhpY3NUZXh0UnVuKGxhYmVsKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93aW4vV2ViUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAppbmRleCAyY2EzNTc0MjY3YTYuLmJm
YmMxMjYzYTczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcApAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbAogICAgICAgICAgICAgaXRlbUZvbnRDYXNjYWRl
LnVwZGF0ZShtX3BvcHVwQ2xpZW50LT5mb250U2VsZWN0b3IoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBwb3B1cFdpZHRoID0gc3RkOjptYXg8ZmxvYXQ+KHBvcHVwV2lkdGgsIGNlaWxmKGl0ZW1G
b250Q2FzY2FkZS53aWR0aChUZXh0UnVuKHRleHQpKSkpOworICAgICAgICBwb3B1cFdpZHRoID0g
c3RkOjptYXg8ZmxvYXQ+KHBvcHVwV2lkdGgsIGNlaWxmKGl0ZW1Gb250Q2FzY2FkZS53aWR0aChH
cmFwaGljc1RleHRSdW4odGV4dCkpKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHBvcHVwV2lk
dGggc2hvdWxkIHByb2JhYmx5IHRha2UgaW50byBhY2NvdW50IG1vbml0b3IgY29uc3RyYWludHMg
YXMgaXMgZG9uZSB3aXRoIFdlYlBvcHVwTWVudVByb3h5V2luOjpjYWxjdWxhdGVQb3NpdGlvbkFu
ZFNpemUuCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZv
cm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgUGwKIAogICAg
ICAgICBTdHJpbmcgaXRlbVRleHQgPSBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpbmRleCk7CiAK
LSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1JpZ2h0RXhwYW5z
aW9uLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlKCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwg
MCwgMCwgQWxsb3dSaWdodEV4cGFuc2lvbiwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRl
bVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKIAogICAgICAgICBub3RTZWxlY3Rl
ZEJhY2tpbmdTdG9yZUNvbnRleHQtPnNldEZpbGxDb2xvcihvcHRpb25UZXh0Q29sb3IpOwogICAg
ICAgICBzZWxlY3RlZEJhY2tpbmdTdG9yZUNvbnRleHQtPnNldEZpbGxDb2xvcihhY3RpdmVPcHRp
b25UZXh0Q29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDAxZTFiOGU1Mzhm
OC4uZTE5ZDVhMmEzNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjEtMDgtMjAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbmFtZSBUZXh0UnVuIHVuZGVyIGdyYXBoaWNzIHRvIEdyYXBoaWNzVGV4dFJ1bgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBv
aW50OmZvbnQ6dGV4dENvbG9yOl0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX3dpZHRoV2l0
aEZvbnQ6XSk6CisKIDIwMjEtMDgtMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb2xkIHVudXNlZCBjb2RlIGFuZCBvdXQgb2YgZGF0
ZSBjb21tZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDc4MzI1NjE5YzFhYy4uODYwYjgzNWYxMzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW0KQEAgLTMxLDggKzMxLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NUZXh0UnVuLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1RleHRSdW4u
aD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxzeXMv
cGFyYW0uaD4KICNpbXBvcnQgPHVuaWNvZGUvdWNoYXIuaD4KQEAgLTY5LDcgKzY5LDcgQEAgc3Rh
dGljIGJvb2wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgbGVuZ3RoKQogCiAgICAgaWYgKGNhblVzZUZhc3RSZW5kZXJlcihidWZmZXIuZGF0YSgpLCBs
ZW5ndGgpKSB7CiAgICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0Zm9ybURh
dGEoKF9fYnJpZGdlIENURm9udFJlZilmb250LCBbZm9udCBwb2ludFNpemVdKSk7Ci0gICAgICAg
IFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1
ZmZlci5kYXRhKCkpLCBsZW5ndGgpKTsKKyAgICAgICAgR3JhcGhpY3NUZXh0UnVuIHJ1bihTdHJp
bmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVu
Z3RoKSk7CiAKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBhIGhhbGYtYXNzZWQgYXR0ZW1w
dCB0byBtYXRjaCBBcHBLaXQncyByb3VuZGluZyBydWxlcyBmb3IgZHJhd0F0UG9pbnQuCiAgICAg
ICAgIC8vIElmIHlvdSBjaGFuZ2UgaXQsIGJlIHN1cmUgdG8gdGVzdCBhbGwgdGhlIHRleHQgZHJh
d24gdGhpcyB3YXkgaW4gU2FmYXJpLCBpbmNsdWRpbmcKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0
aWMgYm9vbCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29uc3QgVW5pQ2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBsZW5ndGgpCiAKICAgICBpZiAoY2FuVXNlRmFzdFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpIHsKICAgICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0
YSgoX19icmlkZ2UgQ1RGb250UmVmKWZvbnQsIFtmb250IHBvaW50U2l6ZV0pKTsKLSAgICAgICAg
VGV4dFJ1biBydW4oU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYnVm
ZmVyLmRhdGEoKSksIGxlbmd0aCkpOworICAgICAgICBHcmFwaGljc1RleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5n
dGgpKTsKICAgICAgICAgcmV0dXJuIHdlYkNvcmVGb250LndpZHRoKHJ1bik7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggYWE4ODc4MTIwMTk5Li45YzI1MGE5NWJkMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOC0y
MCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFRl
eHRSdW4gdW5kZXIgZ3JhcGhpY3MgdG8gR3JhcGhpY3NUZXh0UnVuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzMzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZHJhdyk6CisKIDIw
MjEtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bmFtZSBNZWRpYVBsYXllcjo6c2V0VmlzaWJsZSB0byBNZWRpYVBsYXllcjo6c2V0UGFnZUlzVmlz
aWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAppbmRleCA5OGFmZTA1OWY4ZjUuLjkxODhkY2U0NWFiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRTZWxlY3Rvci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHRXaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzVGV4dFJ1bi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFduZERDLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9UZXh0UnVuLmg+CiAjaW5jbHVkZSA8d2luZG93c3guaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC01MzYsMTMgKzUzNiwxMyBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmRyYXcoKQogICAgIC8vIExlZnQgc3RyaW5nCiAgICAgcyA9IHRpbWVU
b1N0cmluZyhjdXJyZW50VGltZSgpKTsKICAgICBpbnQgZm9udEhlaWdodCA9IGZvbnQuZm9udE1l
dHJpY3MoKS5oZWlnaHQoKTsKLSAgICBUZXh0UnVuIGxlZnRUZXh0KHMpOworICAgIEdyYXBoaWNz
VGV4dFJ1biBsZWZ0VGV4dChzKTsKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcih0ZXh0
Q29sb3IpKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGxlZnRUZXh0LCBJbnRQb2ludCh3
aW5kb3dXaWR0aCAvIDIgLSB0aW1lU2xpZGVyV2lkdGggLyAyIC0gbWFyZ2luIC0gZm9udC53aWR0
aChsZWZ0VGV4dCksIHdpbmRvd0hlaWdodCAtIG1hcmdpbiAtIHNsaWRlckhlaWdodCAvIDIgKyBm
b250SGVpZ2h0IC8gNCkpOwogCiAgICAgLy8gUmlnaHQgc3RyaW5nCiAgICAgcyA9IHRpbWVUb1N0
cmluZyhjdXJyZW50VGltZSgpIC0gZHVyYXRpb24oKSk7Ci0gICAgVGV4dFJ1biByaWdodFRleHQo
cyk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHJpZ2h0VGV4dChzKTsKICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcih0ZXh0Q29sb3IpKTsKICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHJp
Z2h0VGV4dCwgSW50UG9pbnQod2luZG93V2lkdGggLyAyICsgdGltZVNsaWRlcldpZHRoIC8gMiAr
IG1hcmdpbiwgd2luZG93SGVpZ2h0IC0gbWFyZ2luIC0gc2xpZGVySGVpZ2h0IC8gMiArIGZvbnRI
ZWlnaHQgLyA0KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggYmNmMDMyOTU1YmUyLi40
MTdmNTkwN2FjNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRF
U1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2YW5jZVdpdGhMZWZ0UnVu
SW5SVEwpCiAKICAgICBVQ2hhciBjaGFyYWN0ZXJzW10gPSB7IDB4NjQ0LCAweDYzNywgMHg2NDEs
IDB4NjI3LCAweDY0YiwgMHgyMCB9OwogICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoID0gV1RG
X0FSUkFZX0xFTkdUSChjaGFyYWN0ZXJzKTsKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nVmll
dyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSk7CisgICAgR3JhcGhpY3NUZXh0UnVuIHRl
eHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSk7CiAgICAgYXV0
byBydW4xID0gQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKHsg
RmxvYXRTaXplKDIxLjg3NSwgMCkgfSwgeyBGbG9hdFBvaW50KCkgfSwgeyA1IH0sIHsgNSB9LCBG
bG9hdFNpemUoKSwgZm9udC5wcmltYXJ5Rm9udCgpLCBjaGFyYWN0ZXJzLCAwLCBjaGFyYWN0ZXJz
TGVuZ3RoLCA1LCA2LCBmYWxzZSk7CiAgICAgYXV0byBydW4yID0gQ29tcGxleFRleHRDb250cm9s
bGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKGFkdmFuY2VzLCBvcmlnaW5zLCB7IDE5MywgMzc3
LCA0NDcsIDQzMSwgNDU4IH0sIHsgNCwgMywgMiwgMSwgMCB9LCBpbml0aWFsQWR2YW5jZSwgZm9u
dC5wcmltYXJ5Rm9udCgpLCBjaGFyYWN0ZXJzLCAwLCBjaGFyYWN0ZXJzTGVuZ3RoLCAwLCA1LCBm
YWxzZSk7CiAgICAgVmVjdG9yPFJlZjxDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0
UnVuPj4gcnVuczsKQEAgLTEwNiw3ICsxMDYsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9s
bGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJblJUTCkKIAogICAgIFVDaGFyIGNoYXJhY3RlcnNbXSA9
IHsgMHg2NDQsIDB4NjM3LCAweDY0MSwgMHg2MjcsIDB4NjRiIH07CiAgICAgc2l6ZV90IGNoYXJh
Y3RlcnNMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4g
dGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKKyAgICBH
cmFwaGljc1RleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNM
ZW5ndGgpKTsKICAgICBhdXRvIHJ1biA9IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRl
eHRSdW46OmNyZWF0ZShhZHZhbmNlcywgb3JpZ2lucywgeyAxOTMsIDM3NywgNDQ3LCA0MzEsIDQ1
OCB9LCB7IDQsIDMsIDIsIDEsIDAgfSwgaW5pdGlhbEFkdmFuY2UsIGZvbnQucHJpbWFyeUZvbnQo
KSwgY2hhcmFjdGVycywgMCwgY2hhcmFjdGVyc0xlbmd0aCwgMCwgNSwgZmFsc2UpOwogICAgIFZl
Y3RvcjxSZWY8Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bj4+IHJ1bnM7CiAg
ICAgcnVucy5hcHBlbmQoV1RGTW92ZShydW4pKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBURVNUX0Yo
Q29tcGxleFRleHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VXaXRoTGVmdFJ1bkluTFRS
KQogCiAgICAgVUNoYXIgY2hhcmFjdGVyc1tdID0geyAweDIwLCAweDYxLCAweDIwZTMgfTsKICAg
ICBzaXplX3QgY2hhcmFjdGVyc0xlbmd0aCA9IFdURl9BUlJBWV9MRU5HVEgoY2hhcmFjdGVycyk7
Ci0gICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgY2hhcmFjdGVyc0xl
bmd0aCkpOworICAgIEdyYXBoaWNzVGV4dFJ1biB0ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVy
cywgY2hhcmFjdGVyc0xlbmd0aCkpOwogICAgIGF1dG8gcnVuMSA9IENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0ZSh7IEZsb2F0U2l6ZShzcGFjZVdpZHRoLCAwKSB9
LCB7IEZsb2F0UG9pbnQoKSB9LCB7IDUgfSwgeyAwIH0sIEZsb2F0U2l6ZSgpLCBmb250LnByaW1h
cnlGb250KCksIGNoYXJhY3RlcnMsIDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDEsIHRydWUpOwog
ICAgIGF1dG8gcnVuMiA9IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmNy
ZWF0ZShhZHZhbmNlcywgb3JpZ2lucywgeyA2OCwgMTQ3MSB9LCB7IDEsIDIgfSwgaW5pdGlhbEFk
dmFuY2UsIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVycywgMCwgY2hhcmFjdGVyc0xlbmd0
aCwgMSwgMywgdHJ1ZSk7CiAgICAgVmVjdG9yPFJlZjxDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNv
bXBsZXhUZXh0UnVuPj4gcnVuczsKQEAgLTE5Myw3ICsxOTMsNyBAQCBURVNUX0YoQ29tcGxleFRl
eHRDb250cm9sbGVyVGVzdCwgSW5pdGlhbEFkdmFuY2VJbkxUUikKIAogICAgIFVDaGFyIGNoYXJh
Y3RlcnNbXSA9IHsgMHg2MSwgMHgyMGUzIH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGgg
PSBXVEZfQVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJp
bmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKICAg
ICBhdXRvIHJ1biA9IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0
ZShhZHZhbmNlcywgb3JpZ2lucywgeyA2OCwgMTQ3MSB9LCB7IDAsIDEgfSwgaW5pdGlhbEFkdmFu
Y2UsIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVycywgMCwgY2hhcmFjdGVyc0xlbmd0aCwg
MCwgMiwgdHJ1ZSk7CiAgICAgVmVjdG9yPFJlZjxDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBs
ZXhUZXh0UnVuPj4gcnVuczsKICAgICBydW5zLmFwcGVuZChXVEZNb3ZlKHJ1bikpOwpAQCAtMjI3
LDcgKzIyNyw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBJbml0aWFsQWR2
YW5jZUluUlRMTm9PcmlnaW5zKQogCiAgICAgVUNoYXIgY2hhcmFjdGVyc1tdID0geyAweDYzMywg
MHgyMCwgMHg2MjcsIDB4NjUwIH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGggPSBXVEZf
QVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3
KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4
dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKICAgICBhdXRv
IHJ1bjEgPSBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGUoeyBG
bG9hdFNpemUoLTQuMzM5OTYzODMzNjM0NzIsIC0xMi4zNjg4OTY5MjU4NTkpLCBGbG9hdFNpemUo
MTQuMDM5NzgzMDAxODA4MywgMCkgfSwgeyB9LCB7IDg4NCwgMjQwIH0sIHsgMywgMiB9LCBpbml0
aWFsQWR2YW5jZSwgZm9udC5wcmltYXJ5Rm9udCgpLCBjaGFyYWN0ZXJzLCAwLCBjaGFyYWN0ZXJz
TGVuZ3RoLCAyLCA0LCBmYWxzZSk7CiAgICAgYXV0byBydW4yID0gQ29tcGxleFRleHRDb250cm9s
bGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKHsgRmxvYXRTaXplKDEyLjAsIDApIH0sIHsgfSwg
eyAzIH0sIHsgMSB9LCBGbG9hdFNpemUoKSwgZm9udC5wcmltYXJ5Rm9udCgpLCBjaGFyYWN0ZXJz
LCAwLCBjaGFyYWN0ZXJzTGVuZ3RoLCAxLCAyLCBmYWxzZSk7CiAgICAgYXV0byBydW4zID0gQ29t
cGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKHsgRmxvYXRTaXplKDQz
LjgxMTkzNDkwMDU0MjUsIDApIH0sIHsgfSwgeyAyNzYgfSwgeyAwIH0sIEZsb2F0U2l6ZSgpLCBm
b250LnByaW1hcnlGb250KCksIGNoYXJhY3RlcnMsIDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDEs
IGZhbHNlKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgTGVmdEV4cGFuc2lvbikKIAogICAgIFVDaGFyIGNoYXJhY3RlcnNbXSA9IHsgJ2EnIH07
CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGNoYXJhY3Rl
cnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3Rl
cnNMZW5ndGgpLCAwLCAxMDAsIEZvcmNlTGVmdEV4cGFuc2lvbik7CisgICAgR3JhcGhpY3NUZXh0
UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSwgMCwg
MTAwLCBGb3JjZUxlZnRFeHBhbnNpb24pOwogICAgIGF1dG8gcnVuID0gQ29tcGxleFRleHRDb250
cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKHsgRmxvYXRTaXplKDI0LCAwKSB9LCB7IH0s
IHsgMTYgfSwgeyAwIH0sIEZsb2F0U2l6ZSgpLCBmb250LnByaW1hcnlGb250KCksIGNoYXJhY3Rl
cnMsIDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDEsIHRydWUpOwogICAgIFZlY3RvcjxSZWY8Q29t
cGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bj4+IHJ1bnM7CiAgICAgcnVucy5hcHBl
bmQoV1RGTW92ZShydW4pKTsKQEAgLTMwMSw3ICszMDEsNyBAQCBURVNUX0YoQ29tcGxleFRleHRD
b250cm9sbGVyVGVzdCwgVmVydGljYWxBZHZhbmNlcykKIAogICAgIFVDaGFyIGNoYXJhY3RlcnNb
XSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGgg
PSBXVEZfQVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJp
bmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKKyAgICBHcmFwaGljc1RleHRS
dW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpKTsKICAg
ICBhdXRvIHJ1bjEgPSBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVh
dGUoeyBGbG9hdFNpemUoMCwgMSksIEZsb2F0U2l6ZSgwLCAyKSB9LCB7IEZsb2F0UG9pbnQoMCwg
NCksIEZsb2F0UG9pbnQoMCwgOCkgfSwgeyAxNiwgMTcgfSwgeyAwLCAxIH0sIEZsb2F0U2l6ZSgw
LCAxNiksIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVycywgMCwgY2hhcmFjdGVyc0xlbmd0
aCwgMCwgMiwgdHJ1ZSk7CiAgICAgYXV0byBydW4yID0gQ29tcGxleFRleHRDb250cm9sbGVyOjpD
b21wbGV4VGV4dFJ1bjo6Y3JlYXRlKHsgRmxvYXRTaXplKDAsIDMyKSwgRmxvYXRTaXplKDAsIDY0
KSB9LCB7IEZsb2F0UG9pbnQoMCwgMTI4KSwgRmxvYXRQb2ludCgwLCAyNTYpIH0sIHsgMTgsIDE5
IH0sIHsgMiwgMyB9LCBGbG9hdFNpemUoMCwgNTEyKSwgZm9udC5wcmltYXJ5Rm9udCgpLCBjaGFy
YWN0ZXJzLCAwLCBjaGFyYWN0ZXJzTGVuZ3RoLCAyLCA0LCB0cnVlKTsKICAgICBWZWN0b3I8UmVm
PENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW4+PiBydW5zOwpAQCAtMzUwLDcg
KzM1MCw3IEBAIFRFU1RfRihDb21wbGV4VGV4dENvbnRyb2xsZXJUZXN0LCBUb3RhbFdpZHRoV2l0
aEp1c3RpZmljYXRpb24pCiAKICAgICBVQ2hhciBjaGFyYWN0ZXJzW10gPSB7IDB4NjQ0LCAnICcs
IDB4NjQ0LCAnICcsIDB4NjQ0IH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGggPSBXVEZf
QVJSQVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3
KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAxNCwgRGVmYXVsdEV4cGFuc2lvbiwg
VGV4dERpcmVjdGlvbjo6UlRMKTsKKyAgICBHcmFwaGljc1RleHRSdW4gdGV4dFJ1bihTdHJpbmdW
aWV3KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAxNCwgRGVmYXVsdEV4cGFuc2lv
biwgVGV4dERpcmVjdGlvbjo6UlRMKTsKICAgICBhdXRvIHJ1biA9IENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0ZShhZHZhbmNlcywgb3JpZ2lucywgeyA1LCA2LCA3
LCA4LCA5IH0sIHsgNCwgMywgMiwgMSwgMCB9LCBpbml0aWFsQWR2YW5jZSwgZm9udC5wcmltYXJ5
Rm9udCgpLCBjaGFyYWN0ZXJzLCAwLCBjaGFyYWN0ZXJzTGVuZ3RoLCAwLCA1LCBmYWxzZSk7CiAg
ICAgVmVjdG9yPFJlZjxDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuPj4gcnVu
czsKICAgICBydW5zLmFwcGVuZChXVEZNb3ZlKHJ1bikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0
c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKaW5kZXggZTFiNTBiZGU3NTg5Li4xOTVhNjhmMDg0
YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1
cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBU
ZXh0SW5CaWZ1cmNhdGVkQ29udGV4dCkKICAgICBmb250LnVwZGF0ZSgpOwogCiAgICAgU3RyaW5n
IHN0cmluZyA9ICJIZWxsbyEiOwotICAgIFRleHRSdW4gcnVuKHN0cmluZyk7CisgICAgR3JhcGhp
Y3NUZXh0UnVuIHJ1bihzdHJpbmcpOwogICAgIGN0eC5kcmF3VGV4dChmb250LCBydW4sIHsgfSk7
CiAKICAgICBhdXRvIHJ1blRlc3QgPSBbJl0gKEluTWVtb3J5RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KSB7Cg==
</data>
<flag name="commit-queue"
          id="458932"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>