<?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>164259</bug_id>
          
          <creation_ts>2016-10-31 17:59:29 -0700</creation_ts>
          <short_desc>Migrate CanvasRenderingContext&apos;s internal canvas pointer to a reference</short_desc>
          <delta_ts>2016-10-31 18:39:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246752</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-31 17:59:29 -0700</bug_when>
    <thetext>Migrate CanvasRenderingContext&apos;s internal canvas pointer to a reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246753</commentid>
    <comment_count>1</comment_count>
      <attachid>293506</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-10-31 18:00:10 -0700</bug_when>
    <thetext>Created attachment 293506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246763</commentid>
    <comment_count>2</comment_count>
      <attachid>293506</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 18:38:56 -0700</bug_when>
    <thetext>Comment on attachment 293506
Patch

Clearing flags on attachment: 293506

Committed r208206: &lt;http://trac.webkit.org/changeset/208206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246764</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-31 18:39:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293506</attachid>
            <date>2016-10-31 18:00:10 -0700</date>
            <delta_ts>2016-10-31 18:38:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164259-20161031175614.patch</filename>
            <type>text/plain</type>
            <size>42757</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRiMzAwOWZhNjViMjgy
NThiYWJiZGExOTg2NDkwYTU5YzY5NmJkOC4uNDM0NzRmMGE1ZTUwNTA1YThlZWRmNDg5YmQ4NmZh
YmExNzgzYmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE2LTEwLTMxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0J3MgaW50ZXJuYWwgY2FudmFzIHBvaW50ZXIgdG8gYSByZWZl
cmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDI1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0
IGlzIG5ldmVyIG51bGxwdHIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFp
bnRPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2hl
Y2tPcmlnaW4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OnJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpkZXJlZik6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYW52YXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2hlY2tPcmlnaW4pOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnVud2luZFN0YXRlU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc0FjY2VsZXJh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6
ZVNhdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3dDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnJlc2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zZm9ybUFyZWFUb0RldmljZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlY3RDb250YWluc0NhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNhbGN1bGF0ZUNv
bXBvc2l0aW5nQnVmZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNvbXBvc2l0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3RW50aXJlQ2FudmFzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd2luZ0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJ
bWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3Rm9jdXNJZk5lZWRlZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmlzQ29udGV4dExvc3RPclBlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRXYXJuaW5nVG9Db25zb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dExv
c3RFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpt
YXliZVJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNsYW1wZWRDYW52YXNTaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisKIDIwMTYtMTAtMzEgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBNZWRp
YSBDb250cm9sbGVyOiBQbGFjYXJkIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKaW5kZXggMGRlNWU3MjgwZDMxNzM4MmQxMmU4ZmFhMzg0YmY5OTMyZjZj
NTM3NS4uZDFkM2YyNzViNjI3ZmY0MjllYmM1ZTliYTkxZjRjZDI1OWJkMTBjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25z
dCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiAhbV9j
b250ZXh0LT5pczNkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBpZiAoIW1fY29udGV4dCkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSh0aGlzLCBzdGF0aWNfY2FzdDxXZWJHTENvbnRl
eHRBdHRyaWJ1dGVzKj4oYXR0cnMpLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQg
PSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoKnRoaXMsIHN0YXRpY19jYXN0PFdl
YkdMQ29udGV4dEF0dHJpYnV0ZXMqPihhdHRycyksIHR5cGUpOwogICAgICAgICAgICAgICAgIGlm
IChtX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUg
YSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBD
YW52YXMKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3Np
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBjY2I0NTBhOTI0NzY5MzAxMjE0OGYwYWZmZGM1NmJhYzZl
MThkZmZkLi4yYjcxOGU2YmE0MTkxMmRkYTFkMTUwMzk2NzA5OWU4N2ZiM2YyMDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzYsMjggKzM2LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVu
dCogY2FudmFzKQorQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dChIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQogICAgIDogbV9jYW52YXMoY2FudmFzKQogewog
fQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3Qg
Q2FudmFzUGF0dGVybiogcGF0dGVybikKIHsKLSAgICBpZiAoY2FudmFzKCktPm9yaWdpbkNsZWFu
KCkgJiYgcGF0dGVybiAmJiAhcGF0dGVybi0+b3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAoY2FudmFz
KCkub3JpZ2luQ2xlYW4oKSAmJiBwYXR0ZXJuICYmICFwYXR0ZXJuLT5vcmlnaW5DbGVhbigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVu
dCogc291cmNlQ2FudmFzKQogewotICAgIGlmIChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSAmJiBz
b3VyY2VDYW52YXMgJiYgIXNvdXJjZUNhbnZhcy0+b3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAoY2Fu
dmFzKCkub3JpZ2luQ2xlYW4oKSAmJiBzb3VyY2VDYW52YXMgJiYgIXNvdXJjZUNhbnZhcy0+b3Jp
Z2luQ2xlYW4oKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRN
TEltYWdlRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWNhbnZhcygp
LT5vcmlnaW5DbGVhbigpKQorICAgIGlmICghZWxlbWVudCB8fCAhY2FudmFzKCkub3JpZ2luQ2xl
YW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBl
bGVtZW50LT5jYWNoZWRJbWFnZSgpOwpAQCAtNzQsOSArNzQsOSBAQCBib29sIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCogZWxl
bWVudCkKICAgICBpZiAoIWNhY2hlZEltYWdlLT5pc0NPUlNTYW1lT3JpZ2luKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgQVNTRVJUKGNhbnZhcygpLT5zZWN1cml0eU9yaWdpbigpKTsK
KyAgICBBU1NFUlQoY2FudmFzKCkuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgQVNTRVJUKGNhY2hl
ZEltYWdlLT5vcmlnaW4oKSk7Ci0gICAgQVNTRVJUKGNhbnZhcygpLT5zZWN1cml0eU9yaWdpbigp
LT50b1N0cmluZygpID09IGNhY2hlZEltYWdlLT5vcmlnaW4oKS0+dG9TdHJpbmcoKSk7CisgICAg
QVNTRVJUKGNhbnZhcygpLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkgPT0gY2FjaGVkSW1h
Z2UtPm9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTg3
LDcgKzg3LDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2lu
KGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogICAgIC8vIHRvIHRlc3QgdGhlIGZpbmFs
VVJMLiBQbGVhc2UgYmUgY2FyZWZ1bCB3aGVuIGZpeGluZyB0aGlzIGlzc3VlIG5vdCB0bwogICAg
IC8vIG1ha2UgY3VycmVudFNyYyBiZSB0aGUgZmluYWwgVVJMIGJlY2F1c2UgdGhlbiB0aGUKICAg
ICAvLyBIVE1MTWVkaWFFbGVtZW50LmN1cnJlbnRTcmMgRE9NIEFQSSB3b3VsZCBsZWFrIHJlZGly
ZWN0IGRlc3RpbmF0aW9ucyEKLSAgICBpZiAoIXZpZGVvIHx8ICFjYW52YXMoKS0+b3JpZ2luQ2xl
YW4oKSkKKyAgICBpZiAoIXZpZGVvIHx8ICFjYW52YXMoKS5vcmlnaW5DbGVhbigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXZpZGVvLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpKQpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3
b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogCiBib29sIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7
Ci0gICAgaWYgKCFjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSkKKyAgICBpZiAoIWNhbnZhcygpLm9y
aWdpbkNsZWFuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICh1cmwucHJvdG9j
b2xJc0RhdGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuICFjYW52YXMo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOworICAgIHJldHVybiAhY2FudmFz
KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh3
b3VsZFRhaW50T3JpZ2luKHVybCkpCi0gICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVk
KCk7CisgICAgICAgIGNhbnZhcygpLnNldE9yaWdpblRhaW50ZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDA1NjMwMzdkZDQyZjAwNzUyYzE0NjExMDhlNDQ0NGY4
M2ZmNWIxNTguLjc1OTA4MGY1MzFkMWIwZWU1NmQ4ZTY4ZDYyNTQ1OTU2MGM2YTJmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IHB1Ymxp
YyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQoKSB7IH0KIAotICAgIHZvaWQgcmVmKCkgeyBtX2NhbnZhcy0+cmVmKCk7IH0KLSAg
ICB2b2lkIGRlcmVmKCkgeyBtX2NhbnZhcy0+ZGVyZWYoKTsgfQotICAgIEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBtX2NhbnZhczsgfQorICAgIHZvaWQgcmVmKCkg
eyBtX2NhbnZhcy5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IG1fY2FudmFzLmRlcmVmKCk7
IH0KKyAgICBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9jYW52
YXM7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpczJkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJHTDEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCopOworICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQmKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29u
c3QgQ2FudmFzUGF0dGVybiopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1M
Q2FudmFzRWxlbWVudCopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1h
Z2VFbGVtZW50Kik7CkBAIC03MCwxMiArNzAsMTIgQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRl
PGNsYXNzIFQ+IHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVCogYXJnKQogICAgIHsKICAgICAgICAg
aWYgKHdvdWxkVGFpbnRPcmlnaW4oYXJnKSkKLSAgICAgICAgICAgIGNhbnZhcygpLT5zZXRPcmln
aW5UYWludGVkKCk7CisgICAgICAgICAgICBjYW52YXMoKS5zZXRPcmlnaW5UYWludGVkKCk7CiAg
ICAgfQogICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVVJMJik7CiAKIHByaXZhdGU6Ci0gICAg
SFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOworICAgIEhUTUxDYW52YXNFbGVtZW50JiBtX2Nh
bnZhczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDI1
ZDliMmJlNmY5ZjM1M2YwOTM5ZmVlYzhmMmEyYjlhMzBiOWRmNTEuLjJhZDBlZjJjMDc5ZTgzMTQ2
OWRhNDEwNWFhZTQ3NGZlNDIwZDRlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIHByaXZhdGU6CiB9OwogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBib29sIHVzZXNDU1NDb21w
YXRpYmlsaXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSkK
LSAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQoJmNhbnZhcykKKyAgICA6IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQoY2FudmFzKQogICAgICwgbV9zdGF0ZVN0YWNrKDEpCiAgICAgLCBtX3VzZXND
U1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKQog
I2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dW53aW5kU3RhdGVTdGFjaygpCiAgICAgLy8gaXMgY2xl
YXJlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24sIHRvIGF2b2lkIGFzc2VydGlvbnMgaW4gdGhlCiAgICAg
Ly8gR3JhcGhpY3NDb250ZXh0IGR0b3IuCiAgICAgaWYgKHNpemVfdCBzdGFja1NpemUgPSBtX3N0
YXRlU3RhY2suc2l6ZSgpKSB7Ci0gICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBjYW52YXMoKS0+ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBjYW52YXMoKS5leGlzdGluZ0RyYXdpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgICAgIHdoaWxlICgtLXN0YWNrU2l6ZSkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKQogYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmlzQWNjZWxlcmF0ZWQoKSBjb25zdAogewogI2lmIFVTRShJT1NV
UkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpIHx8IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5W
QVMpCi0gICAgaWYgKCFjYW52YXMoKS0+aGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpCisgICAgaWYg
KCFjYW52YXMoKS5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAg
cmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKTsKQEAgLTM1
OCw3ICszNTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVhbGl6ZVNhdmVz
KCkKIAogICAgIGlmIChtX3VucmVhbGl6ZWRTYXZlQ291bnQpIHsKICAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuc2F2ZSgpIGhhcyBiZWVuIGNhbGxlZCB3aXRob3V0IGEgbWF0Y2hp
bmcgcmVzdG9yZSgpIHRvbyBtYW55IHRpbWVzLiBJZ25vcmluZyBzYXZlKCkuIikpOwotICAgICAg
ICBjYW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKKyAgICAgICAg
Y2FudmFzKCkuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5k
ZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICB9CiB9CiAK
QEAgLTQwNiw5ICs0MDYsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ry
b2tlU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiAgICAgaWYgKHN0eWxlLmlzQ3VycmVudENvbG9y
KCkpIHsKICAgICAgICAgaWYgKHN0eWxlLmhhc092ZXJyaWRlQWxwaGEoKSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFJHQkEzMiBoZXJlLgotICAgICAgICAgICAgc3R5
bGUgPSBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52
YXMoKSkucmdiKCksIHN0eWxlLm92ZXJyaWRlQWxwaGEoKSkpOworICAgICAgICAgICAgc3R5bGUg
PSBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcigmY2FudmFz
KCkpLnJnYigpLCBzdHlsZS5vdmVycmlkZUFscGhhKCkpKTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlKGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOworICAg
ICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZShjdXJyZW50Q29sb3IoJmNhbnZhcygpKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGNoZWNrT3JpZ2luKHN0eWxlLmNhbnZhc1BhdHRlcm4oKSk7CiAK
QEAgLTQzMyw5ICs0MzMsOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bFN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigp
KSB7CiAgICAgICAgIGlmIChzdHlsZS5oYXNPdmVycmlkZUFscGhhKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgbm90IHVzZSBSR0JBMzIgaGVyZS4KLSAgICAgICAgICAgIHN0eWxl
ID0gQ2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoY2FudmFz
KCkpLnJnYigpLCBzdHlsZS5vdmVycmlkZUFscGhhKCkpKTsKKyAgICAgICAgICAgIHN0eWxlID0g
Q2FudmFzU3R5bGUoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoJmNhbnZhcygp
KS5yZ2IoKSwgc3R5bGUub3ZlcnJpZGVBbHBoYSgpKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKKyAgICAg
ICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY3VycmVudENvbG9yKCZjYW52YXMoKSkpOwogICAg
IH0gZWxzZQogICAgICAgICBjaGVja09yaWdpbihzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOwogCkBA
IC01ODIsNyArNTgyLDcgQEAgU3RyaW5nIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93
Q29sb3IoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIHsKLSAgICBDb2xvciBjb2xvciA9IHBh
cnNlQ29sb3JPckN1cnJlbnRDb2xvcihjb2xvclN0cmluZywgY2FudmFzKCkpOworICAgIENvbG9y
IGNvbG9yID0gcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKGNvbG9yU3RyaW5nLCAmY2FudmFzKCkp
OwogICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHN0
YXRlKCkuc2hhZG93Q29sb3IgPT0gY29sb3IpCkBAIC04MjQsNyArODI0LDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0VHJhbnNmb3JtKCkKIAogICAgIHJlYWxpemVTYXZl
cygpOwogCi0gICAgYy0+c2V0Q1RNKGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkpOworICAgIGMt
PnNldENUTShjYW52YXMoKS5iYXNlVHJhbnNmb3JtKCkpOwogICAgIG1vZGlmaWFibGVTdGF0ZSgp
LnRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGhhc0ludmVydGlibGVU
cmFuc2Zvcm0pCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2EKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcmVhbGl6ZVNhdmVzKCk7Ci0gICAgc2V0U3Ryb2tlU3R5bGUo
Q2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmcoY29sb3IsICZjYW52YXMoKS0+ZG9jdW1lbnQo
KSkpOworICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNv
bG9yLCAmY2FudmFzKCkuZG9jdW1lbnQoKSkpOwogICAgIG1vZGlmaWFibGVTdGF0ZSgpLnVucGFy
c2VkU3Ryb2tlQ29sb3IgPSBjb2xvcjsKIH0KIApAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwg
T3B0aW9uYWw8ZmxvYXQ+CiAgICAgICAgIHJldHVybjsKIAogICAgIHJlYWxpemVTYXZlcygpOwot
ICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZyhjb2xvciwgJmNh
bnZhcygpLT5kb2N1bWVudCgpKSk7CisgICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tU3RyaW5nKGNvbG9yLCAmY2FudmFzKCkuZG9jdW1lbnQoKSkpOwogICAgIG1vZGlmaWFi
bGVTdGF0ZSgpLnVucGFyc2VkRmlsbENvbG9yID0gY29sb3I7CiB9CiAKQEAgLTEyNTIsNyArMTI1
Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VSZWN0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwg
Y29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhKQogewotICAg
IENvbG9yIGNvbG9yID0gcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKGNvbG9yU3RyaW5nLCBjYW52
YXMoKSk7CisgICAgQ29sb3IgY29sb3IgPSBwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IoY29sb3JT
dHJpbmcsICZjYW52YXMoKSk7CiAgICAgaWYgKCFjb2xvclN0cmluZy5pc051bGwoKSAmJiAhY29s
b3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
CkBAIC0xNjAzLDEzICsxNjAzLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhckNhbnZhcygpCiB7Ci0gICAgRmxvYXRSZWN0IGNh
bnZhc1JlY3QoMCwgMCwgY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7Cisg
ICAgRmxvYXRSZWN0IGNhbnZhc1JlY3QoMCwgMCwgY2FudmFzKCkud2lkdGgoKSwgY2FudmFzKCku
aGVpZ2h0KCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAg
ICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKICAgICBjLT5zYXZlKCk7Ci0gICAgYy0+c2V0
Q1RNKGNhbnZhcygpLT5iYXNlVHJhbnNmb3JtKCkpOworICAgIGMtPnNldENUTShjYW52YXMoKS5i
YXNlVHJhbnNmb3JtKCkpOwogICAgIGMtPmNsZWFyUmVjdChjYW52YXNSZWN0KTsKICAgICBjLT5y
ZXN0b3JlKCk7CiB9CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBQYXRoIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6dHJhbnNmb3JtQXJlYVRvRGV2aWNlKGNvbnN0IFBhdGgmIHBhdGgpIGNvbnN0CiB7
CiAgICAgUGF0aCB0cmFuc2Zvcm1lZChwYXRoKTsKICAgICB0cmFuc2Zvcm1lZC50cmFuc2Zvcm0o
c3RhdGUoKS50cmFuc2Zvcm0pOwotICAgIHRyYW5zZm9ybWVkLnRyYW5zZm9ybShjYW52YXMoKS0+
YmFzZVRyYW5zZm9ybSgpKTsKKyAgICB0cmFuc2Zvcm1lZC50cmFuc2Zvcm0oY2FudmFzKCkuYmFz
ZVRyYW5zZm9ybSgpKTsKICAgICByZXR1cm4gdHJhbnNmb3JtZWQ7CiB9CiAKQEAgLTE2MzIsMTQg
KzE2MzIsMTQgQEAgUGF0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zZm9ybUFyZWFU
b0RldmljZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnMKIGJvb2wgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpyZWN0Q29udGFpbnNDYW52YXMoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAogewogICAgIEZsb2F0UXVhZCBxdWFkKHJlY3QpOwotICAgIEZsb2F0UXVhZCBjYW52YXNRdWFk
KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSk7
CisgICAgRmxvYXRRdWFkIGNhbnZhc1F1YWQoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcygpLndpZHRo
KCksIGNhbnZhcygpLmhlaWdodCgpKSk7CiAgICAgcmV0dXJuIHN0YXRlKCkudHJhbnNmb3JtLm1h
cFF1YWQocXVhZCkuY29udGFpbnNRdWFkKGNhbnZhc1F1YWQpOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2FsY3VsYXRlQ29tcG9zaXRp
bmdCdWZmZXJSZWN0KGNvbnN0IFQmIGFyZWEsIEludFNpemUqIGNyb3BwZWRPZmZzZXQpCiB7Ci0g
ICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+
aGVpZ2h0KCkpOwotICAgIGNhbnZhc1JlY3QgPSBjYW52YXMoKS0+YmFzZVRyYW5zZm9ybSgpLm1h
cFJlY3QoY2FudmFzUmVjdCk7CisgICAgSW50UmVjdCBjYW52YXNSZWN0KDAsIDAsIGNhbnZhcygp
LndpZHRoKCksIGNhbnZhcygpLmhlaWdodCgpKTsKKyAgICBjYW52YXNSZWN0ID0gY2FudmFzKCku
YmFzZVRyYW5zZm9ybSgpLm1hcFJlY3QoY2FudmFzUmVjdCk7CiAgICAgUGF0aCBwYXRoID0gdHJh
bnNmb3JtQXJlYVRvRGV2aWNlKGFyZWEpOwogICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QocGF0aC5mYXN0Qm91bmRpbmdSZWN0KCkpOwogICAgIEludFBvaW50IG9yaWdp
bmFsTG9jYXRpb24gPSBidWZmZXJSZWN0LmxvY2F0aW9uKCk7CkBAIC0xNjU2LDggKzE2NTYsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoYwogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEludFJlY3QmIGJ1
ZmZlclJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewotICAgIEludFJlY3QgY2FudmFzUmVj
dCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKLSAgICBjYW52
YXNSZWN0ID0gY2FudmFzKCktPmJhc2VUcmFuc2Zvcm0oKS5tYXBSZWN0KGNhbnZhc1JlY3QpOwor
ICAgIEludFJlY3QgY2FudmFzUmVjdCgwLCAwLCBjYW52YXMoKS53aWR0aCgpLCBjYW52YXMoKS5o
ZWlnaHQoKSk7CisgICAgY2FudmFzUmVjdCA9IGNhbnZhcygpLmJhc2VUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGNhbnZhc1JlY3QpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRl
eHQoKTsKICAgICBpZiAoIWMpCkBAIC0xNzY0LDcgKzE3NjQsNyBAQCBFeGNlcHRpb25PcjxSZWZQ
dHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlUGF0dGVy
bihIVE1MSQogICAgIGlmIChjYWNoZWRJbWFnZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6
OkxvYWRFcnJvcikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJS
IH07CiAKLSAgICBib29sIG9yaWdpbkNsZWFuID0gY2FjaGVkSW1hZ2UtPmlzT3JpZ2luQ2xlYW4o
Y2FudmFzKCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGJvb2wgb3JpZ2luQ2xlYW4gPSBjYWNo
ZWRJbWFnZS0+aXNPcmlnaW5DbGVhbihjYW52YXMoKS5zZWN1cml0eU9yaWdpbigpKTsKIAogICAg
IC8vIEZJWE1FOiBTVkcgaW1hZ2VzIHdpdGggYW5pbWF0aW9ucyBjYW4gc3dpdGNoIGJldHdlZW4g
Y2xlYW4gYW5kIGRpcnR5IChsZWFraW5nIGNyb3NzLW9yaWdpbgogICAgIC8vIGRhdGEpLiBXZSBz
aG91bGQgZWl0aGVyOgpAQCAtMTgwMiw3ICsxODAyLDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENh
bnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRN
TFYKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGNoZWNr
T3JpZ2luKCZ2aWRlb0VsZW1lbnQpOwotICAgIGJvb2wgb3JpZ2luQ2xlYW4gPSBjYW52YXMoKS0+
b3JpZ2luQ2xlYW4oKTsKKyAgICBib29sIG9yaWdpbkNsZWFuID0gY2FudmFzKCkub3JpZ2luQ2xl
YW4oKTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYm
IFVTRShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1h
Z2UgPSB2aWRlb0VsZW1lbnQubmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKQpAQCAtMTgxOSw3
ICsxODE5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVBhdHRlcm4oSFRNTFYKIAogdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmRpZERyYXdFbnRpcmVDYW52YXMoKQogewotICAgIGRpZERyYXcoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzKCktPnNpemUoKSksIENhbnZhc0RpZERyYXdB
cHBseUNsaXApOworICAgIGRpZERyYXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2Fu
dmFzKCkuc2l6ZSgpKSwgQ2FudmFzRGlkRHJhd0FwcGx5Q2xpcCk7CiB9CiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQg
b3B0aW9ucykKQEAgLTE4MzMsMTEgKzE4MzMsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgLy8gSWYgd2UgYXJlIGRyYXdpbmcg
dG8gaGFyZHdhcmUgYW5kIHdlIGhhdmUgYSBjb21wb3NpdGVkIGxheWVyLCBqdXN0IGNhbGwgY29u
dGVudENoYW5nZWQoKS4KICAgICBpZiAoaXNBY2NlbGVyYXRlZCgpKSB7Ci0gICAgICAgIFJlbmRl
ckJveCogcmVuZGVyQm94ID0gY2FudmFzKCktPnJlbmRlckJveCgpOworICAgICAgICBSZW5kZXJC
b3gqIHJlbmRlckJveCA9IGNhbnZhcygpLnJlbmRlckJveCgpOwogICAgICAgICBpZiAocmVuZGVy
Qm94ICYmIHJlbmRlckJveC0+aGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAgICAgICAg
ICAgICByZW5kZXJCb3gtPmNvbnRlbnRDaGFuZ2VkKENhbnZhc1BpeGVsc0NoYW5nZWQpOwotICAg
ICAgICAgICAgY2FudmFzKCktPmNsZWFyQ29waWVkSW1hZ2UoKTsKLSAgICAgICAgICAgIGNhbnZh
cygpLT5ub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKHIpOworICAgICAgICAgICAgY2FudmFz
KCkuY2xlYXJDb3BpZWRJbWFnZSgpOworICAgICAgICAgICAgY2FudmFzKCkubm90aWZ5T2JzZXJ2
ZXJzQ2FudmFzQ2hhbmdlZChyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTE4NjMsNyArMTg2Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
aWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgLy8g
d2UnZCBoYXZlIHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCi0gICAgY2Fu
dmFzKCktPmRpZERyYXcoZGlydHlSZWN0KTsKKyAgICBjYW52YXMoKS5kaWREcmF3KGRpcnR5UmVj
dCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFja3NEaXNwbGF5
TGlzdFJlcGxheShib29sIHRyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5KQpAQCAtMTkwMiw4ICsxOTAy
LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCkKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBGbG9hdFJlY3QgY2xpcChGbG9hdFBvaW50Ojp6
ZXJvKCksIGNhbnZhcygpLT5zaXplKCkpOwotICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIg
cmVwbGF5ZXIoKmNhbnZhcygpLT5kcmF3aW5nQ29udGV4dCgpLCBtX3JlY29yZGluZ0NvbnRleHQt
PmRpc3BsYXlMaXN0KTsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXAoRmxvYXRQb2ludDo6emVybygp
LCBjYW52YXMoKS5zaXplKCkpOworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5
ZXIoKmNhbnZhcygpLmRyYXdpbmdDb250ZXh0KCksIG1fcmVjb3JkaW5nQ29udGV4dC0+ZGlzcGxh
eUxpc3QpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVwbGF5
KSkgewogICAgICAgICAgICAgYXV0byByZXBsYXlMaXN0ID0gcmVwbGF5ZXIucmVwbGF5KGNsaXAs
IG1fdHJhY2tzRGlzcGxheUxpc3RSZXBsYXkpOwpAQCAtMTkxOSwxMiArMTkxOSwxMiBAQCBHcmFw
aGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd2luZ0NvbnRleHQoKSBj
b25zdAogewogICAgIGlmIChVTkxJS0VMWShtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcpKSB7CiAg
ICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQotICAgICAgICAgICAgbV9yZWNvcmRpbmdD
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXMoKS0+c2l6ZSgpKSk7CisgICAgICAgICAg
ICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQ+KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhcygpLnNpemUoKSkp
OwogCiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0K
IAotICAgIHJldHVybiBjYW52YXMoKS0+ZHJhd2luZ0NvbnRleHQoKTsKKyAgICByZXR1cm4gY2Fu
dmFzKCkuZHJhd2luZ0NvbnRleHQoKTsKIH0KIAogc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNy
ZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xOTc1LDkgKzE5NzUs
OSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjp3ZWJraXRHZXRJbWFnZURhdGFIRChmbAogCiBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VE
YXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJbWFnZURhdGEoSW1hZ2VCdWZmZXI6
OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgc3gsIGZsb2F0IHN5LCBm
bG9hdCBzdywgZmxvYXQgc2gpIGNvbnN0CiB7Ci0gICAgaWYgKCFjYW52YXMoKS0+b3JpZ2luQ2xl
YW4oKSkgeworICAgIGlmICghY2FudmFzKCkub3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBnZXQgaW1hZ2UgZGF0YSBmcm9tIGNhbnZhcyBiZWNhdXNlIHRoZSBjYW52YXMgaGFz
IGJlZW4gdGFpbnRlZCBieSBjcm9zcy1vcmlnaW4gZGF0YS4iKSk7Ci0gICAgICAgIGNhbnZhcygp
LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIGNhbnZhcygpLmRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNFQ1VSSVRZX0VSUiB9OwogICAgIH0KIApAQCAtMjAwMiw3ICsyMDAyLDcgQEAgRXhjZXB0
aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1h
Z2VEYXRhKEltYWdlQnVmZmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbnRSZWN0
IGltYWdlRGF0YVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxSZWN0KTsKLSAgICBJbWFn
ZUJ1ZmZlciogYnVmZmVyID0gY2FudmFzKCktPmJ1ZmZlcigpOworICAgIEltYWdlQnVmZmVyKiBi
dWZmZXIgPSBjYW52YXMoKS5idWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgpKTsKIApAQCAtMjAx
NCw3ICsyMDE0LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKEltYWdlQnVmZmUKICAgICAgICAgY29uc29sZU1l
c3NhZ2UuYXBwZW5kTGl0ZXJhbCgiIHggIik7CiAgICAgICAgIGNvbnNvbGVNZXNzYWdlLmFwcGVu
ZE51bWJlcihpbWFnZURhdGFSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBjYW52YXMoKS0+ZG9j
dW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLnRvU3RyaW5nKCkpOworICAgICAgICBjYW52
YXMoKS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmlu
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UudG9TdHJpbmcoKSk7CiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogICAgIH0KIApAQCAt
MjA1NSw3ICsyMDU1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdGb2N1
c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgRWxlbWUKIHsKICAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBkcmF3aW5nQ29udGV4dCgpOwogCi0gICAgaWYgKCFlbGVtZW50
LmZvY3VzZWQoKSB8fCAhc3RhdGUoKS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtIHx8IHBhdGguaXNF
bXB0eSgpIHx8ICFlbGVtZW50LmlzRGVzY2VuZGFudE9mKGNhbnZhcygpKSB8fCAhY29udGV4dCkK
KyAgICBpZiAoIWVsZW1lbnQuZm9jdXNlZCgpIHx8ICFzdGF0ZSgpLmhhc0ludmVydGlibGVUcmFu
c2Zvcm0gfHwgcGF0aC5pc0VtcHR5KCkgfHwgIWVsZW1lbnQuaXNEZXNjZW5kYW50T2YoJmNhbnZh
cygpKSB8fCAhY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+ZHJhd0Zv
Y3VzUmluZyhwYXRoLCAxLCAxLCBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3IoKSk7CkBAIC0y
MDYzLDcgKzIwNjMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ZvY3Vz
SWZOZWVkZWRJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBFbGVtZQogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYgZGF0YSwgSW1hZ2VCdWZm
ZXI6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgZmxvYXQgZHgsIGZsb2F0IGR5
LCBmbG9hdCBkaXJ0eVgsIGZsb2F0IGRpcnR5WSwgZmxvYXQgZGlydHlXaWR0aCwgZmxvYXQgZGly
dHlIZWlnaHQpCiB7Ci0gICAgSW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcygpLT5idWZmZXIo
KTsKKyAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2FudmFzKCkuYnVmZmVyKCk7CiAgICAgaWYg
KCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjE1MiwxMCArMjE1MiwxMCBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQp
CiAgICAgLy8gcmVsYXRpdmUgdG8gdGhlIGNhbnZhcy4KICAgICBhdXRvIG5ld1N0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZVB0cigpOwogCi0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFz
KCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gY2FudmFzKCkuZG9jdW1l
bnQoKTsKICAgICBkb2N1bWVudC51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKLSAgICBpZiAoYXV0
byogY29tcHV0ZWRTdHlsZSA9IGNhbnZhcygpLT5jb21wdXRlZFN0eWxlKCkpCisgICAgaWYgKGF1
dG8qIGNvbXB1dGVkU3R5bGUgPSBjYW52YXMoKS5jb21wdXRlZFN0eWxlKCkpCiAgICAgICAgIG5l
d1N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oY29tcHV0ZWRTdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkpOwogICAgIGVsc2UgewogICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRlZmF1bHRG
b250RGVzY3JpcHRpb247CkBAIC0yMTY5LDcgKzIxNjksNyBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgbmV3U3R5bGUt
PmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CiAKICAgICAv
LyBOb3cgbWFwIHRoZSBmb250IHByb3BlcnR5IGxvbmdoYW5kcyBpbnRvIHRoZSBzdHlsZS4KLSAg
ICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyID0gY2FudmFzKCktPnN0eWxlUmVzb2x2ZXIo
KTsKKyAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyID0gY2FudmFzKCkuc3R5bGVSZXNv
bHZlcigpOwogICAgIHN0eWxlUmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVy
dHlGb250RmFtaWx5LCBwYXJzZWRTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkpLmdldCgpLCBXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgc3R5bGVSZXNvbHZl
ci5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsIHBhcnNl
ZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFN0eWxlKS5nZXQoKSk7
CiAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVy
dHlGb250VmFyaWFudENhcHMsIHBhcnNlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Rm9udFZhcmlhbnRDYXBzKS5nZXQoKSk7CkBAIC0yMjIwLDcgKzIyMjAsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0VGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYg
cykKIAogaW5saW5lIFRleHREaXJlY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b1Rl
eHREaXJlY3Rpb24oRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqKiBjb21w
dXRlZFN0eWxlKSBjb25zdAogewotICAgIGF1dG8qIHN0eWxlID0gKGNvbXB1dGVkU3R5bGUgfHwg
ZGlyZWN0aW9uID09IERpcmVjdGlvbjo6SW5oZXJpdCkgPyBjYW52YXMoKS0+Y29tcHV0ZWRTdHls
ZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBzdHlsZSA9IChjb21wdXRlZFN0eWxlIHx8IGRpcmVj
dGlvbiA9PSBEaXJlY3Rpb246OkluaGVyaXQpID8gY2FudmFzKCkuY29tcHV0ZWRTdHlsZSgpIDog
bnVsbHB0cjsKICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKICAgICAgICAgKmNvbXB1dGVkU3R5bGUg
PSBzdHlsZTsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewpAQCAtMjIzOCw3ICsyMjM4LDcgQEAg
aW5saW5lIFRleHREaXJlY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b1RleHREaXJl
Y3Rpb24oRGlyZWN0aW9uIGRpcmVjdGkKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmRpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXRlKCkuZGlyZWN0aW9uID09IERpcmVj
dGlvbjo6SW5oZXJpdCkKLSAgICAgICAgY2FudmFzKCktPmRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgICAgICBjYW52YXMoKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uKSA9PSBS
VEwgPyBBU0NJSUxpdGVyYWwoInJ0bCIpIDogQVNDSUlMaXRlcmFsKCJsdHIiKTsKIH0KIApAQCAt
MjUwOCw3ICsyNTA4LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVT
dHJva2VSZWN0KEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKIAogYXV0byBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmZvbnRQcm94eSgpIC0+IGNvbnN0IEZvbnRQcm94eSYKIHsKLSAgICBjYW52YXMo
KS0+ZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgY2FudmFzKCkuZG9jdW1l
bnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBpZiAoIXN0YXRlKCkuZm9udC5yZWFs
aXplZCgpKQogICAgICAgICBzZXRGb250KHN0YXRlKCkudW5wYXJzZWRGb250KTsKQEAgLTI1MTgs
NyArMjUxOCw3IEBAIGF1dG8gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmb250UHJveHkoKSAt
PiBjb25zdCBGb250UHJveHkmCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKIFBs
YXRmb3JtTGF5ZXIqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNhbnZhcygpLT5idWZmZXIoKSA/IGNhbnZhcygpLT5idWZmZXIo
KS0+cGxhdGZvcm1MYXllcigpIDogMDsKKyAgICByZXR1cm4gY2FudmFzKCkuYnVmZmVyKCkgPyBj
YW52YXMoKS5idWZmZXIoKS0+cGxhdGZvcm1MYXllcigpIDogMDsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDZiMDlhZDFjNDViNzBkMzk1ODdlNmYzNTU2NzAyMjk4YzViOGM3YzQuLjkxYmJk
ZWNhN2YwNWViNTIzOGNiN2YzNTc2NTY4ODllZWEwYmJjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OSwx
MiArNTksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiBwYXNzZWRDYW52
YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBw
YXNzZWRDYW52YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAg
ICAgOiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKHBhc3NlZENhbnZhcywgYXR0cmlidXRlcykK
IHsKIH0KIAotV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCogcGFzc2VkQ2FudmFzLCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
JiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQmIHBhc3NlZENhbnZhcywgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQs
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKHBhc3NlZENhbnZhcywgV1RGTW92ZShjb250ZXh0KSwgYXR0cmli
dXRlcykKIHsKICAgICBpbml0aWFsaXplU2hhZGVyRXh0ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDYy
ZDViNzM5NWI4Y2U4OGJiNjU1YmQzNmVjNDNkZDU5MmY0NWZiMjYuLmQ3MjRjYWQzZjllNDE0ODll
Mjc1ZDJlZTBjZTUwMDkxMTk1ZGFhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQwLDggKzQwLDggQEAgY2xhc3Mg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIAogY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIHsKIHB1YmxpYzoKLSAgICBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMpOwotICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQqLCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYsIEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dGVzKTsKKyAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50
JiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQmLCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYsIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKIAogICAgIC8qIEJ1ZmZlciBvYmplY3RzICov
CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YnVmZmVyRGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDIyOTQ0ZjFhZjRkNWQ2ZDUzYmZhNjY0MjVlNTM0MzczMjdiYWU3MDUuLjQ5YzhjZDE5
NTliNTk3ZjhkNDg4Y2Y4OWI1NjkwOWViN2JhNWU5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjQsMTIgKzY0
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhbnZhcywgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykKK1dlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52
YXMsIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKHBhc3NlZENhbnZhcywgYXR0cmlidXRlcykKIHsKIH0KIAot
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwKK1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52
YXNFbGVtZW50JiBwYXNzZWRDYW52YXMsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQsCiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykgOiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKHBhc3NlZENhbnZhcywgY29udGV4dCwgYXR0cmlidXRl
cykKIHsKICAgICBpbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDM4MTM2
ZTk4NGE2N2Y1ODc5NzRhOTVhZmUyNjgwOGY4MGQ1OTU5MWYuLjY3MDk0MTExZDVhMDM3YmU4ZTU1
NDUyM2RhNzcyNWM5Yjk4YTUzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgewogcHVibGljOgotICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dChIVE1MQ2FudmFzRWxlbWVudCosIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsK
LSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzKTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQmLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaXNXZWJHTDEoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA1ZTAzMTI3MjQ3ZThhNDk4
ZDM1M2I3NDc4ZDk3ZTEwNzcwYjc3MDIuLjFhMWYxNmE5Yzg2N2ZmYjc5MjEwM2IyOTBhMDVlNjg1
Mjg5YTUzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX2NvbnRleHQ7CiB9OwogCi1zdGQ6OnVu
aXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIFdlYkdMQ29udGV4dEF0dHJp
YnV0ZXMqIGF0dHJzLCBjb25zdCBTdHJpbmcmIHR5cGUpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKEhU
TUxDYW52YXNFbGVtZW50JiBjYW52YXMsIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqIGF0dHJzLCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAjaWYgRU5BQkxFKFdFQkdMMikKICAgICBpZiAodHlwZSA9
PSAid2ViZ2wyIiAmJiAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJHTDJFbmFibGVkKCkpCkBAIC0zNTcsNyArMzU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZShI
VE0KICAgICBVTlVTRURfUEFSQU0odHlwZSk7CiAjZW5kaWYKIAotICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGNhbnZhcy0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjYW52
YXMuZG9jdW1lbnQoKTsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDcgKzM2NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjcmVhdGUoSFRNCiAgICAgLy8gVGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1p
Z2h0IGJsb2NrIGNyZWF0aW9uIG9mIGEgbmV3IFdlYkdMIGNvbnRleHQgZGVzcGl0ZSB0aGUgcGFn
ZSBzZXR0aW5nczsgaW4KICAgICAvLyBwYXJ0aWN1bGFyLCBpZiBXZWJHTCBjb250ZXh0cyB3ZXJl
IGxvc3Qgb25lIG9yIG1vcmUgdGltZXMgdmlhIHRoZSBHTF9BUkJfcm9idXN0bmVzcyBleHRlbnNp
b24uCiAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuYWxsb3dXZWJHTChmcmFtZS0+
c2V0dGluZ3MoKS53ZWJHTEVuYWJsZWQoKSkpIHsKLSAgICAgICAgY2FudmFzLT5kaXNwYXRjaEV2
ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNy
ZWF0aW9uZXJyb3JFdmVudCwgZmFsc2UsIHRydWUsICJXZWIgcGFnZSB3YXMgbm90IGFsbG93ZWQg
dG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7CisgICAgICAgIGNhbnZhcy5kaXNwYXRjaEV2
ZW50KFdlYkdMQ29udGV4dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNy
ZWF0aW9uZXJyb3JFdmVudCwgZmFsc2UsIHRydWUsICJXZWIgcGFnZSB3YXMgbm90IGFsbG93ZWQg
dG8gY3JlYXRlIGEgV2ViR0wgY29udGV4dC4iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNDI2LDcgKzQyNiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoSFRNCiAgICAg
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGUoYXR0cmlidXRlcywgaG9zdFdpbmRvdykpOwogCiAgICAgaWYgKCFjb250ZXh0IHx8ICFjb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkgewotICAgICAgICBjYW52YXMtPmRpc3BhdGNoRXZl
bnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3Jl
YXRpb25lcnJvckV2ZW50LCBmYWxzZSwgdHJ1ZSwgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBj
b250ZXh0LiIpKTsKKyAgICAgICAgY2FudmFzLmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvckV2ZW50LCBm
YWxzZSwgdHJ1ZSwgIkNvdWxkIG5vdCBjcmVhdGUgYSBXZWJHTCBjb250ZXh0LiIpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC00NDYsOSArNDQ2LDkgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNyZWF0ZShIVE0KICAgICByZXR1cm4gcmVuZGVyaW5nQ29udGV4dDsKIH0KIAotV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShIVE1MQ2FudmFz
RWxlbWVudCogcGFzc2VkQ2FudmFzLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
aWJ1dGVzKQorV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZShIVE1MQ2FudmFzRWxlbWVudCYgcGFzc2VkQ2FudmFzLCBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dChwYXNz
ZWRDYW52YXMpCi0gICAgLCBBY3RpdmVET01PYmplY3QoJnBhc3NlZENhbnZhcy0+ZG9jdW1lbnQo
KSkKKyAgICAsIEFjdGl2ZURPTU9iamVjdCgmcGFzc2VkQ2FudmFzLmRvY3VtZW50KCkpCiAgICAg
LCBtX2NvbnRleHQobnVsbHB0cikKICAgICAsIG1fZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50VGlt
ZXIoKnRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRMb3N0
RXZlbnQpCiAgICAgLCBtX3Jlc3RvcmVBbGxvd2VkKGZhbHNlKQpAQCAtNDY0LDkgKzQ2NCw5IEBA
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRN
TENhbnZhc0VsZW1lbnQqIHBhc3NlZENhCiB7CiB9CiAKLVdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENh
bnZhcywgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiYmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCitXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMs
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4mJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dChwYXNz
ZWRDYW52YXMpCi0gICAgLCBBY3RpdmVET01PYmplY3QoJnBhc3NlZENhbnZhcy0+ZG9jdW1lbnQo
KSkKKyAgICAsIEFjdGl2ZURPTU9iamVjdCgmcGFzc2VkQ2FudmFzLmRvY3VtZW50KCkpCiAgICAg
LCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fZGlzcGF0Y2hDb250ZXh0TG9z
dEV2ZW50VGltZXIoKnRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENv
bnRleHRMb3N0RXZlbnQpCiAgICAgLCBtX3Jlc3RvcmVBbGxvd2VkKGZhbHNlKQpAQCAtNTcxLDcg
KzU3MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCiB7
CiAgICAgQVNTRVJUKG1fY29udGV4dCk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IGNhbnZhcygp
LT5kb2N1bWVudCgpLnBhZ2UoKSkKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNhbnZhcygpLmRvY3Vt
ZW50KCkucGFnZSgpKQogICAgICAgICBtX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlID0gcGFn
ZS0+c2V0dGluZ3MoKS53ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQoKTsKIAogICAgIG1faXNH
TEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgpOwpAQCAtNjQwLDE1
ICs2NDAsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXJrQ29udGV4dENo
YW5nZWQoKQogICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAKICAgICBtX2xh
eWVyQ2xlYXJlZCA9IGZhbHNlOwotICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCkt
PnJlbmRlckJveCgpOworICAgIFJlbmRlckJveCogcmVuZGVyQm94ID0gY2FudmFzKCkucmVuZGVy
Qm94KCk7CiAgICAgaWYgKGlzQWNjZWxlcmF0ZWQoKSAmJiByZW5kZXJCb3ggJiYgcmVuZGVyQm94
LT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICAgICAgICAgbV9tYXJrZWRDYW52YXNE
aXJ0eSA9IHRydWU7Ci0gICAgICAgIGNhbnZhcygpLT5jbGVhckNvcGllZEltYWdlKCk7CisgICAg
ICAgIGNhbnZhcygpLmNsZWFyQ29waWVkSW1hZ2UoKTsKICAgICAgICAgcmVuZGVyQm94LT5jb250
ZW50Q2hhbmdlZChDYW52YXNDaGFuZ2VkKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1f
bWFya2VkQ2FudmFzRGlydHkpIHsKICAgICAgICAgICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSB0
cnVlOwotICAgICAgICAgICAgY2FudmFzKCktPmRpZERyYXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQo
MCwgMCksIGNsYW1wZWRDYW52YXNTaXplKCkpKTsKKyAgICAgICAgICAgIGNhbnZhcygpLmRpZERy
YXcoRmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgMCksIGNsYW1wZWRDYW52YXNTaXplKCkpKTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTczMCwyNiArNzMwLDI2IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjYW52
YXMoKS0+ZG9jdW1lbnQoKS5wcmludGluZygpKQotICAgICAgICBjYW52YXMoKS0+Y2xlYXJQcmVz
ZW50YXRpb25Db3B5KCk7CisgICAgaWYgKGNhbnZhcygpLmRvY3VtZW50KCkucHJpbnRpbmcoKSkK
KyAgICAgICAgY2FudmFzKCkuY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICAvLyBVbnRp
bCB0aGUgY2FudmFzIGlzIHdyaXR0ZW4gdG8gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgY2xlYXIg
dGhhdAogICAgIC8vIGhhcHBlbmVkIGFmdGVyIGl0IHdhcyBjb21wb3NpdGVkIHNob3VsZCBiZSBp
Z25vcmVkIGJ5IHRoZSBjb21wb3NpdG9yLgogICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9z
aXRlZCgpICYmICFtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKGNhbnZhcygpLT5idWZm
ZXIoKSk7CisgICAgICAgIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFz
KGNhbnZhcygpLmJ1ZmZlcigpKTsKIAotICAgICAgICBjYW52YXMoKS0+bWFrZVByZXNlbnRhdGlv
bkNvcHkoKTsKKyAgICAgICAgY2FudmFzKCkubWFrZVByZXNlbnRhdGlvbkNvcHkoKTsKICAgICB9
IGVsc2UKLSAgICAgICAgY2FudmFzKCktPmNsZWFyUHJlc2VudGF0aW9uQ29weSgpOworICAgICAg
ICBjYW52YXMoKS5jbGVhclByZXNlbnRhdGlvbkNvcHkoKTsKICAgICBjbGVhcklmQ29tcG9zaXRl
ZCgpOwogCiAgICAgaWYgKCFtX21hcmtlZENhbnZhc0RpcnR5ICYmICFtX2xheWVyQ2xlYXJlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FudmFzKCktPmNsZWFyQ29waWVkSW1hZ2UoKTsKKyAg
ICBjYW52YXMoKS5jbGVhckNvcGllZEltYWdlKCk7CiAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9
IGZhbHNlOwogCi0gICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhj
YW52YXMoKS0+YnVmZmVyKCkpOworICAgIG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoY2FudmFzKCkuYnVmZmVyKCkpOwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgp
CkBAIC03ODIsNyArNzgyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBoZWlnaHQgPSBjbGFtcChoZWlnaHQsIDEs
IG1heEhlaWdodCk7CiAKICAgICBpZiAobV9uZWVkc1VwZGF0ZSkgewotICAgICAgICBSZW5kZXJC
b3gqIHJlbmRlckJveCA9IGNhbnZhcygpLT5yZW5kZXJCb3goKTsKKyAgICAgICAgUmVuZGVyQm94
KiByZW5kZXJCb3ggPSBjYW52YXMoKS5yZW5kZXJCb3goKTsKICAgICAgICAgaWYgKHJlbmRlckJv
eCAmJiByZW5kZXJCb3gtPmhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgICAg
IHJlbmRlckJveC0+Y29udGVudENoYW5nZWQoQ2FudmFzQ2hhbmdlZCk7CiAgICAgICAgIG1fbmVl
ZHNVcGRhdGUgPSBmYWxzZTsKQEAgLTI2ODAsNyArMjY4MCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6aXNDb250ZXh0TG9zdE9yUGVuZGluZygpCiB7CiAgICAgaWYgKG1faXNQ
ZW5kaW5nUG9saWN5UmVzb2x1dGlvbiAmJiAhbV9oYXNSZXF1ZXN0ZWRQb2xpY3lSZXNvbHV0aW9u
KSB7CiAgICAgICAgIExPRyhXZWJHTCwgIkNvbnRleHQgaXMgYmVpbmcgdXNlZC4gQXR0ZW1wdCB0
byByZXNvbHZlIHRoZSBwb2xpY3kuIik7Ci0gICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNh
bnZhcygpLT5kb2N1bWVudCgpLnRvcERvY3VtZW50KCk7CisgICAgICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGNhbnZhcygpLmRvY3VtZW50KCkudG9wRG9jdW1lbnQoKTsKICAgICAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKICAgICAgICAgaWYgKHBhZ2UgJiYgIWRvY3VtZW50LnVy
bCgpLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5jbGllbnQoKS5yZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoZG9jdW1lbnQudXJsKCkpOwpAQCAt
MjgyNSw3ICsyODI1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4
ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgKICAgICAgICAgcmV0dXJu
OwogICAgIC8vIER1ZSB0byBXZWJHTCdzIHNhbWUtb3JpZ2luIHJlc3RyaWN0aW9ucywgaXQgaXMg
bm90IHBvc3NpYmxlIHRvCiAgICAgLy8gdGFpbnQgdGhlIG9yaWdpbiB1c2luZyB0aGUgV2ViR0wg
QVBJLgotICAgIEFTU0VSVChjYW52YXMoKS0+b3JpZ2luQ2xlYW4oKSk7CisgICAgQVNTRVJUKGNh
bnZhcygpLm9yaWdpbkNsZWFuKCkpOwogICAgIC8vIFZhbGlkYXRlIGlucHV0IHBhcmFtZXRlcnMu
CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBI
QToKQEAgLTM4MTAsNyArMzgxMCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
bG9zZUNvbnRleHRJbXBsKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgaWYg
KG1vZGUgPT0gUmVhbExvc3RDb250ZXh0KSB7CiAgICAgICAgIC8vIEluZm9ybSB0aGUgZW1iZWRk
ZXIgdGhhdCBhIGxvc3QgY29udGV4dCB3YXMgcmVjZWl2ZWQuIEluIHJlc3BvbnNlLCB0aGUgZW1i
ZWRkZXIgbWlnaHQKICAgICAgICAgLy8gZGVjaWRlIHRvIHRha2UgYWN0aW9uIHN1Y2ggYXMgYXNr
aW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIHRvIHVzZSBXZWJHTCBhZ2Fpbi4KLSAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGNhbnZhcygpLT5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBjYW52YXMoKS5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAg
ICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKICAgICB9
CiAKQEAgLTQ0MzQsOSArNDQzNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cHJpbnRHTEVycm9yVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFdhcm5pbmdUb0NvbnNvbGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIGlmICghY2FudmFzKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBj
YW52YXMoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5k
ZXJpbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CisgICAgY2FudmFzKCkuZG9j
dW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmFsaWRhdGVCbGVuZEZ1bmNGYWN0b3JzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSwgR0MzRGVudW0gc3JjLCBHQzNEZW51bSBkc3QpCkBAIC00NzgwLDcgKzQ3NzgsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc3RvcmVTdGF0ZXNBZnRlclZlcnRleEF0dHJp
YjBTaW11bGF0aW9uKCkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzcGF0Y2hD
b250ZXh0TG9zdEV2ZW50KCkKIHsKICAgICBSZWY8V2ViR0xDb250ZXh0RXZlbnQ+IGV2ZW50ID0g
V2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2ViZ2xjb250ZXh0bG9zdEV2
ZW50LCBmYWxzZSwgdHJ1ZSwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgY2FudmFzKCktPmRpc3BhdGNo
RXZlbnQoZXZlbnQpOworICAgIGNhbnZhcygpLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIG1f
cmVzdG9yZUFsbG93ZWQgPSBldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogICAgIGlmIChtX2Nv
bnRleHRMb3N0TW9kZSA9PSBSZWFsTG9zdENvbnRleHQgJiYgbV9yZXN0b3JlQWxsb3dlZCkKICAg
ICAgICAgbV9yZXN0b3JlVGltZXIuc3RhcnRPbmVTaG90KDApOwpAQCAtNDgyOCw3ICs0ODI2LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgRnJhbWUqIGZyYW1lID0gY2FudmFzKCktPmRv
Y3VtZW50KCkuZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjYW52YXMoKS5kb2N1bWVudCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODYwLDcg
KzQ4NTgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNv
bnRleHQoKQogICAgIHNldHVwRmxhZ3MoKTsKICAgICBpbml0aWFsaXplTmV3Q29udGV4dCgpOwog
ICAgIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKTsKLSAgICBjYW52YXMoKS0+ZGlzcGF0
Y2hFdmVudChXZWJHTENvbnRleHRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJnbGNvbnRl
eHRyZXN0b3JlZEV2ZW50LCBmYWxzZSwgdHJ1ZSwgZW1wdHlTdHJpbmcoKSkpOworICAgIGNhbnZh
cygpLmRpc3BhdGNoRXZlbnQoV2ViR0xDb250ZXh0RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
d2ViZ2xjb250ZXh0cmVzdG9yZWRFdmVudCwgZmFsc2UsIHRydWUsIGVtcHR5U3RyaW5nKCkpKTsK
IH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51bGwoY29u
c3QgU3RyaW5nJiB0ZXh0KSBjb25zdApAQCAtNDk3Myw4ICs0OTcxLDggQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVPckRpc2FibGUoR0MzRGVudW0gY2FwYWJpbGl0eSwg
Ym9vbCBlbmFibGUKIAogSW50U2l6ZSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjbGFtcGVk
Q2FudmFzU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIEludFNpemUoY2xhbXAoY2FudmFzKCktPndpZHRo
KCksIDEsIG1fbWF4Vmlld3BvcnREaW1zWzBdKSwKLSAgICAgICAgICAgICAgICAgICBjbGFtcChj
YW52YXMoKS0+aGVpZ2h0KCksIDEsIG1fbWF4Vmlld3BvcnREaW1zWzFdKSk7CisgICAgcmV0dXJu
IEludFNpemUoY2xhbXAoY2FudmFzKCkud2lkdGgoKSwgMSwgbV9tYXhWaWV3cG9ydERpbXNbMF0p
LAorICAgICAgICBjbGFtcChjYW52YXMoKS5oZWlnaHQoKSwgMSwgbV9tYXhWaWV3cG9ydERpbXNb
MV0pKTsKIH0KIAogR0MzRGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRNYXhEcmF3
QnVmZmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggYjBlZGJmM2VjMWEwZTc3YzRlNzllZmFlMTEyM2Y0
NDIzNDZkMDhhOC4uZDliMTZmODU0MmYyMWFkYWViYTc3MWQ0ZDUxNzk5NzZlZmM4YWNhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaApAQCAtMTA4LDcgKzEwOCw3IEBAIGlubGluZSBib29sIGNsaXAyRChHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LAogCiBjbGFz
cyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gY3JlYXRlKEhUTUxDYW52YXNFbGVt
ZW50KiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gY3JlYXRlKEhUTUxD
YW52YXNFbGVtZW50JiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyosIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZpcnR1YWwgfldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoKTsKIAogI2lmIFBMQVRGT1JN
KFdJTikKQEAgLTMzNCw4ICszMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJE
aXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKTsKIAogcHJvdGVjdGVkOgot
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQqLCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyk7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZShI
VE1MQ2FudmFzRWxlbWVudCosIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4mJiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UoSFRN
TENhbnZhc0VsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyk7CisgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZShIVE1MQ2FudmFzRWxlbWVudCYsIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4mJiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwogCiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkdMRHJhd0J1ZmZlcnM7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMRnJhbWVi
dWZmZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>