<?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>92650</bug_id>
          
          <creation_ts>2012-07-30 08:12:08 -0700</creation_ts>
          <short_desc>Web Inspector: clang plugin for checking native memory instrumentation coverage</short_desc>
          <delta_ts>2012-08-03 01:05:07 -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>Web Inspector (Deprecated)</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>
          
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>682019</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-30 08:12:08 -0700</bug_when>
    <thetext>This is the clang plugin for checking native memory instrumentation coverage.

The idea: InspectorMemoryAgent traverses through instrumented objects and collects pointers and their sizes and types.
It is doing that with help of reportMemoryUsage function that needs to be implemented in each, significant
from native memory footprint point of view, WebCore class.

This plugin checks that the list of class members is matching with the list of members reported in reportMemoryUsage function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682029</commentid>
    <comment_count>1</comment_count>
      <attachid>155295</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-30 08:18:15 -0700</bug_when>
    <thetext>Created attachment 155295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682048</commentid>
    <comment_count>2</comment_count>
      <attachid>155295</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-07-30 08:46:55 -0700</bug_when>
    <thetext>Comment on attachment 155295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=155295&amp;action=review

&gt; Tools/clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp:136
&gt; +    void CheckMembersCoverage(const CXXRecordDecl* instrumentedClass, const Strings&amp; instrumentedMembers, SourceLocation location)

checkMembersCoverage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685174</commentid>
    <comment_count>3</comment_count>
      <attachid>155295</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-02 03:31:03 -0700</bug_when>
    <thetext>Comment on attachment 155295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=155295&amp;action=review

&gt; Tools/clang/ReportMemoryUsagePlugin/Makefile:5
&gt; +#   cp -R &lt;this directory&gt; third_party/llvm/tools/clang/tools/report-memory-usage-plugin

Please fix the comment. Also we probably need a more detailed description here on how to use the plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686358</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-03 01:05:07 -0700</bug_when>
    <thetext>Committed r124579: &lt;http://trac.webkit.org/changeset/124579&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155295</attachid>
            <date>2012-07-30 08:18:15 -0700</date>
            <delta_ts>2012-08-02 03:31:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92650-20120730191758.patch</filename>
            <type>text/plain</type>
            <size>19419</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDE3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q4ZWQ3OTExNzZjMzkwOGMyNDBhM2Q3ZDMwMjk1YTQ4
