<?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>220801</bug_id>
          
          <creation_ts>2021-01-21 09:21:49 -0800</creation_ts>
          <short_desc>Move FontGenericFamilies storage from SettingsBase to Settings::Values</short_desc>
          <delta_ts>2021-01-26 03:05:47 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220969</see_also>
          <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>202793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1721193</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-21 09:21:49 -0800</bug_when>
    <thetext>Currently, font generic families are stored on the Settings base class, which means they don&apos;t get transferred over to Workers via Settings::Values - this is necessary for OffscreenCanvas, and perhaps there are other reasons this would be desirable (it would seem logical to keep all Settings storage in Settings::Values rather than just almost-all).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721201</commentid>
    <comment_count>1</comment_count>
      <attachid>418051</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-21 09:31:26 -0800</bug_when>
    <thetext>Created attachment 418051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721205</commentid>
    <comment_count>2</comment_count>
      <attachid>418052</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-21 09:38:41 -0800</bug_when>
    <thetext>Created attachment 418052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721214</commentid>
    <comment_count>3</comment_count>
      <attachid>418055</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-21 09:53:52 -0800</bug_when>
    <thetext>Created attachment 418055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721270</commentid>
    <comment_count>4</comment_count>
      <attachid>418055</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-21 11:54:34 -0800</bug_when>
    <thetext>Comment on attachment 418055
Patch

r=mews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721527</commentid>
    <comment_count>5</comment_count>
      <attachid>418120</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-01-22 02:01:58 -0800</bug_when>
    <thetext>Created attachment 418120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721542</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-22 02:59:57 -0800</bug_when>
    <thetext>Committed r271742: &lt;https://trac.webkit.org/changeset/271742&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721543</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-22 03:01:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/73492040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721660</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-22 11:48:52 -0800</bug_when>
    <thetext>Here are the parts of this we want to be careful about:

1) Performance cost, slowing down by calling AtomString repeatedly. If the cost is at all an issue, it can be minimized by &quot;atomizing&quot; when setting family names even though the storage is not done as AtomString. It’s quick to detect the AtomString bit. That can be done by converting to AtomString and back to a String.

2) Memory cost, is there some path that ends up accumulating multiple copies of the same family name. There are multiple ways to make sure this doesn’t occur. When using AtomString this is automatically taken care of, we also share a single string. Without AtomString we need to double check that we don’t unnecessarily end up with multiple copies of the same string in memory. Could explicitly optimize with things like checks for strings that happen to be equal. When we do an isolated copy we always guarantee we have fresh strings, so we might have to actively do something so we don’t end up with many multiple copies.

I doubt either of those two are a big problem, but both are worth thinking through or measuring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722273</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-25 14:19:03 -0800</bug_when>
    <thetext>Looks like this broke the internal WatchOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722296</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-25 14:55:26 -0800</bug_when>
    <thetext>Not sure this change has anything to do with the breakage I saw.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418051</attachid>
            <date>2021-01-21 09:31:26 -0800</date>
            <delta_ts>2021-01-21 09:51:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220801-20210121173125.patch</filename>
            <type>text/plain</type>
            <size>28671</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0ZTU4MGFmODY5NWNl
