<?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>27461</bug_id>
          
          <creation_ts>2009-07-20 14:09:33 -0700</creation_ts>
          <short_desc>Add checks for namespace indentation to cpplint</short_desc>
          <delta_ts>2009-07-21 11:22:28 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>levin</cc>
    
    <cc>manyoso</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133222</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-20 14:09:33 -0700</bug_when>
    <thetext>cpplint currently does not check the namespace indentation style rules (#3 and #4 in &quot;Indentation&quot; at http://webkit.org/coding/coding-style.html), and my first patch for WebKit is tackling that. Note that the check for &quot;no indentation in implementation files&quot; only checks the first non-empty line, because otherwise a much more complicated solution would need to be written. The way this patch does it will work in most cases and should not produce false positives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133231</commentid>
    <comment_count>1</comment_count>
      <attachid>33106</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-20 14:27:05 -0700</bug_when>
    <thetext>Created attachment 33106
Checks for namespace indentation to cpplint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133233</commentid>
    <comment_count>2</comment_count>
      <attachid>33107</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-20 14:43:20 -0700</bug_when>
    <thetext>Created attachment 33107
Add checks for namespace indentation to cpplint (try 2)

Sorry, I forgot an obsolete comment in there (the checks now actually do cover namespaces in implementation files).
Also, adding the copyright for Torch Mobile, as Bugzilla and Adam Treat suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133250</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 15:09:13 -0700</bug_when>
    <thetext>Did you mean to mark this for review -&gt; r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133251</commentid>
    <comment_count>4</comment_count>
      <attachid>33111</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-20 15:12:01 -0700</bug_when>
    <thetext>Created attachment 33111
Add checks for namespace indentation to cpplint (try 3)

One more try, this time updating the method apidox (had a copy-n-paste error in it) and being nice to preprocessor instructions.
Other parts like &quot;using namespace Foo;&quot; might also get exceptions, but then those are standard C++ code and should probably be treated like all other C++ code as well. So not building any special cases for those into the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133255</commentid>
    <comment_count>5</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-20 15:15:40 -0700</bug_when>
    <thetext>@David: Didn&apos;t I mark it as r? (Flagging just the attachment is enough, right? Unfortunately with the updated patch I don&apos;t see whether the previous one had been marked or not, maybe I forgot to mark that one.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133310</commentid>
    <comment_count>6</comment_count>
      <attachid>33111</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 17:36:56 -0700</bug_when>
    <thetext>Comment on attachment 33111
Add checks for namespace indentation to cpplint (try 3)

Cool.  Thanks for adding this.  There are a few things to address below at this point.


&gt; diff --git a/WebKitTools/Scripts/modules/cpplint.py b/WebKitTools/Scripts/modules/cpplint.py
&gt;  # Copyright (c) 2009 Google Inc. All rights reserved.
&gt; +# Copyright (c) 2009 Torch Mobile Inc.

Not necessary but you would make me happy if you changed the (c) to (C) in both of these (and in the other file).

&gt; +def check_namespace_indentation(filename, clean_lines, line_number, file_extension, error):
...
&gt; +    line = clean_lines.elided[line_number]        # get rid of comments and strings

Just one space before the #.


&gt; +    if not match(r&apos;\s*namespace\s+\S+\s+{\s*$&apos;, line):
I would change this to 
   namespace_match = match(r&apos;(?P&lt;namespace_indentation&gt;\s*)namespace\s+\S+\s*{\s*$&apos;, line):
   if not namespace_match:

I did two changes:
1. I made &quot;namespace WebKit{&quot; match so that this code can catch things even if there is a bad style.
2. I added a named group which allows the next change:

&gt; +    namespace_indentation = line[0 : line.find(&apos;namespace&apos;)]

namespace_indentation = namespace_match.group(&apos;namespace_indentation&apos;)

&gt; +    if file_extension == &apos;h&apos;:
&gt; +        is_implementation_file = False
&gt; +    elif file_extension == &apos;cpp&apos; or file_extension == &apos;c&apos; or file_extension == &apos;mm&apos;:
&gt; +        is_implementation_file = True
&gt; +    else:
&gt; +        return
&gt; +
&gt; +    is_header_file = not is_implementation_file

Note that cpplint only processes files with certain extensions already, so there is no need to do the filtering again here.

With that in mind, consider this
    is_header_file = file_extension == &apos;h&apos;
    is_implementation_file = not is_header_file

&gt; +    line_offset = 0
&gt; +
&gt; +    if is_header_file:
&gt; +        inner_indentation = namespace_indentation + &apos;    &apos;

  inner_indentation = namespace_indentation + &apos; &apos; * 4
Makes it clearer that it is 4 spaces.

&gt; +        for current_line in clean_lines.raw_lines[line_number + 1 : clean_lines.num_lines()]:

No spaces around &quot;:&quot;
Also, for indexes at the edges, you don&apos;t need to list them, so you should do this

for current_line in clean_lines.raw_lines[line_number + 1:]:

&gt; +            # Skip not only empty lines but also those with preprocessor directives.

What about labels? (Not case labels but other labels.)

&gt; +            if current_line.strip() == &apos;&apos; or current_line.startswith(&apos;#&apos;):
&gt; +                continue
&gt; +
&gt; +            if current_line.find(inner_indentation) != 0:

if not current_line.startswith(inner_indentation):

&gt; +                # If something unindented was discovered, make sure it&apos;s a closing brace.
&gt; +                if current_line.find(namespace_indentation + &apos;}&apos;) != 0:

if not current_line.startswith(namespace_indentation + &apos;}&apos;):

&gt; +                    error(filename, line_number + line_offset, &apos;whitespace/indent&apos;, 4,
&gt; +                          &apos;In a header, code inside a namespace should be indented.&apos;)
&gt; +                break
&gt; +
&gt; +    if is_implementation_file:
&gt; +        for current_line in clean_lines.raw_lines[line_number + 1 : clean_lines.num_lines()]:

Use
        for current_line in clean_lines.raw_lines[line_number + 1:]:

&gt; +            line_offset += 1
&gt; +
&gt; +            if current_line.strip() == &apos;&apos;:
&gt; +                continue
&gt; +
&gt; +            remaining_line = current_line[len(namespace_indentation) : len(current_line)]

Use
            remaining_line = current_line[len(namespace_indentation):]

&gt; +            if not match(r&apos;\S+&apos;, remaining_line):

Why bother with the +?
 if not match(r&apos;\S&apos;, remaining_line):


&gt; diff --git a/WebKitTools/Scripts/modules/cpplint_unittest.py b/WebKitTools/Scripts/modules/cpplint_unittest.py
&gt; +    def assert_multi_line_lint(self, code, expected_message, file_name = &apos;foo.h&apos;):

No spaces around = for arguments (weird python style rule).

&gt; +    def assert_multi_line_lint_re(self, code, expected_message_re, file_name = &apos;foo.h&apos;):

No spaces around = for arguments (weird python style rule).


&gt; @@ -275,6 +277,64 @@ class CpplintTest(CpplintTestBase):
&gt;              &apos;Line ends in whitespace.  Consider deleting these extra spaces.&apos;
&gt;              &apos;  [whitespace/end_of_line] [4]&apos;)
&gt;  
&gt; +    def test_namespace_indentation(self):

These tests should go in class WebKitStyleTests:, def_test_indentation: Look for &quot;# 3.&quot; and &quot;# 4.&quot; to see where to add them.

&gt; +        # Test indentation in header files, which is required.
&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;namespace WebCore {\n&apos;

Add an empty line here to test that code as well.

&gt; +            &apos;    class Document {\n&apos;

Would be nice to add a line there as well to verify that lines indented further in the namespace are not flagged.

&gt; +            &apos;    };\n&apos;
&gt; +            &apos;}&apos;,
&gt; +            &apos;&apos;,
&gt; +            &apos;foo.h&apos;)


&gt; +
&gt; +        # Test indentation in implementation files, which is not allowed.
&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;namespace WebCore {\n&apos;

Add an empty line here to test that code as well.

&gt; +            &apos;Document::Foo() {}\n&apos;

Please make this a function with contents to verify that it doesn&apos;t flag the lines indented inside of the function.


&gt; +            &apos;}&apos;,
&gt; +            &apos;&apos;,
&gt; +            &apos;foo.cpp&apos;)
&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;namespace OuterNamespace {\n&apos;
&gt; +            &apos;namespace InnerNamespace {\n&apos;
&gt; +            &apos;Document::Foo() {}\n&apos;

Please add a space in side of { } (because I think this is the preferred WebKit style and the tests might as well reflect that).
(The same thing in other places where {} appears.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133317</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-20 17:58:39 -0700</bug_when>
    <thetext>btw, I wonder if this functionality would be better as something which processed the whole file at once (like the functions called from process_file_data()).

If written that way, I could see this function more easily morphing (in the future) into something which verified the indent of every line.  (Also it just feels more natural given that it loops over all of the lines after it hits a namespace.)

What do you think about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133469</commentid>
    <comment_count>8</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-21 08:27:22 -0700</bug_when>
    <thetext>Thanks for the detailed review! Here&apos;s a new patch addressing the points from comments #6.

&gt; ...
&gt; &gt; +    line = clean_lines.elided[line_number]        # get rid of comments and strings
&gt;
&gt; Just one space before the #.

Actually that line was copied from the function below, so the updated patch fixes both my line and the original one.

&gt; &gt; +            # Skip not only empty lines but also those with preprocessor directives.
&gt;
&gt; What about labels? (Not case labels but other labels.)

Good point, I added a check for those too - if they&apos;re at the start of a line, otherwise that&apos;s just weird, or a switch label. As the loop operates on raw lines (in order to catch indentation of comments as well), I didn&apos;t match until the end of the string &quot;$&quot; but only until the colon, hopefully it&apos;ll be ok this way. If not, I will need to loop over both raw and elided lines in parallel.

&gt; btw, I wonder if this functionality would be better as something which
&gt; processed the whole file at once (like the functions called from
&gt; process_file_data()).
&gt;
&gt; If written that way, I could see this function more easily morphing (in the
&gt; future) into something which verified the indent of every line.  (Also it just
&gt; feels more natural given that it loops over all of the lines after it hits a
&gt; namespace.)
&gt;
&gt; What do you think about this?

It might make sense in the long term if we want to build in further, more detailed checks. But checking the indent of every line also has a big downside, as such a &quot;continuous&quot; check needs to keep track of indentation state throughout all the lines that it checks. For example, my current patch avoids this situation for indentation files by only checking the first line after the namespace opens, because detecting the actual ending brace for the namespace is way over my head without some kind of at least a half-decent C++ parser. With an all-at-once approach, this kind of &quot;hack&quot; is not an option.

We&apos;d also need to build in manual nesting support (e.g. for nested namespaces, or switching from a namespace context to a class context and back) which the current check can avoid because it checks each context independently from each other.

So while an all-at-once approach has the potential to improve the quality of indentation checks in general, I think it&apos;s a larger undertaking and might necessitate more complexity than what&apos;s in scope of this patch. imho.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133470</commentid>
    <comment_count>9</comment_count>
      <attachid>33178</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-21 08:28:47 -0700</bug_when>
    <thetext>Created attachment 33178
Add checks for namespace indentation to cpplint (try 4)

See comment above, addresses various issues that were highlighted by David Levin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133484</commentid>
    <comment_count>10</comment_count>
      <attachid>33181</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-21 09:25:12 -0700</bug_when>
    <thetext>Created attachment 33181
Add checks for namespace indentation to cpplint (try 5)

Adapt checks for goto labels as discussed with Dave on IRC: empirical research shows that such labels are not used in header files, and therefore don&apos;t need to be checked. Also, add a test case for goto labels in implementation files, just to make sure the check actually works (although it probably won&apos;t be triggered anytime soon, because indented namespaced hardly exist anywhere in implementation files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133493</commentid>
    <comment_count>11</comment_count>
      <attachid>33181</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 09:45:40 -0700</bug_when>
    <thetext>Comment on attachment 33181
Add checks for namespace indentation to cpplint (try 5)

It could be landed as is.  If the lander would fix these issues, it would be even better.


&gt; diff --git a/WebKitTools/Scripts/modules/cpplint.py b/WebKitTools/Scripts/modules/cpplint.py
&gt; +def check_namespace_indentation(filename, clean_lines, line_number, file_extension, error):
&gt; +    &quot;&quot;&quot;Looks for indentation errors inside of namespaces.
&gt; +
&gt; +    Args:
&gt; +      filename: The name of the current file.
&gt; +      clean_lines: A CleansedLines instance containing the file.
&gt; +      line_number: The number of the line to check.
&gt; +      file_extension: The extension (dot not included) of the file.
&gt; +      error: The function to call with any errors found.
&gt; +    &quot;&quot;&quot;
&gt; +
&gt; +    line = clean_lines.elided[line_number] # get rid of comments and strings

It is nice to make comment look like sentences.  Start with a capital. End with a period.  (I know this was copied from elsewhere in the file.)


&gt; +    if is_implementation_file:
&gt; +        for current_line in clean_lines.raw_lines[line_number + 1:]:
&gt; +            line_offset += 1
&gt; +
&gt; +            # Skip not only empty lines but also those with (goto) labels.

You should be able to hit a goto label before you hit other code and break out of this, but no big deal.  Maybe it is useful to leave this in case we decide to extend this function to not have the break.


&gt; diff --git a/WebKitTools/Scripts/modules/cpplint_unittest.py b/WebKitTools/Scripts/modules/cpplint_unittest.py

&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;namespace WebCore {\n\n&apos;
&gt; +            &apos;bool Document::Foo() {}\n&apos;
&gt; +            &apos;    return true;\n&apos;

It would be nice to have valid code.  Something like this:

            &apos;bool Document::Foo()\n&apos;
            &apos;{\n&apos;
            &apos;    return true;\n&apos;
            &apos;}&apos;,

&gt; +            &apos;}&apos;,
&gt; +            &apos;&apos;,
&gt; +            &apos;foo.cpp&apos;)
&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;namespace OuterNamespace {\n&apos;
&gt; +            &apos;namespace InnerNamespace {\n&apos;
&gt; +            &apos;Document::Foo() { }\n&apos;
&gt; +            &apos;}&apos;,
&gt; +            &apos;&apos;,
&gt; +            &apos;foo.cpp&apos;)
&gt; +        self.assert_multi_line_lint(
&gt; +            &apos;    namespace WebCore {\n\n&apos;
&gt; +            &apos;    void Document::Foo() {}\n&apos;
&gt; +            &apos;start:  // infinite loops are fun!\n&apos;
&gt; +            &apos;        goto start;\n&apos;
Invalid code.

&gt; +            &apos;    }&apos;,
&gt; +            &apos;&apos;,
&gt; +            &apos;foo.cpp&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133497</commentid>
    <comment_count>12</comment_count>
      <attachid>33185</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2009-07-21 09:57:59 -0700</bug_when>
    <thetext>Created attachment 33185
Add checks for namespace indentation to cpplint (try 6)

Above issues fixed, apart from the one more goto label stuff. Newbie question: is it ok to repost a new patch as r+ if it was already reviewed with r+ before (and I only made slight changes like these)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133502</commentid>
    <comment_count>13</comment_count>
      <attachid>33185</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-21 10:11:41 -0700</bug_when>
    <thetext>Comment on attachment 33185
Add checks for namespace indentation to cpplint (try 6)

Sure posting a new patch like this is fine.  (It would be easier if there was diff between patches :) but that may come one day in the not too distant future).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133530</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-07-21 11:22:28 -0700</bug_when>
    <thetext>Landed with r46182.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33106</attachid>
            <date>2009-07-20 14:27:05 -0700</date>
            <delta_ts>2009-07-20 14:43:20 -0700</delta_ts>
            <desc>Checks for namespace indentation to cpplint</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>9006</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSBkOTI5YWIxN2UyNDUzZjJmZTc5OTExYzdhMDRhNjUxNDRmZDVkZDVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IE1vbiwgMjAgSnVsIDIwMDkgMTc6MTg6NTggLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDU5ICsrKysrKysrKysrKysrKysrKysKIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jcHBsaW50X3VuaXR0ZXN0LnB5IHwgICA3MCArKysrKysrKysrKysrKysrKysrKy0tLQogMyBm
aWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
ODE0MGQ4ZC4uNjlkNjVmYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTA3LTIwICBKYWtv
YiBQZXRzb3ZpdHMgIDxqYWtvYi5wZXRzb3ZpdHNAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBjaGVja3MgZm9yIG5h
bWVzcGFjZSBpbmRlbnRhdGlvbiB0byBjcHBsaW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NjEKKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxl
cy9jcHBsaW50LnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0
LnB5OgorCiAyMDA5LTA3LTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIGp1c3QgYWRkaW5nIEdhdmluIEJhcnJhY2xvdWdo
IGFzIHJldmlld2VyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2Nw
cGxpbnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludC5weQppbmRleCA4
OTk3NDQ0Li4wMTE5ZDVhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3BwbGludC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludC5weQpA
QCAtMTY1Nyw2ICsxNjU3LDY0IEBAIGRlZiBnZXRfcHJldmlvdXNfbm9uX2JsYW5rX2xpbmUoY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyKToKICAgICByZXR1cm4gKCcnLCAtMSkKIAogCitkZWYgY2hl
Y2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CisgICAgIiIiTG9va3MgZm9yIG1pc3BsYWNlZCBi
cmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KKworICAgIEFyZ3M6CisgICAgICBmaWxl
bmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBB
IENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVf
bnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZmlsZV9leHRl
bnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxlLgorICAg
ICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAg
ICAiIiIKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAgICAg
ICAjIGdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKKworICAgIGlmIG5vdCBtYXRjaChy
J1xzKm5hbWVzcGFjZVxzK1xTK1xzK3tccyokJywgbGluZSk6CisgICAgICAgIHJldHVybgorCisg
ICAgbmFtZXNwYWNlX2luZGVudGF0aW9uID0gbGluZVswIDogbGluZS5maW5kKCduYW1lc3BhY2Un
KV0KKworICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJzoKKyAgICAgICAgaXNfaW1wbGVtZW50
YXRpb25fZmlsZSA9IEZhbHNlCisgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSAnY3BwJyBvciBm
aWxlX2V4dGVuc2lvbiA9PSAnYycgb3IgZmlsZV9leHRlbnNpb24gPT0gJ21tJzoKKyAgICAgICAg
aXNfaW1wbGVtZW50YXRpb25fZmlsZSA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4K
KworICAgIGlzX2hlYWRlcl9maWxlID0gbm90IGlzX2ltcGxlbWVudGF0aW9uX2ZpbGUKKyAgICBs
aW5lX29mZnNldCA9IDAKKworICAgIGlmIGlzX2hlYWRlcl9maWxlOgorICAgICAgICBpbm5lcl9p
bmRlbnRhdGlvbiA9IG5hbWVzcGFjZV9pbmRlbnRhdGlvbiArICcgICAgJworCisgICAgICAgIGZv
ciBjdXJyZW50X2xpbmUgaW4gY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyICsgMSA6
IGNsZWFuX2xpbmVzLm51bV9saW5lcygpXToKKyAgICAgICAgICAgIGxpbmVfb2Zmc2V0ICs9IDEK
KyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpICE9ICcnIGFuZCBjdXJyZW50X2xp
bmUuZmluZChpbm5lcl9pbmRlbnRhdGlvbikgIT0gMDoKKyAgICAgICAgICAgICAgICAjIElmIHNv
bWV0aGluZyB1bmluZGVudGVkIHdhcyBkaXNjb3ZlcmVkLCBtYWtlIHN1cmUgaXQncyBhIGNsb3Np
bmcgYnJhY2UuCisgICAgICAgICAgICAgICAgaWYgY3VycmVudF9saW5lLmZpbmQobmFtZXNwYWNl
X2luZGVudGF0aW9uICsgJ30nKSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBlcnJvcihmaWxl
bmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5h
bWVzcGFjZSBzaG91bGQgYmUgaW5kZW50ZWQuJykKKyAgICAgICAgICAgICAgICBicmVhaworCisg
ICAgaWYgaXNfaW1wbGVtZW50YXRpb25fZmlsZToKKyAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBp
biBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXIgKyAxIDogY2xlYW5fbGluZXMubnVt
X2xpbmVzKCldOgorICAgICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQorCisgICAgICAgICAgICBp
ZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAnJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgICAgICByZW1haW5pbmdfbGluZSA9IGN1cnJlbnRfbGluZVtsZW4obmFtZXNwYWNl
X2luZGVudGF0aW9uKSA6IGxlbihjdXJyZW50X2xpbmUpXQorICAgICAgICAgICAgaWYgbm90IG1h
dGNoKHInXFMrJywgcmVtYWluaW5nX2xpbmUpOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVu
YW1lLCBsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAor
ICAgICAgICAgICAgICAgICAgICAgICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGlu
c2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLicpCisKKyAgICAgICAgICAg
ICMgSnVzdCBjaGVjayB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgaW4gYW55IGNhc2UsIGJlY2F1
c2UKKyAgICAgICAgICAgICMgb3RoZXJ3aXNlIHdlIHdvdWxkIG5lZWQgdG8gY291bnQgb3BlbmVk
IGFuZCBjbG9zZWQgYnJhY2VzLAorICAgICAgICAgICAgIyB3aGljaCBpcyBvYnZpb3VzbHkgYSBs
b3QgbW9yZSBjb21wbGljYXRlZC4KKyAgICAgICAgICAgIGJyZWFrCisKKwogZGVmIGNoZWNrX2Jy
YWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgIiIi
TG9va3MgZm9yIG1pc3BsYWNlZCBicmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KIApA
QCAtMTkxMiw2ICsxOTcwLDcgQEAgZGVmIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CiAgICAgICAgICAgICAgICdN
b3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZScpCiAKICAgICAjIFNvbWUgbW9y
ZSBzdHlsZSBjaGVja3MKKyAgICBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKQogICAgIGNo
ZWNrX2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKICAg
ICBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9y
KQogICAgIGNoZWNrX2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5w
eQppbmRleCBmNmU0ODc4Li44NGUzZWJhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvY3BwbGludF91bml0dGVzdC5weQpAQCAtMTI3LDE3ICsxMjcsMTggQEAgY2xhc3MgQ3Bw
bGludFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmV0dXJuIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRzKCkKIAogICAgICMgUGVyZm9ybSBsaW50IG92ZXIgbXVsdGlwbGUgbGlu
ZXMgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICBkZWYgcGVyZm9ybV9tdWx0aV9s
aW5lX2xpbnQoc2VsZiwgY29kZSk6CisgICAgZGVmIHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNl
bGYsIGNvZGUsIGZpbGVfbmFtZSk6CiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29s
bGVjdG9yKHNlbGYuYXNzZXJ0XykKICAgICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0g
ICAgICAgIGNwcGxpbnQucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoJ2Zvby5oJywgbGluZXMs
IGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21t
ZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIGxpbmVzID0g
Y3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBleHQgPSBmaWxlX25hbWVbZmls
ZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KICAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBsaW50Ll9D
bGFzc1N0YXRlKCkKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToK
LSAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfc3R5bGUoJ2Zvby5oJywgbGluZXMsIGksICdoJywg
ZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAgICAgY3BwbGludC5jaGVja19mb3Jfbm9uX3N0YW5k
YXJkX2NvbnN0cnVjdHMoJ2Zvby5oJywgbGluZXMsIGksIGNsYXNzX3N0YXRlLAorICAgICAgICAg
ICAgY3BwbGludC5jaGVja19zdHlsZShmaWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGVycm9yX2Nv
bGxlY3RvcikKKyAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25z
dHJ1Y3RzKGZpbGVfbmFtZSwgbGluZXMsIGksIGNsYXNzX3N0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQot
ICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZCgnZm9vLmgnLCBlcnJvcl9jb2xsZWN0
b3IpCisgICAgICAgIGNsYXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKGZpbGVfbmFtZSwgZXJyb3Jf
Y29sbGVjdG9yKQogICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQogCiAg
ICAgIyBTaW1pbGFyIHRvIHBlcmZvcm1fbXVsdGlfbGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tf
bGFuZ3VhZ2UgaW5zdGVhZCBvZgpAQCAtMjExLDExICsyMTIsMTEgQEAgY2xhc3MgQ3BwbGludFRl
c3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhl
eHBlY3RlZF9tZXNzYWdlLCBtZXNzYWdlcykKIAotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9s
aW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhleHBlY3RlZF9tZXNzYWdlLCBzZWxmLnBlcmZvcm1fbXVsdGlfbGluZV9saW50KGNvZGUp
KQorICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21l
c3NhZ2UsIGZpbGVfbmFtZSA9ICdmb28uaCcpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhl
eHBlY3RlZF9tZXNzYWdlLCBzZWxmLnBlcmZvcm1fbXVsdGlfbGluZV9saW50KGNvZGUsIGZpbGVf
bmFtZSkpCiAKLSAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZShzZWxmLCBjb2RlLCBl
eHBlY3RlZF9tZXNzYWdlX3JlKToKLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0
aV9saW5lX2xpbnQoY29kZSkKKyAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludF9yZShzZWxm
LCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlX3JlLCBmaWxlX25hbWUgPSAnZm9vLmgnKToKKyAgICAg
ICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1l
KQogICAgICAgICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3NhZ2Up
OgogICAgICAgICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsgJ0V4
cGVjdGVkIG1hdGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2FnZV9yZSArICciJykKIApAQCAtMjc1
LDYgKzI3Niw1NyBAQCBjbGFzcyBDcHBsaW50VGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgICAg
ICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNwYWNlLiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2Ug
ZXh0cmEgc3BhY2VzLicKICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBb
NF0nKQogCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX2luZGVudGF0aW9uKHNlbGYpOgorICAgICAg
ICAjIFRlc3QgaW5kZW50YXRpb24gaW4gaGVhZGVyIGZpbGVzLCB3aGljaCBpcyByZXF1aXJlZC4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVz
cGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJwor
ICAgICAgICAgICAgJyAgICB9O1xuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJycs
CisgICAgICAgICAgICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAg
ICAgICcgICAgbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAgICAgICcgICAg
ICAgIGNsYXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICcgICAgICAgIH07XG4nCisgICAg
ICAgICAgICAnICAgIH07XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAg
ICAgICAgICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnY2xhc3Mg
RG9jdW1lbnQge1xuJworICAgICAgICAgICAgJ307XG4nCisgICAgICAgICAgICAnfScsCisgICAg
ICAgICAgICAnSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBp
bmRlbnRlZC4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAg
ICAgICAgICAnZm9vLmgnKQorCisgICAgICAgICMgVGVzdCBpbmRlbnRhdGlvbiBpbiBpbXBsZW1l
bnRhdGlvbiBmaWxlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisg
ICAgICAgICAgICAnRG9jdW1lbnQ6OkZvbygpIHt9XG4nCisgICAgICAgICAgICAnfScsCisgICAg
ICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7
XG4nCisgICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAg
ICAgICdEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAg
ICcnLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICAjIFRoZXJlJ3Mgbm8gd29ya2lu
ZyB0ZXN0IHlldCB0aGF0IGNoZWNrcyBvbiBpbmNvcnJlY3QgbmFtZXNwYWNlCisgICAgICAgICMg
aW5kZW50YXRpb24gaW4gaW1wbGVtZW50YXRpb24gZmlsZXMsIHNvIGRpc2FibGUgaXQgZm9yIG5v
dy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25h
bWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcgICAgRG9jdW1lbnQ6OkZvbygpIHt9
XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnSW4gYW4gaW1wbGVtZW50YXRpb24g
ZmlsZSwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4nCisg
ICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAgICAgICAnZm9v
LmNwcCcpCisKICAgICAjIFRlc3QgQy1zdHlsZSBjYXN0IGNhc2VzLgogICAgIGRlZiB0ZXN0X2Nz
dHlsZV9jYXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW50KAotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33107</attachid>
            <date>2009-07-20 14:43:20 -0700</date>
            <delta_ts>2009-07-20 15:12:01 -0700</delta_ts>
            <desc>Add checks for namespace indentation to cpplint (try 2)</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>9435</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSBjYWFkYTAzNmYxNTUwZTYyYjNjNzdkOGVmZjJhZjY5NGY0ZmUzYWRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IE1vbiwgMjAgSnVsIDIwMDkgMTc6MzY6MDAgLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDYwICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVs
ZXMvY3BwbGludF91bml0dGVzdC5weSB8ICAgNjkgKysrKysrKysrKysrKysrKysrKystLS0KIDMg
ZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgxNDBkOGQuLjY5ZDY1ZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yMCAgSmFr
b2IgUGV0c292aXRzICA8amFrb2IucGV0c292aXRzQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hlY2tzIGZvciBu
YW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDYxCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY3BwbGludC5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVz
dC5weToKKwogMjAwOS0wNy0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCBqdXN0IGFkZGluZyBHYXZpbiBCYXJyYWNsb3Vn
aCBhcyByZXZpZXdlci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
cHBsaW50LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkKaW5kZXgg
ODk5NzQ0NC4uZjg3MzE3NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2NwcGxpbnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkK
QEAgLTIsNiArMiw3IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIwogIyBDb3B5cmlnaHQg
KGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChj
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0xNjU3LDYgKzE2NTgsNjQgQEAgZGVmIGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShj
bGVhbl9saW5lcywgbGluZV9udW1iZXIpOgogICAgIHJldHVybiAoJycsIC0xKQogCiAKK2RlZiBj
aGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKKyAgICAiIiJMb29rcyBmb3IgbWlzcGxhY2Vk
IGJyYWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxpbmUpLgorCisgICAgQXJnczoKKyAgICAgIGZp
bGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6
IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGlu
ZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBmaWxlX2V4
dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUuCisg
ICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgor
ICAgICIiIgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gICAg
ICAgICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncworCisgICAgaWYgbm90IG1hdGNo
KHInXHMqbmFtZXNwYWNlXHMrXFMrXHMre1xzKiQnLCBsaW5lKToKKyAgICAgICAgcmV0dXJuCisK
KyAgICBuYW1lc3BhY2VfaW5kZW50YXRpb24gPSBsaW5lWzAgOiBsaW5lLmZpbmQoJ25hbWVzcGFj
ZScpXQorCisgICAgaWYgZmlsZV9leHRlbnNpb24gPT0gJ2gnOgorICAgICAgICBpc19pbXBsZW1l
bnRhdGlvbl9maWxlID0gRmFsc2UKKyAgICBlbGlmIGZpbGVfZXh0ZW5zaW9uID09ICdjcHAnIG9y
IGZpbGVfZXh0ZW5zaW9uID09ICdjJyBvciBmaWxlX2V4dGVuc2lvbiA9PSAnbW0nOgorICAgICAg
ICBpc19pbXBsZW1lbnRhdGlvbl9maWxlID0gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVy
bgorCisgICAgaXNfaGVhZGVyX2ZpbGUgPSBub3QgaXNfaW1wbGVtZW50YXRpb25fZmlsZQorICAg
IGxpbmVfb2Zmc2V0ID0gMAorCisgICAgaWYgaXNfaGVhZGVyX2ZpbGU6CisgICAgICAgIGlubmVy
X2luZGVudGF0aW9uID0gbmFtZXNwYWNlX2luZGVudGF0aW9uICsgJyAgICAnCisKKyAgICAgICAg
Zm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXIgKyAx
IDogY2xlYW5fbGluZXMubnVtX2xpbmVzKCldOgorICAgICAgICAgICAgbGluZV9vZmZzZXQgKz0g
MQorICAgICAgICAgICAgaWYgY3VycmVudF9saW5lLnN0cmlwKCkgIT0gJycgYW5kIGN1cnJlbnRf
bGluZS5maW5kKGlubmVyX2luZGVudGF0aW9uKSAhPSAwOgorICAgICAgICAgICAgICAgICMgSWYg
c29tZXRoaW5nIHVuaW5kZW50ZWQgd2FzIGRpc2NvdmVyZWQsIG1ha2Ugc3VyZSBpdCdzIGEgY2xv
c2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50X2xpbmUuZmluZChuYW1lc3Bh
Y2VfaW5kZW50YXRpb24gKyAnfScpICE9IDA6CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEg
bmFtZXNwYWNlIHNob3VsZCBiZSBpbmRlbnRlZC4nKQorICAgICAgICAgICAgICAgIGJyZWFrCisK
KyAgICBpZiBpc19pbXBsZW1lbnRhdGlvbl9maWxlOgorICAgICAgICBmb3IgY3VycmVudF9saW5l
IGluIGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlciArIDEgOiBjbGVhbl9saW5lcy5u
dW1fbGluZXMoKV06CisgICAgICAgICAgICBsaW5lX29mZnNldCArPSAxCisKKyAgICAgICAgICAg
IGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgIHJlbWFpbmluZ19saW5lID0gY3VycmVudF9saW5lW2xlbihuYW1lc3Bh
Y2VfaW5kZW50YXRpb24pIDogbGVuKGN1cnJlbnRfbGluZSldCisgICAgICAgICAgICBpZiBub3Qg
bWF0Y2gocidcUysnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAgICAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQs
CisgICAgICAgICAgICAgICAgICAgICAgJ0luIGFuIGltcGxlbWVudGF0aW9uIGZpbGUsIGNvZGUg
aW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuJykKKworICAgICAgICAg
ICAgIyBKdXN0IGNoZWNrIHRoZSBmaXJzdCBub24tZW1wdHkgbGluZSBpbiBhbnkgY2FzZSwgYmVj
YXVzZQorICAgICAgICAgICAgIyBvdGhlcndpc2Ugd2Ugd291bGQgbmVlZCB0byBjb3VudCBvcGVu
ZWQgYW5kIGNsb3NlZCBicmFjZXMsCisgICAgICAgICAgICAjIHdoaWNoIGlzIG9idmlvdXNseSBh
IGxvdCBtb3JlIGNvbXBsaWNhdGVkLgorICAgICAgICAgICAgYnJlYWsKKworCiBkZWYgY2hlY2tf
YnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAi
IiJMb29rcyBmb3IgbWlzcGxhY2VkIGJyYWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxpbmUpLgog
CkBAIC0xOTEyLDYgKzE5NzEsNyBAQCBkZWYgY2hlY2tfc3R5bGUoZmlsZW5hbWUsIGNsZWFuX2xp
bmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKICAgICAgICAgICAgICAg
J01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lJykKIAogICAgICMgU29tZSBt
b3JlIHN0eWxlIGNoZWNrcworICAgIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3IpCiAgICAg
Y2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQog
ICAgIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJy
b3IpCiAgICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZXJyb3IpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91
bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0
LnB5CmluZGV4IGY2ZTQ4NzguLmM3Njk0N2EgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
bW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0LnB5CkBAIC0yLDYgKzIsNyBAQAogIyAtKi0gY29kaW5n
OiB1dGYtODsgLSotCiAjCiAjIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEyNywxNyArMTI4LDE4IEBAIGNsYXNz
IENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJldHVybiBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0cygpCiAKICAgICAjIFBlcmZvcm0gbGludCBvdmVyIG11bHRpcGxl
IGxpbmVzIGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgZGVmIHBlcmZvcm1fbXVs
dGlfbGluZV9saW50KHNlbGYsIGNvZGUpOgorICAgIGRlZiBwZXJmb3JtX211bHRpX2xpbmVfbGlu
dChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJv
ckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4n
KQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28uaCcsIGxp
bmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNwcGxpbnQucmVtb3ZlX211bHRpX2xpbmVf
Y29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBsaW5l
cyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZXh0ID0gZmlsZV9uYW1l
W2ZpbGVfbmFtZS5yZmluZCgnLicpICsgMTpdCiAgICAgICAgIGNsYXNzX3N0YXRlID0gY3BwbGlu
dC5fQ2xhc3NTdGF0ZSgpCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMo
KSk6Ci0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX3N0eWxlKCdmb28uaCcsIGxpbmVzLCBpLCAn
aCcsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfZm9yX25vbl9z
dGFuZGFyZF9jb25zdHJ1Y3RzKCdmb28uaCcsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKKyAgICAg
ICAgICAgIGNwcGxpbnQuY2hlY2tfc3R5bGUoZmlsZV9uYW1lLCBsaW5lcywgaSwgZXh0LCBlcnJv
cl9jb2xsZWN0b3IpCisgICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRf
Y29uc3RydWN0cyhmaWxlX25hbWUsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
cikKLSAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoJ2Zvby5oJywgZXJyb3JfY29s
bGVjdG9yKQorICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZChmaWxlX25hbWUsIGVy
cm9yX2NvbGxlY3RvcikKICAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkK
IAogICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRpX2xpbmVfbGludCwgYnV0IGNhbGxzIGNo
ZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKQEAgLTIxMSwxMSArMjEzLDExIEBAIGNsYXNzIENwcGxp
bnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZXhwZWN0ZWRfbWVzc2FnZSwgbWVzc2FnZXMpCiAKLSAgICBkZWYgYXNzZXJ0X211bHRpX2xp
bmVfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChj
b2RlKSkKKyAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBlY3Rl
ZF9tZXNzYWdlLCBmaWxlX25hbWUgPSAnZm9vLmgnKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlLCBm
aWxlX25hbWUpKQogCi0gICAgZGVmIGFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoc2VsZiwgY29k
ZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSk6Ci0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1f
bXVsdGlfbGluZV9saW50KGNvZGUpCisgICAgZGVmIGFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUo
c2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmlsZV9uYW1lID0gJ2Zvby5oJyk6Cisg
ICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1fbXVsdGlfbGluZV9saW50KGNvZGUsIGZpbGVf
bmFtZSkKICAgICAgICAgaWYgbm90IHJlLnNlYXJjaChleHBlY3RlZF9tZXNzYWdlX3JlLCBtZXNz
YWdlKToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnTWVzc2FnZSB3YXM6XG4nICsgbWVzc2FnZSAr
ICdFeHBlY3RlZCBtYXRjaCB0byAiJyArIGV4cGVjdGVkX21lc3NhZ2VfcmUgKyAnIicpCiAKQEAg
LTI3NSw2ICsyNzcsNTUgQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RCYXNlKToKICAg
ICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRo
ZXNlIGV4dHJhIHNwYWNlcy4nCiAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9lbmRfb2ZfbGlu
ZV0gWzRdJykKIAorICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9pbmRlbnRhdGlvbihzZWxmKToKKyAg
ICAgICAgIyBUZXN0IGluZGVudGF0aW9uIGluIGhlYWRlciBmaWxlcywgd2hpY2ggaXMgcmVxdWly
ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdu
YW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnICAgIGNsYXNzIERvY3VtZW50IHtc
bicKKyAgICAgICAgICAgICcgICAgfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAg
ICcnLAorICAgICAgICAgICAgJ2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCisgICAg
ICAgICAgICAnICAgIG5hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAn
ICAgICAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnICAgICAgICB9O1xuJwor
ICAgICAgICAgICAgJyAgICB9O1xuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJycs
CisgICAgICAgICAgICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAgICAgICAgJ2Ns
YXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICd9O1xuJworICAgICAgICAgICAgJ30nLAor
ICAgICAgICAgICAgJ0luIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQg
YmUgaW5kZW50ZWQuJworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAor
ICAgICAgICAgICAgJ2Zvby5oJykKKworICAgICAgICAjIFRlc3QgaW5kZW50YXRpb24gaW4gaW1w
bGVtZW50YXRpb24gZmlsZXMsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLgorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xu
JworICAgICAgICAgICAgJ0RvY3VtZW50OjpGb28oKSB7fVxuJworICAgICAgICAgICAgJ30nLAor
ICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3Bh
Y2Uge1xuJworICAgICAgICAgICAgJ25hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCisgICAg
ICAgICAgICAnRG9jdW1lbnQ6OkZvbygpIHt9XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAg
ICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAg
ICAgICAgICcgICAgRG9jdW1lbnQ6OkZvbygpIHt9XG4nCisgICAgICAgICAgICAnfScsCisgICAg
ICAgICAgICAnSW4gYW4gaW1wbGVtZW50YXRpb24gZmlsZSwgY29kZSBpbnNpZGUgYSBuYW1lc3Bh
Y2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9p
bmRlbnRdIFs0XScsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisKICAgICAjIFRlc3QgQy1zdHls
ZSBjYXN0IGNhc2VzLgogICAgIGRlZiB0ZXN0X2NzdHlsZV9jYXN0KHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33111</attachid>
            <date>2009-07-20 15:12:01 -0700</date>
            <delta_ts>2009-07-21 08:28:47 -0700</delta_ts>
            <desc>Add checks for namespace indentation to cpplint (try 3)</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>9833</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSBmN2I5NzI5YjM2ZDA0ZGQyMmMxNWI1NGFkOWNkMTQ4ZjYzNzAzZmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IE1vbiwgMjAgSnVsIDIwMDkgMTg6MDY6MDggLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDY1ICsrKysrKysrKysrKysrKysrKysKIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jcHBsaW50X3VuaXR0ZXN0LnB5IHwgICA3OCArKysrKysrKysrKysrKysrKysrKy0tLQogMyBm
aWxlcyBjaGFuZ2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXgg
ODE0MGQ4ZC4uNjlkNjVmYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTA3LTIwICBKYWtv
YiBQZXRzb3ZpdHMgIDxqYWtvYi5wZXRzb3ZpdHNAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBjaGVja3MgZm9yIG5h
bWVzcGFjZSBpbmRlbnRhdGlvbiB0byBjcHBsaW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NjEKKworICAgICAgICAqIFNjcmlwdHMvbW9kdWxl
cy9jcHBsaW50LnB5OgorICAgICAgICAqIFNjcmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0
LnB5OgorCiAyMDA5LTA3LTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBObyByZXZpZXcsIGp1c3QgYWRkaW5nIEdhdmluIEJhcnJhY2xvdWdo
IGFzIHJldmlld2VyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2Nw
cGxpbnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludC5weQppbmRleCA4
OTk3NDQ0Li5jODkxNjYyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3BwbGludC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludC5weQpA
QCAtMiw2ICsyLDcgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCiAjCiAjIENvcHlyaWdodCAo
YykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTE2NTcsNiArMTY1OCw2OSBAQCBkZWYgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlcik6CiAgICAgcmV0dXJuICgnJywgLTEpCiAKIAorZGVmIGNo
ZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3IpOgorICAgICIiIkxvb2tzIGZvciBpbmRlbnRhdGlv
biBlcnJvcnMgaW5zaWRlIG9mIG5hbWVzcGFjZXMuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5h
bWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBD
bGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251
bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGZpbGVfZXh0ZW5z
aW9uOiBUaGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1ZGVkKSBvZiB0aGUgZmlsZS4KKyAgICAg
IGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAg
IiIiCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgICAgICAg
IyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCisKKyAgICBpZiBub3QgbWF0Y2gocidc
cypuYW1lc3BhY2VccytcUytccyt7XHMqJCcsIGxpbmUpOgorICAgICAgICByZXR1cm4KKworICAg
IG5hbWVzcGFjZV9pbmRlbnRhdGlvbiA9IGxpbmVbMCA6IGxpbmUuZmluZCgnbmFtZXNwYWNlJyld
CisKKyAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAnaCc6CisgICAgICAgIGlzX2ltcGxlbWVudGF0
aW9uX2ZpbGUgPSBGYWxzZQorICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gJ2NwcCcgb3IgZmls
ZV9leHRlbnNpb24gPT0gJ2MnIG9yIGZpbGVfZXh0ZW5zaW9uID09ICdtbSc6CisgICAgICAgIGlz
X2ltcGxlbWVudGF0aW9uX2ZpbGUgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisK
KyAgICBpc19oZWFkZXJfZmlsZSA9IG5vdCBpc19pbXBsZW1lbnRhdGlvbl9maWxlCisgICAgbGlu
ZV9vZmZzZXQgPSAwCisKKyAgICBpZiBpc19oZWFkZXJfZmlsZToKKyAgICAgICAgaW5uZXJfaW5k
ZW50YXRpb24gPSBuYW1lc3BhY2VfaW5kZW50YXRpb24gKyAnICAgICcKKworICAgICAgICBmb3Ig
Y3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlciArIDEgOiBj
bGVhbl9saW5lcy5udW1fbGluZXMoKV06CisgICAgICAgICAgICBsaW5lX29mZnNldCArPSAxCisK
KyAgICAgICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3
aXRoIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLgorICAgICAgICAgICAgaWYgY3VycmVudF9saW5l
LnN0cmlwKCkgPT0gJycgb3IgY3VycmVudF9saW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBjdXJyZW50X2xpbmUuZmluZChpbm5l
cl9pbmRlbnRhdGlvbikgIT0gMDoKKyAgICAgICAgICAgICAgICAjIElmIHNvbWV0aGluZyB1bmlu
ZGVudGVkIHdhcyBkaXNjb3ZlcmVkLCBtYWtlIHN1cmUgaXQncyBhIGNsb3NpbmcgYnJhY2UuCisg
ICAgICAgICAgICAgICAgaWYgY3VycmVudF9saW5lLmZpbmQobmFtZXNwYWNlX2luZGVudGF0aW9u
ICsgJ30nKSAhPSAwOgorICAgICAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIgKyBsaW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0luIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91
bGQgYmUgaW5kZW50ZWQuJykKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgaXNfaW1w
bGVtZW50YXRpb25fZmlsZToKKyAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5l
cy5yYXdfbGluZXNbbGluZV9udW1iZXIgKyAxIDogY2xlYW5fbGluZXMubnVtX2xpbmVzKCldOgor
ICAgICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQorCisgICAgICAgICAgICBpZiBjdXJyZW50X2xp
bmUuc3RyaXAoKSA9PSAnJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAg
ICByZW1haW5pbmdfbGluZSA9IGN1cnJlbnRfbGluZVtsZW4obmFtZXNwYWNlX2luZGVudGF0aW9u
KSA6IGxlbihjdXJyZW50X2xpbmUpXQorICAgICAgICAgICAgaWYgbm90IG1hdGNoKHInXFMrJywg
cmVtYWluaW5nX2xpbmUpOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciArIGxpbmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAorICAgICAgICAgICAg
ICAgICAgICAgICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGluc2lkZSBhIG5hbWVz
cGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLicpCisKKyAgICAgICAgICAgICMgSnVzdCBjaGVj
ayB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgaW4gYW55IGNhc2UsIGJlY2F1c2UKKyAgICAgICAg
ICAgICMgb3RoZXJ3aXNlIHdlIHdvdWxkIG5lZWQgdG8gY291bnQgb3BlbmVkIGFuZCBjbG9zZWQg
YnJhY2VzLAorICAgICAgICAgICAgIyB3aGljaCBpcyBvYnZpb3VzbHkgYSBsb3QgbW9yZSBjb21w
bGljYXRlZC4KKyAgICAgICAgICAgIGJyZWFrCisKKwogZGVmIGNoZWNrX2JyYWNlcyhmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yIG1p
c3BsYWNlZCBicmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KIApAQCAtMTkxMiw2ICsx
OTc2LDcgQEAgZGVmIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CiAgICAgICAgICAgICAgICdNb3JlIHRoYW4gb25l
IGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZScpCiAKICAgICAjIFNvbWUgbW9yZSBzdHlsZSBjaGVj
a3MKKyAgICBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKQogICAgIGNoZWNrX2JyYWNlcyhm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKICAgICBjaGVja19zcGFj
aW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQogICAgIGNoZWNr
X2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQppbmRleCBmNmU0
ODc4Li42ZjVjNWRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
bGludF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGlu
dF91bml0dGVzdC5weQpAQCAtMiw2ICsyLDcgQEAKICMgLSotIGNvZGluZzogdXRmLTg7IC0qLQog
IwogIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChjKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0xMjcsMTcgKzEyOCwxOCBAQCBjbGFzcyBDcHBsaW50VGVzdEJh
c2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJl
c3VsdHMoKQogCiAgICAgIyBQZXJmb3JtIGxpbnQgb3ZlciBtdWx0aXBsZSBsaW5lcyBhbmQgcmV0
dXJuIHRoZSBlcnJvciBtZXNzYWdlLgotICAgIGRlZiBwZXJmb3JtX211bHRpX2xpbmVfbGludChz
ZWxmLCBjb2RlKToKKyAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSwg
ZmlsZV9uYW1lKToKICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2Vs
Zi5hc3NlcnRfKQogICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3Bw
bGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cygnZm9vLmgnLCBsaW5lcywgZXJyb3JfY29s
bGVjdG9yKQorICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVf
bmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgbGluZXMgPSBjcHBsaW50LkNs
ZWFuc2VkTGluZXMobGluZXMpCisgICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZp
bmQoJy4nKSArIDE6XQogICAgICAgICBjbGFzc19zdGF0ZSA9IGNwcGxpbnQuX0NsYXNzU3RhdGUo
KQogICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAg
ICAgY3BwbGludC5jaGVja19zdHlsZSgnZm9vLmgnLCBsaW5lcywgaSwgJ2gnLCBlcnJvcl9jb2xs
ZWN0b3IpCi0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3Ry
dWN0cygnZm9vLmgnLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCisgICAgICAgICAgICBjcHBsaW50
LmNoZWNrX3N0eWxlKGZpbGVfbmFtZSwgbGluZXMsIGksIGV4dCwgZXJyb3JfY29sbGVjdG9yKQor
ICAgICAgICAgICAgY3BwbGludC5jaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmls
ZV9uYW1lLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGNs
YXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKCdmb28uaCcsIGVycm9yX2NvbGxlY3RvcikKKyAgICAg
ICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZmlsZV9uYW1lLCBlcnJvcl9jb2xsZWN0b3Ip
CiAgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCiAKICAgICAjIFNpbWls
YXIgdG8gcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQsIGJ1dCBjYWxscyBjaGVja19sYW5ndWFnZSBp
bnN0ZWFkIG9mCkBAIC0yMTEsMTEgKzIxMywxMSBAQCBjbGFzcyBDcHBsaW50VGVzdEJhc2UodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21l
c3NhZ2UsIG1lc3NhZ2VzKQogCi0gICAgZGVmIGFzc2VydF9tdWx0aV9saW5lX2xpbnQoc2VsZiwg
Y29kZSwgZXhwZWN0ZWRfbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVj
dGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSkpCisgICAgZGVm
IGFzc2VydF9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZSwgZmls
ZV9uYW1lID0gJ2Zvby5oJyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21l
c3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKIAot
ICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21l
c3NhZ2VfcmUpOgotICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGlu
dChjb2RlKQorICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKHNlbGYsIGNvZGUsIGV4
cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZSA9ICdmb28uaCcpOgorICAgICAgICBtZXNzYWdl
ID0gc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX25hbWUpCiAgICAgICAg
IGlmIG5vdCByZS5zZWFyY2goZXhwZWN0ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6CiAgICAgICAg
ICAgICBzZWxmLmZhaWwoJ01lc3NhZ2Ugd2FzOlxuJyArIG1lc3NhZ2UgKyAnRXhwZWN0ZWQgbWF0
Y2ggdG8gIicgKyBleHBlY3RlZF9tZXNzYWdlX3JlICsgJyInKQogCkBAIC0yNzUsNiArMjc3LDY0
IEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICAgICAnTGlu
ZSBlbmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVzZSBleHRyYSBzcGFj
ZXMuJwogICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVdIFs0XScpCiAKKyAg
ICBkZWYgdGVzdF9uYW1lc3BhY2VfaW5kZW50YXRpb24oc2VsZik6CisgICAgICAgICMgVGVzdCBp
bmRlbnRhdGlvbiBpbiBoZWFkZXIgZmlsZXMsIHdoaWNoIGlzIHJlcXVpcmVkLgorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNv
cmUge1xuJworICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAg
ICAnICAgIH07XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAg
ICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3BhY2Uge1xuJworICAgICAgICAgICAgJyAgICBu
YW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJworICAgICAgICAgICAgJyAgICAgICAgY2xhc3Mg
RG9jdW1lbnQge1xuJworICAgICAgICAgICAgJyAgICAgICAgfTtcbicKKyAgICAgICAgICAgICcg
ICAgfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
J2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcjaWYgMFxuJworICAgICAg
ICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnICAgIH07XG4nCisg
ICAgICAgICAgICAnI2VuZGlmXG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywK
KyAgICAgICAgICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnY2xh
c3MgRG9jdW1lbnQge1xuJworICAgICAgICAgICAgJ307XG4nCisgICAgICAgICAgICAnfScsCisg
ICAgICAgICAgICAnSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBi
ZSBpbmRlbnRlZC4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisg
ICAgICAgICAgICAnZm9vLmgnKQorCisgICAgICAgICMgVGVzdCBpbmRlbnRhdGlvbiBpbiBpbXBs
ZW1lbnRhdGlvbiBmaWxlcywgd2hpY2ggaXMgbm90IGFsbG93ZWQuCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4n
CisgICAgICAgICAgICAnRG9jdW1lbnQ6OkZvbygpIHt9XG4nCisgICAgICAgICAgICAnfScsCisg
ICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFj
ZSB7XG4nCisgICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAg
ICAgICAgICdEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAg
ICAgICcnLAorICAgICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAg
ICAgICAgJyAgICBEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAgICd9JywKKyAgICAg
ICAgICAgICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFj
ZSBzaG91bGQgbm90IGJlIGluZGVudGVkLicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2lu
ZGVudF0gWzRdJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKwogICAgICMgVGVzdCBDLXN0eWxl
IGNhc3QgY2FzZXMuCiAgICAgZGVmIHRlc3RfY3N0eWxlX2Nhc3Qoc2VsZik6CiAgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="17438"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33178</attachid>
            <date>2009-07-21 08:28:47 -0700</date>
            <delta_ts>2009-07-21 09:25:12 -0700</delta_ts>
            <desc>Add checks for namespace indentation to cpplint (try 4)</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>10569</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSBhMjk2NTIyZDQ5YmJiYzE1ZDIzODQyMTMwNWY2YjdhZDU0NzAwMDQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IFR1ZSwgMjEgSnVsIDIwMDkgMTA6NTY6MTIgLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDY2ICsrKysrKysrKysrKysrKysrKy0KIFdlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jcHBsaW50X3VuaXR0ZXN0LnB5IHwgICA3OSArKysrKysrKysrKysrKysrKysrLS0tLQogMyBm
aWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgxNDBkOGQuLjY5ZDY1ZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNy0yMCAgSmFr
b2IgUGV0c292aXRzICA8amFrb2IucGV0c292aXRzQHRvcmNobW9iaWxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2hlY2tzIGZvciBu
YW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGludC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3NDYxCisKKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY3BwbGludC5weToKKyAgICAgICAgKiBTY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVz
dC5weToKKwogMjAwOS0wNy0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LCBqdXN0IGFkZGluZyBHYXZpbiBCYXJyYWNsb3Vn
aCBhcyByZXZpZXdlci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
cHBsaW50LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkKaW5kZXgg
ODk5NzQ0NC4uODJlZTFjOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2NwcGxpbnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkK
QEAgLTEsNyArMSw4IEBACiAjIS91c3IvYmluL3B5dGhvbgogIyAtKi0gY29kaW5nOiB1dGYtOCAt
Ki0KICMKLSMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTE2NTcsNiArMTY1OCw2NiBAQCBkZWYgZ2V0X3ByZXZpb3Vz
X25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlcik6CiAgICAgcmV0dXJuICgn
JywgLTEpCiAKIAorZGVmIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3IpOgorICAgICIiIkxv
b2tzIGZvciBpbmRlbnRhdGlvbiBlcnJvcnMgaW5zaWRlIG9mIG5hbWVzcGFjZXMuCisKKyAgICBB
cmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAg
ICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZp
bGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
KyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIChkb3Qgbm90IGluY2x1ZGVkKSBv
ZiB0aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBl
cnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXSAjIGdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKKworICAgIG5hbWVz
cGFjZV9tYXRjaCA9IG1hdGNoKHInKD9QPG5hbWVzcGFjZV9pbmRlbnRhdGlvbj5ccyopbmFtZXNw
YWNlXHMrXFMrXHMqe1xzKiQnLCBsaW5lKQorICAgIGlmIG5vdCBuYW1lc3BhY2VfbWF0Y2g6Cisg
ICAgICAgIHJldHVybgorCisgICAgbmFtZXNwYWNlX2luZGVudGF0aW9uID0gbmFtZXNwYWNlX21h
dGNoLmdyb3VwKCduYW1lc3BhY2VfaW5kZW50YXRpb24nKQorCisgICAgaXNfaGVhZGVyX2ZpbGUg
PSBmaWxlX2V4dGVuc2lvbiA9PSAnaCcKKyAgICBpc19pbXBsZW1lbnRhdGlvbl9maWxlID0gbm90
IGlzX2hlYWRlcl9maWxlCisgICAgbGluZV9vZmZzZXQgPSAwCisKKyAgICBpZiBpc19oZWFkZXJf
ZmlsZToKKyAgICAgICAgaW5uZXJfaW5kZW50YXRpb24gPSBuYW1lc3BhY2VfaW5kZW50YXRpb24g
KyAnICcgKiA0CisKKyAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5yYXdf
bGluZXNbbGluZV9udW1iZXIgKyAxOl06CisgICAgICAgICAgICBsaW5lX29mZnNldCArPSAxCisK
KyAgICAgICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3
aXRoCisgICAgICAgICAgICAjIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIGFuZCAoZ28tdG8pIGxh
YmVscy4KKyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9yIGN1cnJl
bnRfbGluZS5zdGFydHN3aXRoKCcjJykgb3IgbWF0Y2gocidcdytccyo6JywgY3VycmVudF9saW5l
KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBub3QgY3VycmVu
dF9saW5lLnN0YXJ0c3dpdGgoaW5uZXJfaW5kZW50YXRpb24pOgorICAgICAgICAgICAgICAgICMg
SWYgc29tZXRoaW5nIHVuaW5kZW50ZWQgd2FzIGRpc2NvdmVyZWQsIG1ha2Ugc3VyZSBpdCdzIGEg
Y2xvc2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICBpZiBub3QgY3VycmVudF9saW5lLnN0YXJ0
c3dpdGgobmFtZXNwYWNlX2luZGVudGF0aW9uICsgJ30nKToKKyAgICAgICAgICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2lu
ZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdJbiBhIGhlYWRlciwgY29kZSBp
bnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIGJlIGluZGVudGVkLicpCisgICAgICAgICAgICAgICAg
YnJlYWsKKworICAgIGlmIGlzX2ltcGxlbWVudGF0aW9uX2ZpbGU6CisgICAgICAgIGZvciBjdXJy
ZW50X2xpbmUgaW4gY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyICsgMTpdOgorICAg
ICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQorCisgICAgICAgICAgICAjIFNraXAgbm90IG9ubHkg
ZW1wdHkgbGluZXMgYnV0IGFsc28gdGhvc2Ugd2l0aCAoZ28tdG8pIGxhYmVscy4KKyAgICAgICAg
ICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9yIG1hdGNoKHInXHcrXHMqOicsIGN1
cnJlbnRfbGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcmVt
YWluaW5nX2xpbmUgPSBjdXJyZW50X2xpbmVbbGVuKG5hbWVzcGFjZV9pbmRlbnRhdGlvbik6XQor
ICAgICAgICAgICAgaWYgbm90IG1hdGNoKHInXFMnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAg
ICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0
ZXNwYWNlL2luZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAgICAgJ0luIGFuIGltcGxlbWVu
dGF0aW9uIGZpbGUsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50
ZWQuJykKKworICAgICAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBmaXJzdCBub24tZW1wdHkgbGlu
ZSBpbiBhbnkgY2FzZSwgYmVjYXVzZQorICAgICAgICAgICAgIyBvdGhlcndpc2Ugd2Ugd291bGQg
bmVlZCB0byBjb3VudCBvcGVuZWQgYW5kIGNsb3NlZCBicmFjZXMsCisgICAgICAgICAgICAjIHdo
aWNoIGlzIG9idmlvdXNseSBhIGxvdCBtb3JlIGNvbXBsaWNhdGVkLgorICAgICAgICAgICAgYnJl
YWsKKworCiBkZWYgY2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGVycm9yKToKICAgICAiIiJMb29rcyBmb3IgbWlzcGxhY2VkIGJyYWNlcyAoZS5nLiBhdCB0
aGUgZW5kIG9mIGxpbmUpLgogCkBAIC0xNjY3LDcgKzE3MjgsNyBAQCBkZWYgY2hlY2tfYnJhY2Vz
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAgIGVycm9y
OiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAgIiIiCiAK
LSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAgICAgICAgIyBnZXQg
cmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRl
ZFtsaW5lX251bWJlcl0gIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCiAKICAgICBp
ZiBtYXRjaChyJ1xzKntccyokJywgbGluZSk6CiAgICAgICAgICMgV2UgYWxsb3cgYW4gb3BlbiBi
cmFjZSB0byBzdGFydCBhIGxpbmUgaW4gdGhlIGNhc2Ugd2hlcmUgc29tZW9uZQpAQCAtMTkxMiw2
ICsxOTczLDcgQEAgZGVmIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CiAgICAgICAgICAgICAgICdNb3JlIHRoYW4g
b25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZScpCiAKICAgICAjIFNvbWUgbW9yZSBzdHlsZSBj
aGVja3MKKyAgICBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFuX2xp
bmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKQogICAgIGNoZWNrX2JyYWNl
cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKICAgICBjaGVja19z
cGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQogICAgIGNo
ZWNrX2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQppbmRleCBm
NmU0ODc4Li4wMTc4Y2JjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3BwbGludF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
bGludF91bml0dGVzdC5weQpAQCAtMSw3ICsxLDggQEAKICMhL3Vzci9iaW4vcHl0aG9uCiAjIC0q
LSBjb2Rpbmc6IHV0Zi04OyAtKi0KICMKLSMgQ29weXJpZ2h0IChjKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEyNywxNyArMTI4LDE4IEBA
IGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJldHVy
biBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCiAKICAgICAjIFBlcmZvcm0gbGludCBvdmVyIG11
bHRpcGxlIGxpbmVzIGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgZGVmIHBlcmZv
cm1fbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUpOgorICAgIGRlZiBwZXJmb3JtX211bHRpX2xp
bmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxp
dCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKCdmb28u
aCcsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNwcGxpbnQucmVtb3ZlX211bHRp
X2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQogICAgICAg
ICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZXh0ID0gZmls
ZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgnLicpICsgMTpdCiAgICAgICAgIGNsYXNzX3N0YXRlID0g
Y3BwbGludC5fQ2xhc3NTdGF0ZSgpCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1f
bGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX3N0eWxlKCdmb28uaCcsIGxpbmVz
LCBpLCAnaCcsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfZm9y
X25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKCdmb28uaCcsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwK
KyAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfc3R5bGUoZmlsZV9uYW1lLCBsaW5lcywgaSwgZXh0
LCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3Rh
bmRhcmRfY29uc3RydWN0cyhmaWxlX25hbWUsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvcikKLSAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoJ2Zvby5oJywgZXJy
b3JfY29sbGVjdG9yKQorICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZChmaWxlX25h
bWUsIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRzKCkKIAogICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRpX2xpbmVfbGludCwgYnV0IGNh
bGxzIGNoZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKQEAgLTIxMSwxMSArMjEzLDExIEBAIGNsYXNz
IENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgbWVzc2FnZXMpCiAKLSAgICBkZWYgYXNzZXJ0X211
bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211bHRpX2xpbmVf
bGludChjb2RlKSkKKyAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBl
eHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5oJyk6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29k
ZSwgZmlsZV9uYW1lKSkKIAotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKHNlbGYs
IGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUpOgotICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJm
b3JtX211bHRpX2xpbmVfbGludChjb2RlKQorICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50
X3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZT0nZm9vLmgnKToK
KyAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmls
ZV9uYW1lKQogICAgICAgICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1l
c3NhZ2UpOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdl
ICsgJ0V4cGVjdGVkIG1hdGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2FnZV9yZSArICciJykKIApA
QCAtMjY4OCwxMSArMjY5MCw2NCBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwbGludFRlc3RC
YXNlKToKICAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIDgtc3BhY2VzLgogCiAgICAgICAg
ICMgMy4gSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBpbmRl
bnRlZC4KLSAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIHRoaXMgcnVsZS4KKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJD
b3JlIHtcblxuJworICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAg
ICAgICAnICAgICAgICBpbnQgbXlWYXJpYWJsZTtcbicKKyAgICAgICAgICAgICcgICAgfTtcbicK
KyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5oJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVz
cGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAnICAgIG5hbWVzcGFjZSBJbm5l
ck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAnICAgICAgICBjbGFzcyBEb2N1bWVudCB7XG4n
CisgICAgICAgICAgICAnICAgICAgICB9O1xuJworICAgICAgICAgICAgJyAgICB9O1xuJworICAg
ICAgICAgICAgJ30nLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmgnKQorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNl
IFdlYkNvcmUge1xuJworICAgICAgICAgICAgJyNpZiAwXG4nCisgICAgICAgICAgICAnICAgIGNs
YXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICcgICAgfTtcbicKKyAgICAgICAgICAgICcj
ZW5kaWZcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
J2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICdjbGFzcyBEb2N1bWVudCB7
XG4nCisgICAgICAgICAgICAnfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICdJ
biBhIGhlYWRlciwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIGJlIGluZGVudGVkLicK
KyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKKyAgICAgICAgICAgICdm
b28uaCcpCiAKICAgICAgICAgIyA0LiBJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlIChmaWxlcyB3
aXRoIHRoZSBleHRlbnNpb24gLmNwcCwgLmMKICAgICAgICAgIyAgICBvciAubW0pLCBjb2RlIGlu
c2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLgotICAgICAgICAjIEZJWE1F
OiBObyB0ZXN0cyBmb3IgdGhpcyBydWxlLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4nCisgICAgICAgICAg
ICAnYm9vbCBEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIHRy
dWU7XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdm
b28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAnbmFtZXNwYWNl
IElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAgICAgICdEb2N1bWVudDo6Rm9vKCkgeyB9XG4n
CisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3Bw
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25h
bWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcgICAgRG9jdW1lbnQ6OkZvbygpIHsg
fVxuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJ0luIGFuIGltcGxlbWVudGF0aW9u
IGZpbGUsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuJwor
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nLAorICAgICAgICAgICAgJ2Zv
by5jcHAnKQogCiAgICAgICAgICMgNS4gQSBjYXNlIGxhYmVsIHNob3VsZCBsaW5lIHVwIHdpdGgg
aXRzIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZQogICAgICAgICAjICAgIGNhc2Ugc3RhdGVtZW50IGlz
IGluZGVudGVkLgotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33181</attachid>
            <date>2009-07-21 09:25:12 -0700</date>
            <delta_ts>2009-07-21 09:57:59 -0700</delta_ts>
            <desc>Add checks for namespace indentation to cpplint (try 5)</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>10862</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSA5NWJiMjExY2ExMWYyNTRkNjM1Y2IzODk4NTZkMzg0ZjNlMzBmNmRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IFR1ZSwgMjEgSnVsIDIwMDkgMTI6MjI6MTMgLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDY2ICsrKysrKysrKysrKysrKysrLQogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2NwcGxpbnRfdW5pdHRlc3QucHkgfCAgIDg3ICsrKysrKysrKysrKysrKysrKystLS0KIDMgZmls
ZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4
MTQwZDhkLi42OWQ2NWZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjAgIEpha29i
IFBldHNvdml0cyAgPGpha29iLnBldHNvdml0c0B0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNoZWNrcyBmb3IgbmFt
ZXNwYWNlIGluZGVudGF0aW9uIHRvIGNwcGxpbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ2MQorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVz
L2NwcGxpbnQucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3Qu
cHk6CisKIDIwMDktMDctMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgogCiAgICAgICAgIE5vIHJldmlldywganVzdCBhZGRpbmcgR2F2aW4gQmFycmFjbG91Z2gg
YXMgcmV2aWV3ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
bGludC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CmluZGV4IDg5
OTc0NDQuLjkzNWNiOTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
cHBsaW50LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CkBA
IC0xLDcgKzEsOCBAQAogIyEvdXNyL2Jpbi9weXRob24KICMgLSotIGNvZGluZzogdXRmLTggLSot
CiAjCi0jIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0xNjU3LDYgKzE2NTgsNjYgQEAgZGVmIGdldF9wcmV2aW91c19u
b25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpOgogICAgIHJldHVybiAoJycs
IC0xKQogCiAKK2RlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKKyAgICAiIiJMb29r
cyBmb3IgaW5kZW50YXRpb24gZXJyb3JzIGluc2lkZSBvZiBuYW1lc3BhY2VzLgorCisgICAgQXJn
czoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAg
Y2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxl
LgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisg
ICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2Yg
dGhlIGZpbGUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgorICAgICIiIgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5l
X251bWJlcl0gIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCisKKyAgICBuYW1lc3Bh
Y2VfbWF0Y2ggPSBtYXRjaChyJyg/UDxuYW1lc3BhY2VfaW5kZW50YXRpb24+XHMqKW5hbWVzcGFj
ZVxzK1xTK1xzKntccyokJywgbGluZSkKKyAgICBpZiBub3QgbmFtZXNwYWNlX21hdGNoOgorICAg
ICAgICByZXR1cm4KKworICAgIG5hbWVzcGFjZV9pbmRlbnRhdGlvbiA9IG5hbWVzcGFjZV9tYXRj
aC5ncm91cCgnbmFtZXNwYWNlX2luZGVudGF0aW9uJykKKworICAgIGlzX2hlYWRlcl9maWxlID0g
ZmlsZV9leHRlbnNpb24gPT0gJ2gnCisgICAgaXNfaW1wbGVtZW50YXRpb25fZmlsZSA9IG5vdCBp
c19oZWFkZXJfZmlsZQorICAgIGxpbmVfb2Zmc2V0ID0gMAorCisgICAgaWYgaXNfaGVhZGVyX2Zp
bGU6CisgICAgICAgIGlubmVyX2luZGVudGF0aW9uID0gbmFtZXNwYWNlX2luZGVudGF0aW9uICsg
JyAnICogNAorCisgICAgICAgIGZvciBjdXJyZW50X2xpbmUgaW4gY2xlYW5fbGluZXMucmF3X2xp
bmVzW2xpbmVfbnVtYmVyICsgMTpdOgorICAgICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQorCisg
ICAgICAgICAgICAjIFNraXAgbm90IG9ubHkgZW1wdHkgbGluZXMgYnV0IGFsc28gdGhvc2Ugd2l0
aCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4KKyAgICAgICAgICAgICMgR290byBsYWJlbHMgZG9u
J3Qgb2NjdXIgaW4gaGVhZGVyIGZpbGVzLCBzbyBubyBuZWVkIHRvIGNoZWNrIGZvciB0aG9zZS4K
KyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9yIGN1cnJlbnRfbGlu
ZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgaWYgbm90IGN1cnJlbnRfbGluZS5zdGFydHN3aXRoKGlubmVyX2luZGVudGF0aW9uKToKKyAg
ICAgICAgICAgICAgICAjIElmIHNvbWV0aGluZyB1bmluZGVudGVkIHdhcyBkaXNjb3ZlcmVkLCBt
YWtlIHN1cmUgaXQncyBhIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICAgICAgaWYgbm90IGN1
cnJlbnRfbGluZS5zdGFydHN3aXRoKG5hbWVzcGFjZV9pbmRlbnRhdGlvbiArICd9Jyk6CisgICAg
ICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0
LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAnSW4g
YSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBpbmRlbnRlZC4nKQor
ICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiBpc19pbXBsZW1lbnRhdGlvbl9maWxlOgor
ICAgICAgICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251
bWJlciArIDE6XToKKyAgICAgICAgICAgIGxpbmVfb2Zmc2V0ICs9IDEKKworICAgICAgICAgICAg
IyBTa2lwIG5vdCBvbmx5IGVtcHR5IGxpbmVzIGJ1dCBhbHNvIHRob3NlIHdpdGggKGdvdG8pIGxh
YmVscy4KKyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9yIG1hdGNo
KHInXHcrXHMqOicsIGN1cnJlbnRfbGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgcmVtYWluaW5nX2xpbmUgPSBjdXJyZW50X2xpbmVbbGVuKG5hbWVzcGFjZV9p
bmRlbnRhdGlvbik6XQorICAgICAgICAgICAgaWYgbm90IG1hdGNoKHInXFMnLCByZW1haW5pbmdf
bGluZSk6CisgICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGlu
ZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAgICAg
J0luIGFuIGltcGxlbWVudGF0aW9uIGZpbGUsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3Vs
ZCBub3QgYmUgaW5kZW50ZWQuJykKKworICAgICAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBmaXJz
dCBub24tZW1wdHkgbGluZSBpbiBhbnkgY2FzZSwgYmVjYXVzZQorICAgICAgICAgICAgIyBvdGhl
cndpc2Ugd2Ugd291bGQgbmVlZCB0byBjb3VudCBvcGVuZWQgYW5kIGNsb3NlZCBicmFjZXMsCisg
ICAgICAgICAgICAjIHdoaWNoIGlzIG9idmlvdXNseSBhIGxvdCBtb3JlIGNvbXBsaWNhdGVkLgor
ICAgICAgICAgICAgYnJlYWsKKworCiBkZWYgY2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAiIiJMb29rcyBmb3IgbWlzcGxhY2VkIGJy
YWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxpbmUpLgogCkBAIC0xNjY3LDcgKzE3MjgsNyBAQCBk
ZWYgY2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9y
KToKICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91
bmQuCiAgICAgIiIiCiAKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVy
XSAgICAgICAgIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzCisgICAgbGluZSA9IGNs
ZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBnZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBz
dHJpbmdzCiAKICAgICBpZiBtYXRjaChyJ1xzKntccyokJywgbGluZSk6CiAgICAgICAgICMgV2Ug
YWxsb3cgYW4gb3BlbiBicmFjZSB0byBzdGFydCBhIGxpbmUgaW4gdGhlIGNhc2Ugd2hlcmUgc29t
ZW9uZQpAQCAtMTkxMiw2ICsxOTczLDcgQEAgZGVmIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVh
bl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CiAgICAgICAgICAg
ICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZScpCiAKICAgICAjIFNv
bWUgbW9yZSBzdHlsZSBjaGVja3MKKyAgICBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmls
ZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKQog
ICAgIGNoZWNrX2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJv
cikKICAgICBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKQogICAgIGNoZWNrX2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGVycm9yKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxp
bnRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0
dGVzdC5weQppbmRleCBmNmU0ODc4Li44MzgxNmRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL21vZHVsZXMvY3BwbGludF91bml0dGVzdC5weQpAQCAtMSw3ICsxLDggQEAKICMhL3Vzci9i
aW4vcHl0aG9uCiAjIC0qLSBjb2Rpbmc6IHV0Zi04OyAtKi0KICMKLSMgQ29weXJpZ2h0IChjKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEy
NywxNyArMTI4LDE4IEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCiAKICAgICAjIFBlcmZv
cm0gbGludCBvdmVyIG11bHRpcGxlIGxpbmVzIGFuZCByZXR1cm4gdGhlIGVycm9yIG1lc3NhZ2Uu
Ci0gICAgZGVmIHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUpOgorICAgIGRlZiBw
ZXJmb3JtX211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgogICAgICAgICBl
cnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCiAgICAgICAgIGxp
bmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5l
X2NvbW1lbnRzKCdmb28uaCcsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNwcGxp
bnQucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29s
bGVjdG9yKQogICAgICAgICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAg
ICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgnLicpICsgMTpdCiAgICAgICAg
IGNsYXNzX3N0YXRlID0gY3BwbGludC5fQ2xhc3NTdGF0ZSgpCiAgICAgICAgIGZvciBpIGluIHhy
YW5nZShsaW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX3N0eWxl
KCdmb28uaCcsIGxpbmVzLCBpLCAnaCcsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgICAgIGNw
cGxpbnQuY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKCdmb28uaCcsIGxpbmVzLCBp
LCBjbGFzc19zdGF0ZSwKKyAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfc3R5bGUoZmlsZV9uYW1l
LCBsaW5lcywgaSwgZXh0LCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBjcHBsaW50LmNo
ZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cyhmaWxlX25hbWUsIGxpbmVzLCBpLCBjbGFz
c19zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNo
ZWQoJ2Zvby5oJywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19m
aW5pc2hlZChmaWxlX25hbWUsIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgcmV0dXJuIGVycm9y
X2NvbGxlY3Rvci5yZXN1bHRzKCkKIAogICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRpX2xp
bmVfbGludCwgYnV0IGNhbGxzIGNoZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKQEAgLTIxMSwxMSAr
MjEzLDExIEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgbWVzc2FnZXMpCiAKLSAg
ICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdl
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJm
b3JtX211bHRpX2xpbmVfbGludChjb2RlKSkKKyAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGlu
dChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5oJyk6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0
aV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKIAotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGlu
ZV9saW50X3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUpOgotICAgICAgICBtZXNz
YWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlKQorICAgIGRlZiBhc3NlcnRf
bXVsdGlfbGluZV9saW50X3JlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVf
bmFtZT0nZm9vLmgnKToKKyAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0aV9saW5l
X2xpbnQoY29kZSwgZmlsZV9uYW1lKQogICAgICAgICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVk
X21lc3NhZ2VfcmUsIG1lc3NhZ2UpOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdh
czpcbicgKyBtZXNzYWdlICsgJ0V4cGVjdGVkIG1hdGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2Fn
ZV9yZSArICciJykKIApAQCAtMjY4OCwxMSArMjY5MCw3MiBAQCBjbGFzcyBXZWJLaXRTdHlsZVRl
c3QoQ3BwbGludFRlc3RCYXNlKToKICAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIDgtc3Bh
Y2VzLgogCiAgICAgICAgICMgMy4gSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNl
IHNob3VsZCBiZSBpbmRlbnRlZC4KLSAgICAgICAgIyBGSVhNRTogTm8gdGVzdHMgZm9yIHRoaXMg
cnVsZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
J25hbWVzcGFjZSBXZWJDb3JlIHtcblxuJworICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVu
dCB7XG4nCisgICAgICAgICAgICAnICAgICAgICBpbnQgbXlWYXJpYWJsZTtcbicKKyAgICAgICAg
ICAgICcgICAgfTtcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAg
ICAgICAgJ2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAnICAg
IG5hbWVzcGFjZSBJbm5lck5hbWVzcGFjZSB7XG4nCisgICAgICAgICAgICAnICAgICAgICBjbGFz
cyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnICAgICAgICB9O1xuJworICAgICAgICAgICAg
JyAgICB9O1xuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJycsCisgICAgICAgICAg
ICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAgICAgICAgJyNpZiAwXG4nCisgICAg
ICAgICAgICAnICAgIGNsYXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICcgICAgfTtcbicK
KyAgICAgICAgICAgICcjZW5kaWZcbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcn
LAorICAgICAgICAgICAgJ2Zvby5oJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICdj
bGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnfTtcbicKKyAgICAgICAgICAgICd9JywK
KyAgICAgICAgICAgICdJbiBhIGhlYWRlciwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxk
IGJlIGluZGVudGVkLicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywK
KyAgICAgICAgICAgICdmb28uaCcpCiAKICAgICAgICAgIyA0LiBJbiBhbiBpbXBsZW1lbnRhdGlv
biBmaWxlIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24gLmNwcCwgLmMKICAgICAgICAgIyAgICBv
ciAubW0pLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLgot
ICAgICAgICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgdGhpcyBydWxlLgorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xu
XG4nCisgICAgICAgICAgICAnYm9vbCBEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAg
ICcgICAgcmV0dXJuIHRydWU7XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywK
KyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCisgICAgICAg
ICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAgICAgICdEb2N1bWVu
dDo6Rm9vKCkgeyB9XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAg
ICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKKyAgICAgICAgICAgICcg
ICAgdm9pZCBEb2N1bWVudDo6Rm9vKCkge31cbicKKyAgICAgICAgICAgICdzdGFydDogIC8vIGlu
ZmluaXRlIGxvb3BzIGFyZSBmdW4hXG4nCisgICAgICAgICAgICAnICAgICAgICBnb3RvIHN0YXJ0
O1xuJworICAgICAgICAgICAgJyAgICB9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
J2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAgICAgICAgJyAgICBEb2N1bWVudDo6
Rm9vKCkgeyB9XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnSW4gYW4gaW1wbGVt
ZW50YXRpb24gZmlsZSwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRl
bnRlZC4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAg
ICAgICAnZm9vLmNwcCcpCiAKICAgICAgICAgIyA1LiBBIGNhc2UgbGFiZWwgc2hvdWxkIGxpbmUg
dXAgd2l0aCBpdHMgc3dpdGNoIHN0YXRlbWVudC4gVGhlCiAgICAgICAgICMgICAgY2FzZSBzdGF0
ZW1lbnQgaXMgaW5kZW50ZWQuCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="17499"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33185</attachid>
            <date>2009-07-21 09:57:59 -0700</date>
            <delta_ts>2009-07-21 10:11:41 -0700</delta_ts>
            <desc>Add checks for namespace indentation to cpplint (try 6)</desc>
            <filename>0001-Add-checks-for-namespace-indentation-to-cpplint.patch</filename>
            <type>text/plain</type>
            <size>10900</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">RnJvbSA2ZjJkYjY3YWY3NmJjNTMyMGU1MjMzMzk5YTlmMTYxNThmMjVmZGVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtvYiBQZXRzb3ZpdHMgPGpha29iLnBldHNvdml0c0B0b3Jj
aG1vYmlsZS5jb20+CkRhdGU6IFR1ZSwgMjEgSnVsIDIwMDkgMTI6NTM6NDggLTA0MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgY2hlY2tzIGZvciBuYW1lc3BhY2UgaW5kZW50YXRpb24gdG8gY3BwbGlu
dC4KCi0tLQogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDEwICsrKwogV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnQucHkgICAgICAg
ICAgfCAgIDY2ICsrKysrKysrKysrKysrKystCiBXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3BwbGludF91bml0dGVzdC5weSB8ICAgODkgKysrKysrKysrKysrKysrKysrKystLS0KIDMgZmls
ZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA4
MTQwZDhkLi42OWQ2NWZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMjAgIEpha29i
IFBldHNvdml0cyAgPGpha29iLnBldHNvdml0c0B0b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNoZWNrcyBmb3IgbmFt
ZXNwYWNlIGluZGVudGF0aW9uIHRvIGNwcGxpbnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ2MQorCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVz
L2NwcGxpbnQucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcGxpbnRfdW5pdHRlc3Qu
cHk6CisKIDIwMDktMDctMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEu
Y29tPgogCiAgICAgICAgIE5vIHJldmlldywganVzdCBhZGRpbmcgR2F2aW4gQmFycmFjbG91Z2gg
YXMgcmV2aWV3ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
bGludC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CmluZGV4IDg5
OTc0NDQuLjQ3OThkZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9j
cHBsaW50LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CkBA
IC0xLDcgKzEsOCBAQAogIyEvdXNyL2Jpbi9weXRob24KICMgLSotIGNvZGluZzogdXRmLTggLSot
CiAjCi0jIENvcHlyaWdodCAoYykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0xNjU3LDYgKzE2NTgsNjYgQEAgZGVmIGdldF9wcmV2aW91c19u
b25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpOgogICAgIHJldHVybiAoJycs
IC0xKQogCiAKK2RlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKKyAgICAiIiJMb29r
cyBmb3IgaW5kZW50YXRpb24gZXJyb3JzIGluc2lkZSBvZiBuYW1lc3BhY2VzLgorCisgICAgQXJn
czoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAg
Y2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxl
LgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisg
ICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2Yg
dGhlIGZpbGUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgorICAgICIiIgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5l
X251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgorCisgICAgbmFtZXNw
YWNlX21hdGNoID0gbWF0Y2gocicoP1A8bmFtZXNwYWNlX2luZGVudGF0aW9uPlxzKiluYW1lc3Bh
Y2VccytcUytccyp7XHMqJCcsIGxpbmUpCisgICAgaWYgbm90IG5hbWVzcGFjZV9tYXRjaDoKKyAg
ICAgICAgcmV0dXJuCisKKyAgICBuYW1lc3BhY2VfaW5kZW50YXRpb24gPSBuYW1lc3BhY2VfbWF0
Y2guZ3JvdXAoJ25hbWVzcGFjZV9pbmRlbnRhdGlvbicpCisKKyAgICBpc19oZWFkZXJfZmlsZSA9
IGZpbGVfZXh0ZW5zaW9uID09ICdoJworICAgIGlzX2ltcGxlbWVudGF0aW9uX2ZpbGUgPSBub3Qg
aXNfaGVhZGVyX2ZpbGUKKyAgICBsaW5lX29mZnNldCA9IDAKKworICAgIGlmIGlzX2hlYWRlcl9m
aWxlOgorICAgICAgICBpbm5lcl9pbmRlbnRhdGlvbiA9IG5hbWVzcGFjZV9pbmRlbnRhdGlvbiAr
ICcgJyAqIDQKKworICAgICAgICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLnJhd19s
aW5lc1tsaW5lX251bWJlciArIDE6XToKKyAgICAgICAgICAgIGxpbmVfb2Zmc2V0ICs9IDEKKwor
ICAgICAgICAgICAgIyBTa2lwIG5vdCBvbmx5IGVtcHR5IGxpbmVzIGJ1dCBhbHNvIHRob3NlIHdp
dGggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuCisgICAgICAgICAgICAjIEdvdG8gbGFiZWxzIGRv
bid0IG9jY3VyIGluIGhlYWRlciBmaWxlcywgc28gbm8gbmVlZCB0byBjaGVjayBmb3IgdGhvc2Uu
CisgICAgICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAnJyBvciBjdXJyZW50X2xp
bmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAg
ICAgIGlmIG5vdCBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aChpbm5lcl9pbmRlbnRhdGlvbik6Cisg
ICAgICAgICAgICAgICAgIyBJZiBzb21ldGhpbmcgdW5pbmRlbnRlZCB3YXMgZGlzY292ZXJlZCwg
bWFrZSBzdXJlIGl0J3MgYSBjbG9zaW5nIGJyYWNlLgorICAgICAgICAgICAgICAgIGlmIG5vdCBj
dXJyZW50X2xpbmUuc3RhcnRzd2l0aChuYW1lc3BhY2VfaW5kZW50YXRpb24gKyAnfScpOgorICAg
ICAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNl
dCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lu
IGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgYmUgaW5kZW50ZWQuJykK
KyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgaXNfaW1wbGVtZW50YXRpb25fZmlsZToK
KyAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9u
dW1iZXIgKyAxOl06CisgICAgICAgICAgICBsaW5lX29mZnNldCArPSAxCisKKyAgICAgICAgICAg
ICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3aXRoIChnb3RvKSBs
YWJlbHMuCisgICAgICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAnJyBvciBtYXRj
aChyJ1x3K1xzKjonLCBjdXJyZW50X2xpbmUpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgIHJlbWFpbmluZ19saW5lID0gY3VycmVudF9saW5lW2xlbihuYW1lc3BhY2Vf
aW5kZW50YXRpb24pOl0KKyAgICAgICAgICAgIGlmIG5vdCBtYXRjaChyJ1xTJywgcmVtYWluaW5n
X2xpbmUpOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciArIGxp
bmVfb2Zmc2V0LCAnd2hpdGVzcGFjZS9pbmRlbnQnLCA0LAorICAgICAgICAgICAgICAgICAgICAg
ICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91
bGQgbm90IGJlIGluZGVudGVkLicpCisKKyAgICAgICAgICAgICMgSnVzdCBjaGVjayB0aGUgZmly
c3Qgbm9uLWVtcHR5IGxpbmUgaW4gYW55IGNhc2UsIGJlY2F1c2UKKyAgICAgICAgICAgICMgb3Ro
ZXJ3aXNlIHdlIHdvdWxkIG5lZWQgdG8gY291bnQgb3BlbmVkIGFuZCBjbG9zZWQgYnJhY2VzLAor
ICAgICAgICAgICAgIyB3aGljaCBpcyBvYnZpb3VzbHkgYSBsb3QgbW9yZSBjb21wbGljYXRlZC4K
KyAgICAgICAgICAgIGJyZWFrCisKKwogZGVmIGNoZWNrX2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yIG1pc3BsYWNlZCBi
cmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KIApAQCAtMTY2Nyw3ICsxNzI4LDcgQEAg
ZGVmIGNoZWNrX2JyYWNlcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJv
cik6CiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgogICAgICIiIgogCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJl
cl0gICAgICAgICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncworICAgIGxpbmUgPSBj
bGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQg
c3RyaW5ncy4KIAogICAgIGlmIG1hdGNoKHInXHMqe1xzKiQnLCBsaW5lKToKICAgICAgICAgIyBX
ZSBhbGxvdyBhbiBvcGVuIGJyYWNlIHRvIHN0YXJ0IGEgbGluZSBpbiB0aGUgY2FzZSB3aGVyZSBz
b21lb25lCkBAIC0xOTEyLDYgKzE5NzMsNyBAQCBkZWYgY2hlY2tfc3R5bGUoZmlsZW5hbWUsIGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKICAgICAgICAg
ICAgICAgJ01vcmUgdGhhbiBvbmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lJykKIAogICAgICMg
U29tZSBtb3JlIHN0eWxlIGNoZWNrcworICAgIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZXJyb3Ip
CiAgICAgY2hlY2tfYnJhY2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVy
cm9yKQogICAgIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpCiAgICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZXJyb3IpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3Bw
bGludF91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50X3Vu
aXR0ZXN0LnB5CmluZGV4IGY2ZTQ4NzguLmVmMjRkOGQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9jcHBsaW50X3VuaXR0ZXN0LnB5CkBAIC0xLDcgKzEsOCBAQAogIyEvdXNy
L2Jpbi9weXRob24KICMgLSotIGNvZGluZzogdXRmLTg7IC0qLQogIwotIyBDb3B5cmlnaHQgKGMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAw
OSBUb3JjaCBNb2JpbGUgSW5jLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MTI3LDE3ICsxMjgsMTggQEAgY2xhc3MgQ3BwbGludFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKIAogICAgICMgUGVy
Zm9ybSBsaW50IG92ZXIgbXVsdGlwbGUgbGluZXMgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2Fn
ZS4KLSAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSk6CisgICAgZGVm
IHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUsIGZpbGVfbmFtZSk6CiAgICAgICAg
IGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKICAgICAgICAg
bGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNwcGxpbnQucmVtb3ZlX211bHRpX2xp
bmVfY29tbWVudHMoJ2Zvby5oJywgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3Bw
bGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9j
b2xsZWN0b3IpCiAgICAgICAgIGxpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQor
ICAgICAgICBleHQgPSBmaWxlX25hbWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KICAgICAg
ICAgY2xhc3Nfc3RhdGUgPSBjcHBsaW50Ll9DbGFzc1N0YXRlKCkKICAgICAgICAgZm9yIGkgaW4g
eHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfc3R5
bGUoJ2Zvby5oJywgbGluZXMsIGksICdoJywgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICAgICAg
Y3BwbGludC5jaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoJ2Zvby5oJywgbGluZXMs
IGksIGNsYXNzX3N0YXRlLAorICAgICAgICAgICAgY3BwbGludC5jaGVja19zdHlsZShmaWxlX25h
bWUsIGxpbmVzLCBpLCBleHQsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgIGNwcGxpbnQu
Y2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVfbmFtZSwgbGluZXMsIGksIGNs
YXNzX3N0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5p
c2hlZCgnZm9vLmgnLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNsYXNzX3N0YXRlLmNoZWNr
X2ZpbmlzaGVkKGZpbGVfbmFtZSwgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICByZXR1cm4gZXJy
b3JfY29sbGVjdG9yLnJlc3VsdHMoKQogCiAgICAgIyBTaW1pbGFyIHRvIHBlcmZvcm1fbXVsdGlf
bGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tfbGFuZ3VhZ2UgaW5zdGVhZCBvZgpAQCAtMjExLDEx
ICsyMTMsMTEgQEAgY2xhc3MgQ3BwbGludFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLCBtZXNzYWdlcykKIAot
ICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3Nh
Z2UpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLCBzZWxmLnBl
cmZvcm1fbXVsdGlfbGluZV9saW50KGNvZGUpKQorICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9s
aW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UsIGZpbGVfbmFtZT0nZm9vLmgnKToKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211
bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX25hbWUpKQogCi0gICAgZGVmIGFzc2VydF9tdWx0aV9s
aW5lX2xpbnRfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSk6Ci0gICAgICAgIG1l
c3NhZ2UgPSBzZWxmLnBlcmZvcm1fbXVsdGlfbGluZV9saW50KGNvZGUpCisgICAgZGVmIGFzc2Vy
dF9tdWx0aV9saW5lX2xpbnRfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmls
ZV9uYW1lPSdmb28uaCcpOgorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xp
bmVfbGludChjb2RlLCBmaWxlX25hbWUpCiAgICAgICAgIGlmIG5vdCByZS5zZWFyY2goZXhwZWN0
ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ01lc3NhZ2Ug
d2FzOlxuJyArIG1lc3NhZ2UgKyAnRXhwZWN0ZWQgbWF0Y2ggdG8gIicgKyBleHBlY3RlZF9tZXNz
YWdlX3JlICsgJyInKQogCkBAIC0yNjg4LDExICsyNjkwLDc0IEBAIGNsYXNzIFdlYktpdFN0eWxl
VGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgICAgICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgOC1z
cGFjZXMuCiAKICAgICAgICAgIyAzLiBJbiBhIGhlYWRlciwgY29kZSBpbnNpZGUgYSBuYW1lc3Bh
Y2Ugc2hvdWxkIGJlIGluZGVudGVkLgotICAgICAgICAjIEZJWE1FOiBObyB0ZXN0cyBmb3IgdGhp
cyBydWxlLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuXG4nCisgICAgICAgICAgICAnICAgIGNsYXNzIERvY3Vt
ZW50IHtcbicKKyAgICAgICAgICAgICcgICAgICAgIGludCBteVZhcmlhYmxlO1xuJworICAgICAg
ICAgICAgJyAgICB9O1xuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAgJycsCisgICAg
ICAgICAgICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnbmFtZXNwYWNlIE91dGVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAgICAgICcg
ICAgbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAgICAgICAgICAgICcgICAgICAgIGNs
YXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICcgICAgICAgIH07XG4nCisgICAgICAgICAg
ICAnICAgIH07XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAg
ICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnI2lmIDBcbicKKyAg
ICAgICAgICAgICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJworICAgICAgICAgICAgJyAgICB9O1xu
JworICAgICAgICAgICAgJyNlbmRpZlxuJworICAgICAgICAgICAgJ30nLAorICAgICAgICAgICAg
JycsCisgICAgICAgICAgICAnZm9vLmgnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJworICAgICAgICAgICAg
J2NsYXNzIERvY3VtZW50IHtcbicKKyAgICAgICAgICAgICd9O1xuJworICAgICAgICAgICAgJ30n
LAorICAgICAgICAgICAgJ0luIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91
bGQgYmUgaW5kZW50ZWQuJworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0n
LAorICAgICAgICAgICAgJ2Zvby5oJykKIAogICAgICAgICAjIDQuIEluIGFuIGltcGxlbWVudGF0
aW9uIGZpbGUgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiAuY3BwLCAuYwogICAgICAgICAjICAg
IG9yIC5tbSksIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQu
Ci0gICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciB0aGlzIHJ1bGUuCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7
XG5cbicKKyAgICAgICAgICAgICdib29sIERvY3VtZW50OjpGb28oKVxuJworICAgICAgICAgICAg
J3tcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIHRydWU7XG4nCisgICAgICAgICAgICAnfScs
CisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVz
cGFjZSB7XG4nCisgICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAg
ICAgICAgICAgICdEb2N1bWVudDo6Rm9vKCkgeyB9XG4nCisgICAgICAgICAgICAnfScsCisgICAg
ICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgV2ViQ29yZSB7XG5c
bicKKyAgICAgICAgICAgICcgICAgdm9pZCBEb2N1bWVudDo6Rm9vKClcbicKKyAgICAgICAgICAg
ICcgICAge1xuJworICAgICAgICAgICAgJ3N0YXJ0OiAgLy8gaW5maW5pdGUgbG9vcHMgYXJlIGZ1
biFcbicKKyAgICAgICAgICAgICcgICAgICAgIGdvdG8gc3RhcnQ7XG4nCisgICAgICAgICAgICAn
ICAgIH0nLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2UgV2Vi
Q29yZSB7XG4nCisgICAgICAgICAgICAnICAgIERvY3VtZW50OjpGb28oKSB7IH1cbicKKyAgICAg
ICAgICAgICd9JywKKyAgICAgICAgICAgICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2Rl
IGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLicKKyAgICAgICAgICAg
ICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKKyAgICAgICAgICAgICdmb28uY3BwJykKIAog
ICAgICAgICAjIDUuIEEgY2FzZSBsYWJlbCBzaG91bGQgbGluZSB1cCB3aXRoIGl0cyBzd2l0Y2gg
c3RhdGVtZW50LiBUaGUKICAgICAgICAgIyAgICBjYXNlIHN0YXRlbWVudCBpcyBpbmRlbnRlZC4K
LS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="17502"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>