<?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>119618</bug_id>
          
          <creation_ts>2013-08-09 03:04:30 -0700</creation_ts>
          <short_desc>Adding a .ycm_extra_conf file for webkitGtk</short_desc>
          <delta_ts>2013-12-13 00:13:39 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Danilo de Paula">danilo.eu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>changseok</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>915743</commentid>
    <comment_count>0</comment_count>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2013-08-09 03:04:30 -0700</bug_when>
    <thetext>YouCompleteMe is a vim plugin to allow semantic auto completion (and other fetures) on c/c++ code.

It was originally built for chromium and it requires special configurations[1] depending on the build system.
I have been using it for a while now, and it might be handy for others webkitgtk developers.


[1] https://github.com/scheib/chromium/blob/master/tools/vim/chromium.ycm_extra_conf.py</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915745</commentid>
    <comment_count>1</comment_count>
      <attachid>208411</attachid>
    <who name="Danilo de Paula">danilo.eu</who>
    <bug_when>2013-08-09 03:07:32 -0700</bug_when>
    <thetext>Created attachment 208411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958966</commentid>
    <comment_count>2</comment_count>
      <attachid>219016</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-11 16:39:20 -0800</bug_when>
    <thetext>Created attachment 219016
Iterated version of Danilo&apos;s patch

I&apos;ve worked on Danilo&apos;s patch a bit to make it conform to our style guidelines. YCM is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959225</commentid>
    <comment_count>3</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-12 10:21:37 -0800</bug_when>
    <thetext>
I have just a couple of nits in this informal review. Apart from those, the
script is great and YCM is a really welcome addition to Vim (I did not know
about it before today :D)

&gt; Tools/gtk/ycm_extra_conf.py:30
&gt; +sys.path = [__tools_directory] + sys.path

It would be good to use os.path.abspath() after determining
__tools_directory, just in case.

&gt; Tools/gtk/ycm_extra_conf.py:113
&gt; +def FlagsForFile(filename):

According to the YouCompleteMe documentation, FlagsForFile may be passed
keyword arguments, so this should be:

  def FlagsForFile(filename, **kwargs)

Even if the keyword arguments are unused for the moment, it is good to
include them in the function signature just in case users have set an
option in their vimrc to send extra arguments to YCM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959235</commentid>
    <comment_count>4</comment_count>
      <attachid>219016</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-12-12 10:40:10 -0800</bug_when>
    <thetext>Comment on attachment 219016
Iterated version of Danilo&apos;s patch

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

LGTM, with a small refactoring proposal for the first function

&gt; Tools/gtk/ycm_extra_conf.py:47
&gt; +            for flag in FLAGS_PRECEDING_PATHS:

This for block could be replaced by if argument in FLAGS_PRECEDING_PATHS, you could always ensure argument is either a flag or a path to have a single code path here, it will be much more readable.

&gt; Tools/gtk/ycm_extra_conf.py:54
&gt; +                # Some argument contain the flag and the path together. For these

Missing last bit of the comment?

&gt; Tools/gtk/ycm_extra_conf.py:101
&gt; +        print &quot;==== Error during reading %s file&quot;, trace_file_path

s/during/while/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959371</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-12 15:16:20 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219016 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219016&amp;action=review
&gt; 
&gt; LGTM, with a small refactoring proposal for the first function
&gt; 
&gt; &gt; Tools/gtk/ycm_extra_conf.py:47
&gt; &gt; +            for flag in FLAGS_PRECEDING_PATHS:
&gt; 
&gt; This for block could be replaced by if argument in FLAGS_PRECEDING_PATHS, you could always ensure argument is either a flag or a path to have a single code path here, it will be much more readable.

The arguments may be of the form -I /path or --argument=path. In the former case, we have to iterate the list of arguments to do a bunch of string searches. I did consider breaking out the  argument in FLAGS_PRECEDING_PATHS case like this:

for argument in arguments:
    if make_next_absolute:
        ...
    elif argument in FLAGS_PRECEDING_PATHS:
        make_next_absolute = True
    else:
        for flag in FLAGS_PRECEDING_PATHS:
            if argument.startswith(flag):
                ...

I went with the current approach because it was a little bit more efficient. I like both approaches though, so I can use whichever you prefer. :)

&gt; 
&gt; &gt; Tools/gtk/ycm_extra_conf.py:54
&gt; &gt; +                # Some argument contain the flag and the path together. For these
&gt; 
&gt; Missing last bit of the comment?

Yes! Thanks.

&gt; 
&gt; &gt; Tools/gtk/ycm_extra_conf.py:101
&gt; &gt; +        print &quot;==== Error during reading %s file&quot;, trace_file_path
&gt; 
&gt; s/during/while/?

Thanks. I missed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959372</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-12 15:16:56 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I have just a couple of nits in this informal review. Apart from those, the
&gt; script is great and YCM is a really welcome addition to Vim (I did not know
&gt; about it before today :D)

Thanks for the review!


&gt; &gt; Tools/gtk/ycm_extra_conf.py:30
&gt; &gt; +sys.path = [__tools_directory] + sys.path
&gt; 
&gt; It would be good to use os.path.abspath() after determining
&gt; __tools_directory, just in case.

Okay.


&gt; &gt; Tools/gtk/ycm_extra_conf.py:113
&gt; &gt; +def FlagsForFile(filename):
&gt; 
&gt; According to the YouCompleteMe documentation, FlagsForFile may be passed
&gt; keyword arguments, so this should be:
&gt; 
&gt;   def FlagsForFile(filename, **kwargs)
&gt; 
&gt; Even if the keyword arguments are unused for the moment, it is good to
&gt; include them in the function signature just in case users have set an
&gt; option in their vimrc to send extra arguments to YCM.