OTNiNzVkM2VjOTFhN2FhMzM2NDczMDJjMi4uY2RlZDEzMDU5YzViYmUwZGI0YWVhYTI3YjEzNTVi
NTdmZDcwNGFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRHZW5lcmljRmFt
aWxpZXMgc3RvcmFnZSBmcm9tIFNldHRpbmdzQmFzZSB0byBTZXR0aW5nczo6VmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEZvbnRHZW5l
cmljRmFtaWxpZXMgbWVtYmVyIGZyb20gU2V0dGluZ3NCYXNlIHRvIFNldHRpbmdzOjpWYWx1ZXMK
KyAgICAgICAgc28gdGhhdCBpdCBjYW4gcG90ZW50aWFsbHkgYmUgdXNlZCB3aXRoaW4gV29ya2Vy
cy4gVGhpcyB3aWxsIGFpZCB3aXRoCisgICAgICAgIGZvbnQgdXNhZ2Ugb2ZmIHRoZSBtYWluIHRo
cmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMv
U2V0dGluZ3MuaC5lcmI6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRDdXJzaXZlRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZhbnRhc3lGb250RmFtaWx5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0RmFudGFzeUZvbnRGYW1p
bHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpwaWN0b2dyYXBoRm9udEZhbWls
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNG
YW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEdlbmVyaWNGYW1pbGllczo6c3RhbmRhcmRGb250RmFtaWx5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9udEZh
bWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpjdXJz
aXZlRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWls
aWVzOjpmYW50YXN5Rm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpwaWN0b2dyYXBoRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFtaWx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTYW5zU2VyaWZGb250
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1cnNp
dmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dEZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcp
OgorCiAyMDIxLTAxLTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXVtUaHVuZGVyXSBBY2NlcHQgbm8gcHJv
dGVjdGlvbiBzeXN0ZW0gc3BlY2lmaWMgY2FwcyBmb3IgQ0VOQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYWRlNWM2OTAyNDI5NzYyNWM3MGRhYjc5MGE1YzJjNWE4Nzc3ZWM2MS4uYzU1NGIyZGI1YzYz
NThkOGM5Njc0MmY0ZDJhZWNhODE0MTNiZDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTc2
LDYgKzExNzYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbk51bGwuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxp
ZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFu
Z2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0
ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCBlOTkxYTFlMGQ0MWZhYTFlYzEwOTk5MzMxODQ2
MGFhNDM2OTA1ZDhhLi5mZWM3YWM3ZTU0MGQxYmExMmRiZDY5ZWEzM2U1OGVkMTQ2MjUxNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRp
bmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiCkBAIC0xMDYsNiArMTA2LDcgQEAgU2V0dGluZ3M6OlZhbHVlcyBT
ZXR0aW5nczo6VmFsdWVzOjppc29sYXRlZENvcHkoKSBjb25zdAogPCUtIGZvciBAc2V0dGluZyBp
biBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUp
LAogPCUtIGVuZCAtJT4KKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGZvbnRHZW5lcmljRmFtaWxp
ZXMpLAogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxTZXR0aW5nc1NldC5jb25kaXRpb25zIGRv
IC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0
aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25kaXRpb24uY29uZGl0aW9uIC0lPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuaC5lcmIKaW5kZXggMzcxZjFlNWYyNWEyMTg4MjNiNTQzNjRhN2M2ZTg5ZDJmOTYxY2UzOS4u
YjFhMjU4NjM1ODg3ZDgwZjM5ZDEyZTVkNmUyMDBlNDQ0Mjg0YTM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJi
CkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJG
dW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShPcHRpb25hbDw8JT0gQHNldHRpbmcucGFy
YW1ldGVyVHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSkgeyBt
X3ZhbHVlcy48JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlID0gPCU9IEBzZXR0
aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZTsgfQogICAgIDwlLSBlbmQgLSU+CiA8JS0gZW5k
IC0lPgorICAgIEZvbnRHZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBmaW5h
bCB7IHJldHVybiBtX3ZhbHVlcy5mb250R2VuZXJpY0ZhbWlsaWVzOyB9CisgICAgY29uc3QgRm9u
dEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmljRmFtaWxpZXM7IH0KIAogICAgIHN0cnVjdCBWYWx1ZXMg
ewogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKQEAgLTc3LDYgKzc5LDcgQEAgcHVibGljOgog
ICAgICAgICBPcHRpb25hbDw8JT0gQHNldHRpbmcudHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUg
JT5JbnNwZWN0b3JPdmVycmlkZTsKIDwlLSBlbmQgLSU+CiAKKyAgICAgICAgRm9udEdlbmVyaWNG
YW1pbGllcyBmb250R2VuZXJpY0ZhbWlsaWVzOwogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxT
ZXR0aW5nc1NldC5jb25kaXRpb25zIGRvIC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNl
dHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25k
aXRpb24uY29uZGl0aW9uIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCBkMjc4NTJjNDg3NjhhY2MwMDQ1Y2U3ZGIwNjA0NWQzZmZhZjhiOTgxLi5jMGI5YmRiNjQ3
MWI1MTliMmM2ODMzMDMzYmUzYWFmYThmM2FkMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMjc3LDE5ICsyNzcsMTkgQEAgc3RhdGljIE9wdGlvbmFsPEF0b21T
dHJpbmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRm9u
dEQKIAogICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKTsK
ICAgICBpZiAoZmFtaWx5TmFtZSA9PSBzZXJpZkZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRp
bmdzLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhz
ZXR0aW5ncy5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0g
c2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3Muc2Fuc1NlcmlmRm9udEZh
bWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5zYW5zU2Vy
aWZGb250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGN1cnNpdmVGYW1p
bHkpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQpOwor
ICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3Jp
cHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBmYW50YXN5RmFtaWx5KQotICAgICAgICByZXR1
cm4gc2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0
b21TdHJpbmcoc2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZh
bWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MuZml4
ZWRGb250RmFtaWx5KHNjcmlwdCk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKHNldHRpbmdz
LmZpeGVkRm9udEZhbWlseShzY3JpcHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBwaWN0b2dy
YXBoRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MucGljdG9ncmFwaEZvbnRGYW1pbHko
c2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3MucGljdG9ncmFwaEZv
bnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHkp
Ci0gICAgICAgIHJldHVybiBzZXR0aW5ncy5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAg
ICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3Muc3RhbmRhcmRGb250RmFtaWx5KHNjcmlw
dCkpOwogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KQEAgLTQyOSw4ICs0MjksOCBAQCBS
ZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIGF1dG8mIHBpY3RvZ3JhcGhGb250RmFtaWx5ID0g
bV9kb2N1bWVudC0+c2V0dGluZ3MoKS5waWN0b2dyYXBoRm9udEZhbWlseSgpOwogICAgIGF1dG8g
Zm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRp
b24sIHBpY3RvZ3JhcGhGb250RmFtaWx5KTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBp
Y3RvZ3JhcGhGb250RmFtaWx5LnN0cmluZygpLCAhIWZvbnQpOwotICAgIAorICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBpY3Rv
Z3JhcGhGb250RmFtaWx5LCAhIWZvbnQpOworCiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBhYTdkODRiOGNjMTRjNDMyYWEwNzIxYjgw
MjdjYmNjMWUwYmM5ZDgwLi41ODYzZTViMDVmZmZjNWNlYjNmMmZlOWE0OWE4OWQ1MjgyNmU5OWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC02MywxMyArNjIsOSBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFt
aWx5Q2hhbmdlKFBhZ2UqIHBhZ2UpCiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGll
cyhtYWtlVW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKIHsKLSAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2
ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9tU3RyaW5nCi0gICAg
Ly8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KLSAgICBBdG9tU3RyaW5nOjppbml0KCk7
CiAgICAgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKICAgICBtX3BhZ2UgPSBwYWdl
OyAvLyBQYWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb25zdHJ1Y3Rpbmcg
U2V0dGluZ3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFsaXplRGVmYXVsdEZv
bnRGYW1pbGllcygpIGNhbGwuCiB9CkBAIC05Miw4NiArODcsODYgQEAgYm9vbCBTZXR0aW5nc0Jh
c2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKICNlbmRpZgogCi1jb25z
dCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c3RhbmRhcmRGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2Vu
ZXJpY0ZhbWlsaWVzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9u
dEdlbmVyaWNGYW1pbGllcygpLnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lk
IFNldHRpbmdzQmFzZTo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZh
bWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJk
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewot
ICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U3RhbmRhcmRGb250
RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0Zh
bWlsaWVzKCkuc2V0U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAo
Y2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3Bh
Z2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWls
eShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6
Zml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mb250R2VuZXJpY0ZhbWlsaWVzLT5maXhlZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1
cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZpeGVkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12
b2lkIFNldHRpbmdzQmFzZTo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZh
bWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9u
dEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAg
IGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0Rml4ZWRGb250RmFtaWx5
KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVz
KCkuc2V0Rml4ZWRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykK
ICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseShVU2NyaXB0
Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c2VyaWZGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2Vu
ZXJpY0ZhbWlsaWVzLT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdl
bmVyaWNGYW1pbGllcygpLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRp
bmdzQmFzZTo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNj
cmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseShj
b25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hh
bmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2VyaWZGb250RmFtaWx5KGZhbWlseSwg
c2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCkuc2V0U2Vy
aWZGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAg
aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBB
dG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5l
cmljRmFtaWxpZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9u
dEdlbmVyaWNGYW1pbGllcygpLnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAotdm9p
ZCBTZXR0aW5nc0Jhc2U6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQog
ewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0gZm9udEdlbmVy
aWNGYW1pbGllcygpLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAg
IGlmIChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdl
KG1fcGFnZSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5n
c0Jhc2U6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQp
OworICAgIHJldHVybiBmb250R2VuZXJpY0ZhbWlsaWVzKCkuY3Vyc2l2ZUZvbnRGYW1pbHkoc2Ny
aXB0KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0
IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jh
c2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29k
ZSBzY3JpcHQpCiB7Ci0gICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5z
ZXRDdXJzaXZlRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0g
Zm9udEdlbmVyaWNGYW1pbGllcygpLnNldEN1cnNpdmVGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0
KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWls
eUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZh
bnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYg
U2V0dGluZ3NCYXNlOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+ZmFudGFzeUZvbnRGYW1pbHko
c2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZhbnRhc3lGb250RmFt
aWx5KHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWls
eShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3ZvaWQgU2V0
dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNj
cmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1p
bGllcy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOworICAgIGJvb2wgY2hh
bmdlcyA9IGZvbnRHZW5lcmljRmFtaWxpZXMoKS5zZXRGYW50YXN5Rm9udEZhbWlseShmYW1pbHks
IHNjcmlwdCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGludmFsaWRhdGVBZnRlckdlbmVy
aWNGYW1pbHlDaGFuZ2UobV9wYWdlKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgU2V0dGluZ3NC
YXNlOjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25z
dCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnBpY3Rv
Z3JhcGhGb250RmFtaWx5KHNjcmlwdCk7CisgICAgcmV0dXJuIGZvbnRHZW5lcmljRmFtaWxpZXMo
KS5waWN0b2dyYXBoRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0
Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHko
Y29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBib29sIGNo
YW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGZh
bWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCku
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAgIGlmIChjaGFuZ2Vz
KQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCA3NWU4YTBhZmVkYmEwZmYwY2Y3NTQ3
ZWUyMzMyMjUyYmViZTQwOGNjLi40ODZiYzA2MmFlNjRlZjA0ODczZDcyZGU3ZGI2YzY4ZDlhYzIx
ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRhYmxlTGlua0JlaGF2aW9yLmgi
CiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZS5oIgorI2luY2x1ZGUgIkZvbnRHZW5lcmlj
RmFtaWxpZXMuaCIKICNpbmNsdWRlICJGb250TG9hZFRpbWluZ092ZXJyaWRlLmgiCiAjaW5jbHVk
ZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlICJGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWUuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUg
IkRhdGFEZXRlY3RvclR5cGUuaCIKQEAgLTU3LDcgKzU3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzOwogY2xhc3MgUGFnZTsKIAogY2xhc3Mg
U2V0dGluZ3NCYXNlIHsKQEAgLTc0LDI2ICs3MywyOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGRlZmF1bHRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0aCA9IDUxMjsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdE1heGltdW1SZW5kZXJUcmVlRGVwdGgg
PSA1MTI7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShj
b25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIHZpcnR1YWwgRm9udEdlbmVyaWNGYW1p
bGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEZvbnRH
ZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBjb25zdCA9IDA7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEZpeGVkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwg
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qg
QXRvbVN0cmluZyYgZml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KGNv
bnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IFN0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVND
UklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJpZkZv
bnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
OwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIHNlcmlmRm9udEZhbWlseShV
U2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZpeGVkRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGZpeGVkRm9udEZh
bWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRv
bVN0cmluZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9O
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25z
dCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBTdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRG
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHNhbnNTZXJp
ZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcm
LCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBBdG9tU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5
KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgY3Vyc2l2ZUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBpY3Rv
Z3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBwaWN0b2dyYXBo
Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmlu
ZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0
IFN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IFN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NS
SVBUX0NPTU1PTikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1pbmltdW1E
T01UaW1lckludGVydmFsKFNlY29uZHMpOyAvLyBJbml0aWFsaXplZCB0byBET01UaW1lcjo6ZGVm
YXVsdE1pbmltdW1JbnRlcnZhbCgpLgogICAgIFNlY29uZHMgbWluaW11bURPTVRpbWVySW50ZXJ2
YWwoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1ET01UaW1lckludGVydmFsOyB9CkBAIC0xNDAs
NyArMTQyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgUGFnZSogbV9wYWdlOwogCi0gICAgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPEZvbnRHZW5lcmljRmFtaWxpZXM+IG1fZm9udEdlbmVyaWNGYW1pbGll
czsKICAgICBTZWNvbmRzIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7CiAKICAgICBUaW1lciBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCmluZGV4IDE3MmI3
MjFhY2Y1ZTgyMWM0MzAxYzJmMjgyYTlmODIxNWZkYmFhYzEuLmQzNTc1ZGRhYTY4ODdhNjgyYTlh
YzdjMWQ4Y2NiZDgxZWMzNTY5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwCkBAIC0zMCwxMSArMzAsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBzZXRHZW5lcmljRm9udEZh
bWlseUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3N0YXRpYyBib29sIHNldEdlbmVyaWNG
b250RmFtaWx5Rm9yU2NyaXB0KFNjcmlwdEZvbnRGYW1pbHlNYXAmIGZvbnRNYXAsIGNvbnN0IFN0
cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgaWYgKGZhbWlseS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmb250TWFwLnJlbW92ZShzdGF0aWNfY2FzdDxpbnQ+KHNj
cmlwdCkpOwotICAgIGF1dG8mIGZhbWlseUluTWFwID0gZm9udE1hcC5hZGQoc3RhdGljX2Nhc3Q8
aW50PihzY3JpcHQpLCBBdG9tU3RyaW5nIHsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8m
IGZhbWlseUluTWFwID0gZm9udE1hcC5hZGQoc3RhdGljX2Nhc3Q8aW50PihzY3JpcHQpLCBTdHJp
bmcgeyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGZhbWlseUluTWFwID09IGZhbWlseSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZhbWlseUluTWFwID0gZmFtaWx5OwpAQCAtNjQs
NyArNjQsNyBAQCBzdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCiAgICAgY2FjaGVk
VXNlclByZWZlcnNTaW1wbGlmaWVkKCkgPSBjb21wdXRlVXNlclByZWZlcnNTaW1wbGlmaWVkKCk7
CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlw
dChjb25zdCBTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBVU2NyaXB0Q29kZSBzY3JpcHQp
CitzdGF0aWMgY29uc3QgU3RyaW5nJiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChjb25zdCBT
Y3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAg
U2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmb250TWFwLmZpbmQoc3Rh
dGljX2Nhc3Q8aW50PihzY3JpcHQpKTsKICAgICBpZiAoaXQgIT0gZm9udE1hcC5lbmQoKSkKQEAg
LTgzLDc2ICs4Myw5OSBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1p
bHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZgogCiBGb250R2VuZXJpY0Zh
bWlsaWVzOjpGb250R2VuZXJpY0ZhbWlsaWVzKCkKIHsKLSAgICBhZGRMYW5ndWFnZUNoYW5nZU9i
c2VydmVyKHRoaXMsICZsYW5ndWFnZUNoYW5nZWQpOwotICAgIGxhbmd1YWdlQ2hhbmdlZChudWxs
cHRyKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlLCBbJl0geworICAgICAgICBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKCZvbmNlLCAm
bGFuZ3VhZ2VDaGFuZ2VkKTsKKyAgICAgICAgbGFuZ3VhZ2VDaGFuZ2VkKG51bGxwdHIpOworICAg
IH0pOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpzdGFuZGFy
ZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorRm9udEdlbmVyaWNGYW1pbGll
cyBGb250R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIEZvbnRH
ZW5lcmljRmFtaWxpZXMgY29weTsKKyAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9zdGFuZGFy
ZEZvbnRGYW1pbHlNYXApCisgICAgICAgIGNvcHkubV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAuYWRk
KGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAo
YXV0byAma2V5VmFsdWUgOiBtX3NlcmlmRm9udEZhbWlseU1hcCkKKyAgICAgICAgY29weS5tX3Nl
cmlmRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRl
ZENvcHkoKSk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fZml4ZWRGb250RmFtaWx5TWFw
KQorICAgICAgICBjb3B5Lm1fZml4ZWRGb250RmFtaWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtl
eVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDog
bV9zYW5zU2VyaWZGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fc2Fuc1NlcmlmRm9udEZh
bWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7
CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXApCisgICAg
ICAgIGNvcHkubV9jdXJzaXZlRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1
ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fZmFu
dGFzeUZvbnRGYW1pbHlNYXApCisgICAgICAgIGNvcHkubV9mYW50YXN5Rm9udEZhbWlseU1hcC5h
ZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgZm9y
IChhdXRvICZrZXlWYWx1ZSA6IG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXApCisgICAgICAgIGNv
cHkubV9waWN0b2dyYXBoRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBrZXlWYWx1ZS52
YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNj
cmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9z
dGFuZGFyZEZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZv
bnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNv
bnN0Citjb25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseShV
U2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5
Rm9yU2NyaXB0KG1fZml4ZWRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9t
U3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChtX3NlcmlmRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAot
Y29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9udEZhbWls
eShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFt
aWxpZXM6OnNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewog
ICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3NhbnNTZXJpZkZvbnRGYW1p
bHlNYXAsIHNjcmlwdCk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxp
ZXM6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0
cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6Y3Vyc2l2ZUZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdCht
X2N1cnNpdmVGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBG
b250R2VuZXJpY0ZhbWlsaWVzOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQp
IGNvbnN0Citjb25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmZhbnRhc3lGb250RmFt
aWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRG
YW1pbHlGb3JTY3JpcHQobV9mYW50YXN5Rm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29u
c3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHko
VVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWls
aWVzOjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fcGljdG9ncmFwaEZvbnRGYW1p
bHlNYXAsIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U3RhbmRh
cmRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0
KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3Qg
U3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zdGFuZGFyZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwg
c2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGaXhlZEZvbnRGYW1p
bHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZv
bnRHZW5lcmljRmFtaWxpZXM6OnNldEZpeGVkRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWls
eSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWls
eUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1i
b29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3Ry
aW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGll
czo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBz
Y3JpcHQpCiB7CiAgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc2Vy
aWZGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNG
YW1pbGllczo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHks
IFVTY3JpcHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQog
ewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3NhbnNTZXJpZkZv
bnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWls
aWVzOjpzZXRDdXJzaXZlRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3Jp
cHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Q3Vyc2l2ZUZvbnRG
YW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICBy
ZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9jdXJzaXZlRm9udEZhbWlseU1h
cCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEZh
bnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2Ny
aXB0KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25z
dCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBzZXRH
ZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX2ZhbnRhc3lGb250RmFtaWx5TWFwLCBmYW1pbHks
IHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0UGljdG9ncmFwaEZv
bnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiti
b29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNldEdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAsIGZhbWlseSwg
c2NyaXB0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuaAppbmRleCBmMTI0YmI4NmQzNGUyNjk1MWQyMGVlOWRiMzA2
M2E4NjdhOTJhNGZhLi4yMzc4NzE2MGI5OGI5ZTg0YWVmODBlY2NjNjVmZDVmY2I3NGFjNTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0Zh
bWlsaWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVy
aWNGYW1pbGllcy5oCkBAIC00MiwyOCArNDIsMzAgQEAgc3RydWN0IFVTY3JpcHRDb2RlSGFzaFRy
YWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7CiAgICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAtMzsgfQogfTsKIAotdHlw
ZWRlZiBIYXNoTWFwPGludCwgQXRvbVN0cmluZywgRGVmYXVsdEhhc2g8aW50PiwgVVNjcmlwdENv
ZGVIYXNoVHJhaXRzPiBTY3JpcHRGb250RmFtaWx5TWFwOwordHlwZWRlZiBIYXNoTWFwPGludCwg
U3RyaW5nLCBEZWZhdWx0SGFzaDxpbnQ+LCBVU2NyaXB0Q29kZUhhc2hUcmFpdHM+IFNjcmlwdEZv
bnRGYW1pbHlNYXA7CiAKIGNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXMgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZvbnRHZW5lcmljRmFtaWxpZXMoKTsKIAot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBmaXhlZEZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0
cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0
OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgY3Vyc2l2ZUZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3Qg
QXRvbVN0cmluZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1P
TikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHkoVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgRm9udEdlbmVyaWNGYW1pbGll
cyBpc29sYXRlZENvcHkoKSBjb25zdDsKIAotICAgIGJvb2wgc2V0U3RhbmRhcmRGb250RmFtaWx5
KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRGaXhlZEZvbnRG
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAgICBib29sIHNldFNlcmlm
Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0
U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAg
IGJvb2wgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2Rl
KTsKLSAgICBib29sIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2Ny
aXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBBdG9tU3Ry
aW5nJiwgVVNjcmlwdENvZGUpOworICAgIGNvbnN0IFN0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5
KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYg
Zml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgc2Fuc1NlcmlmRm9udEZhbWlseShVU2NyaXB0
Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGN1cnNpdmVG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0
IFN0cmluZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikg
Y29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKworICAgIGJvb2wgc2V0U3RhbmRhcmRGb250RmFt
aWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNldEZpeGVkRm9udEZh
bWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRTZXJpZkZvbnRG
YW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRDdXJz
aXZlRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRG
YW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBz
ZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CiAKIHBy
aXZhdGU6CiAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3N0YW5kYXJkRm9udEZhbWlseU1hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5k
ZXggZjRjZmU2N2RiNTkyZDk2ZDgwNzYyMTM3Zjg5MDYwZThjZjk5NzE3Zi4uZTVjOGUxZmY5Y2M0
YjU0ZWZiZjc0MjU4NjZlMzg5ZjE3N2U4MDg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgT3B0aW9uYWw8
UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZv
bnRDYXNjYWRlRGVzY3IKICAgICAgICAgc3dpdGNoT24oaXRlbSwgWyZdIChDU1NWYWx1ZUlEIGlk
ZW50KSB7CiAgICAgICAgICAgICBpc0dlbmVyaWNGYW1pbHkgPSBpZGVudCAhPSBDU1NWYWx1ZVdl
YmtpdEJvZHk7CiAgICAgICAgICAgICBmYW1pbHkgPSBpc0dlbmVyaWNGYW1pbHkgPyBDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmdlbmVyaWNGb250RmFtaWx5RnJvbVZhbHVlSUQoaWRlbnQpCi0g
ICAgICAgICAgICAgICAgOiBkb2N1bWVudC5zZXR0aW5ncygpLnN0YW5kYXJkRm9udEZhbWlseSgp
OworICAgICAgICAgICAgICAgIDogQXRvbVN0cmluZyhkb2N1bWVudC5zZXR0aW5ncygpLnN0YW5k
YXJkRm9udEZhbWlseSgpKTsKICAgICAgICAgfSwgWyZdIChjb25zdCBTdHJpbmcmIGZhbWlseVN0
cmluZykgewogICAgICAgICAgICAgZmFtaWx5ID0gZmFtaWx5U3RyaW5nOwogICAgICAgICB9KTsK
</data>
<flag name="commit-queue"
          id="435895"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418052</attachid>
            <date>2021-01-21 09:38:41 -0800</date>
            <delta_ts>2021-01-21 09:56:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220801-20210121173839.patch</filename>
            <type>text/plain</type>
            <size>28852</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0ZTU4MGFmODY5NWNl
