<?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>50464</bug_id>
          
          <creation_ts>2010-12-03 10:59:52 -0800</creation_ts>
          <short_desc>Clean up some text-related code on GraphicsContext</short_desc>
          <delta_ts>2010-12-03 13:12:38 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>50474</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316903</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 10:59:52 -0800</bug_when>
    <thetext>Cleanup coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316927</commentid>
    <comment_count>1</comment_count>
      <attachid>75517</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 11:36:15 -0800</bug_when>
    <thetext>Created attachment 75517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316928</commentid>
    <comment_count>2</comment_count>
      <attachid>75518</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 11:37:59 -0800</bug_when>
    <thetext>Created attachment 75518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316940</commentid>
    <comment_count>3</comment_count>
      <attachid>75518</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-03 11:52:12 -0800</bug_when>
    <thetext>Comment on attachment 75518
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=75518&amp;action=review

Looks great, r=me.

&gt; WebCore/platform/graphics/chromium/FontLinux.cpp:656
&gt; +    bool stroke = (textMode &amp; TextModeStroke)

Superfluous braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316941</commentid>
    <comment_count>4</comment_count>
      <attachid>75520</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 11:52:59 -0800</bug_when>
    <thetext>Created attachment 75520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316952</commentid>
    <comment_count>5</comment_count>
      <attachid>75518</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 12:09:03 -0800</bug_when>
    <thetext>Comment on attachment 75518
Patch

http://trac.webkit.org/changeset/73284</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316959</commentid>
    <comment_count>6</comment_count>
      <attachid>75520</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-12-03 12:23:48 -0800</bug_when>
    <thetext>Comment on attachment 75520
Patch

LGTM. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316961</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-03 12:25:05 -0800</bug_when>
    <thetext>Attachment 75518 did not build on chromium:
Build output: http://queues.webkit.org/results/6728031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316996</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-03 13:12:38 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73292</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75517</attachid>
            <date>2010-12-03 11:36:15 -0800</date>
            <delta_ts>2010-12-03 11:37:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50464-20101203113614.patch</filename>
            <type>text/plain</type>
            <size>35774</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDc5MmQ2NjllOGM5YzIzY2NlNjFlODM5N2ZjNGQzMmQ2OGM1MmQ3Mi4uZjVlNDFkNzQ4NWVhN2Jl
