<?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>24331</bug_id>
          
          <creation_ts>2009-03-03 10:51:57 -0800</creation_ts>
          <short_desc>Add custom V8 bindings for Element, Attr, HTMLFrame, and HTMLIFrame</short_desc>
          <delta_ts>2009-03-03 11:19:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112042</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-03 10:51:57 -0800</bug_when>
    <thetext>Rietveld is deathly ill today, so we&apos;ll go straight to the source...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112043</commentid>
    <comment_count>1</comment_count>
      <attachid>28230</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-03 10:54:27 -0800</bug_when>
    <thetext>Created attachment 28230
Add custom V8 bindings for Element, Attr, HTMLFrame, and HTMLIFrame, v1

 WebCore/ChangeLog                                  |   14 ++
 WebCore/bindings/v8/custom/V8AttrCustom.cpp        |   58 +++++++
 WebCore/bindings/v8/custom/V8CustomBinding.cpp     |   59 +++++++
 WebCore/bindings/v8/custom/V8CustomBinding.h       |   11 ++
 WebCore/bindings/v8/custom/V8ElementCustom.cpp     |  169 ++++++++++++++++++++
 .../v8/custom/V8HTMLFrameElementCustom.cpp         |   62 +++++++
 .../v8/custom/V8HTMLIFrameElementCustom.cpp        |   51 ++++++
 7 files changed, 424 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112048</commentid>
    <comment_count>2</comment_count>
      <attachid>28230</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-03-03 11:11:49 -0800</bug_when>
    <thetext>Comment on attachment 28230
Add custom V8 bindings for Element, Attr, HTMLFrame, and HTMLIFrame, v1

Looks fine.