Good idea. I&apos;ll make the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959378</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2013-12-12 15:38:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; &gt; Tools/gtk/ycm_extra_conf.py:30
&gt; &gt; &gt; +sys.path = [__tools_directory] + sys.path
&gt; &gt; 
&gt; &gt; It would be good to use os.path.abspath() after determining
&gt; &gt; __tools_directory, just in case.
&gt; 
&gt; Okay.

Also, I forgot to mention that this looks like a more Pythonic way of
modifying an array (and it avoids creating temporary values):

  sys.path.insert(0, __tools_directory)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959502</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-12-13 00:13:39 -0800</bug_when>
    <thetext>Committed r160531: &lt;http://trac.webkit.org/changeset/160531&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208411</attachid>
            <date>2013-08-09 03:07:32 -0700</date>
            <delta_ts>2013-12-11 16:39:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119618-20130809120731.patch</filename>
            <type>text/plain</type>
            <size>7493</size>
            <attacher name="Danilo de Paula">danilo.eu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjg3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQwNzc2MjkxNjZmNTBhZmY5OWNkNmIwYTI1YjZiOGQ5
YjRlNzI0ZC4uN2Y3YTBmOTAwNjlhNjc5MTNhODM2Mjg5ODllNTdmNTBiNWI4YTBmYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEzLTA4LTA5ICBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2Vz
YXJAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIEFkZGluZyBhbiAueWNtX2V4dHJh
X2NvbmYgZmlsZSBmb3Igd2Via2l0R3RrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTk2MTgKKworICAgICAgICBUaGUgLnljbV9leHRyYV9jb25mIGFs
bG93cyB3ZWJraXRHdGsgZGV2ZWxvcGVycyB0byB1c2Ugc2VtYW50aWMKKyAgICAgICAgYXV0by1j
b21wbGV0aW9uIG9uIHZpbSBmb3Igd2Via2l0Z3RrIGNvZGUuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBndGsvdmltL2d0ay55Y21fZXh0cmFfY29u
Zi5weTogQWRkZWQuCisgICAgICAgIChEaXJlY3RvcnlPZlRoaXNTY3JpcHQpOgorICAgICAgICAo
TWFrZVJlbGF0aXZlUGF0aHNJbkZsYWdzQWJzb2x1dGUpOgorICAgICAgICAoZmluZFJvb3RQYXRo
KToKKyAgICAgICAgKGZpbmRCdWlsZFBhdGgpOgorICAgICAgICAoY2hlY2tGb3JNYWtlZmlsZUNv
bW1hbmRDYWNoZSk6CisgICAgICAgIChjcmVhdGVNYWtlZmlsZUNvbW1hbmRDYWNoZSk6CisgICAg
ICAgIChwYXJzZU1ha2VDYWNoZSk6CisgICAgICAgIChGbGFnc0ZvckZpbGUpOgorCiAyMDEzLTA4
LTAyICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0VGTF0gUkVHUkVTU0lPTiBhZnRlciByMTUzNDMyOiBzb21lIGFjY2Vzc2liaWxpdHkg
dGVzdHMgY3Jhc2guCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvdmltL2d0ay55Y21fZXh0cmFfY29u
Zi5weSBiL1Rvb2xzL2d0ay92aW0vZ3RrLnljbV9leHRyYV9jb25mLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYw
MTY4MWNlMzU3ZGQyMzMyMzE2MjBjMTdiMGRhMTllMTg0YmQ3YjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9ndGsvdmltL2d0ay55Y21fZXh0cmFfY29uZi5weQpAQCAtMCwwICsxLDE5NiBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMyBEYW5pbG8gQ2VzYXIg
TGVtZXMgZGUgUGF1bGEgPGRhbmlsby5ldUBnbWFpbC5jb20+CisjCisjIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorIworIyBVc2FnZToKKyMKKyMg
Rmlyc3Qgb2YgYWxsIGluc3RhbGwgWW91Q29tcGxldGVNZSBwbHVnaW4gZnJvbSBbaHR0cHM6Ly9n
aXRodWIuY29tL1ZhbGxvcmljL1lvdUNvbXBsZXRlTWVdCisjCisjIFRoZXJlJ3MgdHdvIHdheXMg
eW91IGNhbiB1c2UgdGhpcyBmaWxlOgorIyAgMSAtIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5l
IGluIHlvdXIgLnZpbXJjIGZpbGUKKyMgICAgICBsZXQgZzp5Y21fZ2xvYmFsX3ljbV9leHRyYV9j
b25mID0gICc8d2Via2l0c3JjPi9Ub29scy9ndGsvdmltL2d0ay55Y21fZXh0cmFfY29uZi5weScK
KyMKKyMgIDIgLSBDcmVhdGUgYSBzeW1saW5rIG5hbWVkIC55Y21fZXh0cmFfY29uZi5weSBpbiB5
b3VyIDx3ZWJraXRzcmM+IGZvbGRlcgorIworIyAgKiBpZiB5b3UgdXNlIHRoZSBmaXJzdCBvcHRp
b24sIHRoZSB3ZWJraXQgYXV0by1jb21wbGV0aW9uIHRoaW5nIHdpbGwgYmUgbG9hZGVkIGZvciBh
bGwgdmltIGZpbGVzCisjICAgIG5vdCBhIHJlYWxseSB1c2VmdWxsIHRoaW5nIGZvciBub24gd2Vi
a2l0Z3RrIHByb2plY3RzLgorIworIyAgKiogWW91IGNhbiBkaXNhYmxlIHRoZSBjb25maXJtYXRp
b24gYnkgYWRkaW5nIHRoZSBmaWxlIHRvIHRoZSB3aGl0ZWxpc3QuCisjICAgICBDaGVjayBZQ00g
ZG9jcyBvbiBob3cgdG8gZG8gdGhhdAorCitpbXBvcnQgb3MKK2ltcG9ydCB5Y21fY29yZQorZnJv
bSBjbGFuZ19oZWxwZXJzIGltcG9ydCBQcmVwYXJlQ2xhbmdGbGFncworaW1wb3J0IHN1YnByb2Nl
c3MKK2ltcG9ydCByZQorCitjb21tb25GbGFncyA9IFsKKyAgICAgICAgJy1zdGQ9YysrMTEnLAor
ICAgICAgICAnLXgnLCAnYysrJywKKyAgICAgICAgXQorCitidWlsZFBhdGggPSAnLi8nCittYWtl
X2NhY2hlX2ZpbGUgPSAiLm1ha2VfZmlsZS5jYWNoZSIKKworCitkZWYgRGlyZWN0b3J5T2ZUaGlz
U2NyaXB0KCk6CisgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKQorCisKK2RlZiBNYWtlUmVsYXRpdmVQYXRoc0luRmxhZ3NBYnNvbHV0ZShmbGFncywg
d29ya2luZ19kaXJlY3RvcnkpOgorICAgIGlmIG5vdCB3b3JraW5nX2RpcmVjdG9yeToKKyAgICAg
ICAgcmV0dXJuIGZsYWdzCisgICAgbmV3X2ZsYWdzID0gW10KKyAgICBtYWtlX25leHRfYWJzb2x1
dGUgPSBGYWxzZQorICAgIHBhdGhfZmxhZ3MgPSBbJy1pc3lzdGVtJywgJy1JJywgJy1pcXVvdGUn
LCAnLS1zeXNyb290PSddCisgICAgZm9yIGZsYWcgaW4gZmxhZ3M6CisgICAgICAgIG5ld19mbGFn
ID0gZmxhZworCisgICAgICAgIGlmIG1ha2VfbmV4dF9hYnNvbHV0ZToKKyAgICAgICAgICAgIG1h
a2VfbmV4dF9hYnNvbHV0ZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgZmxhZy5zdGFydHN3
aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWcgPSBvcy5wYXRoLmpvaW4od29ya2lu
Z19kaXJlY3RvcnksIGZsYWcpCisKKyAgICAgICAgZm9yIHBhdGhfZmxhZyBpbiBwYXRoX2ZsYWdz
OgorICAgICAgICAgICAgaWYgZmxhZyA9PSBwYXRoX2ZsYWc6CisgICAgICAgICAgICAgICAgbWFr
ZV9uZXh0X2Fic29sdXRlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAg
ICAgIGlmIGZsYWcuc3RhcnRzd2l0aChwYXRoX2ZsYWcpOgorICAgICAgICAgICAgICAgIHBhdGgg
PSBmbGFnW2xlbihwYXRoX2ZsYWcpOl0KKyAgICAgICAgICAgICAgICBuZXdfZmxhZyA9IHBhdGhf
ZmxhZyArIG9zLnBhdGguam9pbih3b3JraW5nX2RpcmVjdG9yeSwgcGF0aCkKKyAgICAgICAgICAg
ICAgICBicmVhaworCisgICAgICAgIGlmIG5ld19mbGFnOgorICAgICAgICAgICAgbmV3X2ZsYWdz
LmFwcGVuZChuZXdfZmxhZykKKyAgICByZXR1cm4gbmV3X2ZsYWdzCisKKworZGVmIGZpbmRSb290
UGF0aCgpOgorICAgIHNjcmlwdFBhdGggPSBvcy5wYXRoLmFic3BhdGgoRGlyZWN0b3J5T2ZUaGlz
U2NyaXB0KCkpCisKKyAgICAjIEZJWE1FOiBvbmx5IHdvcmtzIGZvciB1bml4IHN5c3RlbXMKKyAg
ICB3aGlsZSBzY3JpcHRQYXRoICE9ICIvIjoKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3Mu
cGF0aC5qb2luKHNjcmlwdFBhdGgsICJjb25maWd1cmUuYWMiKSkgXAorICAgICAgICAgICAgYW5k
IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNjcmlwdFBhdGgsICJUb29scy9ndGsiKSkgXAor
ICAgICAgICAgICAgYW5kIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNjcmlwdFBhdGgsICJT
b3VyY2UvV2ViS2l0IikpOgorICAgICAgICAgICAgICAgIHJldHVybiBzY3JpcHRQYXRoCisKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNjcmlwdFBhdGggPSBvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5qb2luKHNjcmlwdFBhdGgsIG9zLnBhdGgucGFyZGlyKSkKKworICAgIHJldHVybiBOb25l
CisKKworZGVmIGZpbmRCdWlsZFBhdGgocm9vdFBhdGgpOgorCisgICAgcGF0aHMgPSBbIldlYktp
dEJ1aWxkL0RlYnVnIiwgIldlYktpdEJ1aWxkL1JlbGVhc2UiLCAiLiJdCisgICAgZm9yIHBhdGgg
aW4gcGF0aHM6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihyb290UGF0
aCwgcGF0aCwgIkdOVW1ha2VmaWxlIikpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9p
bihyb290UGF0aCwgcGF0aCkKKworICAgIHJldHVybiBOb25lCisKKworZGVmIGNoZWNrRm9yTWFr
ZWZpbGVDb21tYW5kQ2FjaGUoYnVpbGRQYXRoKToKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKG9z
LnBhdGguam9pbihidWlsZFBhdGgsIG1ha2VfY2FjaGVfZmlsZSkpOgorICAgICAgICAjIFRPRE86
IGJlZm9yZSByZXR1cm5pbmcgVHJ1ZSwgbWlnaHQgYmUgYSBnb29kCisgICAgICAgICMgaWRlYSB0
byBjaGVjayB0aW1lc3RhbXBzIG9mIHRoZSBHTlVtYWtlZmlsZSBhbmQgdGhlIGNhY2hlLCBzbyB3
ZQorICAgICAgICAjIGNhbiByZXZhbGlkYXRlIHRoZSBjYWNoZSBpZiBHTlVtYWtlZmlsZSBjaGFu
Z2VzCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBlbGlmIGNyZWF0ZU1ha2VmaWxlQ29tbWFu
ZENhY2hlKGJ1aWxkUGF0aCk6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICByZXR1cm4gRmFs
c2UKKworCitkZWYgY3JlYXRlTWFrZWZpbGVDb21tYW5kQ2FjaGUoYnVpbGRQYXRoKToKKyAgICBj
dXJEaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5jdXJkaXIpCisgICAgb3MuY2hkaXIoYnVp
bGRQYXRoKQorCisgICAgcHJpbnQgIj09PT0gQ3JlYXRpbmcgbWFrZV9jYWNoZSBkYXRhYmFzZSwg
bWlnaHQgdGFrZSBhIGZldyBzZWNvbmRzIgorICAgIHN1YnByb2Nlc3MuY2FsbCgibWFrZSAtbiAt
cyA+IiArIG1ha2VfY2FjaGVfZmlsZSwgc2hlbGw9VHJ1ZSkKKyAgICBvcy5jaGRpcihjdXJEaXIp
CisKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRQYXRoLCBtYWtlX2Nh
Y2hlX2ZpbGUpKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIHJldHVybiBGYWxzZQorCisK
K2RlZiBwYXJzZU1ha2VDYWNoZShidWlsZFBhdGgsIGZpbGVuYW1lKToKKworICAgIGJhc2VuYW1l
ID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKKyAgICB0cnk6CisgICAgICAgIGYgPSBvcGVu
KG9zLnBhdGguam9pbihidWlsZFBhdGgsIG1ha2VfY2FjaGVfZmlsZSkpCisKKyAgICBleGNlcHQ6
CisgICAgICAgIHByaW50ICI9PT09IEVycm9yIGR1cmluZyByZWFkaW5nICVzIGZpbGUiLCBtYWtl
X2NhY2hlX2ZpbGUKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBsaW5lcyA9IGYucmVhZGxpbmVz
KCkKKyAgICBmLmNsb3NlKCkKKyAgICBjb21tYW5kTGluZSA9IE5vbmUKKworICAgIGZvciBsaW5l
IGluIGxpbmVzOgorICAgICAgICAjIGluIGNhc2Ugd2UgZm91bmQgdGhlIGxpbmUKKyAgICAgICAg
aWYgcmUubWF0Y2goIi4qIiArIGJhc2VuYW1lICsgIi4qIiwgbGluZSk6CisgICAgICAgICAgICBj
b21tYW5kTGluZSA9IGxpbmUKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiBjb21tYW5kTGlu
ZToKKyAgICAgICAgbWF0Y2hlcyA9IHJlLmZpbmRhbGwoIi1bSSxELHAsT11bXHcsXC4sLywtXSoo
Pzo9XCI/XHcqXCI/KT8iLCBjb21tYW5kTGluZSkKKyAgICAgICAgY29tbW9uRmxhZ3MuZXh0ZW5k
KG1hdGNoZXMpCisKKworZGVmIEZsYWdzRm9yRmlsZShmaWxlbmFtZSk6CisgICAgZmluYWxfZmxh
Z3MgPSBbXQorICAgIHJldHVyblZhbHVlID0geworICAgICAgICAnZmxhZ3MnOiBjb21tb25GbGFn
cywKKyAgICAgICAgJ2RvX2NhY2hlJzogVHJ1ZX0KKworICAgICMgaGVhZGVycyBmaWxlcyBjYW4n
dCBiZSBidWlsdCwgc28gd2UncmUgZ2V0dGluZyB0aGUgY3BwIGluc3RlYWQuCisgICAgaWYgZmls
ZW5hbWUuZW5kc3dpdGgoJy5oJyk6CisgICAgICAgIGFsdF9uYW1lID0gZmlsZW5hbWVbOi0yXSAr
ICIuY3BwIgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhhbHRfbmFtZSk6CisgICAgICAgICAg
ICBmaWxlbmFtZSA9IGFsdF9uYW1lCisgICAgICAgICMgd2Ugc2hvdWxkIGFsc28gaW5jbHVkZSBj
b25maWcuaCBmaWxlLCBzbyBnbGliIE1BQ1JPUyB3aWxsIGJlIGNvcnJlY3RseSByZWFkLgorICAg
ICAgICBjb21tb25GbGFncy5hcHBlbmQoIi1pbmNsdWRlY29uZmlnLmgiKQorCisgICAgcm9vdFBh
dGggPSBmaW5kUm9vdFBhdGgoKQorICAgIGlmIG5vdCByb290UGF0aDoKKyAgICAgICAgIyBOb3Qg
YSB3ZWJraXQgYnVpbGQgZGlyLiBKdXN0IGlnbm9yZSBpdAorICAgICAgICBwcmludCAiPT09PSB3
ZWJraXQgcm9vdCBwYXRoIGNvdWxkbid0IGJlIGZvdW5kIgorICAgICAgICByZXR1cm4gcmV0dXJu
VmFsdWUKKworICAgIGJ1aWxkUGF0aCA9IGZpbmRCdWlsZFBhdGgocm9vdFBhdGgpCisgICAgaWYg
bm90IGJ1aWxkUGF0aDoKKyAgICAgICAgcHJpbnQgIj09PT0gd2Via2l0IGJ1aWxkIHBhdGggY291
bGRuJ3QgYmUgZm91bmQuIERpZCB5b3UgcnVuIC4vY29uZmlndXJlPyIKKyAgICAgICAgcmV0dXJu
IHJldHVyblZhbHVlCisKKyAgICBpZiBub3QgY2hlY2tGb3JNYWtlZmlsZUNvbW1hbmRDYWNoZShi
dWlsZFBhdGgpOgorICAgICAgICBwcmludCAiPT09PSBNYWtlRmlsZSBjb21tYW5kIGNhY2hlIGNv
dWxkbid0IG5vdCBiZSBjcmVhdGVkIC8gdXBkYXRlZCIKKyAgICAgICAgcmV0dXJuIHJldHVyblZh
bHVlCisKKyAgICBwYXJzZU1ha2VDYWNoZShidWlsZFBhdGgsIGZpbGVuYW1lKQorCisgICAgZmlu
YWxGbGFncyA9IE1ha2VSZWxhdGl2ZVBhdGhzSW5GbGFnc0Fic29sdXRlKGNvbW1vbkZsYWdzLCBi
dWlsZFBhdGgpCisKKyAgICByZXR1cm4geworICAgICAgICAnZmxhZ3MnOiBmaW5hbEZsYWdzLAor
ICAgICAgICAnZG9fY2FjaGUnOiBUcnVlfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219016</attachid>
            <date>2013-12-11 16:39:20 -0800</date>
            <delta_ts>2013-12-12 10:40:09 -0800</delta_ts>
            <desc>Iterated version of Danilo&apos;s patch</desc>
            <filename>0001-Adding-a-.ycm_extra_conf-file-for-webkitGtk.patch</filename>
            <type>text/plain</type>
            <size>9570</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA5YTE1MTRlOGYyYTY1Yjg0MDg0NjMyY2E4NTUxZjVlZTQ2YmRiODEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDEyIERlYyAyMDEzIDAxOjMwOjAyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