OTNiNzVkM2VjOTFhN2FhMzM2NDczMDJjMi4uY2RlZDEzMDU5YzViYmUwZGI0YWVhYTI3YjEzNTVi
NTdmZDcwNGFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRHZW5lcmljRmFt
aWxpZXMgc3RvcmFnZSBmcm9tIFNldHRpbmdzQmFzZSB0byBTZXR0aW5nczo6VmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEZvbnRHZW5l
cmljRmFtaWxpZXMgbWVtYmVyIGZyb20gU2V0dGluZ3NCYXNlIHRvIFNldHRpbmdzOjpWYWx1ZXMK
KyAgICAgICAgc28gdGhhdCBpdCBjYW4gcG90ZW50aWFsbHkgYmUgdXNlZCB3aXRoaW4gV29ya2Vy
cy4gVGhpcyB3aWxsIGFpZCB3aXRoCisgICAgICAgIGZvbnQgdXNhZ2Ugb2ZmIHRoZSBtYWluIHRo
cmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMv
U2V0dGluZ3MuaC5lcmI6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRDdXJzaXZlRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZhbnRhc3lGb250RmFtaWx5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0RmFudGFzeUZvbnRGYW1p
bHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpwaWN0b2dyYXBoRm9udEZhbWls
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNG
YW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEdlbmVyaWNGYW1pbGllczo6c3RhbmRhcmRGb250RmFtaWx5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9udEZh
bWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpjdXJz
aXZlRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWls
aWVzOjpmYW50YXN5Rm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpwaWN0b2dyYXBoRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFtaWx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTYW5zU2VyaWZGb250
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1cnNp
dmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dEZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcp
OgorCiAyMDIxLTAxLTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXVtUaHVuZGVyXSBBY2NlcHQgbm8gcHJv
dGVjdGlvbiBzeXN0ZW0gc3BlY2lmaWMgY2FwcyBmb3IgQ0VOQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYWRlNWM2OTAyNDI5NzYyNWM3MGRhYjc5MGE1YzJjNWE4Nzc3ZWM2MS4uYzU1NGIyZGI1YzYz
NThkOGM5Njc0MmY0ZDJhZWNhODE0MTNiZDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTc2
LDYgKzExNzYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbk51bGwuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxp
ZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFu
Z2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0
ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCBlOTkxYTFlMGQ0MWZhYTFlYzEwOTk5MzMxODQ2
MGFhNDM2OTA1ZDhhLi5mZWM3YWM3ZTU0MGQxYmExMmRiZDY5ZWEzM2U1OGVkMTQ2MjUxNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRp
bmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiCkBAIC0xMDYsNiArMTA2LDcgQEAgU2V0dGluZ3M6OlZhbHVlcyBT
ZXR0aW5nczo6VmFsdWVzOjppc29sYXRlZENvcHkoKSBjb25zdAogPCUtIGZvciBAc2V0dGluZyBp
biBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUp
LAogPCUtIGVuZCAtJT4KKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGZvbnRHZW5lcmljRmFtaWxp
ZXMpLAogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxTZXR0aW5nc1NldC5jb25kaXRpb25zIGRv
IC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0
aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25kaXRpb24uY29uZGl0aW9uIC0lPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuaC5lcmIKaW5kZXggMzcxZjFlNWYyNWEyMTg4MjNiNTQzNjRhN2M2ZTg5ZDJmOTYxY2UzOS4u
YjFhMjU4NjM1ODg3ZDgwZjM5ZDEyZTVkNmUyMDBlNDQ0Mjg0YTM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJi
CkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJG
dW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShPcHRpb25hbDw8JT0gQHNldHRpbmcucGFy
YW1ldGVyVHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSkgeyBt
X3ZhbHVlcy48JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlID0gPCU9IEBzZXR0
aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZTsgfQogICAgIDwlLSBlbmQgLSU+CiA8JS0gZW5k
IC0lPgorICAgIEZvbnRHZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBmaW5h
bCB7IHJldHVybiBtX3ZhbHVlcy5mb250R2VuZXJpY0ZhbWlsaWVzOyB9CisgICAgY29uc3QgRm9u
dEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmljRmFtaWxpZXM7IH0KIAogICAgIHN0cnVjdCBWYWx1ZXMg
ewogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKQEAgLTc3LDYgKzc5LDcgQEAgcHVibGljOgog
ICAgICAgICBPcHRpb25hbDw8JT0gQHNldHRpbmcudHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUg
JT5JbnNwZWN0b3JPdmVycmlkZTsKIDwlLSBlbmQgLSU+CiAKKyAgICAgICAgRm9udEdlbmVyaWNG
YW1pbGllcyBmb250R2VuZXJpY0ZhbWlsaWVzOwogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxT
ZXR0aW5nc1NldC5jb25kaXRpb25zIGRvIC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNl
dHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25k
aXRpb24uY29uZGl0aW9uIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCBkMjc4NTJjNDg3NjhhY2MwMDQ1Y2U3ZGIwNjA0NWQzZmZhZjhiOTgxLi5jMGI5YmRiNjQ3
MWI1MTliMmM2ODMzMDMzYmUzYWFmYThmM2FkMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMjc3LDE5ICsyNzcsMTkgQEAgc3RhdGljIE9wdGlvbmFsPEF0b21T
dHJpbmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRm9u
dEQKIAogICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKTsK
ICAgICBpZiAoZmFtaWx5TmFtZSA9PSBzZXJpZkZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRp
bmdzLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhz
ZXR0aW5ncy5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0g
c2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3Muc2Fuc1NlcmlmRm9udEZh
bWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5zYW5zU2Vy
aWZGb250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGN1cnNpdmVGYW1p
bHkpCi0gICAgICAgIHJldHVybiBzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQpOwor
ICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3Jp
cHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBmYW50YXN5RmFtaWx5KQotICAgICAgICByZXR1
cm4gc2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0
b21TdHJpbmcoc2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZh
bWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MuZml4
ZWRGb250RmFtaWx5KHNjcmlwdCk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKHNldHRpbmdz
LmZpeGVkRm9udEZhbWlseShzY3JpcHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBwaWN0b2dy
YXBoRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MucGljdG9ncmFwaEZvbnRGYW1pbHko
c2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3MucGljdG9ncmFwaEZv
bnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHkp
Ci0gICAgICAgIHJldHVybiBzZXR0aW5ncy5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAg
ICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3Muc3RhbmRhcmRGb250RmFtaWx5KHNjcmlw
dCkpOwogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KQEAgLTQyOSw4ICs0MjksOCBAQCBS
ZWZQdHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdAogICAgIGF1dG8mIHBpY3RvZ3JhcGhGb250RmFtaWx5ID0g
bV9kb2N1bWVudC0+c2V0dGluZ3MoKS5waWN0b2dyYXBoRm9udEZhbWlseSgpOwogICAgIGF1dG8g
Zm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRp
b24sIHBpY3RvZ3JhcGhGb250RmFtaWx5KTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBp
Y3RvZ3JhcGhGb250RmFtaWx5LnN0cmluZygpLCAhIWZvbnQpOwotICAgIAorICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBpY3Rv
Z3JhcGhGb250RmFtaWx5LCAhIWZvbnQpOworCiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBhYTdkODRiOGNjMTRjNDMyYWEwNzIxYjgw
MjdjYmNjMWUwYmM5ZDgwLi41ODYzZTViMDVmZmZjNWNlYjNmMmZlOWE0OWE4OWQ1MjgyNmU5OWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CkBAIC02MywxMyArNjIsOSBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFt
aWx5Q2hhbmdlKFBhZ2UqIHBhZ2UpCiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGll
cyhtYWtlVW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKIHsKLSAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2
ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9tU3RyaW5nCi0gICAg
Ly8gaGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KLSAgICBBdG9tU3RyaW5nOjppbml0KCk7
CiAgICAgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKICAgICBtX3BhZ2UgPSBwYWdl
OyAvLyBQYWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb25zdHJ1Y3Rpbmcg
U2V0dGluZ3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFsaXplRGVmYXVsdEZv
bnRGYW1pbGllcygpIGNhbGwuCiB9CkBAIC05Miw4NiArODcsODYgQEAgYm9vbCBTZXR0aW5nc0Jh
c2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKICNlbmRpZgogCi1jb25z
dCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c3RhbmRhcmRGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2Vu
ZXJpY0ZhbWlsaWVzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9u
dEdlbmVyaWNGYW1pbGllcygpLnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lk
IFNldHRpbmdzQmFzZTo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZh
bWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJk
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewot
ICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U3RhbmRhcmRGb250
RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0Zh
bWlsaWVzKCkuc2V0U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAo
Y2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3Bh
Z2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWls
eShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6
Zml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mb250R2VuZXJpY0ZhbWlsaWVzLT5maXhlZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1
cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZpeGVkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12
b2lkIFNldHRpbmdzQmFzZTo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZh
bWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9u
dEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAg
IGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0Rml4ZWRGb250RmFtaWx5
KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVz
KCkuc2V0Rml4ZWRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykK
ICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQog
Ci1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseShVU2NyaXB0
Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c2VyaWZGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2Vu
ZXJpY0ZhbWlsaWVzLT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdl
bmVyaWNGYW1pbGllcygpLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRp
bmdzQmFzZTo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNj
cmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseShj
b25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hh
bmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2VyaWZGb250RmFtaWx5KGZhbWlseSwg
c2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCkuc2V0U2Vy
aWZGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAg
aW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBB
dG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5l
cmljRmFtaWxpZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9u
dEdlbmVyaWNGYW1pbGllcygpLnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAotdm9p
ZCBTZXR0aW5nc0Jhc2U6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQog
ewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0gZm9udEdlbmVy
aWNGYW1pbGllcygpLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAg
IGlmIChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdl
KG1fcGFnZSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5n
c0Jhc2U6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQp
OworICAgIHJldHVybiBmb250R2VuZXJpY0ZhbWlsaWVzKCkuY3Vyc2l2ZUZvbnRGYW1pbHkoc2Ny
aXB0KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0
IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jh
c2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29k
ZSBzY3JpcHQpCiB7Ci0gICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5z
ZXRDdXJzaXZlRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0g
Zm9udEdlbmVyaWNGYW1pbGllcygpLnNldEN1cnNpdmVGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0
KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWls
eUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZh
bnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYg
U2V0dGluZ3NCYXNlOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+ZmFudGFzeUZvbnRGYW1pbHko
c2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZhbnRhc3lGb250RmFt
aWx5KHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWls
eShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3ZvaWQgU2V0
dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNj
cmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1p
bGllcy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOworICAgIGJvb2wgY2hh
bmdlcyA9IGZvbnRHZW5lcmljRmFtaWxpZXMoKS5zZXRGYW50YXN5Rm9udEZhbWlseShmYW1pbHks
IHNjcmlwdCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGludmFsaWRhdGVBZnRlckdlbmVy
aWNGYW1pbHlDaGFuZ2UobV9wYWdlKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgU2V0dGluZ3NC
YXNlOjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25z
dCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnBpY3Rv
Z3JhcGhGb250RmFtaWx5KHNjcmlwdCk7CisgICAgcmV0dXJuIGZvbnRHZW5lcmljRmFtaWxpZXMo
KS5waWN0b2dyYXBoRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0
Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHko
Y29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBib29sIGNo
YW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGZh
bWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCku
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAgIGlmIChjaGFuZ2Vz
KQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCA3NWU4YTBhZmVkYmEwZmYwY2Y3NTQ3
ZWUyMzMyMjUyYmViZTQwOGNjLi41ZGJlZTMwYzU5Nzk0OTI5YmRjYTc1NTJiZGRkYTBlNGU2MzEy
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRhYmxlTGlua0JlaGF2aW9yLmgi
CiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZS5oIgorI2luY2x1ZGUgIkZvbnRHZW5lcmlj
RmFtaWxpZXMuaCIKICNpbmNsdWRlICJGb250TG9hZFRpbWluZ092ZXJyaWRlLmgiCiAjaW5jbHVk
ZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlICJGb3JjZWRBY2Nlc3NpYmlsaXR5VmFs
dWUuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUg
IkRhdGFEZXRlY3RvclR5cGUuaCIKQEAgLTU3LDEzICs1NywxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXM7CiBjbGFzcyBQYWdlOwogCiBjbGFz
cyBTZXR0aW5nc0Jhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRpbmdzQmFzZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIH5TZXR0aW5nc0Jhc2UoKTsK
KyAgICB2aXJ0dWFsIH5TZXR0aW5nc0Jhc2UoKTsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgp
IHsgbV9wYWdlID0gbnVsbHB0cjsgfQogCkBAIC03NCwyNiArNzMsMjkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVw
dGggPSA1MTI7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRNYXhpbXVtUmVuZGVy
VHJlZURlcHRoID0gNTEyOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
OwotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIHN0YW5kYXJkRm9udEZhbWls
eShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZvbnRH
ZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBGb250R2VuZXJpY0ZhbWlsaWVzJiBmb250R2VuZXJpY0ZhbWlsaWVzKCkgY29uc3QgPSAw
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRv
bVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEF0b21TdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YW5kYXJkRm9u
dEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0
Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBzZXJpZkZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENv
ZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBm
aXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0
cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NS
SVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJpZkZvbnRG
YW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1
cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBjdXJzaXZlRm9u
dEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5n
JiBzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBB
dG9tU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJzaXZl
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYg
cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJp
bmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQaWN0b2dyYXBoRm9udEZh
bWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHBpY3RvZ3JhcGhGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRNaW5pbXVtRE9NVGltZXJJbnRlcnZhbChTZWNvbmRzKTsgLy8gSW5pdGlhbGl6ZWQgdG8gRE9N
VGltZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKS4KICAgICBTZWNvbmRzIG1pbmltdW1ET01U
aW1lckludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbDsg
fQpAQCAtMTQwLDcgKzE0Miw2IEBAIHByb3RlY3RlZDoKIAogICAgIFBhZ2UqIG1fcGFnZTsKIAot
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2ZvbnRHZW5l
cmljRmFtaWxpZXM7CiAgICAgU2Vjb25kcyBtX21pbmltdW1ET01UaW1lckludGVydmFsOwogCiAg
ICAgVGltZXIgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcApp
bmRleCAxNzJiNzIxYWNmNWU4MjFjNDMwMWMyZjI4MmE5ZjgyMTVmZGJhYWMxLi5kMzU3NWRkYWE2
ODg3YTY4MmE5YWM3YzFkOGNjYmQ4MWVjMzU2OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcApAQCAtMzAs
MTEgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgc2V0R2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgY29u
c3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitzdGF0aWMgYm9vbCBz
ZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFw
LCBjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIGlmIChm
YW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udE1hcC5yZW1vdmUoc3RhdGljX2Nh
c3Q8aW50PihzY3JpcHQpKTsKLSAgICBhdXRvJiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0
YXRpY19jYXN0PGludD4oc2NyaXB0KSwgQXRvbVN0cmluZyB7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICBhdXRvJiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0YXRpY19jYXN0PGludD4oc2Ny
aXB0KSwgU3RyaW5nIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChmYW1pbHlJbk1hcCA9
PSBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmYW1pbHlJbk1hcCA9IGZhbWls
eTsKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqKQog
ICAgIGNhY2hlZFVzZXJQcmVmZXJzU2ltcGxpZmllZCgpID0gY29tcHV0ZVVzZXJQcmVmZXJzU2lt
cGxpZmllZCgpOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1p
bHlGb3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENv
ZGUgc2NyaXB0KQorc3RhdGljIGNvbnN0IFN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3Jp
cHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUgc2NyaXB0
KQogewogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1h
cC5maW5kKHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSk7CiAgICAgaWYgKGl0ICE9IGZvbnRNYXAu
ZW5kKCkpCkBAIC04Myw3NiArODMsOTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGYKIAogRm9u
dEdlbmVyaWNGYW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcygpCiB7Ci0gICAgYWRkTGFuZ3Vh
Z2VDaGFuZ2VPYnNlcnZlcih0aGlzLCAmbGFuZ3VhZ2VDaGFuZ2VkKTsKLSAgICBsYW5ndWFnZUNo
YW5nZWQobnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZSwgWyZdIHsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
cigmb25jZSwgJmxhbmd1YWdlQ2hhbmdlZCk7CisgICAgICAgIGxhbmd1YWdlQ2hhbmdlZChudWxs
cHRyKTsKKyAgICB9KTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGll
czo6c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK0ZvbnRHZW5l
cmljRmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sK
KyAgICBGb250R2VuZXJpY0ZhbWlsaWVzIGNvcHk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6
IG1fc3RhbmRhcmRGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFt
aWx5TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsK
KyAgICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9zZXJpZkZvbnRGYW1pbHlNYXApCisgICAgICAg
IGNvcHkubV9zZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFs
dWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZpeGVkRm9u
dEZhbWlseU1hcCkKKyAgICAgICAgY29weS5tX2ZpeGVkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFs
dWUua2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgZm9yIChhdXRvICZr
ZXlWYWx1ZSA6IG1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCkKKyAgICAgICAgY29weS5tX3NhbnNT
ZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0
ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2N1cnNpdmVGb250RmFtaWx5
TWFwKQorICAgICAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtl
eSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFs
dWUgOiBtX2ZhbnRhc3lGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fZmFudGFzeUZvbnRG
YW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkp
OworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKQor
ICAgICAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwg
a2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJldHVybiBjb3B5OworfQorCitj
b25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnN0YW5kYXJkRm9udEZhbWlseShVU2Ny
aXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9y
U2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9t
U3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAot
Y29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZGb250RmFtaWx5KFVT
Y3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGll
czo6c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1
cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAsIHNjcmlw
dCk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNhbnNTZXJp
ZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250
R2VuZXJpY0ZhbWlsaWVzOjpzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkg
Y29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2Vy
aWZGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0
Citjb25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmN1cnNpdmVGb250RmFtaWx5KFVT
Y3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlG
b3JTY3JpcHQobV9jdXJzaXZlRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29uc3QgQXRv
bVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6ZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENv
ZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmYW50
YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fZmFudGFzeUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7
CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnBpY3RvZ3JhcGhG
b250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdl
bmVyaWNGYW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBj
b25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3Jh
cGhGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6
OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRD
b2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U3RhbmRhcmRGb250RmFt
aWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgcmV0
dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFw
LCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4
ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0
KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3Ry
aW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0
KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTZXJpZkZvbnRGYW1pbHkoY29u
c3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5l
cmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNj
cmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNj
cmlwdChtX3NlcmlmRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZv
bnRHZW5lcmljRmFtaWxpZXM6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmlu
ZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6
OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2Rl
IHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9z
YW5zU2VyaWZGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdl
bmVyaWNGYW1pbGllczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFt
aWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1
cnNpdmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQp
CiB7CiAgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZv
bnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWls
aWVzOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3Jp
cHRDb2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0RmFudGFzeUZvbnRG
YW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICBy
ZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9mYW50YXN5Rm9udEZhbWlseU1h
cCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFBp
Y3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUg
c2NyaXB0KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRQaWN0b2dyYXBoRm9udEZhbWls
eShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVy
biBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFw
LCBmYW1pbHksIHNjcmlwdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKaW5kZXggZjEyNGJiODZkMzRlMjY5NTFk
MjBlZTlkYjMwNjNhODY3YTkyYTRmYS4uMjM3ODcxNjBiOThiOWU4NGFlZjgwZWNjYzY1ZmQ1ZmNi
NzRhYzU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdlbmVyaWNGYW1pbGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRHZW5lcmljRmFtaWxpZXMuaApAQCAtNDIsMjggKzQyLDMwIEBAIHN0cnVjdCBVU2NyaXB0
Q29kZUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLTM7IH0K
IH07CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIEF0b21TdHJpbmcsIERlZmF1bHRIYXNoPGludD4s
IFVTY3JpcHRDb2RlSGFzaFRyYWl0cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKK3R5cGVkZWYgSGFz
aE1hcDxpbnQsIFN0cmluZywgRGVmYXVsdEhhc2g8aW50PiwgVVNjcmlwdENvZGVIYXNoVHJhaXRz
PiBTY3JpcHRGb250RmFtaWx5TWFwOwogCiBjbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb250R2VuZXJpY0ZhbWls
aWVzKCk7CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkoVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgZml4
ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNv
bnN0IEF0b21TdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcm
IGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVND
UklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIHBpY3RvZ3JhcGhGb250
RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIEZvbnRHZW5l
cmljRmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIHNldFN0YW5kYXJk
Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0
Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9v
bCBzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAg
ICBib29sIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRD
b2RlKTsKLSAgICBib29sIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBV
U2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3Ry
aW5nJiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29u
c3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0YW5kYXJk
Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25z
dCBTdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBj
b25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgY29uc3QgU3RyaW5n
JiBjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsK
KyAgICBjb25zdCBTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQ
VF9DT01NT04pIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHko
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisKKyAgICBib29sIHNldFN0YW5k
YXJkRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRG
aXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0
U2VyaWZGb250RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNl
dFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJv
b2wgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAg
IGJvb2wgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOwor
ICAgIGJvb2wgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENv
ZGUpOwogCiBwcml2YXRlOgogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zdGFuZGFyZEZvbnRG
YW1pbHlNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRS
YXcuY3BwCmluZGV4IGY0Y2ZlNjdkYjU5MmQ5NmQ4MDc2MjEzN2Y4OTA2MGU4Y2Y5OTcxN2YuLmU1
YzhlMWZmOWNjNGI1NGVmYmY3NDI1ODY2ZTM4OWYxNzdlODA4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IE9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBm
b250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgIHN3aXRjaE9uKGl0ZW0sIFsmXSAoQ1NT
VmFsdWVJRCBpZGVudCkgewogICAgICAgICAgICAgaXNHZW5lcmljRmFtaWx5ID0gaWRlbnQgIT0g
Q1NTVmFsdWVXZWJraXRCb2R5OwogICAgICAgICAgICAgZmFtaWx5ID0gaXNHZW5lcmljRmFtaWx5
ID8gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpnZW5lcmljRm9udEZhbWlseUZyb21WYWx1ZUlE
KGlkZW50KQotICAgICAgICAgICAgICAgIDogZG9jdW1lbnQuc2V0dGluZ3MoKS5zdGFuZGFyZEZv
bnRGYW1pbHkoKTsKKyAgICAgICAgICAgICAgICA6IEF0b21TdHJpbmcoZG9jdW1lbnQuc2V0dGlu
Z3MoKS5zdGFuZGFyZEZvbnRGYW1pbHkoKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgU3RyaW5n
JiBmYW1pbHlTdHJpbmcpIHsKICAgICAgICAgICAgIGZhbWlseSA9IGZhbWlseVN0cmluZzsKICAg
ICAgICAgfSk7Cg==
</data>
<flag name="commit-queue"
          id="435898"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418055</attachid>
            <date>2021-01-21 09:53:52 -0800</date>
            <delta_ts>2021-01-22 02:01:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220801-20210121175351.patch</filename>
            <type>text/plain</type>
            <size>30901</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0ZTU4MGFmODY5NWNl
