<?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>158668</bug_id>
          
          <creation_ts>2016-06-11 17:08:25 -0700</creation_ts>
          <short_desc>Add a mechanism for collecting LLINT stats.</short_desc>
          <delta_ts>2016-06-18 00:03:56 -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>JavaScriptCore</component>
          <version>WebKit Local 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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201666</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-11 17:08:25 -0700</bug_when>
    <thetext>We currently have no way to count which bytecodes are most popular in the LLINT (except by using the sampling profiler).  This patch will add a mechanism for collecting the stats on LLINT opcode execution counts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201667</commentid>
    <comment_count>1</comment_count>
      <attachid>281115</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-11 17:37:47 -0700</bug_when>
    <thetext>Created attachment 281115
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201844</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-13 08:52:44 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r201990: &lt;http://trac.webkit.org/r201990&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203558</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-17 23:06:41 -0700</bug_when>
    <thetext>It looks like this patch increased our binary size by half a MB. Can we somehow put more stuff inside the compile flag to avoid bloating the binary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203563</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-18 00:03:56 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It looks like this patch increased our binary size by half a MB. Can we
&gt; somehow put more stuff inside the compile flag to avoid bloating the binary?

There must be something wrong with the bot that reported this.  Here are the size numbers for comparison.

Method of measurement:
$ size -m WebKitBuild/Release/JavaScriptCore.framework/JavaScriptCore

Size results on x86_64 release builds:

                                r201989     r201990     diff

Segment __TEXT:                 11223040    11223040
    Section __text:             10680261    10680293    +32
    Section __stubs:            2292        2292
    Section __stub_helper:      3796        3796
    Section __const:            218926      218926
    Section __cstring:          256809      256857      +48
    Section __objc_classname:   217         217
    Section __objc_methname:    4461        4461
    Section __gcc_except_tab:   8440        8440
    Section __objc_methtype:    5685        5685
    Section __unwind_info:      35508       35508
    total                       11216395    11216475    +80
Segment __DATA:                 278528      278528
    Section __nl_symbol_ptr:    16          16
    Section __got:              688         688
    Section __la_symbol_ptr:    3056        3056
    Section __const:            128912      128944      +32
    Section __cfstring:         2368        2368
    Section __objc_classlist:   88          88
    Section __objc_catlist:     0           0
    Section __objc_protolist:   8           8
    Section __objc_imageinfo:   8           8
    Section __objc_const:       6296        6296
    Section __objc_selrefs:     1272        1272
    Section __objc_classrefs:   216         216
    Section __objc_superrefs:   48          48
    Section __objc_ivar:        200         200
    Section __objc_data:        880         880
    Section __data:             117096      117096
    Section __bss:              2833        2833
    Section __common:           11720       11776       +56
    total                       275705      275793      +88
Segment __LINKEDIT:             5095424     5095424
total                           16596992    16596992

The data says that we&apos;re looking at the __TEXT segment increasing by 80 bytes, and the __DATA segment increasing by 88 bytes.  Based on the changes in the patch, these numbers make sense.  I don&apos;t know why the bot thinks there&apos;s a half a MB of difference.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281115</attachid>
            <date>2016-06-11 17:37:47 -0700</date>
            <delta_ts>2016-06-12 15:59:13 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-158668.patch</filename>
            <type>text/plain</type>
            <size>19236</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDE2LTA2LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYSBtZWNoYW5pc20gZm9yIGNvbGxlY3RpbmcgTExJTlQgc3RhdHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHdpbGwgYWRkIGEg
