<?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>71617</bug_id>
          
          <creation_ts>2011-11-05 18:04:52 -0700</creation_ts>
          <short_desc>Remove ContextShadow</short_desc>
          <delta_ts>2011-11-05 22:37:43 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>496750</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-05 18:04:52 -0700</bug_when>
    <thetext>ContextShadow is now unused and has been completely replaced by ShadowBlur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496753</commentid>
    <comment_count>1</comment_count>
      <attachid>113771</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-05 18:07:50 -0700</bug_when>
    <thetext>Created attachment 113771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496775</commentid>
    <comment_count>2</comment_count>
      <attachid>113771</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2011-11-05 20:37:36 -0700</bug_when>
    <thetext>Comment on attachment 113771
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496779</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-05 22:33:20 -0700</bug_when>
    <thetext>Committed r99370: &lt;http://trac.webkit.org/changeset/99370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496780</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-05 22:37:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r99370: &lt;http://trac.webkit.org/changeset/99370&gt;

For the record, when I landed this, I also fixed WebCore.gypi.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113771</attachid>
            <date>2011-11-05 18:07:50 -0700</date>
            <delta_ts>2011-11-05 22:37:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71617-20111105180748.patch</filename>
            <type>text/plain</type>
            <size>21297</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYzVkNGZlNGE4NDg2ZmZh