OTNiNzVkM2VjOTFhN2FhMzM2NDczMDJjMi4uY2RlZDEzMDU5YzViYmUwZGI0YWVhYTI3YjEzNTVi
NTdmZDcwNGFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRHZW5lcmljRmFt
aWxpZXMgc3RvcmFnZSBmcm9tIFNldHRpbmdzQmFzZSB0byBTZXR0aW5nczo6VmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEZvbnRHZW5l
cmljRmFtaWxpZXMgbWVtYmVyIGZyb20gU2V0dGluZ3NCYXNlIHRvIFNldHRpbmdzOjpWYWx1ZXMK
KyAgICAgICAgc28gdGhhdCBpdCBjYW4gcG90ZW50aWFsbHkgYmUgdXNlZCB3aXRoaW4gV29ya2Vy
cy4gVGhpcyB3aWxsIGFpZCB3aXRoCisgICAgICAgIGZvbnQgdXNhZ2Ugb2ZmIHRoZSBtYWluIHRo
cmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAg
ICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMv
U2V0dGluZ3MuaC5lcmI6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRDdXJzaXZlRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZhbnRhc3lGb250RmFtaWx5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0RmFudGFzeUZvbnRGYW1p
bHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpwaWN0b2dyYXBoRm9udEZhbWls
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Z2Vu
ZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNG
YW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEdlbmVyaWNGYW1pbGllczo6c3RhbmRhcmRGb250RmFtaWx5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9udEZh
bWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpjdXJz
aXZlRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWls
aWVzOjpmYW50YXN5Rm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpwaWN0b2dyYXBoRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFtaWx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTYW5zU2VyaWZGb250
RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1cnNp
dmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dEZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9y
Rm9udFJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcp
OgorCiAyMDIxLTAxLTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXVtUaHVuZGVyXSBBY2NlcHQgbm8gcHJv
dGVjdGlvbiBzeXN0ZW0gc3BlY2lmaWMgY2FwcyBmb3IgQ0VOQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYWRlNWM2OTAyNDI5NzYyNWM3MGRhYjc5MGE1YzJjNWE4Nzc3ZWM2MS4uYzU1NGIyZGI1YzYz
NThkOGM5Njc0MmY0ZDJhZWNhODE0MTNiZDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTc2
LDYgKzExNzYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbk51bGwuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxp
ZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFu
Z2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0
ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCBlOTkxYTFlMGQ0MWZhYTFlYzEwOTk5MzMxODQ2
MGFhNDM2OTA1ZDhhLi5mZWM3YWM3ZTU0MGQxYmExMmRiZDY5ZWEzM2U1OGVkMTQ2MjUxNWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRp
bmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRl
cy9TZXR0aW5ncy5jcHAuZXJiCkBAIC0xMDYsNiArMTA2LDcgQEAgU2V0dGluZ3M6OlZhbHVlcyBT
ZXR0aW5nczo6VmFsdWVzOjppc29sYXRlZENvcHkoKSBjb25zdAogPCUtIGZvciBAc2V0dGluZyBp
biBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJpZGVTZXR0aW5ncyBkbyAtJT4KICAgICAg
ICAgY3Jvc3NUaHJlYWRDb3B5KDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUp
LAogPCUtIGVuZCAtJT4KKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KGZvbnRHZW5lcmljRmFtaWxp
ZXMpLAogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxTZXR0aW5nc1NldC5jb25kaXRpb25zIGRv
IC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNldHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0
aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25kaXRpb24uY29uZGl0aW9uIC0lPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5n
cy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGlu
Z3MuaC5lcmIKaW5kZXggMzcxZjFlNWYyNWEyMTg4MjNiNTQzNjRhN2M2ZTg5ZDJmOTYxY2UzOS4u
YjFhMjU4NjM1ODg3ZDgwZjM5ZDEyZTVkNmUyMDBlNDQ0Mjg0YTM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1NldHRpbmdzLmguZXJi
CkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIDwlPSBAc2V0dGluZy5zZXR0ZXJG
dW5jdGlvbk5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZShPcHRpb25hbDw8JT0gQHNldHRpbmcucGFy
YW1ldGVyVHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSkgeyBt
X3ZhbHVlcy48JT0gQHNldHRpbmcubmFtZSAlPkluc3BlY3Rvck92ZXJyaWRlID0gPCU9IEBzZXR0
aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZTsgfQogICAgIDwlLSBlbmQgLSU+CiA8JS0gZW5k
IC0lPgorICAgIEZvbnRHZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBmaW5h
bCB7IHJldHVybiBtX3ZhbHVlcy5mb250R2VuZXJpY0ZhbWlsaWVzOyB9CisgICAgY29uc3QgRm9u
dEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdmFsdWVzLmZvbnRHZW5lcmljRmFtaWxpZXM7IH0KIAogICAgIHN0cnVjdCBWYWx1ZXMg
ewogICAgICAgICB2b2lkIGluaXRpYWxpemUoKTsKQEAgLTc3LDYgKzc5LDcgQEAgcHVibGljOgog
ICAgICAgICBPcHRpb25hbDw8JT0gQHNldHRpbmcudHlwZSAlPj4gPCU9IEBzZXR0aW5nLm5hbWUg
JT5JbnNwZWN0b3JPdmVycmlkZTsKIDwlLSBlbmQgLSU+CiAKKyAgICAgICAgRm9udEdlbmVyaWNG
YW1pbGllcyBmb250R2VuZXJpY0ZhbWlsaWVzOwogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxT
ZXR0aW5nc1NldC5jb25kaXRpb25zIGRvIC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNl
dHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25k
aXRpb24uY29uZGl0aW9uIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3ZDliYmY4YTliZTEwYWQxMzY1ZTZmZjY1MTA0OWMx
OTQzMmJhODMuLmYyZDNlMTVhMzMxZTdlNTI1NzEyNjk3YTQ0MGUwNzE2MzAwYzcxYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTUxMDgsNiArNTEwOCw3IEBACiAJCUU0NDYxNDNDMENENjg5Q0MwMEZBREE3NSAvKiBKU0hUTUxT
b3VyY2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEI0MjM3MjBDQkZCNkUwMDBBRjJFQ0UgLyogSlNIVE1MU291cmNlRWxlbWVudC5oICov
OyB9OwogCQlFNDQ2MTQ1MjBDRDY4QTM1MDBGQURBNzUgLyogUmVuZGVyVmlkZW8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjQxRTM0MENCRkI2MDkw
MEFGMkVDRSAvKiBSZW5kZXJWaWRlby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0NEI0QkI0MTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNo
ZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
NEI0QkIyMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuaCAqLzsgfTsKKwkJRTQy
RUUzQTcxNzU3NkU1NTAwRUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NEVFM0E3MTc1NzZFNTUwMEVF
RThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ0RkExODUxQkNBNkI1QTAwOTFCNkVGIC8qIENvbXBv
c2VkVHJlZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDRGQTE4NDFCQ0E2QjVBMDA5MUI2RUYgLyogQ29tcG9zZWRUcmVlSXRlcmF0b3Iu
aCAqLzsgfTsKIAkJRTQ1MUM2MzEyMzk0MDI3OTAwOTkzMTkwIC8qIExheW91dFVuaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjczOTE4QzIxMDZD
RUREMDA2QUYyNjIgLyogTGF5b3V0VW5pdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDUxQzYzMjIzOTQwMzFBMDA5OTMxOTAgLyogTWFyZ2lu
VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
RTdBQTI2MjFDMzdCNjMwMDI5NkRDRCAvKiBNYXJnaW5UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjExMyw2ICszMjExNCw3IEBACiAJ
CQkJMUM2NjI2MTExQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzI0RUVBNTFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDMTJBQzJCMUVFNzc4QUUwMDc5RTBBMCAvKiBGb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDJFRTNBNzE3NTc2RTU1MDBFRUU4
Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0QTUzMkYy
NTYwNTdDRDAwMjhDNTkyIC8qIEZvbnRMb2FkVGltaW5nT3ZlcnJpZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjUzMjBENkIxMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGEu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRl
eCBkMjc4NTJjNDg3NjhhY2MwMDQ1Y2U3ZGIwNjA0NWQzZmZhZjhiOTgxLi5jMGI5YmRiNjQ3MWI1
MTliMmM2ODMzMDMzYmUzYWFmYThmM2FkMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcApAQCAtMjc3LDE5ICsyNzcsMTkgQEAgc3RhdGljIE9wdGlvbmFsPEF0b21TdHJp
bmc+IHJlc29sdmVHZW5lcmljRmFtaWx5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRm9udEQK
IAogICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IGZvbnREZXNjcmlwdGlvbi5zY3JpcHQoKTsKICAg
ICBpZiAoZmFtaWx5TmFtZSA9PSBzZXJpZkZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdz
LnNlcmlmRm9udEZhbWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0
aW5ncy5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc2Fu
c1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3Muc2Fuc1NlcmlmRm9udEZhbWls
eShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5zYW5zU2VyaWZG
b250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGN1cnNpdmVGYW1pbHkp
Ci0gICAgICAgIHJldHVybiBzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQpOworICAg
ICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5ncy5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQp
KTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBmYW50YXN5RmFtaWx5KQotICAgICAgICByZXR1cm4g
c2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21T
dHJpbmcoc2V0dGluZ3MuZmFudGFzeUZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWls
eU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MuZml4ZWRG
b250RmFtaWx5KHNjcmlwdCk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKHNldHRpbmdzLmZp
eGVkRm9udEZhbWlseShzY3JpcHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBwaWN0b2dyYXBo
RmFtaWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MucGljdG9ncmFwaEZvbnRGYW1pbHkoc2Ny
aXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3MucGljdG9ncmFwaEZvbnRG
YW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHkpCi0g
ICAgICAgIHJldHVybiBzZXR0aW5ncy5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAg
ICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3Muc3RhbmRhcmRGb250RmFtaWx5KHNjcmlwdCkp
OwogCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KQEAgLTQyOSw4ICs0MjksOCBAQCBSZWZQ
dHI8Rm9udD4gQ1NTRm9udFNlbGVjdG9yOjpmYWxsYmFja0ZvbnRBdChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdAogICAgIGF1dG8mIHBpY3RvZ3JhcGhGb250RmFtaWx5ID0gbV9k
b2N1bWVudC0+c2V0dGluZ3MoKS5waWN0b2dyYXBoRm9udEZhbWlseSgpOwogICAgIGF1dG8gZm9u
dCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24s
IHBpY3RvZ3JhcGhGb250RmFtaWx5KTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJBUElTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBpY3Rv
Z3JhcGhGb250RmFtaWx5LnN0cmluZygpLCAhIWZvbnQpOwotICAgIAorICAgICAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nRm9udExvYWQoKm1fZG9jdW1lbnQsIHBpY3RvZ3Jh
cGhGb250RmFtaWx5LCAhIWZvbnQpOworCiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBhYTdkODRiOGNjMTRjNDMyYWEwNzIxYjgwMjdj
YmNjMWUwYmM5ZDgwLi41ODYzZTViMDVmZmZjNWNlYjNmMmZlOWE0OWE4OWQ1MjgyNmU5OWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRD
YXNjYWRlLmgiCi0jaW5jbHVkZSAiRm9udEdlbmVyaWNGYW1pbGllcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBA
IC02MywxMyArNjIsOSBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5
Q2hhbmdlKFBhZ2UqIHBhZ2UpCiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBh
Z2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyht
YWtlVW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX21pbmltdW1ET01UaW1l
ckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBtX3Nl
dEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKIHsKLSAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBi
ZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9tU3RyaW5nCi0gICAgLy8g
aGFzaCBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KLSAgICBBdG9tU3RyaW5nOjppbml0KCk7CiAg
ICAgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKICAgICBtX3BhZ2UgPSBwYWdlOyAv
LyBQYWdlIGlzIG5vdCB5ZXQgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb25zdHJ1Y3RpbmcgU2V0
dGluZ3MsIHNvIGtlZXBpbmcgbV9wYWdlIG51bGwgb3ZlciBpbml0aWFsaXplRGVmYXVsdEZvbnRG
YW1pbGllcygpIGNhbGwuCiB9CkBAIC05Miw4NiArODcsODYgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6
OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKICNlbmRpZgogCi1jb25zdCBB
dG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSBz
Y3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c3RhbmRhcmRGb250RmFt
aWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2VuZXJp
Y0ZhbWlsaWVzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdl
bmVyaWNGYW1pbGllcygpLnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNl
dHRpbmdzQmFzZTo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWls
eSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9u
dEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAg
IGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U3RhbmRhcmRGb250RmFt
aWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWls
aWVzKCkuc2V0U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hh
bmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2Up
OwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseShV
U2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6Zml4
ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9m
b250R2VuZXJpY0ZhbWlsaWVzLT5maXhlZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4g
Zm9udEdlbmVyaWNGYW1pbGllcygpLmZpeGVkRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lk
IFNldHRpbmdzQmFzZTo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWls
eSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9udEZh
bWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAgIGJv
b2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0Rml4ZWRGb250RmFtaWx5KGZh
bWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCku
c2V0Rml4ZWRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAg
ICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1j
b25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29k
ZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6c2VyaWZGb250RmFt
aWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2VuZXJp
Y0ZhbWlsaWVzLT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdlbmVy
aWNGYW1pbGllcygpLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRpbmdz
QmFzZTo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlw
dENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseShjb25z
dCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdl
cyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2VyaWZGb250RmFtaWx5KGZhbWlseSwgc2Ny
aXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCkuc2V0U2VyaWZG
b250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52
YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9t
U3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2Ny
aXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5lcmlj
RmFtaWxpZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdl
bmVyaWNGYW1pbGllcygpLnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKIH0KIAotdm9pZCBT
ZXR0aW5nc0Jhc2U6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFt
aWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewot
ICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0gZm9udEdlbmVyaWNG
YW1pbGllcygpLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAgIGlm
IChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1f
cGFnZSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5nc0Jh
c2U6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5jdXJzaXZlRm9udEZhbWlseShzY3JpcHQpOwor
ICAgIHJldHVybiBmb250R2VuZXJpY0ZhbWlsaWVzKCkuY3Vyc2l2ZUZvbnRGYW1pbHkoc2NyaXB0
KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0
b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6
OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBz
Y3JpcHQpCiB7Ci0gICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5zZXRD
dXJzaXZlRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2VzID0gZm9u
dEdlbmVyaWNGYW1pbGllcygpLnNldEN1cnNpdmVGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsK
ICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNo
YW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZhbnRh
c3lGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgU2V0
dGluZ3NCYXNlOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+ZmFudGFzeUZvbnRGYW1pbHkoc2Ny
aXB0KTsKKyAgICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZhbnRhc3lGb250RmFtaWx5
KHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWlseShj
b25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3ZvaWQgU2V0dGlu
Z3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlw
dENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGll
cy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOworICAgIGJvb2wgY2hhbmdl
cyA9IGZvbnRHZW5lcmljRmFtaWxpZXMoKS5zZXRGYW50YXN5Rm9udEZhbWlseShmYW1pbHksIHNj
cmlwdCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGludmFsaWRhdGVBZnRlckdlbmVyaWNG
YW1pbHlDaGFuZ2UobV9wYWdlKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgU2V0dGluZ3NCYXNl
OjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBT
dHJpbmcmIFNldHRpbmdzQmFzZTo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2Ny
aXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnBpY3RvZ3Jh
cGhGb250RmFtaWx5KHNjcmlwdCk7CisgICAgcmV0dXJuIGZvbnRHZW5lcmljRmFtaWxpZXMoKS5w
aWN0b2dyYXBoRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29k
ZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29u
c3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKLSAgICBib29sIGNoYW5n
ZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGZhbWls
eSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWlsaWVzKCkuc2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAgIGlmIChjaGFuZ2VzKQog
ICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCA3NWU4YTBhZmVkYmEwZmYwY2Y3NTQ3ZWUy
MzMyMjUyYmViZTQwOGNjLi41ZGJlZTMwYzU5Nzk0OTI5YmRjYTc1NTJiZGRkYTBlNGU2MzEyMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRhYmxlTGlua0JlaGF2aW9yLmgiCiAj
aW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZS5oIgorI2luY2x1ZGUgIkZvbnRHZW5lcmljRmFt
aWxpZXMuaCIKICNpbmNsdWRlICJGb250TG9hZFRpbWluZ092ZXJyaWRlLmgiCiAjaW5jbHVkZSAi
Rm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlICJGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUu
aCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
QXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUgIkRh
dGFEZXRlY3RvclR5cGUuaCIKQEAgLTU3LDEzICs1NywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXM7CiBjbGFzcyBQYWdlOwogCiBjbGFzcyBT
ZXR0aW5nc0Jhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRpbmdzQmFzZSk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIH5TZXR0aW5nc0Jhc2UoKTsKKyAg
ICB2aXJ0dWFsIH5TZXR0aW5nc0Jhc2UoKTsKIAogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIHsg
bV9wYWdlID0gbnVsbHB0cjsgfQogCkBAIC03NCwyNiArNzMsMjkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgg
PSA1MTI7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRNYXhpbXVtUmVuZGVyVHJl
ZURlcHRoID0gNTEyOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShV
U2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZvbnRHZW5l
cmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSA9IDA7CisgICAgdmlydHVhbCBjb25z
dCBGb250R2VuZXJpY0ZhbWlsaWVzJiBmb250R2VuZXJpY0ZhbWlsaWVzKCkgY29uc3QgPSAwOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0
cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YW5kYXJkRm9udEZh
bWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29k
ZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBzZXJpZkZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUg
PSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBmaXhl
ZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmlu
ZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwotICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IEF0b21TdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBU
X0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJpZkZvbnRGYW1p
bHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBzZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnNp
dmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBjdXJzaXZlRm9udEZh
bWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENv
ZGUgPSBVU0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBz
YW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9t
U3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgQXRvbVN0cmluZyYgZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NS
SVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDdXJzaXZlRm9u
dEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRD
b2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgcGlj
dG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcm
LCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
IGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQaWN0b2dyYXBoRm9udEZhbWls
eShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHBpY3RvZ3JhcGhGb250RmFtaWx5KFVTY3JpcHRDb2Rl
ID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
aW5pbXVtRE9NVGltZXJJbnRlcnZhbChTZWNvbmRzKTsgLy8gSW5pdGlhbGl6ZWQgdG8gRE9NVGlt
ZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKS4KICAgICBTZWNvbmRzIG1pbmltdW1ET01UaW1l
ckludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbDsgfQpA
QCAtMTQwLDcgKzE0Miw2IEBAIHByb3RlY3RlZDoKIAogICAgIFBhZ2UqIG1fcGFnZTsKIAotICAg
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2ZvbnRHZW5lcmlj
RmFtaWxpZXM7CiAgICAgU2Vjb25kcyBtX21pbmltdW1ET01UaW1lckludGVydmFsOwogCiAgICAg
VGltZXIgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAppbmRl
eCAxNzJiNzIxYWNmNWU4MjFjNDMwMWMyZjI4MmE5ZjgyMTVmZGJhYWMxLi5kMzU3NWRkYWE2ODg3
YTY4MmE5YWM3YzFkOGNjYmQ4MWVjMzU2OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcApAQCAtMzAsMTEg
KzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgc2V0R2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitzdGF0aWMgYm9vbCBzZXRH
ZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBj
b25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIGlmIChmYW1p
bHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udE1hcC5yZW1vdmUoc3RhdGljX2Nhc3Q8
aW50PihzY3JpcHQpKTsKLSAgICBhdXRvJiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0YXRp
Y19jYXN0PGludD4oc2NyaXB0KSwgQXRvbVN0cmluZyB7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBhdXRvJiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0YXRpY19jYXN0PGludD4oc2NyaXB0
KSwgU3RyaW5nIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChmYW1pbHlJbk1hcCA9PSBm
YW1pbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmYW1pbHlJbk1hcCA9IGZhbWlseTsK
QEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqKQogICAg
IGNhY2hlZFVzZXJQcmVmZXJzU2ltcGxpZmllZCgpID0gY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxp
ZmllZCgpOwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlG
b3JTY3JpcHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUg
c2NyaXB0KQorc3RhdGljIGNvbnN0IFN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQo
Y29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUgc2NyaXB0KQog
ewogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1hcC5m
aW5kKHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSk7CiAgICAgaWYgKGl0ICE9IGZvbnRNYXAuZW5k
KCkpCkBAIC04Myw3NiArODMsOTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGdlbmVyaWNG
b250RmFtaWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGYKIAogRm9udEdl
bmVyaWNGYW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcygpCiB7Ci0gICAgYWRkTGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlcih0aGlzLCAmbGFuZ3VhZ2VDaGFuZ2VkKTsKLSAgICBsYW5ndWFnZUNoYW5n
ZWQobnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZSwgWyZdIHsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigm
b25jZSwgJmxhbmd1YWdlQ2hhbmdlZCk7CisgICAgICAgIGxhbmd1YWdlQ2hhbmdlZChudWxscHRy
KTsKKyAgICB9KTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6
c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK0ZvbnRHZW5lcmlj
RmFtaWxpZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAg
ICBGb250R2VuZXJpY0ZhbWlsaWVzIGNvcHk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1f
c3RhbmRhcmRGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFtaWx5
TWFwLmFkZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBmb3IgKGF1dG8gJmtleVZhbHVlIDogbV9zZXJpZkZvbnRGYW1pbHlNYXApCisgICAgICAgIGNv
cHkubV9zZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUu
aXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZpeGVkRm9udEZh
bWlseU1hcCkKKyAgICAgICAgY29weS5tX2ZpeGVkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUu
a2V5LCBrZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgZm9yIChhdXRvICZrZXlW
YWx1ZSA6IG1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCkKKyAgICAgICAgY29weS5tX3NhbnNTZXJp
ZkZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRD
b3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2N1cnNpdmVGb250RmFtaWx5TWFw
KQorICAgICAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwg
a2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUg
OiBtX2ZhbnRhc3lGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1p
bHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKQorICAg
ICAgICBjb3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5
VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJldHVybiBjb3B5OworfQorCitjb25z
dCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0
Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2Ny
aXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3Ry
aW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2Ny
aXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRG
YW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9u
dEZhbWlseUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29u
c3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZGb250RmFtaWx5KFVTY3Jp
cHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6
c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4g
Z2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7
CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNhbnNTZXJpZkZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2Vu
ZXJpY0ZhbWlsaWVzOjpzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29u
c3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2VyaWZG
b250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBGb250R2VuZXJp
Y0ZhbWlsaWVzOjpjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citj
b25zdCBTdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmN1cnNpdmVGb250RmFtaWx5KFVTY3Jp
cHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JT
Y3JpcHQobV9jdXJzaXZlRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29uc3QgQXRvbVN0
cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6ZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUg
c2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmYW50YXN5
Rm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVy
aWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fZmFudGFzeUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CiB9
CiAKLWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnBpY3RvZ3JhcGhGb250
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdlbmVy
aWNGYW1pbGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25z
dAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhG
b250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2Rl
IHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U3RhbmRhcmRGb250RmFtaWx5
KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgcmV0dXJu
IHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBm
YW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRG
b250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQor
Ym9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5n
JiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0Zv
bnRGYW1pbHlGb3JTY3JpcHQobV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsK
IH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmlj
RmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlw
dENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlw
dChtX3NlcmlmRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRH
ZW5lcmljRmFtaWxpZXM6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNl
dFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNj
cmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5z
U2VyaWZGb250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVy
aWNGYW1pbGllczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1cnNp
dmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7
CiAgICAgcmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRG
YW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVz
OjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRD
b2RlIHNjcmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0RmFudGFzeUZvbnRGYW1p
bHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1
cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9mYW50YXN5Rm9udEZhbWlseU1hcCwg
ZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFBpY3Rv
Z3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2Ny
aXB0KQorYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRQaWN0b2dyYXBoRm9udEZhbWlseShj
b25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBz
ZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLCBm
YW1pbHksIHNjcmlwdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKaW5kZXggZjEyNGJiODZkMzRlMjY5NTFkMjBl
ZTlkYjMwNjNhODY3YTkyYTRmYS4uMjM3ODcxNjBiOThiOWU4NGFlZjgwZWNjYzY1ZmQ1ZmNiNzRh
YzU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdl
bmVyaWNGYW1pbGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRHZW5lcmljRmFtaWxpZXMuaApAQCAtNDIsMjggKzQyLDMwIEBAIHN0cnVjdCBVU2NyaXB0Q29k
ZUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRpYyBi
b29sIGlzRGVsZXRlZFZhbHVlKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLTM7IH0KIH07
CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIEF0b21TdHJpbmcsIERlZmF1bHRIYXNoPGludD4sIFVT
Y3JpcHRDb2RlSGFzaFRyYWl0cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKK3R5cGVkZWYgSGFzaE1h
cDxpbnQsIFN0cmluZywgRGVmYXVsdEhhc2g8aW50PiwgVVNjcmlwdENvZGVIYXNoVHJhaXRzPiBT
Y3JpcHRGb250RmFtaWx5TWFwOwogCiBjbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb250R2VuZXJpY0ZhbWlsaWVz
KCk7CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkoVVNjcmlwdENv
ZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgZml4ZWRG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0
IEF0b21TdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9O
KSBjb25zdDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5KFVTY3Jp
cHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGN1
cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAg
IGNvbnN0IEF0b21TdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQ
VF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIHBpY3RvZ3JhcGhGb250RmFt
aWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIEZvbnRHZW5lcmlj
RmFtaWxpZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIHNldFN0YW5kYXJkRm9u
dEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0Rml4
ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBz
ZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAgICBi
b29sIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2Rl
KTsKLSAgICBib29sIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2Ny
aXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5n
JiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3Qg
QXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9u
dEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBT
dHJpbmcmIGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKKyAgICBjb25zdCBTdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJ
UFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHko
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBj
dXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAg
ICBjb25zdCBTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9D
T01NT04pIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHkoVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisKKyAgICBib29sIHNldFN0YW5kYXJk
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRGaXhl
ZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0U2Vy
aWZGb250RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNldFNh
bnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wg
c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJv
b2wgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAg
IGJvb2wgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUp
OwogCiBwcml2YXRlOgogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zdGFuZGFyZEZvbnRGYW1p
bHlNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JG
b250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcu
Y3BwCmluZGV4IGY0Y2ZlNjdkYjU5MmQ5NmQ4MDc2MjEzN2Y4OTA2MGU4Y2Y5OTcxN2YuLmU1Yzhl
MWZmOWNjNGI1NGVmYmY3NDI1ODY2ZTM4OWYxNzdlODA4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC03NCw3ICs3NCw3IEBAIE9w
dGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250
UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgIHN3aXRjaE9uKGl0ZW0sIFsmXSAoQ1NTVmFs
dWVJRCBpZGVudCkgewogICAgICAgICAgICAgaXNHZW5lcmljRmFtaWx5ID0gaWRlbnQgIT0gQ1NT
VmFsdWVXZWJraXRCb2R5OwogICAgICAgICAgICAgZmFtaWx5ID0gaXNHZW5lcmljRmFtaWx5ID8g
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpnZW5lcmljRm9udEZhbWlseUZyb21WYWx1ZUlEKGlk
ZW50KQotICAgICAgICAgICAgICAgIDogZG9jdW1lbnQuc2V0dGluZ3MoKS5zdGFuZGFyZEZvbnRG
YW1pbHkoKTsKKyAgICAgICAgICAgICAgICA6IEF0b21TdHJpbmcoZG9jdW1lbnQuc2V0dGluZ3Mo
KS5zdGFuZGFyZEZvbnRGYW1pbHkoKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgU3RyaW5nJiBm
YW1pbHlTdHJpbmcpIHsKICAgICAgICAgICAgIGZhbWlseSA9IGZhbWlseVN0cmluZzsKICAgICAg
ICAgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418120</attachid>
            <date>2021-01-22 02:01:58 -0800</date>
            <delta_ts>2021-01-22 03:00:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220801-20210122100157.patch</filename>
            <type>text/plain</type>
            <size>31864</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY0ZTU4MGFmODY5NWNl