I would have put toEventType closer to where it&apos;s used in the file.  I don&apos;t think we have any rule about statics being at the top or anything (maybe we should?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112050</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-03 11:19:50 -0800</bug_when>
    <thetext>Landed (after moving toEventType down to event handler code) as http://trac.webkit.org/changeset/41399.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28230</attachid>
            <date>2009-03-03 10:54:27 -0800</date>
            <delta_ts>2009-03-03 11:11:49 -0800</delta_ts>
            <desc>Add custom V8 bindings for Element, Attr, HTMLFrame, and HTMLIFrame, v1</desc>
            <filename>Add-custom-V8-bindings-for-Element-Attr-HTMLFrame-and-HTMLIFrame-v1.patch</filename>
            <type>text/plain</type>
            <size>17824</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">MDVjOWExZGM1OWE2MzI1OWJhOTBlZDgxOTVkYjM5YzY4NTVkMDQyMgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNTkyY2YyLi5iNzQ3Yzgw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDE5IEBACiAyMDA5LTAzLTAzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzMxCisgICAg
ICAgIEFkZCBjdXN0b20gVjggYmluZGluZ3MgZm9yIEVsZW1lbnQsIEF0dHIsIEhUTUxGcmFtZSwg
YW5kIEhUTUxJRnJhbWUuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3Vz
dG9tLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJp
bmRpbmcuaDogQWRkZWQgYXR0cmlidXRlLWNoZWNraW5nIGhlbHBlcnMuCisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHA6
IEFkZGVkLgorCisyMDA5LTAzLTAzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgogCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMyMQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdHRyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMTg0YzVkOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXR0ckN1c3RvbS5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIGlmcmFtZUxJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgaWZyYW1lTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF0dHIuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIK
KyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworQUNDRVNTT1JfU0VUVEVSKEF0dHJWYWx1ZSkKK3sKKyAgICBB
dHRyKiBpbXAgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEF0dHI+KGluZm8uSG9sZGVyKCkp
OworICAgIFN0cmluZyBhdHRyVmFsdWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZh
bHVlKTsKKyAgICBFbGVtZW50KiBvd25lckVsZW1lbnQgPSBpbXAtPm93bmVyRWxlbWVudCgpOwor
CisgICAgaWYgKG93bmVyRWxlbWVudCAmJiAhYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJM
KG93bmVyRWxlbWVudCwgaW1wLT5uYW1lKCksIGF0dHJWYWx1ZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcC0+c2V0VmFsdWUoYXR0clZhbHVl
LCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICB0aHJvd0Vycm9yKGVjKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21CaW5kaW5nLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
QmluZGluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxMzgyYgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmlu
ZGluZy5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitib29sIGFsbG93U2V0dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKiBmcmFtZSwgU3RyaW5nIHZhbHVlKQoreworICAgIGlmIChwcm90b2NvbElz
KHBhcnNlVVJMKHZhbHVlKSwgImphdmFzY3JpcHQiKSkgeworICAgICAgICBOb2RlKiBjb250ZW50
RG9jID0gZnJhbWUtPmNvbnRlbnREb2N1bWVudCgpOworICAgICAgICBpZiAoY29udGVudERvYyAm
JiAhVjhQcm94eTo6Q2hlY2tOb2RlU2VjdXJpdHkoY29udGVudERvYykpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIGFsbG93U2V0
dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiBlbGVtZW50LCBTdHJpbmcgbmFtZSwgU3Ry
aW5nIHZhbHVlKQoreworICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omlm
cmFtZVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZyYW1lVGFnKSkgJiYg
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpKQorICAgICAgICByZXR1cm4gYWxsb3dTZXR0
aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJh
c2UqPihlbGVtZW50KSwgdmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbUJpbmRpbmcuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oCmluZGV4IDBmZDM3NjguLjIwZmE2YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCkBAIC0zNSw0ICszNSwxNSBAQAogLy8gb3ZlciBhbmQgdjhf
Y3VzdG9tIGFjdHVhbGx5IGJlY29tZXMgVjhDdXN0b21CaW5kaW5nLgogI2luY2x1ZGUgInY4X2N1
c3RvbS5oIgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBIVE1MRnJhbWVFbGVt
ZW50QmFzZTsKKyAgICBjbGFzcyBFbGVtZW50OworICAgIGNsYXNzIFN0cmluZzsKKworICAgIGJv
b2wgYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoSFRNTEZyYW1lRWxlbWVudEJh
c2UqLCBTdHJpbmcgdmFsdWUpOworICAgIGJvb2wgYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0
VVJMKEVsZW1lbnQqLCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVjhDdXN0b21CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRkY2E5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsMTY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgZWxlbWVudExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgZWxlbWVudExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisKKyNpbmNs
dWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKKyNp
bmNsdWRlICJWOEF0dHIuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1
c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUV2ZW50TGlzdGVuZXIuaCIKKyNpbmNs
dWRlICJWOFByb3h5LmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBTdHJpbmcgdG9FdmVudFR5cGUodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IHZhbHVlKQoreworICAgIFN0cmluZyBrZXkgPSB0b1dlYkNvcmVTdHJpbmcodmFs
dWUpOworICAgIEFTU0VSVChrZXkuc3RhcnRzV2l0aCgib24iKSk7CisgICAgcmV0dXJuIGtleS5z
dWJzdHJpbmcoMik7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0QXR0cmlidXRl
KQoreworICAgIElOQ19TVEFUUygiRE9NLkVsZW1lbnQuc2V0QXR0cmlidXRlKCkiKTsKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50Pihhcmdz
LkhvbGRlcigpKTsKKyAgICBTdHJpbmcgbmFtZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsK
KyAgICBTdHJpbmcgdmFsdWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXSk7CisKKyAgICBpZiAo
IWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuYW1lLCB2YWx1ZSkpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGVjKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKKworICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChFbGVtZW50U2V0QXR0cmlidXRlTm9k
ZSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5FbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUoKSIpOwor
ICAgIGlmICghVjhBdHRyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKKyAgICAgICAgdGhyb3dFcnJv
cihUWVBFX01JU01BVENIX0VSUik7CisKKyAgICBBdHRyKiBuZXdBdHRyID0gVjhQcm94eTo6RE9N
V3JhcHBlclRvTm9kZTxBdHRyPihhcmdzWzBdKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gVjhQ
cm94eTo6RE9NV3JhcHBlclRvTm9kZTxFbGVtZW50PihhcmdzLkhvbGRlcigpKTsKKworICAgIGlm
ICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVsZW1lbnQsIG5ld0F0dHItPm5hbWUo
KSwgbmV3QXR0ci0+dmFsdWUoKSkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8QXR0cj4gcmVzdWx0ID0gZWxl
bWVudC0+c2V0QXR0cmlidXRlTm9kZShuZXdBdHRyLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICB0aHJvd0Vycm9yKGVjKTsKKworICAgIHJldHVybiBWOFByb3h5OjpOb2RlVG9WOE9iamVjdChy
ZXN1bHQuZ2V0KCkpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woRWxlbWVudFNldEF0dHJpYnV0
ZU5TKQoreworICAgIElOQ19TVEFUUygiRE9NLkVsZW1lbnQuc2V0QXR0cmlidXRlTlMoKSIpOwor
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEVsZW1lbnQ+
KGFyZ3MuSG9sZGVyKCkpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSB0b1dlYkNvcmVTdHJp
bmdXaXRoTnVsbENoZWNrKGFyZ3NbMF0pOworICAgIFN0cmluZyBxdWFsaWZpZWROYW1lID0gdG9X
ZWJDb3JlU3RyaW5nKGFyZ3NbMV0pOworICAgIFN0cmluZyB2YWx1ZSA9IHRvV2ViQ29yZVN0cmlu
ZyhhcmdzWzJdKTsKKworICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGVs
ZW1lbnQsIHF1YWxpZmllZE5hbWUsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGVsZW1lbnQtPnNldEF0dHJp
YnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFsdWUsIGVjKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHRocm93RXJyb3IoZWMpOworCisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEVsZW1lbnRTZXRBdHRyaWJ1dGVOb2RlTlMpCit7
CisgICAgSU5DX1NUQVRTKCJET00uRWxlbWVudC5zZXRBdHRyaWJ1dGVOb2RlTlMoKSIpOworICAg
IGlmICghVjhBdHRyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOworCisgICAgQXR0ciogbmV3QXR0ciA9IFY4UHJveHk6
OkRPTVdyYXBwZXJUb05vZGU8QXR0cj4oYXJnc1swXSk7CisgICAgRWxlbWVudCogZWxlbWVudCA9
IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8RWxlbWVudD4oYXJncy5Ib2xkZXIoKSk7CisKKyAg
ICBpZiAoIWFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChlbGVtZW50LCBuZXdBdHRyLT5u
YW1lKCksIG5ld0F0dHItPnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVmUHRyPEF0dHI+IHJlc3VsdCA9
IGVsZW1lbnQtPnNldEF0dHJpYnV0ZU5vZGVOUyhuZXdBdHRyLCBlYyk7CisgICAgaWYgKGVjKQor
ICAgICAgICB0aHJvd0Vycm9yKGVjKTsKKworICAgIHJldHVybiBWOFByb3h5OjpOb2RlVG9WOE9i
amVjdChyZXN1bHQuZ2V0KCkpOworfQorCisKK0FDQ0VTU09SX1NFVFRFUihFbGVtZW50RXZlbnRI
YW5kbGVyKQoreworICAgIE5vZGUqIG5vZGUgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPE5v
ZGU+KGluZm8uSG9sZGVyKCkpOworCisgICAgU3RyaW5nIGV2ZW50VHlwZSA9IHRvRXZlbnRUeXBl
KG5hbWUpOworCisgICAgLy8gU2V0IGhhbmRsZXIgaWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24u
ICBPdGhlcndpc2UsIGNsZWFyIHRoZQorICAgIC8vIGV2ZW50IGhhbmRsZXIuCisgICAgaWYgKHZh
bHVlLT5Jc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5Ojpy
ZXRyaWV2ZShub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICAgICAgLy8gdGhlIGRvY3Vt
ZW50IG1pZ2h0IGJlIGNyZWF0ZWQgdXNpbmcgY3JlYXRlRG9jdW1lbnQsCisgICAgICAgIC8vIHdo
aWNoIGRvZXMgbm90IGhhdmUgYSBmcmFtZSwgdXNlIHRoZSBhY3RpdmUgZnJhbWUKKyAgICAgICAg
aWYgKCFwcm94eSkKKyAgICAgICAgICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoVjhQcm94
eTo6cmV0cmlldmVBY3RpdmVGcmFtZSgpKTsKKyAgICAgICAgaWYgKCFwcm94eSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
ID0gcHJveHktPkZpbmRPckNyZWF0ZVY4RXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpCisgICAg
ICAgICAgICBub2RlLT5zZXRJbmxpbmVFdmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUsIGxp
c3RlbmVyKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbm9kZS0+cmVtb3ZlSW5saW5lRXZlbnRMaXN0
ZW5lckZvclR5cGUoZXZlbnRUeXBlKTsKK30KKworCitBQ0NFU1NPUl9HRVRURVIoRWxlbWVudEV2
ZW50SGFuZGxlcikKK3sKKyAgICBOb2RlKiBub2RlID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTm9k
ZTxOb2RlPihpbmZvLkhvbGRlcigpKTsKKworICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0g
bm9kZS0+aW5saW5lRXZlbnRMaXN0ZW5lckZvclR5cGUodG9FdmVudFR5cGUobmFtZSkpOworICAg
IHJldHVybiBWOFByb3h5OjpFdmVudExpc3RlbmVyVG9WOE9iamVjdChsaXN0ZW5lcik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJmYzRjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50Lmgi
CisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQUNDRVNTT1Jf
U0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRTcmMpCit7CisgICAgSFRNTEZyYW1lRWxlbWVudCogZnJh
bWUgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxGcmFtZUVsZW1lbnQ+KGluZm8uSG9s
ZGVyKCkpOworICAgIFN0cmluZyBzcmNWYWx1ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hl
Y2sodmFsdWUpOworCisgICAgaWYgKCFhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVy
bChmcmFtZSwgc3JjVmFsdWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+c2V0U3Jj
KHNyY1ZhbHVlKTsKK30KKworQUNDRVNTT1JfU0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRMb2NhdGlv
bikKK3sKKyAgICBIVE1MRnJhbWVFbGVtZW50KiBmcmFtZSA9IFY4UHJveHk6OkRPTVdyYXBwZXJU
b05vZGU8SFRNTEZyYW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgU3RyaW5nIGxvY2F0
aW9uVmFsdWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsKKworICAgIGlm
ICghYWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoZnJhbWUsIGxvY2F0aW9uVmFs
dWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+c2V0TG9jYXRpb24obG9jYXRpb25W
YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSUZyYW1lRWxlbWVudEN1c3RvbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczOWE0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElGcmFtZUVsZW1lbnRDdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1M
SUZyYW1lRWxlbWVudC5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhD
dXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FDQ0VTU09SX1NFVFRFUihIVE1MSUZyYW1lRWxlbWVudFNyYykKK3sKKyAgICBIVE1M
SUZyYW1lRWxlbWVudCogaWZyYW1lID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTm9kZTxIVE1MSUZy
YW1lRWxlbWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgU3RyaW5nIHYgPSB2YWx1ZVRvU3RyaW5n
V2l0aE51bGxDaGVjayh2YWx1ZSk7CisKKyAgICBpZiAoIWFsbG93U2V0dGluZ0ZyYW1lU3JjVG9K
YXZhc2NyaXB0VXJsKGlmcmFtZSwgdikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmcmFtZS0+
c2V0U3JjKHYpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="13804"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>