YmIwYTM5NjEwNjNmMmY2MzNhNGI1NjM3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMC0xMi0wMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBzb21lIHRleHQtcmVsYXRlZCBj
b2RlIG9uIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA0NjQKKworICAgICAgICBVc2UgZGVmaW5lZCB0eXBlcyBmb3IgdGV4
dERyYXdpbmdNb2RlIGFuZCBpdCdzIGFzc29jaWF0ZWQgZmxhZ3MuCisKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ds
eXBoc1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFpbnRlclN0YXRlOjpQbGF0Zm9ybVBhaW50ZXJT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjp0ZXh0RHJhd2luZ01vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5WRzo6c2V0VGV4dERyYXdpbmdNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50ZXJPcGVuVkc6OmRyYXdUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1Rl
eHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0
ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0VGV4
dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNl
dFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OnNldFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyOjp0ZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlcjo6VGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R0RJR2x5cGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3VGV4dFVz
aW5nU1ZHRm9udCk6CisKIDIwMTAtMTItMDMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlYjU1
MmM2MmY4YWQ0ZWEwMmQ0NjdiYjViYzNjM2M1NGI1ZmI4NmQyLi40NWI5YzU1NzlhMDA2M2I3NjJm
OWZhMDBmYjk0YzJhMmIwZTRkZmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODMwLDcgKzE4MzAsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQs
IGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gY1RleHRGaWxsIDogY1RleHRT
dHJva2UpOworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoZmls
bCA/IFRleHRNb2RlRmlsbCA6IFRleHRNb2RlU3Ryb2tlKTsKICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgICAg
IG1hc2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7
CkBAIC0xODQ1LDcgKzE4NDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIH0KICNl
bmRpZgogCi0gICAgYy0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBjVGV4dEZpbGwgOiBjVGV4
dFN0cm9rZSk7CisgICAgYy0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwg
OiBUZXh0TW9kZVN0cm9rZSk7CiAKICNpZiBQTEFURk9STShRVCkKICAgICAvLyBXZSBhbHdheXMg
dXNlIGNvbXBsZXggdGV4dCBzaGFwaW5nIHNpbmNlIGl0IGNhbid0IGJlIHR1cm5lZCBvZmYgZm9y
IFFQYWludGVyUGF0aDo6YWRkVGV4dCgpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGY1ZTliMTRmY2JiMmI1ZGQ0NWMyYzRjMjgxMmQ4Zjgy
ZGFhZTk2ZTMuLjJlZGNjNmQwMjA1ZTgyMzk5YjAzNTEwN2FlY2NiYTRjYjEyZmZkOGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTUyNiwx
MiArNTI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlCiAgICAgYnVmZmVyLT5jbGlwKHRo
aXMsIHJlY3QpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKQor
VGV4dERyYXdpbmdNb2RlRmxhZ3MgR3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUudGV4dERyYXdpbmdNb2RlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFn
cyBtb2RlKQogewogICAgIG1fY29tbW9uLT5zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOwog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlUGF0dGVybihQYXR0ZXJuKikKICNpZiAhUExB
VEZPUk0oQ0cpICYmICFQTEFURk9STShTS0lBKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdh
bnQgdG8gZ28gYWhlYWQgYW5kIHB1c2ggdGhlIGRyYXdpbmcgbW9kZSBpbnRvIHlvdXIgbmF0aXZl
IGNvbnRleHQKIC8vIGltbWVkaWF0ZWx5Lgotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtVGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiB7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IDU1MWFkYzMzZjlkZWQ1ZWIwZTVjYzg4NmRkYTdlYzUxNzEyYzk4NGEuLjRiN2E1MDUyYTExYmY2
MWQ1ZTViMmZjYWIxMDkxMjYzYjU4MmM4MjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTMxLDExICsxMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogICAgIGNsYXNzIFRleHRS
dW47CiAKLSAgICAvLyBUaGVzZSBiaXRzIGNhbiBiZSBPUmVkIHRvZ2V0aGVyIGZvciBhIHRvdGFs
IG9mIDggcG9zc2libGUgdGV4dCBkcmF3aW5nIG1vZGVzLgotICAgIGNvbnN0IGludCBjVGV4dElu
dmlzaWJsZSA9IDA7Ci0gICAgY29uc3QgaW50IGNUZXh0RmlsbCA9IDE7Ci0gICAgY29uc3QgaW50
IGNUZXh0U3Ryb2tlID0gMjsKLSAgICBjb25zdCBpbnQgY1RleHRDbGlwID0gNDsKKyAgICBlbnVt
IFRleHREcmF3aW5nTW9kZSB7CisgICAgICAgIFRleHRNb2RlSW52aXNpYmxlID0gMSA8PCAwLAor
ICAgICAgICBUZXh0TW9kZUZpbGwgICAgICA9IDEgPDwgMSwKKyAgICAgICAgVGV4dE1vZGVTdHJv
a2UgICAgPSAxIDw8IDIsCisgICAgICAgIFRleHRNb2RlQ2xpcCAgICAgID0gMSA8PCAzCisgICAg
fTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFRleHREcmF3aW5nTW9kZUZsYWdzOwogCiAgICAgZW51
bSBTdHJva2VTdHlsZSB7CiAgICAgICAgIE5vU3Ryb2tlLApAQCAtMjU2LDggKzI1OCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3Qg
bnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXMgPSB0cnVlKTsKICAg
ICAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVj
dCYpOwogCi0gICAgICAgIGludCB0ZXh0RHJhd2luZ01vZGUoKTsKLSAgICAgICAgdm9pZCBzZXRU
ZXh0RHJhd2luZ01vZGUoaW50KTsKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERy
YXdpbmdNb2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VGV4dERyYXdpbmdNb2RlKFRleHRE
cmF3aW5nTW9kZUZsYWdzKTsKIAogICAgICAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0x
KTsKICAgICAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udCYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBGbG9hdFBvaW50Jik7CkBAIC00MjEsNyArNDIzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNhdmVQbGF0Zm9ybVN0YXRlKCk7CiAgICAgICAgIHZvaWQgcmVz
dG9yZVBsYXRmb3JtU3RhdGUoKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtVGV4dERyYXdp
bmdNb2RlKGludCk7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUoVGV4
dERyYXdpbmdNb2RlRmxhZ3MpOwogICAgICAgICB2b2lkIHNldFBsYXRmb3JtRm9udChjb25zdCBG
b250JiBmb250KTsKIAogICAgICAgICB2b2lkIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRQcml2YXRlLmgKaW5kZXggNjk2OTMyZTc4NTc1MjVlZWNjMDIwMWY0OGVj
ZDVkMjVlY2RhZjFjYS4uMjczYmZmZTI4YmFlYzdkZGQwYjdiNTRmYTc0ODA1NTYwYWYzNjA3YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2
YXRlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2
YXRlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgc3RydWN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoKQot
ICAgICAgICAgICAgOiB0ZXh0RHJhd2luZ01vZGUoY1RleHRGaWxsKQorICAgICAgICAgICAgOiB0
ZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKQogICAgICAgICAgICAgLCBzdHJva2VTdHlsZShT
b2xpZFN0cm9rZSkKICAgICAgICAgICAgICwgc3Ryb2tlVGhpY2tuZXNzKDApCiAgICAgICAgICAg
ICAsIHN0cm9rZUNvbG9yKENvbG9yOjpibGFjaykKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgdGV4dERyYXdp
bmdNb2RlOworICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGU7CiAg
ICAgICAgIAogICAgICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZTsKICAgICAgICAgZmxvYXQg
c3Ryb2tlVGhpY2tuZXNzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCmluZGV4IDNkNTVjNzAxNmI2OTZjYTAxNTEzZmIwNTdlNDcyMTdjZmMwNDAzN2Yu
LjRiMTE3NTY5MTJiODYxZTZlYWI1MDgwOTEwNmQxNTUzNzRiOTRhY2UgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY2Fpcm9fdCogY29udGV4dCwKICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBncmFw
aGljc0NvbnRleHQtPmNvbnRleHRTaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKIAotICAg
IGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwpIHx8
IHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KQorICAgIGlmICghKGdy
YXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRv
dy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6U29saWRTaGFkb3cpIHsK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogCiAgICAgY2Fpcm9f
c2F2ZShjcik7CiAgICAgcHJlcGFyZUNvbnRleHRGb3JHbHlwaERyYXdpbmcoY3IsIGZvbnQsIHBv
aW50KTsKLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwpIHsK
KyAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmZpbGxHcmFkaWVudCgpKSB7CiAgICAgICAgICAgICBjYWlyb19z
ZXRfc291cmNlKGNyLCBjb250ZXh0LT5maWxsR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFkaWVudCgp
KTsKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBbHBoYSgpIDwgMS4wZikgewpAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgLy8gdHdpY2UgdGhlIHNp
emUgb2YgdGhlIHdpZHRoIG9mIHRoZSB0ZXh0IHdlIHdpbGwgbm90IGFzayBjYWlybyB0byBzdHJv
a2UKICAgICAvLyB0aGUgdGV4dCBhcyBldmVuIG9uZSBzaW5nbGUgc3Ryb2tlIHdvdWxkIGNvdmVy
IHRoZSBmdWxsIHdkdGggb2YgdGhlIHRleHQuCiAgICAgLy8gIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM3NTkuCi0gICAgaWYgKGNvbnRleHQtPnRleHREcmF3
aW5nTW9kZSgpICYgY1RleHRTdHJva2UgJiYgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkgPCAy
ICogb2Zmc2V0KSB7CisgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1v
ZGVTdHJva2UgJiYgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkgPCAyICogb2Zmc2V0KSB7CiAg
ICAgICAgIGlmIChjb250ZXh0LT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgICAgICBjYWly
b19zZXRfc291cmNlKGNyLCBjb250ZXh0LT5zdHJva2VHcmFkaWVudCgpLT5wbGF0Zm9ybUdyYWRp
ZW50KCkpOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEFscGhhKCkgPCAxLjBmKSB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CmluZGV4IDJlYjkyOWUyZWRiMTM0NTI3OGM4ZDRkMzg4NTAyZTZhMDNjM2NhOTcuLjVkMmU2Zjg5
ODQxYzBlMTMwODYxZDJjMTA0NzQwOTIzNTEwMGI5MTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xMTE2LDcgKzExMTYs
NyBAQCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBHcmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdAogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKGludCBt
b2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRl
eHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTEyNCwyOCArMTEyNCwyOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUoaW50IG1vZGUpCiAgICAgLy8gV293LCB3
aXNoIENHIGhhZCB1c2VkIGJpdHMgaGVyZS4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgY1RleHRJbnZp
c2libGU6IC8vIEludmlzaWJsZQorICAgIGNhc2UgVGV4dE1vZGVJbnZpc2libGU6CiAgICAgICAg
IENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0SW52aXNpYmxlKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjVGV4dEZpbGw6IC8vIEZpbGwKKyAgICBjYXNlIFRl
eHRNb2RlRmlsbDoKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQs
IGtDR1RleHRGaWxsKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBjVGV4dFN0cm9rZTogLy8g
U3Ryb2tlCisgICAgY2FzZSBUZXh0TW9kZVN0cm9rZToKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4
dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2UpOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIDM6IC8vIEZpbGwgfCBTdHJva2UKKyAgICBjYXNlIChUZXh0TW9kZUZpbGwgfCBUZXh0
TW9kZVN0cm9rZSk6CiAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0
LCBrQ0dUZXh0RmlsbFN0cm9rZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgY1RleHRDbGlw
OiAvLyBDbGlwCisgICAgY2FzZSBUZXh0TW9kZUNsaXA6CiAgICAgICAgIENHQ29udGV4dFNldFRl
eHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0Q2xpcCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgNTogLy8gRmlsbCB8IENsaXAKKyAgICBjYXNlIChUZXh0TW9kZUZpbGwgfCBUZXh0TW9k
ZUNsaXApOgogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NH
VGV4dEZpbGxDbGlwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA2OiAvLyBTdHJva2UgfCBD
bGlwCisgICAgY2FzZSAoVGV4dE1vZGVTdHJva2UgfCBUZXh0TW9kZUNsaXApOgogICAgICAgICBD
R0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dFN0cm9rZUNsaXApOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIDc6IC8vIEZpbGwgfCBTdHJva2UgfCBDbGlwCisgICAg
Y2FzZSAoVGV4dE1vZGVGaWxsIHwgVGV4dE1vZGVTdHJva2UgfCBUZXh0TW9kZUNsaXApOgogICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEZpbGxTdHJv
a2VDbGlwKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcAppbmRleCA4MmI5ZGY3MzE4Yjdj
Y2RkMDJiYWFhNmZlOGI3NGY4MWQyM2ViYWM5Li5kMWNmYWM2ZjM3NDAxYzcyNjM5YjJhMjBlYWY2
Yzk1ODdhZjJjYTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRMaW51eC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250TGludXguY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsCiAgICAg
Z2MtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU29mdHdhcmVEcmF3KCk7CiAKICAgICBT
a0NhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAgICBp
bnQgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFRleHREcmF3aW5nTW9kZSgp
OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4
dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKIAogICAgIC8vIFdlIGRyYXcgdGV4dCB1cCB0byB0
d28gdGltZXMgKG9uY2UgZm9yIGZpbGwsIG9uY2UgZm9yIHN0cm9rZSkuCi0gICAgaWYgKHRleHRN
b2RlICYgY1RleHRGaWxsKSB7CisgICAgaWYgKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSB7CiAg
ICAgICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+c2V0
dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKICAgICAgICAgZm9udC0+cGxhdGZvcm1EYXRhKCku
c2V0dXBQYWludCgmcGFpbnQpOwpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwKICAg
ICAgICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMsIG51bUdseXBocyA8PCAxLCBwb3MsIHBh
aW50KTsKICAgICB9CiAKLSAgICBpZiAoKHRleHRNb2RlICYgY1RleHRTdHJva2UpCisgICAgaWYg
KCh0ZXh0TW9kZSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAgICAmJiBnYy0+cGxhdGZvcm1Db250
ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UKICAgICAgICAgJiYgZ2MtPnBsYXRm
b3JtQ29udGV4dCgpLT5nZXRTdHJva2VUaGlja25lc3MoKSA+IDApIHsKIApAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBT
aW1wbGVGb250RGF0YSogZm9udCwKICAgICAgICAgcGFpbnQuc2V0VGV4dEVuY29kaW5nKFNrUGFp
bnQ6OmtHbHlwaElEX1RleHRFbmNvZGluZyk7CiAgICAgICAgIHBhaW50LnNldENvbG9yKGdjLT5z
dHJva2VDb2xvcigpLnJnYigpKTsKIAotICAgICAgICBpZiAodGV4dE1vZGUgJiBjVGV4dEZpbGwp
IHsKKyAgICAgICAgaWYgKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSB7CiAgICAgICAgICAgICAv
LyBJZiB3ZSBhbHNvIGZpbGxlZCwgd2UgZG9uJ3Qgd2FudCB0byBkcmF3IHNoYWRvd3MgdHdpY2Uu
CiAgICAgICAgICAgICAvLyBTZWUgY29tbWVudCBpbiBGb250Q2hyb21pdW1XaW4uY3BwOjpwYWlu
dFNraWFUZXh0KCkgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAgICAgIFNrU2FmZVVucmVmKHBh
aW50LnNldExvb3BlcigwKSk7CkBAIC02NTEsOSArNjUxLDkgQEAgdm9pZCBGb250OjpkcmF3Q29t
cGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgICAg
ICByZXR1cm47CiAKICAgICBTa0NhbnZhcyogY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKTsKLSAgICBpbnQgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdl
dFRleHREcmF3aW5nTW9kZSgpOwotICAgIGJvb2wgZmlsbCA9IHRleHRNb2RlICYgY1RleHRGaWxs
OwotICAgIGJvb2wgc3Ryb2tlID0gKHRleHRNb2RlICYgY1RleHRTdHJva2UpCisgICAgVGV4dERy
YXdpbmdNb2RlRmxhZ3MgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFRleHRE
cmF3aW5nTW9kZSgpOworICAgIGJvb2wgZmlsbCA9IHRleHRNb2RlICYgVGV4dE1vZGVGaWxsOwor
ICAgIGJvb2wgc3Ryb2tlID0gKHRleHRNb2RlICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAgICAg
ICAgICAmJiBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgIT0gTm9TdHJv
a2UKICAgICAgICAgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlVGhp
Y2tuZXNzKCkgPiAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3Bw
CmluZGV4IDU0ZTE4Yzk2YjBlY2FmZGI0YjRjOWZmN2QwMTMwNTk0Nzk1ZDQyN2IuLmY2YzVmMmE3
OTQ5NzI4ODg3NGExYmY3NWIxNWRlYzFhNDc2NWNkZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIHZvaWQgZHJh
d0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fpcm9fdCog
Y29udGV4dCwKICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQtPmNv
bnRleHRTaGFkb3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKIAotICAgIGlmICghKGdyYXBoaWNz
Q29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwpIHx8IHNoYWRvdy0+bV90eXBl
ID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KQorICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+
dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy0+bV90eXBlID09IENv
bnRleHRTaGFkb3c6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFBvaW50
IHRvdGFsT2Zmc2V0KHBvaW50ICsgc2hhZG93LT5tX29mZnNldCk7CkBAIC0zMDAsNyArMzAwLDcg
QEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKIAogICAgIHBhbmdvX2NhaXJvX3Nob3dfbGF5b3V0
X2xpbmUoY3IsIGxheW91dExpbmUpOwogCi0gICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9k
ZSgpICYgY1RleHRTdHJva2UpIHsKKyAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkg
JiBUZXh0TW9kZVN0cm9rZSkgewogICAgICAgICBDb2xvciBzdHJva2VDb2xvciA9IGNvbnRleHQt
PnN0cm9rZUNvbG9yKCk7CiAgICAgICAgIHN0cm9rZUNvbG9yLmdldFJHQkEocmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpOwogICAgICAgICBjYWlyb19zZXRfc291cmNlX3JnYmEoY3IsIHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1t
CmluZGV4IDhkYzc0MWJmOGJiNDI3MjBhMmNjOTY5NzdkNzZhNmY4YjE5MmQ5MTMuLjhmMTVjYjMw
OWU4NjU1N2ZlYTZjZmE4ZWQyMDM3OTlhMjRhNzIxMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udE1hYy5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250
LCBjb25zCiAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQtPmZpbGxDb2xv
clNwYWNlKCk7CiAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1
ciwgc2hhZG93Q29sb3IpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LT50
ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYm
ICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKTsKKyAgICBi
b29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRN
b2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRm
b3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpIHsK
ICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2YgcmVs
eWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFzaW5n
LgogICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcAppbmRleCA3NDA5YTk3M2I3OTdh
ZTE4NDEzZDZlYjFiYmE1ODM0MjM1NjAxZTBmLi41NDkzN2E0NzQ0M2Q0NzY0MmEwZGE5NGViYTVi
M2ZmNWRkMmJhMmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9QYWludGVyT3BlblZHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9QYWludGVyT3BlblZHLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBQbGF0Zm9ybVBh
aW50ZXJTdGF0ZSB7CiAgICAgRGFzaEFycmF5IHN0cm9rZURhc2hBcnJheTsKICAgICBmbG9hdCBz
dHJva2VEYXNoT2Zmc2V0OwogCi0gICAgaW50IHRleHREcmF3aW5nTW9kZTsKKyAgICBUZXh0RHJh
d2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGU7CiAgICAgYm9vbCBhbnRpYWxpYXNpbmdFbmFi
bGVkOwogCiAgICAgUGxhdGZvcm1QYWludGVyU3RhdGUoKQpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0
cnVjdCBQbGF0Zm9ybVBhaW50ZXJTdGF0ZSB7CiAgICAgICAgICwgc3Ryb2tlTGluZUpvaW4oTWl0
ZXJKb2luKQogICAgICAgICAsIHN0cm9rZU1pdGVyTGltaXQoNC4wKQogICAgICAgICAsIHN0cm9r
ZURhc2hPZmZzZXQoMC4wKQotICAgICAgICAsIHRleHREcmF3aW5nTW9kZShjVGV4dEZpbGwpCisg
ICAgICAgICwgdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAgICAgLCBhbnRpYWxp
YXNpbmdFbmFibGVkKHRydWUpCiAgICAgewogICAgIH0KQEAgLTY1MywxMyArNjUzLDEzIEBAIHZv
aWQgUGFpbnRlck9wZW5WRzo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBz
ZXRWR1NvbGlkQ29sb3IoVkdfRklMTF9QQVRILCBjb2xvcik7CiB9CiAKLWludCBQYWludGVyT3Bl
blZHOjp0ZXh0RHJhd2luZ01vZGUoKSBjb25zdAorVGV4dERyYXdpbmdNb2RlRmxhZ3MgUGFpbnRl
ck9wZW5WRzo6dGV4dERyYXdpbmdNb2RlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9zdGF0ZSk7
CiAgICAgcmV0dXJuIG1fc3RhdGUtPnRleHREcmF3aW5nTW9kZTsKIH0KIAotdm9pZCBQYWludGVy
T3BlblZHOjpzZXRUZXh0RHJhd2luZ01vZGUoaW50IG1vZGUpCit2b2lkIFBhaW50ZXJPcGVuVkc6
OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKQogewogICAgIEFT
U0VSVChtX3N0YXRlKTsKICAgICBtX3N0YXRlLT50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOwpAQCAt
MTExNCwxMSArMTExNCwxMSBAQCB2b2lkIFBhaW50ZXJPcGVuVkc6OmRyYXdUZXh0KFZHRm9udCB2
Z0ZvbnQsIFZlY3RvcjxWR3VpbnQ+JiBjaGFyYWN0ZXJzLCBWR2Zsb2F0KgogCiAgICAgVkdiaXRm
aWVsZCBwYWludE1vZGVzID0gMDsKIAotICAgIGlmIChtX3N0YXRlLT50ZXh0RHJhd2luZ01vZGUg
JiBjVGV4dENsaXApCisgICAgaWYgKG1fc3RhdGUtPnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2Rl
Q2xpcCkKICAgICAgICAgcmV0dXJuOyAvLyB1bnN1cHBvcnRlZCBmb3IgZXZlcnkgcG9ydCBleGNl
cHQgQ0cgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZwotICAgIGlmIChtX3N0YXRlLT50ZXh0RHJhd2lu
Z01vZGUgJiBjVGV4dEZpbGwgJiYgIW1fc3RhdGUtPmZpbGxEaXNhYmxlZCgpKQorICAgIGlmICht
X3N0YXRlLT50ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwgJiYgIW1fc3RhdGUtPmZpbGxE
aXNhYmxlZCgpKQogICAgICAgICBwYWludE1vZGVzIHw9IFZHX0ZJTExfUEFUSDsKLSAgICBpZiAo
bV9zdGF0ZS0+dGV4dERyYXdpbmdNb2RlICYgY1RleHRTdHJva2UgJiYgIW1fc3RhdGUtPnN0cm9r
ZURpc2FibGVkKCkpCisgICAgaWYgKG1fc3RhdGUtPnRleHREcmF3aW5nTW9kZSAmIFRleHRNb2Rl
U3Ryb2tlICYmICFtX3N0YXRlLT5zdHJva2VEaXNhYmxlZCgpKQogICAgICAgICBwYWludE1vZGVz
IHw9IFZHX1NUUk9LRV9QQVRIOwogCiAgICAgbV9zdXJmYWNlLT5tYWtlQ3VycmVudCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4IDg5ZGZkMDBlZjgyYThkM2Fj
Mjk3ZTg1NmU5NmI4MTE4NTI3OTUwODQuLjFlZTJiMjkzYTNhM2NkYjMzOGVmMTAyNTJjNTEwMDhi
MjJjZGQzOGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBj
dHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAgICBRUGFpbnRlciAqcCA9IGN0
eC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBRUGVuIHRleHRGaWxsUGVuOwotICAgIGlmIChj
dHgtPnRleHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB7CisgICAgaWYgKGN0eC0+dGV4dERy
YXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsKICAgICAgICAgaWYgKGN0eC0+ZmlsbEdyYWRp
ZW50KCkpIHsKICAgICAgICAgICAgIFFCcnVzaCBicnVzaCgqY3R4LT5maWxsR3JhZGllbnQoKS0+
cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgICAgIGJydXNoLnNldFRyYW5zZm9ybShjdHgt
PmZpbGxHcmFkaWVudCgpLT5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwpAQCAtOTIsNyArOTIs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogICAgIH0KIAogICAgIFFQZW4gdGV4dFN0cm9r
ZVBlbjsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIGNUZXh0U3Ryb2tlKSB7Cisg
ICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkgewogICAgICAg
ICBpZiAoY3R4LT5zdHJva2VHcmFkaWVudCgpKSB7CiAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2go
KmN0eC0+c3Ryb2tlR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgICAg
IGJydXNoLnNldFRyYW5zZm9ybShjdHgtPnN0cm9rZUdyYWRpZW50KCktPmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSk7CkBAIC0xNzksMTcgKzE3OSwxNyBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENv
bW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9h
dAogICAgIGludCBmbGFncyA9IHJ1bi5ydGwoKSA/IFF0OjpUZXh0Rm9yY2VSaWdodFRvTGVmdCA6
IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdodDsKICNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05f
Q0hFQ0soNCwgNywgMCkKICAgICAvLyBTZWUgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZh
dGUoKSB3aGVyZSB0aGUgZGVmYXVsdCBwYXRoIGlzIHNldCB0byBDb21wbGV4IGZvciBRdCA0LjYg
YW5kIGVhcmxpZXIuCi0gICAgaWYgKCFpc0NvbXBsZXhUZXh0ICYmICEoY3R4LT50ZXh0RHJhd2lu
Z01vZGUoKSAmIGNUZXh0U3Ryb2tlKSkKKyAgICBpZiAoIWlzQ29tcGxleFRleHQgJiYgIShjdHgt
PnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpKQogICAgICAgICBmbGFncyB8PSBR
dDo6VGV4dEJ5cGFzc1NoYXBpbmc7CiAjZW5kaWYKIAogICAgIFFQYWludGVyUGF0aCB0ZXh0U3Ry
b2tlUGF0aDsKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIGNUZXh0U3Ryb2tlKQor
ICAgIGlmIChjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAg
IHRleHRTdHJva2VQYXRoLmFkZFRleHQocHQsIGZvbnQsIHN0cmluZyk7CiAKICAgICBDb250ZXh0
U2hhZG93KiBjdHhTaGFkb3cgPSBjdHgtPmNvbnRleHRTaGFkb3coKTsKICAgICBpZiAoY3R4U2hh
ZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Tm9TaGFkb3cpIHsKLSAgICAgICAgaWYgKGN0
eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwpIHsKKyAgICAgICAgaWYgKGN0eC0+dGV4
dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsKICAgICAgICAgICAgIGlmIChjdHhTaGFk
b3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CiAgICAgICAgICAgICAg
ICAgcC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgIHAtPnNldFBlbihjdHhTaGFkb3ctPm1fY29s
b3IpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBo
aWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAgICAgICAg
ICAgICAgICAgICAgIGN0eFNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGN0eC0+dGV4dERyYXdpbmdN
b2RlKCkgJiBjVGV4dFN0cm9rZSkgeworICAgICAgICB9IGVsc2UgaWYgKGN0eC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkgewogICAgICAgICAgICAgaWYgKGN0eFNoYWRvdy0+
bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKICAgICAgICAgICAgICAgICBw
LT50cmFuc2xhdGUoY3R4U2hhZG93LT5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgcC0+c3Ry
b2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgUVBlbihjdHhTaGFkb3ctPm1fY29sb3IpKTsKQEAgLTIz
NSwxMCArMjM1LDEwIEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4
dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIGNUZXh0U3Ryb2tlKQorICAgIGlm
IChjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAgIHAtPnN0
cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHRleHRTdHJva2VQZW4pOwogCi0gICAgaWYgKGN0eC0+
dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dEZpbGwpIHsKKyAgICBpZiAoY3R4LT50ZXh0RHJhd2lu
Z01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewogICAgICAgICBRUGVuIHByZXZpb3VzUGVuID0gcC0+
cGVuKCk7CiAgICAgICAgIHAtPnNldFBlbih0ZXh0RmlsbFBlbik7CiAgICAgICAgIHAtPmRyYXdU
ZXh0KHB0LCBzdHJpbmcsIGZsYWdzLCBydW4ucGFkZGluZygpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCBk
NjEwYzJhYTMxYWVkZjFkZDQxYTBmMTA3MzQ2ZTA0N2Q3NzVmM2E5Li5jOGY5Yjg2NTdiNjZkOWU4
ZWJkNGNkMjE2YjIzZWRhYjZlNzU4ZWM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBAIC05NCw4ICs5NCw4IEBA
IHN0cnVjdCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZSB7CiAgICAgU2tQYWludDo6Sm9pbiBt
X2xpbmVKb2luOwogICAgIFNrRGFzaFBhdGhFZmZlY3QqIG1fZGFzaDsKIAotICAgIC8vIFRleHQu
IChTZWUgY1RleHRGaWxsICYgZnJpZW5kcyBpbiBHcmFwaGljc0NvbnRleHQuaC4pCi0gICAgaW50
IG1fdGV4dERyYXdpbmdNb2RlOworICAgIC8vIFRleHQuIChTZWUgVGV4dE1vZGVGaWxsICYgZnJp
ZW5kcyBpbiBHcmFwaGljc0NvbnRleHQuaC4pCisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgbV90
ZXh0RHJhd2luZ01vZGU7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGFwcGx5aW5nIHRo
ZSBzdGF0ZSdzIGFscGhhIHZhbHVlIHRvIHRoZSBnaXZlbiBpbnB1dAogICAgIC8vIGNvbG9yIHRv
IHByb2R1Y2UgYSBuZXcgb3V0cHV0IGNvbG9yLgpAQCAtMTM3LDcgKzEzNyw3IEBAIFBsYXRmb3Jt
Q29udGV4dFNraWE6OlN0YXRlOjpTdGF0ZSgpCiAgICAgLCBtX2xpbmVDYXAoU2tQYWludDo6a0Rl
ZmF1bHRfQ2FwKQogICAgICwgbV9saW5lSm9pbihTa1BhaW50OjprRGVmYXVsdF9Kb2luKQogICAg
ICwgbV9kYXNoKDApCi0gICAgLCBtX3RleHREcmF3aW5nTW9kZShjVGV4dEZpbGwpCisgICAgLCBt
X3RleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpCiAgICAgLCBtX2ludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25IaWdoKQogICAgICwgbV9jYW52YXNDbGlwQXBwbGllZChmYWxzZSkK
IHsKQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFN0cm9r
ZVNoYWRlcihTa1NoYWRlciogc3Ryb2tlU2hhZGVyKQogICAgIH0KIH0KIAotaW50IFBsYXRmb3Jt
Q29udGV4dFNraWE6OmdldFRleHREcmF3aW5nTW9kZSgpIGNvbnN0CitUZXh0RHJhd2luZ01vZGVG
bGFncyBQbGF0Zm9ybUNvbnRleHRTa2lhOjpnZXRUZXh0RHJhd2luZ01vZGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N0YXRlLT5tX3RleHREcmF3aW5nTW9kZTsKIH0KQEAgLTUyMSwxMSArNTIx
LDExIEBAIGludCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpnZXROb3JtYWxpemVkQWxwaGEoKSBjb25z
dAogICAgIHJldHVybiBhbHBoYTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRU
ZXh0RHJhd2luZ01vZGUoaW50IG1vZGUpCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldFRl
eHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKQogewotICAgIC8vIGNUZXh0
Q2xpcCBpcyBuZXZlciB1c2VkLCBzbyB3ZSBhc3NlcnQgdGhhdCBpdCBpc24ndCBzZXQ6CisgICAg
Ly8gVGV4dE1vZGVDbGlwIGlzIG5ldmVyIHVzZWQsIHNvIHdlIGFzc2VydCB0aGF0IGl0IGlzbid0
IHNldDoKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
OTgKLSAgICBBU1NFUlQoIShtb2RlICYgY1RleHRDbGlwKSk7CisgICAgQVNTRVJUKCEobW9kZSAm
IFRleHRNb2RlQ2xpcCkpOwogICAgIG1fc3RhdGUtPm1fdGV4dERyYXdpbmdNb2RlID0gbW9kZTsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAK
aW5kZXggNmFjZmQzNWU3MmY0MWEwNzYzYWYyZTE2YjQ2MWQzNWVkODc1NzczNC4uNjJhNGQ5NjU2
MjFkZGJiODEzZjQxYjVjYjFlOWVlZTQyNmNlYTgzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCB3
aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayBmb3Igc3Ryb2tlIGVmZmVjdHMuCi0g
ICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKSAh
PSBjVGV4dEZpbGwpCisgICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0
RHJhd2luZ01vZGUoKSAhPSBUZXh0TW9kZUZpbGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIENoZWNrIGZvciBncmFkaWVudHMuCkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBwYWlu
dFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBIR0RJT0JKIG9sZEZvbnQg
PSBTZWxlY3RPYmplY3QoZGMsIGhmb250KTsKIAogICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBs
YXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgIGludCB0ZXh0
TW9kZSA9IHBsYXRmb3JtQ29udGV4dC0+Z2V0VGV4dERyYXdpbmdNb2RlKCk7CisgICAgVGV4dERy
YXdpbmdNb2RlRmxhZ3MgdGV4dE1vZGUgPSBwbGF0Zm9ybUNvbnRleHQtPmdldFRleHREcmF3aW5n
TW9kZSgpOwogCiAgICAgLy8gRmlsbGluZyAoaWYgbmVjZXNzYXJ5KS4gVGhpcyBpcyB0aGUgY29t
bW9uIGNhc2UuCiAgICAgU2tQYWludCBwYWludDsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIHBh
aW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgIHBhaW50LnNldEZsYWdz
KFNrUGFpbnQ6OmtBbnRpQWxpYXNfRmxhZyk7CiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7CiAK
LSAgICBpZiAoKHRleHRNb2RlICYgY1RleHRGaWxsKSAmJiBTa0NvbG9yR2V0QShwYWludC5nZXRD
b2xvcigpKSkgeworICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIFNrQ29sb3JH
ZXRBKHBhaW50LmdldENvbG9yKCkpKSB7CiAgICAgICAgIGlmICghc2tpYURyYXdUZXh0KGhmb250
LCBkYywgcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSwgKm9yaWdpbiwgJnBhaW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBd
LCBudW1HbHlwaHMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzIzLDcgKzMyMyw3
IEBAIGJvb2wgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgfQog
CiAgICAgLy8gU3Ryb2tpbmcgb24gdG9wIChpZiBuZWNlc3NhcnkpLgotICAgIGlmICgodGV4dE1v
ZGUgJiBjVGV4dFN0cm9rZSkKKyAgICBpZiAoKHRleHRNb2RlICYgVGV4dE1vZGVTdHJva2UpCiAg
ICAgICAgICYmIHBsYXRmb3JtQ29udGV4dC0+Z2V0U3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZQog
ICAgICAgICAmJiBwbGF0Zm9ybUNvbnRleHQtPmdldFN0cm9rZVRoaWNrbmVzcygpID4gMCkgewog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgK
aW5kZXggMjUwMTI1YmUxYzZkY2NmYzFiYjNmMmYyY2FhYWM0OWI2ZjJjZGM4OC4uNTg5ZmRhMWYz
YmUyZWY5MDMzZjA5NWMyNmM1MzIwZGFmYjllMWQ5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTEwLDIyICsxMTAsMjIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0
dXJlKCkgPSAwOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxp
dHk7IH0KLSAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShpbnQgbW9kZSkgeyBtX3RleHREcmF3
aW5nTW9kZSA9IG1vZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncyBtb2RlKSB7IG1fdGV4dERyYXdpbmdNb2RlID0gbW9kZTsgfQogCiAgICAgSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KLSAgICBpbnQgdGV4dERyYXdpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RHJhd2luZ01vZGU7IH0KKyAgICBUZXh0RHJhd2luZ01vZGVG
bGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3RleHREcmF3aW5nTW9kZTsg
fQogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgVGV4dHVyZU1hcHBlcigpCiAgICAgICAgIDogbV9pbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uRGVmYXVsdCkKLSAgICAgICAgLCBtX3RleHREcmF3aW5nTW9kZShjVGV4
dEZpbGwpCisgICAgICAgICwgbV90ZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKQogICAgIHt9
CiAKIHByaXZhdGU6CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9pbnRlcnBvbGF0aW9uUXVh
bGl0eTsKLSAgICBpbnQgbV90ZXh0RHJhd2luZ01vZGU7CisgICAgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgbV90ZXh0RHJhd2luZ01vZGU7CiB9OwogCiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggMmYxZmI0MWM0ZDgzOWU3ZDRkNTNmOTAzM2IwNjlm
OTdjNDRhNzI1ZC4uYTI3ODcyYmVjNzUwOGM3YzkzMTgxMzc5OWFmMThiMDFjNWRjMGJlMyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCkBAIC0xMzMsOCAr
MTMzLDggQEAgc3RhdGljIHZvaWQgZHJhd0dESUdseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEKICAgICBDb2xvciBmaWxsQ29sb3IgPSBn
cmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigpOwogCiAgICAgYm9vbCBkcmF3SW50b0JpdG1hcCA9
IGZhbHNlOwotICAgIGludCBkcmF3aW5nTW9kZSA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCk7Ci0gICAgaWYgKGRyYXdpbmdNb2RlID09IGNUZXh0RmlsbCkgeworICAgIFRleHRE
cmF3aW5nTW9kZUZsYWdzIGRyYXdpbmdNb2RlID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2lu
Z01vZGUoKTsKKyAgICBpZiAoZHJhd2luZ01vZGUgPT0gVGV4dE1vZGVGaWxsKSB7CiAgICAgICAg
IGlmICghZmlsbENvbG9yLmFscGhhKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwNSw3
ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R0RJR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YQogICAgICAgICBNb2RpZnlXb3JsZFRy
YW5zZm9ybShoZGMsICZ4Zm9ybSwgTVdUX0xFRlRNVUxUSVBMWSk7CiAgICAgfQogCi0gICAgaWYg
KGRyYXdpbmdNb2RlID09IGNUZXh0RmlsbCkgeworICAgIGlmIChkcmF3aW5nTW9kZSA9PSBUZXh0
TW9kZUZpbGwpIHsKICAgICAgICAgWEZPUk0geGZvcm07CiAgICAgICAgIHhmb3JtLmVNMTEgPSAx
LjA7CiAgICAgICAgIHhmb3JtLmVNMTIgPSAwOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHN0YXRpYyB2
b2lkIGRyYXdHRElHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFNpbXBsZUZvbnREYXRhCiAgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4
dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY2dDb250ZXh0LCBpbml0aWFsR2x5
cGhUcmFuc2Zvcm0pOwogCi0gICAgICAgICAgICBpZiAoZHJhd2luZ01vZGUgJiBjVGV4dEZpbGwp
IHsKKyAgICAgICAgICAgIGlmIChkcmF3aW5nTW9kZSAmIFRleHRNb2RlRmlsbCkgewogICAgICAg
ICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250ZXh0LCBnbHlwaFBhdGguZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGNnQ29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewpAQCAtMjU3LDcgKzI1Nyw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdHRElHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhCiAgICAgICAgICAgICAgICAgICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQsIC1mb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIDAp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChkcmF3
aW5nTW9kZSAmIGNUZXh0U3Ryb2tlKSB7CisgICAgICAgICAgICBpZiAoZHJhd2luZ01vZGUgJiBU
ZXh0TW9kZVN0cm9rZSkgewogICAgICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY2dDb250
ZXh0LCBnbHlwaFBhdGguZ2V0KCkpOwogICAgICAgICAgICAgICAgIENHQ29udGV4dFN0cm9rZVBh
dGgoY2dDb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAoZm9udC0+c3ludGhldGljQm9sZE9m
ZnNldCgpKSB7CkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm8KICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxl
U2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwg
JiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyOworICAgIGJvb2wgaGFzU2lt
cGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9k
ZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyOwogICAgIGlmICho
YXNTaW1wbGVTaGFkb3cpIHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2Vs
dmVzIGluc3RlYWQgb2YgcmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3Vi
cGl4ZWwgYW50aWFsaWFzaW5nLgogICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNz
Q29udGV4dFdpbkNFLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhp
Y3NDb250ZXh0V2luQ0UuY3BwCmluZGV4IDkxN2Q1ODU3ZjA2NmU4NzU0ZjdkNTk2MTlhNDM5MjEx
ZmZmYjQzNzUuLmE1MjY1OGYyYjdmOTEwZTg5ZGI5ODY2M2VlYmZlZjFmNGQyZGM4MjkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250
ZXh0V2luQ0UuY3BwCkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RleHQoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBHbHlwaEJ1ZmZl
cgogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7
CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgYm9vbCBoYXNTaGFkb3cgPSB0ZXh0RHJhd2lu
Z01vZGUoKSA9PSBjVGV4dEZpbGwKKyAgICBib29sIGhhc1NoYWRvdyA9IHRleHREcmF3aW5nTW9k
ZSgpID09IFRleHRNb2RlRmlsbAogICAgICAgICAmJiBnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcikKICAgICAgICAgJiYgc2hhZG93Q29sb3IuYWxwaGEoKTsK
ICAgICBDT0xPUlJFRiBzaGFkb3dSR0JDb2xvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggZDA1NTE4NTJhZDVlOTEwYWEyNWJmNzg1NmUxZjc1ZmRjMzkwN2MyMi4uMTA5NTk3
Zjk1ZTc0Zjg5ZGFiNDVkM2RhMmI1NDY1ODE0OGRhZDg5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKQEAgLTI4NCwxOSArMjg0LDE5IEBAIENvbG9yIGNvcnJlY3RlZFRleHRDb2xv
cihDb2xvciB0ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xvcikKIAogdm9pZCB1cGRhdGVH
cmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBDb2xvciYgZmls
bENvbG9yLCBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGludCBtb2RlID0gY29udGV4dC0+dGV4dERy
YXdpbmdNb2RlKCk7CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSA9IGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpOwogICAgIGlmIChzdHJva2VUaGlja25lc3MgPiAwKSB7Ci0gICAgICAg
IGludCBuZXdNb2RlID0gbW9kZSB8IGNUZXh0U3Ryb2tlOworICAgICAgICBUZXh0RHJhd2luZ01v
ZGVGbGFncyBuZXdNb2RlID0gbW9kZSB8IFRleHRNb2RlU3Ryb2tlOwogICAgICAgICBpZiAobW9k
ZSAhPSBuZXdNb2RlKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
bmV3TW9kZSk7CiAgICAgICAgICAgICBtb2RlID0gbmV3TW9kZTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBpZiAobW9kZSAmIGNUZXh0RmlsbCAmJiAoZmlsbENvbG9yICE9IGNvbnRleHQt
PmZpbGxDb2xvcigpIHx8IGNvbG9yU3BhY2UgIT0gY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKSkp
CisgICAgaWYgKG1vZGUgJiBUZXh0TW9kZUZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LT5m
aWxsQ29sb3IoKSB8fCBjb2xvclNwYWNlICE9IGNvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpKQog
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBjb2xvclNwYWNlKTsKIAot
ICAgIGlmIChtb2RlICYgY1RleHRTdHJva2UpIHsKKyAgICBpZiAobW9kZSAmIFRleHRNb2RlU3Ry
b2tlKSB7CiAgICAgICAgIGlmIChzdHJva2VDb2xvciAhPSBjb250ZXh0LT5zdHJva2VDb2xvcigp
KQogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IsIGNvbG9y
U3BhY2UpOwogICAgICAgICBpZiAoc3Ryb2tlVGhpY2tuZXNzICE9IGNvbnRleHQtPnN0cm9rZVRo
aWNrbmVzcygpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmNwcAppbmRleCBiNzZlN2Y4NjU3Zjc2Nzk3NmFhOTJiNjFhNWMyYWJmMGZiM2JhNGIxLi43
YzM4M2QwYTNmYzU5OWJiM2RhNTU5YWUzNjkyM2EzNWU0NmYwM2VhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtMjA5LDcgKzIwOSw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJP
YmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAg
IGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShyZXNvdXJjZU1vZGUgJiBBcHBseVRvRmlsbE1v
ZGUgPyBjVGV4dEZpbGwgOiBjVGV4dFN0cm9rZSk7CisgICAgICAgIGNvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZShyZXNvdXJjZU1vZGUgJiBBcHBseVRvRmlsbE1vZGUgPyBUZXh0TW9kZUZpbGwg
OiBUZXh0TW9kZVN0cm9rZSk7CiAgICAgfQogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2
Z1N0eWxlID0gc3R5bGUtPnN2Z1N0eWxlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA4Mzc1NGFkYjc1YzRiNzVlMTEyZWQ5MzZjOTdl
YjQxMWI5NWM5MDJmLi5jZDY0MTgzMmMwNGMxMjQwYjE0ZWZhOThhZjM1YTE0ZWJiNzdkOTE2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAg
LTE2NSwxMyArMTY1LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjphcHBseVJl
c291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSoKIAogICAgIGlmIChyZXNv
dXJjZU1vZGUgJiBBcHBseVRvVGV4dE1vZGUpIHsKICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAm
IEFwcGx5VG9GaWxsTW9kZSkgewotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdN
b2RlKGNUZXh0RmlsbCk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
VGV4dE1vZGVGaWxsKTsKIAogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICAgICAgY29udGV4dC0+
YXBwbHlGaWxsUGF0dGVybigpOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VN
b2RlICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZShjVGV4dFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJh
d2luZ01vZGUoVGV4dE1vZGVTdHJva2UpOwogCiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgICAg
ICBjb250ZXh0LT5hcHBseVN0cm9rZVBhdHRlcm4oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCmluZGV4IDFlYjlkYTVlYThlYWQ0NDQ2
MGRkMTI2ZDQyMWM4N2E4Yzk1ZGIyZDIuLmMyYzcyOTdlNzUxYjk0MWY2NDBjMzgyZWM0OWQxYmJh
MjBkODNiMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
U29saWRDb2xvci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlU29s
aWRDb2xvcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bAog
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsUnVsZShzdmdTdHlsZSA/IHN2Z1N0eWxlLT5maWxsUnVs
ZSgpIDogUlVMRV9OT05aRVJPKTsKIAogICAgICAgICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlU
b1RleHRNb2RlKQotICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNUZXh0
RmlsbCk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVG
aWxsKTsKICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7
CiAgICAgICAgIGNvbnRleHQtPnNldEFscGhhKHN2Z1N0eWxlID8gc3ZnU3R5bGUtPnN0cm9rZU9w
YWNpdHkoKSA6IDEuMGYpOwogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9y
LCBjb2xvclNwYWNlKTsKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWwK
ICAgICAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQo
Y29udGV4dCwgc3R5bGUsIG9iamVjdCk7CiAKICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFw
cGx5VG9UZXh0TW9kZSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShj
VGV4dFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoVGV4
dE1vZGVTdHJva2UpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHRm9udC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdGb250LmNwcAppbmRleCA0YmRh
MmQ4Njk2MTdmYmU0ZTdmOWJhNzc5ZmUyNDBkN2FlMWQxNDM5Li5iMDE1MWNiNDM1Y2ExNWRlM2Fl
NjQzNjNhZGYxOWIwMTk0MzlhNWI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdGb250LmNw
cAorKysgYi9XZWJDb3JlL3N2Zy9TVkdGb250LmNwcApAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQg
Rm9udDo6ZHJhd1RleHRVc2luZ1NWR0ZvbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sCiAgICAgICAgIFNWR1RleHRSdW5XYWxrZXI8U1ZHVGV4dFJ1bldhbGtl
ckRyYXdUZXh0RGF0YT4gcnVuV2Fsa2VyKGZvbnREYXRhLCBmb250RWxlbWVudCwgZGF0YSwgZHJh
d1RleHRVc2luZ1NWR0ZvbnRDYWxsYmFjaywgZHJhd1RleHRNaXNzaW5nR2x5cGhDYWxsYmFjayk7
CiAgICAgICAgIHJ1bldhbGtlci53YWxrKHJ1biwgaXNWZXJ0aWNhbFRleHQsIGxhbmd1YWdlLCBm
cm9tLCB0byk7CiAKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIHJlc291cmNlTW9kZSA9
IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0U3Ryb2tlID8gQXBwbHlUb1N0cm9r
ZU1vZGUgOiBBcHBseVRvRmlsbE1vZGU7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSBy
ZXNvdXJjZU1vZGUgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9r
ZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOwogCiAgICAgICAgIHVuc2ln
bmVkIG51bUdseXBocyA9IGRhdGEuZ2x5cGhJZGVudGlmaWVycy5zaXplKCk7CiAgICAgICAgIHVu
c2lnbmVkIGZhbGxiYWNrQ2hhcmFjdGVySW5kZXggPSAwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75518</attachid>
            <date>2010-12-03 11:37:59 -0800</date>
            <delta_ts>2010-12-03 12:09:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50464-20101203113758.patch</filename>
            <type>text/plain</type>
            <size>35769</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDc5MmQ2NjllOGM5YzIzY2NlNjFlODM5N2ZjNGQzMmQ2OGM1MmQ3Mi4uZjVlNDFkNzQ4NWVhN2Jl
