<?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>23901</bug_id>
          
          <creation_ts>2009-02-11 13:06:17 -0800</creation_ts>
          <short_desc>Add HTML collections V8 custom bindings</short_desc>
          <delta_ts>2009-02-11 14:37:41 -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>109350</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-11 13:06:17 -0800</bug_when>
    <thetext>... and refactor V8Proxy::ThrowError out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109351</commentid>
    <comment_count>1</comment_count>
      <attachid>27569</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-11 13:08:08 -0800</bug_when>
    <thetext>Created attachment 27569
Add HTML options/collections V8 custom bindings, v1

 WebCore/ChangeLog                                  |   32 +++++
 .../bindings/v8/custom/V8HTMLCollectionCustom.cpp  |  140 ++++++++++++++++++++
 .../bindings/v8/custom/V8HTMLFormElementCustom.cpp |   70 ++++++++++
 .../v8/custom/V8HTMLInputElementCustom.cpp         |   24 ++--
 .../v8/custom/V8HTMLOptionsCollectionCustom.cpp    |   46 +++++++
 .../v8/custom/V8HTMLSelectElementCustom.cpp        |   63 +++++++++
 .../bindings/v8/custom/V8HTMLSelectElementCustom.h |   45 +++++++
 .../bindings/v8/custom/V8NamedNodesCollection.cpp  |   55 ++++++++
 .../bindings/v8/custom/V8NamedNodesCollection.h    |   55 ++++++++
 9 files changed, 516 insertions(+), 14 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109368</commentid>
    <comment_count>2</comment_count>
      <attachid>27569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-11 14:03:56 -0800</bug_when>
    <thetext>Comment on attachment 27569
Add HTML options/collections V8 custom bindings, v1

Upstream doesn&apos;t actually have the throwError function yet.  But this looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109373</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-02-11 14:37:41 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/40873.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27569</attachid>
            <date>2009-02-11 13:08:08 -0800</date>
            <delta_ts>2009-02-11 14:03:56 -0800</delta_ts>
            <desc>Add HTML options/collections V8 custom bindings, v1</desc>
            <filename>Add-HTML-options-collections-V8-custom-bindings-v1.patch</filename>
            <type>text/plain</type>
            <size>25334</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">N2M3MDE4NTNmMDY1Y2M4YjgyYjE5ZDE1YTMzNzkwMmM5NzI4MzBmMQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNzM2YzhlLi5mMzkwYWY5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM1IEBACisyMDA5LTAyLTExICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTAxCisgICAg
ICAgIEFkZCBIVE1MIG9wdGlvbnMvY29sbGVjdGlvbnMgVjggY3VzdG9tIGJpbmRpbmdzLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpOQU1FRF9QUk9QRVJUWV9HRVRURVIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5BTUVEX1BST1BFUlRZX0dFVFRFUik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Q0NFU1NPUl9HRVRURVIpOgorICAgICAgICAoV2ViQ29yZTo6QUNDRVNTT1JfU0VUVEVSKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9T
RVRURVIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaDogQWRkZWQuCisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4TmFtZWROb2Rlc0NvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6VjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6aXRlbVdpdGhOYW1lKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OlY4TmFtZWROb2Rlc0NvbGxl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6bGVuZ3Ro
KToKKwogMjAwOS0wMi0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YTNiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsx
LDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4UHJveHku
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGdldE5hbWVkSXRlbXMoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIFN0cmluZyBuYW1lKQor
eworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGNvbGxlY3Rpb24t
Pm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAoIW5hbWVkSXRlbXMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisKKyAgICBpZiAo
bmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6Ok5vZGVUb1Y4
T2JqZWN0KG5hbWVkSXRlbXMuYXQoMCkuZ2V0KCkpOworCisgICAgTm9kZUxpc3QqIGxpc3QgPSBu
ZXcgVjhOYW1lZE5vZGVzQ29sbGVjdGlvbihuYW1lZEl0ZW1zKTsKKyAgICByZXR1cm4gVjhQcm94
eTo6VG9WOE9iamVjdChWOENsYXNzSW5kZXg6Ok5PREVMSVNULCBsaXN0KTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
LCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndW1lbnQpCit7CisgICAgdjg6OkxvY2FsPHY4OjpV
aW50MzI+IGluZGV4ID0gYXJndW1lbnQtPlRvQXJyYXlJbmRleCgpOworICAgIGlmIChpbmRleC5J
c0VtcHR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5h
bWVkSXRlbXMoY29sbGVjdGlvbiwgdG9XZWJDb3JlU3RyaW5nKGFyZ3VtZW50LT5Ub1N0cmluZygp
KSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
UmVmUHRyPE5vZGU+IHJlc3VsdCA9IGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgtPlVpbnQzMlZhbHVl
KCkpOworICAgIHJldHVybiBWOFByb3h5OjpOb2RlVG9WOE9iamVjdChyZXN1bHQuZ2V0KCkpOwor
fQorCitOQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTENvbGxlY3Rpb24pCit7CisgICAgSU5DX1NU
QVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOworICAgIC8vIFNl
YXJjaCB0aGUgcHJvdG90eXBlIGNoYWluIGZpcnN0LgorICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVD
aGFpbihuYW1lKTsKKworICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dmFsdWU7CisKKyAgICAvLyBTZWFyY2ggbG9jYWwgY2FsbGJhY2sgcHJvcGVydGllcyBuZXh0IHRv
IGZpbmQgSURMIGRlZmluZWQKKyAgICAvLyBwcm9wZXJ0aWVzLgorICAgIGlmIChpbmZvLkhvbGRl
cigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQorICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisKKyAgICAvLyBGaW5hbGx5LCBzZWFyY2ggdGhlIERP
TSBzdHJ1Y3R1cmUuCisgICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZl
T2JqZWN0PEhUTUxDb2xsZWN0aW9uPihWOENsYXNzSW5kZXg6OkhUTUxDT0xMRUNUSU9OLCBpbmZv
LkhvbGRlcigpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZVN0cmlu
ZyhuYW1lKSk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChIVE1MQ29sbGVjdGlvbkl0ZW0pCit7
CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uaXRlbSgpIik7CisgICAgSFRNTENv
bGxlY3Rpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhUTUxDb2xsZWN0aW9uPihW
OENsYXNzSW5kZXg6OkhUTUxDT0xMRUNUSU9OLCBhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
Z2V0SXRlbShpbXAsIGFyZ3NbMF0pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woSFRNTENvbGxl
Y3Rpb25OYW1lZEl0ZW0pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24ubmFt
ZWRJdGVtKCkiKTsKKyAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVP
YmplY3Q8SFRNTENvbGxlY3Rpb24+KFY4Q2xhc3NJbmRleDo6SFRNTENPTExFQ1RJT04sIGFyZ3Mu
SG9sZGVyKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pKTsKKworICAgIGlmIChyZXN1bHQuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKEhUTUxDb2xsZWN0aW9uQ2FsbEFzRnVuY3Rp
b24pCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uY2FsbEFzRnVuY3Rpb24o
KSIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKworICAgIEhUTUxDb2xsZWN0aW9uKiBpbXAgPSBWOFByb3h5OjpUb05hdGl2ZU9i
amVjdDxIVE1MQ29sbGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MQ09MTEVDVElPTiwgYXJncy5I
b2xkZXIoKSk7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxKQorICAgICAgICByZXR1cm4g
Z2V0SXRlbShpbXAsIGFyZ3NbMF0pOworCisgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWNvbmQgYXJn
dW1lbnQgaXQgaXMgdGhlIGluZGV4IG9mIHRoZSBpdGVtIHdlIHdhbnQuCisgICAgU3RyaW5nIG5h
bWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CisgICAgdjg6OkxvY2FsPHY4OjpVaW50MzI+
IGluZGV4ID0gYXJnc1sxXS0+VG9BcnJheUluZGV4KCk7CisgICAgaWYgKGluZGV4LklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIHVuc2lnbmVkIGN1cnJl
bnQgPSBpbmRleC0+VWludDMyVmFsdWUoKTsKKyAgICBOb2RlKiBub2RlID0gaW1wLT5uYW1lZEl0
ZW0obmFtZSk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50KQorICAg
ICAgICAgICAgcmV0dXJuIFY4UHJveHk6Ok5vZGVUb1Y4T2JqZWN0KG5vZGUpOworCisgICAgICAg
IG5vZGUgPSBpbXAtPm5leHROYW1lZEl0ZW0obmFtZSk7CisgICAgICAgIGN1cnJlbnQtLTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0
YmJjMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5n
LmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhOYW1lZE5vZGVz
Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitOQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTEZvcm1FbGVtZW50KQoreworICAgIElOQ19T
VEFUUygiRE9NLkhUTUxGb3JtRWxlbWVudC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisgICAgSFRN
TEZvcm1FbGVtZW50KiBpbXAgPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhUTUxGb3JtRWxl
bWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgU3RyaW5nIHYgPSB0b1dlYkNvcmVTdHJpbmcobmFt
ZSk7CisKKyAgICAvLyBDYWxsIGdldE5hbWVkRWxlbWVudHMgdHdpY2UsIGZpcnN0IHRpbWUgY2hl
Y2sgaWYgaXQgaGFzIGEgdmFsdWUKKyAgICAvLyBhbmQgbGV0IEhUTUxGb3JtRWxlbWVudCB1cGRh
dGUgaXRzIGNhY2hlLgorICAgIC8vIFNlZSBpc3N1ZTogODY3NDA0CisgICAgeworICAgICAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4gZWxlbWVudHM7CisgICAgICAgIGltcC0+Z2V0TmFtZWRFbGVt
ZW50cyh2LCBlbGVtZW50cyk7CisgICAgICAgIGlmIChlbGVtZW50cy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgfQorCisgICAgLy8g
U2Vjb25kIGNhbGwgbWF5IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cyBmcm9tIHRoZSBmaXJzdCBj
YWxsLAorICAgIC8vIGJ1dCBpZiB0aGUgZmlyc3QgdGhlIHNpemUgY2Fubm90IGJlIHplcm8uCisg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGVsZW1lbnRzOworICAgIGltcC0+Z2V0TmFtZWRFbGVt
ZW50cyh2LCBlbGVtZW50cyk7CisgICAgQVNTRVJUKCFlbGVtZW50cy5pc0VtcHR5KCkpOworCisg
ICAgaWYgKGVsZW1lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gVjhQcm94eTo6Tm9k
ZVRvVjhPYmplY3QoZWxlbWVudHMuYXQoMCkuZ2V0KCkpOworCisgICAgTm9kZUxpc3QqIGNvbGxl
Y3Rpb24gPSBuZXcgVjhOYW1lZE5vZGVzQ29sbGVjdGlvbihlbGVtZW50cyk7CisgICAgcmV0dXJu
IFY4UHJveHk6OlRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpOT0RFTElTVCwgY29sbGVjdGlvbik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDFmMmM2ZjMu
LjYyODYzNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElu
cHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDMsMTAgKzQzLDggQEAgQUNDRVNTT1JfR0VU
VEVSKEhUTUxJbnB1dEVsZW1lbnRTZWxlY3Rpb25TdGFydCkKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW1w
ID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTm9kZTxIVE1MSW5wdXRFbGVtZW50Pihob2xkZXIpOwog
Ci0gICAgaWYgKCFpbXAtPmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICBWOFByb3h5OjpU
aHJvd0Vycm9yKFY4UHJveHk6OlRZUEVfRVJST1IsICJBY2Nlc3Npbmcgc2VsZWN0aW9uU3RhcnQg
b24gYW4gaW5wdXQgZWxlbWVudCB0aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIpOwotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIH0KKyAgICBpZiAoIWltcC0+Y2FuSGF2
ZVNlbGVjdGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiQWNjZXNzaW5nIHNlbGVj
dGlvblN0YXJ0IG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlv
bi4iKTsKIAogICAgIGludCB2ID0gaW1wLT5zZWxlY3Rpb25TdGFydCgpOwogICAgIHJldHVybiB2
ODo6SW50ZWdlcjo6TmV3KHYpOwpAQCAtNTksNyArNTcsNyBAQCBBQ0NFU1NPUl9TRVRURVIoSFRN
TElucHV0RWxlbWVudFNlbGVjdGlvblN0YXJ0KQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9
IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTElucHV0RWxlbWVudD4oaG9sZGVyKTsKIAog
ICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgVjhQcm94eTo6VGhy
b3dFcnJvcihWOFByb3h5OjpUWVBFX0VSUk9SLCAiQWNjZXNzaW5nIHNlbGVjdGlvblN0YXJ0IG9u
IGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKKyAgICAg
ICAgdGhyb3dFcnJvcigiQWNjZXNzaW5nIHNlbGVjdGlvblN0YXJ0IG9uIGFuIGlucHV0IGVsZW1l
bnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpbXAtPnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLT5JbnQzMlZhbHVlKCkpOwpAQCAt
NzEsMTAgKzY5LDggQEAgQUNDRVNTT1JfR0VUVEVSKEhUTUxJbnB1dEVsZW1lbnRTZWxlY3Rpb25F
bmQpCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwog
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRN
TElucHV0RWxlbWVudD4oaG9sZGVyKTsKIAotICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9u
KCkpIHsKLSAgICAgICAgVjhQcm94eTo6VGhyb3dFcnJvcihWOFByb3h5OjpUWVBFX0VSUk9SLCAi
QWNjZXNzaW5nIHNlbGVjdGlvbkVuZCBvbiBhbiBpbnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhh
dmUgYSBzZWxlY3Rpb24uIik7Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAg
fQorICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKCJBY2Nlc3Npbmcgc2VsZWN0aW9uRW5kIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBj
YW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4iKTsKIAogICAgIGludCB2ID0gaW1wLT5zZWxlY3Rpb25F
bmQoKTsKICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyh2KTsKQEAgLTg3LDkgKzgzLDEwIEBA
IEFDQ0VTU09SX1NFVFRFUihIVE1MSW5wdXRFbGVtZW50U2VsZWN0aW9uRW5kKQogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGltcCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTElucHV0RWxl
bWVudD4oaG9sZGVyKTsKIAogICAgIGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAg
ICAgICAgVjhQcm94eTo6VGhyb3dFcnJvcihWOFByb3h5OjpUWVBFX0VSUk9SLCAiQWNjZXNzaW5n
IHNlbGVjdGlvbkVuZCBvbiBhbiBpbnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhhdmUgYSBzZWxl
Y3Rpb24uIik7CisgICAgICAgIHRocm93RXJyb3IoIkFjY2Vzc2luZyBzZWxlY3Rpb25FbmQgb24g
YW4gaW5wdXQgZWxlbWVudCB0aGF0IGNhbm5vdCBoYXZlIGEgc2VsZWN0aW9uLiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCiAgICAgaW1wLT5zZXRTZWxlY3Rpb25FbmQodmFsdWUtPkludDMy
VmFsdWUoKSk7CiB9CiAKQEAgLTk5LDEwICs5Niw5IEBAIENBTExCQUNLX0ZVTkNfREVDTChIVE1M
SW5wdXRFbGVtZW50U2V0U2VsZWN0aW9uUmFuZ2UpCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9IFY4
UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRNTElucHV0RWxlbWVudD4oaG9sZGVyKTsKIAotICAg
IGlmICghaW1wLT5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgVjhQcm94eTo6VGhyb3dF
cnJvcihWOFByb3h5OjpUWVBFX0VSUk9SLCAiQ2FsbGluZyBzZXRTZWxlY3Rpb25SYW5nZSBvbiBh
biBpbnB1dCBlbGVtZW50IHRoYXQgY2Fubm90IGhhdmUgYSBzZWxlY3Rpb24uIik7Ci0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAgfQorICAgIGlmICghaW1wLT5jYW5IYXZlU2Vs
ZWN0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJDYWxsaW5nIHNldFNlbGVjdGlv
blJhbmdlIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3QgaGF2ZSBhIHNlbGVjdGlvbi4i
KTsKKwogICAgIGludCBzdGFydCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsKICAgICBpbnQgZW5k
ID0gYXJnc1sxXS0+SW50MzJWYWx1ZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXgg
NjVkNWU4Zi4uYzhmN2Y2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzEsMTQgKzMx
LDU5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmgiCiAKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxT
ZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCiAjaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhI
VE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20u
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ0FMTEJB
Q0tfRlVOQ19ERUNMKEhUTUxPcHRpb25zQ29sbGVjdGlvblJlbW92ZSkKK3sKKyAgICBJTkNfU1RB
VFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ucmVtb3ZlKCkiKTsKKyAgICBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhUTUxPcHRpb25zQ29s
bGVjdGlvbj4oVjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04sIGFyZ3MuSG9sZGVy
KCkpOworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBiYXNlID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVj
dEVsZW1lbnQqPihpbXAtPmJhc2UoKSk7CisgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQoYmFzZSwg
YXJncyk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChIVE1MT3B0aW9uc0NvbGxlY3Rpb25BZGQp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmFkZCgpIik7Cisg
ICAgaWYgKCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkgeworICAg
ICAgICBWOFByb3h5OjpTZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICBIVE1MT3B0aW9uc0NvbGxlY3Rp
b24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbj4o
VjhDbGFzc0luZGV4OjpIVE1MT1BUSU9OU0NPTExFQ1RJT04sIGFyZ3MuSG9sZGVyKCkpOworICAg
IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSBWOFByb3h5OjpET01XcmFwcGVyVG9Ob2RlPEhU
TUxPcHRpb25FbGVtZW50PihhcmdzWzBdKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgaW1wLT5hZGQob3B0aW9uLCBlYyk7
CisgICAgZWxzZSB7CisgICAgICAgIGJvb2wgb2s7CisgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlf
Y2F0Y2g7CisgICAgICAgIGludCBpbmRleCA9IFRvSW50MzIoYXJnc1sxXSwgb2spOworCisgICAg
ICAgIGlmICh0cnlfY2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworCisgICAgICAgIGlmICghb2spCisgICAgICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbXAtPmFkZChvcHRpb24sIGlu
ZGV4LCBlYyk7CisgICAgfQorCisgICAgaWYgKGVjICE9IDApCisgICAgICAgIFY4UHJveHk6OlNl
dERPTUV4Y2VwdGlvbihlYyk7CisKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiBB
Q0NFU1NPUl9HRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uTGVuZ3RoKQogewogICAgIElOQ19T
VEFUUygiRE9NLkhUTUxPcHRpb25zQ29sbGVjdGlvbi5sZW5ndGguX2dldCIpOwpAQCAtNjQsNiAr
MTA5LDcgQEAgQUNDRVNTT1JfU0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCkKICAg
ICB9CiAgICAgaWYgKCFlYykKICAgICAgICAgaW1wLT5zZXRMZW5ndGgodmFsdWUtPlVpbnQzMlZh
bHVlKCksIGVjKTsKKwogICAgIFY4UHJveHk6OlNldERPTUV4Y2VwdGlvbihlYyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRD
dXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdmNzcyNgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVj
dEVsZW1lbnRDdXN0b20uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oIgorCisjaW5jbHVkZSAiSFRN
TFNlbGVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorCisjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhIVE1MT3B0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitDQUxMQkFDS19GVU5DX0RFQ0woSFRNTFNlbGVjdEVsZW1lbnRSZW1v
dmUpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTFNlbGVjdEVsZW1lbnQucmVtb3ZlIik7Cisg
ICAgSFRNTFNlbGVjdEVsZW1lbnQqIGltcCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8SFRN
TFNlbGVjdEVsZW1lbnQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIHJldHVybiByZW1vdmVFbGVtZW50
KGltcCwgYXJncyk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1vdmVFbGVtZW50KEhU
TUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIAoreworICAg
IGlmIChWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdKSkgeworICAgICAg
ICBIVE1MT3B0aW9uRWxlbWVudCogZWxlbWVudCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05vZGU8
SFRNTE9wdGlvbkVsZW1lbnQ+KGFyZ3NbMF0pOworICAgICAgICBpbXAtPnJlbW92ZShlbGVtZW50
LT5pbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisKKyAg
ICBpbXAtPnJlbW92ZShUb0ludDMyKGFyZ3NbMF0pKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1NmVkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaApAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5IEdvb2dsZSBJbmMuCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbV9o
CisjZGVmaW5lIFY4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b21faAorCisjaW5jbHVkZSA8djguaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgSFRNTFNlbGVjdEVsZW1lbnQ7CisK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRWxlbWVudChIVE1MU2VsZWN0RWxlbWVu
dCosIGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbV9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjM0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcApAQCAtMCww
ICsxLDU1IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMDgsIEdvb2dsZSBJbmMuCisvLyBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1l
dDoKKy8vIAorLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
Ly8gCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisvLyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKy8v
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhOYW1lZE5vZGVzQ29sbGVj
dGlvbi5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIk5hbWVkQXR0ck1hcC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05vZGUqIFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246
Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9ub2Rlcy5z
aXplKCkpCisgICAgICAgIHJldHVybiBtX25vZGVzW2luZGV4XS5nZXQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworTm9kZSogVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6aXRlbVdpdGhOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbm9kZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZXNbaV0u
Z2V0KCk7CisgICAgICAgIGlmIChub2RlLT5oYXNBdHRyaWJ1dGVzKCkgJiYgbm9kZS0+YXR0cmli
dXRlcygpLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVzQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2I3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisqIAorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqIAor
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisq
IGRpc3RyaWJ1dGlvbi4KKyogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKiAKKyogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBWOE5hbWVkTm9k
ZXNDb2xsZWN0aW9uX2gKKyNkZWZpbmUgVjhOYW1lZE5vZGVzQ29sbGVjdGlvbl9oCisKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBWOE5hbWVkTm9kZXNDb2xsZWN0aW9uIDogcHVibGljIE5vZGVMaXN0IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGV4cGxpY2l0IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb24oY29uc3QgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+JiBub2RlcykKKyAgICAgICAgICAgIDogbV9ub2Rlcyhub2Rlcykg
eyB9CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9u
b2Rlcy5zaXplKCk7IH0KKyAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JikgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
bV9ub2RlczsKKyAgICB9OworCit9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8v
IFY4TmFtZWROb2Rlc0NvbGxlY3Rpb25faAo=
</data>
<flag name="review"
          id="13361"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>