<?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>115263</bug_id>
          
          <creation_ts>2013-04-26 09:37:51 -0700</creation_ts>
          <short_desc>Remove all remaining Skia code</short_desc>
          <delta_ts>2013-04-29 18:59:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alberto Garcia">berto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>881932</commentid>
    <comment_count>0</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-04-26 09:37:51 -0700</bug_when>
    <thetext>Most Skia code was removed after bug 114886 was fixed, but there&apos;s still a couple of files and a few references to Skia in several places that can be removed.

I&apos;ll take care of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882742</commentid>
    <comment_count>1</comment_count>
      <attachid>200042</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-04-29 13:26:31 -0700</bug_when>
    <thetext>Created attachment 200042
Patch

This patch removes almost all remaining references to Skia.

A couple of comments:

- FrameLoaderClientBlackBerry.cpp still contains some Skia code, but
  I&apos;m not removing it now. Soon I&apos;ll upstream the most recent version
  of that file, which is significantly different from this one.

- I didn&apos;t remove LayoutTests/fast/canvas/canvas-skia-excessive-size.
  This test checks whether the browser can handle the creation of an
  excessively large canvas, which sounds like a useful test in
  general. Maybe we can rename it?

- Other Skia tests: svg/custom/image-rescale-clip.html
                    svg/custom/image-rescale-scroll.html

  These come from bug 42370, &quot;Scaled Resized images are blurred when
  sent to Skia&quot;. I didn&apos;t touch them in this patch, but I&apos;m not sure
  if they are really interesting to keep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882887</commentid>
    <comment_count>2</comment_count>
      <attachid>200042</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-29 18:28:54 -0700</bug_when>
    <thetext>Comment on attachment 200042
Patch

Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882896</commentid>
    <comment_count>3</comment_count>
      <attachid>200042</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-29 18:59:03 -0700</bug_when>
    <thetext>Comment on attachment 200042
Patch

Clearing flags on attachment: 200042

Committed r149347: &lt;http://trac.webkit.org/changeset/149347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882897</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-29 18:59:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200042</attachid>
            <date>2013-04-29 13:26:31 -0700</date>
            <delta_ts>2013-04-29 18:59:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>115263.diff</filename>
            <type>text/plain</type>
            <size>39488</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NzRlMjBiLi4zOWIzODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTMtMDQtMjkgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIFNraWEgY29kZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MjYzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmUgdGhlIE1heFNraWFEaW0gY29uc3RhbnQsIHdo