YmIwYTM5NjEwNjNmMmY2MzNhNGI1NjM3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMC0xMi0wMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBzb21lIHRleHQtcmVsYXRlZCBj
b2RlIG9uIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA0NjQKKworICAgICAgICBVc2UgZGVmaW5lZCB0eXBlcyBmb3IgdGV4
dERyYXdpbmdNb2RlIGFuZCBpdCdzIGFzc29jaWF0ZWQgZmxhZ3MuCisKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0ds
eXBoc1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFpbnRlclN0YXRlOjpQbGF0Zm9ybVBhaW50ZXJT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWludGVyT3BlblZHOjp0ZXh0RHJhd2luZ01vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRlck9wZW5WRzo6c2V0VGV4dERyYXdpbmdNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50ZXJPcGVuVkc6OmRyYXdUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1Rl
eHRDb21tb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0
ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0VGV4
dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNl
dFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXI6OnNldFRleHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyOjp0ZXh0RHJhd2luZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlcjo6VGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R0RJR2x5cGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjphcHBseVJlc291cmNlKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3VGV4dFVz
aW5nU1ZHRm9udCk6CisKIDIwMTAtMTItMDMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBlYjU1
MmM2MmY4YWQ0ZWEwMmQ0NjdiYjViYzNjM2M1NGI1ZmI4NmQyLi40NWI5YzU1NzlhMDA2M2I3NjJm
OWZhMDBmYjk0YzJhMmIwZTRkZmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xODMwLDcgKzE4MzAsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQs
IGZsb2F0IHgsIGZsbwogICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gY1RleHRGaWxsIDogY1RleHRT
dHJva2UpOworICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoZmls
bCA/IFRleHRNb2RlRmlsbCA6IFRleHRNb2RlU3Ryb2tlKTsKICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgICAg
IG1hc2tJbWFnZUNvbnRleHQtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7
CkBAIC0xODQ1LDcgKzE4NDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJh
d1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIH0KICNl
bmRpZgogCi0gICAgYy0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBjVGV4dEZpbGwgOiBjVGV4
dFN0cm9rZSk7CisgICAgYy0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwg
OiBUZXh0TW9kZVN0cm9rZSk7CiAKICNpZiBQTEFURk9STShRVCkKICAgICAvLyBXZSBhbHdheXMg
dXNlIGNvbXBsZXggdGV4dCBzaGFwaW5nIHNpbmNlIGl0IGNhbid0IGJlIHR1cm5lZCBvZmYgZm9y
IFFQYWludGVyUGF0aDo6YWRkVGV4dCgpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGY1ZTliMTRmY2JiMmI1ZGQ0NWMyYzRjMjgxMmQ4Zjgy
ZGFhZTk2ZTMuLjJlZGNjNmQwMjA1ZTgyMzk5YjAzNTEwN2FlY2NiYTRjYjEyZmZkOGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTUyNiwx
MiArNTI2LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlCiAgICAgYnVmZmVyLT5jbGlwKHRo
aXMsIHJlY3QpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKQor
VGV4dERyYXdpbmdNb2RlRmxhZ3MgR3JhcGhpY3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUoKSBj
b25zdAogewogICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUudGV4dERyYXdpbmdNb2RlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFn
cyBtb2RlKQogewogICAgIG1fY29tbW9uLT5zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBtb2RlOwog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlUGF0dGVybihQYXR0ZXJuKikKICNpZiAhUExB
VEZPUk0oQ0cpICYmICFQTEFURk9STShTS0lBKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdh
bnQgdG8gZ28gYWhlYWQgYW5kIHB1c2ggdGhlIGRyYXdpbmcgbW9kZSBpbnRvIHlvdXIgbmF0aXZl
IGNvbnRleHQKIC8vIGltbWVkaWF0ZWx5Lgotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtVGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiB7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IDU1MWFkYzMzZjlkZWQ1ZWIwZTVjYzg4NmRkYTdlYzUxNzEyYzk4NGEuLjU3YjQzYjgyNzhlZjQ4
ZmVjYTBkNGRmNjMwZWYzNjU4YjAyZjA1YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTMxLDExICsxMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOwogICAgIGNsYXNzIFRleHRS
dW47CiAKLSAgICAvLyBUaGVzZSBiaXRzIGNhbiBiZSBPUmVkIHRvZ2V0aGVyIGZvciBhIHRvdGFs
IG9mIDggcG9zc2libGUgdGV4dCBkcmF3aW5nIG1vZGVzLgotICAgIGNvbnN0IGludCBjVGV4dElu
dmlzaWJsZSA9IDA7Ci0gICAgY29uc3QgaW50IGNUZXh0RmlsbCA9IDE7Ci0gICAgY29uc3QgaW50
IGNUZXh0U3Ryb2tlID0gMjsKLSAgICBjb25zdCBpbnQgY1RleHRDbGlwID0gNDsKKyAgICBlbnVt
IFRleHREcmF3aW5nTW9kZSB7CisgICAgICAgIFRleHRNb2RlSW52aXNpYmxlID0gMCwKKyAgICAg
ICAgVGV4dE1vZGVGaWxsICAgICAgPSAxIDw8IDAsCisgICAgICAgIFRleHRNb2RlU3Ryb2tlICAg
ID0gMSA8PCAxLAorICAgICAgICBUZXh0TW9kZUNsaXAgICAgICA9IDEgPDwgMgorICAgIH07Cisg
ICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0RHJhd2luZ01vZGVGbGFnczsKIAogICAgIGVudW0gU3Ry
b2tlU3R5bGUgewogICAgICAgICBOb1N0cm9rZSwKQEAgLTI1Niw4ICsyNTgsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBv
aW50cywgY29uc3QgRmxvYXRQb2ludCosIGJvb2wgYW50aWFsaWFzID0gdHJ1ZSk7CiAgICAgICAg
IHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAotICAgICAgICBpbnQgdGV4dERyYXdpbmdNb2RlKCk7Ci0gICAgICAgIHZvaWQgc2V0VGV4dERy
YXdpbmdNb2RlKGludCk7CisgICAgICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5n
TW9kZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncyk7CiAKICAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEludFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAg
ICAgICAgIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYpOwpAQCAtNDIxLDcgKzQyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzYXZlUGxhdGZvcm1TdGF0ZSgpOwogICAgICAgICB2b2lkIHJlc3RvcmVQ
bGF0Zm9ybVN0YXRlKCk7CiAKLSAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9k
ZShpbnQpOworICAgICAgICB2b2lkIHNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKFRleHREcmF3
aW5nTW9kZUZsYWdzKTsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUZvbnQoY29uc3QgRm9udCYg
Zm9udCk7CiAKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFByaXZhdGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDY5NjkzMmU3ODU3NTI1ZWVjYzAyMDFmNDhlY2Q1ZDI1
ZWNkYWYxY2EuLjI3M2JmZmUyOGJhZWM3ZGRkMGI3YjU0ZmE3NDgwNTU2MGFmMzYwN2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5o
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0cnVjdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICAg
ICAgICAgIDogdGV4dERyYXdpbmdNb2RlKGNUZXh0RmlsbCkKKyAgICAgICAgICAgIDogdGV4dERy
YXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICAgICAgICAgICwgc3Ryb2tlU3R5bGUoU29saWRT
dHJva2UpCiAgICAgICAgICAgICAsIHN0cm9rZVRoaWNrbmVzcygwKQogICAgICAgICAgICAgLCBz
dHJva2VDb2xvcihDb2xvcjo6YmxhY2spCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgaW50IHRleHREcmF3aW5nTW9k
ZTsKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOwogICAgICAg
ICAKICAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7CiAgICAgICAgIGZsb2F0IHN0cm9r
ZVRoaWNrbmVzczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAppbmRleCAzZDU1YzcwMTZiNjk2Y2EwMTUxM2ZiMDU3ZTQ3MjE3Y2ZjMDQwMzdmLi40YjEx
NzU2OTEyYjg2MWU2ZWFiNTA4MDkxMDZkMTU1Mzc0Yjk0YWNlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRp
YyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNhaXJvX3QqIGNvbnRleHQsCiAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gZ3JhcGhpY3ND
b250ZXh0LT5jb250ZXh0U2hhZG93KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAKLSAgICBpZiAo
IShncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB8fCBzaGFk
b3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykKKyAgICBpZiAoIShncmFwaGlj
c0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBzaGFkb3ctPm1f
dHlwZSA9PSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6OlNvbGlkU2hhZG93KSB7CkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKIAogICAgIGNhaXJvX3NhdmUo
Y3IpOwogICAgIHByZXBhcmVDb250ZXh0Rm9yR2x5cGhEcmF3aW5nKGNyLCBmb250LCBwb2ludCk7
Ci0gICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB7CisgICAg
aWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CiAgICAgICAg
IGlmIChjb250ZXh0LT5maWxsR3JhZGllbnQoKSkgewogICAgICAgICAgICAgY2Fpcm9fc2V0X3Nv
dXJjZShjciwgY29udGV4dC0+ZmlsbEdyYWRpZW50KCktPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0QWxwaGEoKSA8IDEuMGYpIHsKQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgIC8vIHR3aWNlIHRoZSBzaXplIG9m
IHRoZSB3aWR0aCBvZiB0aGUgdGV4dCB3ZSB3aWxsIG5vdCBhc2sgY2Fpcm8gdG8gc3Ryb2tlCiAg
ICAgLy8gdGhlIHRleHQgYXMgZXZlbiBvbmUgc2luZ2xlIHN0cm9rZSB3b3VsZCBjb3ZlciB0aGUg
ZnVsbCB3ZHRoIG9mIHRoZSB0ZXh0LgogICAgIC8vICBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzNzU5LgotICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01v
ZGUoKSAmIGNUZXh0U3Ryb2tlICYmIGNvbnRleHQtPnN0cm9rZVRoaWNrbmVzcygpIDwgMiAqIG9m
ZnNldCkgeworICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ry
b2tlICYmIGNvbnRleHQtPnN0cm9rZVRoaWNrbmVzcygpIDwgMiAqIG9mZnNldCkgewogICAgICAg
ICBpZiAoY29udGV4dC0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICAgICAgY2Fpcm9fc2V0
X3NvdXJjZShjciwgY29udGV4dC0+c3Ryb2tlR3JhZGllbnQoKS0+cGxhdGZvcm1HcmFkaWVudCgp
KTsKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBbHBoYSgpIDwgMS4wZikgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRl
eCAyZWI5MjllMmVkYjEzNDUyNzhjOGQ0ZDM4ODUwMmU2YTAzYzNjYTk3Li41ZDJlNmY4OTg0MWMw
ZTEzMDg2MWQyYzEwNDc0MDkyMzUxMDBiOTE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTExNiw3ICsxMTE2LDcgQEAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgR3JhcGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkgY29uc3QKICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShpbnQgbW9kZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJh
d2luZ01vZGVGbGFncyBtb2RlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMjQsMjggKzExMjQsMjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQogICAgIC8vIFdvdywgd2lzaCBD
RyBoYWQgdXNlZCBiaXRzIGhlcmUuCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIGNUZXh0SW52aXNpYmxl
OiAvLyBJbnZpc2libGUKKyAgICBjYXNlIFRleHRNb2RlSW52aXNpYmxlOgogICAgICAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NHVGV4dEludmlzaWJsZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgY1RleHRGaWxsOiAvLyBGaWxsCisgICAgY2FzZSBUZXh0TW9k
ZUZpbGw6CiAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjb250ZXh0LCBrQ0dU
ZXh0RmlsbCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgY1RleHRTdHJva2U6IC8vIFN0cm9r
ZQorICAgIGNhc2UgVGV4dE1vZGVTdHJva2U6CiAgICAgICAgIENHQ29udGV4dFNldFRleHREcmF3
aW5nTW9kZShjb250ZXh0LCBrQ0dUZXh0U3Ryb2tlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSAzOiAvLyBGaWxsIHwgU3Ryb2tlCisgICAgY2FzZSAoVGV4dE1vZGVGaWxsIHwgVGV4dE1vZGVT
dHJva2UpOgogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwga0NH
VGV4dEZpbGxTdHJva2UpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIGNUZXh0Q2xpcDogLy8g
Q2xpcAorICAgIGNhc2UgVGV4dE1vZGVDbGlwOgogICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJh
d2luZ01vZGUoY29udGV4dCwga0NHVGV4dENsaXApOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IDU6IC8vIEZpbGwgfCBDbGlwCisgICAgY2FzZSAoVGV4dE1vZGVGaWxsIHwgVGV4dE1vZGVDbGlw
KToKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRG
aWxsQ2xpcCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgNjogLy8gU3Ryb2tlIHwgQ2xpcAor
ICAgIGNhc2UgKFRleHRNb2RlU3Ryb2tlIHwgVGV4dE1vZGVDbGlwKToKICAgICAgICAgQ0dDb250
ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRTdHJva2VDbGlwKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSA3OiAvLyBGaWxsIHwgU3Ryb2tlIHwgQ2xpcAorICAgIGNhc2Ug
KFRleHRNb2RlRmlsbCB8IFRleHRNb2RlU3Ryb2tlIHwgVGV4dE1vZGVDbGlwKToKICAgICAgICAg
Q0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGtDR1RleHRGaWxsU3Ryb2tlQ2xp
cCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAKaW5kZXggODJiOWRmNzMxOGI3Y2NkZDAy
YmFhYTZmZThiNzRmODFkMjNlYmFjOS4uZDFjZmFjNmYzNzQwMWM3MjYzOWIyYTIwZWFmNmM5NTg3
YWYyY2E3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250TGludXguY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dExpbnV4LmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LAogICAgIGdjLT5w
bGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvclNvZnR3YXJlRHJhdygpOwogCiAgICAgU2tDYW52
YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAgaW50IHRl
eHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKKyAg
ICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0TW9kZSA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+
Z2V0VGV4dERyYXdpbmdNb2RlKCk7CiAKICAgICAvLyBXZSBkcmF3IHRleHQgdXAgdG8gdHdvIHRp
bWVzIChvbmNlIGZvciBmaWxsLCBvbmNlIGZvciBzdHJva2UpLgotICAgIGlmICh0ZXh0TW9kZSAm
IGNUZXh0RmlsbCkgeworICAgIGlmICh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkgewogICAgICAg
ICBTa1BhaW50IHBhaW50OwogICAgICAgICBnYy0+cGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFp
bnRGb3JGaWxsaW5nKCZwYWludCk7CiAgICAgICAgIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNldHVw
UGFpbnQoJnBhaW50KTsKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsCiAgICAgICAg
IGNhbnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBudW1HbHlwaHMgPDwgMSwgcG9zLCBwYWludCk7
CiAgICAgfQogCi0gICAgaWYgKCh0ZXh0TW9kZSAmIGNUZXh0U3Ryb2tlKQorICAgIGlmICgodGV4
dE1vZGUgJiBUZXh0TW9kZVN0cm9rZSkKICAgICAgICAgJiYgZ2MtPnBsYXRmb3JtQ29udGV4dCgp
LT5nZXRTdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlCiAgICAgICAgICYmIGdjLT5wbGF0Zm9ybUNv
bnRleHQoKS0+Z2V0U3Ryb2tlVGhpY2tuZXNzKCkgPiAwKSB7CiAKQEAgLTEyNyw3ICsxMjcsNyBA
QCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnQsCiAgICAgICAgIHBhaW50LnNldFRleHRFbmNvZGluZyhTa1BhaW50Ojpr
R2x5cGhJRF9UZXh0RW5jb2RpbmcpOwogICAgICAgICBwYWludC5zZXRDb2xvcihnYy0+c3Ryb2tl
Q29sb3IoKS5yZ2IoKSk7CiAKLSAgICAgICAgaWYgKHRleHRNb2RlICYgY1RleHRGaWxsKSB7Cisg
ICAgICAgIGlmICh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkgewogICAgICAgICAgICAgLy8gSWYg
d2UgYWxzbyBmaWxsZWQsIHdlIGRvbid0IHdhbnQgdG8gZHJhdyBzaGFkb3dzIHR3aWNlLgogICAg
ICAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gRm9udENocm9taXVtV2luLmNwcDo6cGFpbnRTa2lh
VGV4dCgpIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICAgICAgICBTa1NhZmVVbnJlZihwYWludC5z
ZXRMb29wZXIoMCkpOwpAQCAtNjUxLDkgKzY1MSw5IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgcmV0
dXJuOwogCiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCk7Ci0gICAgaW50IHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0
RHJhd2luZ01vZGUoKTsKLSAgICBib29sIGZpbGwgPSB0ZXh0TW9kZSAmIGNUZXh0RmlsbDsKLSAg
ICBib29sIHN0cm9rZSA9ICh0ZXh0TW9kZSAmIGNUZXh0U3Ryb2tlKQorICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJhd2lu
Z01vZGUoKTsKKyAgICBib29sIGZpbGwgPSB0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbDsKKyAgICBi
b29sIHN0cm9rZSA9ICh0ZXh0TW9kZSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAgICAgICAgICAg
JiYgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpICE9IE5vU3Ryb2tlCiAg
ICAgICAgICAgICAgICAmJiBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVRoaWNrbmVz
cygpID4gMDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9u
dEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAppbmRl
eCA1NGUxOGM5NmIwZWNhZmRiNGI0YzlmZjdkMDEzMDU5NDc5NWQ0MjdiLi5mNmM1ZjJhNzk0OTcy
ODg4NzRhMWJmNzViMTVkZWMxYTQ3NjVjZGRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Gb250R3RrLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlw
aHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRl
eHQsCiAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT5jb250ZXh0
U2hhZG93KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAKLSAgICBpZiAoIShncmFwaGljc0NvbnRl
eHQtPnRleHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB8fCBzaGFkb3ctPm1fdHlwZSA9PSBD
b250ZXh0U2hhZG93OjpOb1NoYWRvdykKKyAgICBpZiAoIShncmFwaGljc0NvbnRleHQtPnRleHRE
cmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0
U2hhZG93OjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRQb2ludCB0b3Rh
bE9mZnNldChwb2ludCArIHNoYWRvdy0+bV9vZmZzZXQpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBGCiAKICAgICBwYW5nb19jYWlyb19zaG93X2xheW91dF9saW5l
KGNyLCBsYXlvdXRMaW5lKTsKIAotICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAm
IGNUZXh0U3Ryb2tlKSB7CisgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4
dE1vZGVTdHJva2UpIHsKICAgICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgPSBjb250ZXh0LT5zdHJv
a2VDb2xvcigpOwogICAgICAgICBzdHJva2VDb2xvci5nZXRSR0JBKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQppbmRl
eCA4ZGM3NDFiZjhiYjQyNzIwYTJjYzk2OTc3ZDc2YTZmOGIxOTJkOTEzLi44ZjE1Y2IzMDllODY1
NTdmZWE2Y2ZhOGVkMjAzNzk5YTI0YTcyMTJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRNYWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29u
cwogICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5maWxsQ29sb3JTcGFj
ZSgpOwogICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKIAotICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC0+dGV4dERy
YXdpbmdNb2RlKCkgPT0gY1RleHRGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hh
ZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCk7CisgICAgYm9vbCBo
YXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZp
bGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURh
dGEuaXNDb2xvckJpdG1hcEZvbnQoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KICAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5jcHAKaW5kZXggNzQwOWE5NzNiNzk3YWUxODQx
M2Q2ZWIxYmJhNTgzNDIzNTYwMWUwZi4uNTQ5MzdhNDc0NDNkNDc2NDJhMGRhOTRlYmE1YjNmZjVk
ZDJiYTJhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFp
bnRlck9wZW5WRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFp
bnRlck9wZW5WRy5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdHJ1Y3QgUGxhdGZvcm1QYWludGVy
U3RhdGUgewogICAgIERhc2hBcnJheSBzdHJva2VEYXNoQXJyYXk7CiAgICAgZmxvYXQgc3Ryb2tl
RGFzaE9mZnNldDsKIAotICAgIGludCB0ZXh0RHJhd2luZ01vZGU7CisgICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOwogICAgIGJvb2wgYW50aWFsaWFzaW5nRW5hYmxlZDsK
IAogICAgIFBsYXRmb3JtUGFpbnRlclN0YXRlKCkKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdHJ1Y3Qg
UGxhdGZvcm1QYWludGVyU3RhdGUgewogICAgICAgICAsIHN0cm9rZUxpbmVKb2luKE1pdGVySm9p
bikKICAgICAgICAgLCBzdHJva2VNaXRlckxpbWl0KDQuMCkKICAgICAgICAgLCBzdHJva2VEYXNo
T2Zmc2V0KDAuMCkKLSAgICAgICAgLCB0ZXh0RHJhd2luZ01vZGUoY1RleHRGaWxsKQorICAgICAg
ICAsIHRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpCiAgICAgICAgICwgYW50aWFsaWFzaW5n
RW5hYmxlZCh0cnVlKQogICAgIHsKICAgICB9CkBAIC02NTMsMTMgKzY1MywxMyBAQCB2b2lkIFBh
aW50ZXJPcGVuVkc6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgc2V0VkdT
b2xpZENvbG9yKFZHX0ZJTExfUEFUSCwgY29sb3IpOwogfQogCi1pbnQgUGFpbnRlck9wZW5WRzo6
dGV4dERyYXdpbmdNb2RlKCkgY29uc3QKK1RleHREcmF3aW5nTW9kZUZsYWdzIFBhaW50ZXJPcGVu
Vkc6OnRleHREcmF3aW5nTW9kZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fc3RhdGUpOwogICAg
IHJldHVybiBtX3N0YXRlLT50ZXh0RHJhd2luZ01vZGU7CiB9CiAKLXZvaWQgUGFpbnRlck9wZW5W
Rzo6c2V0VGV4dERyYXdpbmdNb2RlKGludCBtb2RlKQordm9pZCBQYWludGVyT3BlblZHOjpzZXRU
ZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkKIHsKICAgICBBU1NFUlQo
bV9zdGF0ZSk7CiAgICAgbV9zdGF0ZS0+dGV4dERyYXdpbmdNb2RlID0gbW9kZTsKQEAgLTExMTQs
MTEgKzExMTQsMTEgQEAgdm9pZCBQYWludGVyT3BlblZHOjpkcmF3VGV4dChWR0ZvbnQgdmdGb250
LCBWZWN0b3I8Vkd1aW50PiYgY2hhcmFjdGVycywgVkdmbG9hdCoKIAogICAgIFZHYml0ZmllbGQg
cGFpbnRNb2RlcyA9IDA7CiAKLSAgICBpZiAobV9zdGF0ZS0+dGV4dERyYXdpbmdNb2RlICYgY1Rl
eHRDbGlwKQorICAgIGlmIChtX3N0YXRlLT50ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZUNsaXAp
CiAgICAgICAgIHJldHVybjsgLy8gdW5zdXBwb3J0ZWQgZm9yIGV2ZXJ5IHBvcnQgZXhjZXB0IENH
IGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcKLSAgICBpZiAobV9zdGF0ZS0+dGV4dERyYXdpbmdNb2Rl
ICYgY1RleHRGaWxsICYmICFtX3N0YXRlLT5maWxsRGlzYWJsZWQoKSkKKyAgICBpZiAobV9zdGF0
ZS0+dGV4dERyYXdpbmdNb2RlICYgVGV4dE1vZGVGaWxsICYmICFtX3N0YXRlLT5maWxsRGlzYWJs
ZWQoKSkKICAgICAgICAgcGFpbnRNb2RlcyB8PSBWR19GSUxMX1BBVEg7Ci0gICAgaWYgKG1fc3Rh
dGUtPnRleHREcmF3aW5nTW9kZSAmIGNUZXh0U3Ryb2tlICYmICFtX3N0YXRlLT5zdHJva2VEaXNh
YmxlZCgpKQorICAgIGlmIChtX3N0YXRlLT50ZXh0RHJhd2luZ01vZGUgJiBUZXh0TW9kZVN0cm9r
ZSAmJiAhbV9zdGF0ZS0+c3Ryb2tlRGlzYWJsZWQoKSkKICAgICAgICAgcGFpbnRNb2RlcyB8PSBW
R19TVFJPS0VfUEFUSDsKIAogICAgIG1fc3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcAppbmRleCA4OWRmZDAwZWY4MmE4ZDNhYzI5N2U4
NTZlOTZiODExODUyNzk1MDg0Li4xZWUyYjI5M2EzYTNjZGIzMzhlZjEwMjUyYzUxMDA4YjIyY2Rk
MzhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAgICAgUVBhaW50ZXIgKnAgPSBjdHgtPnBs
YXRmb3JtQ29udGV4dCgpOwogCiAgICAgUVBlbiB0ZXh0RmlsbFBlbjsKLSAgICBpZiAoY3R4LT50
ZXh0RHJhd2luZ01vZGUoKSAmIGNUZXh0RmlsbCkgeworICAgIGlmIChjdHgtPnRleHREcmF3aW5n
TW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CiAgICAgICAgIGlmIChjdHgtPmZpbGxHcmFkaWVudCgp
KSB7CiAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2goKmN0eC0+ZmlsbEdyYWRpZW50KCktPnBsYXRm
b3JtR3JhZGllbnQoKSk7CiAgICAgICAgICAgICBicnVzaC5zZXRUcmFuc2Zvcm0oY3R4LT5maWxs
R3JhZGllbnQoKS0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKQEAgLTkyLDcgKzkyLDcgQEAg
c3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAgICB9CiAKICAgICBRUGVuIHRleHRTdHJva2VQZW47
Ci0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dFN0cm9rZSkgeworICAgIGlm
IChjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpIHsKICAgICAgICAgaWYg
KGN0eC0+c3Ryb2tlR3JhZGllbnQoKSkgewogICAgICAgICAgICAgUUJydXNoIGJydXNoKCpjdHgt
PnN0cm9rZUdyYWRpZW50KCktPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgICAgICBicnVz
aC5zZXRUcmFuc2Zvcm0oY3R4LT5zdHJva2VHcmFkaWVudCgpLT5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKCkpOwpAQCAtMTc5LDE3ICsxNzksMTcgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24o
R3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAg
ICBpbnQgZmxhZ3MgPSBydW4ucnRsKCkgPyBRdDo6VGV4dEZvcmNlUmlnaHRUb0xlZnQgOiBRdDo6
VGV4dEZvcmNlTGVmdFRvUmlnaHQ7CiAjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNL
KDQsIDcsIDApCiAgICAgLy8gU2VlIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKCkg
d2hlcmUgdGhlIGRlZmF1bHQgcGF0aCBpcyBzZXQgdG8gQ29tcGxleCBmb3IgUXQgNC42IGFuZCBl
YXJsaWVyLgotICAgIGlmICghaXNDb21wbGV4VGV4dCAmJiAhKGN0eC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBjVGV4dFN0cm9rZSkpCisgICAgaWYgKCFpc0NvbXBsZXhUZXh0ICYmICEoY3R4LT50ZXh0
RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKSkKICAgICAgICAgZmxhZ3MgfD0gUXQ6OlRl
eHRCeXBhc3NTaGFwaW5nOwogI2VuZGlmCiAKICAgICBRUGFpbnRlclBhdGggdGV4dFN0cm9rZVBh
dGg7Ci0gICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dFN0cm9rZSkKKyAgICBp
ZiAoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAgICB0ZXh0
U3Ryb2tlUGF0aC5hZGRUZXh0KHB0LCBmb250LCBzdHJpbmcpOwogCiAgICAgQ29udGV4dFNoYWRv
dyogY3R4U2hhZG93ID0gY3R4LT5jb250ZXh0U2hhZG93KCk7CiAgICAgaWYgKGN0eFNoYWRvdy0+
bV90eXBlICE9IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KSB7Ci0gICAgICAgIGlmIChjdHgtPnRl
eHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB7CisgICAgICAgIGlmIChjdHgtPnRleHREcmF3
aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CiAgICAgICAgICAgICBpZiAoY3R4U2hhZG93LT5t
X3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgewogICAgICAgICAgICAgICAgIHAt
PnNhdmUoKTsKICAgICAgICAgICAgICAgICBwLT5zZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsK
QEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0Nv
bnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogICAgICAgICAgICAg
ICAgICAgICBjdHhTaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjdHgtPnRleHREcmF3aW5nTW9kZSgp
ICYgY1RleHRTdHJva2UpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjdHgtPnRleHREcmF3aW5nTW9k
ZSgpICYgVGV4dE1vZGVTdHJva2UpIHsKICAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPm1fdHlw
ZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CiAgICAgICAgICAgICAgICAgcC0+dHJh
bnNsYXRlKGN0eFNoYWRvdy0+b2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBh
dGgodGV4dFN0cm9rZVBhdGgsIFFQZW4oY3R4U2hhZG93LT5tX2NvbG9yKSk7CkBAIC0yMzUsMTAg
KzIzNSwxMCBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2RlKCkgJiBjVGV4dFN0cm9rZSkKKyAgICBpZiAoY3R4
LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAgICBwLT5zdHJva2VQ
YXRoKHRleHRTdHJva2VQYXRoLCB0ZXh0U3Ryb2tlUGVuKTsKIAotICAgIGlmIChjdHgtPnRleHRE
cmF3aW5nTW9kZSgpICYgY1RleHRGaWxsKSB7CisgICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHsKICAgICAgICAgUVBlbiBwcmV2aW91c1BlbiA9IHAtPnBlbigp
OwogICAgICAgICBwLT5zZXRQZW4odGV4dEZpbGxQZW4pOwogICAgICAgICBwLT5kcmF3VGV4dChw
dCwgc3RyaW5nLCBmbGFncywgcnVuLnBhZGRpbmcoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggZDYxMGMy
YWEzMWFlZGYxZGQ0MWEwZjEwNzM0NmUwNDdkNzc1ZjNhOS4uYzhmOWI4NjU3YjY2ZDllOGViZDRj
ZDIxNmIyM2VkYWI2ZTc1OGVjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcApAQCAtOTQsOCArOTQsOCBAQCBzdHJ1
Y3QgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGUgewogICAgIFNrUGFpbnQ6OkpvaW4gbV9saW5l
Sm9pbjsKICAgICBTa0Rhc2hQYXRoRWZmZWN0KiBtX2Rhc2g7CiAKLSAgICAvLyBUZXh0LiAoU2Vl
IGNUZXh0RmlsbCAmIGZyaWVuZHMgaW4gR3JhcGhpY3NDb250ZXh0LmguKQotICAgIGludCBtX3Rl
eHREcmF3aW5nTW9kZTsKKyAgICAvLyBUZXh0LiAoU2VlIFRleHRNb2RlRmlsbCAmIGZyaWVuZHMg
aW4gR3JhcGhpY3NDb250ZXh0LmguKQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERy
YXdpbmdNb2RlOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBhcHBseWluZyB0aGUgc3Rh
dGUncyBhbHBoYSB2YWx1ZSB0byB0aGUgZ2l2ZW4gaW5wdXQKICAgICAvLyBjb2xvciB0byBwcm9k
dWNlIGEgbmV3IG91dHB1dCBjb2xvci4KQEAgLTEzNyw3ICsxMzcsNyBAQCBQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9saW5lQ2FwKFNrUGFpbnQ6OmtEZWZhdWx0
X0NhcCkKICAgICAsIG1fbGluZUpvaW4oU2tQYWludDo6a0RlZmF1bHRfSm9pbikKICAgICAsIG1f
ZGFzaCgwKQotICAgICwgbV90ZXh0RHJhd2luZ01vZGUoY1RleHRGaWxsKQorICAgICwgbV90ZXh0
RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKQogICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uSGlnaCkKICAgICAsIG1fY2FudmFzQ2xpcEFwcGxpZWQoZmFsc2UpCiB7CkBA
IC01MDEsNyArNTAxLDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRTdHJva2VTaGFk
ZXIoU2tTaGFkZXIqIHN0cm9rZVNoYWRlcikKICAgICB9CiB9CiAKLWludCBQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpnZXRUZXh0RHJhd2luZ01vZGUoKSBjb25zdAorVGV4dERyYXdpbmdNb2RlRmxhZ3Mg
UGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0VGV4dERyYXdpbmdNb2RlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9zdGF0ZS0+bV90ZXh0RHJhd2luZ01vZGU7CiB9CkBAIC01MjEsMTEgKzUyMSwxMSBA
QCBpbnQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Z2V0Tm9ybWFsaXplZEFscGhhKCkgY29uc3QKICAg
ICByZXR1cm4gYWxwaGE7CiB9CiAKLXZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0VGV4dERy
YXdpbmdNb2RlKGludCBtb2RlKQordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRUZXh0RHJh
d2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgbW9kZSkKIHsKLSAgICAvLyBjVGV4dENsaXAg
aXMgbmV2ZXIgdXNlZCwgc28gd2UgYXNzZXJ0IHRoYXQgaXQgaXNuJ3Qgc2V0OgorICAgIC8vIFRl
eHRNb2RlQ2xpcCBpcyBuZXZlciB1c2VkLCBzbyB3ZSBhc3NlcnQgdGhhdCBpdCBpc24ndCBzZXQ6
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODk4Ci0g
ICAgQVNTRVJUKCEobW9kZSAmIGNUZXh0Q2xpcCkpOworICAgIEFTU0VSVCghKG1vZGUgJiBUZXh0
TW9kZUNsaXApKTsKICAgICBtX3N0YXRlLT5tX3RleHREcmF3aW5nTW9kZSA9IG1vZGU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCmluZGV4
IDZhY2ZkMzVlNzJmNDFhMDc2M2FmMmUxNmI0NjFkMzVlZDg3NTc3MzQuLjYyYTRkOTY1NjIxZGRi
YjgxM2Y0MWI1Y2IxZTllZWU0MjZjZWE4MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1NraWFGb250V2luLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIGJvb2wgd2luZG93
c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgZm9yIHN0cm9rZSBlZmZlY3RzLgotICAgIGlm
IChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0VGV4dERyYXdpbmdNb2RlKCkgIT0gY1Rl
eHRGaWxsKQorICAgIGlmIChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0VGV4dERyYXdp
bmdNb2RlKCkgIT0gVGV4dE1vZGVGaWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBDaGVjayBmb3IgZ3JhZGllbnRzLgpAQCAtMzA3LDcgKzMwNyw3IEBAIGJvb2wgcGFpbnRTa2lh
VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgSEdESU9CSiBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGRjLCBoZm9udCk7CiAKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9y
bUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBpbnQgdGV4dE1vZGUg
PSBwbGF0Zm9ybUNvbnRleHQtPmdldFRleHREcmF3aW5nTW9kZSgpOworICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHRNb2RlID0gcGxhdGZvcm1Db250ZXh0LT5nZXRUZXh0RHJhd2luZ01vZGUo
KTsKIAogICAgIC8vIEZpbGxpbmcgKGlmIG5lY2Vzc2FyeSkuIFRoaXMgaXMgdGhlIGNvbW1vbiBj
YXNlLgogICAgIFNrUGFpbnQgcGFpbnQ7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBwYWludFNr
aWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBwYWludC5zZXRGbGFncyhTa1Bh
aW50OjprQW50aUFsaWFzX0ZsYWcpOwogICAgIGJvb2wgZGlkRmlsbCA9IGZhbHNlOwogCi0gICAg
aWYgKCh0ZXh0TW9kZSAmIGNUZXh0RmlsbCkgJiYgU2tDb2xvckdldEEocGFpbnQuZ2V0Q29sb3Io
KSkpIHsKKyAgICBpZiAoKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSAmJiBTa0NvbG9yR2V0QShw
YWludC5nZXRDb2xvcigpKSkgewogICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMs
IHBsYXRmb3JtQ29udGV4dC0+Y2FudmFzKCksICpvcmlnaW4sICZwYWludCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCAmb2Zmc2V0c1swXSwgbnVt
R2x5cGhzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMyw3ICszMjMsNyBAQCBi
b29sIHBhaW50U2tpYVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgIH0KIAogICAg
IC8vIFN0cm9raW5nIG9uIHRvcCAoaWYgbmVjZXNzYXJ5KS4KLSAgICBpZiAoKHRleHRNb2RlICYg
Y1RleHRTdHJva2UpCisgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAg
ICAmJiBwbGF0Zm9ybUNvbnRleHQtPmdldFN0cm9rZVN0eWxlKCkgIT0gTm9TdHJva2UKICAgICAg
ICAgJiYgcGxhdGZvcm1Db250ZXh0LT5nZXRTdHJva2VUaGlja25lc3MoKSA+IDApIHsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4
IDI1MDEyNWJlMWM2ZGNjZmMxYmIzZjJmMmNhYWFjNDliNmYyY2RjODguLjU4OWZkYTFmM2JlMmVm
OTAzM2YwOTVjMjZjNTMyMGRhZmI5ZTFkOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTExMCwyMiArMTEwLDIyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgp
ID0gMDsKIAogICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uUXVhbGl0eSBxdWFsaXR5KSB7IG1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBxdWFsaXR5OyB9
Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoaW50IG1vZGUpIHsgbV90ZXh0RHJhd2luZ01v
ZGUgPSBtb2RlOyB9CisgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkgeyBtX3RleHREcmF3aW5nTW9kZSA9IG1vZGU7IH0KIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5OyB9Ci0gICAgaW50IHRleHREcmF3aW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dERyYXdpbmdNb2RlOyB9CisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3Mg
dGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RHJhd2luZ01vZGU7IH0KIAog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmKTsKIAogcHJvdGVjdGVkOgog
ICAgIFRleHR1cmVNYXBwZXIoKQogICAgICAgICA6IG1faW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvbkRlZmF1bHQpCi0gICAgICAgICwgbV90ZXh0RHJhd2luZ01vZGUoY1RleHRGaWxs
KQorICAgICAgICAsIG1fdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKICAgICB7fQogCiBw
cml2YXRlOgogICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7
Ci0gICAgaW50IG1fdGV4dERyYXdpbmdNb2RlOworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1f
dGV4dERyYXdpbmdNb2RlOwogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q0dXaW4uY3BwCmluZGV4IDJmMWZiNDFjNGQ4MzllN2Q0ZDUzZjkwMzNiMDY5Zjk3YzQ0
YTcyNWQuLmEyNzg3MmJlYzc1MDhjN2M5MzE4MTM3OTlhZjE4YjAxYzVkYzBiZTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtMTMzLDggKzEzMyw4
IEBAIHN0YXRpYyB2b2lkIGRyYXdHRElHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhCiAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhp
Y3NDb250ZXh0LT5maWxsQ29sb3IoKTsKIAogICAgIGJvb2wgZHJhd0ludG9CaXRtYXAgPSBmYWxz
ZTsKLSAgICBpbnQgZHJhd2luZ01vZGUgPSBncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9k
ZSgpOwotICAgIGlmIChkcmF3aW5nTW9kZSA9PSBjVGV4dEZpbGwpIHsKKyAgICBUZXh0RHJhd2lu
Z01vZGVGbGFncyBkcmF3aW5nTW9kZSA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCk7CisgICAgaWYgKGRyYXdpbmdNb2RlID09IFRleHRNb2RlRmlsbCkgewogICAgICAgICBpZiAo
IWZpbGxDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDUsNyArMjA1
LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dESUdseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEKICAgICAgICAgTW9kaWZ5V29ybGRUcmFuc2Zv
cm0oaGRjLCAmeGZvcm0sIE1XVF9MRUZUTVVMVElQTFkpOwogICAgIH0KIAotICAgIGlmIChkcmF3
aW5nTW9kZSA9PSBjVGV4dEZpbGwpIHsKKyAgICBpZiAoZHJhd2luZ01vZGUgPT0gVGV4dE1vZGVG
aWxsKSB7CiAgICAgICAgIFhGT1JNIHhmb3JtOwogICAgICAgICB4Zm9ybS5lTTExID0gMS4wOwog
ICAgICAgICB4Zm9ybS5lTTEyID0gMDsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgdm9pZCBk
cmF3R0RJR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1w
bGVGb250RGF0YQogICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNnQ29udGV4dCwgaW5pdGlhbEdseXBoVHJh
bnNmb3JtKTsKIAotICAgICAgICAgICAgaWYgKGRyYXdpbmdNb2RlICYgY1RleHRGaWxsKSB7Cisg
ICAgICAgICAgICBpZiAoZHJhd2luZ01vZGUgJiBUZXh0TW9kZUZpbGwpIHsKICAgICAgICAgICAg
ICAgICBDR0NvbnRleHRBZGRQYXRoKGNnQ29udGV4dCwgZ2x5cGhQYXRoLmdldCgpKTsKICAgICAg
ICAgICAgICAgICBDR0NvbnRleHRGaWxsUGF0aChjZ0NvbnRleHQpOwogICAgICAgICAgICAgICAg
IGlmIChmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBz
dGF0aWMgdm9pZCBkcmF3R0RJR2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBTaW1wbGVGb250RGF0YQogICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0oY2dDb250ZXh0LCAtZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCAwKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZHJhd2luZ01v
ZGUgJiBjVGV4dFN0cm9rZSkgeworICAgICAgICAgICAgaWYgKGRyYXdpbmdNb2RlICYgVGV4dE1v
ZGVTdHJva2UpIHsKICAgICAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNnQ29udGV4dCwg
Z2x5cGhQYXRoLmdldCgpKTsKICAgICAgICAgICAgICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNn
Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQo
KSkgewpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvCiAgICAgQ29s
b3Igc2hhZG93Q29sb3I7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRv
dyA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gY1RleHRGaWxsICYmIHNo
YWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1cjsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxs
ICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1cjsKICAgICBpZiAoaGFzU2lt
cGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBp
bnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVs
IGFudGlhbGlhc2luZy4KICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclNoYWRvdygpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRl
eHRXaW5DRS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29u
dGV4dFdpbkNFLmNwcAppbmRleCA5MTdkNTg1N2YwNjZlODc1NGY3ZDU5NjE5YTQzOTIxMWZmZmI0
Mzc1Li5hNTI2NThmMmI3ZjkxMGU4OWRiOTg2NjNlZWJmZWYxZjRkMmRjODI5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bkNFLmNwcApAQCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
ZXh0KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgR2x5cGhCdWZmZXIKICAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwogICAg
IENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGJvb2wgaGFzU2hhZG93ID0gdGV4dERyYXdpbmdNb2Rl
KCkgPT0gY1RleHRGaWxsCisgICAgYm9vbCBoYXNTaGFkb3cgPSB0ZXh0RHJhd2luZ01vZGUoKSA9
PSBUZXh0TW9kZUZpbGwKICAgICAgICAgJiYgZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpCiAgICAgICAgICYmIHNoYWRvd0NvbG9yLmFscGhhKCk7CiAgICAg
Q09MT1JSRUYgc2hhZG93UkdCQ29sb3I7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmlu
ZGV4IGQwNTUxODUyYWQ1ZTkxMGFhMjViZjc4NTZlMWY3NWZkYzM5MDdjMjIuLjEwOTU5N2Y5NWU3
NGY4OWRhYjQ1ZDNkYTJiNTQ2NTgxNDhkYWQ4OWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCkBAIC0yODQsMTkgKzI4NCwxOSBAQCBDb2xvciBjb3JyZWN0ZWRUZXh0Q29sb3IoQ29s
b3IgdGV4dENvbG9yLCBDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCiAKIHZvaWQgdXBkYXRlR3JhcGhp
Y3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQ29sb3ImIGZpbGxDb2xv
ciwgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yLCBmbG9hdCBzdHJva2VUaGlja25lc3MsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICBpbnQgbW9kZSA9IGNvbnRleHQtPnRleHREcmF3aW5n
TW9kZSgpOworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUgPSBjb250ZXh0LT50ZXh0RHJh
d2luZ01vZGUoKTsKICAgICBpZiAoc3Ryb2tlVGhpY2tuZXNzID4gMCkgewotICAgICAgICBpbnQg
bmV3TW9kZSA9IG1vZGUgfCBjVGV4dFN0cm9rZTsKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgbmV3TW9kZSA9IG1vZGUgfCBUZXh0TW9kZVN0cm9rZTsKICAgICAgICAgaWYgKG1vZGUgIT0g
bmV3TW9kZSkgewogICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKG5ld01v
ZGUpOwogICAgICAgICAgICAgbW9kZSA9IG5ld01vZGU7CiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgaWYgKG1vZGUgJiBjVGV4dEZpbGwgJiYgKGZpbGxDb2xvciAhPSBjb250ZXh0LT5maWxs
Q29sb3IoKSB8fCBjb2xvclNwYWNlICE9IGNvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpKQorICAg
IGlmIChtb2RlICYgVGV4dE1vZGVGaWxsICYmIChmaWxsQ29sb3IgIT0gY29udGV4dC0+ZmlsbENv
bG9yKCkgfHwgY29sb3JTcGFjZSAhPSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpKSkKICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgY29sb3JTcGFjZSk7CiAKLSAgICBp
ZiAobW9kZSAmIGNUZXh0U3Ryb2tlKSB7CisgICAgaWYgKG1vZGUgJiBUZXh0TW9kZVN0cm9rZSkg
ewogICAgICAgICBpZiAoc3Ryb2tlQ29sb3IgIT0gY29udGV4dC0+c3Ryb2tlQ29sb3IoKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yLCBjb2xvclNwYWNl
KTsKICAgICAgICAgaWYgKHN0cm9rZVRoaWNrbmVzcyAhPSBjb250ZXh0LT5zdHJva2VUaGlja25l
c3MoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHAKaW5kZXggYjc2ZTdmODY1N2Y3Njc5NzZhYTkyYjYxYTVjMmFiZjBmYjNiYTRiMS4uN2MzODNk
MGEzZmM1OTliYjNkYTU1OWFlMzY5MjNhMzVlNDZmMDNlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0
KiBvYmplY3QsIFJlbmRlclN0eWxlKgogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUocmVzb3VyY2VNb2RlICYgQXBwbHlUb0ZpbGxNb2RlID8g
Y1RleHRGaWxsIDogY1RleHRTdHJva2UpOworICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2lu
Z01vZGUocmVzb3VyY2VNb2RlICYgQXBwbHlUb0ZpbGxNb2RlID8gVGV4dE1vZGVGaWxsIDogVGV4
dE1vZGVTdHJva2UpOwogICAgIH0KIAogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHls
ZSA9IHN0eWxlLT5zdmdTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKaW5kZXggODM3NTRhZGI3NWM0Yjc1ZTExMmVkOTM2Yzk3ZWI0MTFi
OTVjOTAyZi4uY2Q2NDE4MzJjMDRjMTI0MGIxNGVmYTk4YWYzNWExNGViYjc3ZDkxNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xNjUs
MTMgKzE2NSwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YXBwbHlSZXNvdXJj
ZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5bGUqCiAKICAgICBpZiAocmVzb3VyY2VN
b2RlICYgQXBwbHlUb1RleHRNb2RlKSB7CiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBs
eVRvRmlsbE1vZGUpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShj
VGV4dEZpbGwpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRN
b2RlRmlsbCk7CiAKICNpZiBQTEFURk9STShDRykKICAgICAgICAgICAgIGNvbnRleHQtPmFwcGx5
RmlsbFBhdHRlcm4oKTsKICNlbmRpZgogICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlTW9kZSAm
IEFwcGx5VG9TdHJva2VNb2RlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2lu
Z01vZGUoY1RleHRTdHJva2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdN
b2RlKFRleHRNb2RlU3Ryb2tlKTsKIAogI2lmIFBMQVRGT1JNKENHKQogICAgICAgICAgICAgY29u
dGV4dC0+YXBwbHlTdHJva2VQYXR0ZXJuKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCAxZWI5ZGE1ZWE4ZWFkNDQ0NjBkZDEy
NmQ0MjFjODdhOGM5NWRiMmQyLi5jMmM3Mjk3ZTc1MWI5NDFmNjQwYzM4MmVjNDlkMWJiYTIwZDgz
YjI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlk
Q29sb3IuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlU29saWRD
b2xvci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3I6OmFwcGx5UmVzb3VyY2UoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWwKICAgICAg
ICAgY29udGV4dC0+c2V0RmlsbFJ1bGUoc3ZnU3R5bGUgPyBzdmdTdHlsZS0+ZmlsbFJ1bGUoKSA6
IFJVTEVfTk9OWkVSTyk7CiAKICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9UZXh0
TW9kZSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjVGV4dEZpbGwp
OworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCk7
CiAgICAgfSBlbHNlIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkgewogICAg
ICAgICBjb250ZXh0LT5zZXRBbHBoYShzdmdTdHlsZSA/IHN2Z1N0eWxlLT5zdHJva2VPcGFjaXR5
KCkgOiAxLjBmKTsKICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvciwgY29s
b3JTcGFjZSk7CkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENv
bG9yOjphcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsCiAgICAg
ICAgICAgICBTVkdSZW5kZXJTdXBwb3J0OjphcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KGNvbnRl
eHQsIHN0eWxlLCBvYmplY3QpOwogCiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRv
VGV4dE1vZGUpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoY1RleHRT
dHJva2UpOworICAgICAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKFRleHRNb2Rl
U3Ryb2tlKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR0ZvbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHRm9udC5jcHAKaW5kZXggNGJkYTJkODY5
NjE3ZmJlNGU3ZjliYTc3OWZlMjQwZDdhZTFkMTQzOS4uYjAxNTFjYjQzNWNhMTVkZTNhZTY0MzYz
YWRmMTliMDE5NDM5YTViNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHRm9udC5jcHAKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHRm9udC5jcHAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdUZXh0VXNpbmdTVkdGb250KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgICAgICBTVkdUZXh0UnVuV2Fsa2VyPFNWR1RleHRSdW5XYWxrZXJEcmF3
VGV4dERhdGE+IHJ1bldhbGtlcihmb250RGF0YSwgZm9udEVsZW1lbnQsIGRhdGEsIGRyYXdUZXh0
VXNpbmdTVkdGb250Q2FsbGJhY2ssIGRyYXdUZXh0TWlzc2luZ0dseXBoQ2FsbGJhY2spOwogICAg
ICAgICBydW5XYWxrZXIud2FsayhydW4sIGlzVmVydGljYWxUZXh0LCBsYW5ndWFnZSwgZnJvbSwg
dG8pOwogCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSByZXNvdXJjZU1vZGUgPSBjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dFN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2Rl
IDogQXBwbHlUb0ZpbGxNb2RlOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3Vy
Y2VNb2RlID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVTdHJva2UgPyBB
cHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKIAogICAgICAgICB1bnNpZ25lZCBu
dW1HbHlwaHMgPSBkYXRhLmdseXBoSWRlbnRpZmllcnMuc2l6ZSgpOwogICAgICAgICB1bnNpZ25l
ZCBmYWxsYmFja0NoYXJhY3RlckluZGV4ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75520</attachid>
            <date>2010-12-03 11:52:59 -0800</date>
            <delta_ts>2010-12-03 12:23:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50464-20101203115258.patch</filename>
            <type>text/plain</type>
            <size>3394</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjVlNDFkNzQ4NWVhN2JlYmIwYTM5NjEwNjNmMmY2MzNhNGI1NjM3OS4uZWY3NjM1NDA0ZTViNDEy