OTQ2OWNiNzU4ZDE1ZTQyODNhYjUyOTJjLi4wYTdjODM5YWU2NDA2NzViMmRmYmFmYTcyNjM3MzI2
OGVlYzlmMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDUgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBDb250
ZXh0U2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2UgYmVoYXZpb3IuCisKKyAg
ICAgICAgQ29tcGxldGVseSByZW1vdmUgQ29udGV4dFNoYWRvdy4gSXQncyB1bnVzZWQsIHVubWFp
bnRhaW5lZCwgYW5kCisgICAgICAgIHJlcGxhY2VkIGJ5IFNoYWRvd0JsdXIuCisKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZGVs
ZXRlZCBmaWxlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQu
Y3BwOiBSZW1vdmUgbm93LWluYWNjdXJhdGUgVE9ETy4KKwogMjAxMS0xMS0wNSAgRGFuIFdpbnNo
aXAgIDxkYW53QGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBBY3R1YWxseSB1c2UgdGhlIHVz
ZXJfZGF0YSBhcmd1bWVudHMgdG8gZ2lvIGFzeW5jIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1YWI5Njc0ODQ2NDMxYzAxYjY3
NjhjNmE4YzJhZTQ3NTdmOGEwMWI0Li41YmYxZGFhMTgzNmI0MGQ2ZTJmNDYxNWY3OTRiZTViZThi
ZTU2ZWFlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMjcyMzMsNzggKzI3MjMzLDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXENvbnRleHRTaGFkb3cu
Y3BwIgotCQkJCQk+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxU
b29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJ
CQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJ
CT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJCS8+
Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgot
CQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZp
bGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xDb250ZXh0U2hhZG93
LmgiCi0JCQkJCT4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z3xX
aW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRv
b2wKLQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJ
CQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKLQkJCQkJCS8+Ci0JCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQkJTmFt
ZT0iRGVidWdfQWxsfFdpbjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJ
CQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgotCQkJCQkJ
Lz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0J
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgotCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29s
IgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQk8L0ZpbGU+Ci0JCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFBvaW50
LmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdiZWNkYTczZjI1ZTA3NmExOTA0ZTQ3Y2Y4ZTlmMDA5M2YyN2ViODQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZW5jaGEsIEluYy4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBJZ2FsaWEgUy5MLgotICoKLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNvbnRleHRTaGFkb3cuaCIKLQotI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLXVzaW5nIFdURjo6
bWluOwotdXNpbmcgV1RGOjptYXg7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ29udGV4dFNo
YWRvdzo6Q29udGV4dFNoYWRvdygpCi0gICAgOiBtX3R5cGUoTm9TaGFkb3cpCi0gICAgLCBtX2Js
dXJEaXN0YW5jZSgwKQotICAgICwgbV9sYXllckNvbnRleHQoMCkKLSAgICAsIG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoZmFsc2UpCi17Ci19Ci0KLUNvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFk
b3coY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0KQotICAgIDogbV9jb2xvcihjb2xvcikKLSAgICAsIG1fYmx1ckRpc3RhbmNlKHJvdW5kKHJh
ZGl1cykpCi0gICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgLCBtX2xheWVyQ29udGV4dCgwKQot
ICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKLXsKLSAgICAvLyBTZWUgY29t
bWVudHMgaW4gaHR0cDovL3dlYmtpdC5vcmcvYi80MDc5MywgaXQgc2VlbXMgc2Vuc2libGUKLSAg
ICAvLyB0byBmb2xsb3cgU2tpYSdzIGxpbWl0IG9mIDEyOCBwaXhlbHMgb2YgYmx1ciByYWRpdXMK
LSAgICBtX2JsdXJEaXN0YW5jZSA9IG1pbihtX2JsdXJEaXN0YW5jZSwgMTI4KTsKLQotICAgIC8v
IFRoZSB0eXBlIG9mIHNoYWRvdyBpcyBkZWNpZGVkIGJ5IHRoZSBibHVyIHJhZGl1cywgc2hhZG93
IG9mZnNldCwgYW5kIHNoYWRvdyBjb2xvci4KLSAgICBpZiAoIW1fY29sb3IuaXNWYWxpZCgpIHx8
ICFjb2xvci5hbHBoYSgpKSB7Ci0gICAgICAgIC8vIENhbid0IHBhaW50IHRoZSBzaGFkb3cgd2l0
aCBpbnZhbGlkIG9yIGludmlzaWJsZSBjb2xvci4KLSAgICAgICAgbV90eXBlID0gTm9TaGFkb3c7
Ci0gICAgfSBlbHNlIGlmIChyYWRpdXMgPiAwKSB7Ci0gICAgICAgIC8vIFNoYWRvdyBpcyBhbHdh
eXMgYmx1cnJlZCwgZXZlbiB0aGUgb2Zmc2V0IGlzIHplcm8uCi0gICAgICAgIG1fdHlwZSA9IEJs
dXJTaGFkb3c7Ci0gICAgfSBlbHNlIGlmICghbV9vZmZzZXQud2lkdGgoKSAmJiAhbV9vZmZzZXQu
aGVpZ2h0KCkpIHsKLSAgICAgICAgLy8gV2l0aG91dCBibHVyIGFuZCB6ZXJvIG9mZnNldCBtZWFu
cyB0aGUgc2hhZG93IGlzIGZ1bGx5IGhpZGRlbi4KLSAgICAgICAgbV90eXBlID0gTm9TaGFkb3c7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV90eXBlID0gU29saWRTaGFkb3c7Ci0gICAgfQotfQot
Ci12b2lkIENvbnRleHRTaGFkb3c6OmNsZWFyKCkKLXsKLSAgICBtX3R5cGUgPSBOb1NoYWRvdzsK
LSAgICBtX2NvbG9yID0gQ29sb3IoKTsKLSAgICBtX2JsdXJEaXN0YW5jZSA9IDA7Ci0gICAgbV9v
ZmZzZXQgPSBGbG9hdFNpemUoKTsKLX0KLQotYm9vbCBDb250ZXh0U2hhZG93OjptdXN0VXNlQ29u
dGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgLy8gV2UgY2FuJ3Qg
YXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4KLSAgICBpZiAo
bV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBvcHRpbWl6ZSwgc2luY2Ug
d2UncmUgbm90IGRyYXdpbmcgb24gYQotICAgIC8vIGNhbnZhcyBhbmQgYm94IHNoYWRvd3MgYXJl
IGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCi0gICAgaWYgKCFzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gV2UgY2Fu
IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMg
dG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KLSAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVu
dGl0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFu
Y2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gSW5z
dGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9uLCB3ZSB1c2UgMTcuMTUgZm9yIGZpeGVkLXBvaW50IGRp
dmlzaW9uLgotc3RhdGljIGNvbnN0IGludCBCbHVyU3VtU2hpZnQgPSAxNTsKLQotLy8gQ2hlY2sg
aHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ZpbHRlcnMuaHRtbCNmZUdhdXNzaWFuQmx1ci4KLS8v
IEFzIG5vdGVkIGluIHRoZSBTVkcgZmlsdGVyIHNwZWNpZmljYXRpb24sIHJ1bm5pbmcgYm94IGJs
dXIgM3gKLS8vIGFwcHJveGltYXRlcyBhIHJlYWwgZ2F1c3NpYW4gYmx1ciBuaWNlbHkuCi0KLXZv
aWQgQ29udGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hhciogaW1hZ2VEYXRh
LCBjb25zdCBJbnRTaXplJiBzaXplLCBpbnQgcm93U3RyaWRlKQotewotI2lmIENQVShCSUdfRU5E
SUFOKQotICAgIGludCBjaGFubmVsc1s0XSA9IHsgMCwgMywgMiwgMCB9OwotI2VsaWYgQ1BVKE1J
RERMRV9FTkRJQU4pCi0gICAgaW50IGNoYW5uZWxzWzRdID0geyAxLCAyLCAzLCAxIH07Ci0jZWxz
ZQotICAgIGludCBjaGFubmVsc1s0XSA9IHsgMywgMCwgMSwgMyB9OwotI2VuZGlmCi0KLSAgICBp
bnQgZCA9IG1heCgyLCBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZigoMiAvIDMuZikgKiBtX2JsdXJE
aXN0YW5jZSkpKTsKLSAgICBpbnQgZG1heCA9IGQgPj4gMTsKLSAgICBpbnQgZG1pbiA9IGRtYXgg
LSAxICsgKGQgJiAxKTsKLSAgICBpZiAoZG1pbiA8IDApCi0gICAgICAgIGRtaW4gPSAwOwotCi0g
ICAgLy8gVHdvIHN0YWdlczogaG9yaXpvbnRhbCBhbmQgdmVydGljYWwKLSAgICBmb3IgKGludCBr
ID0gMDsgayA8IDI7ICsraykgewotCi0gICAgICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVscyA9IGlt
YWdlRGF0YTsKLSAgICAgICAgaW50IHN0cmlkZSA9ICghaykgPyA0IDogcm93U3RyaWRlOwotICAg
ICAgICBpbnQgZGVsdGEgPSAoIWspID8gcm93U3RyaWRlIDogNDsKLSAgICAgICAgaW50IGpmaW5h
bCA9ICghaykgPyBzaXplLmhlaWdodCgpIDogc2l6ZS53aWR0aCgpOwotICAgICAgICBpbnQgZGlt
ID0gKCFrKSA/IHNpemUud2lkdGgoKSA6IHNpemUuaGVpZ2h0KCk7Ci0KLSAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCBqZmluYWw7ICsraiwgcGl4ZWxzICs9IGRlbHRhKSB7Ci0KLSAgICAgICAg
ICAgIC8vIEZvciBlYWNoIHN0ZXAsIHdlIGJsdXIgdGhlIGFscGhhIGluIGEgY2hhbm5lbCBhbmQg
c3RvcmUgdGhlIHJlc3VsdAotICAgICAgICAgICAgLy8gaW4gYW5vdGhlciBjaGFubmVsIGZvciB0
aGUgc3Vic2VxdWVudCBzdGVwLgotICAgICAgICAgICAgLy8gV2UgdXNlIHNsaWRpbmcgd2luZG93
IGFsZ29yaXRobSB0byBhY2N1bXVsYXRlIHRoZSBhbHBoYSB2YWx1ZXMuCi0gICAgICAgICAgICAv
LyBUaGlzIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQgdGhhbiBjb21wdXRpbmcgdGhlIHN1bSBvZiBl
YWNoIHBpeGVscwotICAgICAgICAgICAgLy8gY292ZXJlZCBieSB0aGUgYm94IGtlcm5lbCBzaXpl
IGZvciBlYWNoIHguCi0KLSAgICAgICAgICAgIGZvciAoaW50IHN0ZXAgPSAwOyBzdGVwIDwgMzsg
KytzdGVwKSB7Ci0gICAgICAgICAgICAgICAgaW50IHNpZGUxID0gKCFzdGVwKSA/IGRtaW4gOiBk
bWF4OwotICAgICAgICAgICAgICAgIGludCBzaWRlMiA9IChzdGVwID09IDEpID8gZG1pbiA6IGRt
YXg7Ci0gICAgICAgICAgICAgICAgaW50IHBpeGVsQ291bnQgPSBzaWRlMSArIDEgKyBzaWRlMjsK
LSAgICAgICAgICAgICAgICBpbnQgaW52Q291bnQgPSAoKDEgPDwgQmx1clN1bVNoaWZ0KSArIHBp
eGVsQ291bnQgLSAxKSAvIHBpeGVsQ291bnQ7Ci0gICAgICAgICAgICAgICAgaW50IG9mcyA9IDEg
KyBzaWRlMjsKLSAgICAgICAgICAgICAgICBpbnQgYWxwaGExID0gcGl4ZWxzW2NoYW5uZWxzW3N0
ZXBdXTsKLSAgICAgICAgICAgICAgICBpbnQgYWxwaGEyID0gcGl4ZWxzWyhkaW0gLSAxKSAqIHN0
cmlkZSArIGNoYW5uZWxzW3N0ZXBdXTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBw
dHIgPSBwaXhlbHMgKyBjaGFubmVsc1tzdGVwICsgMV07Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciogcHJldiA9IHBpeGVscyArIHN0cmlkZSArIGNoYW5uZWxzW3N0ZXBdOwotICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG5leHQgPSBwaXhlbHMgKyBvZnMgKiBzdHJpZGUgKyBj
aGFubmVsc1tzdGVwXTsKLQotICAgICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICAg
IGludCBzdW0gPSBzaWRlMSAqIGFscGhhMSArIGFscGhhMTsKLSAgICAgICAgICAgICAgICBpbnQg
bGltaXQgPSAoZGltIDwgc2lkZTIgKyAxKSA/IGRpbSA6IHNpZGUyICsgMTsKLSAgICAgICAgICAg
ICAgICBmb3IgKGkgPSAxOyBpIDwgbGltaXQ7ICsraSwgcHJldiArPSBzdHJpZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHN1bSArPSAqcHJldjsKLSAgICAgICAgICAgICAgICBpZiAobGltaXQgPD0g
c2lkZTIpCi0gICAgICAgICAgICAgICAgICAgIHN1bSArPSAoc2lkZTIgLSBsaW1pdCArIDEpICog
YWxwaGEyOwotCi0gICAgICAgICAgICAgICAgbGltaXQgPSAoc2lkZTEgPCBkaW0pID8gc2lkZTEg
OiBkaW07Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxpbWl0OyBwdHIgKz0gc3Ry
aWRlLCBuZXh0ICs9IHN0cmlkZSwgKytpLCArK29mcykgewotICAgICAgICAgICAgICAgICAgICAq
cHRyID0gKHN1bSAqIGludkNvdW50KSA+PiBCbHVyU3VtU2hpZnQ7Ci0gICAgICAgICAgICAgICAg
ICAgIHN1bSArPSAoKG9mcyA8IGRpbSkgPyAqbmV4dCA6IGFscGhhMikgLSBhbHBoYTE7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByZXYgPSBwaXhlbHMgKyBjaGFubmVsc1tz
dGVwXTsKLSAgICAgICAgICAgICAgICBmb3IgKDsgb2ZzIDwgZGltOyBwdHIgKz0gc3RyaWRlLCBw
cmV2ICs9IHN0cmlkZSwgbmV4dCArPSBzdHJpZGUsICsraSwgKytvZnMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgKnB0ciA9IChzdW0gKiBpbnZDb3VudCkgPj4gQmx1clN1bVNoaWZ0OwotICAgICAg
ICAgICAgICAgICAgICBzdW0gKz0gKCpuZXh0KSAtICgqcHJldik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgZGltOyBwdHIgKz0gc3RyaWRlLCBwcmV2ICs9
IHN0cmlkZSwgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwdHIgPSAoc3VtICogaW52Q291
bnQpID4+IEJsdXJTdW1TaGlmdDsKLSAgICAgICAgICAgICAgICAgICAgc3VtICs9IGFscGhhMiAt
ICgqcHJldik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIENvbnRleHRTaGFkb3c6OmFkanVzdEJsdXJEaXN0YW5jZShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bSA9IGNvbnRleHQtPmdldENUTSgpOwotCi0gICAgLy8gQWRqdXN0IGJsdXIgaWYgd2UncmUgc2Nh
bGluZywgc2luY2UgdGhlIHJhZGl1cyBtdXN0IG5vdCBiZSBhZmZlY3RlZCBieSB0cmFuc2Zvcm1h
dGlvbnMuCi0gICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIC8vIENhbGN1bGF0ZSB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuCi0gICAgY29uc3Qg
RmxvYXRRdWFkIHVuaXRRdWFkKEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMSwgMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoMCwgMSksIEZsb2F0UG9pbnQo
MSwgMSkpOwotICAgIGNvbnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNm
b3JtLm1hcFF1YWQodW5pdFF1YWQpOwotCi0gICAgLy8gQ2FsY3VsYXRlIFggYXhpcyBzY2FsZSBm
YWN0b3IuCi0gICAgY29uc3QgRmxvYXRTaXplIHhVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0
UXVhZC5wMigpIC0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMSgpOwotICAgIGNvbnN0IGZsb2F0IHhB
eGlzU2NhbGUgPSBzcXJ0Zih4VW5pdENoYW5nZS53aWR0aCgpICogeFVuaXRDaGFuZ2Uud2lkdGgo
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHhVbml0Q2hhbmdlLmhlaWdo
dCgpICogeFVuaXRDaGFuZ2UuaGVpZ2h0KCkpOwotCi0gICAgLy8gQ2FsY3VsYXRlIFkgYXhpcyBz
Y2FsZSBmYWN0b3IuCi0gICAgY29uc3QgRmxvYXRTaXplIHlVbml0Q2hhbmdlID0gdHJhbnNmb3Jt
ZWRVbml0UXVhZC5wMygpIC0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMSgpOwotICAgIGNvbnN0IGZs
b2F0IHlBeGlzU2NhbGUgPSBzcXJ0Zih5VW5pdENoYW5nZS53aWR0aCgpICogeVVuaXRDaGFuZ2Uu
d2lkdGgoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHlVbml0Q2hhbmdl
LmhlaWdodCgpICogeVVuaXRDaGFuZ2UuaGVpZ2h0KCkpOwotCi0gICAgLy8gYmx1ckxheWVySW1h
Z2UoKSBkb2VzIG5vdCBzdXBwb3J0IHBlci1heGlzIGJsdXJyaW5nLCBzbyBjYWxjdWxhdGUgYSBi
YWxhbmNlZCBzY2FsaW5nLgotICAgIGNvbnN0IGZsb2F0IHNjYWxlID0gc3FydGYoeEF4aXNTY2Fs
ZSAqIHlBeGlzU2NhbGUpOwotICAgIG1fYmx1ckRpc3RhbmNlID0gcm91bmRmKHN0YXRpY19jYXN0
PGZsb2F0PihtX2JsdXJEaXN0YW5jZSkgLyBzY2FsZSk7Ci19Ci0KLUludFJlY3QgQ29udGV4dFNo
YWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCi17
Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBhbmQvb3Ig
dHJhbnNmb3JtZWQgbGF5ZXIuCi0gICAgRmxvYXRSZWN0IGxheWVyRmxvYXRSZWN0OwotICAgIGZs
b2F0IGluZmxhdGlvbiA9IDA7Ci0KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
ID0gY29udGV4dC0+Z2V0Q1RNKCk7Ci0gICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMg
JiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9y
bWVkUG9seWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChsYXllckFyZWEpKTsKLSAg
ICAgICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllckZs
b2F0UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24p
LmJvdW5kaW5nQm94KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGF5ZXJGbG9hdFJlY3QgPSBs
YXllckFyZWE7Ci0gICAgICAgIGxheWVyRmxvYXRSZWN0Lm1vdmUobV9vZmZzZXQpOwotICAgIH0K
LQotICAgIC8vIFdlIGV4cGFuZCB0aGUgYXJlYSBieSB0aGUgYmx1ciByYWRpdXMgdG8gZ2l2ZSBl
eHRyYSBzcGFjZSBmb3IgdGhlIGJsdXIgdHJhbnNpdGlvbi4KLSAgICBpZiAobV90eXBlID09IEJs
dXJTaGFkb3cpIHsKLSAgICAgICAgbGF5ZXJGbG9hdFJlY3QuaW5mbGF0ZShtX2JsdXJEaXN0YW5j
ZSk7Ci0gICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKLSAgICB9Ci0KLSAgICBG
bG9hdFJlY3QgdW5jbGlwcGVkTGF5ZXJSZWN0ID0gbGF5ZXJGbG9hdFJlY3Q7Ci0KLSAgICBpZiAo
IWNsaXBSZWN0LmNvbnRhaW5zKGVuY2xvc2luZ0ludFJlY3QobGF5ZXJGbG9hdFJlY3QpKSkgewot
ICAgICAgICAvLyBObyBuZWVkIHRvIGhhdmUgdGhlIGJ1ZmZlciBsYXJnZXIgdGhhbiB0aGUgY2xp
cC4KLSAgICAgICAgbGF5ZXJGbG9hdFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsKLQotICAgICAg
ICAvLyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwgd2UgYXJlbid0
IHBhaW50aW5nIGF0IGFsbC4KLSAgICAgICAgaWYgKGxheWVyRmxvYXRSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIDAsIDApOwotCi0gICAgICAgIC8vIFdl
IGFkanVzdCBhZ2FpbiBiZWNhdXNlIHRoZSBwaXhlbHMgYXQgdGhlIGJvcmRlcnMgYXJlIHN0aWxs
Ci0gICAgICAgIC8vIHBvdGVudGlhbGx5IGFmZmVjdGVkIGJ5IHRoZSBwaXhlbHMgb3V0c2lkZSB0
aGUgYnVmZmVyLgotICAgICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpIHsKLSAgICAgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOwotICAgICAgICAgICAg
dW5jbGlwcGVkTGF5ZXJSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOwotICAgICAgICAgICAg
aW5mbGF0aW9uICs9IG1fYmx1ckRpc3RhbmNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29u
c3QgaW50IGZyYW1lU2l6ZSA9IGluZmxhdGlvbiAqIDI7Ci0gICAgbV9zb3VyY2VSZWN0ID0gSW50
UmVjdCgwLCAwLCBsYXllckFyZWEud2lkdGgoKSArIGZyYW1lU2l6ZSwgbGF5ZXJBcmVhLmhlaWdo
dCgpICsgZnJhbWVTaXplKTsKLSAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZs
b2F0UmVjdC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7Ci0KLSAgICBjb25zdCBGbG9hdFBvaW50
IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54
KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkpOwotICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVk
T3V0ID0gbV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47Ci0KLSAgICAvLyBT
ZXQgdGhlIG9yaWdpbiBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdl
LCBvciwgaW4gY2FzZSB0aGVyZSdzIGEgY2xpcHBlZAotICAgIC8vIG91dCByZWdpb24sIHNldCB0
aGUgb3JpZ2luIGFjY29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVm
dCBjb3JuZXIuCi0gICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkg
KyBpbmZsYXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOwotICAgIGNvbnN0IGZsb2F0
IHRyYW5zbGF0aW9uWSA9IC1sYXllckFyZWEueSgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBl
ZE91dC5oZWlnaHQoKSk7Ci0gICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0UG9p
bnQodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOwotCi0gICAgcmV0dXJuIGVuY2xvc2luZ0lu
dFJlY3QobGF5ZXJGbG9hdFJlY3QpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YWNlZTA3MjYwMTYyNTYwYTMwMDcxYTRlMTU0ZTQ4
MDFhOTdiODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2VuY2hh
LCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KLSAqCi0gKiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29udGV4dFNoYWRvd19oCi0jZGVmaW5lIENv
bnRleHRTaGFkb3dfaAotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQot
I2lmIFVTRShDQUlSTykKLXR5cGVkZWYgc3RydWN0IF9jYWlybyBjYWlyb190OwotdHlwZWRlZiBz
dHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwotI2VsaWYgUExBVEZPUk0oUVQp
Ci0jaW5jbHVkZSA8UUltYWdlPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRUGFpbnRlcjsK
LVFUX0VORF9OQU1FU1BBQ0UKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLQotI2lmIFVTRShDQUlS
TykKLXR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBQbGF0Zm9ybUltYWdlOwotdHlwZWRlZiBjYWly
b190KiBQbGF0Zm9ybUNvbnRleHQ7Ci0jZWxpZiBQTEFURk9STShRVCkKLXR5cGVkZWYgUUltYWdl
IFBsYXRmb3JtSW1hZ2U7Ci10eXBlZGVmIFFQYWludGVyKiBQbGF0Zm9ybUNvbnRleHQ7Ci0jZWxz
ZQotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUltYWdlOwotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUNv
bnRleHQ7Ci0jZW5kaWYKLQotLy8gVGhpcyBpcyB0byB0cmFjayBhbmQga2VlcCB0aGUgc2hhZG93
IHN0YXRlLiBXZSB1c2UgdGhpcyByYXRoZXIgdGhhbgotLy8gdXNpbmcgR3JhcGhpY3NDb250ZXh0
U3RhdGUgdG8gYWxsb3cgcG9zc2libGUgb3B0aW1pemF0aW9ucyAocmlnaHQgbm93Ci0vLyBvbmx5
IHRvIGRldGVybWluZSB0aGUgc2hhZG93IHR5cGUsIGJ1dCBpbiBmdXR1cmUgaXQgbWlnaHQgY292
ZXJzIHRoaW5ncwotLy8gbGlrZSBjYWNoZWQgc2NyYXRjaCBpbWFnZSwgcGVyc2lzdGVudCBzaGFk
ZXIsIGV0YykuCi0KLS8vIFRoaXMgY2xhc3Mgc2hvdWxkIGJlIGNvcHlhYmxlIHNpbmNlIEdyYXBo
aWNzQ29udGV4dFF0IGtlZXBzIGEgc3RhY2sgb2YKLS8vIHRoZSBzaGFkb3cgc3RhdGUgZm9yIHNh
dmVQbGF0Zm9ybVN0YXRlIGFuZCByZXN0b3JlUGxhdGZvcm1TdGF0ZS4KLQotLy8gVGhpcyBjbGFz
cyBpcyBEZXByZWNhdGVkLiBQbGF0Zm9ybXMgc2hvdWxkIG1pZ3JhdGUgdG8gU2hhZG93Qmx1ci4K
LQotY2xhc3MgQ29udGV4dFNoYWRvdyB7Ci1wdWJsaWM6Ci0gICAgZW51bSB7Ci0gICAgICAgIE5v
U2hhZG93LAotICAgICAgICBTb2xpZFNoYWRvdywKLSAgICAgICAgQmx1clNoYWRvdwotICAgIH0g
bV90eXBlOwotCi0gICAgQ29sb3IgbV9jb2xvcjsKLSAgICBpbnQgbV9ibHVyRGlzdGFuY2U7Ci0g
ICAgRmxvYXRTaXplIG1fb2Zmc2V0OwotCi0gICAgQ29udGV4dFNoYWRvdygpOwotICAgIENvbnRl
eHRTaGFkb3coY29uc3QgQ29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0KTsKLQotICAgIGJvb2wgbXVzdFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0Kik7
Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgLy8gVGhlIHBhaXIgYmVnaW5TaGFkb3dMYXllciBh
bmQgZW5kU2hhZG93TGF5ZXIgY3JlYXRlcyBhIHRlbXBvcmFyeSBpbWFnZQotICAgIC8vIHdoZXJl
IHRoZSBjYWxsZXIgY2FuIGRyYXcgb250bywgdXNpbmcgdGhlIHJldHVybmVkIGNvbnRleHQuIFRo
aXMgY29udGV4dAotICAgIC8vIG11c3QgYmUgdXNlZCBvbmx5IHRvIGRyYXcgYmV0d2VlbiB0aGUg
Y2FsbCB0byBiZWdpblNoYWRvd0xheWVyIGFuZAotICAgIC8vIGVuZFNoYWRvd0xheWVyLgotICAg
IC8vCi0gICAgLy8gTm90ZTogbXVsdGlwbGUvbmVzdGVkIHNoYWRvdyBsYXllcnMgYXJlIE5PVCBh
bGxvd2VkLgotICAgIC8vCi0gICAgLy8gVGhlIGN1cnJlbnQgY2xpcCByZWdpb24gd2lsbCBiZSB1
c2VkIHRvIG9wdGltaXplIHRoZSBzaXplIG9mIHRoZQotICAgIC8vIHRlbXBvcmFyeSBpbWFnZS4g
VGh1cywgdGhlIG9yaWdpbmFsIGNvbnRleHQgc2hvdWxkIG5vdCBjaGFuZ2UgYW55Ci0gICAgLy8g
Y2xpcHBpbmcgdW50aWwgZW5kU2hhZG93TGF5ZXIuIElmIHRoZSBzaGFkb3cgd2lsbCBiZSBjb21w
bGV0ZWx5IG91dHNpZGUKLSAgICAvLyB0aGUgY2xpcHBpbmcgcmVnaW9uLCBiZWdpblNoYWRvd0xh
eWVyIHdpbGwgcmV0dXJuIDAuCi0gICAgLy8KLSAgICAvLyBUaGUgcmV0dXJuZWQgY29udGV4dCB3
aWxsIGhhdmUgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBhbmQgY2xpcHBpbmcKLSAgICAvLyBw
cm9wZXJseSBpbml0aWFsaXplZCB0byBzdGFydCBkb2luZyB0aGUgcGFpbnRpbmcgKG5vIG5lZWQg
dG8gYWNjb3VudCBmb3IKLSAgICAvLyB0aGUgc2hhZG93IG9mZnNldCksIGhvd2V2ZXIgaXQgd2ls
bCBub3QgaGF2ZSB0aGUgc2FtZSByZW5kZXIgaGludHMsIHBlbiwKLSAgICAvLyBicnVzaCwgZXRj
IGFzIHRoZSBwYXNzZWQgY29udGV4dC4gVGhpcyBpcyBpbnRlbnRpb25hbCwgdXN1YWxseSBzaGFk
b3dzCi0gICAgLy8gaGF2ZSBkaWZmZXJlbnQgcHJvcGVydGllcyB0aGFuIHRoZSBzaGFwZXMgd2hp
Y2ggY2FzdCB0aGVtLgotICAgIC8vCi0gICAgLy8gT25jZSBlbmRTaGFkb3dMYXllciBpcyBjYWxs
ZWQsIHRoZSB0ZW1wb3JhcnkgaW1hZ2Ugd2lsbCBiZSBkcmF3biB3aXRoIHRoZQotICAgIC8vIG9y
aWdpbmFsIGNvbnRleHQuIElmIGJsdXIgcmFkaXVzIGlzIHNwZWNpZmllZCwgdGhlIHNoYWRvdyB3
aWxsIGJlCi0gICAgLy8gZmlsdGVyZWQgZmlyc3QuCi0KLSAgICBQbGF0Zm9ybUNvbnRleHQgYmVn
aW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJl
YSk7Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKLSAgICBzdGF0
aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKLQotICAgIHZvaWQgc2V0U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMoYm9vbCBlbmFibGUpIHsgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGVu
YWJsZTsgfQotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVy
biBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9Ci0jaWYgVVNFKENBSVJPKQotICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVm
dFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMgPSBJ
bnRTaXplKCkpOwotI2VuZGlmCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgUVBvaW50RiBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdo
dCgpKTsgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1h
Z2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxsIGJlIGRyYXdu
IHRvLgotICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsgLy8gQ29udGV4dCB1c2Vk
IHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgotICAgIEZsb2F0UmVjdCBt
X3NvdXJjZVJlY3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRo
ZSBzaGFkb3cgcGl4ZWxzLgotICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsgLy8gVG9wLWxl
ZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3
IHRoZSBzaGFkb3cgdG8uCi0gICAgRmxvYXRQb2ludCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9u
OyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3IgdGhlIHNoYWRv
dyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KLSAgICBib29sIG1fc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7Ci0KLSAgICB2b2lkIGFkanVzdEJsdXJEaXN0YW5jZShHcmFwaGljc0NvbnRleHQqKTsK
LSAgICB2b2lkIGJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiBp
bWFnZVNpemUsIGludCBzdHJpZGUpOwotICAgIEludFJlY3QgY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KTsKLQotI2lmIFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBzaGFk
b3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BS
aWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKLSNlbmRpZgotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ29udGV4dFNoYWRvd19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggMmYzMjIyZTJlMzFjY2RlZDVlYWI4ZjhkNGJhNGZkZjI5ZmIzOTUwMi4uNTlmNWRhNTQ2
ODMwMzg1MzYzMTM3MWM0YzdlZjM2M2U3MTRmODExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTEsNyAr
NTEsNiBAQCBzdGF0aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKQogICAgIGdTY3JhdGNoQnVm
ZmVyID0gMDsKIH0KIAotLy8gRklYTUU6IFBlcmhhcHMgd2UgY2FuIHNoYXJlIHNvbWUgb2YgdGhp
cyBjb2RlIHdpdGggdGhlIENvbnRleHRTaGFkb3dDYWlyby4KIC8vIFdpZGdldCByZW5kZXJpbmcg
bmVlZHMgYSBzY3JhdGNoIGltYWdlIGFzIHRoZSBidWZmZXIgZm9yIHRoZSBpbnRlcm1lZGlhdGUK
IC8vIHJlbmRlci4gSW5zdGVhZCBvZiBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB0aGUgYnVmZmVy
IGZvciBldmVyeSBvcGVyYXRpb24sCiAvLyB3ZSBjcmVhdGUgYSBidWZmZXIgd2hpY2ggd2lsbCBi
ZSBhdXRvbWF0aWNhbGx5IHB1cmdlZCB2aWEgYSB0aW1lci4K
</data>

          </attachment>
      

    </bug>

</bugzilla>