bWVjaGFuaXNtIGZvciBjb2xsZWN0aW5nIHRoZSBzdGF0cyBvbiBMTElOVCBvcGNvZGUKKyAgICAg
ICAgZXhlY3V0aW9uIGNvdW50cy4gIFRoZSBjaGFuZ2VzIG1hZGUgdG8gZW5hYmxlIHRoaXMgYXJl
OgorCisgICAgICAgIDEuIFJlZmFjdG9yZWQgaG93IE9wdGlvbnMgYXZhaWxhYmlsaXR5IHdvcmsg
c28gdGhhdCB3ZSBjYW4gYWRkIGEgbmV3IGNhdGVnb3J5OgorICAgICAgICAgICBDb25maWd1cmFi
bGUgKGluIGFkZGl0aW9uIHRvIHRoZSBwcmUtZXhpc3RpbmcgTm9ybWFsIGFuZCBSZXN0cmljdGVk
CisgICAgICAgICAgIGF2YWlsYWJpbGl0eSkuCisgICAgICAgICAgICAgICBOb3JtYWwgb3B0aW9u
cyAtIGFsd2F5cyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICBSZXN0cmljdGVkIG9wdGlvbnMg
LSBvbmx5IGF2YWlsYWJsZSBvbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgICAgICAgICBDb25maWd1
cmFibGUgb3B0aW9ucyAtIGRlcGVuZHMgb24gI2RlZmluZSBmbGFnIG9wdGlvbnMuCisKKyAgICAg
ICAgICAgVGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5IHNvIHRoYXQ6CisgICAgICAgICAgIGEuIHdl
IHdvbid0IGhhdmUgdG8gcmVidWlsZCB0aGUgd29ybGQgd2hlbiB3ZSB3YW50IHRvIGVuYWJsZSB0
aGF0ICNkZWZpbmUgZmxhZworICAgICAgICAgICAgICB0byBtYWtlIHRoYXQgQ29uZmlndXJhYmxl
IG9wdGlvbiBhdmFpbGFibGUuCisgICAgICAgICAgIGIuIHdoZW4gdGhlICNkZWZpbmUgZmxhZyBp
cyBkaXNhYmxlZCwgdGhlIG9wdGlvbiB3aWxsIGJlIGludmlzaWJsZSB0byB0aGUgdXNlci4KKwor
ICAgICAgICAgICBXaXRoIHRoaXMsIHdlIGFkZCBvdXIgZmlyc3QgY29uZmlndXJhYmxlIG9wdGlv
biwgSlNDX3JlcG9ydExMSW50U3RhdHMsIHdoaWNoCisgICAgICAgICAgIGlzIGRlcGVuZGVudCBv
biB0aGUgRU5BQkxFX0xMSU5UX1NUQVRTIGZsYWcuICBTZWUgbmV4dC4KKworICAgICAgICAyLiBB
ZGRlZCB0aGUgRU5BQkxFX0xMSU5UX1NUQVRTIGZsYWcgaW4gTExJbnRDb21tb24uaC4gIFRvIGVu
YWJsZSBMTElOVCBzdGF0cworICAgICAgICAgICBjb2xsZWN0aW9uLCB3ZSdsbCBuZWVkIHRvIHNl
dCB0aGlzIGZsYWcgdG8gYSBub24temVybyB2YWx1ZSwgYW5kIHJlYnVpbGRpbmcKKyAgICAgICAg
ICAgdGhlIHByb2plY3QuICBCeSBkZXNpZ24sIHRoaXMgd2lsbCBvbmx5IHJlcXVpcmUgYSBtaW5p
bWFsIHNldCBvZiBmaWxlcyB0bworICAgICAgICAgICBiZSByZWJ1aWx0LgorCisgICAgICAgICAg
IEVOQUJMRV9MTElOVF9TVEFUUyBpcyAwIChpLmUuIGRpc2FibGVkKSBieSBkZWZhdWx0LgorCisg
ICAgICAgIDMuIEFkZGVkIGEgc2xvdyBwYXRoIGNhbGxiYWNrIHRvIHRoZSBMTElOVCdzIHRyYWNl
RXhlY3V0aW9uKCkgbWFjcm8sIHRvIGNhbGwKKyAgICAgICAgICAgX2xsaW50X2NvdW50X29wY29k
ZSgpLCB3aGljaCBpbiB0dXJucyBjb3VudHMgdGhlIG9wY29kZS4gIFRoaXMgY2FsbGJhY2sgd2ls
bAorICAgICAgICAgICBvbmx5IGJlIGJ1aWx0IGludG8gdGhlIExMSU5UIGlmIEVOQUJMRV9MTElO
VF9TVEFUUyBpcyBub24temVyby4KKworICAgICAgICA0LiBBZGRlZCBzX29wY29kZVN0YXRzQXJy
YXkgdG8gTExJbnQ6OkRhdGEuICBUaGlzIGlzIHdoZXJlIHRoZSBzdGF0cyBhcmUKKyAgICAgICAg
ICAgcmVjb3JkZWQgYW5kIHN0b3JlZC4KKworICAgICAgICA1LiBBZGRlZCBjYWxscyB0byBMTElu
dDo6RGF0YTo6ZHVtcFN0YXRzKCkgaW4ganNjLmNwcCBhbmQgRHVtcFJlbmRlclRyZWUubW0KKyAg
ICAgICAgICAgdG8gZHVtcCB0aGUgTExJTlQgc3RhdHMgaWYgZW5hYmxlZC4gIElmIGVuYWJsZWQs
IHRoZSBMTElOVCBzdGF0cyB3aWxsIGJlCisgICAgICAgICAgIHNvcnRlZCBhbmQgZHVtcGVkICh2
aWEgZGF0YUxvZykgYmVmb3JlIHRoZSBwcm9ncmFtcyB0ZXJtaW5hdGUuCisKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOgorICAgICAgICAqIGxsaW50L0xM
SW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OmR1bXBTdGF0cyk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRh
Lmg6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVTdGF0cyk6CisgICAgICAgICog
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfY3Jhc2gpOgorICAgICAgICAo
SlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50
U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAg
ICAgICAoSlNDOjpPcHRpb25zOjppc0F2YWlsYWJsZSk6CisgICAgICAgIChKU0M6Om92ZXJyaWRl
T3B0aW9uV2l0aEhldXJpc3RpYyk6CisgICAgICAgIChKU0M6OnNjYWxlSklUUG9saWN5KToKKyAg
ICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6
OnNldE9wdGlvbldpdGhvdXRBbGlhcyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmR1bXBBbGxP
cHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0M6Ok9wdGlvbjo6T3B0aW9uKToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uOjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6T3B0aW9uOjppZCk6
CisKIDIwMTYtMDYtMTEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IE1pbmltaXplIHRoZSBhbW91bnQgb2YgbWVtY3B5IGRvbmUgZm9yIGFsbG9jYXRpbmcgRXJyb3Ig
c3RhY2tzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwMTk3OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3
IEBACiAjaW5jbHVkZSAiSlNQcm94eS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiSlNXQVNNTW9kdWxlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCkBAIC0xOTgzLDYgKzE5ODQsOCBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiAgICAgRVhDRVBUKHJlcyA9IDMpCiAgICAgaWYgKE9wdGlvbnM6Omxv
Z0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZXBvcnRT
dWNjZXNzKCk7CisgICAgaWYgKE9wdGlvbnM6OnJlcG9ydExMSW50U3RhdHMoKSkKKyAgICAgICAg
TExJbnQ6OkRhdGE6OmR1bXBTdGF0cygpOwogCiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGVjb3Jl
X3NodXRkb3duKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjAxOTc4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTU3RhY2suaCIKLSNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2
aXNpb24gMjAxOTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsOSBAQAogI2lmbmRlZiBMTElu
dENvbW1vbl9oCiAjZGVmaW5lIExMSW50Q29tbW9uX2gKIAorLy8gRW5hYmxlcyBMTElOVCBzdGF0
cyBjb2xsZWN0aW9uLgorI2RlZmluZSBFTkFCTEVfTExJTlRfU1RBVFMgMAorCiAvLyBQcmludCBl
dmVyeSBpbnN0cnVjdGlvbiBleGVjdXRlZC4KICNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJ
TkcgMAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAko
cmV2aXNpb24gMjAxOTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEyICsyNSwxNCBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKICNpbmNsdWRlICJCeXRlY29kZUNvbnZl
bnRpb25zLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRl
ICJMTEludENMb29wLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKICNpbmNsdWRlICJNYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCkBAIC00Myw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogCiBJbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVj
dGlvbnMgPSAwOwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251bU9wY29kZUlEc10gPSB7IH07
CitPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0YXRzQXJyYXkgPSBudWxscHRyOwog
CiAjaWYgRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgdm9pZCBsbGludF9lbnRyeSh2b2lkKik7CkBA
IC02Miw2ICs2NSwxMyBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBEYXRhOjpzX2V4Y2Vw
dGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPQogICAgICAgICAgICAgTExJbnQ6OmdldENv
ZGVQdHIobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSk7CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKworI2lmIEVOQUJMRShMTElOVF9TVEFUUykKKyAgICBEYXRhOjpzX29wY29k
ZVN0YXRzQXJyYXkgPSBuZXcgT3Bjb2RlU3RhdHNBcnJheSgpOworICAgIHVuc2lnbmVkIGkgPSAw
OworICAgIGZvciAoYXV0byYgc3RhdHMgOiAqRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5KQorICAg
ICAgICBzdGF0cy5pZCA9IHN0YXRpY19jYXN0PE9wY29kZUlEPihpKyspOworI2VuZGlmCiB9CiAK
ICNpZiBDT01QSUxFUihDTEFORykKQEAgLTIxNyw0ICsyMjcsMjUgQEAgdm9pZCBEYXRhOjpwZXJm
b3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5k
aWYKIAordm9pZCBEYXRhOjpkdW1wU3RhdHMoKQoreworI2lmIEVOQUJMRShMTElOVF9TVEFUUykK
KyAgICBpZiAoIU9wdGlvbnM6OnJlcG9ydExMSW50U3RhdHMoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBzdGF0c0NvcHkgPSAqc19vcGNvZGVTdGF0c0FycmF5OworICAgIHN0ZDo6c29y
dChzdGF0c0NvcHkuYmVnaW4oKSwgc3RhdHNDb3B5LmVuZCgpLCBbXSAoT3Bjb2RlU3RhdHMmIGEs
IE9wY29kZVN0YXRzJiBiKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGEuY291bnQgPiBiLmNv
dW50OworICAgIH0pOworICAgIAorICAgIGRhdGFMb2coIk9wY29kZSBzdGF0czpcbiIpOworICAg
IHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoYXV0byYgc3RhdHMgOiBzdGF0c0NvcHkpIHsKKyAg
ICAgICAgaWYgKHN0YXRzLmNvdW50KQorICAgICAgICAgICAgZGF0YUxvZygiICAgWyIsIGkrKywg
Il06IGZhc3Q6Iiwgc3RhdHMuY291bnQsICIgIiwgb3Bjb2RlTmFtZXNbc3RhdHMuaWRdLCAiXG4i
KTsKKyAgICB9CisjZW5kaWYKK30KKworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDIwMTk3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPGFycmF5PgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NDIsMTMgKzQzLDI0IEBAIHR5cGVkZWYgdm9pZCAoKkxMSW50Q29kZSkoKTsKIAogbmFtZXNwYWNl
IExMSW50IHsKIAorc3RydWN0IE9wY29kZVN0YXRzIHsKKyAgICBPcGNvZGVJRCBpZDsKKyAgICBz
aXplX3QgY291bnQgeyAwIH07Cit9OwordHlwZWRlZiBzdGQ6OmFycmF5PE9wY29kZVN0YXRzLCBu
dW1PcGNvZGVJRHM+IE9wY29kZVN0YXRzQXJyYXk7CisKIGNsYXNzIERhdGEgewogcHVibGljOgor
CiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybUFzc2VydGlvbnMoVk0mKTsKKyAgICBzdGF0aWMgT3Bj
b2RlU3RhdHMmIG9wY29kZVN0YXRzKE9wY29kZUlEIGlkKSB7IHJldHVybiAoKnNfb3Bjb2RlU3Rh
dHNBcnJheSlbaWRdOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1w
U3RhdHMoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zOwogICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURz
XTsKKyAgICBzdGF0aWMgT3Bjb2RlU3RhdHNBcnJheSogc19vcGNvZGVTdGF0c0FycmF5OwogCiAg
ICAgZnJpZW5kIHZvaWQgaW5pdGlhbGl6ZSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAyMDE5
NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsMTIgQEAKICNkZWZpbmUgT0ZGTElORV9B
U01fQklHX0VORElBTiAwCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMTElOVF9TVEFUUykKKyNkZWZp
bmUgT0ZGTElORV9BU01fQ09MTEVDVF9TVEFUUyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9DT0xMRUNUX1NUQVRTIDAKKyNlbmRpZgorCiAjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcK
ICNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjAxOTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgor
I2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgogI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rv
ci5oIgpAQCAtMTYyMyw0ICsxNjI0LDE1IEBAIGV4dGVybiAiQyIgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCB2b2lkIGwKICAgICBDUkFTSCgpOwogfQogCisjaWYgRU5BQkxFKExMSU5UX1NUQVRTKQor
CitMTElOVF9TTE9XX1BBVEhfREVDTChjb3VudF9vcGNvZGUpCit7CisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBleGVjLT52bSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSk7CisgICAgRGF0YTo6b3Bjb2RlU3RhdHMob3Bjb2RlSUQpLmNvdW50Kys7CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShMTElOVF9TVEFUUykKKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjAxOTc4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHRyYWNlX2FyaXR5QwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0wodHJhY2UpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKGNvdW50X29w
Y29kZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woZW50cnlfb3NyKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDIwMTk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNzI2LDYgKzcy
Niw5IEBAIG1hY3JvIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogZW5kCiAKIG1hY3Jv
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBDT0xMRUNUX1NUQVRTCisgICAgICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfY291bnRfb3Bjb2RlKQorICAgIGVuZAogICAgIGlmIEVYRUNVVElPTl9UUkFD
SU5HCiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdHJhY2UpCiAgICAgZW5kCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMjAxOTc4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJP
cHRpb25zLmgiCiAKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUgPGFsZ29yaXRo
bT4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtMTIzLDE2ICsxMjQs
MzEgQEAgc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBHQwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwg
T3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJpbGl0eSkKK3sKKyAgICBpZiAoYXZhaWxhYmls
aXR5ID09IEF2YWlsYWJpbGl0eTo6UmVzdHJpY3RlZCkKKyAgICAgICAgcmV0dXJuIGFsbG93UmVz
dHJpY3RlZE9wdGlvbnMoKTsKKyAgICBBU1NFUlQoYXZhaWxhYmlsaXR5ID09IEF2YWlsYWJpbGl0
eTo6Q29uZmlndXJhYmxlKTsKKyAgICAKKyAgICBVTlVTRURfUEFSQU0oaWQpOworI2lmIEVOQUJM
RShMTElOVF9TVEFUUykKKyAgICBpZiAoaWQgPT0gcmVwb3J0TExJbnRTdGF0c0lEKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWJvb2wgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKFQmIHZhcmlhYmxl
LCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5KQor
Ym9vbCBvdmVycmlkZU9wdGlvbldpdGhIZXVyaXN0aWMoVCYgdmFyaWFibGUsIE9wdGlvbnM6OklE
IGlkLCBjb25zdCBjaGFyKiBuYW1lLCBPcHRpb25zOjpBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5
KQogewotICAgIGJvb2wgaXNBdmFpbGFibGUgPSAoYXZhaWxhYmlsaXR5ICE9IE9wdGlvbnM6OkF2
YWlsYWJpbGl0eTo6UmVzdHJpY3RlZCkgfHwgYWxsb3dSZXN0cmljdGVkT3B0aW9ucygpOworICAg
IGJvb2wgYXZhaWxhYmxlID0gKGF2YWlsYWJpbGl0eSA9PSBPcHRpb25zOjpBdmFpbGFiaWxpdHk6
Ok5vcm1hbCkKKyAgICAgICAgfHwgT3B0aW9uczo6aXNBdmFpbGFibGUoaWQsIGF2YWlsYWJpbGl0
eSk7CiAKICAgICBjb25zdCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1lKTsKICAgICBp
ZiAoIXN0cmluZ1ZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGlz
QXZhaWxhYmxlICYmIHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCisgICAgaWYgKGF2YWls
YWJsZSAmJiBwYXJzZShzdHJpbmdWYWx1ZSwgdmFyaWFibGUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKICAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBwYXJzZSAl
cz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwpAQCAtMjU4LDcgKzI3NCw3IEBAIHN0YXRpYyB2
b2lkIHNjYWxlSklUUG9saWN5KCkKICAgICAgICAgc2NhbGVGYWN0b3IgPSAwLjA7CiAKICAgICBz
dHJ1Y3QgT3B0aW9uVG9TY2FsZSB7Ci0gICAgICAgIE9wdGlvbnM6Ok9wdGlvbklEIGlkOworICAg
ICAgICBPcHRpb25zOjpJRCBpZDsKICAgICAgICAgaW50MzJfdCBtaW5WYWw7CiAgICAgfTsKIApA
QCAtNDA2LDcgKzQyMiw3IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAg
ICAgICAgQ1JBU0goKTsKICNlbHNlIC8vIFBMQVRGT1JNKENPQ09BKQogI2RlZmluZSBGT1JfRUFD
SF9PUFRJT04odHlwZV8sIG5hbWVfLCBkZWZhdWx0VmFsdWVfLCBhdmFpbGFiaWxpdHlfLCBkZXNj
cmlwdGlvbl8pIFwKLSAgICAgICAgICAgIG92ZXJyaWRlT3B0aW9uV2l0aEhldXJpc3RpYyhuYW1l
XygpLCAiSlNDXyIgI25hbWVfLCBBdmFpbGFiaWxpdHk6OmF2YWlsYWJpbGl0eV8pOworICAgICAg
ICAgICAgb3ZlcnJpZGVPcHRpb25XaXRoSGV1cmlzdGljKG5hbWVfKCksIG5hbWVfIyNJRCwgIkpT
Q18iICNuYW1lXywgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKTsKICAgICAgICAgICAgIEpT
Q19PUFRJT05TKEZPUl9FQUNIX09QVElPTikKICN1bmRlZiBGT1JfRUFDSF9PUFRJT04KICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKQEAgLTU3Myw3ICs1ODksOCBAQCBib29sIE9wdGlvbnM6OnNl
dE9wdGlvbldpdGhvdXRBbGlhcyhjb25zCiAjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywg
bmFtZV8sIGRlZmF1bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAg
IGlmIChzdHJsZW4oI25hbWVfKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGVxdWFsU3RyIC0gYXJn
KSAgICAgIFwKICAgICAgICAgJiYgIXN0cm5jbXAoYXJnLCAjbmFtZV8sIGVxdWFsU3RyIC0gYXJn
KSkgeyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChBdmFpbGFiaWxpdHk6OmF2YWlsYWJp
bGl0eV8gPT0gQXZhaWxhYmlsaXR5OjpSZXN0cmljdGVkICYmICFhbGxvd1Jlc3RyaWN0ZWRPcHRp
b25zKCkpIFwKKyAgICAgICAgaWYgKEF2YWlsYWJpbGl0eTo6YXZhaWxhYmlsaXR5XyAhPSBBdmFp
bGFiaWxpdHk6Ok5vcm1hbCAgICAgXAorICAgICAgICAgICAgJiYgIWlzQXZhaWxhYmxlKG5hbWVf
IyNJRCwgQXZhaWxhYmlsaXR5OjphdmFpbGFiaWxpdHlfKSkgXAogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgdHlwZV8gdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgIHZhbHVlID0gKGRlZmF1bHRWYWx1ZV8pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApAQCAtNjY3LDcgKzY4NCw3IEBAIHZvaWQgT3B0aW9uczo6ZHVt
cEFsbE9wdGlvbnMoU3RyaW5nQnVpbGQKICAgICBmb3IgKGludCBpZCA9IDA7IGlkIDwgbnVtYmVy
T2ZPcHRpb25zOyBpZCsrKSB7CiAgICAgICAgIGlmIChzZXBhcmF0b3IgJiYgaWQpCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChzZXBhcmF0b3IpOwotICAgICAgICBkdW1wT3B0aW9uKGJ1aWxk
ZXIsIGxldmVsLCBzdGF0aWNfY2FzdDxPcHRpb25JRD4oaWQpLCBvcHRpb25IZWFkZXIsIG9wdGlv
bkZvb3RlciwgZHVtcERlZmF1bHRzT3B0aW9uKTsKKyAgICAgICAgZHVtcE9wdGlvbihidWlsZGVy
LCBsZXZlbCwgc3RhdGljX2Nhc3Q8SUQ+KGlkKSwgb3B0aW9uSGVhZGVyLCBvcHRpb25Gb290ZXIs
IGR1bXBEZWZhdWx0c09wdGlvbik7CiAgICAgfQogfQogCkBAIC02ODMsMTQgKzcwMCwxNSBAQCB2
b2lkIE9wdGlvbnM6OmR1bXBBbGxPcHRpb25zKEZJTEUqIHN0cmVhCiAgICAgZnByaW50ZihzdHJl
YW0sICIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBP
cHRpb25zOjpkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIER1bXBMZXZlbCBsZXZl
bCwgT3B0aW9uSUQgaWQsCit2b2lkIE9wdGlvbnM6OmR1bXBPcHRpb24oU3RyaW5nQnVpbGRlciYg
YnVpbGRlciwgRHVtcExldmVsIGxldmVsLCBPcHRpb25zOjpJRCBpZCwKICAgICBjb25zdCBjaGFy
KiBoZWFkZXIsIGNvbnN0IGNoYXIqIGZvb3RlciwgRHVtcERlZmF1bHRzT3B0aW9uIGR1bXBEZWZh
dWx0c09wdGlvbikKIHsKICAgICBpZiAoaWQgPj0gbnVtYmVyT2ZPcHRpb25zKQogICAgICAgICBy
ZXR1cm47IC8vIElsbGVnYWwgb3B0aW9uLgogCiAgICAgT3B0aW9uIG9wdGlvbihpZCk7Ci0gICAg
aWYgKG9wdGlvbi5hdmFpbGFiaWxpdHkoKSA9PSBBdmFpbGFiaWxpdHk6OlJlc3RyaWN0ZWQgJiYg
IWFsbG93UmVzdHJpY3RlZE9wdGlvbnMoKSkKKyAgICBBdmFpbGFiaWxpdHkgYXZhaWxhYmlsaXR5
ID0gb3B0aW9uLmF2YWlsYWJpbGl0eSgpOworICAgIGlmIChhdmFpbGFiaWxpdHkgIT0gQXZhaWxh
YmlsaXR5OjpOb3JtYWwgJiYgIWlzQXZhaWxhYmxlKGlkLCBhdmFpbGFiaWxpdHkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBib29sIHdhc092ZXJyaWRkZW4gPSBvcHRpb24uaXNPdmVycmlkZGVu
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lv
biAyMDE5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3MSw3ICszNzEsOSBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlv
blN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBBaXJBc0pTQmVmb3JlQWxsb2NhdGVTdGFjaywgZmFs
c2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZHVtcEFpckFmdGVyQWxsb2NhdGVT
dGFjaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIHVzZVN1
cGVyU2FtcGxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikKKyAgICB2KGJvb2wsIHVzZVN1cGVy
U2FtcGxlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKKyAgICB2KGJvb2wsIHJl
cG9ydExMSW50U3RhdHMsIGZhbHNlLCBDb25maWd1cmFibGUsICJSZXBvcnRzIExMSW50IHN0YXRp
c3RpY3MiKQogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApAQCAt
NDIxLDcgKzQyMyw4IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgQXZhaWxhYmlsaXR5IHsK
ICAgICAgICAgTm9ybWFsID0gMCwKLSAgICAgICAgUmVzdHJpY3RlZAorICAgICAgICBSZXN0cmlj
dGVkLAorICAgICAgICBDb25maWd1cmFibGUKICAgICB9OwogCiAgICAgLy8gVGhpcyB0eXBlZGVm
IGlzIHRvIGFsbG93IHVzIHRvIGVsaW1pbmF0ZSB0aGUgJ18nIGluIHRoZSBmaWVsZCBuYW1lIGlu
CkBAIC00MjksNyArNDMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50MzJfdCBpbnQzMjsK
IAogICAgIC8vIERlY2xhcmUgdGhlIG9wdGlvbiBJRHM6Ci0gICAgZW51bSBPcHRpb25JRCB7Cisg
ICAgZW51bSBJRCB7CiAjZGVmaW5lIEZPUl9FQUNIX09QVElPTih0eXBlXywgbmFtZV8sIGRlZmF1
bHRWYWx1ZV8sIGF2YWlsYWJpbGl0eV8sIGRlc2NyaXB0aW9uXykgXAogICAgICAgICBuYW1lXyMj
SUQsCiAgICAgICAgIEpTQ19PUFRJT05TKEZPUl9FQUNIX09QVElPTikKQEAgLTQ3MCw2ICs0NzMs
OCBAQCBwdWJsaWM6CiAgICAgSlNDX09QVElPTlMoRk9SX0VBQ0hfT1BUSU9OKQogI3VuZGVmIEZP
Ul9FQUNIX09QVElPTgogCisgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoSUQsIEF2YWlsYWJp
bGl0eSk7CisKIHByaXZhdGU6CiAgICAgLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1
ZToKICAgICB1bmlvbiBFbnRyeSB7CkBAIC00OTksNyArNTA0LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgc3RhdGljIHZvaWQgZHVtcEFs
bE9wdGlvbnMoU3RyaW5nQnVpbGRlciYsIER1bXBMZXZlbCwgY29uc3QgY2hhciogdGl0bGUsCiAg
ICAgICAgIGNvbnN0IGNoYXIqIHNlcGFyYXRvciwgY29uc3QgY2hhciogb3B0aW9uSGVhZGVyLCBj
b25zdCBjaGFyKiBvcHRpb25Gb290ZXIsIER1bXBEZWZhdWx0c09wdGlvbik7Ci0gICAgc3RhdGlj
IHZvaWQgZHVtcE9wdGlvbihTdHJpbmdCdWlsZGVyJiwgRHVtcExldmVsLCBPcHRpb25JRCwKKyAg
ICBzdGF0aWMgdm9pZCBkdW1wT3B0aW9uKFN0cmluZ0J1aWxkZXImLCBEdW1wTGV2ZWwsIElELAog
ICAgICAgICBjb25zdCBjaGFyKiBvcHRpb25IZWFkZXIsIGNvbnN0IGNoYXIqIG9wdGlvbkZvb3Rl
ciwgRHVtcERlZmF1bHRzT3B0aW9uKTsKIAogICAgIHN0YXRpYyBib29sIHNldE9wdGlvbldpdGhv
dXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpOwpAQCAtNTE2LDcgKzUyMSw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIE9wdGlvbiB7CiBwdWJsaWM6Ci0gICAgT3B0aW9uKE9wdGlvbnM6Ok9wdGlvbklEIGlk
KQorICAgIE9wdGlvbihPcHRpb25zOjpJRCBpZCkKICAgICAgICAgOiBtX2lkKGlkKQogICAgICAg
ICAsIG1fZW50cnkoT3B0aW9uczo6c19vcHRpb25zW21faWRdKQogICAgIHsKQEAgLTUyNyw2ICs1
MzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIp
IGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAorICAgIE9wdGlvbnM6OklEIGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKICAg
ICBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIE9wdGlvbnM6OlR5cGUgdHlw
ZSgpIGNvbnN0OwpAQCAtNTQ0LDEzICs1NTAsMTMgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToK
ICAgICAvLyBPbmx5IHVzZWQgZm9yIGNvbnN0cnVjdGluZyBkZWZhdWx0IE9wdGlvbnMuCi0gICAg
T3B0aW9uKE9wdGlvbnM6Ok9wdGlvbklEIGlkLCBPcHRpb25zOjpFbnRyeSYgZW50cnkpCisgICAg
T3B0aW9uKE9wdGlvbnM6OklEIGlkLCBPcHRpb25zOjpFbnRyeSYgZW50cnkpCiAgICAgICAgIDog
bV9pZChpZCkKICAgICAgICAgLCBtX2VudHJ5KGVudHJ5KQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgT3B0aW9uczo6T3B0aW9uSUQgbV9pZDsKKyAgICBPcHRpb25zOjpJRCBtX2lkOwogICAgIE9w
dGlvbnM6OkVudHJ5JiBtX2VudHJ5OwogfTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTgxKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMTEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIG1lY2hhbmlzbSBmb3Ig
Y29sbGVjdGluZyBMTElOVCBzdGF0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODY2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVNYWluKToKKwogMjAxNi0wNi0xMSAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGxlYWsgZml4IGFm
dGVyIHIyMDE4NjMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCShyZXZpc2lvbiAyMDE5NzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbXBvcnQg
IldvcmtRdWV1ZUl0ZW0uaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9IZWFwU3RhdGlzdGljcy5oPgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvTExJbnREYXRhLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRp
b25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvZ2dpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01F
bGVtZW50Lmg+CkBAIC0xNDQxLDYgKzE0NDIsOCBAQCBpbnQgRHVtcFJlbmRlclRyZWVNYWluKGlu
dCBhcmdjLCBjb25zdCBjCiAgICAgW1dlYkNvcmVTdGF0aXN0aWNzIGVtcHR5Q2FjaGVdOyAvLyBP
dGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIgZmFsc2UgcG9zaXRpdmVzIGZvciBGcmFtZS9Ob2Rl
IGNvdW50cwogICAgIGlmIChKU0M6Ok9wdGlvbnM6OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkp
CiAgICAgICAgIEpTQzo6SGVhcFN0YXRpc3RpY3M6OnJlcG9ydFN1Y2Nlc3MoKTsKKyAgICBpZiAo
SlNDOjpPcHRpb25zOjpyZXBvcnRMTEludFN0YXRzKCkpCisgICAgICAgIEpTQzo6TExJbnQ6OkRh
dGE6OmR1bXBTdGF0cygpOwogICAgIFtwb29sIHJlbGVhc2VdOwogICAgIHJldHVybmluZ0Zyb21N
YWluID0gdHJ1ZTsKICAgICByZXR1cm4gMDsK
</data>
<flag name="review"
          id="304979"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>