NGVhMzI5OGJjMDI2M2M2MDhlMzI2MzExMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwxOSBAQAogICAgICAgICBDbGVhbiB1
cCBzb21lIHRleHQtcmVsYXRlZCBjb2RlIG9uIEdyYXBoaWNzQ29udGV4dAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0NjQKIAorICAgICAgICBTYXZl
IDggYnl0ZXMgaW4gR3JhcGhpY3NDb250ZXh0U3RhdGUgYnkgcmVhcnJhbmdpbmcgdGhlCisgICAg
ICAgIGRhdGEgbWVtYmVycyB0byByZWR1Y2UgcGFkZGluZy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisKKzIwMTAtMTItMDMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgc29tZSB0ZXh0LXJlbGF0
ZWQgY29kZSBvbiBHcmFwaGljc0NvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwNDY0CisKICAgICAgICAgVXNlIGRlZmluZWQgdHlwZXMgZm9y
IHRleHREcmF3aW5nTW9kZSBhbmQgaXQncyBhc3NvY2lhdGVkIGZsYWdzLgogCiAgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgKaW5kZXggMjczYmZm
ZTI4YmFlYzdkZGQwYjdiNTRmYTc0ODA1NTYwYWYzNjA3Yi4uOTI4OGRmNDYwMWM1ZDg1YWZkNjVm
ZTMzZTBiNmMzNThjYzMwMGU1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgKQEAgLTM0LDUxICszNCw1MyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpCi0gICAgICAgICAgICA6IHRleHREcmF3aW5nTW9kZShUZXh0
TW9kZUZpbGwpCi0gICAgICAgICAgICAsIHN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKQotICAgICAg
ICAgICAgLCBzdHJva2VUaGlja25lc3MoMCkKKyAgICAgICAgICAgIDogc3Ryb2tlVGhpY2tuZXNz
KDApCisgICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKKyNpZiBQTEFURk9STShDQUlSTykKKyAg
ICAgICAgICAgICwgZ2xvYmFsQWxwaGEoMSkKKyNlbmRpZgorICAgICAgICAgICAgLCB0ZXh0RHJh
d2luZ01vZGUoVGV4dE1vZGVGaWxsKQogICAgICAgICAgICAgLCBzdHJva2VDb2xvcihDb2xvcjo6
YmxhY2spCi0gICAgICAgICAgICAsIHN0cm9rZUNvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJH
QikKLSAgICAgICAgICAgICwgZmlsbFJ1bGUoUlVMRV9OT05aRVJPKQogICAgICAgICAgICAgLCBm
aWxsQ29sb3IoQ29sb3I6OmJsYWNrKQorICAgICAgICAgICAgLCBzdHJva2VTdHlsZShTb2xpZFN0
cm9rZSkKKyAgICAgICAgICAgICwgZmlsbFJ1bGUoUlVMRV9OT05aRVJPKQorICAgICAgICAgICAg
LCBzdHJva2VDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIGZp
bGxDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNob3VsZEFu
dGlhbGlhcyh0cnVlKQogICAgICAgICAgICAgLCBwYWludGluZ0Rpc2FibGVkKGZhbHNlKQotICAg
ICAgICAgICAgLCBzaGFkb3dCbHVyKDApCiAgICAgICAgICAgICAsIHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKGZhbHNlKQotI2lmIFBMQVRGT1JNKENBSVJPKQotICAgICAgICAgICAgLCBnbG9iYWxB
bHBoYSgxKQotI2VuZGlmCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZTsKLSAgICAgICAgCi0gICAgICAgIFN0cm9rZVN0
eWxlIHN0cm9rZVN0eWxlOwotICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3M7Ci0gICAgICAg
IENvbG9yIHN0cm9rZUNvbG9yOwotICAgICAgICBDb2xvclNwYWNlIHN0cm9rZUNvbG9yU3BhY2U7
CiAgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQ7CiAgICAgICAgIFJlZlB0
cjxQYXR0ZXJuPiBzdHJva2VQYXR0ZXJuOwogICAgICAgICAKLSAgICAgICAgV2luZFJ1bGUgZmls
bFJ1bGU7Ci0gICAgICAgIENvbG9yIGZpbGxDb2xvcjsKLSAgICAgICAgQ29sb3JTcGFjZSBmaWxs
Q29sb3JTcGFjZTsKICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBmaWxsR3JhZGllbnQ7CiAgICAg
ICAgIFJlZlB0cjxQYXR0ZXJuPiBmaWxsUGF0dGVybjsKIAotICAgICAgICBib29sIHNob3VsZEFu
dGlhbGlhczsKLQotICAgICAgICBib29sIHBhaW50aW5nRGlzYWJsZWQ7Ci0gICAgICAgIAogICAg
ICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworCisgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNr
bmVzczsKICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICAgICAgQ29sb3Igc2hhZG93Q29s
b3I7CiAKLSAgICAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICNpZiBQTEFURk9S
TShDQUlSTykKICAgICAgICAgZmxvYXQgZ2xvYmFsQWxwaGE7CiAjZW5kaWYKKyAgICAgICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOworCisgICAgICAgIENvbG9yIHN0cm9r
ZUNvbG9yOworICAgICAgICBDb2xvciBmaWxsQ29sb3I7CisgICAgICAgIENvbG9yIHNoYWRvd0Nv
bG9yOworCisgICAgICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlOworICAgICAgICBXaW5kUnVs
ZSBmaWxsUnVsZTsKKworICAgICAgICBDb2xvclNwYWNlIHN0cm9rZUNvbG9yU3BhY2U7CisgICAg
ICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2U7CisKKyAgICAgICAgYm9vbCBzaG91bGRBbnRp
YWxpYXM7CisgICAgICAgIGJvb2wgcGFpbnRpbmdEaXNhYmxlZDsKKyAgICAgICAgYm9vbCBzaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9OwogCiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
UHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Cg==
</data>
<flag name="review"
          id="66339"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>