aWNoIHdhcyBhIGxlZnRvdmVyCisgICAgICAgIGZyb20gcjE0OTE5My4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Gb250SGFyZkJ1enouY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6ei5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udFBs
YXRmb3JtRGF0YUhhcmZCdXp6Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlU2tpYS5jcHA6IFJlbW92ZWQuCisKIDIwMTMtMDQtMjkg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046
IFdlIHNlZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugc2hlZXRzIGZvciBmYXZpY29uIHJlcXVl
c3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA3MGRk
NzI0Li5hOGZmYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtNzEsOSArNzEsNiBAQCBzdGF0aWMgY29uc3QgaW50IERlZmF1bHRIZWlnaHQgPSAxNTA7
CiAvLyBpbiBleGNoYW5nZSBmb3IgYSBzbWFsbGVyIG1heGltdW0gY2FudmFzIHNpemUuCiBzdGF0
aWMgY29uc3QgZmxvYXQgTWF4Q2FudmFzQXJlYSA9IDMyNzY4ICogODE5MjsgLy8gTWF4aW11bSBj
YW52YXMgYXJlYSBpbiBDU1MgcGl4ZWxzCiAKLS8vSW4gU2tpYSwgd2Ugd2lsbCBhbHNvIGxpbWl0
IHdpZHRoL2hlaWdodCB0byAzMjc2Ny4KLXN0YXRpYyBjb25zdCBmbG9hdCBNYXhTa2lhRGltID0g
MzI3NjcuMEY7IC8vIE1heGltdW0gd2lkdGgvaGVpZ2h0IGluIENTUyBwaXhlbHMuCi0KIEhUTUxD
YW52YXNFbGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKICAgICAsIG1fc2l6ZShEZWZhdWx0V2lkdGgsIERlZmF1bHRIZWlnaHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Gb250SGFyZkJ1
enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udEhh
cmZCdXp6LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzYzhkOS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Gb250SGFy
ZkJ1enouY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMDcsIDIwMDgsIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udC5oIgotCi0jaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKLSNpbmNsdWRlICJIYXJmQnV6elNoYXBlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgIlNpbXBs
ZUZvbnREYXRhLmgiCi0KLSNpbmNsdWRlICJTa0NhbnZhcy5oIgotI2luY2x1ZGUgIlNrUGFpbnQu
aCIKLSNpbmNsdWRlICJTa1RlbXBsYXRlcy5oIgotI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKLSNp
bmNsdWRlICJTa1V0aWxzLmgiCi0KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRz
Rm9yQ29tcGxleFRleHQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBGb250Ojpj
YW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4dCgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi12b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnYywgY29u
c3QgU2ltcGxlRm9udERhdGEqIGZvbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLCAgaW50IGZyb20sIGludCBudW1HbHlwaHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0IHsKLSAgICBTa0FT
U0VSVChzaXplb2YoR2x5cGhCdWZmZXJHbHlwaCkgPT0gc2l6ZW9mKHVpbnQxNl90KSk7IC8vIGNv
bXBpbGUtdGltZSBhc3NlcnQKLQotICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKTsKLSAgICBTa1NjYWxhciB4ID0gU2tGbG9hdFRvU2Nh
bGFyKHBvaW50LngoKSk7Ci0gICAgU2tTY2FsYXIgeSA9IFNrRmxvYXRUb1NjYWxhcihwb2ludC55
KCkpOwotCi0gICAgLy8gRklYTUU6IHRleHQgcmVuZGVyaW5nIHNwZWVkOgotICAgIC8vIEFuZHJv
aWQgaGFzIGNvZGUgaW4gdGhlaXIgV2ViQ29yZSBmb3JrIHRvIHNwZWNpYWwgY2FzZSB3aGVuIHRo
ZQotICAgIC8vIEdseXBoQnVmZmVyIGhhcyBubyBhZHZhbmNlcyBvdGhlciB0aGFuIHRoZSBkZWZh
dWx0cy4gSW4gdGhhdCBjYXNlIHRoZQotICAgIC8vIHRleHQgZHJhd2luZyBjYW4gcHJvY2VlZCBm
YXN0ZXIuIEhvd2V2ZXIsIGl0J3MgdW5jbGVhciB3aGVuIHRob3NlCi0gICAgLy8gcGF0Y2hlcyBt
YXkgYmUgdXBzdHJlYW1lZCB0byBXZWJLaXQgc28gd2UgYWx3YXlzIHVzZSB0aGUgc2xvd2VyIHBh
dGgKLSAgICAvLyBoZXJlLgotICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2ID0gZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSk7Ci0gICAgU2tBdXRvU1RNYWxsb2M8MzIsIFNrUG9pbnQ+
IHN0b3JhZ2UobnVtR2x5cGhzKSwgc3RvcmFnZTIobnVtR2x5cGhzKSwgc3RvcmFnZTMobnVtR2x5
cGhzKTsKLSAgICBTa1BvaW50KiBwb3MgPSBzdG9yYWdlLmdldCgpOwotICAgIFNrUG9pbnQqIHZQ
b3NCZWdpbiA9IHN0b3JhZ2UyLmdldCgpOwotICAgIFNrUG9pbnQqIHZQb3NFbmQgPSBzdG9yYWdl
My5nZXQoKTsKLQotICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpLm9y
aWVudGF0aW9uKCkgPT0gVmVydGljYWw7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlw
aHM7IGkrKykgewotICAgICAgICBTa1NjYWxhciBteVdpZHRoID0gU2tGbG9hdFRvU2NhbGFyKGFk
dltpXS53aWR0aCgpKTsKLSAgICAgICAgcG9zW2ldLnNldCh4LCB5KTsKLSAgICAgICAgaWYgKGlz
VmVydGljYWwpIHsKLSAgICAgICAgICAgIHZQb3NCZWdpbltpXS5zZXQoeCArIG15V2lkdGgsIHkp
OwotICAgICAgICAgICAgdlBvc0VuZFtpXS5zZXQoeCArIG15V2lkdGgsIHkgLSBteVdpZHRoKTsK
LSAgICAgICAgfQotICAgICAgICB4ICs9IG15V2lkdGg7Ci0gICAgICAgIHkgKz0gU2tGbG9hdFRv
U2NhbGFyKGFkdltpXS5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgUGxhdGZvcm1Db250ZXh0U2tp
YSogcGxhdGZvcm1Db250ZXh0ID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJh
d2luZ01vZGUoKTsKLQotICAgIC8vIFdlIGRyYXcgdGV4dCB1cCB0byB0d28gdGltZXMgKG9uY2Ug
Zm9yIGZpbGwsIG9uY2UgZm9yIHN0cm9rZSkuCi0gICAgaWYgKHRleHRNb2RlICYgVGV4dE1vZGVG
aWxsKSB7Ci0gICAgICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKLSAgICAgICAgZm9udC0+cGxhdGZv
cm1EYXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOwotICAgICAgICBnYy0+cGxhdGZvcm1Db250ZXh0
KCktPmFkanVzdFRleHRSZW5kZXJNb2RlKCZwYWludCk7Ci0gICAgICAgIHBhaW50LnNldFRleHRF
bmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2RpbmcpOwotCi0gICAgICAgIGlmIChp
c1ZlcnRpY2FsKSB7Ci0gICAgICAgICAgICBTa1BhdGggcGF0aDsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBwYXRoLnJl
c2V0KCk7Ci0gICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8odlBvc0JlZ2luW2ldKTsKLSAgICAg
ICAgICAgICAgICBwYXRoLmxpbmVUbyh2UG9zRW5kW2ldKTsKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybUNvbnRleHQtPmRyYXdUZXh0T25QYXRoKGdseXBocyArIGksIDIsIHBhdGgsIDAsIHBhaW50
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwbGF0Zm9ybUNv
bnRleHQtPmRyYXdQb3NUZXh0KGdseXBocywgbnVtR2x5cGhzIDw8IDEsIHBvcywgcGFpbnQpOwot
ICAgIH0KLQotICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZVN0cm9rZSkKLSAgICAgICAgJiYg
Z2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlCi0gICAg
ICAgICYmIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlVGhpY2tuZXNzKCkgPiAwKSB7
Ci0KLSAgICAgICAgU2tQYWludCBwYWludDsKLSAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5zZXR1cFBhaW50Rm9yU3Ryb2tpbmcoJnBhaW50LCAwLCAwKTsKLSAgICAgICAgZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2V0dXBQYWludCgmcGFpbnQpOwotICAgICAgICBnYy0+cGxhdGZvcm1Db250
ZXh0KCktPmFkanVzdFRleHRSZW5kZXJNb2RlKCZwYWludCk7Ci0gICAgICAgIHBhaW50LnNldFRl
eHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0RW5jb2RpbmcpOwotCi0gICAgICAgIGlm
ICh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICAgICAgLy8gSWYgd2UgYWxzbyBm
aWxsZWQsIHdlIGRvbid0IHdhbnQgdG8gZHJhdyBzaGFkb3dzIHR3aWNlLgotICAgICAgICAgICAg
Ly8gU2VlIGNvbW1lbnQgaW4gRm9udENocm9taXVtV2luLmNwcDo6cGFpbnRTa2lhVGV4dCgpIGZv
ciBtb3JlIGRldGFpbHMuCi0gICAgICAgICAgICAvLyBTaW5jZSB3ZSB1c2UgdGhlIGxvb3BlciBm
b3Igc2hhZG93cywgd2UgcmVtb3ZlIGl0IChpZiBhbnkpIG5vdy4KLSAgICAgICAgICAgIHBhaW50
LnNldExvb3BlcigwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc1ZlcnRpY2FsKSB7Ci0g
ICAgICAgICAgICBTa1BhdGggcGF0aDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBwYXRoLnJlc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgcGF0aC5tb3ZlVG8odlBvc0JlZ2luW2ldKTsKLSAgICAgICAgICAgICAgICBwYXRo
LmxpbmVUbyh2UG9zRW5kW2ldKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPmRy
YXdUZXh0T25QYXRoKGdseXBocyArIGksIDIsIHBhdGgsIDAsIHBhaW50KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPmRyYXdQb3NU
ZXh0KGdseXBocywgbnVtR2x5cGhzIDw8IDEsIHBvcywgcGFpbnQpOwotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgc2V0dXBGb3JUZXh0UGFpbnRpbmcoU2tQYWludCogcGFpbnQsIFNrQ29sb3IgY29s
b3IpCi17Ci0gICAgcGFpbnQtPnNldFRleHRFbmNvZGluZyhTa1BhaW50OjprR2x5cGhJRF9UZXh0
RW5jb2RpbmcpOwotICAgIHBhaW50LT5zZXRDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgRm9udDo6
ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFRleHRSdW4mIHJ1biwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdAotewotICAgIGlmICghcnVuLmxlbmd0aCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0TW9kZSA9IGdjLT5wbGF0Zm9y
bUNvbnRleHQoKS0+Z2V0VGV4dERyYXdpbmdNb2RlKCk7Ci0gICAgYm9vbCBmaWxsID0gdGV4dE1v
ZGUgJiBUZXh0TW9kZUZpbGw7Ci0gICAgYm9vbCBzdHJva2UgPSAodGV4dE1vZGUgJiBUZXh0TW9k
ZVN0cm9rZSkKLSAgICAgICAgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ry
b2tlU3R5bGUoKSAhPSBOb1N0cm9rZQotICAgICAgICAgICAgICAgJiYgZ2MtPnBsYXRmb3JtQ29u
dGV4dCgpLT5nZXRTdHJva2VUaGlja25lc3MoKSA+IDA7Ci0KLSAgICBpZiAoIWZpbGwgJiYgIXN0
cm9rZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2tQYWludCBzdHJva2VQYWludCwgZmlsbFBh
aW50OwotICAgIGlmIChmaWxsKSB7Ci0gICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0
dXBQYWludEZvckZpbGxpbmcoJmZpbGxQYWludCk7Ci0gICAgICAgIHNldHVwRm9yVGV4dFBhaW50
aW5nKCZmaWxsUGFpbnQsIGdjLT5maWxsQ29sb3IoKS5yZ2IoKSk7Ci0gICAgfQotICAgIGlmIChz
dHJva2UpIHsKLSAgICAgICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ry
b2tpbmcoJnN0cm9rZVBhaW50LCAwLCAwKTsKLSAgICAgICAgc2V0dXBGb3JUZXh0UGFpbnRpbmco
JnN0cm9rZVBhaW50LCBnYy0+c3Ryb2tlQ29sb3IoKS5yZ2IoKSk7Ci0gICAgfQotCi0gICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgSGFyZkJ1enpTaGFwZXIgc2hhcGVyKHRoaXMsIHJ1
bik7Ci0gICAgc2hhcGVyLnNldERyYXdSYW5nZShmcm9tLCB0byk7Ci0gICAgaWYgKCFzaGFwZXIu
c2hhcGUoJmdseXBoQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb2ludCA9IHNoYXBlci5hZGp1c3RTdGFydFBvaW50KHBvaW50KTsKLSAgICBkcmF3R2x5
cGhCdWZmZXIoZ2MsIHJ1biwgZ2x5cGhCdWZmZXIsIGFkanVzdGVkUG9pbnQpOwotfQotCi12b2lk
IEZvbnQ6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAv
KiBjb250ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmlu
ZyYgLyogbWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9t
ICovLCBpbnQgLyogdG8gKi8pIGNvbnN0Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
ZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwg
SGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0YSo+KiAvKiBmYWxsYmFja0ZvbnRzICovLCBHbHlw
aE92ZXJmbG93KiAvKiBnbHlwaE92ZXJmbG93ICovKSBjb25zdAotewotICAgIEhhcmZCdXp6U2hh
cGVyIHNoYXBlcih0aGlzLCBydW4pOwotICAgIGlmICghc2hhcGVyLnNoYXBlKCkpCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBzaGFwZXIudG90YWxXaWR0aCgpOwotfQotCi0vLyBSZXR1
cm4gdGhlIGNvZGUgcG9pbnQgaW5kZXggZm9yIHRoZSBnaXZlbiB8eHwgb2Zmc2V0IGludG8gdGhl
IHRleHQgcnVuLgotaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4RmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdAotewotICAg
IEhhcmZCdXp6U2hhcGVyIHNoYXBlcih0aGlzLCBydW4pOwotICAgIGlmICghc2hhcGVyLnNoYXBl
KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzaGFwZXIub2Zmc2V0Rm9yUG9zaXRp
b24oeEZsb2F0KTsKLX0KLQotLy8gUmV0dXJuIHRoZSByZWN0YW5nbGUgZm9yIHNlbGVjdGluZyB0
aGUgZ2l2ZW4gcmFuZ2Ugb2YgY29kZS1wb2ludHMgaW4gdGhlIFRleHRSdW4uCi1GbG9hdFJlY3Qg
Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Ci17Ci0gICAgSGFyZkJ1enpTaGFwZXIg
c2hhcGVyKHRoaXMsIHJ1bik7Ci0gICAgaWYgKCFzaGFwZXIuc2hhcGUoKSkKLSAgICAgICAgcmV0
dXJuIEZsb2F0UmVjdCgpOwotICAgIHJldHVybiBzaGFwZXIuc2VsZWN0aW9uUmVjdChwb2ludCwg
aGVpZ2h0LCBmcm9tLCB0byk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0ZvbnRQbGF0Zm9y
bURhdGFIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9Gb250UGxhdGZvcm1EYXRhSGFyZkJ1enouY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1YWQ1ZWM0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6ei5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwzMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwNiwgMjAwNywgMjAw
OCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRm9udFBsYXRmb3JtRGF0YUhhcmZCdXp6LmgiCi0KLSNpbmNsdWRlICJGb250Q2FjaGUu
aCIKLSNpbmNsdWRlICJIYXJmQnV6ekZhY2UuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlNrQWR2YW5jZWRUeXBlZmFjZU1ldHJpY3MuaCIKLSNpbmNsdWRlICJTa1Bh
aW50LmgiCi0jaW5jbHVkZSAiU2tUeXBlZmFjZS5oIgotCi0jaW5jbHVkZSA8cHVibGljL2xpbnV4
L1dlYkZvbnRJbmZvLmg+Ci0jaW5jbHVkZSA8cHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHls
ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oPgotI2luY2x1
ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdGF0aWMgU2tQYWludDo6SGludGluZyBza2lhSGludGluZyA9IFNrUGFpbnQ6OmtOb3JtYWxf
SGludGluZzsKLXN0YXRpYyBib29sIHVzZVNraWFBdXRvSGludCA9IHRydWU7Ci1zdGF0aWMgYm9v
bCB1c2VTa2lhQml0bWFwcyA9IHRydWU7Ci1zdGF0aWMgYm9vbCB1c2VTa2lhQW50aUFsaWFzID0g
dHJ1ZTsKLXN0YXRpYyBib29sIHVzZVNraWFTdWJwaXhlbFJlbmRlcmluZyA9IGZhbHNlOwotc3Rh
dGljIGJvb2wgdXNlU2tpYVN1YnBpeGVsUG9zaXRpb25pbmcgPSBmYWxzZTsKLQotdm9pZCBGb250
UGxhdGZvcm1EYXRhOjpzZXRIaW50aW5nKFNrUGFpbnQ6OkhpbnRpbmcgaGludGluZykKLXsKLSAg
ICBza2lhSGludGluZyA9IGhpbnRpbmc7Ci19Ci0KLXZvaWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0
QXV0b0hpbnQoYm9vbCB1c2VBdXRvSGludCkKLXsKLSAgICB1c2VTa2lhQXV0b0hpbnQgPSB1c2VB
dXRvSGludDsKLX0KLQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRVc2VCaXRtYXBzKGJvb2wg
dXNlQml0bWFwcykKLXsKLSAgICB1c2VTa2lhQml0bWFwcyA9IHVzZUJpdG1hcHM7Ci19Ci0KLXZv
aWQgRm9udFBsYXRmb3JtRGF0YTo6c2V0QW50aUFsaWFzKGJvb2wgdXNlQW50aUFsaWFzKQotewot
ICAgIHVzZVNraWFBbnRpQWxpYXMgPSB1c2VBbnRpQWxpYXM7Ci19Ci0KLXZvaWQgRm9udFBsYXRm
b3JtRGF0YTo6c2V0U3VicGl4ZWxSZW5kZXJpbmcoYm9vbCB1c2VTdWJwaXhlbFJlbmRlcmluZykK
LXsKLSAgICB1c2VTa2lhU3VicGl4ZWxSZW5kZXJpbmcgPSB1c2VTdWJwaXhlbFJlbmRlcmluZzsK
LX0KLQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRTdWJwaXhlbFBvc2l0aW9uaW5nKGJvb2wg
dXNlU3VicGl4ZWxQb3NpdGlvbmluZykKLXsKLSAgICB1c2VTa2lhU3VicGl4ZWxQb3NpdGlvbmlu
ZyA9IHVzZVN1YnBpeGVsUG9zaXRpb25pbmc7Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgIDogbV90eXBl
ZmFjZShoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkpCi0gICAgLCBtX3RleHRTaXplKDApCi0g
ICAgLCBtX2VtU2l6ZUluRm9udFVuaXRzKDApCi0gICAgLCBtX2Zha2VCb2xkKGZhbHNlKQotICAg
ICwgbV9mYWtlSXRhbGljKGZhbHNlKQotICAgICwgbV9vcmllbnRhdGlvbihIb3Jpem9udGFsKQot
ewotfQotCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKCkKLSAgICA6IG1fdHlw
ZWZhY2UoMCkKLSAgICAsIG1fdGV4dFNpemUoMCkKLSAgICAsIG1fZW1TaXplSW5Gb250VW5pdHMo
MCkKLSAgICAsIG1fZmFrZUJvbGQoZmFsc2UpCi0gICAgLCBtX2Zha2VJdGFsaWMoZmFsc2UpCi0g
ICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250YWwpCi17Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgdGV4dFNpemUsIGJvb2wgZmFrZUJvbGQsIGJvb2wgZmFr
ZUl0YWxpYykKLSAgICA6IG1fdHlwZWZhY2UoMCkKLSAgICAsIG1fdGV4dFNpemUodGV4dFNpemUp
Ci0gICAgLCBtX2VtU2l6ZUluRm9udFVuaXRzKDApCi0gICAgLCBtX2Zha2VCb2xkKGZha2VCb2xk
KQotICAgICwgbV9mYWtlSXRhbGljKGZha2VJdGFsaWMpCi0gICAgLCBtX29yaWVudGF0aW9uKEhv
cml6b250YWwpCi17Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgc3JjKQotICAgIDogbV90eXBlZmFjZShzcmMubV90eXBlZmFj
ZSkKLSAgICAsIG1fZmFtaWx5KHNyYy5tX2ZhbWlseSkKLSAgICAsIG1fdGV4dFNpemUoc3JjLm1f
dGV4dFNpemUpCi0gICAgLCBtX2VtU2l6ZUluRm9udFVuaXRzKHNyYy5tX2VtU2l6ZUluRm9udFVu
aXRzKQotICAgICwgbV9mYWtlQm9sZChzcmMubV9mYWtlQm9sZCkKLSAgICAsIG1fZmFrZUl0YWxp
YyhzcmMubV9mYWtlSXRhbGljKQotICAgICwgbV9vcmllbnRhdGlvbihzcmMubV9vcmllbnRhdGlv
bikKLSAgICAsIG1fc3R5bGUoc3JjLm1fc3R5bGUpCi0gICAgLCBtX2hhcmZCdXp6RmFjZShzcmMu
bV9oYXJmQnV6ekZhY2UpCi17Ci0gICAgU2tTYWZlUmVmKG1fdHlwZWZhY2UpOwotfQotCi1Gb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKFNrVHlwZWZhY2UqIHRmLCBjb25zdCBjaGFy
KiBmYW1pbHksIGZsb2F0IHRleHRTaXplLCBib29sIGZha2VCb2xkLCBib29sIGZha2VJdGFsaWMs
IEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKLSAgICA6IG1fdHlwZWZhY2UodGYpCi0gICAg
LCBtX2ZhbWlseShmYW1pbHkpCi0gICAgLCBtX3RleHRTaXplKHRleHRTaXplKQotICAgICwgbV9l
bVNpemVJbkZvbnRVbml0cygwKQotICAgICwgbV9mYWtlQm9sZChmYWtlQm9sZCkKLSAgICAsIG1f
ZmFrZUl0YWxpYyhmYWtlSXRhbGljKQotICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LXsKLSAgICBTa1NhZmVSZWYobV90eXBlZmFjZSk7Ci0gICAgcXVlcnlTeXN0ZW1Gb3JSZW5kZXJT
dHlsZSgpOwotfQotCi1Gb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHNyYywgZmxvYXQgdGV4dFNpemUpCi0gICAgOiBtX3R5cGVmYWNlKHNy
Yy5tX3R5cGVmYWNlKQotICAgICwgbV9mYW1pbHkoc3JjLm1fZmFtaWx5KQotICAgICwgbV90ZXh0
U2l6ZSh0ZXh0U2l6ZSkKLSAgICAsIG1fZW1TaXplSW5Gb250VW5pdHMoc3JjLm1fZW1TaXplSW5G
b250VW5pdHMpCi0gICAgLCBtX2Zha2VCb2xkKHNyYy5tX2Zha2VCb2xkKQotICAgICwgbV9mYWtl
SXRhbGljKHNyYy5tX2Zha2VJdGFsaWMpCi0gICAgLCBtX29yaWVudGF0aW9uKHNyYy5tX29yaWVu
dGF0aW9uKQotICAgICwgbV9oYXJmQnV6ekZhY2Uoc3JjLm1faGFyZkJ1enpGYWNlKQotewotICAg
IFNrU2FmZVJlZihtX3R5cGVmYWNlKTsKLSAgICBxdWVyeVN5c3RlbUZvclJlbmRlclN0eWxlKCk7
Ci19Ci0KLUZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKLXsKLSAgICBTa1Nh
ZmVVbnJlZihtX3R5cGVmYWNlKTsKLX0KLQotaW50IEZvbnRQbGF0Zm9ybURhdGE6OmVtU2l6ZUlu
Rm9udFVuaXRzKCkgY29uc3QKLXsKLSAgICBpZiAobV9lbVNpemVJbkZvbnRVbml0cykKLSAgICAg
ICAgcmV0dXJuIG1fZW1TaXplSW5Gb250VW5pdHM7Ci0KLSAgICBtX2VtU2l6ZUluRm9udFVuaXRz
ID0gbV90eXBlZmFjZS0+Z2V0VW5pdHNQZXJFbSgpOwotICAgIHJldHVybiBtX2VtU2l6ZUluRm9u
dFVuaXRzOwotfQotCi1Gb250UGxhdGZvcm1EYXRhJiBGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRv
cj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgc3JjKQotewotICAgIFNrUmVmQ250X1NhZmVBc3Np
Z24obV90eXBlZmFjZSwgc3JjLm1fdHlwZWZhY2UpOwotCi0gICAgbV9mYW1pbHkgPSBzcmMubV9m
YW1pbHk7Ci0gICAgbV90ZXh0U2l6ZSA9IHNyYy5tX3RleHRTaXplOwotICAgIG1fZmFrZUJvbGQg
PSBzcmMubV9mYWtlQm9sZDsKLSAgICBtX2Zha2VJdGFsaWMgPSBzcmMubV9mYWtlSXRhbGljOwot
ICAgIG1faGFyZkJ1enpGYWNlID0gc3JjLm1faGFyZkJ1enpGYWNlOwotICAgIG1fb3JpZW50YXRp
b24gPSBzcmMubV9vcmllbnRhdGlvbjsKLSAgICBtX3N0eWxlID0gc3JjLm1fc3R5bGU7Ci0gICAg
bV9lbVNpemVJbkZvbnRVbml0cyA9IHNyYy5tX2VtU2l6ZUluRm9udFVuaXRzOwotCi0gICAgcmV0
dXJuICp0aGlzOwotfQotCi0jaWZuZGVmIE5ERUJVRwotU3RyaW5nIEZvbnRQbGF0Zm9ybURhdGE6
OmRlc2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXR1cFBhaW50KFNrUGFpbnQqIHBhaW50KSBjb25z
dAotewotICAgIHBhaW50LT5zZXRBbnRpQWxpYXMobV9zdHlsZS51c2VBbnRpQWxpYXMpOwotICAg
IHBhaW50LT5zZXRIaW50aW5nKHN0YXRpY19jYXN0PFNrUGFpbnQ6OkhpbnRpbmc+KG1fc3R5bGUu
aGludFN0eWxlKSk7Ci0gICAgcGFpbnQtPnNldEVtYmVkZGVkQml0bWFwVGV4dChtX3N0eWxlLnVz
ZUJpdG1hcHMpOwotICAgIHBhaW50LT5zZXRBdXRvaGludGVkKG1fc3R5bGUudXNlQXV0b0hpbnQp
OwotICAgIHBhaW50LT5zZXRTdWJwaXhlbFRleHQobV9zdHlsZS51c2VTdWJwaXhlbFBvc2l0aW9u
aW5nKTsKLSAgICBpZiAobV9zdHlsZS51c2VBbnRpQWxpYXMpCi0gICAgICAgIHBhaW50LT5zZXRM
Q0RSZW5kZXJUZXh0KG1fc3R5bGUudXNlU3VicGl4ZWxSZW5kZXJpbmcpOwotCi0gICAgY29uc3Qg
ZmxvYXQgdHMgPSBtX3RleHRTaXplID49IDAgPyBtX3RleHRTaXplIDogMTI7Ci0gICAgcGFpbnQt
PnNldFRleHRTaXplKFNrRmxvYXRUb1NjYWxhcih0cykpOwotICAgIHBhaW50LT5zZXRUeXBlZmFj
ZShtX3R5cGVmYWNlKTsKLSAgICBwYWludC0+c2V0RmFrZUJvbGRUZXh0KG1fZmFrZUJvbGQpOwot
ICAgIHBhaW50LT5zZXRUZXh0U2tld1gobV9mYWtlSXRhbGljID8gLVNLX1NjYWxhcjEgLyA0IDog
MCk7Ci19Ci0KLVNrRm9udElEIEZvbnRQbGF0Zm9ybURhdGE6OnVuaXF1ZUlEKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV90eXBlZmFjZS0+dW5pcXVlSUQoKTsKLX0KLQotYm9vbCBGb250UGxhdGZv
cm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGEpIGNvbnN0Ci17Ci0g
ICAgLy8gSWYgZWl0aGVyIG9mIHRoZSB0eXBlZmFjZSBwb2ludGVycyBhcmUgaW52YWxpZCAoZWl0
aGVyIDAgb3IgdGhlCi0gICAgLy8gc3BlY2lhbCBkZWxldGVkIHZhbHVlKSB0aGVuIHdlIHRlc3Qg
Zm9yIHBvaW50ZXIgZXF1YWxpdHkuIE90aGVyd2lzZSwgd2UKLSAgICAvLyBjYWxsIFNrVHlwZWZh
Y2U6OkVxdWFsIG9uIHRoZSB2YWxpZCBwb2ludGVycy4KLSAgICBib29sIHR5cGVmYWNlc0VxdWFs
OwotICAgIGlmIChtX3R5cGVmYWNlID09IGhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKQotICAg
ICAgICB8fCBhLm1fdHlwZWZhY2UgPT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpCi0gICAg
ICAgIHx8ICFtX3R5cGVmYWNlCi0gICAgICAgIHx8ICFhLm1fdHlwZWZhY2UpCi0gICAgICAgIHR5
cGVmYWNlc0VxdWFsID0gbV90eXBlZmFjZSA9PSBhLm1fdHlwZWZhY2U7Ci0gICAgZWxzZQotICAg
ICAgICB0eXBlZmFjZXNFcXVhbCA9IFNrVHlwZWZhY2U6OkVxdWFsKG1fdHlwZWZhY2UsIGEubV90
eXBlZmFjZSk7Ci0KLSAgICByZXR1cm4gdHlwZWZhY2VzRXF1YWwKLSAgICAgICAgJiYgbV90ZXh0
U2l6ZSA9PSBhLm1fdGV4dFNpemUKLSAgICAgICAgJiYgbV9mYWtlQm9sZCA9PSBhLm1fZmFrZUJv
bGQKLSAgICAgICAgJiYgbV9mYWtlSXRhbGljID09IGEubV9mYWtlSXRhbGljCi0gICAgICAgICYm
IG1fb3JpZW50YXRpb24gPT0gYS5tX29yaWVudGF0aW9uCi0gICAgICAgICYmIG1fc3R5bGUgPT0g
YS5tX3N0eWxlOwotfQotCi11bnNpZ25lZCBGb250UGxhdGZvcm1EYXRhOjpoYXNoKCkgY29uc3QK
LXsKLSAgICB1bnNpZ25lZCBoID0gU2tUeXBlZmFjZTo6VW5pcXVlSUQobV90eXBlZmFjZSk7Ci0g
ICAgaCBePSAweDAxMDEwMTAxICogKChzdGF0aWNfY2FzdDxpbnQ+KG1fb3JpZW50YXRpb24pIDw8
IDIpIHwgKHN0YXRpY19jYXN0PGludD4obV9mYWtlQm9sZCkgPDwgMSkgfCBzdGF0aWNfY2FzdDxp
bnQ+KG1fZmFrZUl0YWxpYykpOwotCi0gICAgLy8gVGhpcyBtZW1jcHkgaXMgdG8gYXZvaWQgYSBy
ZWludGVycHJldF9jYXN0IHRoYXQgYnJlYWtzIHN0cmljdC1hbGlhc2luZwotICAgIC8vIHJ1bGVz
LiBNZW1jcHkgaXMgZ2VuZXJhbGx5IG9wdGltaXplZCBlbm91Z2ggc28gdGhhdCBwZXJmb3JtYW5j
ZSBkb2Vzbid0Ci0gICAgLy8gbWF0dGVyIGhlcmUuCi0gICAgdWludDMyX3QgdGV4dFNpemVCeXRl
czsKLSAgICBtZW1jcHkoJnRleHRTaXplQnl0ZXMsICZtX3RleHRTaXplLCBzaXplb2YodWludDMy
X3QpKTsKLSAgICBoIF49IHRleHRTaXplQnl0ZXM7Ci0KLSAgICByZXR1cm4gaDsKLX0KLQotYm9v
bCBGb250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2goKSBjb25zdAotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1IYXJmQnV6ekZhY2UqIEZvbnRQbGF0
Zm9ybURhdGE6OmhhcmZCdXp6RmFjZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2hhcmZCdXp6RmFj
ZSkKLSAgICAgICAgbV9oYXJmQnV6ekZhY2UgPSBIYXJmQnV6ekZhY2U6OmNyZWF0ZShjb25zdF9j
YXN0PEZvbnRQbGF0Zm9ybURhdGEqPih0aGlzKSwgdW5pcXVlSUQoKSk7Ci0KLSAgICByZXR1cm4g
bV9oYXJmQnV6ekZhY2UuZ2V0KCk7Ci19Ci0KLXZvaWQgRm9udFBsYXRmb3JtRGF0YTo6Z2V0UmVu
ZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hhciogZm9udCwgaW50IHNpemVBbmRTdHlsZSkKLXsK
LSAgICBXZWJLaXQ6OldlYkZvbnRSZW5kZXJTdHlsZSBzdHlsZTsKLQotICAgIGlmICghZm9udCB8
fCAhKmZvbnQpCi0gICAgICAgIHN0eWxlLnNldERlZmF1bHRzKCk7IC8vIEl0J3MgcHJvYmFibHkg
YSB3ZWJmb250LiBUYWtlIHRoZSBzeXN0ZW0gZGVmYXVsdHMuCi0gICAgZWxzZSBpZiAoV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5zYW5kYm94U3VwcG9ydCgpKQotICAgICAgICBXZWJLaXQ6
OlBsYXRmb3JtOjpjdXJyZW50KCktPnNhbmRib3hTdXBwb3J0KCktPmdldFJlbmRlclN0eWxlRm9y
U3RyaWtlKGZvbnQsIHNpemVBbmRTdHlsZSwgJnN0eWxlKTsKLSAgICBlbHNlCi0gICAgICAgIFdl
YktpdDo6V2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtlKGZvbnQsIHNpemVBbmRTdHls
ZSwgJnN0eWxlKTsKLQotICAgIHN0eWxlLnRvRm9udFJlbmRlclN0eWxlKCZtX3N0eWxlKTsKLX0K
LQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpxdWVyeVN5c3RlbUZvclJlbmRlclN0eWxlKCkKLXsK
LSAgICBnZXRSZW5kZXJTdHlsZUZvclN0cmlrZShtX2ZhbWlseS5kYXRhKCksICgoKGludCltX3Rl
eHRTaXplKSA8PCAyKSB8IChtX3R5cGVmYWNlLT5zdHlsZSgpICYgMykpOwotCi0gICAgLy8gRml4
IEZvbnRSZW5kZXJTdHlsZTo6Tm9QcmVmZXJlbmNlIHRvIGFjdHVhbCBzdHlsZXMuCi0gICAgaWYg
KG1fc3R5bGUudXNlQW50aUFsaWFzID09IEZvbnRSZW5kZXJTdHlsZTo6Tm9QcmVmZXJlbmNlKQot
ICAgICAgICAgbV9zdHlsZS51c2VBbnRpQWxpYXMgPSB1c2VTa2lhQW50aUFsaWFzOwotCi0gICAg
aWYgKCFtX3N0eWxlLnVzZUhpbnRpbmcpCi0gICAgICAgIG1fc3R5bGUuaGludFN0eWxlID0gU2tQ
YWludDo6a05vX0hpbnRpbmc7Ci0gICAgZWxzZSBpZiAobV9zdHlsZS51c2VIaW50aW5nID09IEZv
bnRSZW5kZXJTdHlsZTo6Tm9QcmVmZXJlbmNlKQotICAgICAgICBtX3N0eWxlLmhpbnRTdHlsZSA9
IHNraWFIaW50aW5nOwotCi0gICAgaWYgKG1fc3R5bGUudXNlQml0bWFwcyA9PSBGb250UmVuZGVy
U3R5bGU6Ok5vUHJlZmVyZW5jZSkKLSAgICAgICAgbV9zdHlsZS51c2VCaXRtYXBzID0gdXNlU2tp
YUJpdG1hcHM7Ci0gICAgaWYgKG1fc3R5bGUudXNlQXV0b0hpbnQgPT0gRm9udFJlbmRlclN0eWxl
OjpOb1ByZWZlcmVuY2UpCi0gICAgICAgIG1fc3R5bGUudXNlQXV0b0hpbnQgPSB1c2VTa2lhQXV0
b0hpbnQ7Ci0gICAgaWYgKG1fc3R5bGUudXNlU3VicGl4ZWxQb3NpdGlvbmluZyA9PSBGb250UmVu
ZGVyU3R5bGU6Ok5vUHJlZmVyZW5jZSkKLSAgICAgICAgbV9zdHlsZS51c2VTdWJwaXhlbFBvc2l0
aW9uaW5nID0gdXNlU2tpYVN1YnBpeGVsUG9zaXRpb25pbmc7Ci0gICAgaWYgKG1fc3R5bGUudXNl
QW50aUFsaWFzID09IEZvbnRSZW5kZXJTdHlsZTo6Tm9QcmVmZXJlbmNlKQotICAgICAgICBtX3N0
eWxlLnVzZUFudGlBbGlhcyA9IHVzZVNraWFBbnRpQWxpYXM7Ci0gICAgaWYgKG1fc3R5bGUudXNl
U3VicGl4ZWxSZW5kZXJpbmcgPT0gRm9udFJlbmRlclN0eWxlOjpOb1ByZWZlcmVuY2UpCi0gICAg
ICAgIG1fc3R5bGUudXNlU3VicGl4ZWxSZW5kZXJpbmcgPSB1c2VTa2lhU3VicGl4ZWxSZW5kZXJp
bmc7Ci19Ci0KLSNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCi1zdGF0aWMgU2tGb250VGFi
bGVUYWcgcmV2ZXJzZUJ5dGVPcmRlcih1aW50MzJfdCB0YWJsZVRhZykKLXsKLSAgICByZXR1cm4g
KHRhYmxlVGFnID4+IDI0KSB8ICgodGFibGVUYWcgPj4gOCkgJiAweGZmMDApIHwgKCh0YWJsZVRh
ZyAmIDB4ZmYwMCkgPDwgOCkgfCAoKHRhYmxlVGFnICYgMHhmZikgPDwgMjQpOwotfQotCi1QYXNz
UmVmUHRyPE9wZW5UeXBlVmVydGljYWxEYXRhPiBGb250UGxhdGZvcm1EYXRhOjp2ZXJ0aWNhbERh
dGEoKSBjb25zdAotewotICAgIHJldHVybiBmb250Q2FjaGUoKS0+Z2V0VmVydGljYWxEYXRhKHVu
aXF1ZUlEKCksICp0aGlzKTsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0Ci17Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwotCi0gICAgU2tGb250VGFibGVUYWcgdGFnID0gcmV2
ZXJzZUJ5dGVPcmRlcih0YWJsZSk7Ci0gICAgY29uc3Qgc2l6ZV90IHRhYmxlU2l6ZSA9IG1fdHlw
ZWZhY2UtPmdldFRhYmxlU2l6ZSh0YWcpOwotICAgIGlmICh0YWJsZVNpemUpIHsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IHRhYmxlQnVmZmVyKHRhYmxlU2l6ZSk7Ci0gICAgICAgIG1fdHlwZWZhY2Ut
PmdldFRhYmxlRGF0YSh0YWcsIDAsIHRhYmxlU2l6ZSwgJnRhYmxlQnVmZmVyWzBdKTsKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcih0YWJsZUJ1ZmZlcik7Ci0gICAg
fQotICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0ZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6ei5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhhcmZCdXp6LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MmY2YjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udFBsYXRmb3JtRGF0YUhhcmZCdXp6
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAwNiwgMjAwNywgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZv
bnRQbGF0Zm9ybURhdGFIYXJmQnV6el9oCi0jZGVmaW5lIEZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6
el9oCi0KLSNpbmNsdWRlICJGb250T3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJGb250UmVuZGVy
U3R5bGUuaCIKLSNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlNrUGFpbnQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgotCi1jbGFzcyBTa1R5cGVmYWNl
OwotdHlwZWRlZiB1aW50MzJfdCBTa0ZvbnRJRDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBIYXJmQnV6ekZhY2U7Ci0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0vLyBGb250UGxhdGZvcm1EYXRhIGlzIHRoZSBoYW5kbGUgd2hpY2ggV2Vi
S2l0IGhhcyBvbiBhIHNwZWNpZmljIGZhY2UuIEEgZmFjZQotLy8gaXMgdGhlIHR1cGxlIG9mIChm
b250LCBzaXplLCAuLi5ldGMpLiBIZXJlIHdlIGFyZSBqdXN0IHdyYXBwaW5nIGEgU2tpYQotLy8g
U2tUeXBlZmFjZSBwb2ludGVyIGFuZCBkZWFsaW5nIHdpdGggdGhlIHJlZmVyZW5jZSBjb3VudGlu
ZyBldGMuCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7
Ci1wdWJsaWM6Ci0gICAgLy8gVXNlZCBmb3IgZGVsZXRlZCB2YWx1ZXMgaW4gdGhlIGZvbnQgY2Fj
aGUncyBoYXNoIHRhYmxlcy4gVGhlIGhhc2ggdGFibGUKLSAgICAvLyB3aWxsIGNyZWF0ZSB1cyB3
aXRoIHRoaXMgc3RydWN0dXJlLCBhbmQgaXQgd2lsbCBjb21wYXJlIG90aGVyIHZhbHVlcwotICAg
IC8vIHRvIHRoaXMgIkRlbGV0ZWQiIG9uZS4gSXQgZXhwZWN0cyB0aGUgRGVsZXRlZCBvbmUgdG8g
YmUgZGlmZmVyZW50aWFibGUKLSAgICAvLyBmcm9tIHRoZSAwIG9uZSAoY3JlYXRlZCB3aXRoIHRo
ZSBlbXB0eSBjb25zdHJ1Y3RvciksIHNvIHdlIGNhbid0IGp1c3QKLSAgICAvLyBzZXQgZXZlcnl0
aGluZyB0byAwLgotICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKTsKLSAgICBGb250UGxhdGZvcm1EYXRhKCk7Ci0gICAgRm9udFBsYXRmb3JtRGF0YShm
bG9hdCB0ZXh0U2l6ZSwgYm9vbCBmYWtlQm9sZCwgYm9vbCBmYWtlSXRhbGljKTsKLSAgICBGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKLSAgICBGb250UGxhdGZvcm1E
YXRhKFNrVHlwZWZhY2UqLCBjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCB0ZXh0U2l6ZSwgYm9vbCBm
YWtlQm9sZCwgYm9vbCBmYWtlSXRhbGljLCBGb250T3JpZW50YXRpb24gPSBIb3Jpem9udGFsKTsK
LSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHNyYywgZmxvYXQg
dGV4dFNpemUpOwotICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7Ci0KLSAgICAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gICAgLy8gUmV0dXJuIHRydWUgaWZmIHRoaXMgZm9udCBpcyBtb25vc3BhY2VkIChp
LmUuIGV2ZXJ5IGdseXBoIGhhcyBhbiBlcXVhbCB4Ci0gICAgLy8gYWR2YW5jZSkKLSAgICAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0gICAgYm9vbCBpc0ZpeGVkUGl0Y2goKSBjb25zdDsKLQotICAgIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAvLyBTZXR1cCBhIFNraWEgcGFpbnRpbmcgY29udGV4dCB0
byB1c2UgdGhpcyBmb250LgotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICB2b2lkIHNldHVw
UGFpbnQoU2tQYWludCopIGNvbnN0OwotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIC8v
IFJldHVybiBTa2lhJ3MgdW5pcXVlIGlkIGZvciB0aGlzIGZvbnQuIFRoaXMgZW5jb2RlcyBib3Ro
IHRoZSBzdHlsZSBhbmQKLSAgICAvLyB0aGUgZm9udCdzIGZpbGUgbmFtZSBzbyByZWZlcnMgdG8g
YSBzaW5nbGUgZmFjZS4KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgU2tGb250SUQgdW5p
cXVlSUQoKSBjb25zdDsKLSAgICBTa1R5cGVmYWNlKiB0eXBlZmFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZWZhY2U7IH0KLQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKLSAgICBmbG9hdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0U2l6ZTsgfQotICAgIGludCBlbVNpemVJbkZvbnRV
bml0cygpIGNvbnN0OwotCi0gICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotICAgIHZvaWQgc2V0T3JpZW50YXRpb24oRm9udE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQot
ICAgIHZvaWQgc2V0RmFrZUJvbGQoYm9vbCBmYWtlQm9sZCkgeyBtX2Zha2VCb2xkID0gZmFrZUJv
bGQ7IH0KLSAgICB2b2lkIHNldEZha2VJdGFsaWMoYm9vbCBmYWtlSXRhbGljKSB7IG1fZmFrZUl0
YWxpYyA9IGZha2VJdGFsaWM7IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpIGNvbnN0OwotICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBG
b250UGxhdGZvcm1EYXRhJik7Ci0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZWZhY2UgPT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpOyB9
Ci0KLSNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCi0gICAgUGFzc1JlZlB0cjxPcGVuVHlw
ZVZlcnRpY2FsRGF0YT4gdmVydGljYWxEYXRhKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotI2VuZGlmCi0K
LSNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7Ci0jZW5kaWYK
LQotICAgIEhhcmZCdXp6RmFjZSogaGFyZkJ1enpGYWNlKCkgY29uc3Q7Ci0KLSAgICAvLyBUaGUg
cmV0dXJuZWQgc3R5bGVzIGFyZSBhbGwgYWN0dWFsIHN0eWxlcyB3aXRob3V0IEZvbnRSZW5kZXJT
dHlsZTo6Tm9QcmVmZXJlbmNlLgotICAgIGNvbnN0IEZvbnRSZW5kZXJTdHlsZSYgZm9udFJlbmRl
clN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQotCi0gICAgLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotICAgIC8vIEdsb2JhbCBmb250IHByZWZlcmVuY2VzLi4uCi0KLSAgICBzdGF0aWMgdm9p
ZCBzZXRIaW50aW5nKFNrUGFpbnQ6OkhpbnRpbmcpOwotICAgIHN0YXRpYyB2b2lkIHNldEF1dG9I
aW50KGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFVzZUJpdG1hcHMoYm9vbCk7Ci0gICAgc3Rh
dGljIHZvaWQgc2V0QW50aUFsaWFzKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVs
UmVuZGVyaW5nKGJvb2wpOwotICAgIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUG9zaXRpb25pbmco
Ym9vbCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBnZXRSZW5kZXJTdHlsZUZvclN0cmlrZShjb25z
dCBjaGFyKiwgaW50KTsKLSAgICB2b2lkIHF1ZXJ5U3lzdGVtRm9yUmVuZGVyU3R5bGUoKTsKLQot
ICAgIC8vIEZJWE1FOiBDb3VsZCBTa0F1dG9VbnJlZiBiZSB1c2VkIGhlcmU/Ci0gICAgU2tUeXBl
ZmFjZSogbV90eXBlZmFjZTsKLSAgICBDU3RyaW5nIG1fZmFtaWx5OwotICAgIGZsb2F0IG1fdGV4
dFNpemU7Ci0gICAgbXV0YWJsZSBpbnQgbV9lbVNpemVJbkZvbnRVbml0czsKLSAgICBib29sIG1f
ZmFrZUJvbGQ7Ci0gICAgYm9vbCBtX2Zha2VJdGFsaWM7Ci0gICAgRm9udE9yaWVudGF0aW9uIG1f
b3JpZW50YXRpb247Ci0gICAgRm9udFJlbmRlclN0eWxlIG1fc3R5bGU7Ci0gICAgbXV0YWJsZSBS
ZWZQdHI8SGFyZkJ1enpGYWNlPiBtX2hhcmZCdXp6RmFjZTsKLQotICAgIFNrVHlwZWZhY2UqIGhh
c2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PFNrVHlwZWZhY2UqPigtMSk7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIGlmZGVmIEZvbnRQbGF0Zm9ybURhdGFIYXJmQnV6el9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZVNraWEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI3M2VmLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6
RmFjZVNraWEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSGFyZkJ1enpGYWNlLmgiCi0KLSNpbmNsdWRlICJGb250UGxhdGZv
cm1EYXRhLmgiCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJIYXJmQnV6elNo
YXBlci5oIgotI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCi0jaW5jbHVkZSAiU2tQYWludC5o
IgotI2luY2x1ZGUgIlNrUGF0aC5oIgotI2luY2x1ZGUgIlNrUG9pbnQuaCIKLSNpbmNsdWRlICJT
a1JlY3QuaCIKLSNpbmNsdWRlICJTa1R5cGVmYWNlLmgiCi0jaW5jbHVkZSAiU2tVdGlscy5oIgot
Ci0jaW5jbHVkZSAiaGIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLS8vIE91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY2FsbGJhY2tzIHdoaWNo
IEhhcmZCdXp6IHJlcXVpcmVzIGJ5IHVzaW5nIFNraWEKLS8vIGNhbGxzLiBTZWUgdGhlIEhhcmZC
dXp6IHNvdXJjZSBmb3IgcmVmZXJlbmNlcyBhYm91dCB3aGF0IHRoZXNlIGNhbGxiYWNrcyBkby4K
LQotc3RydWN0IEhhcmZCdXp6Rm9udERhdGEgewotICAgIEhhcmZCdXp6Rm9udERhdGEoV1RGOjpI
YXNoTWFwPHVpbnQzMl90LCB1aW50MTZfdD4qIGdseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeSkK
LSAgICAgICAgOiBtX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeShnbHlwaENhY2hlRm9yRmFj
ZUNhY2hlRW50cnkpCi0gICAgeyB9Ci0gICAgU2tQYWludCBtX3BhaW50OwotICAgIFdURjo6SGFz
aE1hcDx1aW50MzJfdCwgdWludDE2X3Q+KiBtX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeTsK
LX07Ci0KLXN0YXRpYyBoYl9wb3NpdGlvbl90IFNraWFTY2FsYXJUb0hhcmZCdXp6UG9zaXRpb24o
U2tTY2FsYXIgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFNrU2NhbGFyVG9GaXhlZCh2YWx1ZSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIFNraWFHZXRHbHlwaFdpZHRoQW5kRXh0ZW50cyhTa1BhaW50KiBwYWlu
dCwgaGJfY29kZXBvaW50X3QgY29kZXBvaW50LCBoYl9wb3NpdGlvbl90KiB3aWR0aCwgaGJfZ2x5
cGhfZXh0ZW50c190KiBleHRlbnRzKQotewotICAgIEFTU0VSVChjb2RlcG9pbnQgPD0gMHhGRkZG
KTsKLSAgICBwYWludC0+c2V0VGV4dEVuY29kaW5nKFNrUGFpbnQ6OmtHbHlwaElEX1RleHRFbmNv
ZGluZyk7Ci0KLSAgICBTa1NjYWxhciBza1dpZHRoOwotICAgIFNrUmVjdCBza0JvdW5kczsKLSAg
ICB1aW50MTZfdCBnbHlwaCA9IGNvZGVwb2ludDsKLQotICAgIHBhaW50LT5nZXRUZXh0V2lkdGhz
KCZnbHlwaCwgc2l6ZW9mKGdseXBoKSwgJnNrV2lkdGgsICZza0JvdW5kcyk7Ci0gICAgaWYgKHdp
ZHRoKQotICAgICAgICAqd2lkdGggPSBTa2lhU2NhbGFyVG9IYXJmQnV6elBvc2l0aW9uKHNrV2lk
dGgpOwotICAgIGlmIChleHRlbnRzKSB7Ci0gICAgICAgIC8vIEludmVydCB5LWF4aXMgYmVjYXVz
ZSBTa2lhIGlzIHktZ3Jvd3MtZG93biBidXQgd2Ugc2V0IHVwIEhhcmZCdXp6IHRvIGJlIHktZ3Jv
d3MtdXAuCi0gICAgICAgIGV4dGVudHMtPnhfYmVhcmluZyA9IFNraWFTY2FsYXJUb0hhcmZCdXp6
UG9zaXRpb24oc2tCb3VuZHMuZkxlZnQpOwotICAgICAgICBleHRlbnRzLT55X2JlYXJpbmcgPSBT
a2lhU2NhbGFyVG9IYXJmQnV6elBvc2l0aW9uKC1za0JvdW5kcy5mVG9wKTsKLSAgICAgICAgZXh0
ZW50cy0+d2lkdGggPSBTa2lhU2NhbGFyVG9IYXJmQnV6elBvc2l0aW9uKHNrQm91bmRzLndpZHRo
KCkpOwotICAgICAgICBleHRlbnRzLT5oZWlnaHQgPSBTa2lhU2NhbGFyVG9IYXJmQnV6elBvc2l0
aW9uKC1za0JvdW5kcy5oZWlnaHQoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgaGJfYm9vbF90IGhh
cmZCdXp6R2V0R2x5cGgoaGJfZm9udF90KiBoYkZvbnQsIHZvaWQqIGZvbnREYXRhLCBoYl9jb2Rl
cG9pbnRfdCB1bmljb2RlLCBoYl9jb2RlcG9pbnRfdCB2YXJpYXRpb25TZWxlY3RvciwgaGJfY29k
ZXBvaW50X3QqIGdseXBoLCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBIYXJmQnV6ekZvbnREYXRh
KiBoYkZvbnREYXRhID0gcmVpbnRlcnByZXRfY2FzdDxIYXJmQnV6ekZvbnREYXRhKj4oZm9udERh
dGEpOwotCi0gICAgV1RGOjpIYXNoTWFwPHVpbnQzMl90LCB1aW50MTZfdD46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBoYkZvbnREYXRhLT5tX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeS0+YWRkKHVu
aWNvZGUsIDApOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBTa1BhaW50
KiBwYWludCA9ICZoYkZvbnREYXRhLT5tX3BhaW50OwotICAgICAgICBwYWludC0+c2V0VGV4dEVu
Y29kaW5nKFNrUGFpbnQ6OmtVVEYzMl9UZXh0RW5jb2RpbmcpOwotICAgICAgICB1aW50MTZfdCBn
bHlwaDE2OwotICAgICAgICBwYWludC0+dGV4dFRvR2x5cGhzKCZ1bmljb2RlLCBzaXplb2YoaGJf
Y29kZXBvaW50X3QpLCAmZ2x5cGgxNik7Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBnbHlwaDE2OwotICAgICAgICAqZ2x5cGggPSBnbHlwaDE2OwotICAgIH0KLSAgICAqZ2x5cGgg
PSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIHJldHVybiAhISpnbHlwaDsKLX0KLQotc3Rh
dGljIGhiX3Bvc2l0aW9uX3QgaGFyZkJ1enpHZXRHbHlwaEhvcml6b250YWxBZHZhbmNlKGhiX2Zv
bnRfdCogaGJGb250LCB2b2lkKiBmb250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIHZvaWQq
IHVzZXJEYXRhKQotewotICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEgPSByZWludGVy
cHJldF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPihmb250RGF0YSk7Ci0gICAgaGJfcG9zaXRpb25f
dCBhZHZhbmNlID0gMDsKLQotICAgIFNraWFHZXRHbHlwaFdpZHRoQW5kRXh0ZW50cygmaGJGb250
RGF0YS0+bV9wYWludCwgZ2x5cGgsICZhZHZhbmNlLCAwKTsKLSAgICByZXR1cm4gYWR2YW5jZTsK
LX0KLQotc3RhdGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEdseXBoSG9yaXpvbnRhbE9yaWdpbiho
Yl9mb250X3QqIGhiRm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCBo
Yl9wb3NpdGlvbl90KiB4LCBoYl9wb3NpdGlvbl90KiB5LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAg
ICAvLyBKdXN0IHJldHVybiB0cnVlLCBmb2xsb3dpbmcgdGhlIHdheSB0aGF0IEhhcmZCdXp6LUZy
ZWVUeXBlCi0gICAgLy8gaW1wbGVtZW50YXRpb24gZG9lcy4KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEdseXBoRXh0ZW50cyhoYl9mb250X3QqIGhi
Rm9udCwgdm9pZCogZm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCBoYl9nbHlwaF9leHRl
bnRzX3QqIGV4dGVudHMsIHZvaWQqIHVzZXJEYXRhKQotewotICAgIEhhcmZCdXp6Rm9udERhdGEq
IGhiRm9udERhdGEgPSByZWludGVycHJldF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPihmb250RGF0
YSk7Ci0KLSAgICBTa2lhR2V0R2x5cGhXaWR0aEFuZEV4dGVudHMoJmhiRm9udERhdGEtPm1fcGFp
bnQsIGdseXBoLCAwLCBleHRlbnRzKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGhi
X2ZvbnRfZnVuY3NfdCogaGFyZkJ1enpTa2lhR2V0Rm9udEZ1bmNzKCkKLXsKLSAgICBzdGF0aWMg
aGJfZm9udF9mdW5jc190KiBoYXJmQnV6elNraWFGb250RnVuY3MgPSAwOwotCi0gICAgLy8gV2Ug
ZG9uJ3Qgc2V0IGNhbGxiYWNrIGZ1bmN0aW9ucyB3aGljaCB3ZSBjYW4ndCBzdXBwb3J0LgotICAg
IC8vIEhhcmZCdXp6IHdpbGwgdXNlIHRoZSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpZiB0aGV5
IGFyZW4ndCBzZXQuCi0gICAgaWYgKCFoYXJmQnV6elNraWFGb250RnVuY3MpIHsKLSAgICAgICAg
aGFyZkJ1enpTa2lhRm9udEZ1bmNzID0gaGJfZm9udF9mdW5jc19jcmVhdGUoKTsKLSAgICAgICAg
aGJfZm9udF9mdW5jc19zZXRfZ2x5cGhfZnVuYyhoYXJmQnV6elNraWFGb250RnVuY3MsIGhhcmZC
dXp6R2V0R2x5cGgsIDAsIDApOwotICAgICAgICBoYl9mb250X2Z1bmNzX3NldF9nbHlwaF9oX2Fk
dmFuY2VfZnVuYyhoYXJmQnV6elNraWFGb250RnVuY3MsIGhhcmZCdXp6R2V0R2x5cGhIb3Jpem9u
dGFsQWR2YW5jZSwgMCwgMCk7Ci0gICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2hfb3Jp
Z2luX2Z1bmMoaGFyZkJ1enpTa2lhRm9udEZ1bmNzLCBoYXJmQnV6ekdldEdseXBoSG9yaXpvbnRh
bE9yaWdpbiwgMCwgMCk7Ci0gICAgICAgIGhiX2ZvbnRfZnVuY3Nfc2V0X2dseXBoX2V4dGVudHNf
ZnVuYyhoYXJmQnV6elNraWFGb250RnVuY3MsIGhhcmZCdXp6R2V0R2x5cGhFeHRlbnRzLCAwLCAw
KTsKLSAgICAgICAgaGJfZm9udF9mdW5jc19tYWtlX2ltbXV0YWJsZShoYXJmQnV6elNraWFGb250
RnVuY3MpOwotICAgIH0KLSAgICByZXR1cm4gaGFyZkJ1enpTa2lhRm9udEZ1bmNzOwotfQotCi1z
dGF0aWMgaGJfYmxvYl90KiBoYXJmQnV6elNraWFHZXRUYWJsZShoYl9mYWNlX3QqIGZhY2UsIGhi
X3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEpCi17Ci0gICAgU2tUeXBlZmFjZSogdHlwZWZhY2Ug
PSByZWludGVycHJldF9jYXN0PFNrVHlwZWZhY2UqPih1c2VyRGF0YSk7Ci0KLSAgICBjb25zdCBz
aXplX3QgdGFibGVTaXplID0gdHlwZWZhY2UtPmdldFRhYmxlU2l6ZSh0YWcpOwotICAgIGlmICgh
dGFibGVTaXplKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNoYXIqIGJ1ZmZlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhc3RNYWxsb2ModGFibGVTaXplKSk7Ci0gICAgaWYgKCFidWZm
ZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIHNpemVfdCBhY3R1YWxTaXplID0gdHlwZWZhY2Ut
PmdldFRhYmxlRGF0YSh0YWcsIDAsIHRhYmxlU2l6ZSwgYnVmZmVyKTsKLSAgICBpZiAodGFibGVT
aXplICE9IGFjdHVhbFNpemUpIHsKLSAgICAgICAgZmFzdEZyZWUoYnVmZmVyKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGhiX2Jsb2JfY3JlYXRlKGNvbnN0X2Nhc3Q8
Y2hhcio+KGJ1ZmZlciksIHRhYmxlU2l6ZSwgSEJfTUVNT1JZX01PREVfV1JJVEFCTEUsIGJ1ZmZl
ciwgZmFzdEZyZWUpOwotfQotCi1zdGF0aWMgdm9pZCBkZXN0cm95SGFyZkJ1enpGb250RGF0YSh2
b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBIYXJmQnV6ekZvbnREYXRhKiBoYkZvbnREYXRhID0gcmVp
bnRlcnByZXRfY2FzdDxIYXJmQnV6ekZvbnREYXRhKj4odXNlckRhdGEpOwotICAgIGRlbGV0ZSBo
YkZvbnREYXRhOwotfQotCi1oYl9mYWNlX3QqIEhhcmZCdXp6RmFjZTo6Y3JlYXRlRmFjZSgpCi17
Ci0gICAgaGJfZmFjZV90KiBmYWNlID0gaGJfZmFjZV9jcmVhdGVfZm9yX3RhYmxlcyhoYXJmQnV6
elNraWFHZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEtPnR5cGVmYWNlKCksIDApOwotICAgIEFTU0VS
VChmYWNlKTsKLSAgICByZXR1cm4gZmFjZTsKLX0KLQotaGJfZm9udF90KiBIYXJmQnV6ekZhY2U6
OmNyZWF0ZUZvbnQoKQotewotICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEgPSBuZXcg
SGFyZkJ1enpGb250RGF0YShtX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeSk7Ci0gICAgbV9w
bGF0Zm9ybURhdGEtPnNldHVwUGFpbnQoJmhiRm9udERhdGEtPm1fcGFpbnQpOwotICAgIGhiX2Zv
bnRfdCogZm9udCA9IGhiX2ZvbnRfY3JlYXRlKG1fZmFjZSk7Ci0gICAgaGJfZm9udF9zZXRfZnVu
Y3MoZm9udCwgaGFyZkJ1enpTa2lhR2V0Rm9udEZ1bmNzKCksIGhiRm9udERhdGEsIGRlc3Ryb3lI
YXJmQnV6ekZvbnREYXRhKTsKLSAgICBmbG9hdCBzaXplID0gbV9wbGF0Zm9ybURhdGEtPnNpemUo
KTsKLSAgICBpbnQgc2NhbGUgPSBTa2lhU2NhbGFyVG9IYXJmQnV6elBvc2l0aW9uKHNpemUpOwot
ICAgIGhiX2ZvbnRfc2V0X3NjYWxlKGZvbnQsIHNjYWxlLCBzY2FsZSk7Ci0gICAgaGJfZm9udF9t
YWtlX2ltbXV0YWJsZShmb250KTsKLSAgICByZXR1cm4gZm9udDsKLX0KLQotR2x5cGhCdWZmZXJB
ZHZhbmNlIEhhcmZCdXp6U2hhcGVyOjpjcmVhdGVHbHlwaEJ1ZmZlckFkdmFuY2UoZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCkKLXsKLSAgICByZXR1cm4gR2x5cGhCdWZmZXJBZHZhbmNlKHdpZHRo
LCBoZWlnaHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGYyODE2ZS4uYzQyMzQ5MiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEzLTA0LTI5ICBBbGJlcnRvIEdhcmNpYSAgPGFnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyBTa2lhIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI2MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIHJl
ZmVyZW5jZXMgdG8gU2tpYS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5wbToKKyAg
ICAgICAgKGJsYWNrYmVycnlDTWFrZUFyZ3VtZW50cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dGlvbmFyZWFzLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Q6CisKIDIwMTMtMDQtMjkgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFNldCB1cCB0
aGUgVGVzdEphdmFTY3JpcHRDb3JlIGluIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQppbmRl
eCBiYWQ0YmRhLi40ZGM5M2M3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMu
cG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0xMDMxLDggKzEwMzEsNiBA
QCBzdWIgYmxhY2tiZXJyeUNNYWtlQXJndW1lbnRzKCkKICAgICBwdXNoIEBjbWFrZUV4dHJhT3B0
aW9ucywgIi1ERU5BQkxFX0dMRVMyPTEiIHVubGVzcyAkRU5WeyJESVNBQkxFX0dMRVMyIn07CiAK
ICAgICBteSBAaW5jbHVkZVN5c3RlbURpcmVjdG9yaWVzOwotICAgIHB1c2ggQGluY2x1ZGVTeXN0
ZW1EaXJlY3RvcmllcywgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzdGFnZUluYywgImdyc2tpYSIsICJz
a2lhIik7Ci0gICAgcHVzaCBAaW5jbHVkZVN5c3RlbURpcmVjdG9yaWVzLCBGaWxlOjpTcGVjLT5j
YXRkaXIoJHN0YWdlSW5jLCAiZ3Jza2lhIik7CiAgICAgcHVzaCBAaW5jbHVkZVN5c3RlbURpcmVj
dG9yaWVzLCBGaWxlOjpTcGVjLT5jYXRkaXIoJHN0YWdlSW5jLCAiaGFyZmJ1enoiKTsKICAgICBw
dXNoIEBpbmNsdWRlU3lzdGVtRGlyZWN0b3JpZXMsIEZpbGU6OlNwZWMtPmNhdGRpcigkc3RhZ2VJ
bmMsICJpbWYiKTsKICAgICAjIFdlIG9ubHkgdXNlIGpwZWctdHVyYm8gZm9yIGRldmljZSBidWls
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRy
aWJ1dGlvbmFyZWFzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2Nv
bnRyaWJ1dGlvbmFyZWFzLnB5CmluZGV4IDdhNjc0ODQuLmVmZmNkMjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRpb25hcmVhcy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29udHJpYnV0aW9uYXJl
YXMucHkKQEAgLTEzMSw3ICsxMzEsNiBAQCBjb250cmlidXRpb25fYXJlYXMgPSBbCiAgICAgX0Fy
ZWEoJ1Njcm9sbGJhcnMnLCBbJ3Njcm9sbCddKSwKICAgICBfQXJlYSgnU2VjdXJpdHknKSwgICMg
UHJvYmFibHkgbmVlZCBtb3JlIHRva2VucwogIyBGSVhNRTogJ1NoYWRvdyBET00nCi0gICAgX0Fy
ZWEoJ1NraWEnKSwKICAgICBfQXJlYSgnU291cCBOZXR3b3JrIEJhY2tlbmQnLCBbJ3NvdXAnXSks
CiAjIEZJWE1FOiAnU3BlbGwgQ2hlY2tpbmcnIGp1c3QgbmVlZCB0b2tlbnMKICAgICBfQXJlYSgn
VGFibGVzJywgWydodG1sdGFibGUnLCAncmVuZGVydGFibGUnXSksCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdAppbmRleCBiZjJjMGIxLi41ZTMzZTI4
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hs
aXN0CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QK
QEAgLTUyLDEwICs1Miw2IEBACiAgICAgICAgICJYU1MiOiB7CiAgICAgICAgICAgICAiZmlsZW5h
bWUiOiByIi4qWFNTIiwKICAgICAgICAgfSwKLSAgICAgICAgIlNraWFHcmFwaGljcyI6IHsKLSAg
ICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL3NraWEvIiwKLSAgICAgICAgfSwKICAgICAgICAgIkZyYW1lTG9h
ZGVyIjogewogICAgICAgICAgICAgIm1vcmUiOiByIkZyYW1lTG9hZGVyXC4oY3BwfGgpIiwKICAg
ICAgICAgfSwKQEAgLTM3Myw3ICszNjksNiBAQAogICAgICAgICAiU1ZHIjogWyJzY2hlbm5leUBj
aHJvbWl1bS5vcmciLCAicGRyQGdvb2dsZS5jb20iLCAiZm1hbGl0YUBjaHJvbWl1bS5vcmciLCAi
ZG9taW5pay5yb3R0c2NoZXNAaW50ZWwuY29tIiBdLAogICAgICAgICAiU1ZOU2NyaXB0cyI6IFsg
ImRiYXRlc0B3ZWJraXQub3JnIiBdLAogICAgICAgICAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IiOiBb
ICJhbmRlcnNjYUBhcHBsZS5jb20iLCAiamFtZXNyQGNocm9taXVtLm9yZyIsICJ0b25pa2l0b29A
d2Via2l0Lm9yZyIsICJjbWFyY2Vsb0B3ZWJraXQub3JnIiwgImx1aXpAd2Via2l0Lm9yZyIgXSwK
LSAgICAgICAgIlNraWFHcmFwaGljcyI6IFsgInNlbm9yYmxhbmNvQGNocm9taXVtLm9yZyIsICJq
dW5vdkBnb29nbGUuY29tIiBdLAogICAgICAgICAiU2VsZWN0b3JzIjogWyAiYWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbSIgXSwKICAgICAgICAgIlNvdXBOZXR3b3JrIjogWyAicmFrdWNvQHdlYmtpdC5v
cmciLCAiZ25zQGdub21lLm9yZyIsICJtcm9iaW5zb25Ad2Via2l0Lm9yZyIsICJkYW53QGdub21l
Lm9yZyIgXSwKICAgICAgICAgIlRleHR1cmVNYXBwZXIiIDogWyAibm9hbUB3ZWJraXQub3JnIiwg
ImNtYXJjZWxvQHdlYmtpdC5vcmciLCAibHVpekB3ZWJraXQub3JnIiBdLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>