OTNiNzVkM2VjOTFhN2FhMzM2NDczMDJjMi4uM2QyMThkM2UzMmQyOWQyZGJjMWMyNGNlODI0ZDRl
OTNkMTFlMTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEZvbnRHZW5lcmljRmFt
aWxpZXMgc3RvcmFnZSBmcm9tIFNldHRpbmdzQmFzZSB0byBTZXR0aW5nczo6VmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBNb3ZlIEZvbnRH
ZW5lcmljRmFtaWxpZXMgbWVtYmVyIGZyb20gU2V0dGluZ3NCYXNlIHRvIFNldHRpbmdzOjpWYWx1
ZXMKKyAgICAgICAgc28gdGhhdCBpdCBjYW4gcG90ZW50aWFsbHkgYmUgdXNlZCB3aXRoaW4gV29y
a2Vycy4gVGhpcyB3aWxsIGFpZCB3aXRoCisgICAgICAgIGZvbnQgdXNhZ2Ugb2ZmIHRoZSBtYWlu
IHRocmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9TZXR0aW5ncy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMvU2V0dGluZ3NUZW1wbGF0
ZXMvU2V0dGluZ3MuaC5lcmI6CisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGb250U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWlseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFN0YW5kYXJkRm9udEZh
bWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZpeGVkRm9udEZhbWlseSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldEZpeGVkRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZhbWlseSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFNlcmlmRm9udEZhbWlseSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRTYW5zU2VyaWZGb250RmFt
aWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpzZXRDdXJzaXZlRm9udEZh
bWlseSk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OmZhbnRhc3lGb250RmFtaWx5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6c2V0RmFudGFzeUZvbnRG
YW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpwaWN0b2dyYXBoRm9udEZh
bWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OnNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFtaWxpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
Z2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVy
aWNGYW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250
R2VuZXJpY0ZhbWlsaWVzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEdlbmVyaWNGYW1pbGllczo6c3RhbmRhcmRGb250RmFtaWx5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OmZpeGVkRm9udEZhbWlseSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXJpZkZvbnRGYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2Fuc1NlcmlmRm9u
dEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpj
dXJzaXZlRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0Zh
bWlsaWVzOjpmYW50YXN5Rm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
R2VuZXJpY0ZhbWlsaWVzOjpwaWN0b2dyYXBoRm9udEZhbWlseSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTdGFuZGFyZEZvbnRGYW1pbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFtaWx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNlcmlmRm9udEZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTYW5zU2VyaWZG
b250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1
cnNpdmVGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFtaWxpZXM6
OnNldEZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHZW5lcmljRmFt
aWxpZXM6OnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRm9udFJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6cmVzb2x2ZUZvckZvbnRS
YXcpOgorCiAyMDIxLTAxLTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bRU1FXVtUaHVuZGVyXSBBY2NlcHQgbm8g
cHJvdGVjdGlvbiBzeXN0ZW0gc3BlY2lmaWMgY2FwcyBmb3IgQ0VOQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYWRlNWM2OTAyNDI5NzYyNWM3MGRhYjc5MGE1YzJjNWE4Nzc3ZWM2MS4uYzU1NGIyZGI1
YzYzNThkOGM5Njc0MmY0ZDJhZWNhODE0MTNiZDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MTc2LDYgKzExNzYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udERlc2NyaXB0aW9uLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbk51bGwuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5lcmljRmFt
aWxpZXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
UmFuZ2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NUZW1w
bGF0ZXMvU2V0dGluZ3MuY3BwLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvU2V0dGluZ3NU
ZW1wbGF0ZXMvU2V0dGluZ3MuY3BwLmVyYgppbmRleCBlOTkxYTFlMGQ0MWZhYTFlYzEwOTk5MzMx
ODQ2MGFhNDM2OTA1ZDhhLi44NTJkNjdiN2IyODlkNmIzYTcwZmRiZjlmY2IyNmU5MWQ1ZjY5ZmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdzVGVtcGxhdGVzL1Nl
dHRpbmdzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9TZXR0aW5ncy5jcHAuZXJiCkBAIC02OCw2ICs2OCwxMCBAQCBTZXR0aW5nczo6U2V0dGlu
Z3MoUGFnZSogcGFnZSkKICAgICA6IFNldHRpbmdzQmFzZShwYWdlKQogewogICAgIG1fdmFsdWVz
LmluaXRpYWxpemUoKTsKKworICAgIG1fcGFnZSA9IG51bGxwdHI7IC8vIFBhZ2UgaXMgbm90IHll
dCBmdWxseSBpbml0aWFsaXplZCB3aGVuIGNvbnN0cnVjdGluZyBTZXR0aW5ncywgc28ga2VlcGlu
ZyBtX3BhZ2UgbnVsbCBvdmVyIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkgY2FsbC4K
KyAgICBpbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpOworICAgIG1fcGFnZSA9IHBhZ2U7
CiB9CiAKIHZvaWQgU2V0dGluZ3M6OlZhbHVlczo6aW5pdGlhbGl6ZSgpCkBAIC0xMDYsNiArMTEw
LDcgQEAgU2V0dGluZ3M6OlZhbHVlcyBTZXR0aW5nczo6VmFsdWVzOjppc29sYXRlZENvcHkoKSBj
b25zdAogPCUtIGZvciBAc2V0dGluZyBpbiBAYWxsU2V0dGluZ3NTZXQuaW5zcGVjdG9yT3ZlcnJp
ZGVTZXR0aW5ncyBkbyAtJT4KICAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KDwlPSBAc2V0dGluZy5u
YW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUpLAogPCUtIGVuZCAtJT4KKyAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KGZvbnRHZW5lcmljRmFtaWxpZXMpLAogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxT
ZXR0aW5nc1NldC5jb25kaXRpb25zIGRvIC0lPgogPCUtIGlmIEBjb25kaXRpb24ubm9uQm9vbFNl
dHRpbmdzTmVlZGluZ0ltcGxlbWVudGF0aW9uLmxlbmd0aCAhPSAwIC0lPgogPCUtIGlmIEBjb25k
aXRpb24uY29uZGl0aW9uIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9T
ZXR0aW5nc1RlbXBsYXRlcy9TZXR0aW5ncy5oLmVyYiBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMv
U2V0dGluZ3NUZW1wbGF0ZXMvU2V0dGluZ3MuaC5lcmIKaW5kZXggMzcxZjFlNWYyNWEyMTg4MjNi
NTQzNjRhN2M2ZTg5ZDJmOTYxY2UzOS4uOWZmYWVmYmMwNjY2NmQ4YTk3N2JjYjljNDE3NDdiMDRi
Njc0MTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9TZXR0aW5nc1RlbXBs
YXRlcy9TZXR0aW5ncy5oLmVyYgorKysgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL1NldHRpbmdz
VGVtcGxhdGVzL1NldHRpbmdzLmguZXJiCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNldHRpbmdz
IDogcHVibGljIFNldHRpbmdzQmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8U2V0dGluZ3M+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTZXR0aW5ncyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2V0dGluZ3M+IGNyZWF0
ZShQYWdlKik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgflNldHRpbmdzKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+U2V0dGluZ3MoKTsKIAogPCUtIGZvciBAY29uZGl0aW9uIGluIEBhbGxT
ZXR0aW5nc1NldC5jb25kaXRpb25zIGRvIC0lPgogPCUtIGlmIEBjb25kaXRpb24uY29uZGl0aW9u
IC0lPgpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCA8JT0gQHNldHRpbmcuc2V0
dGVyRnVuY3Rpb25OYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUoT3B0aW9uYWw8PCU9IEBzZXR0aW5n
LnBhcmFtZXRlclR5cGUgJT4+IDwlPSBAc2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGUp
IHsgbV92YWx1ZXMuPCU9IEBzZXR0aW5nLm5hbWUgJT5JbnNwZWN0b3JPdmVycmlkZSA9IDwlPSBA
c2V0dGluZy5uYW1lICU+SW5zcGVjdG9yT3ZlcnJpZGU7IH0KICAgICA8JS0gZW5kIC0lPgogPCUt
IGVuZCAtJT4KKyAgICBGb250R2VuZXJpY0ZhbWlsaWVzJiBmb250R2VuZXJpY0ZhbWlsaWVzKCkg
ZmluYWwgeyByZXR1cm4gbV92YWx1ZXMuZm9udEdlbmVyaWNGYW1pbGllczsgfQorICAgIGNvbnN0
IEZvbnRHZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3ZhbHVlcy5mb250R2VuZXJpY0ZhbWlsaWVzOyB9CiAKICAgICBzdHJ1Y3QgVmFs
dWVzIHsKICAgICAgICAgdm9pZCBpbml0aWFsaXplKCk7CkBAIC03Nyw2ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgT3B0aW9uYWw8PCU9IEBzZXR0aW5nLnR5cGUgJT4+IDwlPSBAc2V0dGluZy5u
YW1lICU+SW5zcGVjdG9yT3ZlcnJpZGU7CiA8JS0gZW5kIC0lPgogCisgICAgICAgIEZvbnRHZW5l
cmljRmFtaWxpZXMgZm9udEdlbmVyaWNGYW1pbGllczsKIDwlLSBmb3IgQGNvbmRpdGlvbiBpbiBA
YWxsU2V0dGluZ3NTZXQuY29uZGl0aW9ucyBkbyAtJT4KIDwlLSBpZiBAY29uZGl0aW9uLm5vbkJv
b2xTZXR0aW5nc05lZWRpbmdJbXBsZW1lbnRhdGlvbi5sZW5ndGggIT0gMCAtJT4KIDwlLSBpZiBA
Y29uZGl0aW9uLmNvbmRpdGlvbiAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjN2Q5YmJmOGE5YmUxMGFkMTM2NWU2ZmY2NTEw
NDljMTk0MzJiYTgzLi5mMmQzZTE1YTMzMWU3ZTUyNTcxMjY5N2E0NDBlMDcxNjMwMGM3MWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MTA4LDYgKzUxMDgsNyBAQAogCQlFNDQ2MTQzQzBDRDY4OUNDMDBGQURBNzUgLyogSlNI
VE1MU291cmNlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRCNDIzNzIwQ0JGQjZFMDAwQUYyRUNFIC8qIEpTSFRNTFNvdXJjZUVsZW1lbnQu
aCAqLzsgfTsKIAkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEI0MUUzNDBDQkZC
NjA5MDBBRjJFQ0UgLyogUmVuZGVyVmlkZW8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDRCNEJCNDE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0
b3JDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNDRCNEJCMjE0MTY1MEQ3MDAyQjFEOEIgLyogU2VsZWN0b3JDaGVja2VyLmggKi87IH07CisJ
CUU0MkVFM0E3MTc1NzZFNTUwMEVFRThDRiAvKiBGb250R2VuZXJpY0ZhbWlsaWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDRFRTNBNzE3NTc2RTU1
MDBFRUU4Q0YgLyogRm9udEdlbmVyaWNGYW1pbGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NEZBMTg1MUJDQTZCNUEwMDkxQjZFRiAvKiBD
b21wb3NlZFRyZWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ0RkExODQxQkNBNkI1QTAwOTFCNkVGIC8qIENvbXBvc2VkVHJlZUl0ZXJh
dG9yLmggKi87IH07CiAJCUU0NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAvKiBMYXlvdXRVbml0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY3MzkxOEMy
MTA2Q0VERDAwNkFGMjYyIC8qIExheW91dFVuaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ1MUM2MzIyMzk0MDMxQTAwOTkzMTkwIC8qIE1h
cmdpblR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2RkU3QUEyNjIxQzM3QjYzMDAyOTZEQ0QgLyogTWFyZ2luVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzIxMTMsNiArMzIxMTQsNyBA
QAogCQkJCTFDNjYyNjExMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUMyNEVFQTUxQzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQzEyQUMyQjFFRTc3OEFFMDA3OUUwQTAgLyogRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQyRUUzQTcxNzU3NkU1NTAw
RUVFOENGIC8qIEZvbnRHZW5lcmljRmFtaWxpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1
MzJGMjU2MDU3Q0QwMDI4QzU5MiAvKiBGb250TG9hZFRpbWluZ092ZXJyaWRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODQ1NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI1MzIwRDZCMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1E
YXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
aW5kZXggZDI3ODUyYzQ4NzY4YWNjMDA0NWNlN2RiMDYwNDVkM2ZmYWY4Yjk4MS4uYzBiOWJkYjY0
NzFiNTE5YjJjNjgzMzAzM2JlM2FhZmE4ZjNhZDE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKQEAgLTI3NywxOSArMjc3LDE5IEBAIHN0YXRpYyBPcHRpb25hbDxBdG9t
U3RyaW5nPiByZXNvbHZlR2VuZXJpY0ZhbWlseShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEZv
bnRECiAKICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSBmb250RGVzY3JpcHRpb24uc2NyaXB0KCk7
CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc2VyaWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBzZXR0
aW5ncy5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmco
c2V0dGluZ3Muc2VyaWZGb250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09
IHNhbnNTZXJpZkZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLnNhbnNTZXJpZkZvbnRG
YW1pbHkoc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3Muc2Fuc1Nl
cmlmRm9udEZhbWlseShzY3JpcHQpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBjdXJzaXZlRmFt
aWx5KQotICAgICAgICByZXR1cm4gc2V0dGluZ3MuY3Vyc2l2ZUZvbnRGYW1pbHkoc2NyaXB0KTsK
KyAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoc2V0dGluZ3MuY3Vyc2l2ZUZvbnRGYW1pbHkoc2Ny
aXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gZmFudGFzeUZhbWlseSkKLSAgICAgICAgcmV0
dXJuIHNldHRpbmdzLmZhbnRhc3lGb250RmFtaWx5KHNjcmlwdCk7CisgICAgICAgIHJldHVybiBB
dG9tU3RyaW5nKHNldHRpbmdzLmZhbnRhc3lGb250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChm
YW1pbHlOYW1lID09IG1vbm9zcGFjZUZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLmZp
eGVkRm9udEZhbWlseShzY3JpcHQpOworICAgICAgICByZXR1cm4gQXRvbVN0cmluZyhzZXR0aW5n
cy5maXhlZEZvbnRGYW1pbHkoc2NyaXB0KSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gcGljdG9n
cmFwaEZhbWlseSkKLSAgICAgICAgcmV0dXJuIHNldHRpbmdzLnBpY3RvZ3JhcGhGb250RmFtaWx5
KHNjcmlwdCk7CisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nKHNldHRpbmdzLnBpY3RvZ3JhcGhG
b250RmFtaWx5KHNjcmlwdCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IHN0YW5kYXJkRmFtaWx5
KQotICAgICAgICByZXR1cm4gc2V0dGluZ3Muc3RhbmRhcmRGb250RmFtaWx5KHNjcmlwdCk7Cisg
ICAgICAgIHJldHVybiBBdG9tU3RyaW5nKHNldHRpbmdzLnN0YW5kYXJkRm9udEZhbWlseShzY3Jp
cHQpKTsKIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CkBAIC00MjksOCArNDI5LDggQEAg
UmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHQKICAgICBhdXRvJiBwaWN0b2dyYXBoRm9udEZhbWlseSA9
IG1fZG9jdW1lbnQtPnNldHRpbmdzKCkucGljdG9ncmFwaEZvbnRGYW1pbHkoKTsKICAgICBhdXRv
IGZvbnQgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0
aW9uLCBwaWN0b2dyYXBoRm9udEZhbWlseSk7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCptX2RvY3VtZW50LCBw
aWN0b2dyYXBoRm9udEZhbWlseS5zdHJpbmcoKSwgISFmb250KTsKLSAgICAKKyAgICAgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ0ZvbnRMb2FkKCptX2RvY3VtZW50LCBwaWN0
b2dyYXBoRm9udEZhbWlseSwgISFmb250KTsKKwogICAgIHJldHVybiBmb250OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggYWE3ZDg0YjhjYzE0YzQzMmFhMDcyMWI4
MDI3Y2JjYzFlMGJjOWQ4MC4uNmFmNzg0MzViZTg3OTM2ZjI5MDY4Mjg3YzRhMWI1ZWQxMGRlNmU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgotI2luY2x1ZGUgIkZvbnRHZW5lcmljRmFtaWxpZXMuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgpAQCAtNjIsMTYgKzYxLDEwIEBAIHN0YXRpYyB2b2lkIGludmFsaWRhdGVBZnRlckdlbmVyaWNG
YW1pbHlDaGFuZ2UoUGFnZSogcGFnZSkKIH0KIAogU2V0dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2Uo
UGFnZSogcGFnZSkKLSAgICA6IG1fcGFnZShudWxscHRyKQotICAgICwgbV9mb250R2VuZXJpY0Zh
bWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKKyAgICA6IG1fcGFnZShw
YWdlKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChET01UaW1lcjo6ZGVmYXVsdE1p
bmltdW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKCp0
aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiB7Ci0g
ICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkIHlldCwgc28gd2UgaW5pdGlh
bGl6ZSB0aGUgQXRvbVN0cmluZwotICAgIC8vIGhhc2ggYmVmb3JlIHRyeWluZyB0byB1c2UgaXQu
Ci0gICAgQXRvbVN0cmluZzo6aW5pdCgpOwotICAgIGluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWls
aWVzKCk7Ci0gICAgbV9wYWdlID0gcGFnZTsgLy8gUGFnZSBpcyBub3QgeWV0IGZ1bGx5IGluaXRp
YWxpemVkIHdoZW4gY29uc3RydWN0aW5nIFNldHRpbmdzLCBzbyBrZWVwaW5nIG1fcGFnZSBudWxs
IG92ZXIgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKSBjYWxsLgogfQogCiBTZXR0aW5n
c0Jhc2U6On5TZXR0aW5nc0Jhc2UoKSA9IGRlZmF1bHQ7CkBAIC05Miw4NiArODUsODYgQEAgYm9v
bCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKICNl
bmRpZgogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnN0YW5kYXJkRm9udEZhbWls
eShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6
c3RhbmRhcmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5zdGFuZGFyZEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAg
ICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQp
OwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IEF0
b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6
OnNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUg
c2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0
U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBm
b250R2VuZXJpY0ZhbWlsaWVzKCkuc2V0U3RhbmRhcmRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0
KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWls
eUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OmZp
eGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNl
dHRpbmdzQmFzZTo6Zml4ZWRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5maXhlZEZvbnRGYW1pbHkoc2NyaXB0
KTsKKyAgICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZpeGVkRm9udEZhbWlseShzY3Jp
cHQpOwogfQogCi12b2lkIFNldHRpbmdzQmFzZTo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IEF0
b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6
OnNldEZpeGVkRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2Ny
aXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0Rml4
ZWRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2Vu
ZXJpY0ZhbWlsaWVzKCkuc2V0Rml4ZWRGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBp
ZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZSht
X3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNlcmlmRm9udEZh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFz
ZTo6c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5zZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICBy
ZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLnNlcmlmRm9udEZhbWlseShzY3JpcHQpOwogfQog
Ci12b2lkIFNldHRpbmdzQmFzZTo6c2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcm
IGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNlcmlm
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewot
ICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+c2V0U2VyaWZGb250RmFt
aWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJpY0ZhbWls
aWVzKCkuc2V0U2VyaWZGb250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdl
cykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVyR2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwog
fQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNhbnNTZXJpZkZvbnRGYW1pbHko
VVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBTZXR0aW5nc0Jhc2U6OnNh
bnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewotICAgIHJldHVy
biBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0KTsKKyAg
ICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLnNhbnNTZXJpZkZvbnRGYW1pbHkoc2NyaXB0
KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3Qg
QXRvbVN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFz
ZTo6c2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENv
ZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9udEdlbmVyaWNGYW1pbGllcy0+
c2V0U2Fuc1NlcmlmRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9vbCBjaGFuZ2Vz
ID0gZm9udEdlbmVyaWNGYW1pbGllcygpLnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoZmFtaWx5LCBz
Y3JpcHQpOwogICAgIGlmIChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmlj
RmFtaWx5Q2hhbmdlKG1fcGFnZSk7CiB9CiAKLWNvbnN0IEF0b21TdHJpbmcmIFNldHRpbmdzQmFz
ZTo6Y3Vyc2l2ZUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3Ry
aW5nJiBTZXR0aW5nc0Jhc2U6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9mb250R2VuZXJpY0ZhbWlsaWVzLT5jdXJzaXZlRm9udEZh
bWlseShzY3JpcHQpOworICAgIHJldHVybiBmb250R2VuZXJpY0ZhbWlsaWVzKCkuY3Vyc2l2ZUZv
bnRGYW1pbHkoc2NyaXB0KTsKIH0KIAotdm9pZCBTZXR0aW5nc0Jhc2U6OnNldEN1cnNpdmVGb250
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQordm9p
ZCBTZXR0aW5nc0Jhc2U6OnNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5
LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7Ci0gICAgYm9vbCBjaGFuZ2VzID0gbV9mb250R2VuZXJp
Y0ZhbWlsaWVzLT5zZXRDdXJzaXZlRm9udEZhbWlseShmYW1pbHksIHNjcmlwdCk7CisgICAgYm9v
bCBjaGFuZ2VzID0gZm9udEdlbmVyaWNGYW1pbGllcygpLnNldEN1cnNpdmVGb250RmFtaWx5KGZh
bWlseSwgc2NyaXB0KTsKICAgICBpZiAoY2hhbmdlcykKICAgICAgICAgaW52YWxpZGF0ZUFmdGVy
R2VuZXJpY0ZhbWlseUNoYW5nZShtX3BhZ2UpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBTZXR0
aW5nc0Jhc2U6OmZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2Nv
bnN0IFN0cmluZyYgU2V0dGluZ3NCYXNlOjpmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSBz
Y3JpcHQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZm9udEdlbmVyaWNGYW1pbGllcy0+ZmFudGFz
eUZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICByZXR1cm4gZm9udEdlbmVyaWNGYW1pbGllcygpLmZh
bnRhc3lGb250RmFtaWx5KHNjcmlwdCk7CiB9CiAKLXZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGYW50
YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlw
dCkKK3ZvaWQgU2V0dGluZ3NCYXNlOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBTdHJpbmcm
IGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewotICAgIGJvb2wgY2hhbmdlcyA9IG1fZm9u
dEdlbmVyaWNGYW1pbGllcy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwor
ICAgIGJvb2wgY2hhbmdlcyA9IGZvbnRHZW5lcmljRmFtaWxpZXMoKS5zZXRGYW50YXN5Rm9udEZh
bWlseShmYW1pbHksIHNjcmlwdCk7CiAgICAgaWYgKGNoYW5nZXMpCiAgICAgICAgIGludmFsaWRh
dGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UobV9wYWdlKTsKIH0KIAotY29uc3QgQXRvbVN0cmlu
ZyYgU2V0dGluZ3NCYXNlOjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQp
IGNvbnN0Citjb25zdCBTdHJpbmcmIFNldHRpbmdzQmFzZTo6cGljdG9ncmFwaEZvbnRGYW1pbHko
VVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewotICAgIHJldHVybiBtX2ZvbnRHZW5lcmljRmFt
aWxpZXMtPnBpY3RvZ3JhcGhGb250RmFtaWx5KHNjcmlwdCk7CisgICAgcmV0dXJuIGZvbnRHZW5l
cmljRmFtaWxpZXMoKS5waWN0b2dyYXBoRm9udEZhbWlseShzY3JpcHQpOwogfQogCi12b2lkIFNl
dHRpbmdzQmFzZTo6c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFt
aWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit2b2lkIFNldHRpbmdzQmFzZTo6c2V0UGljdG9ncmFw
aEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsK
LSAgICBib29sIGNoYW5nZXMgPSBtX2ZvbnRHZW5lcmljRmFtaWxpZXMtPnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KGZhbWlseSwgc2NyaXB0KTsKKyAgICBib29sIGNoYW5nZXMgPSBmb250R2VuZXJp
Y0ZhbWlsaWVzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoZmFtaWx5LCBzY3JpcHQpOwogICAg
IGlmIChjaGFuZ2VzKQogICAgICAgICBpbnZhbGlkYXRlQWZ0ZXJHZW5lcmljRmFtaWx5Q2hhbmdl
KG1fcGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuaAppbmRleCA3NWU4YTBhZmVk
YmEwZmYwY2Y3NTQ3ZWUyMzMyMjUyYmViZTQwOGNjLi5mODUzYzdlODA0NDQ0M2Y5ZDk1Y2RmNGM1
NjI2YWVlZjdlMTUzYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgogI2luY2x1ZGUgIkVkaXRhYmxlTGlu
a0JlaGF2aW9yLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZS5oIgorI2luY2x1ZGUg
IkZvbnRHZW5lcmljRmFtaWxpZXMuaCIKICNpbmNsdWRlICJGb250TG9hZFRpbWluZ092ZXJyaWRl
LmgiCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKICNpbmNsdWRlICJGb3JjZWRBY2Nl
c3NpYmlsaXR5VmFsdWUuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvU2Vjb25k
cy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQogI2luY2x1ZGUgIkRhdGFEZXRlY3RvclR5cGUuaCIKQEAgLTU3LDE0ICs1NywxMSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZvbnRHZW5lcmljRmFtaWxpZXM7CiBjbGFzcyBQ
YWdlOwogCiBjbGFzcyBTZXR0aW5nc0Jhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNl
dHRpbmdzQmFzZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIH5TZXR0
aW5nc0Jhc2UoKTsKLQogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIHsgbV9wYWdlID0gbnVsbHB0
cjsgfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKQEAgLTc0LDI2ICs3MSwyOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRNYXhpbXVtSFRNTFBhcnNlckRP
TVRyZWVEZXB0aCA9IDUxMjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdE1heGlt
dW1SZW5kZXJUcmVlRGVwdGggPSA1MTI7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0
YW5kYXJkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBVU0NSSVBU
X0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgc3RhbmRhcmRG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIHZpcnR1
YWwgRm9udEdlbmVyaWNGYW1pbGllcyYgZm9udEdlbmVyaWNGYW1pbGllcygpID0gMDsKKyAgICB2
aXJ0dWFsIGNvbnN0IEZvbnRHZW5lcmljRmFtaWxpZXMmIGZvbnRHZW5lcmljRmFtaWxpZXMoKSBj
b25zdCA9IDA7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YW5kYXJkRm9udEZhbWls
eShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9
IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Rml4
ZWRGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBmaXhlZEZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBmaXhlZEZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNj
cmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRv
bVN0cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IFN0
cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IFN0cmluZyYgc2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2Fuc1NlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIHNhbnNTZXJp
ZkZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcm
LCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBBdG9tU3RyaW5nJiBjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5
KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgY3Vyc2l2ZUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZhbnRh
c3lGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBmYW50YXN5Rm9udEZh
bWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2Rl
ID0gVVNDUklQVF9DT01NT04pOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgZmFu
dGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21T
dHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBBdG9tU3RyaW5nJiBwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHko
VVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldE1pbmltdW1ET01UaW1lckludGVydmFsKFNlY29uZHMpOyAvLyBJbml0aWFsaXpl
ZCB0byBET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpLgogICAgIFNlY29uZHMgbWlu
aW11bURPTVRpbWVySW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1ET01UaW1lcklu
dGVydmFsOyB9CkBAIC0xMTAsNiArMTEwLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgU2V0dGluZ3NCYXNlKFBhZ2UqKTsKKyAgICB2aXJ0dWFsIH5TZXR0aW5nc0Jhc2Uo
KTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKTsKIApAQCAtMTQw
LDcgKzE0MSw2IEBAIHByb3RlY3RlZDoKIAogICAgIFBhZ2UqIG1fcGFnZTsKIAotICAgIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2ZvbnRHZW5lcmljRmFtaWxp
ZXM7CiAgICAgU2Vjb25kcyBtX21pbmltdW1ET01UaW1lckludGVydmFsOwogCiAgICAgVGltZXIg
bV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNGYW1pbGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAppbmRleCAxNzJi
NzIxYWNmNWU4MjFjNDMwMWMyZjI4MmE5ZjgyMTVmZGJhYWMxLi5kMzU3NWRkYWE2ODg3YTY4MmE5
YWM3YzFkOGNjYmQ4MWVjMzU2OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250R2VuZXJpY0ZhbWlsaWVzLmNwcApAQCAtMzAsMTEgKzMwLDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgc2V0R2VuZXJpY0ZvbnRG
YW1pbHlGb3JTY3JpcHQoU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgY29uc3QgQXRvbVN0
cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitzdGF0aWMgYm9vbCBzZXRHZW5lcmlj
Rm9udEZhbWlseUZvclNjcmlwdChTY3JpcHRGb250RmFtaWx5TWFwJiBmb250TWFwLCBjb25zdCBT
dHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIGlmIChmYW1pbHkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gZm9udE1hcC5yZW1vdmUoc3RhdGljX2Nhc3Q8aW50Pihz
Y3JpcHQpKTsKLSAgICBhdXRvJiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0YXRpY19jYXN0
PGludD4oc2NyaXB0KSwgQXRvbVN0cmluZyB7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRv
JiBmYW1pbHlJbk1hcCA9IGZvbnRNYXAuYWRkKHN0YXRpY19jYXN0PGludD4oc2NyaXB0KSwgU3Ry
aW5nIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChmYW1pbHlJbk1hcCA9PSBmYW1pbHkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmYW1pbHlJbk1hcCA9IGZhbWlseTsKQEAgLTY0
LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqKQogICAgIGNhY2hl
ZFVzZXJQcmVmZXJzU2ltcGxpZmllZCgpID0gY29tcHV0ZVVzZXJQcmVmZXJzU2ltcGxpZmllZCgp
OwogfQogCi1zdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3Jp
cHQoY29uc3QgU2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUgc2NyaXB0
KQorc3RhdGljIGNvbnN0IFN0cmluZyYgZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQoY29uc3Qg
U2NyaXB0Rm9udEZhbWlseU1hcCYgZm9udE1hcCwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAg
IFNjcmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm9udE1hcC5maW5kKHN0
YXRpY19jYXN0PGludD4oc2NyaXB0KSk7CiAgICAgaWYgKGl0ICE9IGZvbnRNYXAuZW5kKCkpCkBA
IC04Myw3NiArODMsOTkgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGdlbmVyaWNGb250RmFt
aWx5Rm9yU2NyaXB0KGNvbnN0IFNjcmlwdEZvbnRGYW1pbHlNYXAmIGYKIAogRm9udEdlbmVyaWNG
YW1pbGllczo6Rm9udEdlbmVyaWNGYW1pbGllcygpCiB7Ci0gICAgYWRkTGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlcih0aGlzLCAmbGFuZ3VhZ2VDaGFuZ2VkKTsKLSAgICBsYW5ndWFnZUNoYW5nZWQobnVs
bHB0cik7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZSwgWyZdIHsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigmb25jZSwg
Jmxhbmd1YWdlQ2hhbmdlZCk7CisgICAgICAgIGxhbmd1YWdlQ2hhbmdlZChudWxscHRyKTsKKyAg
ICB9KTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c3RhbmRh
cmRGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK0ZvbnRHZW5lcmljRmFtaWxp
ZXMgRm9udEdlbmVyaWNGYW1pbGllczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBGb250
R2VuZXJpY0ZhbWlsaWVzIGNvcHk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6IG1fc3RhbmRh
cmRGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fc3RhbmRhcmRGb250RmFtaWx5TWFwLmFk
ZChrZXlWYWx1ZS5rZXksIGtleVZhbHVlLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKKyAgICBmb3Ig
KGF1dG8gJmtleVZhbHVlIDogbV9zZXJpZkZvbnRGYW1pbHlNYXApCisgICAgICAgIGNvcHkubV9z
ZXJpZkZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0
ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2ZpeGVkRm9udEZhbWlseU1h
cCkKKyAgICAgICAgY29weS5tX2ZpeGVkRm9udEZhbWlseU1hcC5hZGQoa2V5VmFsdWUua2V5LCBr
ZXlWYWx1ZS52YWx1ZS5pc29sYXRlZENvcHkoKSk7CisgICAgZm9yIChhdXRvICZrZXlWYWx1ZSA6
IG1fc2Fuc1NlcmlmRm9udEZhbWlseU1hcCkKKyAgICAgICAgY29weS5tX3NhbnNTZXJpZkZvbnRG
YW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkp
OworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2N1cnNpdmVGb250RmFtaWx5TWFwKQorICAg
ICAgICBjb3B5Lm1fY3Vyc2l2ZUZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFs
dWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZvciAoYXV0byAma2V5VmFsdWUgOiBtX2Zh
bnRhc3lGb250RmFtaWx5TWFwKQorICAgICAgICBjb3B5Lm1fZmFudGFzeUZvbnRGYW1pbHlNYXAu
YWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIGZv
ciAoYXV0byAma2V5VmFsdWUgOiBtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwKQorICAgICAgICBj
b3B5Lm1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXAuYWRkKGtleVZhbHVlLmtleSwga2V5VmFsdWUu
dmFsdWUuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJldHVybiBjb3B5OworfQorCitjb25zdCBTdHJp
bmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnN0YW5kYXJkRm9udEZhbWlseShVU2NyaXB0Q29kZSBz
Y3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1f
c3RhbmRhcmRGb250RmFtaWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBG
b250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBj
b25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmaXhlZEZvbnRGYW1pbHko
VVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewogICAgIHJldHVybiBnZW5lcmljRm9udEZhbWls
eUZvclNjcmlwdChtX2ZpeGVkRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29uc3QgQXRv
bVN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2Rl
IHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdlbmVyaWNGYW1pbGllczo6c2VyaWZG
b250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJp
Y0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zZXJpZkZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CiB9CiAK
LWNvbnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNhbnNTZXJpZkZvbnRGYW1p
bHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0Zh
bWlsaWVzOjpzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2VyaWZGb250RmFt
aWx5TWFwLCBzY3JpcHQpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBGb250R2VuZXJpY0ZhbWls
aWVzOjpjdXJzaXZlRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0Citjb25zdCBT
dHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OmN1cnNpdmVGb250RmFtaWx5KFVTY3JpcHRDb2Rl
IHNjcmlwdCkgY29uc3QKIHsKICAgICByZXR1cm4gZ2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQo
bV9jdXJzaXZlRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYg
Rm9udEdlbmVyaWNGYW1pbGllczo6ZmFudGFzeUZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0
KSBjb25zdAorY29uc3QgU3RyaW5nJiBGb250R2VuZXJpY0ZhbWlsaWVzOjpmYW50YXN5Rm9udEZh
bWlseShVU2NyaXB0Q29kZSBzY3JpcHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdlbmVyaWNGb250
RmFtaWx5Rm9yU2NyaXB0KG1fZmFudGFzeUZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CiB9CiAKLWNv
bnN0IEF0b21TdHJpbmcmIEZvbnRHZW5lcmljRmFtaWxpZXM6OnBpY3RvZ3JhcGhGb250RmFtaWx5
KFVTY3JpcHRDb2RlIHNjcmlwdCkgY29uc3QKK2NvbnN0IFN0cmluZyYgRm9udEdlbmVyaWNGYW1p
bGllczo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBjb25zdAogewog
ICAgIHJldHVybiBnZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250RmFt
aWx5TWFwLCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFN0YW5k
YXJkRm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlw
dCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0
IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNldEdl
bmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fc3RhbmRhcmRGb250RmFtaWx5TWFwLCBmYW1pbHks
IHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0Rml4ZWRGb250RmFt
aWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQorYm9vbCBG
b250R2VuZXJpY0ZhbWlsaWVzOjpzZXRGaXhlZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1p
bHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1p
bHlGb3JTY3JpcHQobV9maXhlZEZvbnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAot
Ym9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0
cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxp
ZXM6OnNldFNlcmlmRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUg
c2NyaXB0KQogewogICAgIHJldHVybiBzZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3Nl
cmlmRm9udEZhbWlseU1hcCwgZmFtaWx5LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmlj
RmFtaWxpZXM6OnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
LCBVU2NyaXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFNhbnNT
ZXJpZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkK
IHsKICAgICByZXR1cm4gc2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9zYW5zU2VyaWZG
b250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCk7CiB9CiAKLWJvb2wgRm9udEdlbmVyaWNGYW1p
bGllczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5LCBVU2Ny
aXB0Q29kZSBzY3JpcHQpCitib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldEN1cnNpdmVGb250
RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29kZSBzY3JpcHQpCiB7CiAgICAg
cmV0dXJuIHNldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fY3Vyc2l2ZUZvbnRGYW1pbHlN
YXAsIGZhbWlseSwgc2NyaXB0KTsKIH0KIAotYm9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRG
YW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNj
cmlwdCkKK2Jvb2wgRm9udEdlbmVyaWNGYW1pbGllczo6c2V0RmFudGFzeUZvbnRGYW1pbHkoY29u
c3QgU3RyaW5nJiBmYW1pbHksIFVTY3JpcHRDb2RlIHNjcmlwdCkKIHsKICAgICByZXR1cm4gc2V0
R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9mYW50YXN5Rm9udEZhbWlseU1hcCwgZmFtaWx5
LCBzY3JpcHQpOwogfQogCi1ib29sIEZvbnRHZW5lcmljRmFtaWxpZXM6OnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQor
Ym9vbCBGb250R2VuZXJpY0ZhbWlsaWVzOjpzZXRQaWN0b2dyYXBoRm9udEZhbWlseShjb25zdCBT
dHJpbmcmIGZhbWlseSwgVVNjcmlwdENvZGUgc2NyaXB0KQogewogICAgIHJldHVybiBzZXRHZW5l
cmljRm9udEZhbWlseUZvclNjcmlwdChtX3BpY3RvZ3JhcGhGb250RmFtaWx5TWFwLCBmYW1pbHks
IHNjcmlwdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250R2VuZXJpY0ZhbWlsaWVzLmgKaW5kZXggZjEyNGJiODZkMzRlMjY5NTFkMjBlZTlkYjMw
NjNhODY3YTkyYTRmYS4uMjM3ODcxNjBiOThiOWU4NGFlZjgwZWNjYzY1ZmQ1ZmNiNzRhYzU1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdlbmVyaWNG
YW1pbGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHZW5l
cmljRmFtaWxpZXMuaApAQCAtNDIsMjggKzQyLDMwIEBAIHN0cnVjdCBVU2NyaXB0Q29kZUhhc2hU
cmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPGludD4gewogICAgIHN0YXRpYyBib29sIGlz
RGVsZXRlZFZhbHVlKGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLTM7IH0KIH07CiAKLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIEF0b21TdHJpbmcsIERlZmF1bHRIYXNoPGludD4sIFVTY3JpcHRD
b2RlSGFzaFRyYWl0cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxpbnQs
IFN0cmluZywgRGVmYXVsdEhhc2g8aW50PiwgVVNjcmlwdENvZGVIYXNoVHJhaXRzPiBTY3JpcHRG
b250RmFtaWx5TWFwOwogCiBjbGFzcyBGb250R2VuZXJpY0ZhbWlsaWVzIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGb250R2VuZXJpY0ZhbWlsaWVzKCk7CiAK
LSAgICBjb25zdCBBdG9tU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTikgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgZml4ZWRGb250RmFt
aWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21T
dHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25z
dDsKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBzYW5zU2VyaWZGb250RmFtaWx5KFVTY3JpcHRDb2Rl
ID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIGN1cnNpdmVG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwotICAgIGNvbnN0
IEF0b21TdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01N
T04pIGNvbnN0OwotICAgIGNvbnN0IEF0b21TdHJpbmcmIHBpY3RvZ3JhcGhGb250RmFtaWx5KFVT
Y3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OworICAgIEZvbnRHZW5lcmljRmFtaWxp
ZXMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBib29sIHNldFN0YW5kYXJkRm9udEZhbWls
eShjb25zdCBBdG9tU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotICAgIGJvb2wgc2V0Rml4ZWRGb250
RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29kZSk7Ci0gICAgYm9vbCBzZXRTZXJp
ZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAgICBib29sIHNl
dFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYsIFVTY3JpcHRDb2RlKTsKLSAg
ICBib29sIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmLCBVU2NyaXB0Q29k
ZSk7Ci0gICAgYm9vbCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiwgVVNj
cmlwdENvZGUpOwotICAgIGJvb2wgc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbVN0
cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWls
eShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcm
IGZpeGVkRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAg
ICBjb25zdCBTdHJpbmcmIHNlcmlmRm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09N
TU9OKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHNhbnNTZXJpZkZvbnRGYW1pbHkoVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBjdXJzaXZl
Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICBjb25z
dCBTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04p
IGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgcGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENv
ZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisKKyAgICBib29sIHNldFN0YW5kYXJkRm9udEZh
bWlseShjb25zdCBTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisgICAgYm9vbCBzZXRGaXhlZEZvbnRG
YW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0U2VyaWZGb250
RmFtaWx5KGNvbnN0IFN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKyAgICBib29sIHNldFNhbnNTZXJp
ZkZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0Q3Vy
c2l2ZUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wgc2V0
RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOworICAgIGJvb2wg
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiwgVVNjcmlwdENvZGUpOwogCiBw
cml2YXRlOgogICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9zdGFuZGFyZEZvbnRGYW1pbHlNYXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCmlu
ZGV4IGY0Y2ZlNjdkYjU5MmQ5NmQ4MDc2MjEzN2Y4OTA2MGU4Y2Y5OTcxN2YuLmU1YzhlMWZmOWNj
NGI1NGVmYmY3NDI1ODY2ZTM4OWYxNzdlODA4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC03NCw3ICs3NCw3IEBAIE9wdGlvbmFs
PFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBG
b250Q2FzY2FkZURlc2NyCiAgICAgICAgIHN3aXRjaE9uKGl0ZW0sIFsmXSAoQ1NTVmFsdWVJRCBp
ZGVudCkgewogICAgICAgICAgICAgaXNHZW5lcmljRmFtaWx5ID0gaWRlbnQgIT0gQ1NTVmFsdWVX
ZWJraXRCb2R5OwogICAgICAgICAgICAgZmFtaWx5ID0gaXNHZW5lcmljRmFtaWx5ID8gQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpnZW5lcmljRm9udEZhbWlseUZyb21WYWx1ZUlEKGlkZW50KQot
ICAgICAgICAgICAgICAgIDogZG9jdW1lbnQuc2V0dGluZ3MoKS5zdGFuZGFyZEZvbnRGYW1pbHko
KTsKKyAgICAgICAgICAgICAgICA6IEF0b21TdHJpbmcoZG9jdW1lbnQuc2V0dGluZ3MoKS5zdGFu
ZGFyZEZvbnRGYW1pbHkoKSk7CiAgICAgICAgIH0sIFsmXSAoY29uc3QgU3RyaW5nJiBmYW1pbHlT
dHJpbmcpIHsKICAgICAgICAgICAgIGZhbWlseSA9IGZhbWlseVN0cmluZzsKICAgICAgICAgfSk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>