<?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>21457</bug_id>
          
          <creation_ts>2008-10-07 19:12:48 -0700</creation_ts>
          <short_desc>resolve-ChangeLogs should be able to operate on a git revision range</short_desc>
          <delta_ts>2008-10-13 11:56:59 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94489</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-07 19:12:48 -0700</bug_when>
    <thetext>* SUMMARY
The resolve-ChangeLogs script should be able to operate on a git revision range so it can re-merge multiple commits.

* STEPS TO REPRODUCE
This scenario commonly happens when the developer commits a ChangeLog entry to an external repository (e.g., to svn), then commits more than one additional patch locally (changing the same ChangeLog file, e.g., to git), while another developer commits a ChangeLog entry to the external repository (svn).

When the developer attempts to rebase their local commits, git tends to merge the ChangeLogs such that the new (local) ChangeLog entries appear just above their entry committed to svn, rather than at the top of the file.  (See also Bug 21185.)

* NOTES
The patch that will be attached adds another way to invoke resolve-ChangeLogs to fix ChangeLog entries throughout a revision range:

resolve-ChangeLogs -f revision..range
resolve-ChangeLogs -f     # implies: HEAD^..HEAD
resolve-ChangeLogs -f commitish     # implies commitish..HEAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94506</commentid>
    <comment_count>1</comment_count>
      <attachid>24181</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-07 19:20:55 -0700</bug_when>
    <thetext>Created attachment 24181
Patch v1

Proposed fix.