MzdlYTM1Yy4uMzBmNzQ5ZGE0YTVhOWY4YjdlZGJlOWMwYTE0ZmU3OGM3NmFkZjliOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDEyLTA3LTMwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBjbGFuZyBwbHVnaW4gZm9yIGNoZWNraW5nIG5hdGl2
ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvdmVyYWdlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBjbGFuZyBwbHVnaW4gZm9yIGNo
ZWNraW5nIG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGNvdmVyYWdlLgorICAgICAgICBU
aGUgaWRlYTogSW5zcGVjdG9yTWVtb3J5QWdlbnQgdHJhdmVyc2VzIHRocm91Z2ggaW5zdHJ1bWVu
dGVkIG9iamVjdHMgYW5kIGNvbGxlY3RzIHBvaW50ZXJzIGFuZCB0aGVpciBzaXplcyBhbmQgdHlw
ZXMuCisgICAgICAgIEl0IGlzIGRvaW5nIHRoYXQgd2l0aCBoZWxwIG9mIHJlcG9ydE1lbW9yeVVz
YWdlIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgaW4gZWFjaCwgc2lnbmlm
aWNhbnQKKyAgICAgICAgZnJvbSBuYXRpdmUgbWVtb3J5IGZvb3RwcmludCBwb2ludCBvZiB2aWV3
LCBXZWJDb3JlIGNsYXNzLgorICAgICAgICBUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCB0aGUgbGlz
dCBvZiBjbGFzcyBtZW1iZXJzIGlzIG1hdGNoaW5nIHdpdGggdGhlIGxpc3Qgb2YgbWVtYmVycyBy
ZXBvcnRlZCBpbiByZXBvcnRNZW1vcnlVc2FnZSBmdW5jdGlvbgorICAgICAgICBhbmQgbWFrZXMg
YSB3YXJuaW5nIGZvciB0aGUgZWFjaCBtZW1iZXIgdGhhdCBuZWVkcyB0byBiZSByZXBvcnRlZC4K
KworICAgICAgICAqIGNsYW5nL1JlcG9ydE1lbW9yeVVzYWdlUGx1Z2luL0NNYWtlTGlzdHMudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjbGFuZy9SZXBvcnRNZW1vcnlVc2FnZVBsdWdpbi9NYWtlZmls
ZTogQWRkZWQuCisgICAgICAgICogY2xhbmcvUmVwb3J0TWVtb3J5VXNhZ2VQbHVnaW4vUmVwb3J0
TWVtb3J5VXNhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNsYW5nKToKKyAgICAgICAgKEFkZE1l
bWJlckNhbGxWaXNpdG9yKToKKyAgICAgICAgKGNsYW5nOjpBZGRNZW1iZXJDYWxsVmlzaXRvcjo6
VmlzaXRDYWxsRXhwcik6CisgICAgICAgIChjbGFuZzo6QWRkTWVtYmVyQ2FsbFZpc2l0b3I6Omlu
c3RydW1lbnRlZE1lbWJlcnMpOgorICAgICAgICAoUmVwb3J0TWVtb3J5VXNhZ2VWaXNpdG9yKToK
KyAgICAgICAgKGNsYW5nOjpSZXBvcnRNZW1vcnlVc2FnZVZpc2l0b3I6OlJlcG9ydE1lbW9yeVVz
YWdlVmlzaXRvcik6CisgICAgICAgIChjbGFuZzo6UmVwb3J0TWVtb3J5VXNhZ2VWaXNpdG9yOjpW
aXNpdENYWE1ldGhvZERlY2wpOgorICAgICAgICAoY2xhbmc6OlJlcG9ydE1lbW9yeVVzYWdlVmlz
aXRvcjo6ZW1pdFdhcm5pbmcpOgorICAgICAgICAoY2xhbmc6OlJlcG9ydE1lbW9yeVVzYWdlVmlz
aXRvcjo6ZmluZEluc3RydW1lbnRhdGlvbk1ldGhvZCk6CisgICAgICAgIChjbGFuZzo6UmVwb3J0
TWVtb3J5VXNhZ2VWaXNpdG9yOjpuZWVkc1RvQmVJbnN0cnVtZW50ZWQpOgorICAgICAgICAoY2xh
bmc6OlJlcG9ydE1lbW9yeVVzYWdlVmlzaXRvcjo6Q2hlY2tNZW1iZXJzQ292ZXJhZ2UpOgorICAg
ICAgICAoUmVwb3J0TWVtb3J5VXNhZ2VDb25zdW1lcik6CisgICAgICAgIChjbGFuZzo6UmVwb3J0
TWVtb3J5VXNhZ2VDb25zdW1lcjo6UmVwb3J0TWVtb3J5VXNhZ2VDb25zdW1lcik6CisgICAgICAg
IChjbGFuZzo6UmVwb3J0TWVtb3J5VXNhZ2VDb25zdW1lcjo6SGFuZGxlVHJhbnNsYXRpb25Vbml0
KToKKyAgICAgICAgKFJlcG9ydE1lbW9yeVVzYWdlQWN0aW9uKToKKyAgICAgICAgKGNsYW5nOjpS
ZXBvcnRNZW1vcnlVc2FnZUFjdGlvbjo6Q3JlYXRlQVNUQ29uc3VtZXIpOgorICAgICAgICAoY2xh
bmc6OlJlcG9ydE1lbW9yeVVzYWdlQWN0aW9uOjpQYXJzZUFyZ3MpOgorICAgICAgICAqIGNsYW5n
L1JlcG9ydE1lbW9yeVVzYWdlUGx1Z2luL3Rlc3RzL1NvdXJjZS9XZWJDb3JlL1Rlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGFOYW1lc3BhY2UpOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0
aW9uKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChhTmFtZXNwYWNlOjpN
ZW1vcnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChhTmFtZXNwYWNlOjpN
ZW1vcnlDbGFzc0luZm86OmFkZE1lbWJlcik6CisgICAgICAgIChhTmFtZXNwYWNlOjpNZW1vcnlD
bGFzc0luZm86OmFkZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAgIChPd25QdHIpOgorICAg
ICAgICAoYU5hbWVzcGFjZTo6T3duUHRyOjpPd25QdHIpOgorICAgICAgICAoUmVmUHRyKToKKyAg
ICAgICAgKGFOYW1lc3BhY2U6OlJlZlB0cjo6UmVmUHRyKToKKyAgICAgICAgKFZlY3Rvcik6Cisg
ICAgICAgIChTdHJpbmcpOgorICAgICAgICAoTm90SW5zdHJ1bWVudGVkQ2xhc3MpOgorICAgICAg
ICAoSW5zdHJ1bWVudGVkQ2xhc3MpOgorICAgICAgICAoYU5hbWVzcGFjZTo6SW5zdHJ1bWVudGVk
Q2xhc3M6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKEluc3RydW1lbnRlZENoaWxkQ2xh
c3MpOgorICAgICAgICAoYU5hbWVzcGFjZTo6SW5zdHJ1bWVudGVkQ2hpbGRDbGFzczo6cmVwb3J0
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoSW5zdHJ1bWVudGVkQ2hpbGRDaGlsZENsYXNzKToKKyAg
ICAgICAgKEluc3RydW1lbnRlZENoaWxkQ2hpbGRDbGFzczo6cmVwb3J0TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAobWFpbik6CisKIDIwMTItMDctMzAgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hh
aWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV1RSXSBFbmZvcmNlIFNI
SUZUIG1vZGlmaWVyIHRvIHVwcGVyIGNhc2Uga2V5cyBpbiBldmVudCBzZW5kZXIuCmRpZmYgLS1n
aXQgYS9Ub29scy9jbGFuZy9SZXBvcnRNZW1vcnlVc2FnZVBsdWdpbi9DTWFrZUxpc3RzLnR4dCBi
L1Rvb2xzL2NsYW5nL1JlcG9ydE1lbW9yeVVzYWdlUGx1Z2luL0NNYWtlTGlzdHMudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUzMjI1Zjc5MGVkZGE4MzNlYzRiNWU0NTk0YzBkODgwODNiZTdmOTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9jbGFuZy9SZXBvcnRNZW1vcnlVc2FnZVBsdWdpbi9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDE1IEBACitzZXQoTU9EVUxFIFRSVUUpCisKK3NldCggTExWTV9MSU5L
X0NPTVBPTkVOVFMgc3VwcG9ydCBtYykKKworYWRkX2NsYW5nX2xpYnJhcnkoUmVwb3J0TWVtb3J5
VXNhZ2UgUmVwb3J0TWVtb3J5VXNhZ2UuY3BwKQorCit0YXJnZXRfbGlua19saWJyYXJpZXMoUmVw
b3J0TWVtb3J5VXNhZ2UKKyAgY2xhbmdGcm9udGVuZAorICBjbGFuZ0FTVAorICApCisKK3NldF90
YXJnZXRfcHJvcGVydGllcyhSZXBvcnRNZW1vcnlVc2FnZQorICBQUk9QRVJUSUVTCisgIExJTktF
Ul9MQU5HVUFHRSBDWFgKKyAgUFJFRklYICIiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2xhbmcvUmVw
b3J0TWVtb3J5VXNhZ2VQbHVnaW4vTWFrZWZpbGUgYi9Ub29scy9jbGFuZy9SZXBvcnRNZW1vcnlV
c2FnZVBsdWdpbi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTlkNjgwNmU5NWIzYTRiZDFkOWI0NDc4
NTg1YTY5NTU4NWQ0YjBiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvY2xhbmcvUmVwb3J0TWVt
b3J5VXNhZ2VQbHVnaW4vTWFrZWZpbGUKQEAgLTAsMCArMSw0MiBAQAorIyBUaGlzIGZpbGUgcmVx
dWlyZXMgdGhlIGNsYW5nIGJ1aWxkIHN5c3RlbSwgYXQgbGVhc3QgZm9yIG5vdy4gU28gdG8gdXNl
IHRoaXMKKyMgTWFrZWZpbGUsIHlvdSBzaG91bGQgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1h
bmRzIHRvIGNvcHkgdGhpcyBkaXJlY3RvcnkKKyMgaW50byBhIGNsYW5nIGNoZWNrb3V0OgorIwor
IyAgIGNwIC1SIDx0aGlzIGRpcmVjdG9yeT4gdGhpcmRfcGFydHkvbGx2bS90b29scy9jbGFuZy90
b29scy9yZXBvcnQtbWVtb3J5LXVzYWdlLXBsdWdpbgorIyAgIGNkIHRoaXJkX3BhcnR5L2xsdm0v
dG9vbHMvY2xhbmcvdG9vbHMvcmVwb3J0LW1lbW9yeS11c2FnZS1wbHVnaW4KKyMgICBtYWtlCisK
K0NMQU5HX0xFVkVMIDo9IC4uLy4uCitMSUJSQVJZTkFNRSA9IFJlcG9ydE1lbW9yeVVzYWdlCisK
K0xJTktfTElCU19JTl9TSEFSRUQgPSAwCitTSEFSRURfTElCUkFSWSA9IDEKKworaW5jbHVkZSAk
KENMQU5HX0xFVkVMKS9NYWtlZmlsZQorCitpZmVxICgkKE9TKSxEYXJ3aW4pCisgIExERkxBR1M9
LVdsLC11bmRlZmluZWQsZHluYW1pY19sb29rdXAKK2VuZGlmCisKK0JEPS4uLy4uLy4uLy4uL1Jl
bGVhc2UrQXNzZXJ0cworU1JDX0RJUj0uLi8uLi8uLi8uLi8uLi9sbHZtL3Rvb2xzL2NsYW5nL3Rv
b2xzL3JlcG9ydC1tZW1vcnktdXNhZ2UtcGx1Z2luCisKK3Rlc3Q6IGFsbAorCUAke0JEfS9iaW4v
Y2xhbmcrKyBcCisJLURfR05VX1NPVVJDRSBcCisJLURfREVCVUcgXAorCS1EX19TVERDX0NPTlNU
QU5UX01BQ1JPUyBcCisgICAgICAgIC1EX19TVERDX0ZPUk1BVF9NQUNST1MgXAorCS1EX19TVERD
X0xJTUlUX01BQ1JPUyBcCisJLURfR05VX1NPVVJDRSBcCisgICAgICAgIC1JJHtCRH0vdG9vbHMv
Y2xhbmcvaW5jbHVkZSBcCisJLUl0b29scy9jbGFuZy9pbmNsdWRlIFwKKwktSSR7QkR9L2luY2x1
ZGUgXAorCS1JaW5jbHVkZSBcCisgICAgICAgICR7U1JDX0RJUn0vdGVzdHMvU291cmNlL1dlYkNv
cmUvVGVzdC5jcHAgXAorCS1mc3ludGF4LW9ubHkgXAorICAgICAgICAtWGNsYW5nIC1sb2FkIFwK
KwktWGNsYW5nICR7QkR9L2xpYi9saWIke0xJQlJBUllOQU1FfS5zbyBcCisJLVhjbGFuZyAtcGx1
Z2luIFwKKwktWGNsYW5nIHJlcG9ydC1tZW1vcnktdXNhZ2UKKwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Y2xhbmcvUmVwb3J0TWVtb3J5VXNhZ2VQbHVnaW4vUmVwb3J0TWVtb3J5VXNhZ2UuY3BwIGIvVG9v
bHMvY2xhbmcvUmVwb3J0TWVtb3J5VXNhZ2VQbHVnaW4vUmVwb3J0TWVtb3J5VXNhZ2UuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMyYzdkZDJiMmVlYmY3YjA5YjI0ZjViNjNiYWMwNjFhNDU5ODNlNjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9jbGFuZy9SZXBvcnRNZW1vcnlVc2FnZVBsdWdpbi9SZXBvcnRN
ZW1vcnlVc2FnZS5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY2xhbmcvQVNUL0FTVC5o
IgorI2luY2x1ZGUgImNsYW5nL0FTVC9BU1RDb25zdW1lci5oIgorI2luY2x1ZGUgImNsYW5nL0FT
VC9SZWN1cnNpdmVBU1RWaXNpdG9yLmgiCisjaW5jbHVkZSAiY2xhbmcvRnJvbnRlbmQvQ29tcGls
ZXJJbnN0YW5jZS5oIgorI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL0Zyb250ZW5kUGx1Z2luUmVn
aXN0cnkuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvcmF3X29zdHJlYW0uaCIKKwordXNpbmcg
bmFtZXNwYWNlIGNsYW5nOworCituYW1lc3BhY2UgeworCit0eXBlZGVmIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBTdHJpbmdzOworCitTdHJpbmdzIGluc3RydW1lbnRhdGlvbk1ldGhvZHM7Citj
b25zdCBzdGQ6OnN0cmluZyBpbnN0cmltZW50aW5nTWV0aG9kTmFtZSgicmVwb3J0TWVtb3J5VXNh
Z2UiKTsKKworY2xhc3MgQWRkTWVtYmVyQ2FsbFZpc2l0b3IgOiBwdWJsaWMgUmVjdXJzaXZlQVNU
VmlzaXRvcjxBZGRNZW1iZXJDYWxsVmlzaXRvcj4geworcHVibGljOgorICAgIGJvb2wgVmlzaXRD
YWxsRXhwcihDYWxsRXhwciogY2FsbEV4cHIpCisgICAgeworICAgICAgICBDWFhNZW1iZXJDYWxs
RXhwciogbWV0aG9kQ2FsbEV4cHIgPSBkeW5fY2FzdDxDWFhNZW1iZXJDYWxsRXhwcj4oY2FsbEV4
cHIpOworICAgICAgICBib29sIGluc3RydW1lbnRlZCA9IGZhbHNlOworICAgICAgICBpZiAobWV0
aG9kQ2FsbEV4cHIpIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1ldGhvZE5hbWUgPSBtZXRo
b2RDYWxsRXhwci0+Z2V0TWV0aG9kRGVjbCgpLT5nZXROYW1lQXNTdHJpbmcoKTsKKyAgICAgICAg
ICAgIFN0cmluZ3M6Oml0ZXJhdG9yIGkgPSBmaW5kKGluc3RydW1lbnRhdGlvbk1ldGhvZHMuYmVn
aW4oKSwgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5lbmQoKSwgbWV0aG9kTmFtZSk7CisgICAgICAg
ICAgICBpbnN0cnVtZW50ZWQgPSBpICE9IGluc3RydW1lbnRhdGlvbk1ldGhvZHMuZW5kKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGluc3RydW1lbnRlZCB8fCAhbWV0aG9kQ2FsbEV4cHIpIHsK
KyAgICAgICAgICAgIGZvciAoQ2FsbEV4cHI6OmFyZ19pdGVyYXRvciBpID0gY2FsbEV4cHItPmFy
Z19iZWdpbigpOyBpICE9IGNhbGxFeHByLT5hcmdfZW5kKCk7ICsraSkgeworICAgICAgICAgICAg
ICAgIGlmIChNZW1iZXJFeHByKiBtZW1iZXJFeHByID0gZHluX2Nhc3Q8TWVtYmVyRXhwcj4oKmkp
KQorICAgICAgICAgICAgICAgICAgICBtX2luc3RydW1lbnRlZE1lbWJlcnMucHVzaF9iYWNrKG1l
bWJlckV4cHItPmdldE1lbWJlck5hbWVJbmZvKCkuZ2V0QXNTdHJpbmcoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgY29uc3Qg
U3RyaW5ncyYgaW5zdHJ1bWVudGVkTWVtYmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1bWVu
dGVkTWVtYmVyczsgfQorCitwcml2YXRlOgorICAgIFN0cmluZ3MgbV9pbnN0cnVtZW50ZWRNZW1i
ZXJzOworfTsKKworY2xhc3MgUmVwb3J0TWVtb3J5VXNhZ2VWaXNpdG9yIDogcHVibGljIFJlY3Vy
c2l2ZUFTVFZpc2l0b3I8UmVwb3J0TWVtb3J5VXNhZ2VWaXNpdG9yPiB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgUmVwb3J0TWVtb3J5VXNhZ2VWaXNpdG9yKENvbXBpbGVySW5zdGFuY2UmIGluc3Rh
bmNlLCBBU1RDb250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IG1faW5zdGFuY2UoaW5zdGFuY2Up
CisgICAgICAgICwgbV9jb250ZXh0KGNvbnRleHQpIHsgfQorCisgICAgYm9vbCBWaXNpdENYWE1l
dGhvZERlY2woY2xhbmc6OkNYWE1ldGhvZERlY2wqIGRlY2wpCisgICAgeworICAgICAgICBpZiAo
ZGVjbC0+ZG9lc1RoaXNEZWNsYXJhdGlvbkhhdmVBQm9keSgpICYmIGRlY2wtPmdldE5hbWVBc1N0
cmluZygpID09IGluc3RyaW1lbnRpbmdNZXRob2ROYW1lKSB7CisgICAgICAgICAgICBGdWxsU291
cmNlTG9jIGZ1bGxMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0RnVsbExvYyhkZWNsLT5nZXRMb2NT
dGFydCgpKTsKKyAgICAgICAgICAgIGlmIChmdWxsTG9jYXRpb24uaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICAgICAgQWRkTWVtYmVyQ2FsbFZpc2l0b3IgdmlzaXRvcjsKKyAgICAgICAgICAgICAg
ICB2aXNpdG9yLlRyYXZlcnNlU3RtdChkZWNsLT5nZXRCb2R5KCkpOworICAgICAgICAgICAgICAg
IENoZWNrTWVtYmVyc0NvdmVyYWdlKGRlY2wtPmdldFBhcmVudCgpLCB2aXNpdG9yLmluc3RydW1l
bnRlZE1lbWJlcnMoKSwgZGVjbC0+Z2V0TG9jU3RhcnQoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
ZW1pdFdhcm5pbmcoU291cmNlTG9jYXRpb24gbG9jLCBjb25zdCBjaGFyKiByYXdFcnJvcikKKyAg
ICB7CisgICAgICAgIEZ1bGxTb3VyY2VMb2MgZnVsbChsb2MsIG1faW5zdGFuY2UuZ2V0U291cmNl
TWFuYWdlcigpKTsKKyAgICAgICAgc3RkOjpzdHJpbmcgZXJyKCJbd2Via2l0LXN0eWxlXSAiKTsK
KyAgICAgICAgZXJyICs9IHJhd0Vycm9yOworICAgICAgICBEaWFnbm9zdGljc0VuZ2luZSYgZGlh
Z25vc3RpYyA9IG1faW5zdGFuY2UuZ2V0RGlhZ25vc3RpY3MoKTsKKyAgICAgICAgRGlhZ25vc3Rp
Y3NFbmdpbmU6OkxldmVsIGxldmVsID0gZGlhZ25vc3RpYy5nZXRXYXJuaW5nc0FzRXJyb3JzKCkg
PyBEaWFnbm9zdGljc0VuZ2luZTo6RXJyb3IgOiBEaWFnbm9zdGljc0VuZ2luZTo6V2FybmluZzsK
KyAgICAgICAgdW5zaWduZWQgaWQgPSBkaWFnbm9zdGljLmdldEN1c3RvbURpYWdJRChsZXZlbCwg
ZXJyKTsKKyAgICAgICAgRGlhZ25vc3RpY0J1aWxkZXIgYnVpbGRlciA9IGRpYWdub3N0aWMuUmVw
b3J0KGZ1bGwsIGlkKTsKKyAgICB9CisKKyAgICBDWFhNZXRob2REZWNsKiBmaW5kSW5zdHJ1bWVu
dGF0aW9uTWV0aG9kKENYWFJlY29yZERlY2wqIHJlY29yZCkKKyAgICB7CisgICAgICAgIGZvciAo
Q1hYUmVjb3JkRGVjbDo6bWV0aG9kX2l0ZXJhdG9yIG0gPSByZWNvcmQtPm1ldGhvZF9iZWdpbigp
OyBtICE9IHJlY29yZC0+bWV0aG9kX2VuZCgpOyArK20pIHsKKyAgICAgICAgICAgIGlmIChtLT5n
ZXROYW1lSW5mbygpLmdldEFzU3RyaW5nKCkgPT0gaW5zdHJpbWVudGluZ01ldGhvZE5hbWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuICptOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGJvb2wgbmVlZHNUb0JlSW5zdHJ1bWVudGVkKGNvbnN0IFR5cGUqIHR5cGUp
CisgICAgeworICAgICAgICBpZiAodHlwZS0+aXNCdWlsdGluVHlwZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodHlwZS0+aXNFbnVtZXJhbFR5cGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHR5cGUtPmlzQ2xhc3NUeXBlKCkpIHsK
KyAgICAgICAgICAgIGNvbnN0IFJlY29yZFR5cGUqIHJlY29yZFR5cGUgPSBkeW5fY2FzdDxSZWNv
cmRUeXBlPih0eXBlKTsKKyAgICAgICAgICAgIGlmIChyZWNvcmRUeXBlKSB7CisgICAgICAgICAg
ICAgICAgQ1hYUmVjb3JkRGVjbCogZGVjbCA9IGR5bl9jYXN0PENYWFJlY29yZERlY2w+KHJlY29y
ZFR5cGUtPmdldERlY2woKSk7CisgICAgICAgICAgICAgICAgaWYgKGRlY2wtPmdldE5hbWVBc1N0
cmluZygpID09ICJTdHJpbmciKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBpZiAoIWRlY2wgfHwgIWZpbmRJbnN0cnVtZW50YXRpb25NZXRob2QoZGVj
bCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAodHlwZS0+aXNBcnJheVR5cGUoKSkgeworICAgICAgICAgICAg
Y29uc3QgQXJyYXlUeXBlKiBhcnJheVR5cGUgPSBkeW5fY2FzdDxjb25zdCBBcnJheVR5cGU+KHR5
cGUpOworICAgICAgICAgICAgcmV0dXJuIG5lZWRzVG9CZUluc3RydW1lbnRlZChhcnJheVR5cGUt
PmdldEVsZW1lbnRUeXBlKCkuZ2V0VHlwZVB0cigpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIENoZWNrTWVtYmVyc0NvdmVyYWdlKGNvbnN0IENY
WFJlY29yZERlY2wqIGluc3RydW1lbnRlZENsYXNzLCBjb25zdCBTdHJpbmdzJiBpbnN0cnVtZW50
ZWRNZW1iZXJzLCBTb3VyY2VMb2NhdGlvbiBsb2NhdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
Q1hYUmVjb3JkRGVjbDo6ZmllbGRfaXRlcmF0b3IgaSA9IGluc3RydW1lbnRlZENsYXNzLT5maWVs
ZF9iZWdpbigpOyBpICE9IGluc3RydW1lbnRlZENsYXNzLT5maWVsZF9lbmQoKTsgKytpKSB7Cisg
ICAgICAgICAgICBzdGQ6OnN0cmluZyBmaWVsZE5hbWUgPSBpLT5nZXROYW1lQXNTdHJpbmcoKTsK
KyAgICAgICAgICAgIGlmIChmaW5kKGluc3RydW1lbnRlZE1lbWJlcnMuYmVnaW4oKSwgaW5zdHJ1
bWVudGVkTWVtYmVycy5lbmQoKSwgZmllbGROYW1lKSA9PSBpbnN0cnVtZW50ZWRNZW1iZXJzLmVu
ZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuZWVkc1RvQmVJbnN0cnVtZW50ZWQoaS0+Z2V0
VHlwZSgpLmdldFR5cGVQdHIoKSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIGVtaXRXYXJuaW5nKGktPmdldFNvdXJjZVJhbmdlKCkuZ2V0QmVnaW4oKSwg
ImNsYXNzIG1lbWJlciBuZWVkcyB0byBiZSBpbnN0cnVtZW50ZWQgaW4gcmVwb3J0TWVtb3J5VXNh
Z2UgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBlbWl0V2FybmluZyhsb2NhdGlvbiwgImxv
Y2F0ZWQgaGVyZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQ29t
cGlsZXJJbnN0YW5jZSYgbV9pbnN0YW5jZTsKKyAgICBBU1RDb250ZXh0KiBtX2NvbnRleHQ7Cit9
OworCitjbGFzcyBSZXBvcnRNZW1vcnlVc2FnZUNvbnN1bWVyIDogcHVibGljIEFTVENvbnN1bWVy
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZXBvcnRNZW1vcnlVc2FnZUNvbnN1bWVyKENvbXBp
bGVySW5zdGFuY2UmIGluc3RhbmNlLCBBU1RDb250ZXh0KiBjb250ZXh0KQorICAgICAgICA6IG1f
dmlzaXRvcihpbnN0YW5jZSwgY29udGV4dCkKKyAgICB7CisgICAgICAgIGluc3RydW1lbnRhdGlv
bk1ldGhvZHMucHVzaF9iYWNrKCJhZGRNZW1iZXIiKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9u
TWV0aG9kcy5wdXNoX2JhY2soImFkZEluc3RydW1lbnRlZE1lbWJlciIpOworICAgICAgICBpbnN0
cnVtZW50YXRpb25NZXRob2RzLnB1c2hfYmFjaygiYWRkVmVjdG9yIik7CisgICAgICAgIGluc3Ry
dW1lbnRhdGlvbk1ldGhvZHMucHVzaF9iYWNrKCJhZGRJbnN0cnVtZW50ZWRWZWN0b3IiKTsKKyAg
ICAgICAgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5wdXNoX2JhY2soImFkZEhhc2hTZXQiKTsKKyAg
ICAgICAgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5wdXNoX2JhY2soImFkZEluc3RydW1lbnRlZEhh
c2hTZXQiKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5wdXNoX2JhY2soImFkZEhh
c2hNYXAiKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5wdXNoX2JhY2soImFkZElu
c3RydW1lbnRlZEhhc2hNYXAiKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uTWV0aG9kcy5wdXNo
X2JhY2soImFkZExpc3RIYXNoU2V0Iik7CisgICAgICAgIGluc3RydW1lbnRhdGlvbk1ldGhvZHMu
cHVzaF9iYWNrKCJhZGRSYXdCdWZmZXIiKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgSGFu
ZGxlVHJhbnNsYXRpb25Vbml0KGNsYW5nOjpBU1RDb250ZXh0JiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgbV92aXNpdG9yLlRyYXZlcnNlRGVjbChjb250ZXh0LmdldFRyYW5zbGF0aW9uVW5pdERl
Y2woKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlcG9ydE1lbW9yeVVzYWdlVmlzaXRvciBt
X3Zpc2l0b3I7Cit9OworCitjbGFzcyBSZXBvcnRNZW1vcnlVc2FnZUFjdGlvbiA6IHB1YmxpYyBQ
bHVnaW5BU1RBY3Rpb24geworcHJvdGVjdGVkOgorICAgIEFTVENvbnN1bWVyKiBDcmVhdGVBU1RD
b25zdW1lcihDb21waWxlckluc3RhbmNlJiBDSSwgbGx2bTo6U3RyaW5nUmVmKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBSZXBvcnRNZW1vcnlVc2FnZUNvbnN1bWVyKENJLCAmQ0kuZ2V0QVNU
Q29udGV4dCgpKTsKKyAgICB9CisKKyAgICBib29sIFBhcnNlQXJncyhjb25zdCBDb21waWxlcklu
c3RhbmNlJiBDSSwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBhcmdzKQorICAgIHsK
KyAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpICYmIGFyZ3NbMF0gPT0gImhlbHAiKQorICAgICAgICAg
ICAgbGx2bTo6ZXJycygpIDw8IG1faGVscFRleHQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtX2hlbHBUZXh0OworfTsKKworY29uc3QgY2hh
ciogUmVwb3J0TWVtb3J5VXNhZ2VBY3Rpb246Om1faGVscFRleHQgPQorICAgICJUaGlzIHBsdWdp
biBpcyBjaGVja2luZyBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBjb2RlLlxuIgorICAg
ICJUaGUgY2xhc3MgaXMgaW5zdHJ1bWVudGVkIGlmIGl0IGhhcyByZXBvcnRNZW1vcnlVc2FnZSBt
ZW1iZXIgZnVuY3Rpb24uXG4iCisgICAgIlNhbXBsZTpcbiIKKyAgICAiY2xhc3MgSW5zdHJ1bWVu
dGVkQ2xhc3Mge1xuIgorICAgICJwdWJsaWM6XG4iCisgICAgIiAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0XG4iCisgICAg
IiAgICB7XG4iCisgICAgIiAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPEluc3RydW1lbnRlZENsYXNz
PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9N
KTtcbiIKKyAgICAiICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25vdEluc3RydW1lbnRlZFB0cik7
XG4iCisgICAgIiAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9pbnN0cnVtZW50
ZWRPYmplY3QpO1xuIgorICAgICIgICAgfVxuIgorICAgICJcbiIKKyAgICAicHJpdmF0ZTpcbiIK
KyAgICAiICAgIE5vdEluc3RydW1lbnRlZENsYXNzKiBtX25vdEluc3RydW1lbnRlZFB0cjtcbiIK
KyAgICAiICAgIEluc3RydW1lbnRlZENsYXNzIG1faW5zdHJ1bWVudGVkT2JqZWN0O1xuIgorICAg
ICJ9XG4iOworCit9CisKK3N0YXRpYyBGcm9udGVuZFBsdWdpblJlZ2lzdHJ5OjpBZGQ8UmVwb3J0
TWVtb3J5VXNhZ2VBY3Rpb24+CitYKCJyZXBvcnQtbWVtb3J5LXVzYWdlIiwgIkNoZWNrcyByZXBv
cnRNZW1vcnlVc2FnZSBmdW5jdGlvbiBjb25zaXN0ZW5jeSIpOworCmRpZmYgLS1naXQgYS9Ub29s
cy9jbGFuZy9SZXBvcnRNZW1vcnlVc2FnZVBsdWdpbi90ZXN0cy9Tb3VyY2UvV2ViQ29yZS9UZXN0
LmNwcCBiL1Rvb2xzL2NsYW5nL1JlcG9ydE1lbW9yeVVzYWdlUGx1Z2luL3Rlc3RzL1NvdXJjZS9X
ZWJDb3JlL1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNTkzZTZlMThiMmI5M2M3M2RkYmU3MTkxM2Nl
MWY1YTZiNzk5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9jbGFuZy9SZXBvcnRNZW1vcnlV
c2FnZVBsdWdpbi90ZXN0cy9Tb3VyY2UvV2ViQ29yZS9UZXN0LmNwcApAQCAtMCwwICsxLDE1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K25hbWVzcGFjZSBhTmFtZXNwYWNlIHsKKworY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uIHsK
K3B1YmxpYzoKKyAgICBlbnVtIE9iamVjdFR5cGUgeworICAgICAgICBET00KKyAgICB9OworfTsK
KworY2xhc3MgTWVtb3J5T2JqZWN0SW5mbyB7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K2NsYXNzIE1lbW9yeUNsYXNzSW5mbyB7CitwdWJsaWM6CisgICAgTWVtb3J5Q2xhc3NJbmZvKE1l
bW9yeU9iamVjdEluZm8qLCBjb25zdCBUKiwgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpPYmplY3RU
eXBlKSB7IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTT4gdm9pZCBhZGRNZW1iZXIoTSYpIHsg
fQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihN
JikgeyB9Cit9OworCisvLyAtLS0tLS0gTW9ja2VkIHR5cGVzCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIE93blB0ciB7CitwdWJsaWM6CisgICAgT3duUHRyKFQqIHB0cikgOiBtX3B0cihw
dHIpIHsgfQorcHJpdmF0ZToKKyAgICBUKiBtX3B0cjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorY2xhc3MgUmVmUHRyIHsKK3B1YmxpYzoKKyAgICBSZWZQdHIoVCogcHRyKSA6IG1fcHRy
KHB0cikgeyB9Citwcml2YXRlOgorICAgIFQqIG1fcHRyOworfTsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CitjbGFzcyBWZWN0b3IgeworcHJpdmF0ZToKKyAgICBUKiBtX2RhdGE7Cit9OworCitj
bGFzcyBTdHJpbmcgeworcHJpdmF0ZToKKyAgICBjaGFyKiBtX2RhdGE7Cit9OworCisvLyAtLS0t
LS0gVXNlciBkZWZpbmVkIHR5cGVzCitjbGFzcyBOb3RJbnN0cnVtZW50ZWRDbGFzcyB7CitwdWJs
aWM6CisgICAgaW50IG1fYXJyYXlbMTBdOworfTsKKworY2xhc3MgSW5zdHJ1bWVudGVkQ2xhc3Mg
eworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xh
c3NJbmZvPEluc3RydW1lbnRlZENsYXNzPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV9ub3RJ
bnN0cnVtZW50ZWRQdHJSZXBvcnRlZE5vV2FybmluZyk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1faW5zdHJ1bWVudGVkUHRyUmVwb3J0ZWROb1dhcm5pbmcpOworICAgIH0K
KworcHJpdmF0ZToKKworICAgIC8vIGhhdmUgdG8gYmUgc2tpcHBlZCBldmVuIGlmIG5vdCByZXBv
cnRlZAorICAgIGludCBtX1BPRE5vdFJlcG9ydGVkTm9XYXJuaW5nOworICAgIGludCBtX2FycmF5
Tm90UmVwb3J0ZWROb1dhcm5pbmdbMTBdOworICAgIE5vdEluc3RydW1lbnRlZENsYXNzIG1fbm90
SW5zdHJ1bWVudGVkTm90UmVwb3J0ZWROb1dhcm5pbmc7CisgICAgTm90SW5zdHJ1bWVudGVkQ2xh
c3MgbV9ub3RJbnN0cnVtZW50ZWRBcnJheU5vdFJlcG9ydGVkTm9XYXJuaW5nWzEwXTsKKyAgICBl
bnVtIHsgTm9uZSB9IG1fZW51bU5vdFJlcG9ydGVkTm9XYXJuaW5nOworICAgIGJvb2wgbV9ib29s
Tm90UmVwb3J0ZWROb1dhcm5pbmc7CisKKyAgICAvLyByZXBvcnRlZAorICAgIE5vdEluc3RydW1l
bnRlZENsYXNzKiBtX25vdEluc3RydW1lbnRlZFB0clJlcG9ydGVkTm9XYXJuaW5nOworICAgIElu
c3RydW1lbnRlZENsYXNzKiBtX2luc3RydW1lbnRlZFB0clJlcG9ydGVkTm9XYXJuaW5nOworCisg
ICAgLy8gcmVwb3J0ZWQKKyAgICBJbnN0cnVtZW50ZWRDbGFzcyogbV9pbnN0cnVtZW50ZWRQdHJO
b3RSZXBvcnRlZFdhcm5pbmc7CisgICAgaW50KiBtX3Jhd0J1ZmZlck5vdFJlcG9ydGVkV2Fybmlu
ZzsKKyAgICBpbnQqIG1faW50UHRyQXJyYXlOb3RSZXBvcnRlZFdhcm5pbmdbMTBdOworICAgIE5v
dEluc3RydW1lbnRlZENsYXNzKiBtX29ialB0ckFycmF5Tm90UmVwb3J0ZWRXYXJuaW5nWzEwXTsK
KyAgICBPd25QdHI8Tm90SW5zdHJ1bWVudGVkQ2xhc3M+IG1fb3duUHRyTm90UmVwb3J0ZWRXYXJu
aW5nOworICAgIFJlZlB0cjxOb3RJbnN0cnVtZW50ZWRDbGFzcz4gbV9yZWZQdHJOb3RSZXBvcnRl
ZFdhcm5pbmc7CisgICAgU3RyaW5nIG1fc3RyaW5nTm90UmVwb3J0ZWRXYXJuaW5nOworICAgIFZl
Y3RvcjxOb3RJbnN0cnVtZW50ZWRDbGFzcz4gbV92ZWN0b3JOb3RSZXBvcnRlZFdhcm5pbmc7Cit9
OworCit9CisKK3VzaW5nIG5hbWVzcGFjZSBhTmFtZXNwYWNlOworCituYW1lc3BhY2UgeworCitj
bGFzcyBJbnN0cnVtZW50ZWRDaGlsZENsYXNzIDogcHVibGljIGFOYW1lc3BhY2U6Okluc3RydW1l
bnRlZENsYXNzIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworfTsKKwordm9pZCBJbnN0cnVtZW50ZWRDaGlsZENs
YXNzOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxJbnN0cnVtZW50ZWRDaGlsZENsYXNzPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6RE9NKTsK
K30KKworfQorCitjbGFzcyBJbnN0cnVtZW50ZWRDaGlsZENoaWxkQ2xhc3MgOiBwdWJsaWMgSW5z
dHJ1bWVudGVkQ2hpbGRDbGFzcyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKK307CisKK3ZvaWQgSW5zdHJ1bWVu
dGVkQ2hpbGRDaGlsZENsYXNzOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3QKK3sKK30KKworaW50IGFHbG9iYWxWYXJpYWJsZSA9IDA7CisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gMDsKK30K
</data>
<flag name="review"
          id="164714"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>