QWRkaW5nIGEgLnljbV9leHRyYV9jb25mIGZpbGUgZm9yIHdlYmtpdEd0awogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTYxOAoKUGF0Y2ggYnkgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+IGFuZCBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1
bGEgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+IG9uIDIwMTMtMTItMTEKUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgpBZGRlZCBhIFlvdUNvbXBsZXRlTWUgZmxhZyBkaXNjb3Zlcnkg
c2NyaXB0IGZvciBWaW0gYW5kIHRoZSBHVEsrIHBvcnQuIFRoZSBzY3JpcHQKcmVhZCB0aGUgR1RL
KyBidWlsZCBmaWxlcyB0byBkZXRlcm1pbmUgZHluYW1pY2FsbHkgd2hhdCBmbGFncyB0byBjb21w
aWxlIGEgc291cmNlCmZpbGUgd2l0aC4gVGhpcyBhbGxvd3MgVmltIHRvIHByb3ZpZGUgYXV0by1j
b21wbGV0ZSBmb3IgQysrL0MgbGFuZ3VhZ2UuIFNlZQpodHRwczovL2dpdGh1Yi5jb20vVmFsbG9y
aWMvWW91Q29tcGxldGVNZSBmb3IgaG93IHRvIHVzZSB0aGlzIGZpbGUuCgouOgoKKiAuZ2l0aWdu
b3JlOiBJZ25vcmUgdGhlIFlDTSBzeW1saW5rcyBpbiB0aGUgdHJlZS4KClRvb2xzOgoKKiBndGsv
Y29tbW9uLnB5OgooZ2V0X2J1aWxkX3BhdGgpOiBBZGRlZCBhIGZhdGFsIGFyZ3VtZW50IHRvIGJ1
aWxkX3BhdGggdG8gYXZvaWQgY3Jhc2hpbmcgWUNNIG9uIGZhaWx1cmUuCiogZ3RrL3ljbV9leHRy
YV9jb25mLnB5OiBBZGRlZC4KLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgfCAgIDMg
KwogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrKysKIFRvb2xzL0NoYW5nZUxv
ZyAgICAgICAgICAgICB8ICAxNiArKysrKwogVG9vbHMvZ3RrL2NvbW1vbi5weSAgICAgICAgIHwg
ICA1ICstCiBUb29scy9ndGsveWNtX2V4dHJhX2NvbmYucHkgfCAxNTEgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTg3IGluc2Vy
dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvZ3RrL3lj
bV9leHRyYV9jb25mLnB5CgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5k
ZXggZjQ1YTk3NS4uYzVhYzBjYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdu
b3JlCkBAIC0xMTcsMyArMTE3LDYgQEAgdGFncwogLnByb2plY3QKIC5jcHJvamVjdAogLnNldHRp
bmdzCisKKyMgSWdub3JlIFlvdUNvbXBsZXRlTWUgc3ltbGlua3MKKy55Y21fZXh0cmFfY29uZi5w
eQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc3ODgxMTQuLjEzN2E2
MTIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxMy0xMi0xMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+IGFu
ZCBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgIDxkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNv
LnVrPgorCisgICAgICAgIEFkZGluZyBhIC55Y21fZXh0cmFfY29uZiBmaWxlIGZvciB3ZWJraXRH
dGsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTYx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgWW91Q29tcGxldGVNZSBmbGFnIGRpc2NvdmVyeSBzY3JpcHQgZm9yIFZpbSBhbmQgdGhlIEdU
SysgcG9ydC4gVGhlIHNjcmlwdAorICAgICAgICByZWFkIHRoZSBHVEsrIGJ1aWxkIGZpbGVzIHRv
IGRldGVybWluZSBkeW5hbWljYWxseSB3aGF0IGZsYWdzIHRvIGNvbXBpbGUgYSBzb3VyY2UKKyAg
ICAgICAgZmlsZSB3aXRoLiBUaGlzIGFsbG93cyBWaW0gdG8gcHJvdmlkZSBhdXRvLWNvbXBsZXRl
IGZvciBDKysvQyBsYW5ndWFnZS4gU2VlCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9WYWxs
b3JpYy9Zb3VDb21wbGV0ZU1lIGZvciBob3cgdG8gdXNlIHRoaXMgZmlsZS4KKworICAgICAgICAq
IC5naXRpZ25vcmU6IElnbm9yZSB0aGUgWUNNIHN5bWxpbmtzIGluIHRoZSB0cmVlLgorCiAyMDEz
LTEyLTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBBZGQgV2ViR0wgc3VwcG9ydCB1bmRlciBXYXlsYW5kCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjY0YWMxZi4uMGVlZTBjNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDEzLTEyLTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4g
YW5kIERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEu
Y28udWs+CisKKyAgICAgICAgQWRkaW5nIGEgLnljbV9leHRyYV9jb25mIGZpbGUgZm9yIHdlYmtp
dEd0aworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5
NjE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgYSBZb3VDb21wbGV0ZU1lIGZsYWcgZGlzY292ZXJ5IHNjcmlwdCBmb3IgVmltIGFuZCB0aGUg
R1RLKyBwb3J0LiBUaGUgc2NyaXB0CisgICAgICAgIHJlYWQgdGhlIEdUSysgYnVpbGQgZmlsZXMg
dG8gZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHdoYXQgZmxhZ3MgdG8gY29tcGlsZSBhIHNvdXJjZQor
ICAgICAgICBmaWxlIHdpdGguIFRoaXMgYWxsb3dzIFZpbSB0byBwcm92aWRlIGF1dG8tY29tcGxl
dGUgZm9yIEMrKy9DIGxhbmd1YWdlLiBTZWUKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1Zh
bGxvcmljL1lvdUNvbXBsZXRlTWUgZm9yIGhvdyB0byB1c2UgdGhpcyBmaWxlLgorCisgICAgICAg
ICogZ3RrL2NvbW1vbi5weToKKyAgICAgICAgKGdldF9idWlsZF9wYXRoKTogQWRkZWQgYSBmYXRh
bCBhcmd1bWVudCB0byBidWlsZF9wYXRoIHRvIGF2b2lkIGNyYXNoaW5nIFlDTSBvbiBmYWlsdXJl
LgorICAgICAgICAqIGd0ay95Y21fZXh0cmFfY29uZi5weTogQWRkZWQuCisKIDIwMTMtMTItMDkg
IFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFk
ZCBXZWJHTCBzdXBwb3J0IHVuZGVyIFdheWxhbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9jb21t
b24ucHkgYi9Ub29scy9ndGsvY29tbW9uLnB5CmluZGV4IDkyYjZjZjguLjQyNTVjOWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL2d0ay9jb21tb24ucHkKKysrIGIvVG9vbHMvZ3RrL2NvbW1vbi5weQpAQCAt
MzYsNyArMzYsNyBAQCBkZWYgdG9wX2xldmVsX3BhdGgoKmFyZ3MpOgogICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKigob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLics
ICcuLicpLCkgKyBhcmdzKSkKIAogCi1kZWYgZ2V0X2J1aWxkX3BhdGgoYnVpbGRfdHlwZXM9KCdS
ZWxlYXNlJywgJ0RlYnVnJykpOgorZGVmIGdldF9idWlsZF9wYXRoKGJ1aWxkX3R5cGVzPSgnUmVs
ZWFzZScsICdEZWJ1ZycpLCBmYXRhbD1UcnVlKToKICAgICBnbG9iYWwgYnVpbGRfZGlyCiAgICAg
aWYgYnVpbGRfZGlyOgogICAgICAgICByZXR1cm4gYnVpbGRfZGlyCkBAIC03Niw3ICs3Niw4IEBA
IGRlZiBnZXRfYnVpbGRfcGF0aChidWlsZF90eXBlcz0oJ1JlbGVhc2UnLCAnRGVidWcnKSk6CiAg
ICAgICAgIHJldHVybiBidWlsZF9kaXIKIAogICAgIHByaW50KCdDb3VsZCBub3QgZGV0ZXJtaW5l
IGJ1aWxkIGRpcmVjdG9yeS4nKQotICAgIHN5cy5leGl0KDEpCisgICAgaWYgZmF0YWw6CisgICAg
ICAgIHN5cy5leGl0KDEpCiAKIAogZGVmIGJ1aWxkX3BhdGhfZm9yX2J1aWxkX3R5cGVzKGJ1aWxk
X3R5cGVzLCAqYXJncyk6CmRpZmYgLS1naXQgYS9Ub29scy9ndGsveWNtX2V4dHJhX2NvbmYucHkg
Yi9Ub29scy9ndGsveWNtX2V4dHJhX2NvbmYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjU3YjdlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2d0ay95Y21fZXh0cmFf
Y29uZi5weQpAQCAtMCwwICsxLDE1MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHly
aWdodCAoQykgMjAxMyBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5ldUBnbWFp
bC5jb20+CisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCBzeXMKKworIyBJdCdzIHZlcnkgbGlrZWx5IHRoYXQgdGhpcyBzY3JpcHQgaXMgYSBzeW1saW5r
IHNvbWV3aGVyZSBpbiB0aGUgV2ViS2l0IGRpcmVjdG9yeSwKKyMgc28gd2UgdHJ5IHRvIGZpbmQg
dGhlIGFjdHVhbCBzY3JpcHQgbG9jYXRpb24gc28gdGhhdCB3ZSBjYW4gbG9jYXRlIHRoZSB0b29s
cworIyBkaXJlY3RvcnkuCitpZiBvcy5wYXRoLmlzbGluayhfX2ZpbGVfXyk6CisgICAgX190b29s
c19kaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUob3MucmVhZGxpbmsoX19maWxlX18pKQorZWxz
ZToKKyAgICBfX3Rvb2xzX2RpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK3N5
cy5wYXRoID0gW19fdG9vbHNfZGlyZWN0b3J5XSArIHN5cy5wYXRoCitpbXBvcnQgY29tbW9uCisK
K01BS0VfVFJBQ0VfRklMRV9OQU1FID0gInljbS1tYWtlLXRyYWNlIgorRkxBR1NfUFJFQ0VESU5H
X1BBVEhTID0gWyctaXN5c3RlbScsICctSScsICctaXF1b3RlJywgJy0tc3lzcm9vdD0nXQorCisK
K2RlZiB0cmFuc2Zvcm1fcmVsYXRpdmVfcGF0aHNfdG9fYWJzb2x1dGVfcGF0aHMoYXJndW1lbnRz
LCBidWlsZF9wYXRoKToKKyAgICByZXN1bHQgPSBbXQorCisgICAgbWFrZV9uZXh0X2Fic29sdXRl
ID0gRmFsc2UKKyAgICBmb3IgYXJndW1lbnQgaW4gYXJndW1lbnRzOgorICAgICAgICBpZiBtYWtl
X25leHRfYWJzb2x1dGU6CisgICAgICAgICAgICBtYWtlX25leHRfYWJzb2x1dGUgPSBGYWxzZQor
ICAgICAgICAgICAgaWYgbm90IGFyZ3VtZW50LnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgICAg
ICAgICBhcmd1bWVudCA9IG9zLnBhdGguam9pbihidWlsZF9wYXRoLCBhcmd1bWVudCkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGZvciBmbGFnIGluIEZMQUdTX1BSRUNFRElOR19QQVRIUzoK
KyAgICAgICAgICAgICAgICAjIFNvbWUgZmxhZ3MgcHJlY2VkZSB0aGUgcGF0aCBpbiB0aGUgbGlz
dC4gRm9yIHRob3NlIHdlIG1ha2UgdGhlCisgICAgICAgICAgICAgICAgIyBuZXh0IGFyZ3VtZW50
IGFic29sdXRlLgorICAgICAgICAgICAgICAgIGlmIGFyZ3VtZW50ID09IGZsYWc6CisgICAgICAg
ICAgICAgICAgICAgIG1ha2VfbmV4dF9hYnNvbHV0ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKworICAgICAgICAgICAgICAgICMgU29tZSBhcmd1bWVudCBjb250YWluIHRoZSBm
bGFnIGFuZCB0aGUgcGF0aCB0b2dldGhlci4gRm9yIHRoZXNlCisgICAgICAgICAgICAgICAgaWYg
YXJndW1lbnQuc3RhcnRzd2l0aChmbGFnKToKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQg
PSBmbGFnICsgb3MucGF0aC5qb2luKGJ1aWxkX3BhdGgsIGFyZ3VtZW50W2xlbihmbGFnKTpdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJlc3VsdC5hcHBlbmQoYXJndW1l
bnQpCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBjcmVhdGVfbWFrZV90cmFjZV9maWxlKGJ1
aWxkX3BhdGgpOgorICAgIHByaW50ICJDcmVhdGluZyBtYWtlIHRyYWNlIGZpbGUgZm9yIFlvdUNv
bXBsZXRlTWUsIG1pZ2h0IHRha2UgYSBmZXcgc2Vjb25kcyIKKyAgICBvcy5jaGRpcihidWlsZF9w
YXRoKQorICAgIHN1YnByb2Nlc3MuY2FsbCgibWFrZSAtbiAtcyA+ICVzIiAlIE1BS0VfVFJBQ0Vf
RklMRV9OQU1FLCBzaGVsbD1UcnVlKQorCisKK2RlZiBtYWtlX3RyYWNlX2ZpbGVfdXBfdG9fZGF0
ZShidWlsZF9wYXRoKToKKyAgICB0cmFjZV9maWxlID0gb3MucGF0aC5qb2luKGJ1aWxkX3BhdGgs
IE1BS0VfVFJBQ0VfRklMRV9OQU1FKQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZSh0cmFjZV9m
aWxlKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBtYWtlZmlsZSA9IG9zLnBhdGguam9p
bihidWlsZF9wYXRoLCAnR05VbWFrZWZpbGUnKQorICAgIGlmIG9zLnBhdGguZ2V0bXRpbWUodHJh
Y2VfZmlsZSkgPCBvcy5wYXRoLmdldGN0aW1lKG1ha2VmaWxlKToKKyAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICByZXR1cm4gVHJ1ZQorCisKK2RlZiBlbnN1cmVfbWFrZV90cmFjZV9maWxlKGJ1
aWxkX3BhdGgpOgorICAgIGlmIG1ha2VfdHJhY2VfZmlsZV91cF90b19kYXRlKGJ1aWxkX3BhdGgp
OgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGNyZWF0ZV9tYWtlX3RyYWNlX2ZpbGUoYnVpbGRf
cGF0aCkKKyAgICByZXR1cm4gbWFrZV90cmFjZV9maWxlX3VwX3RvX2RhdGUoYnVpbGRfcGF0aCkK
KworCitkZWYgZ2V0X2NvbXBpbGF0aW9uX2ZsYWdzX2Zyb21fYnVpbGRfY29tbWFuZGxpbmUoY29t
bWFuZF9saW5lLCBidWlsZF9wYXRoKToKKyAgICBmbGFncyA9IHJlLmZpbmRhbGwoIi1bSSxELHAs
T11bXHcsXC4sLywtXSooPzo9XCI/XHcqXCI/KT8iLCBjb21tYW5kX2xpbmUpCisgICAgcmV0dXJu
IHRyYW5zZm9ybV9yZWxhdGl2ZV9wYXRoc190b19hYnNvbHV0ZV9wYXRocyhmbGFncywgYnVpbGRf
cGF0aCkKKworCitkZWYgZ2V0X2NvbXBpbGF0aW9uX2ZsYWdzX2Zvcl9maWxlKGJ1aWxkX3BhdGgs
IGZpbGVuYW1lKToKKyAgICB0cmFjZV9maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfcGF0
aCwgTUFLRV9UUkFDRV9GSUxFX05BTUUpCisKKyAgICB0cnk6CisgICAgICAgIHRyYWNlX2ZpbGUg
PSBvcGVuKHRyYWNlX2ZpbGVfcGF0aCkKKyAgICAgICAgbGluZXMgPSB0cmFjZV9maWxlLnJlYWRs
aW5lcygpCisgICAgICAgIHRyYWNlX2ZpbGUuY2xvc2UoKQorICAgIGV4Y2VwdDoKKyAgICAgICAg
cHJpbnQgIj09PT0gRXJyb3IgZHVyaW5nIHJlYWRpbmcgJXMgZmlsZSIsIHRyYWNlX2ZpbGVfcGF0
aAorICAgICAgICByZXR1cm4gW10KKworICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShm
aWxlbmFtZSkKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgaWYgbGluZS5maW5kKGJh
c2VuYW1lKSAhPSAtMSBhbmQgbGluZS5maW5kKCJDQyIpICE9IC0xIG9yIGxpbmUuZmluZCgiQ1hY
IikgIT0gLTE6CisgICAgICAgICAgICByZXR1cm4gZ2V0X2NvbXBpbGF0aW9uX2ZsYWdzX2Zyb21f
YnVpbGRfY29tbWFuZGxpbmUobGluZSwgYnVpbGRfcGF0aCkKKworICAgIHByaW50ICJDb3VsZCBu
b3QgZmluZCBmbGFncyBmb3IgJXMiICUgZmlsZW5hbWUKKyAgICByZXR1cm4gW10KKworCitkZWYg
RmxhZ3NGb3JGaWxlKGZpbGVuYW1lKToKKyAgICAiIiJUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBv
aW50IGZvciBZQ00uIEl0cyBpbnRlcmZhY2UgaXMgZml4ZWQuCisKKyAgICBBcmdzOgorICAgICAg
ZmlsZW5hbWU6IChTdHJpbmcpIFBhdGggdG8gc291cmNlIGZpbGUgYmVpbmcgZWRpdGVkLgorCisg
ICAgUmV0dXJuczoKKyAgICAgIChEaWN0aW9uYXJ5KQorICAgICAgICAnZmxhZ3MnOiAoTGlzdCBv
ZiBTdHJpbmdzKSBDb21tYW5kIGxpbmUgZmxhZ3MuCisgICAgICAgICdkb19jYWNoZSc6IChCb29s
ZWFuKSBUcnVlIGlmIHRoZSByZXN1bHQgc2hvdWxkIGJlIGNhY2hlZC4KKyAgICAiIiIKKworICAg
IHJlc3VsdCA9IHsnZmxhZ3MnOiBbJy1zdGQ9YysrMTEnLCAnLXgnLCAnYysrJ10sICdkb19jYWNo
ZSc6IFRydWV9CisKKyAgICAjIEhlYWRlcnMgY2FuJ3QgYmUgYnVpbHQsIHNvIHdlIGdldCB0aGUg
c291cmNlIGZpbGUgZmxhZ3MgaW5zdGVhZC4KKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmgn
KToKKyAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTJdICsgIi5jcHAiCisgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
CisKKyAgICAgICAgIyBGb3JjZSBjb25maWcuaCBmaWxlIGluY2x1c2lvbiwgZm9yIEdMaWIgbWFj
cm9zLgorICAgICAgICByZXN1bHRbJ2ZsYWdzJ10uYXBwZW5kKCItaW5jbHVkZWNvbmZpZy5oIikK
KworICAgIGJ1aWxkX3BhdGggPSBjb21tb24uZ2V0X2J1aWxkX3BhdGgoZmF0YWw9RmFsc2UpCisg
ICAgaWYgbm90IGJ1aWxkX3BhdGg6CisgICAgICAgIHByaW50ICJDb3VsZCBub3QgZmluZCBXZWJL
aXQgYnVpbGQgcGF0aC4iCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGlmIG5vdCBlbnN1
cmVfbWFrZV90cmFjZV9maWxlKGJ1aWxkX3BhdGgpOgorICAgICAgICBwcmludCAiQ291bGQgbm90
IGNyZWF0ZSBtYWtlIHRyYWNlIGZpbGUiCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIHJl
c3VsdFsnZmxhZ3MnXS5leHRlbmQoZ2V0X2NvbXBpbGF0aW9uX2ZsYWdzX2Zvcl9maWxlKGJ1aWxk
X3BhdGgsIGZpbGVuYW1lKSkKKyAgICByZXR1cm4gcmVzdWx0CisKK2lmIF9fbmFtZV9fID09ICJf
X21haW5fXyI6CisgICAgaW1wb3J0IHN5cworICAgIGlmIGxlbihzeXMuYXJndikgPj0gMjoKKyAg
ICAgICAgcHJpbnQgRmxhZ3NGb3JGaWxlKHN5cy5hcmd2WzFdKQotLSAKMS44LjEuMgoK
</data>
<flag name="review"
          id="242605"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>