Note that this doesn&apos;t clear the .git/refs/original directory structure when it&apos;s done, nor does it use the --force flag to ignore that directory existing when run a second time.  (Looking for feedback on what to do there.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94551</commentid>
    <comment_count>2</comment_count>
      <attachid>24181</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-08 07:28:18 -0700</bug_when>
    <thetext>Comment on attachment 24181
Patch v1

 87 Usage: @{[ basename($0) ]} -f|--fix-merge [revision-range]
 88        @{[ basename($0) ]} [options] path/to/ChangeLog [path/to/another/ChangeLog ...]

I think it makes sense to reverse the order of these two examples, since the second one is the more common usage for non-git users.

 264     exec(&quot;$GIT filter-branch --tree-filter &apos;PREVIOUS_COMMIT=\`$GIT rev-parse \$GIT_COMMIT^\` &amp;&amp; MAPPED_PREVIOUS_COMMIT=\`map \$PREVIOUS_COMMIT\` $0 -f \&quot;&quot; . join(&apos;&quot; &quot;&apos;, @changeLogs) . &quot;\&quot;&apos; $revisionRange&quot;);

Does exec have a multi-argument form? Would using that make this easier to read?

 384     if (!$fileMine || !$fileOlder || !$fileNewer) {
 385         next;
 386     }

I know this code just got moved, but I think this would be a little easier to read as:

next unless $fileMine &amp;&amp; $fileOlder &amp;&amp; $fileNewer;

r=me on this version of the patch, but let&apos;s keep talking about the issues you raised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94552</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-08 07:28:43 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Note that this doesn&apos;t clear the .git/refs/original directory structure when
&gt; it&apos;s done, nor does it use the --force flag to ignore that directory existing
&gt; when run a second time.  (Looking for feedback on what to do there.)

What are the effects of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94697</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-08 21:37:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Note that this doesn&apos;t clear the .git/refs/original directory structure when
&gt; &gt; it&apos;s done, nor does it use the --force flag to ignore that directory existing
&gt; &gt; when run a second time.  (Looking for feedback on what to do there.)
&gt; 
&gt; What are the effects of this?

If you run the command twice in a row, the resolve-ChangeLogs script will exit with an error.

If you passed &quot;--force&quot; as a switch to git filter-branch OR removed the .git/refs/original directory, you could run the command twice in a row without triggering that specific error.

Note that &quot;twice in a row&quot; means you could do a lot of work in your git repository between runs of this script, and it would still error out without the above changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94736</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-09 06:50:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; Note that this doesn&apos;t clear the .git/refs/original directory structure when
&gt; &gt; &gt; it&apos;s done, nor does it use the --force flag to ignore that directory existing
&gt; &gt; &gt; when run a second time.  (Looking for feedback on what to do there.)
&gt; &gt; 
&gt; &gt; What are the effects of this?
&gt; 
&gt; If you run the command twice in a row, the resolve-ChangeLogs script will exit
&gt; with an error.
&gt; 
&gt; If you passed &quot;--force&quot; as a switch to git filter-branch OR removed the
&gt; .git/refs/original directory, you could run the command twice in a row without
&gt; triggering that specific error.

It sounds like removing .git/refs/original when the command completes successfully is the right way to go. If the command fails, ideally we would reset the repository back to the way it was before the command was run (which of course includes deleting .git/refs/original). If we can&apos;t do that we should at least print out an informative error message describing how the user can recover (and of course mention that .git/refs/original needs to be deleted).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95024</commentid>
    <comment_count>6</comment_count>
      <attachid>24300</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-11 21:18:58 -0700</bug_when>
    <thetext>Created attachment 24300
Patch v2

Patch v2

(In reply to comment #2)
&gt; (From update of attachment 24181 [edit])
&gt;  87 Usage: @{[ basename($0) ]} -f|--fix-merge [revision-range]
&gt;  88        @{[ basename($0) ]} [options] path/to/ChangeLog
&gt; [path/to/another/ChangeLog ...]
&gt; 
&gt; I think it makes sense to reverse the order of these two examples, since the
&gt; second one is the more common usage for non-git users.

Updated.  The -f|--fix-merged switch actually takes an optional argument now (the range) as well as a list of ChangeLog files, so having separate lines doesn&apos;t make sense anymore.

&gt;  264     exec(&quot;$GIT filter-branch --tree-filter &apos;PREVIOUS_COMMIT=\`$GIT
&gt; rev-parse \$GIT_COMMIT^\` &amp;&amp; MAPPED_PREVIOUS_COMMIT=\`map \$PREVIOUS_COMMIT\`
&gt; $0 -f \&quot;&quot; . join(&apos;&quot; &quot;&apos;, @changeLogs) . &quot;\&quot;&apos; $revisionRange&quot;);
&gt; 
&gt; Does exec have a multi-argument form? Would using that make this easier to
&gt; read?

I tried using the multi-argument form, but I think it breaks due to the way git re-invokes the command (since git-filter-branch doesn&apos;t exist anymore).  The exec() changed to system() anyway to support removal of .git/refs/original.

&gt;  384     if (!$fileMine || !$fileOlder || !$fileNewer) {
&gt;  385         next;
&gt;  386     }
&gt; 
&gt; I know this code just got moved, but I think this would be a little easier to
&gt; read as:
&gt; 
&gt; next unless $fileMine &amp;&amp; $fileOlder &amp;&amp; $fileNewer;

Using &quot;next&quot; here was actually a bug--I extracted this code from a for() loop into a method, but forgot to change the &quot;next&quot; into an early return statement.  Thanks!

(In reply to comment #5)
&gt; It sounds like removing .git/refs/original when the command completes
&gt; successfully is the right way to go. If the command fails, ideally we would
&gt; reset the repository back to the way it was before the command was run (which
&gt; of course includes deleting .git/refs/original). If we can&apos;t do that we should
&gt; at least print out an informative error message describing how the user can
&gt; recover (and of course mention that .git/refs/original needs to be deleted).

The .git/refs/original directory is removed on a successful run of git filter-branch.  The refs aren&apos;t changed if the filter-branch operation errors out, so there is nothing for the script to do in that case.

Also note that this patch fixes all known issues with the example you provided offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95025</commentid>
    <comment_count>7</comment_count>
      <attachid>24181</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-11 21:19:27 -0700</bug_when>
    <thetext>Comment on attachment 24181
Patch v1

Clearing r+ flag since this wasn&apos;t landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95173</commentid>
    <comment_count>8</comment_count>
      <attachid>24300</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-13 11:04:47 -0700</bug_when>
    <thetext>Comment on attachment 24300
Patch v2

 265     # On success, remove the backup refs directory
 266     if (($? &gt;&gt; 8) == 0) {
 267         rmtree(qw(.git/refs/original));
 268     }

Should we use WEXITSTATUS (from the POSIX module) instead?

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95186</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-13 11:55:57 -0700</bug_when>
    <thetext>Committed r37559
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95187</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-13 11:56:59 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 24300 [edit])
&gt;  265     # On success, remove the backup refs directory
&gt;  266     if (($? &gt;&gt; 8) == 0) {
&gt;  267         rmtree(qw(.git/refs/original));
&gt;  268     }
&gt; 
&gt; Should we use WEXITSTATUS (from the POSIX module) instead?

Changed this and fixed up some error messages in the final patch.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24181</attachid>
            <date>2008-10-07 19:20:55 -0700</date>
            <delta_ts>2008-10-11 21:19:27 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-21457-v1.diff</filename>
            <type>text/plain</type>
            <size>7475</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyYTIwN2Y5Li41ZmU1ZjI0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDgtMTAt
MDcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBCdWcgMjE0
NTc6IHJlc29sdmUtQ2hhbmdlTG9ncyBzaG91bGQgYmUgYWJsZSB0byBvcGVyYXRlIG9uIGEgZ2l0
IHJldmlzaW9uIHJhbmdlCisKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvcmVzb2x2ZS1DaGFuZ2VMb2dzOgorICAgICAgICAoZml4TWVy
Z2VkQ2hhbmdlTG9nKTogUmVuYW1lZCB0byBmaXhPbmVNZXJnZWRDaGFuZ2VMb2coJCkuICBVcGRh
dGVkCisgICAgICAgIHRvIHdvcmsgd2hlbiBjYWxsZWQgZnJvbSBnaXQgZmlsdGVyLWJyYW5jaC4K
KyAgICAgICAgKGZpeE1lcmdlZENoYW5nZUxvZ3MpOiBBZGRlZC4gIENhbGxzIGl0c2VsZiB0aHJv
dWdoIGdpdCBmaWx0ZXItYnJhbmNoCisgICAgICAgIHRvIHJlLW1lcmdlIENoYW5nZUxvZyBmaWxl
cyBhY3Jvc3MgYSByZXZpc2lvbiByYW5nZS4KKyAgICAgICAgKHJlc29sdmVDaGFuZ2VMb2cpOiBB
ZGRlZC4gIEV4dHJhY3RlZCBmcm9tIG1haW4gY29kZSBibG9jay4gIFJ1bnMKKyAgICAgICAgdGhl
IHRyYWRpdGlvbmFsIHNpbmdsZS1maWxlIG1lcmdlIGFsZ29yaXRobS4KKyAgICAgICAgKHVzYWdl
QW5kRXhpdCk6IEFkZGVkLiAgRXh0cmFjdGVkIGZyb20gbWFpbiBjb2RlIGJsb2NrLiAgUHJpbnRz
CisgICAgICAgIHVzYWdlIHN0YXRlbWVudCBhbmQgZXhpdHMgd2l0aCBlcnJvciBzdGF0dXMuCisK
IDIwMDgtMTAtMDQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvcmVz
b2x2ZS1DaGFuZ2VMb2dzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3MK
aW5kZXggZDU2MTQwNy4uYjJlMjkwOCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
ZXNvbHZlLUNoYW5nZUxvZ3MKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9yZXNvbHZlLUNoYW5n
ZUxvZ3MKQEAgLTQxLDEwICs0MSwxMyBAQCB1c2UgVkNTVXRpbHM7CiBzdWIgY29uZmxpY3RGaWxl
cygkKTsKIHN1YiBmaW5kQ2hhbmdlTG9nKCQpOwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwot
c3ViIGZpeE1lcmdlZENoYW5nZUxvZygkKTsKK3N1YiBmaXhNZXJnZWRDaGFuZ2VMb2dzKCQpOwor
c3ViIGZpeE9uZU1lcmdlZENoYW5nZUxvZygkKTsKIHN1YiBtZXJnZUNoYW5nZXMoJCQkKTsKK3N1
YiByZXNvbHZlQ2hhbmdlTG9nKCQpOwogc3ViIHJlc29sdmVDb25mbGljdCgkKTsKIHN1YiBzaG93
U3RhdHVzKCQ7JCk7CitzdWIgdXNhZ2VBbmRFeGl0KCk7CiAKIG15ICRTVk4gPSAic3ZuIjsKIG15
ICRHSVQgPSAiZ2l0IjsKQEAgLTYxLDQ5ICs2NCw1MyBAQCBteSAkZ2V0T3B0aW9uc1Jlc3VsdCA9
IEdldE9wdGlvbnMoCiAKIG15IEBjaGFuZ2VMb2dGaWxlcyA9IGdyZXAgeyBkZWZpbmVkICRfIH0g
bWFwIHsgZmluZENoYW5nZUxvZygkXykgfSBAQVJHVjsKIAotaWYgKHNjYWxhcihAY2hhbmdlTG9n
RmlsZXMpICE9IHNjYWxhcihAQVJHVikpIHsKK2lmICghJGZpeE1lcmdlZCAmJiBzY2FsYXIoQGNo
YW5nZUxvZ0ZpbGVzKSAhPSBzY2FsYXIoQEFSR1YpKSB7CiAgICAgcHJpbnQgU1RERVJSICJFUlJP
UjogRmlsZXMgbGlzdGVkIG9uIGNvbW1hbmQtbGluZSB0aGF0IGFyZSBub3QgQ2hhbmdlTG9ncy5c
biI7CiAgICAgdW5kZWYgJGdldE9wdGlvbnNSZXN1bHQ7Ci19IGVsc2lmIChzY2FsYXIoQGNoYW5n
ZUxvZ0ZpbGVzKSA9PSAwKSB7Cit9IGVsc2lmICghJGZpeE1lcmdlZCAmJiBzY2FsYXIoQGNoYW5n
ZUxvZ0ZpbGVzKSA9PSAwKSB7CiAgICAgcHJpbnQgU1RERVJSICJFUlJPUjogTm8gQ2hhbmdlTG9n
IGZpbGVzIGxpc3RlZCBvbiBjb21tYW5kLWxpbmUuXG4iOwogICAgIHVuZGVmICRnZXRPcHRpb25z
UmVzdWx0OwogfSBlbHNpZiAoJGZpeE1lcmdlZCAmJiAhaXNHaXQoKSkgewogICAgIHByaW50IFNU
REVSUiAiRVJST1I6IC0tZml4LW1lcmdlIG1heSBvbmx5IGJlIHVzZWQgd2l0aCBhIGdpdCByZXBv
c2l0b3J5XG4iOwogICAgIHVuZGVmICRnZXRPcHRpb25zUmVzdWx0OworfSBlbHNpZiAoJGZpeE1l
cmdlZCAmJiBzY2FsYXIoQGNoYW5nZUxvZ0ZpbGVzKSA+IDAgJiYgc2NhbGFyKEBjaGFuZ2VMb2dG
aWxlcykgIT0gc2NhbGFyKEBBUkdWKSkgeworICAgIHByaW50IFNUREVSUiAiRVJST1I6IEZpbGVz
IGxpc3RlZCBvbiBjb21tYW5kLWxpbmUgdGhhdCBhcmUgbm90IENoYW5nZUxvZ3MuXG4iOworICAg
IHVuZGVmICRnZXRPcHRpb25zUmVzdWx0OworfSBlbHNpZiAoJGZpeE1lcmdlZCAmJiBzY2FsYXIo
QEFSR1YpID4gMSkgeworICAgIHByaW50IFNUREVSUiAiRVJST1I6IC0tZml4LW1lcmdlIG11c3Qg
c3BlY2lmeSB6ZXJvIG9yIG9uZSBhcmd1bWVudHNcbiI7CisgICAgdW5kZWYgJGdldE9wdGlvbnNS
ZXN1bHQ7CiB9CiAKLWlmICghJGdldE9wdGlvbnNSZXN1bHQgfHwgJHNob3dIZWxwKSB7CitzdWIg
dXNhZ2VBbmRFeGl0KCkKK3sKICAgICBwcmludCBTVERFUlIgPDxfX0VORF9fOwotVXNhZ2U6IEB7
WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdIHBhdGgvdG8vQ2hhbmdlTG9nIFtwYXRoL3RvL2Fu
b3RoZXIvQ2hhbmdlTG9nIC4uLl0KLSAgLWZ8LS1maXgtbWVyZ2UgICAgICBmaXggYSBnaXQtbWVy
Z2VkIENoYW5nZUxvZyBlbnRyeSB0byBhcHBlYXIgYXQgdGhlIHRvcAorVXNhZ2U6IEB7WyBiYXNl
bmFtZSgkMCkgXX0gLWZ8LS1maXgtbWVyZ2UgW3JldmlzaW9uLXJhbmdlXQorICAgICAgIEB7WyBi
YXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdIHBhdGgvdG8vQ2hhbmdlTG9nIFtwYXRoL3RvL2Fub3Ro
ZXIvQ2hhbmdlTG9nIC4uLl0KKyAgLWZ8LS1maXgtbWVyZ2UgICAgICBmaXggZ2l0LW1lcmdlZCBD
aGFuZ2VMb2cgZW50cmllcwogICAtaHwtLWhlbHAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1l
c3NhZ2UKICAgLXd8LS1bbm8tXXdhcm5pbmdzICBzaG93IG9yIHN1cHByZXNzIHdhcm5pbmdzIChk
ZWZhdWx0OiBzaG93IHdhcm5pbmdzKQogX19FTkRfXwogICAgIGV4aXQgMTsKIH0KIAotZm9yIG15
ICRmaWxlIChAY2hhbmdlTG9nRmlsZXMpIHsKLSAgICBpZiAoJGZpeE1lcmdlZCkgewotICAgICAg
ICBmaXhNZXJnZWRDaGFuZ2VMb2coJGZpbGUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG15ICgk
ZmlsZU1pbmUsICRmaWxlT2xkZXIsICRmaWxlTmV3ZXIpID0gY29uZmxpY3RGaWxlcygkZmlsZSk7
Ci0gICAgICAgIGlmICghJGZpbGVNaW5lIHx8ICEkZmlsZU9sZGVyIHx8ICEkZmlsZU5ld2VyKSB7
Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0gICAgICAgIGlmIChtZXJnZUNoYW5nZXMo
JGZpbGVNaW5lLCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSkgewotICAgICAgICAgICAgaWYgKCRm
aWxlIG5lICRmaWxlTmV3ZXIpIHsKLSAgICAgICAgICAgICAgICB1bmxpbmsoJGZpbGUpOwotICAg
ICAgICAgICAgICAgIHJlbmFtZSgkZmlsZU5ld2VyLCAkZmlsZSkgfHwgZGllOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdW5saW5rKCRmaWxlTWluZSwgJGZpbGVPbGRlcik7Ci0gICAgICAg
ICAgICByZXNvbHZlQ29uZmxpY3QoJGZpbGUpOwotICAgICAgICAgICAgc2hvd1N0YXR1cygkZmls
ZSwgMSk7CitpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworICAgIHVzYWdl
QW5kRXhpdCgpOworfQorCitpZiAoQGNoYW5nZUxvZ0ZpbGVzKSB7CisgICAgZm9yIG15ICRmaWxl
IChAY2hhbmdlTG9nRmlsZXMpIHsKKyAgICAgICAgaWYgKCRmaXhNZXJnZWQpIHsKKyAgICAgICAg
ICAgIGZpeE9uZU1lcmdlZENoYW5nZUxvZygkZmlsZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzaG93U3RhdHVzKCRmaWxlKTsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FS
TklORzogJHtmaWxlfSBjb3VsZCBub3QgYmUgbWVyZ2VkIHVzaW5nIGZ1enogbGV2ZWwgMy5cbiIg
aWYgJHByaW50V2FybmluZ3M7Ci0gICAgICAgICAgICB1bmxpbmsoJGZpbGVNaW5lLCAkZmlsZU9s
ZGVyLCAkZmlsZU5ld2VyKSBpZiBpc0dpdCgpOworICAgICAgICAgICAgcmVzb2x2ZUNoYW5nZUxv
ZygkZmlsZSk7CiAgICAgICAgIH0KICAgICB9Cit9IGVsc2lmICgkZml4TWVyZ2VkKSB7CisgICAg
bXkgJGNvbW1pdFJhbmdlID0gKHNjYWxhcihAQVJHVikgPT0gMCB8fCAkQVJHVlswXSBlcSAiSEVB
RCIpID8gIkhFQUReLi5IRUFEIiA6IHNoaWZ0IEBBUkdWOworICAgICRjb21taXRSYW5nZSA9ICRj
b21taXRSYW5nZSAuICIuLkhFQUQiIGlmIGluZGV4KCRjb21taXRSYW5nZSwgIi4uIikgPCAwOwor
ICAgIGZpeE1lcmdlZENoYW5nZUxvZ3MoJGNvbW1pdFJhbmdlKTsKK30gZWxzZSB7CisgICAgdXNh
Z2VBbmRFeGl0KCk7CiB9CiAKIGV4aXQgMDsKQEAgLTIzOSw3ICsyNDYsMjUgQEAgc3ViIGZpeENo
YW5nZUxvZ1BhdGNoKCQpCiAgICAgcmV0dXJuICRuZXdQYXRjaDsKIH0KIAotc3ViIGZpeE1lcmdl
ZENoYW5nZUxvZygkKQorc3ViIGZpeE1lcmdlZENoYW5nZUxvZ3MoJCkKK3sKKyAgICBteSAkcmV2
aXNpb25SYW5nZSA9IHNoaWZ0OworCisgICAgIyBSZWFkIGluIGxpc3Qgb2YgZmlsZXMgY2hhbmdl
ZCBpbiAkcmV2aXNpb25SYW5nZQorICAgIG15IEBjaGFuZ2VkRmlsZXM7CisgICAgb3BlbiBHSVQs
ICItfCIsICRHSVQsICJkaWZmIiwgIi0tbmFtZS1vbmx5IiwgJHJldmlzaW9uUmFuZ2UgfHwgZGll
OworICAgIHB1c2ggQGNoYW5nZWRGaWxlcywgPEdJVD47CisgICAgY2xvc2UgR0lUIHx8IGRpZTsK
KyAgICBkaWUgIk5vIGNoYW5nZWQgZmlsZXMgaW4gJHJldmlzaW9uUmFuZ2UiIGlmIHNjYWxhcihA
Y2hhbmdlZEZpbGVzKSA8IDE7CisKKyAgICBjaG9tcCBAY2hhbmdlZEZpbGVzOworICAgIG15IEBj
aGFuZ2VMb2dzID0gZ3JlcCB7IGRlZmluZWQgJF8gfSBtYXAgeyBmaW5kQ2hhbmdlTG9nKCRfKSB9
IEBjaGFuZ2VkRmlsZXM7CisgICAgZGllICJObyBDaGFuZ2VMb2cgZmlsZXMgaW4gJHJldmlzaW9u
UmFuZ2UiIGlmIHNjYWxhcihAY2hhbmdlTG9ncykgPCAxOworCisgICAgZXhlYygiJEdJVCBmaWx0
ZXItYnJhbmNoIC0tdHJlZS1maWx0ZXIgJ1BSRVZJT1VTX0NPTU1JVD1cYCRHSVQgcmV2LXBhcnNl
IFwkR0lUX0NPTU1JVF5cYCAmJiBNQVBQRURfUFJFVklPVVNfQ09NTUlUPVxgbWFwIFwkUFJFVklP
VVNfQ09NTUlUXGAgJDAgLWYgXCIiIC4gam9pbignIiAiJywgQGNoYW5nZUxvZ3MpIC4gIlwiJyAk
cmV2aXNpb25SYW5nZSIpOworfQorCitzdWIgZml4T25lTWVyZ2VkQ2hhbmdlTG9nKCQpCiB7CiAg
ICAgbXkgJGZpbGUgPSBzaGlmdDsKICAgICBteSAkcGF0Y2g7CkBAIC0yNDcsNyArMjcyLDcgQEAg
c3ViIGZpeE1lcmdlZENoYW5nZUxvZygkKQogICAgICMgUmVhZCBpbiBwYXRjaCBmb3IgaW5jb3Jy
ZWN0bHkgbWVyZ2VkIENoYW5nZUxvZyBlbnRyeQogICAgIHsKICAgICAgICAgbG9jYWwgJC8gPSB1
bmRlZjsKLSAgICAgICAgb3BlbiBHSVQsICItfCIsICRHSVQsICJkaWZmIiwgIkhFQUReIiwgJGZp
bGUgfHwgZGllOworICAgICAgICBvcGVuIEdJVCwgIi18IiwgJEdJVCwgImRpZmYiLCAoJEVOVntH
SVRfQ09NTUlUfSB8fCAiSEVBRCIpIC4gIl4iLCAkZmlsZSB8fCBkaWU7CiAgICAgICAgICRwYXRj
aCA9IDxHSVQ+OwogICAgICAgICBjbG9zZSBHSVQgfHwgZGllOwogICAgIH0KQEAgLTI3OCw2ICsz
MDMsOSBAQCBzdWIgZml4TWVyZ2VkQ2hhbmdlTG9nKCQpCiAKICAgICAgICAgJG5ld1BhdGNoIC49
IGpvaW4oIiIsIEBwYXRjaExpbmVzKTsKIAorICAgICAgICAjIENoZWNrb3V0IHRoZSBwcmV2aW91
cyBjb21taXQncyBjb3B5IG9mIHRoZSBDaGFuZ2VMb2cKKyAgICAgICAgc3lzdGVtKCRHSVQsICJj
aGVja291dCIsICRFTlZ7TUFQUEVEX1BSRVZJT1VTX0NPTU1JVH0gfHwgIkhFQUReIiwgJGZpbGUp
OworCiAgICAgICAgICMgQWRkIDMgbGluZXMgb2YgY29udGV4dCB0byB0aGUgZW5kCiAgICAgICAg
IG9wZW4gRklMRSwgIjwiLCAkZmlsZSB8fCBkaWU7CiAgICAgICAgIGZvciAobXkgJGkgPSAwOyAk
aSA8IDM7ICRpKyspIHsKQEAgLTI4NSwxMSArMzEzLDYgQEAgc3ViIGZpeE1lcmdlZENoYW5nZUxv
ZygkKQogICAgICAgICB9CiAgICAgICAgIGNsb3NlIEZJTEU7CiAKLSAgICAgICAgIyBVbmFwcGx5
IHRoZSBvbGQgcGF0Y2gKLSAgICAgICAgb3BlbihQQVRDSCwgInwgcGF0Y2ggLXAxIC0tcmV2ZXJz
ZSAkZmlsZSA+IC9kZXYvbnVsbCIpIHx8IGRpZTsKLSAgICAgICAgcHJpbnQgUEFUQ0ggJHBhdGNo
OwotICAgICAgICBjbG9zZShQQVRDSCkgfHwgZGllOwotCiAgICAgICAgICMgQXBwbHkgdGhlIG5l
dyBwYXRjaAogICAgICAgICBvcGVuKFBBVENILCAifCBwYXRjaCAtcDEgJGZpbGUgPiAvZGV2L251
bGwiKSB8fCBkaWU7CiAgICAgICAgIHByaW50IFBBVENIICRuZXdQYXRjaDsKQEAgLTM1Myw2ICsz
NzYsMjkgQEAgc3ViIG1lcmdlQ2hhbmdlcygkJCQpCiAgICAgcmV0dXJuICRyZXN1bHQ7CiB9CiAK
K3N1YiByZXNvbHZlQ2hhbmdlTG9nKCQpCit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworCisgICAg
bXkgKCRmaWxlTWluZSwgJGZpbGVPbGRlciwgJGZpbGVOZXdlcikgPSBjb25mbGljdEZpbGVzKCRm
aWxlKTsKKyAgICBpZiAoISRmaWxlTWluZSB8fCAhJGZpbGVPbGRlciB8fCAhJGZpbGVOZXdlcikg
eworICAgICAgICBuZXh0OworICAgIH0KKyAgICBpZiAobWVyZ2VDaGFuZ2VzKCRmaWxlTWluZSwg
JGZpbGVPbGRlciwgJGZpbGVOZXdlcikpIHsKKyAgICAgICAgaWYgKCRmaWxlIG5lICRmaWxlTmV3
ZXIpIHsKKyAgICAgICAgICAgIHVubGluaygkZmlsZSk7CisgICAgICAgICAgICByZW5hbWUoJGZp
bGVOZXdlciwgJGZpbGUpIHx8IGRpZTsKKyAgICAgICAgfQorICAgICAgICB1bmxpbmsoJGZpbGVN
aW5lLCAkZmlsZU9sZGVyKTsKKyAgICAgICAgcmVzb2x2ZUNvbmZsaWN0KCRmaWxlKTsKKyAgICAg
ICAgc2hvd1N0YXR1cygkZmlsZSwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvd1N0YXR1
cygkZmlsZSk7CisgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogJHtmaWxlfSBjb3VsZCBu
b3QgYmUgbWVyZ2VkIHVzaW5nIGZ1enogbGV2ZWwgMy5cbiIgaWYgJHByaW50V2FybmluZ3M7Cisg
ICAgICAgIHVubGluaygkZmlsZU1pbmUsICRmaWxlT2xkZXIsICRmaWxlTmV3ZXIpIGlmIGlzR2l0
KCk7CisgICAgfQorfQorCiBzdWIgcmVzb2x2ZUNvbmZsaWN0KCQpCiB7CiAgICAgbXkgKCRmaWxl
KSA9IEBfOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24300</attachid>
            <date>2008-10-11 21:18:58 -0700</date>
            <delta_ts>2008-10-13 11:04:47 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-21457-v2.diff</filename>
            <type>text/plain</type>
            <size>12169</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">Y29tbWl0IDBhNTU1NjRhYWI1YjZlODJhYzA1NTJmNTczNzIyNTY0MDcyOTI4ZWEKQXV0aG9yOiBE
YXZpZCBLaWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgT2N0IDEwIDEzOjU0
OjE0IDIwMDggLTA3MDAKCiAgICAgICAgICAgIEJ1ZyAyMTQ1NzogcmVzb2x2ZS1DaGFuZ2VMb2dz
IHNob3VsZCBiZSBhYmxlIHRvIG9wZXJhdGUgb24gYSBnaXQgcmV2aXNpb24gcmFuZ2UKICAgIAog
ICAgICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDU3
PgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICAg
ICAgICAgICogU2NyaXB0cy9yZXNvbHZlLUNoYW5nZUxvZ3M6IEFkZGVkIG9wdGlvbmFsIHBhcmFt
ZXRlciB0bwogICAgICAgICAgICAtZnwtLWZpeC1tZXJnZWQgc3dpdGNoIHRvIHJ1biB0aGUgc2Ny
aXB0IG9uIGEgcmV2aXNpb24gcmFuZ2UuCiAgICAgICAgICAgIFVwZGF0ZWQgY29tbWFuZC1saW5l
IHZhbGlkYXRpb24gY2hlY2tzLgogICAgICAgICAgICAoZmluZENoYW5nZUxvZyk6IEZpeGVkIGxv
bmctc3RhbmRpbmcgYnVnIHRoYXQgc2hvdWxkIGhhdmUgdXNlZAogICAgICAgICAgICAkX1swXSBp
bnN0ZWFkIG9mICRfLgogICAgICAgICAgICAoZml4TWVyZ2VkQ2hhbmdlTG9nKTogUmVuYW1lZCB0
byBmaXhPbmVNZXJnZWRDaGFuZ2VMb2coJCkuICBVcGRhdGVkCiAgICAgICAgICAgIHRvIHdvcmsg
d2hlbiBjYWxsZWQgZnJvbSBnaXQgZmlsdGVyLWJyYW5jaC4gIEl0IGFsd2F5cyByZXN0b3JlcyBh
CiAgICAgICAgICAgIGNvcHkgb2YgdGhlIHByZXZpb3VzIHJldmlzaW9uIGJlZm9yZSByZWFwcGx5
aW5nIHRoZSBwYXRjaC4KICAgICAgICAgICAgKGZpeE1lcmdlZENoYW5nZUxvZ3MpOiBBZGRlZC4g
IENhbGxzIGl0c2VsZiB0aHJvdWdoIGdpdCBmaWx0ZXItYnJhbmNoCiAgICAgICAgICAgIHRvIHJl
LW1lcmdlIENoYW5nZUxvZyBmaWxlcyBhY3Jvc3MgYSByZXZpc2lvbiByYW5nZS4gIFJlbW92ZXMK
ICAgICAgICAgICAgLmdpdC9yZWZzL29yaWdpbmFsIGRpcmVjdG9yeSBvbiBzdWNjZXNzLgogICAg
ICAgICAgICAocGFyc2VGaXhNZXJnZWQpOiBBZGRlZC4gIEN1c3RvbSBtZXRob2QgdG8gcGFyc2Ug
dGhlIC1mfC0tZml4LW1lcmdlZAogICAgICAgICAgICBzd2l0Y2guCiAgICAgICAgICAgIChyZW1v
dmVDaGFuZ2VMb2dBcmd1bWVudHMpOiBBZGRlZC4gIFJlbW92ZXMgaXRlbXMgZnJvbSBAQVJHViB3
aGVuCiAgICAgICAgICAgIHRoZXkgYXJlIENoYW5nZUxvZyBwYXRocywgYW5kIHJldHVybiBhIGxp
c3Qgb2YgcGF0aHMuICBUaGlzIG1ha2VzIGl0CiAgICAgICAgICAgIGVhc2llciB0byB2YWxpZGF0
ZSB0aGUgY29tbWFuZC1saW5lLgogICAgICAgICAgICAocmVzb2x2ZUNoYW5nZUxvZyk6IEFkZGVk
LiAgRXh0cmFjdGVkIGZyb20gbWFpbiBjb2RlIGJsb2NrLiAgUnVucwogICAgICAgICAgICB0aGUg
dHJhZGl0aW9uYWwgc2luZ2xlLWZpbGUgbWVyZ2UgYWxnb3JpdGhtLgogICAgICAgICAgICAodXNh
Z2VBbmRFeGl0KTogQWRkZWQuICBFeHRyYWN0ZWQgZnJvbSBtYWluIGNvZGUgYmxvY2suICBQcmlu
dHMKICAgICAgICAgICAgdXNhZ2Ugc3RhdGVtZW50IGFuZCBleGl0cyB3aXRoIGVycm9yIHN0YXR1
cy4KCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKaW5kZXggMmEyMDdmOS4uOTk5YmJjNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDA4
LTEwLTA3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQnVn
IDIxNDU3OiByZXNvbHZlLUNoYW5nZUxvZ3Mgc2hvdWxkIGJlIGFibGUgdG8gb3BlcmF0ZSBvbiBh
IGdpdCByZXZpc2lvbiByYW5nZQorCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3Jlc29sdmUtQ2hhbmdlTG9nczogQWRkZWQgb3B0aW9u
YWwgcGFyYW1ldGVyIHRvCisgICAgICAgIC1mfC0tZml4LW1lcmdlZCBzd2l0Y2ggdG8gcnVuIHRo
ZSBzY3JpcHQgb24gYSByZXZpc2lvbiByYW5nZS4KKyAgICAgICAgVXBkYXRlZCBjb21tYW5kLWxp
bmUgdmFsaWRhdGlvbiBjaGVja3MuCisgICAgICAgIChmaW5kQ2hhbmdlTG9nKTogRml4ZWQgbG9u
Zy1zdGFuZGluZyBidWcgdGhhdCBzaG91bGQgaGF2ZSB1c2VkCisgICAgICAgICRfWzBdIGluc3Rl
YWQgb2YgJF8uCisgICAgICAgIChmaXhNZXJnZWRDaGFuZ2VMb2cpOiBSZW5hbWVkIHRvIGZpeE9u
ZU1lcmdlZENoYW5nZUxvZygkKS4gIFVwZGF0ZWQKKyAgICAgICAgdG8gd29yayB3aGVuIGNhbGxl
ZCBmcm9tIGdpdCBmaWx0ZXItYnJhbmNoLiAgSXQgYWx3YXlzIHJlc3RvcmVzIGEKKyAgICAgICAg
Y29weSBvZiB0aGUgcHJldmlvdXMgcmV2aXNpb24gYmVmb3JlIHJlYXBwbHlpbmcgdGhlIHBhdGNo
LgorICAgICAgICAoZml4TWVyZ2VkQ2hhbmdlTG9ncyk6IEFkZGVkLiAgQ2FsbHMgaXRzZWxmIHRo
cm91Z2ggZ2l0IGZpbHRlci1icmFuY2gKKyAgICAgICAgdG8gcmUtbWVyZ2UgQ2hhbmdlTG9nIGZp
bGVzIGFjcm9zcyBhIHJldmlzaW9uIHJhbmdlLiAgUmVtb3ZlcworICAgICAgICAuZ2l0L3JlZnMv
b3JpZ2luYWwgZGlyZWN0b3J5IG9uIHN1Y2Nlc3MuCisgICAgICAgIChwYXJzZUZpeE1lcmdlZCk6
IEFkZGVkLiAgQ3VzdG9tIG1ldGhvZCB0byBwYXJzZSB0aGUgLWZ8LS1maXgtbWVyZ2VkCisgICAg
ICAgIHN3aXRjaC4KKyAgICAgICAgKHJlbW92ZUNoYW5nZUxvZ0FyZ3VtZW50cyk6IEFkZGVkLiAg
UmVtb3ZlcyBpdGVtcyBmcm9tIEBBUkdWIHdoZW4KKyAgICAgICAgdGhleSBhcmUgQ2hhbmdlTG9n
IHBhdGhzLCBhbmQgcmV0dXJuIGEgbGlzdCBvZiBwYXRocy4gIFRoaXMgbWFrZXMgaXQKKyAgICAg
ICAgZWFzaWVyIHRvIHZhbGlkYXRlIHRoZSBjb21tYW5kLWxpbmUuCisgICAgICAgIChyZXNvbHZl
Q2hhbmdlTG9nKTogQWRkZWQuICBFeHRyYWN0ZWQgZnJvbSBtYWluIGNvZGUgYmxvY2suICBSdW5z
CisgICAgICAgIHRoZSB0cmFkaXRpb25hbCBzaW5nbGUtZmlsZSBtZXJnZSBhbGdvcml0aG0uCisg
ICAgICAgICh1c2FnZUFuZEV4aXQpOiBBZGRlZC4gIEV4dHJhY3RlZCBmcm9tIG1haW4gY29kZSBi
bG9jay4gIFByaW50cworICAgICAgICB1c2FnZSBzdGF0ZW1lbnQgYW5kIGV4aXRzIHdpdGggZXJy
b3Igc3RhdHVzLgorCiAyMDA4LTEwLTA0ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3Jlc29sdmUtQ2hhbmdlTG9ncyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcmVzb2x2
ZS1DaGFuZ2VMb2dzCmluZGV4IGQ1NjE0MDcuLjlkMGUyZjcgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvcmVzb2x2ZS1DaGFuZ2VMb2dzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
cmVzb2x2ZS1DaGFuZ2VMb2dzCkBAIC0zNCw2ICszNCw3IEBAIHVzZSBGaW5kQmluOwogdXNlIGxp
YiAkRmluZEJpbjo6QmluOwogCiB1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgRmlsZTo6UGF0aDsK
IHVzZSBGaWxlOjpTcGVjOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBWQ1NVdGlsczsKQEAgLTQx
LDY5ICs0Miw3MiBAQCB1c2UgVkNTVXRpbHM7CiBzdWIgY29uZmxpY3RGaWxlcygkKTsKIHN1YiBm
aW5kQ2hhbmdlTG9nKCQpOwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwotc3ViIGZpeE1lcmdl
ZENoYW5nZUxvZygkKTsKK3N1YiBmaXhNZXJnZWRDaGFuZ2VMb2dzKCQ7QCk7CitzdWIgZml4T25l
TWVyZ2VkQ2hhbmdlTG9nKCQpOwogc3ViIG1lcmdlQ2hhbmdlcygkJCQpOworc3ViIHBhcnNlRml4
TWVyZ2VkKCQkOyQpOworc3ViIHJlbW92ZUNoYW5nZUxvZ0FyZ3VtZW50cygpOworc3ViIHJlc29s
dmVDaGFuZ2VMb2coJCk7CiBzdWIgcmVzb2x2ZUNvbmZsaWN0KCQpOwogc3ViIHNob3dTdGF0dXMo
JDskKTsKK3N1YiB1c2FnZUFuZEV4aXQoKTsKIAogbXkgJFNWTiA9ICJzdm4iOwogbXkgJEdJVCA9
ICJnaXQiOwogCi1teSAkZml4TWVyZ2VkID0gMDsKK215ICRmaXhNZXJnZWQ7CiBteSAkcHJpbnRX
YXJuaW5ncyA9IDE7CiBteSAkc2hvd0hlbHA7CiAKIG15ICRnZXRPcHRpb25zUmVzdWx0ID0gR2V0
T3B0aW9ucygKLSAgICAnZnxmaXgtbWVyZ2VkJyAgID0+IFwkZml4TWVyZ2VkLAorICAgICdmfGZp
eC1tZXJnZWQ6cycgPT4gXCZwYXJzZUZpeE1lcmdlZCwKICAgICAnaHxoZWxwJyAgICAgICAgID0+
IFwkc2hvd0hlbHAsCiAgICAgJ3d8d2FybmluZ3MhJyAgICA9PiBcJHByaW50V2FybmluZ3MsCiAp
OwogCi1teSBAY2hhbmdlTG9nRmlsZXMgPSBncmVwIHsgZGVmaW5lZCAkXyB9IG1hcCB7IGZpbmRD
aGFuZ2VMb2coJF8pIH0gQEFSR1Y7CitteSBAY2hhbmdlTG9nRmlsZXMgPSByZW1vdmVDaGFuZ2VM
b2dBcmd1bWVudHMoKTsKIAotaWYgKHNjYWxhcihAY2hhbmdlTG9nRmlsZXMpICE9IHNjYWxhcihA
QVJHVikpIHsKK2lmIChzY2FsYXIoQEFSR1YpID4gMCkgewogICAgIHByaW50IFNUREVSUiAiRVJS
T1I6IEZpbGVzIGxpc3RlZCBvbiBjb21tYW5kLWxpbmUgdGhhdCBhcmUgbm90IENoYW5nZUxvZ3Mu
XG4iOwogICAgIHVuZGVmICRnZXRPcHRpb25zUmVzdWx0OwotfSBlbHNpZiAoc2NhbGFyKEBjaGFu
Z2VMb2dGaWxlcykgPT0gMCkgeworfSBlbHNpZiAoIWRlZmluZWQgJGZpeE1lcmdlZCAmJiBzY2Fs
YXIoQGNoYW5nZUxvZ0ZpbGVzKSA9PSAwKSB7CiAgICAgcHJpbnQgU1RERVJSICJFUlJPUjogTm8g
Q2hhbmdlTG9nIGZpbGVzIGxpc3RlZCBvbiBjb21tYW5kLWxpbmUuXG4iOwogICAgIHVuZGVmICRn
ZXRPcHRpb25zUmVzdWx0OwotfSBlbHNpZiAoJGZpeE1lcmdlZCAmJiAhaXNHaXQoKSkgewotICAg
IHByaW50IFNUREVSUiAiRVJST1I6IC0tZml4LW1lcmdlIG1heSBvbmx5IGJlIHVzZWQgd2l0aCBh
IGdpdCByZXBvc2l0b3J5XG4iOworfSBlbHNpZiAoZGVmaW5lZCAkZml4TWVyZ2VkICYmICFpc0dp
dCgpKSB7CisgICAgcHJpbnQgU1RERVJSICJFUlJPUjogLS1maXgtbWVyZ2VkIG1heSBvbmx5IGJl
IHVzZWQgd2l0aCBhIGdpdCByZXBvc2l0b3J5XG4iOwogICAgIHVuZGVmICRnZXRPcHRpb25zUmVz
dWx0OwogfQogCi1pZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworc3ViIHVz
YWdlQW5kRXhpdCgpCit7CiAgICAgcHJpbnQgU1RERVJSIDw8X19FTkRfXzsKIFVzYWdlOiBAe1sg
YmFzZW5hbWUoJDApIF19IFtvcHRpb25zXSBwYXRoL3RvL0NoYW5nZUxvZyBbcGF0aC90by9hbm90
aGVyL0NoYW5nZUxvZyAuLi5dCi0gIC1mfC0tZml4LW1lcmdlICAgICAgZml4IGEgZ2l0LW1lcmdl
ZCBDaGFuZ2VMb2cgZW50cnkgdG8gYXBwZWFyIGF0IHRoZSB0b3AKLSAgLWh8LS1oZWxwICAgICAg
ICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlCi0gIC13fC0tW25vLV13YXJuaW5ncyAgc2hvdyBv
ciBzdXBwcmVzcyB3YXJuaW5ncyAoZGVmYXVsdDogc2hvdyB3YXJuaW5ncykKKyAgLWZ8LS1maXgt
bWVyZ2VkIFtyZXZpc2lvbi1yYW5nZV0gZml4IGdpdC1tZXJnZWQgQ2hhbmdlTG9nIGVudHJpZXM7
IGlmIGEgcmV2aXNpb24tcmFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXMgc3BlY2lmaWVkLCBydW4gZ2l0IGZpbHRlci1icmFuY2ggb24gdGhlIHJhbmdlCisgIC1ofC0t
aGVscCAgICAgICAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLXd8
LS1bbm8tXXdhcm5pbmdzICAgICAgICAgICAgICAgc2hvdyBvciBzdXBwcmVzcyB3YXJuaW5ncyAo
ZGVmYXVsdDogc2hvdyB3YXJuaW5ncykKIF9fRU5EX18KICAgICBleGl0IDE7CiB9CiAKLWZvciBt
eSAkZmlsZSAoQGNoYW5nZUxvZ0ZpbGVzKSB7Ci0gICAgaWYgKCRmaXhNZXJnZWQpIHsKLSAgICAg
ICAgZml4TWVyZ2VkQ2hhbmdlTG9nKCRmaWxlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBteSAo
JGZpbGVNaW5lLCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSA9IGNvbmZsaWN0RmlsZXMoJGZpbGUp
OwotICAgICAgICBpZiAoISRmaWxlTWluZSB8fCAhJGZpbGVPbGRlciB8fCAhJGZpbGVOZXdlcikg
ewotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotICAgICAgICBpZiAobWVyZ2VDaGFuZ2Vz
KCRmaWxlTWluZSwgJGZpbGVPbGRlciwgJGZpbGVOZXdlcikpIHsKLSAgICAgICAgICAgIGlmICgk
ZmlsZSBuZSAkZmlsZU5ld2VyKSB7Ci0gICAgICAgICAgICAgICAgdW5saW5rKCRmaWxlKTsKLSAg
ICAgICAgICAgICAgICByZW5hbWUoJGZpbGVOZXdlciwgJGZpbGUpIHx8IGRpZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHVubGluaygkZmlsZU1pbmUsICRmaWxlT2xkZXIpOwotICAgICAg
ICAgICAgcmVzb2x2ZUNvbmZsaWN0KCRmaWxlKTsKLSAgICAgICAgICAgIHNob3dTdGF0dXMoJGZp
bGUsIDEpOworaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAkc2hvd0hlbHApIHsKKyAgICB1c2Fn
ZUFuZEV4aXQoKTsKK30KKworaWYgKGRlZmluZWQgJGZpeE1lcmdlZCAmJiBsZW5ndGgoJGZpeE1l
cmdlZCkgPiAwKSB7CisgICAgbXkgJGNvbW1pdFJhbmdlID0gJGZpeE1lcmdlZDsKKyAgICAkY29t
bWl0UmFuZ2UgPSAkY29tbWl0UmFuZ2UgLiAiLi5IRUFEIiBpZiBpbmRleCgkY29tbWl0UmFuZ2Us
ICIuLiIpIDwgMDsKKyAgICBmaXhNZXJnZWRDaGFuZ2VMb2dzKCRjb21taXRSYW5nZSwgQGNoYW5n
ZUxvZ0ZpbGVzKTsKK30gZWxzaWYgKEBjaGFuZ2VMb2dGaWxlcykgeworICAgIGZvciBteSAkZmls
ZSAoQGNoYW5nZUxvZ0ZpbGVzKSB7CisgICAgICAgIGlmIChkZWZpbmVkICRmaXhNZXJnZWQpIHsK
KyAgICAgICAgICAgIGZpeE9uZU1lcmdlZENoYW5nZUxvZygkZmlsZSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBzaG93U3RhdHVzKCRmaWxlKTsKLSAgICAgICAgICAgIHByaW50IFNU
REVSUiAiV0FSTklORzogJHtmaWxlfSBjb3VsZCBub3QgYmUgbWVyZ2VkIHVzaW5nIGZ1enogbGV2
ZWwgMy5cbiIgaWYgJHByaW50V2FybmluZ3M7Ci0gICAgICAgICAgICB1bmxpbmsoJGZpbGVNaW5l
LCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSBpZiBpc0dpdCgpOworICAgICAgICAgICAgcmVzb2x2
ZUNoYW5nZUxvZygkZmlsZSk7CiAgICAgICAgIH0KICAgICB9Cit9IGVsc2UgeworICAgIHVzYWdl
QW5kRXhpdCgpOwogfQogCiBleGl0IDA7CkBAIC0xODAsMTAgKzE4NCwxMCBAQCBzdWIgY29uZmxp
Y3RGaWxlcygkKQogfQogCiBzdWIgZmluZENoYW5nZUxvZygkKSB7Ci0gICAgcmV0dXJuICRfIGlm
IGJhc2VuYW1lKCRfKSBlcSAiQ2hhbmdlTG9nIjsKKyAgICByZXR1cm4gJF9bMF0gaWYgYmFzZW5h
bWUoJF9bMF0pIGVxICJDaGFuZ2VMb2ciOwogCi0gICAgbXkgJGZpbGUgPSBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRfLCAiQ2hhbmdlTG9nIik7Ci0gICAgcmV0dXJuICRmaWxlIGlmIC1kICRfIGFuZCAt
ZSAkZmlsZTsKKyAgICBteSAkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJF9bMF0sICJDaGFu
Z2VMb2ciKTsKKyAgICByZXR1cm4gJGZpbGUgaWYgLWQgJF9bMF0gYW5kIC1lICRmaWxlOwogCiAg
ICAgcmV0dXJuIHVuZGVmOwogfQpAQCAtMjM5LDcgKzI0MywzMiBAQCBzdWIgZml4Q2hhbmdlTG9n
UGF0Y2goJCkKICAgICByZXR1cm4gJG5ld1BhdGNoOwogfQogCi1zdWIgZml4TWVyZ2VkQ2hhbmdl
TG9nKCQpCitzdWIgZml4TWVyZ2VkQ2hhbmdlTG9ncygkO0ApCit7CisgICAgbXkgJHJldmlzaW9u
UmFuZ2UgPSBzaGlmdDsKKyAgICBteSBAY2hhbmdlZEZpbGVzID0gQF87CisKKyAgICBpZiAoc2Nh
bGFyKEBjaGFuZ2VkRmlsZXMpIDwgMSkgeworICAgICAgICAjIFJlYWQgaW4gbGlzdCBvZiBmaWxl
cyBjaGFuZ2VkIGluICRyZXZpc2lvblJhbmdlCisgICAgICAgIG9wZW4gR0lULCAiLXwiLCAkR0lU
LCAiZGlmZiIsICItLW5hbWUtb25seSIsICRyZXZpc2lvblJhbmdlIHx8IGRpZTsKKyAgICAgICAg
cHVzaCBAY2hhbmdlZEZpbGVzLCA8R0lUPjsKKyAgICAgICAgY2xvc2UgR0lUIHx8IGRpZTsKKyAg
ICAgICAgZGllICJObyBjaGFuZ2VkIENoYW5nZUxvZyBmaWxlcyBpbiAkcmV2aXNpb25SYW5nZSIg
aWYgc2NhbGFyKEBjaGFuZ2VkRmlsZXMpIDwgMTsKKyAgICAgICAgY2hvbXAgQGNoYW5nZWRGaWxl
czsKKyAgICB9CisKKyAgICBteSBAY2hhbmdlTG9ncyA9IGdyZXAgeyBkZWZpbmVkICRfIH0gbWFw
IHsgZmluZENoYW5nZUxvZygkXykgfSBAY2hhbmdlZEZpbGVzOworICAgIGRpZSAiTm8gQ2hhbmdl
TG9nIGZpbGVzIGluICRyZXZpc2lvblJhbmdlIiBpZiBzY2FsYXIoQGNoYW5nZUxvZ3MpIDwgMTsK
KworICAgIHN5c3RlbSgiJEdJVCBmaWx0ZXItYnJhbmNoIC0tdHJlZS1maWx0ZXIgJ1BSRVZJT1VT
X0NPTU1JVD1cYCRHSVQgcmV2LXBhcnNlIFwkR0lUX0NPTU1JVF5cYCAmJiBNQVBQRURfUFJFVklP
VVNfQ09NTUlUPVxgbWFwIFwkUFJFVklPVVNfQ09NTUlUXGAgJDAgLWYgXCIiIC4gam9pbignIiAi
JywgQGNoYW5nZUxvZ3MpIC4gIlwiJyAkcmV2aXNpb25SYW5nZSIpOworCisgICAgIyBPbiBzdWNj
ZXNzLCByZW1vdmUgdGhlIGJhY2t1cCByZWZzIGRpcmVjdG9yeQorICAgIGlmICgoJD8gPj4gOCkg
PT0gMCkgeworICAgICAgICBybXRyZWUocXcoLmdpdC9yZWZzL29yaWdpbmFsKSk7CisgICAgfQor
fQorCitzdWIgZml4T25lTWVyZ2VkQ2hhbmdlTG9nKCQpCiB7CiAgICAgbXkgJGZpbGUgPSBzaGlm
dDsKICAgICBteSAkcGF0Y2g7CkBAIC0yNDcsMTQgKzI3NiwxNyBAQCBzdWIgZml4TWVyZ2VkQ2hh
bmdlTG9nKCQpCiAgICAgIyBSZWFkIGluIHBhdGNoIGZvciBpbmNvcnJlY3RseSBtZXJnZWQgQ2hh
bmdlTG9nIGVudHJ5CiAgICAgewogICAgICAgICBsb2NhbCAkLyA9IHVuZGVmOwotICAgICAgICBv
cGVuIEdJVCwgIi18IiwgJEdJVCwgImRpZmYiLCAiSEVBRF4iLCAkZmlsZSB8fCBkaWU7CisgICAg
ICAgIG9wZW4gR0lULCAiLXwiLCAkR0lULCAiZGlmZiIsICgkRU5We0dJVF9DT01NSVR9IHx8ICJI
RUFEIikgLiAiXiIsICRmaWxlIHx8IGRpZTsKICAgICAgICAgJHBhdGNoID0gPEdJVD47CiAgICAg
ICAgIGNsb3NlIEdJVCB8fCBkaWU7CiAgICAgfQogCi0gICAgIyBUaGUgcGF0Y2ggbXVzdCBoYXZl
IDEgb3IgbW9yZSBsaW5lcyBvZiBjb250ZXh0LCB0aGVuIDEgb3IgbW9yZSBsaW5lcworICAgICMg
QWx3YXlzIGNoZWNrb3V0IHRoZSBwcmV2aW91cyBjb21taXQncyBjb3B5IG9mIHRoZSBDaGFuZ2VM
b2cKKyAgICBzeXN0ZW0oJEdJVCwgImNoZWNrb3V0IiwgJEVOVntNQVBQRURfUFJFVklPVVNfQ09N
TUlUfSB8fCAiSEVBRF4iLCAkZmlsZSk7CisKKyAgICAjIFRoZSBwYXRjaCBtdXN0IGhhdmUgMCBv
ciBtb3JlIGxpbmVzIG9mIGNvbnRleHQsIHRoZW4gMSBvciBtb3JlIGxpbmVzCiAgICAgIyBvZiBh
ZGRpdGlvbnMsIGFuZCB0aGVuIDEgb3IgbW9yZSBsaW5lcyBvZiBjb250ZXh0LiAgSWYgbm90LCB3
ZSBza2lwIGl0LgotICAgIGlmICgkcGF0Y2ggPX4gL1xuQEAgLShcZCspLChcZCspIFwrKFxkKyks
KFxkKykgQEBcbiggLipcbikrKChcKy4qXG4pKykoIC4qXG4pKyQvbSkgeworICAgIGlmICgkcGF0
Y2ggPX4gL1xuQEAgLShcZCspLChcZCspIFwrKFxkKyksKFxkKykgQEBcbiggLipcbikqKChcKy4q
XG4pKykoIC4qXG4pKyQvbSkgewogICAgICAgICAjIENvcHkgdGhlIGhlYWRlciBmcm9tIHRoZSBv
cmlnaW5hbCBwYXRjaC4KICAgICAgICAgbXkgJG5ld1BhdGNoID0gc3Vic3RyKCRwYXRjaCwgMCwg
aW5kZXgoJHBhdGNoLCAiQEAgLSR7MX0sJHsyfSArJHszfSwkezR9IEBAIikpOwogCkBAIC0yODUs
MTEgKzMxNyw2IEBAIHN1YiBmaXhNZXJnZWRDaGFuZ2VMb2coJCkKICAgICAgICAgfQogICAgICAg
ICBjbG9zZSBGSUxFOwogCi0gICAgICAgICMgVW5hcHBseSB0aGUgb2xkIHBhdGNoCi0gICAgICAg
IG9wZW4oUEFUQ0gsICJ8IHBhdGNoIC1wMSAtLXJldmVyc2UgJGZpbGUgPiAvZGV2L251bGwiKSB8
fCBkaWU7Ci0gICAgICAgIHByaW50IFBBVENIICRwYXRjaDsKLSAgICAgICAgY2xvc2UoUEFUQ0gp
IHx8IGRpZTsKLQogICAgICAgICAjIEFwcGx5IHRoZSBuZXcgcGF0Y2gKICAgICAgICAgb3BlbihQ
QVRDSCwgInwgcGF0Y2ggLXAxICRmaWxlID4gL2Rldi9udWxsIikgfHwgZGllOwogICAgICAgICBw
cmludCBQQVRDSCAkbmV3UGF0Y2g7CkBAIC0yOTksNyArMzI2LDkgQEAgc3ViIGZpeE1lcmdlZENo
YW5nZUxvZygkKQogICAgICAgICBzeXN0ZW0oJEdJVCwgImFkZCIsICRmaWxlKTsKIAogICAgICAg
ICBzaG93U3RhdHVzKCRmaWxlLCAxKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzaWYgKCRwYXRj
aCkgeworICAgICAgICAjIFJlc3RvcmUgdGhlIGN1cnJlbnQgY29weSBvZiB0aGUgQ2hhbmdlTG9n
IGZpbGUgc2luY2Ugd2UgY2FuJ3QgcmVwYXRjaCBpdAorICAgICAgICBzeXN0ZW0oJEdJVCwgImNo
ZWNrb3V0IiwgJEVOVntHSVRfQ09NTUlUfSB8fCAiSEVBRCIsICRmaWxlKTsKICAgICAgICAgcHJp
bnQgU1RERVJSICJXQVJOSU5HOiBMYXN0IGNoYW5nZSB0byAke2ZpbGV9IGNvdWxkIG5vdCBiZSBm
aXhlZCBhbmQgcmUtbWVyZ2VkLlxuIiBpZiAkcHJpbnRXYXJuaW5nczsKICAgICB9CiB9CkBAIC0z
NTMsNiArMzgyLDYxIEBAIHN1YiBtZXJnZUNoYW5nZXMoJCQkKQogICAgIHJldHVybiAkcmVzdWx0
OwogfQogCitzdWIgcGFyc2VGaXhNZXJnZWQoJCQ7JCkKK3sKKyAgICBteSAoJHN3aXRjaE5hbWUs
ICRrZXksICR2YWx1ZSkgPSBAXzsKKyAgICBpZiAoZGVmaW5lZCAka2V5KSB7CisgICAgICAgIGlm
IChkZWZpbmVkIGZpbmRDaGFuZ2VMb2coJGtleSkpIHsKKyAgICAgICAgICAgIHVuc2hpZnQoQEFS
R1YsICRrZXkpOworICAgICAgICAgICAgJGZpeE1lcmdlZCA9ICIiOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgJGZpeE1lcmdlZCA9ICRrZXk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICAkZml4TWVyZ2VkID0gIiI7CisgICAgfQorfQorCitzdWIgcmVtb3ZlQ2hhbmdl
TG9nQXJndW1lbnRzKCkKK3sKKyAgICBteSBAcmVzdWx0cyA9ICgpOworCisgICAgZm9yIChteSAk
aSA9IDA7ICRpIDwgc2NhbGFyKEBBUkdWKTsgKSB7CisgICAgICAgIG15ICRmaWxlID0gZmluZENo
YW5nZUxvZygkQVJHVlskaV0pOworICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkgeworICAgICAg
ICAgICAgc3BsaWNlKEBBUkdWLCAkaSwgMSk7CisgICAgICAgICAgICBwdXNoIEByZXN1bHRzLCAk
ZmlsZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRpKys7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gQHJlc3VsdHM7Cit9CisKK3N1YiByZXNvbHZlQ2hhbmdlTG9nKCQp
Cit7CisgICAgbXkgKCRmaWxlKSA9IEBfOworCisgICAgbXkgKCRmaWxlTWluZSwgJGZpbGVPbGRl
ciwgJGZpbGVOZXdlcikgPSBjb25mbGljdEZpbGVzKCRmaWxlKTsKKworICAgIHJldHVybiB1bmxl
c3MgJGZpbGVNaW5lICYmICRmaWxlT2xkZXIgJiYgJGZpbGVOZXdlcjsKKworICAgIGlmIChtZXJn
ZUNoYW5nZXMoJGZpbGVNaW5lLCAkZmlsZU9sZGVyLCAkZmlsZU5ld2VyKSkgeworICAgICAgICBp
ZiAoJGZpbGUgbmUgJGZpbGVOZXdlcikgeworICAgICAgICAgICAgdW5saW5rKCRmaWxlKTsKKyAg
ICAgICAgICAgIHJlbmFtZSgkZmlsZU5ld2VyLCAkZmlsZSkgfHwgZGllOworICAgICAgICB9Cisg
ICAgICAgIHVubGluaygkZmlsZU1pbmUsICRmaWxlT2xkZXIpOworICAgICAgICByZXNvbHZlQ29u
ZmxpY3QoJGZpbGUpOworICAgICAgICBzaG93U3RhdHVzKCRmaWxlLCAxKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzaG93U3RhdHVzKCRmaWxlKTsKKyAgICAgICAgcHJpbnQgU1RERVJSICJXQVJO
SU5HOiAke2ZpbGV9IGNvdWxkIG5vdCBiZSBtZXJnZWQgdXNpbmcgZnV6eiBsZXZlbCAzLlxuIiBp
ZiAkcHJpbnRXYXJuaW5nczsKKyAgICAgICAgdW5saW5rKCRmaWxlTWluZSwgJGZpbGVPbGRlciwg
JGZpbGVOZXdlcikgaWYgaXNHaXQoKTsKKyAgICB9Cit9CisKIHN1YiByZXNvbHZlQ29uZmxpY3Qo
JCkKIHsKICAgICBteSAoJGZpbGUpID0gQF87Cg==
</data>
<flag name="review"
          id="11066"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>