<?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>237776</bug_id>
          
          <creation_ts>2022-03-11 05:31:25 -0800</creation_ts>
          <short_desc>[web-animations] refactor discrete FontCascadeDescription to use dedicated animation wrappers</short_desc>
          <delta_ts>2022-03-11 06:55:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237777</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1850453</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-11 05:31:25 -0800</bug_when>
    <thetext>[web-animations] refactor discrete FontCascadeDescription to use dedicated animation wrappers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850455</commentid>
    <comment_count>1</comment_count>
      <attachid>454473</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-11 05:34:01 -0800</bug_when>
    <thetext>Created attachment 454473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850459</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-11 05:45:39 -0800</bug_when>
    <thetext>Committed r291156 (248316@trunk): &lt;https://commits.webkit.org/248316@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850461</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-11 05:46:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/90156468&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454473</attachid>
            <date>2022-03-11 05:34:01 -0800</date>
            <delta_ts>2022-03-11 06:55:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237776-20220311143359.patch</filename>
            <type>text/plain</type>
            <size>25842</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBmYTNiN2RmNDAwNWFm
OTdiNmE1YWYxZGY2OGRlOThiODlhOTE0OC4uYjBlMWU2MTFjZWVmYjEzZjM1Y2I3ZTlmYjFhMzVj
Mjc1M2IxNzY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAzLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFt3ZWItYW5pbWF0aW9u
c10gcmVmYWN0b3IgZGlzY3JldGUgRm9udENhc2NhZGVEZXNjcmlwdGlvbiB0byB1c2UgZGVkaWNh
dGVkIGFuaW1hdGlvbiB3cmFwcGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgYWRkZWQgZ2V0dGVycyBhbmQgc2V0dGVycyBvbiBSZW5kZXJTdHls
ZSBmb3IgcHJvcGVydGllcyBleHBvc2VkIG9uIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24KKyAgICAg
ICAgc29sZWx5IGZvciB0aGUgcHVycG9zZSBvZiBhbmltYXRpb24gc3VwcG9ydC4gSW5zdGVhZCwg
d2UgYWRkIGEgY291cGxlIG9mIGRlZGljYXRlZCBhbmltYXRpb24KKyAgICAgICAgd3JhcHBlciB0
aGF0IHJlbW92ZXMgdGhlIG1ldGhvZHMgZnJvbSBSZW5kZXJTdHlsZSBhbmQgZG8gYWxsIHRoZSB3
b3JrIGluCisgICAgICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcC4KKworICAgICAgICBUaGUg
YmFzZSBjbGFzcyBEaXNjcmV0ZUZvbnREZXNjcmlwdGlvbldyYXBwZXIgYW5kIGlzIHVzZWQgZm9y
IENTUyBwcm9wZXJ0aWVzIGJhY2tlZCBieSBzZXZlcmFsCisgICAgICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gbWV0aG9kcy4KKworICAgICAgICBUaGUgc3ViY2xhc3MgRGlzY3JldGVGb250RGVz
Y3JpcHRpb25UeXBlZFdyYXBwZXIgaXMgdXNlZCBmb3IgQ1NTIHByb3BlcnRpZXMgYmFja2VkIGJ5
IGEgc2luZ2xlCisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JwdGlvbiBtZXRob2QgZGVhbGluZyB3
aXRoIGEgc2ltcGxlIHR5cGUuCisKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzY3JldGVGb250RGVzY3JpcHRpb25XcmFw
cGVyOjpEaXNjcmV0ZUZvbnREZXNjcmlwdGlvbldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzY3JldGVGb250RGVzY3JpcHRpb25XcmFwcGVyOjpwcm9wZXJ0aWVzSW5Gb250RGVzY3JpcHRp
b25BcmVFcXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNjcmV0ZUZvbnREZXNjcmlw
dGlvbldyYXBwZXI6OnNldFByb3BlcnRpZXNJbkZvbnREZXNjcmlwdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNjcmV0ZUZvbnREZXNjcmlwdGlvblR5cGVkV3JhcHBlcjo6RGlzY3Jl
dGVGb250RGVzY3JpcHRpb25UeXBlZFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzY3Jl
dGVGb250RGVzY3JpcHRpb25UeXBlZFdyYXBwZXI6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRp
b25XcmFwcGVyTWFwKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZvbnRQYWxldHRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250S2VybmluZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Rm9udEZlYXR1cmVTZXR0aW5ncyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Rm9udEZhbWlsaWVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250U3ludGhlc2lzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRGb250VmFyaWFudEFs
dGVybmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEZv
bnRWYXJpYW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OnNldEZvbnRWYXJpYW50Q2Fwcyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udFBh
bGV0dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmZvbnRLZXJuaW5n
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpmb250RmVh
dHVyZVNldHRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpmb250RmFtaWxpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmZvbnRTeW50aGVzaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmZvbnRWYXJpYW50QWx0ZXJuYXRlcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udFZhcmlhbnRQb3NpdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Zm9udFZhcmlhbnRDYXBz
IGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMi0wMy0xMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1hdGlvbnNdIHJlZmFjdG9yIGRpc2NyZXRl
IFNWRyBwcm9wZXJ0aWVzIHRvIHVzZSBhIGRlZGljYXRlZCBhbmltYXRpb24gd3JhcHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5k
ZXggM2RhOGE4MWQ4OWU4OTlkYjY0MTJjMWUzN2YxOWYxZDk1Y2NmZmQ0My4uMDJhOTlmZTFmYmRj
MmJkZmNkZWFlZmU4ZmM4MWYyODEzZmRlODI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0yNTI3LDI2ICsyNTI3LDM1IEBA
IHByaXZhdGU6CiAgICAgfQogfTsKIAotY2xhc3MgRm9udEZhbWlseVdyYXBwZXIgZmluYWwgOiBw
dWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CitjbGFzcyBEaXNjcmV0ZUZvbnRE
ZXNjcmlwdGlvbldyYXBwZXIgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRm9udEZhbWlseVdy
YXBwZXIoKQotICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UoQ1NTUHJvcGVy
dHlGb250RmFtaWx5KQorICAgIERpc2NyZXRlRm9udERlc2NyaXB0aW9uV3JhcHBlcihDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5KQorICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2Uo
cHJvcGVydHkpCiAgICAgewogICAgIH0KIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBw
cm9wZXJ0aWVzSW5Gb250RGVzY3JpcHRpb25BcmVFcXVhbChjb25zdCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnRpZXNJbkZvbnREZXNjcmlwdGlvbihj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpIGNv
bnN0IHsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENvbXBvc2l0ZU9wZXJhdGlvbikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0
eWxlJiBhLCBjb25zdCBSZW5kZXJTdHlsZSYgYikgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhLmZvbnRGYW1pbGllcygpID09IGIuZm9udEZhbWlsaWVzKCk7CisgICAgICAg
IHJldHVybiBwcm9wZXJ0aWVzSW5Gb250RGVzY3JpcHRpb25BcmVFcXVhbChhLmZvbnREZXNjcmlw
dGlvbigpLCBiLmZvbnREZXNjcmlwdGlvbigpKTsKICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJl
bmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJl
bmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoIWNvbnRleHQucHJvZ3Jlc3Mg
fHwgY29udGV4dC5wcm9ncmVzcyA9PSAxLjApOwotICAgICAgICBkZXN0aW5hdGlvbi5zZXRGb250
RmFtaWxpZXMoKGNvbnRleHQucHJvZ3Jlc3MgPyB0byA6IGZyb20pLmZvbnRGYW1pbGllcygpKTsK
KyAgICAgICAgRm9udFNlbGVjdG9yKiBjdXJyZW50Rm9udFNlbGVjdG9yID0gZGVzdGluYXRpb24u
Zm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbkRl
c2NyaXB0aW9uID0gZGVzdGluYXRpb24uZm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIGF1dG8m
IHNvdXJjZURlc2NyaXB0aW9uID0gKGNvbnRleHQucHJvZ3Jlc3MgPyB0byA6IGZyb20pLmZvbnRE
ZXNjcmlwdGlvbigpOworICAgICAgICBzZXRQcm9wZXJ0aWVzSW5Gb250RGVzY3JpcHRpb24oc291
cmNlRGVzY3JpcHRpb24sIGRlc3RpbmF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICBkZXN0aW5h
dGlvbi5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZXN0aW5hdGlvbkRlc2NyaXB0aW9uKSk7
CisgICAgICAgIGRlc3RpbmF0aW9uLmZvbnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2Vs
ZWN0b3IpOwogICAgIH0KIAogI2lmICFMT0dfRElTQUJMRUQKQEAgLTI1NTYsNiArMjU2NSw1NyBA
QCBwcml2YXRlOgogI2VuZGlmCiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIERp
c2NyZXRlRm9udERlc2NyaXB0aW9uVHlwZWRXcmFwcGVyIDogcHVibGljIERpc2NyZXRlRm9udERl
c2NyaXB0aW9uV3JhcHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgRGlzY3JldGVGb250RGVzY3JpcHRpb25UeXBlZFdyYXBwZXIoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgVCAoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6KmdldHRlcikoKSBjb25zdCwgdm9p
ZCAoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6KnNldHRlcikoVCkpCisgICAgICAgIDogRGlzY3Jl
dGVGb250RGVzY3JpcHRpb25XcmFwcGVyKHByb3BlcnR5KQorICAgICAgICAsIG1fZ2V0dGVyKGdl
dHRlcikKKyAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBib29sIHByb3BlcnRpZXNJbkZvbnREZXNjcmlwdGlvbkFyZUVxdWFsKGNvbnN0IEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24mIGEsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGIp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy0+dmFsdWUoYSkgPT0g
dGhpcy0+dmFsdWUoYik7CisgICAgfQorCisgICAgdm9pZCBzZXRQcm9wZXJ0aWVzSW5Gb250RGVz
Y3JpcHRpb24oY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgc291cmNlLCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJiBkZXN0aW5hdGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IChkZXN0aW5hdGlvbi4qdGhpcy0+bV9zZXR0ZXIpKHRoaXMtPnZhbHVlKHNvdXJjZSkpOworICAg
IH0KKworICAgIFQgdmFsdWUoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKGRlc2NyaXB0aW9uLip0aGlzLT5tX2dl
dHRlcikoKTsKKyAgICB9CisKKyAgICBUIChGb250Q2FzY2FkZURlc2NyaXB0aW9uOjoqbV9nZXR0
ZXIpKCkgY29uc3Q7CisgICAgdm9pZCAoRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Km1fc2V0dGVy
KShUKTsKK307CisKK2NsYXNzIEZvbnRGYW1pbHlXcmFwcGVyIGZpbmFsIDogcHVibGljIERpc2Ny
ZXRlRm9udERlc2NyaXB0aW9uV3JhcHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgRm9udEZhbWlseVdyYXBwZXIoKQorICAgICAgICA6IERpc2NyZXRlRm9u
dERlc2NyaXB0aW9uV3JhcHBlcihDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICBib29sIHByb3BlcnRpZXNJbkZvbnREZXNjcmlwdGlvbkFyZUVxdWFs
KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGEsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIGIpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gYS5mYW1pbGll
cygpID09IGIuZmFtaWxpZXMoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFByb3BlcnRpZXNJbkZv
bnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBzb3VyY2UsIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mIGRlc3RpbmF0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgZGVzdGluYXRpb24uc2V0RmFtaWxpZXMoc291cmNlLmZhbWlsaWVzKCkpOworICAgIH0K
K307CisKIGNsYXNzIENvdW50ZXJXcmFwcGVyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpA
QCAtMjYzNCw4OCArMjY5NCw3NCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotY2xhc3MgRm9udFZh
cmlhbnRFYXN0QXNpYW5XcmFwcGVyIGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3Jh
cHBlckJhc2UgeworY2xhc3MgRm9udEZlYXR1cmVTZXR0aW5nc1dyYXBwZXIgZmluYWwgOiBwdWJs
aWMgRGlzY3JldGVGb250RGVzY3JpcHRpb25XcmFwcGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBGb250VmFyaWFudEVhc3RBc2lhbldyYXBwZXIoKQotICAg
ICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UoQ1NTUHJvcGVydHlGb250VmFyaWFu
dEVhc3RBc2lhbikKKyAgICBGb250RmVhdHVyZVNldHRpbmdzV3JhcHBlcigpCisgICAgICAgIDog
RGlzY3JldGVGb250RGVzY3JpcHRpb25XcmFwcGVyKENTU1Byb3BlcnR5Rm9udEZlYXR1cmVTZXR0
aW5ncykKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUo
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENvbXBvc2l0ZU9wZXJhdGlv
bikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHByb3BlcnRpZXNJ
bkZvbnREZXNjcmlwdGlvbkFyZUVxdWFsKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGEs
IGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGIpIGNvbnN0IG92ZXJyaWRlCisgICAgewor
ICAgICAgICByZXR1cm4gYS5mZWF0dXJlU2V0dGluZ3MoKSA9PSBiLmZlYXR1cmVTZXR0aW5ncygp
OworICAgIH0KIAotICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlJiBhLCBjb25zdCBS
ZW5kZXJTdHlsZSYgYikgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIHNldFByb3BlcnRpZXNJbkZv
bnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBzb3VyY2UsIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mIGRlc3RpbmF0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgYXV0byYgYUZvbnREZXNjcmlwdGlvbiA9IGEuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgIGF1dG8mIGJGb250RGVzY3JpcHRpb24gPSBiLmZvbnREZXNjcmlwdGlvbigpOwotICAgICAg
ICByZXR1cm4gYUZvbnREZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgpID09IGJG
b250RGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKQotICAgICAgICAgICAgJiYg
YUZvbnREZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSA9PSBiRm9udERlc2NyaXB0
aW9uLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgpCi0gICAgICAgICAgICAmJiBhRm9udERlc2NyaXB0
aW9uLnZhcmlhbnRFYXN0QXNpYW5SdWJ5KCkgPT0gYkZvbnREZXNjcmlwdGlvbi52YXJpYW50RWFz
dEFzaWFuUnVieSgpOworICAgICAgICBkZXN0aW5hdGlvbi5zZXRGZWF0dXJlU2V0dGluZ3MoRm9u
dEZlYXR1cmVTZXR0aW5ncyhzb3VyY2UuZmVhdHVyZVNldHRpbmdzKCkpKTsKICAgICB9Cit9Owog
Ci0gICAgdm9pZCBibGVuZChSZW5kZXJTdHlsZSYgZGVzdGluYXRpb24sIGNvbnN0IFJlbmRlclN0
eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRp
bmdDb250ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorY2xhc3MgRm9udFZhcmlhbnRFYXN0
QXNpYW5XcmFwcGVyIGZpbmFsIDogcHVibGljIERpc2NyZXRlRm9udERlc2NyaXB0aW9uV3JhcHBl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRm9udFZhcmlh
bnRFYXN0QXNpYW5XcmFwcGVyKCkKKyAgICAgICAgOiBEaXNjcmV0ZUZvbnREZXNjcmlwdGlvbldy
YXBwZXIoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lhbikKICAgICB7Ci0gICAgICAgIEFT
U0VSVCghY29udGV4dC5wcm9ncmVzcyB8fCBjb250ZXh0LnByb2dyZXNzID09IDEuMCk7Ci0gICAg
ICAgIGF1dG8mIHNvdXJjZUZvbnREZXNjcmlwdGlvbiA9IChjb250ZXh0LnByb2dyZXNzID8gdG8g
OiBmcm9tKS5mb250RGVzY3JpcHRpb24oKTsKKyAgICB9CiAKLSAgICAgICAgRm9udFNlbGVjdG9y
KiBjdXJyZW50Rm9udFNlbGVjdG9yID0gZGVzdGluYXRpb24uZm9udENhc2NhZGUoKS5mb250U2Vs
ZWN0b3IoKTsKLSAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IGRlc3RpbmF0aW9uLmZvbnREZXNj
cmlwdGlvbigpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuVmFyaWFu
dChzb3VyY2VGb250RGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSk7Ci0gICAg
ICAgIGRlc2NyaXB0aW9uLnNldFZhcmlhbnRFYXN0QXNpYW5XaWR0aChzb3VyY2VGb250RGVzY3Jp
cHRpb24udmFyaWFudEVhc3RBc2lhbldpZHRoKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRW
YXJpYW50RWFzdEFzaWFuUnVieShzb3VyY2VGb250RGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lh
blJ1YnkoKSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3Zl
KGRlc2NyaXB0aW9uKSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uLmZvbnRDYXNjYWRlKCkudXBkYXRl
KGN1cnJlbnRGb250U2VsZWN0b3IpOworcHJpdmF0ZToKKyAgICBib29sIHByb3BlcnRpZXNJbkZv
bnREZXNjcmlwdGlvbkFyZUVxdWFsKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGEsIGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGIpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAg
ICAgICByZXR1cm4gYS52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgpID09IGIudmFyaWFudEVhc3RB
c2lhblZhcmlhbnQoKQorICAgICAgICAgICAgJiYgYS52YXJpYW50RWFzdEFzaWFuV2lkdGgoKSA9
PSBiLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgpCisgICAgICAgICAgICAmJiBhLnZhcmlhbnRFYXN0
QXNpYW5SdWJ5KCkgPT0gYi52YXJpYW50RWFzdEFzaWFuUnVieSgpOwogICAgIH0KIAotI2lmICFM
T0dfRElTQUJMRUQKLSAgICB2b2lkIGxvZ0JsZW5kKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB2b2lkIHNldFByb3BlcnRpZXNJbkZvbnREZXNjcmlwdGlvbihjb25zdCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJiBzb3VyY2UsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc3RpbmF0aW9u
KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgZGVzdGluYXRpb24uc2V0VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQoc291cmNlLnZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KCkpOworICAgICAg
ICBkZXN0aW5hdGlvbi5zZXRWYXJpYW50RWFzdEFzaWFuV2lkdGgoc291cmNlLnZhcmlhbnRFYXN0
QXNpYW5XaWR0aCgpKTsKKyAgICAgICAgZGVzdGluYXRpb24uc2V0VmFyaWFudEVhc3RBc2lhblJ1
Ynkoc291cmNlLnZhcmlhbnRFYXN0QXNpYW5SdWJ5KCkpOwogICAgIH0KLSNlbmRpZgogfTsKIAot
Y2xhc3MgRm9udFZhcmlhbnRMaWdhdHVyZXNXcmFwcGVyIGZpbmFsIDogcHVibGljIEFuaW1hdGlv
blByb3BlcnR5V3JhcHBlckJhc2UgeworY2xhc3MgRm9udFZhcmlhbnRMaWdhdHVyZXNXcmFwcGVy
IGZpbmFsIDogcHVibGljIERpc2NyZXRlRm9udERlc2NyaXB0aW9uV3JhcHBlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRm9udFZhcmlhbnRMaWdhdHVyZXNX
cmFwcGVyKCkKLSAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpCisgICAgICAgIDogRGlzY3JldGVGb250RGVzY3JpcHRp
b25XcmFwcGVyKENTU1Byb3BlcnR5Rm9udFZhcmlhbnRMaWdhdHVyZXMpCiAgICAgewogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBib29sIGNhbkludGVycG9sYXRlKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSYgYSwg
Y29uc3QgUmVuZGVyU3R5bGUmIGIpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBwcm9wZXJ0aWVz
SW5Gb250RGVzY3JpcHRpb25BcmVFcXVhbChjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBh
LCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBiKSBjb25zdCBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgYXV0byYgYUZvbnREZXNjcmlwdGlvbiA9IGEuZm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgIGF1dG8mIGJGb250RGVzY3JpcHRpb24gPSBiLmZvbnREZXNjcmlwdGlvbigpOwotICAg
ICAgICByZXR1cm4gYUZvbnREZXNjcmlwdGlvbi52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCkgPT0g
YkZvbnREZXNjcmlwdGlvbi52YXJpYW50Q29tbW9uTGlnYXR1cmVzKCkKLSAgICAgICAgICAgICYm
IGFGb250RGVzY3JpcHRpb24udmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoKSA9PSBiRm9u
dERlc2NyaXB0aW9uLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkKLSAgICAgICAgICAg
ICYmIGFGb250RGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSA9PSBiRm9u
dERlc2NyaXB0aW9uLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkKLSAgICAgICAgICAgICYm
IGFGb250RGVzY3JpcHRpb24udmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkgPT0gYkZvbnRE
ZXNjcmlwdGlvbi52YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMoKTsKKyAgICAgICAgcmV0dXJu
IGEudmFyaWFudENvbW1vbkxpZ2F0dXJlcygpID09IGIudmFyaWFudENvbW1vbkxpZ2F0dXJlcygp
CisgICAgICAgICAgICAmJiBhLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKCkgPT0gYi52
YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcygpCisgICAgICAgICAgICAmJiBhLnZhcmlhbnRI
aXN0b3JpY2FsTGlnYXR1cmVzKCkgPT0gYi52YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcygpCisg
ICAgICAgICAgICAmJiBhLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcygpID09IGIudmFyaWFu
dENvbnRleHR1YWxBbHRlcm5hdGVzKCk7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZChSZW5kZXJT
dHlsZSYgZGVzdGluYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJT
dHlsZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25z
dCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFjb250ZXh0LnByb2dyZXNzIHx8IGNv
bnRleHQucHJvZ3Jlc3MgPT0gMS4wKTsKLSAgICAgICAgYXV0byYgc291cmNlRm9udERlc2NyaXB0
aW9uID0gKGNvbnRleHQucHJvZ3Jlc3MgPyB0byA6IGZyb20pLmZvbnREZXNjcmlwdGlvbigpOwot
Ci0gICAgICAgIEZvbnRTZWxlY3RvciogY3VycmVudEZvbnRTZWxlY3RvciA9IGRlc3RpbmF0aW9u
LmZvbnRDYXNjYWRlKCkuZm9udFNlbGVjdG9yKCk7Ci0gICAgICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBkZXN0aW5hdGlvbi5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0
VmFyaWFudENvbW1vbkxpZ2F0dXJlcyhzb3VyY2VGb250RGVzY3JpcHRpb24udmFyaWFudENvbW1v
bkxpZ2F0dXJlcygpKTsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0VmFyaWFudERpc2NyZXRpb25h
cnlMaWdhdHVyZXMoc291cmNlRm9udERlc2NyaXB0aW9uLnZhcmlhbnREaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50SGlzdG9yaWNhbExpZ2F0
dXJlcyhzb3VyY2VGb250RGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSk7
Ci0gICAgICAgIGRlc2NyaXB0aW9uLnNldFZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcyhzb3Vy
Y2VGb250RGVzY3JpcHRpb24udmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzKCkpOwotICAgICAg
ICBkZXN0aW5hdGlvbi5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZXNjcmlwdGlvbikpOwot
ICAgICAgICBkZXN0aW5hdGlvbi5mb250Q2FzY2FkZSgpLnVwZGF0ZShjdXJyZW50Rm9udFNlbGVj
dG9yKTsKLSAgICB9Ci0KLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgdm9pZCBsb2dCbGVuZChjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBk
b3VibGUpIGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBzZXRQcm9wZXJ0aWVzSW5Gb250RGVzY3Jp
cHRpb24oY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgc291cmNlLCBGb250Q2FzY2FkZURl
c2NyaXB0aW9uJiBkZXN0aW5hdGlvbikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGRl
c3RpbmF0aW9uLnNldFZhcmlhbnRDb21tb25MaWdhdHVyZXMoc291cmNlLnZhcmlhbnRDb21tb25M
aWdhdHVyZXMoKSk7CisgICAgICAgIGRlc3RpbmF0aW9uLnNldFZhcmlhbnREaXNjcmV0aW9uYXJ5
TGlnYXR1cmVzKHNvdXJjZS52YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcygpKTsKKyAgICAg
ICAgZGVzdGluYXRpb24uc2V0VmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoc291cmNlLnZhcmlh
bnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpOworICAgICAgICBkZXN0aW5hdGlvbi5zZXRWYXJpYW50
Q29udGV4dHVhbEFsdGVybmF0ZXMoc291cmNlLnZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcygp
KTsKICAgICB9Ci0jZW5kaWYKIH07CiAKIGNsYXNzIEdyaWRUZW1wbGF0ZUFyZWFzV3JhcHBlciBm
aW5hbCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKQEAgLTI3NTgsNDkg
KzI4MDQsMzIgQEAgcHVibGljOgogICAgIH0KIH07CiAKLWNsYXNzIEZvbnRWYXJpYW50TnVtZXJp
Y1dyYXBwZXIgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7Citj
bGFzcyBGb250VmFyaWFudE51bWVyaWNXcmFwcGVyIGZpbmFsIDogcHVibGljIERpc2NyZXRlRm9u
dERlc2NyaXB0aW9uV3JhcHBlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRm9udFZhcmlhbnROdW1lcmljV3JhcHBlcigpCi0gICAgICAgIDogQW5pbWF0aW9u
UHJvcGVydHlXcmFwcGVyQmFzZShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJpYykKKyAgICAg
ICAgOiBEaXNjcmV0ZUZvbnREZXNjcmlwdGlvbldyYXBwZXIoQ1NTUHJvcGVydHlGb250VmFyaWFu
dE51bWVyaWMpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIGNhbkludGVycG9s
YXRlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBDb21wb3NpdGVPcGVy
YXRpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBib29sIGVxdWFs
cyhjb25zdCBSZW5kZXJTdHlsZSYgYSwgY29uc3QgUmVuZGVyU3R5bGUmIGIpIGNvbnN0IG92ZXJy
aWRlCisgICAgYm9vbCBwcm9wZXJ0aWVzSW5Gb250RGVzY3JpcHRpb25BcmVFcXVhbChjb25zdCBG
b250Q2FzY2FkZURlc2NyaXB0aW9uJiBhLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBi
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgYXV0byYgYUZvbnREZXNjcmlwdGlvbiA9
IGEuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGF1dG8mIGJGb250RGVzY3JpcHRpb24gPSBi
LmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICByZXR1cm4gYUZvbnREZXNjcmlwdGlvbi52YXJp
YW50TnVtZXJpY0ZpZ3VyZSgpID09IGJGb250RGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGaWd1
cmUoKQotICAgICAgICAgICAgJiYgYUZvbnREZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY1NwYWNp
bmcoKSA9PSBiRm9udERlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU3BhY2luZygpCi0gICAgICAg
ICAgICAmJiBhRm9udERlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljRnJhY3Rpb24oKSA9PSBiRm9u
dERlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljRnJhY3Rpb24oKQotICAgICAgICAgICAgJiYgYUZv
bnREZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY09yZGluYWwoKSA9PSBiRm9udERlc2NyaXB0aW9u
LnZhcmlhbnROdW1lcmljT3JkaW5hbCgpCi0gICAgICAgICAgICAmJiBhRm9udERlc2NyaXB0aW9u
LnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSA9PSBiRm9udERlc2NyaXB0aW9uLnZhcmlhbnRO
dW1lcmljU2xhc2hlZFplcm8oKTsKKyAgICAgICAgcmV0dXJuIGEudmFyaWFudE51bWVyaWNGaWd1
cmUoKSA9PSBiLnZhcmlhbnROdW1lcmljRmlndXJlKCkKKyAgICAgICAgICAgICYmIGEudmFyaWFu
dE51bWVyaWNTcGFjaW5nKCkgPT0gYi52YXJpYW50TnVtZXJpY1NwYWNpbmcoKQorICAgICAgICAg
ICAgJiYgYS52YXJpYW50TnVtZXJpY0ZyYWN0aW9uKCkgPT0gYi52YXJpYW50TnVtZXJpY0ZyYWN0
aW9uKCkKKyAgICAgICAgICAgICYmIGEudmFyaWFudE51bWVyaWNPcmRpbmFsKCkgPT0gYi52YXJp
YW50TnVtZXJpY09yZGluYWwoKQorICAgICAgICAgICAgJiYgYS52YXJpYW50TnVtZXJpY1NsYXNo
ZWRaZXJvKCkgPT0gYi52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCk7CiAgICAgfQogCi0gICAg
dm9pZCBibGVuZChSZW5kZXJTdHlsZSYgZGVzdGluYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBm
cm9tLCBjb25zdCBSZW5kZXJTdHlsZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250
ZXh0JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgc2V0UHJvcGVydGllc0luRm9u
dERlc2NyaXB0aW9uKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIHNvdXJjZSwgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZGVzdGluYXRpb24pIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBBU1NFUlQoIWNvbnRleHQucHJvZ3Jlc3MgfHwgY29udGV4dC5wcm9ncmVzcyA9PSAxLjAp
OwotICAgICAgICBhdXRvJiBzb3VyY2VGb250RGVzY3JpcHRpb24gPSAoY29udGV4dC5wcm9ncmVz
cyA/IHRvIDogZnJvbSkuZm9udERlc2NyaXB0aW9uKCk7Ci0KLSAgICAgICAgRm9udFNlbGVjdG9y
KiBjdXJyZW50Rm9udFNlbGVjdG9yID0gZGVzdGluYXRpb24uZm9udENhc2NhZGUoKS5mb250U2Vs
ZWN0b3IoKTsKLSAgICAgICAgYXV0byBkZXNjcmlwdGlvbiA9IGRlc3RpbmF0aW9uLmZvbnREZXNj
cmlwdGlvbigpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY0ZpZ3VyZShz
b3VyY2VGb250RGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNGaWd1cmUoKSk7Ci0gICAgICAgIGRl
c2NyaXB0aW9uLnNldFZhcmlhbnROdW1lcmljU3BhY2luZyhzb3VyY2VGb250RGVzY3JpcHRpb24u
dmFyaWFudE51bWVyaWNTcGFjaW5nKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50
TnVtZXJpY0ZyYWN0aW9uKHNvdXJjZUZvbnREZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY0ZyYWN0
aW9uKCkpOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50TnVtZXJpY09yZGluYWwoc291
cmNlRm9udERlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljT3JkaW5hbCgpKTsKLSAgICAgICAgZGVz
Y3JpcHRpb24uc2V0VmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyhzb3VyY2VGb250RGVzY3JpcHRp
b24udmFyaWFudE51bWVyaWNTbGFzaGVkWmVybygpKTsKLSAgICAgICAgZGVzdGluYXRpb24uc2V0
Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZGVzY3JpcHRpb24pKTsKLSAgICAgICAgZGVzdGluYXRp
b24uZm9udENhc2NhZGUoKS51cGRhdGUoY3VycmVudEZvbnRTZWxlY3Rvcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLnNldFZhcmlhbnROdW1lcmljRmlndXJlKHNvdXJjZS52YXJpYW50TnVtZXJpY0Zp
Z3VyZSgpKTsKKyAgICAgICAgZGVzdGluYXRpb24uc2V0VmFyaWFudE51bWVyaWNTcGFjaW5nKHNv
dXJjZS52YXJpYW50TnVtZXJpY1NwYWNpbmcoKSk7CisgICAgICAgIGRlc3RpbmF0aW9uLnNldFZh
cmlhbnROdW1lcmljRnJhY3Rpb24oc291cmNlLnZhcmlhbnROdW1lcmljRnJhY3Rpb24oKSk7Cisg
ICAgICAgIGRlc3RpbmF0aW9uLnNldFZhcmlhbnROdW1lcmljT3JkaW5hbChzb3VyY2UudmFyaWFu
dE51bWVyaWNPcmRpbmFsKCkpOworICAgICAgICBkZXN0aW5hdGlvbi5zZXRWYXJpYW50TnVtZXJp
Y1NsYXNoZWRaZXJvKHNvdXJjZS52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpOwogICAgIH0K
LQotI2lmICFMT0dfRElTQUJMRUQKLSAgICB2b2lkIGxvZ0JsZW5kKGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGRvdWJsZSkgY29uc3Qg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgfQotI2VuZGlmCiB9OwogCiBjbGFzcyBRdW90ZXNXcmFwcGVy
IGZpbmFsIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewpAQCAtMzIwMCw4
ICszMjI5LDggQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFu
aW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICBuZXcgT2Zmc2V0Um90YXRlUHJvcGVydHlXcmFw
cGVyKENTU1Byb3BlcnR5T2Zmc2V0Um90YXRlLCAmUmVuZGVyU3R5bGU6Om9mZnNldFJvdGF0ZSwg
JlJlbmRlclN0eWxlOjpzZXRPZmZzZXRSb3RhdGUpLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9w
ZXJ0eVdyYXBwZXI8VGV4dERlY29yYXRpb25Ta2lwSW5rPihDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uU2tpcEluaywgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlvblNraXBJbmssICZSZW5kZXJT
dHlsZTo6c2V0VGV4dERlY29yYXRpb25Ta2lwSW5rKSwKICAgICAgICAgbmV3IERpc2NyZXRlU1ZH
UHJvcGVydHlXcmFwcGVyPENvbG9ySW50ZXJwb2xhdGlvbj4oQ1NTUHJvcGVydHlDb2xvckludGVy
cG9sYXRpb24sICZTVkdSZW5kZXJTdHlsZTo6Y29sb3JJbnRlcnBvbGF0aW9uLCAmU1ZHUmVuZGVy
U3R5bGU6OnNldENvbG9ySW50ZXJwb2xhdGlvbiksCi0gICAgICAgIG5ldyBEaXNjcmV0ZVByb3Bl
cnR5V3JhcHBlcjxLZXJuaW5nPihDU1NQcm9wZXJ0eUZvbnRLZXJuaW5nLCAmUmVuZGVyU3R5bGU6
OmZvbnRLZXJuaW5nLCAmUmVuZGVyU3R5bGU6OnNldEZvbnRLZXJuaW5nKSwKLSAgICAgICAgbmV3
IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPEZvbnRGZWF0dXJlU2V0dGluZ3M+KENTU1Byb3BlcnR5
Rm9udEZlYXR1cmVTZXR0aW5ncywgJlJlbmRlclN0eWxlOjpmb250RmVhdHVyZVNldHRpbmdzLCAm
UmVuZGVyU3R5bGU6OnNldEZvbnRGZWF0dXJlU2V0dGluZ3MpLAorICAgICAgICBuZXcgRGlzY3Jl
dGVGb250RGVzY3JpcHRpb25UeXBlZFdyYXBwZXI8S2VybmluZz4oQ1NTUHJvcGVydHlGb250S2Vy
bmluZywgJkZvbnRDYXNjYWRlRGVzY3JpcHRpb246Omtlcm5pbmcsICZGb250Q2FzY2FkZURlc2Ny
aXB0aW9uOjpzZXRLZXJuaW5nKSwKKyAgICAgICAgbmV3IEZvbnRGZWF0dXJlU2V0dGluZ3NXcmFw
cGVyLAogICAgICAgICBuZXcgRm9udEZhbWlseVdyYXBwZXIsCiAgICAgICAgIG5ldyBEaXNjcmV0
ZVNWR1Byb3BlcnR5V3JhcHBlcjxXaW5kUnVsZT4oQ1NTUHJvcGVydHlDbGlwUnVsZSwgJlNWR1Jl
bmRlclN0eWxlOjpjbGlwUnVsZSwgJlNWR1JlbmRlclN0eWxlOjpzZXRDbGlwUnVsZSksCiAgICAg
ICAgIG5ldyBEaXNjcmV0ZVNWR1Byb3BlcnR5V3JhcHBlcjxDb2xvckludGVycG9sYXRpb24+KENT
U1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycywgJlNWR1JlbmRlclN0eWxlOjpjb2xv
ckludGVycG9sYXRpb25GaWx0ZXJzLCAmU1ZHUmVuZGVyU3R5bGU6OnNldENvbG9ySW50ZXJwb2xh
dGlvbkZpbHRlcnMpLApAQCAtMzIwOSwxMyArMzIzOCwxMyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlv
bldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCgpCiAgICAgICAgIG5l
dyBDb3VudGVyV3JhcHBlcihDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpLAogICAgICAgICBu
ZXcgQ291bnRlcldyYXBwZXIoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpLAogICAgICAgICBuZXcg
RGlzY3JldGVTVkdQcm9wZXJ0eVdyYXBwZXI8V2luZFJ1bGU+KENTU1Byb3BlcnR5RmlsbFJ1bGUs
ICZTVkdSZW5kZXJTdHlsZTo6ZmlsbFJ1bGUsICZTVkdSZW5kZXJTdHlsZTo6c2V0RmlsbFJ1bGUp
LAotICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8Rm9udFN5bnRoZXNpcz4oQ1NT
UHJvcGVydHlGb250U3ludGhlc2lzLCAmUmVuZGVyU3R5bGU6OmZvbnRTeW50aGVzaXMsICZSZW5k
ZXJTdHlsZTo6c2V0Rm9udFN5bnRoZXNpcyksCi0gICAgICAgIG5ldyBEaXNjcmV0ZVByb3BlcnR5
V3JhcHBlcjxGb250VmFyaWFudEFsdGVybmF0ZXM+KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRBbHRl
cm5hdGVzLCAmUmVuZGVyU3R5bGU6OmZvbnRWYXJpYW50QWx0ZXJuYXRlcywgJlJlbmRlclN0eWxl
OjpzZXRGb250VmFyaWFudEFsdGVybmF0ZXMpLAorICAgICAgICBuZXcgRGlzY3JldGVGb250RGVz
Y3JpcHRpb25UeXBlZFdyYXBwZXI8Rm9udFN5bnRoZXNpcz4oQ1NTUHJvcGVydHlGb250U3ludGhl
c2lzLCAmRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9udFN5bnRoZXNpcywgJkZvbnRDYXNjYWRl
RGVzY3JpcHRpb246OnNldEZvbnRTeW50aGVzaXMpLAorICAgICAgICBuZXcgRGlzY3JldGVGb250
RGVzY3JpcHRpb25UeXBlZFdyYXBwZXI8Rm9udFZhcmlhbnRBbHRlcm5hdGVzPihDU1NQcm9wZXJ0
eUZvbnRWYXJpYW50QWx0ZXJuYXRlcywgJkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OnZhcmlhbnRB
bHRlcm5hdGVzLCAmRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6c2V0VmFyaWFudEFsdGVybmF0ZXMp
LAogICAgICAgICBuZXcgRm9udFZhcmlhbnRFYXN0QXNpYW5XcmFwcGVyLAogICAgICAgICBuZXcg
Rm9udFZhcmlhbnRMaWdhdHVyZXNXcmFwcGVyLAogICAgICAgICBuZXcgRm9udFZhcmlhbnROdW1l
cmljV3JhcHBlciwKLSAgICAgICAgbmV3IERpc2NyZXRlUHJvcGVydHlXcmFwcGVyPEZvbnRWYXJp
YW50UG9zaXRpb24+KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbiwgJlJlbmRlclN0eWxl
Ojpmb250VmFyaWFudFBvc2l0aW9uLCAmUmVuZGVyU3R5bGU6OnNldEZvbnRWYXJpYW50UG9zaXRp
b24pLAotICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8Rm9udFZhcmlhbnRDYXBz
PihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50Q2FwcywgJlJlbmRlclN0eWxlOjpmb250VmFyaWFudENh
cHMsICZSZW5kZXJTdHlsZTo6c2V0Rm9udFZhcmlhbnRDYXBzKSwKKyAgICAgICAgbmV3IERpc2Ny
ZXRlRm9udERlc2NyaXB0aW9uVHlwZWRXcmFwcGVyPEZvbnRWYXJpYW50UG9zaXRpb24+KENTU1By
b3BlcnR5Rm9udFZhcmlhbnRQb3NpdGlvbiwgJkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OnZhcmlh
bnRQb3NpdGlvbiwgJkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OnNldFZhcmlhbnRQb3NpdGlvbiks
CisgICAgICAgIG5ldyBEaXNjcmV0ZUZvbnREZXNjcmlwdGlvblR5cGVkV3JhcHBlcjxGb250VmFy
aWFudENhcHM+KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRDYXBzLCAmRm9udENhc2NhZGVEZXNjcmlw
dGlvbjo6dmFyaWFudENhcHMsICZGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpzZXRWYXJpYW50Q2Fw
cyksCiAgICAgICAgIG5ldyBHcmlkVGVtcGxhdGVBcmVhc1dyYXBwZXIsCiAgICAgICAgIG5ldyBR
dW90ZXNXcmFwcGVyLAogICAgICAgICBuZXcgRGlzY3JldGVQcm9wZXJ0eVdyYXBwZXI8Ym9vbD4o
Q1NTUHJvcGVydHlTY3JvbGxCZWhhdmlvciwgJlJlbmRlclN0eWxlOjp1c2VTbW9vdGhTY3JvbGxp
bmcsICZSZW5kZXJTdHlsZTo6c2V0VXNlU21vb3RoU2Nyb2xsaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzBmY2RhMTIyNjkzMWE1
NWFmYmE0ZWNmZGY0ZjBmMWFlZDE1MjBmNS4uNTQwOTU4MGUwNjI3NWIzNjA1NzNjMmM3MjUyNjc5
ZDJhZTA2MDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0yMDI0LDc2ICsyMDI0LDYgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9u
dFBhbGV0dGUoRm9udFBhbGV0dGUgdmFsdWUpCiAgICAgZm9udENhc2NhZGUoKS51cGRhdGUoY3Vy
cmVudEZvbnRTZWxlY3Rvcik7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRLZXJuaW5n
KEtlcm5pbmcga2VybmluZykKLXsKLSAgICBGb250U2VsZWN0b3IqIGN1cnJlbnRGb250U2VsZWN0
b3IgPSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwotICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBmb250RGVzY3JpcHRpb24oKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRLZXJuaW5nKGtlcm5pbmcp
OwotCi0gICAgc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZGVzY3JpcHRpb24pKTsKLSAgICBm
b250Q2FzY2FkZSgpLnVwZGF0ZShjdXJyZW50Rm9udFNlbGVjdG9yKTsKLX0KLQotdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Rm9udEZlYXR1cmVTZXR0aW5ncyhGb250RmVhdHVyZVNldHRpbmdzIHNldHRp
bmdzKQotewotICAgIEZvbnRTZWxlY3RvciogY3VycmVudEZvbnRTZWxlY3RvciA9IGZvbnRDYXNj
YWRlKCkuZm9udFNlbGVjdG9yKCk7Ci0gICAgYXV0byBkZXNjcmlwdGlvbiA9IGZvbnREZXNjcmlw
dGlvbigpOwotICAgIGRlc2NyaXB0aW9uLnNldEZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKHNldHRp
bmdzKSk7Ci0KLSAgICBzZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZXNjcmlwdGlvbikpOwot
ICAgIGZvbnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0b3IpOwotfQotCi12b2lk
IFJlbmRlclN0eWxlOjpzZXRGb250RmFtaWxpZXMoUmVmQ291bnRlZEZpeGVkVmVjdG9yPEF0b21T
dHJpbmc+JiBmYW1pbGllcykKLXsKLSAgICBGb250U2VsZWN0b3IqIGN1cnJlbnRGb250U2VsZWN0
b3IgPSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwotICAgIGF1dG8gZGVzY3JpcHRpb24g
PSBmb250RGVzY3JpcHRpb24oKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRGYW1pbGllcyhmYW1pbGll
cyk7Ci0KLSAgICBzZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZXNjcmlwdGlvbikpOwotICAg
IGZvbnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0b3IpOwotfQotCi12b2lkIFJl
bmRlclN0eWxlOjpzZXRGb250U3ludGhlc2lzKEZvbnRTeW50aGVzaXMgdmFsdWUpCi17Ci0gICAg
Rm9udFNlbGVjdG9yKiBjdXJyZW50Rm9udFNlbGVjdG9yID0gZm9udENhc2NhZGUoKS5mb250U2Vs
ZWN0b3IoKTsKLSAgICBhdXRvIGRlc2NyaXB0aW9uID0gZm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ZGVzY3JpcHRpb24uc2V0Rm9udFN5bnRoZXNpcyh2YWx1ZSk7Ci0KLSAgICBzZXRGb250RGVzY3Jp
cHRpb24oV1RGTW92ZShkZXNjcmlwdGlvbikpOwotICAgIGZvbnRDYXNjYWRlKCkudXBkYXRlKGN1
cnJlbnRGb250U2VsZWN0b3IpOwotfQotCi12b2lkIFJlbmRlclN0eWxlOjpzZXRGb250VmFyaWFu
dEFsdGVybmF0ZXMoRm9udFZhcmlhbnRBbHRlcm5hdGVzIHZhbHVlKQotewotICAgIEZvbnRTZWxl
Y3RvciogY3VycmVudEZvbnRTZWxlY3RvciA9IGZvbnRDYXNjYWRlKCkuZm9udFNlbGVjdG9yKCk7
Ci0gICAgYXV0byBkZXNjcmlwdGlvbiA9IGZvbnREZXNjcmlwdGlvbigpOwotICAgIGRlc2NyaXB0
aW9uLnNldFZhcmlhbnRBbHRlcm5hdGVzKHZhbHVlKTsKLQotICAgIHNldEZvbnREZXNjcmlwdGlv
bihXVEZNb3ZlKGRlc2NyaXB0aW9uKSk7Ci0gICAgZm9udENhc2NhZGUoKS51cGRhdGUoY3VycmVu
dEZvbnRTZWxlY3Rvcik7Ci19Ci0KLXZvaWQgUmVuZGVyU3R5bGU6OnNldEZvbnRWYXJpYW50UG9z
aXRpb24oRm9udFZhcmlhbnRQb3NpdGlvbiB2YWx1ZSkKLXsKLSAgICBGb250U2VsZWN0b3IqIGN1
cnJlbnRGb250U2VsZWN0b3IgPSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwotICAgIGF1
dG8gZGVzY3JpcHRpb24gPSBmb250RGVzY3JpcHRpb24oKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRW
YXJpYW50UG9zaXRpb24odmFsdWUpOwotCi0gICAgc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUo
ZGVzY3JpcHRpb24pKTsKLSAgICBmb250Q2FzY2FkZSgpLnVwZGF0ZShjdXJyZW50Rm9udFNlbGVj
dG9yKTsKLX0KLQotdm9pZCBSZW5kZXJTdHlsZTo6c2V0Rm9udFZhcmlhbnRDYXBzKEZvbnRWYXJp
YW50Q2FwcyB2YWx1ZSkKLXsKLSAgICBGb250U2VsZWN0b3IqIGN1cnJlbnRGb250U2VsZWN0b3Ig
PSBmb250Q2FzY2FkZSgpLmZvbnRTZWxlY3RvcigpOwotICAgIGF1dG8gZGVzY3JpcHRpb24gPSBm
b250RGVzY3JpcHRpb24oKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRWYXJpYW50Q2Fwcyh2YWx1ZSk7
Ci0KLSAgICBzZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShkZXNjcmlwdGlvbikpOwotICAgIGZv
bnRDYXNjYWRlKCkudXBkYXRlKGN1cnJlbnRGb250U2VsZWN0b3IpOwotfQotCiBMYXlvdXRCb3hF
eHRlbnQgUmVuZGVyU3R5bGU6OnNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cp
CiB7CiAgICAgTGF5b3V0VW5pdCB0b3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IDk4OTZiMmRhNGU3YTk3YTBhODNjOWUyNDlkOGQ1N2YwMmQ2
M2JmNzEuLjA3YjZkMGVhMTU2NjQ0MmRiMDYyODYyNjc0OTY1OGI3MThiZmY1MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zNzAsMTMgKzM3
MCw2IEBAIHB1YmxpYzoKICAgICBGb250U2VsZWN0aW9uVmFsdWUgZm9udFN0cmV0Y2goKSBjb25z
dCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5zdHJldGNoKCk7IH0KICAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udEl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIGZvbnRE
ZXNjcmlwdGlvbigpLml0YWxpYygpOyB9CiAgICAgRm9udFBhbGV0dGUgZm9udFBhbGV0dGUoKSBj
b25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5mb250UGFsZXR0ZSgpOyB9Ci0gICAgS2Vy
bmluZyBmb250S2VybmluZygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmtlcm5p
bmcoKTsgfQotICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgZm9udEZlYXR1cmVTZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLmZlYXR1cmVTZXR0aW5ncygpOyB9Ci0gICAg
UmVmQ291bnRlZEZpeGVkVmVjdG9yPEF0b21TdHJpbmc+JiBmb250RmFtaWxpZXMoKSBjb25zdCB7
IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5mYW1pbGllcygpOyB9Ci0gICAgRm9udFN5bnRoZXNp
cyBmb250U3ludGhlc2lzKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuZm9udFN5
bnRoZXNpcygpOyB9Ci0gICAgRm9udFZhcmlhbnRBbHRlcm5hdGVzIGZvbnRWYXJpYW50QWx0ZXJu
YXRlcygpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLnZhcmlhbnRBbHRlcm5hdGVz
KCk7IH0KLSAgICBGb250VmFyaWFudFBvc2l0aW9uIGZvbnRWYXJpYW50UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS52YXJpYW50UG9zaXRpb24oKTsgfQotICAgIEZv
bnRWYXJpYW50Q2FwcyBmb250VmFyaWFudENhcHMoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3Jp
cHRpb24oKS52YXJpYW50Q2FwcygpOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHRleHRJbmRlbnQo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5pbmRlbnQ7IH0KICAgICBUZXh0
QWxpZ25Nb2RlIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRBbGln
bk1vZGU+KG1faW5oZXJpdGVkRmxhZ3MudGV4dEFsaWduKTsgfQpAQCAtOTk4LDEzICs5OTEsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250U3RyZXRjaChGb250U2VsZWN0aW9uVmFsdWUpOwog
ICAgIHZvaWQgc2V0Rm9udEl0YWxpYyhzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4p
OwogICAgIHZvaWQgc2V0Rm9udFBhbGV0dGUoRm9udFBhbGV0dGUpOwotICAgIHZvaWQgc2V0Rm9u
dEtlcm5pbmcoS2VybmluZyk7Ci0gICAgdm9pZCBzZXRGb250RmVhdHVyZVNldHRpbmdzKEZvbnRG
ZWF0dXJlU2V0dGluZ3MpOwotICAgIHZvaWQgc2V0Rm9udEZhbWlsaWVzKFJlZkNvdW50ZWRGaXhl
ZFZlY3RvcjxBdG9tU3RyaW5nPiYpOwotICAgIHZvaWQgc2V0Rm9udFN5bnRoZXNpcyhGb250U3lu
dGhlc2lzKTsKLSAgICB2b2lkIHNldEZvbnRWYXJpYW50QWx0ZXJuYXRlcyhGb250VmFyaWFudEFs
dGVybmF0ZXMpOwotICAgIHZvaWQgc2V0Rm9udFZhcmlhbnRQb3NpdGlvbihGb250VmFyaWFudFBv
c2l0aW9uKTsKLSAgICB2b2lkIHNldEZvbnRWYXJpYW50Q2FwcyhGb250VmFyaWFudENhcHMpOwog
CiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0VGV4dEluZGVu
dChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQs
IFdURk1vdmUobGVuZ3RoKSk7IH0K
</data>
<flag name="review"
          id="482122"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="482136"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>