<?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>94686</bug_id>
          
          <creation_ts>2012-08-22 03:27:26 -0700</creation_ts>
          <short_desc>Web Inspector: [WebGL] Allow collecting calls for Resource objects affecting their states</short_desc>
          <delta_ts>2012-08-23 03:08:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>701734</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 03:27:26 -0700</bug_when>
    <thetext>Next step in WebGL instrumentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701739</commentid>
    <comment_count>1</comment_count>
      <attachid>159893</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 03:32:41 -0700</bug_when>
    <thetext>Created attachment 159893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701869</commentid>
    <comment_count>2</comment_count>
      <attachid>159893</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-08-22 07:06:50 -0700</bug_when>
    <thetext>Comment on attachment 159893
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:43
&gt; +    TYPED_ARRAY_CLASSES: (function(typeNames) {

I&apos;d split it into isSupportedTypedArray() and [&quot;Int8Array&quot;, ...].filter(isSupportedTypedArray)

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:79
&gt; +        var t = typeof obj;
&gt; +        if (t !== &quot;object&quot; &amp;&amp; t !== &quot;function&quot;)
&gt; +            return obj;

t =&gt; type? or perhaps replace with:
if (!(obj instanceof Object))
    return obj;

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:83
&gt; +        if (typeof obj.slice === &quot;function&quot;)
&gt; +            return obj.slice(0);

I wonder if we should have a more specific type check here?

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:438
&gt; +            var wrapFunction = new WebGLRenderingContextResource.WrapFunction(originalObject, originalFunction, functionName, arguments);
&gt; +            customWrapFunction.apply(wrapFunction, arguments);

Do we need a new instance for each invocation? Can we postpone implementing this until we have actual custom wrap functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701901</commentid>
    <comment_count>3</comment_count>
      <attachid>159893</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-22 07:56:37 -0700</bug_when>
    <thetext>Comment on attachment 159893
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:46
&gt; +            if (window[typeNames[i]])

You should use inspectedWindow here.

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:58
&gt; +        var classes = TypeUtils.TYPED_ARRAY_CLASSES;

WebKit uses camel case for constants.

&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:60
&gt; +            if (array instanceof classes[i])

First check if InjectedScriptHost.type(array) ===  &quot;array&quot;.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:79
&gt;&gt; +            return obj;
&gt; 
&gt; t =&gt; type? or perhaps replace with:
&gt; if (!(obj instanceof Object))
&gt;     return obj;

Always prefer typeof to instanceof.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:83
&gt;&gt; +            return obj.slice(0);
&gt; 
&gt; I wonder if we should have a more specific type check here?

slice()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701906</commentid>
    <comment_count>4</comment_count>
      <attachid>159893</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 08:00:38 -0700</bug_when>
    <thetext>Comment on attachment 159893
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:43
&gt;&gt; +    TYPED_ARRAY_CLASSES: (function(typeNames) {
&gt; 
&gt; I&apos;d split it into isSupportedTypedArray() and [&quot;Int8Array&quot;, ...].filter(isSupportedTypedArray)

filter will result in the same args as in the original array (strings in this case), while we need to convert them to a Function

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:79
&gt;&gt; +            return obj;
&gt; 
&gt; t =&gt; type? or perhaps replace with:
&gt; if (!(obj instanceof Object))
&gt;     return obj;

the purpose is to filter out primitive types here. instanceof is not good:

a = Object.create(null)
&gt;&gt; Object
a instanceof Object
&gt;&gt; false
typeof a
&gt;&gt; &quot;object&quot;

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:83
&gt;&gt; +            return obj.slice(0);
&gt; 
&gt; I wonder if we should have a more specific type check here?

added console.assert(obj instanceof Array || obj instanceof ArrayBuffer);

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:438
&gt;&gt; +            customWrapFunction.apply(wrapFunction, arguments);
&gt; 
&gt; Do we need a new instance for each invocation? Can we postpone implementing this until we have actual custom wrap functions?

removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701909</commentid>
    <comment_count>5</comment_count>
      <attachid>159933</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 08:01:06 -0700</bug_when>
    <thetext>Created attachment 159933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701921</commentid>
    <comment_count>6</comment_count>
      <attachid>159893</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 08:11:17 -0700</bug_when>
    <thetext>Comment on attachment 159893
Patch

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

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:46
&gt;&gt; +            if (window[typeNames[i]])
&gt; 
&gt; You should use inspectedWindow here.

done.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:58
&gt;&gt; +        var classes = TypeUtils.TYPED_ARRAY_CLASSES;
&gt; 
&gt; WebKit uses camel case for constants.

done.

&gt;&gt; Source/WebCore/inspector/InjectedScriptWebGLModuleSource.js:60
&gt;&gt; +            if (array instanceof classes[i])
&gt; 
&gt; First check if InjectedScriptHost.type(array) ===  &quot;array&quot;.

1) why?
2) I want to minimize dependency on Web Inspector backend. Right now the WebGL module can be run autonomously. I can accept using &quot;inspectedWindow&quot;, but for InjectedScriptHost plz give some strong reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701922</commentid>
    <comment_count>7</comment_count>
      <attachid>159935</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 08:11:50 -0700</bug_when>
    <thetext>Created attachment 159935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701988</commentid>
    <comment_count>8</comment_count>
      <attachid>159951</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-22 09:09:26 -0700</bug_when>
    <thetext>Created attachment 159951
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702720</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-22 23:00:39 -0700</bug_when>
    <thetext>&gt; 1) why?

Because it will be a fast check and you&apos;ll only call instanceof for arrays.

&gt; 2) I want to minimize dependency on Web Inspector backend. Right now the WebGL module can be run autonomously. I can accept using &quot;inspectedWindow&quot;, but for InjectedScriptHost plz give some strong reasons.

Ok, I see. I don&apos;t see a big deal in using InjectedScriptHost given that your code is in the WebKit repo. I.e. when one needs to re-use it outside inspector, it is very easy to mock that InjectedScriptHost.

I think once you hit the production, you&apos;ll need to switch from instanceof calls to the proper native checks via InjectedScriptHost. That was our experience while working with InjectedScript. We started all JavaScript, but then realized that the more is implemented natively, the more reliable it is. Things were crashing upon navigation, weird things were happening when the code was called near the page navigation point. But feel free to leave it as is and we&apos;ll see whether it crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702839</commentid>
    <comment_count>10</comment_count>
      <attachid>159951</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 03:07:58 -0700</bug_when>
    <thetext>Comment on attachment 159951
Rebased

Clearing flags on attachment: 159951

Committed r126413: &lt;http://trac.webkit.org/changeset/126413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702840</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 03:08:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159893</attachid>
            <date>2012-08-22 03:32:41 -0700</date>
            <delta_ts>2012-08-22 08:11:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94686-20120822143239.patch</filename>
            <type>text/plain</type>
            <size>9796</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzZDY3MTAzYzJhZDkx
ZWMxMTQ1M2IxOWRiM2QyOGJhYWFiMWZiZi4uZDAzNGM0N2ZjZDE1NzY0ZjUwZWExM2U1YmM2NGFh
YjU0ZjQ3MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTA4LTIyICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWxsb3cgY29sbGVjdGluZyBjYWxscyBmb3IgUmVzb3VyY2Ugb2JqZWN0cyBh
ZmZlY3RpbmcgdGhlaXIgc3RhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbGxlY3RpbmcgY2FsbHMgZm9yIFdlYkdMIFJlc291cmNlIG9i
amVjdHMgYWZmZWN0aW5nIHRoZWlyIHN0YXRlcy4KKyAgICAgICAgQ2xvbmUgQ2FsbCdzIG11dGFi
bGUgYXJndW1lbnRzIGJlZm9yZSBwdXNoaW5nIGl0IHRvIHRoZSBsb2cuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorCisyMDEyLTA4LTIyICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gR2VuZXJpYyBmcmFtZXdvcmsgZHJhZnQg
Zm9yIHRyYWNraW5nIFdlYkdMIHJlc291cmNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwppbmRleCA5
Nzc4NzI3Njc2NTFmZGQ5MzI4ZDBiMzBhYjgyOTc0YWE0NTlkMWU3Li43NzNlZDJkMzE5YjRkMGI0
ZDY2MWFiZTBlNmY5ZDFhZTFlOTIxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwpAQCAtMzUs
NiArMzUsMTAzIEBACiAgKi8KIChmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpIHsKIAordmFyIFR5cGVVdGlscyA9IHsKKyAgICAv
KioKKyAgICAgKiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3R5cGVkYXJyYXkvc3Bl
Y3MvbGF0ZXN0LyM3CisgICAgICogQHR5cGUge0FycmF5LjxGdW5jdGlvbj59CisgICAgICovCisg
ICAgVFlQRURfQVJSQVlfQ0xBU1NFUzogKGZ1bmN0aW9uKHR5cGVOYW1lcykgeworICAgICAgICB2
YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZU5hbWVzLmxl
bmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKHdpbmRvd1t0eXBlTmFtZXNbaV1d
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHdpbmRvd1t0eXBlTmFtZXNbaV1dKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKFsiSW50OEFycmF5IiwgIlVp
bnQ4QXJyYXkiLCAiVWludDhDbGFtcGVkQXJyYXkiLCAiSW50MTZBcnJheSIsICJVaW50MTZBcnJh
eSIsICJJbnQzMkFycmF5IiwgIlVpbnQzMkFycmF5IiwgIkZsb2F0MzJBcnJheSIsICJGbG9hdDY0
QXJyYXkiXSksCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IGFycmF5CisgICAgICogQHJl
dHVybiB7RnVuY3Rpb259CisgICAgICovCisgICAgdHlwZWRBcnJheUNsYXNzOiBmdW5jdGlvbihh
cnJheSkKKyAgICB7CisgICAgICAgIHZhciBjbGFzc2VzID0gVHlwZVV0aWxzLlRZUEVEX0FSUkFZ
X0NMQVNTRVM7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gY2xhc3Nlcy5sZW5ndGg7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChhcnJheSBpbnN0YW5jZW9mIGNsYXNzZXNbaV0p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzZXNbaV07CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Kn0gb2JqCisg
ICAgICogQHJldHVybiB7Kn0KKyAgICAgKiBGSVhNRTogc3VwcHJlc3MgY2hlY2tUeXBlcyBkdWUg
dG8gb3V0ZGF0ZWQgYnVpbHRpbiBleHRlcm5zIGZvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
YW5kIEltYWdlRGF0YQorICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30KKyAgICAgKi8KKyAg
ICBjbG9uZTogZnVuY3Rpb24ob2JqKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmopCisgICAgICAg
ICAgICByZXR1cm4gb2JqOworCisgICAgICAgIHZhciB0ID0gdHlwZW9mIG9iajsKKyAgICAgICAg
aWYgKHQgIT09ICJvYmplY3QiICYmIHQgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICByZXR1
cm4gb2JqOworCisgICAgICAgIC8vIEhhbmRsZSBBcnJheSBhbmQgQXJyYXlCdWZmZXIgaW5zdGFu
Y2VzLgorICAgICAgICBpZiAodHlwZW9mIG9iai5zbGljZSA9PT0gImZ1bmN0aW9uIikKKyAgICAg
ICAgICAgIHJldHVybiBvYmouc2xpY2UoMCk7CisKKyAgICAgICAgdmFyIHR5cGVkQXJyYXlDbGFz
cyA9IFR5cGVVdGlscy50eXBlZEFycmF5Q2xhc3Mob2JqKTsKKyAgICAgICAgaWYgKHR5cGVkQXJy
YXlDbGFzcykKKyAgICAgICAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheUNsYXNzKG9iaik7CisK
KyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gb2JqLmNsb25lTm9kZSh0cnVlKTsKKworICAgICAgICBpZiAob2JqIGluc3RhbmNl
b2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmouY2xv
bmVOb2RlKHRydWUpOworICAgICAgICAgICAgdmFyIGNvbnRleHQgPSByZXN1bHQuZ2V0Q29udGV4
dCgiMmQiKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG9iaiwgMCwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9iaiBpbnN0
YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmou
Y2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgLy8gRklYTUU6IENvcHkgSFRNTFZpZGVvRWxl
bWVudCdzIGN1cnJlbnQgaW1hZ2UgaW50byBhIDJkIGNhbnZhcy4KKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgSW1hZ2VE
YXRhKSB7CisgICAgICAgICAgICB2YXIgY29udGV4dCA9IFR5cGVVdGlscy5fZHVtbXlDYW52YXMy
ZENvbnRleHQoKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUltYWdl
RGF0YShvYmopOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBvYmouZGF0YS5sZW5n
dGg7IGkgPCBuOyArK2kpCisgICAgICAgICAgICAgIHJlc3VsdC5kYXRhW2ldID0gb2JqLmRhdGFb
aV07CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgY29u
c29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBmYWlsZWQgdG8gY2xvbmUgb2JqZWN0OiAi
LCBvYmopOworICAgICAgICByZXR1cm4gb2JqOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cmV0dXJuIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9CisgICAgICovCisgICAgX2R1bW15Q2Fu
dmFzMmRDb250ZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9IFR5
cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHQ7CisgICAgICAgIGlmICghY29udGV4dCkgewor
ICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OworICAgICAgICAgICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAgICAg
ICAgICAgdmFyIGNvbnRleHRSZXNvdXJjZSA9IFJlc291cmNlLmZvck9iamVjdChjb250ZXh0KTsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0UmVzb3VyY2UpCisgICAgICAgICAgICAgICAgY29udGV4
dCA9IGNvbnRleHRSZXNvdXJjZS53cmFwcGVkT2JqZWN0KCk7CisgICAgICAgICAgICBUeXBlVXRp
bHMuX2R1bW15Q2FudmFzMmRDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gY29udGV4dDsKKyAgICB9Cit9CisKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKi8KQEAg
LTkzLDcgKzE5MCw3IEBAIENhY2hlLnByb3RvdHlwZSA9IHsKICAqIEBwYXJhbSB7UmVzb3VyY2V8
T2JqZWN0fSB0aGlzT2JqZWN0CiAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lCiAgKiBA
cGFyYW0ge0FycmF5fEFyZ3VtZW50c30gYXJncwotICogQHBhcmFtIHtSZXNvdXJjZXwqfSByZXN1
bHQKKyAqIEBwYXJhbSB7UmVzb3VyY2V8Kj19IHJlc3VsdAogICovCiBmdW5jdGlvbiBDYWxsKHRo
aXNPYmplY3QsIGZ1bmN0aW9uTmFtZSwgYXJncywgcmVzdWx0KQogewpAQCAtMTM0LDYgKzIzMSwx
OCBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICByZXN1bHQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHQ7CisgICAgfSwKKworICAgIGZyZWV6ZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2ZyZWV6ZWQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHRoaXMuX2ZyZWV6ZWQgPSB0cnVlOworICAgICAgICBmb3IgKHZhciBpID0g
MCwgbiA9IHRoaXMuX2FyZ3MubGVuZ3RoOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogZnJlZXplIHRoZSBSZXNvdXJjZXMgYWxzbyEKKyAgICAgICAgICAgIGlmICghUmVzb3Vy
Y2UuZm9yT2JqZWN0KHRoaXMuX2FyZ3NbaV0pKQorICAgICAgICAgICAgICAgIHRoaXMuX2FyZ3Nb
aV0gPSBUeXBlVXRpbHMuY2xvbmUodGhpcy5fYXJnc1tpXSk7CisgICAgICAgIH0KICAgICB9CiB9
CiAKQEAgLTE0NSwxOCArMjU0LDI0IEBAIGZ1bmN0aW9uIFJlc291cmNlKHdyYXBwZWRPYmplY3Qp
CiB7CiAgICAgdGhpcy5faWQgPSArK1Jlc291cmNlLl91bmlxdWVJZDsKICAgICB0aGlzLl9yZXNv
dXJjZU1hbmFnZXIgPSBudWxsOworICAgIHRoaXMuX2NhbGxzID0gW107CiAgICAgdGhpcy5zZXRX
cmFwcGVkT2JqZWN0KHdyYXBwZWRPYmplY3QpOwogfQogCisvKioKKyAqIEB0eXBlIHtudW1iZXJ9
CisgKi8KIFJlc291cmNlLl91bmlxdWVJZCA9IDA7CiAKIC8qKgotICogQHBhcmFtIHtPYmplY3R9
IG9iagorICogQHBhcmFtIHsqfSBvYmoKICAqIEByZXR1cm4ge1Jlc291cmNlfQogICovCiBSZXNv
dXJjZS5mb3JPYmplY3QgPSBmdW5jdGlvbihvYmopCiB7Ci0gICAgaWYgKCFvYmogfHwgb2JqIGlu
c3RhbmNlb2YgUmVzb3VyY2UpCisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybiBudWxsOwor
ICAgIGlmIChvYmogaW5zdGFuY2VvZiBSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG9iajsKICAg
ICBpZiAodHlwZW9mIG9iaiA9PT0gIm9iamVjdCIpCiAgICAgICAgIHJldHVybiBvYmpbIl9fcmVz
b3VyY2VPYmplY3QiXTsKQEAgLTE4NSw3ICszMDAsOCBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgc2V0V3JhcHBlZE9iamVjdDogZnVuY3Rpb24odmFsdWUpCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCh2YWx1ZSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgUmVzb3Vy
Y2UpLCAiQmluZGluZyBhIFJlc291cmNlIG9iamVjdCB0byBhbm90aGVyIFJlc291cmNlIG9iamVj
dD8iKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodmFsdWUsICJ3cmFwcGVkT2JqZWN0IHNob3Vs
ZCBub3QgYmUgTlVMTCIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghKHZhbHVlIGluc3RhbmNl
b2YgUmVzb3VyY2UpLCAiQmluZGluZyBhIFJlc291cmNlIG9iamVjdCB0byBhbm90aGVyIFJlc291
cmNlIG9iamVjdD8iKTsKICAgICAgICAgdGhpcy5fd3JhcHBlZE9iamVjdCA9IHZhbHVlOwogICAg
ICAgICB0aGlzLl9iaW5kT2JqZWN0VG9SZXNvdXJjZSh2YWx1ZSk7CiAgICAgfSwKQEAgLTIxNiw2
ICszMzIsMjMgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtBcnJheS48Q2FsbD59CisgICAgICovCisgICAgY2FsbHM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYWxsczsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtDYWxsfSBjYWxsCisgICAgICovCisgICAgcHVzaENhbGw6IGZ1bmN0
aW9uKGNhbGwpCisgICAgeworICAgICAgICBjYWxsLmZyZWV6ZSgpOworICAgICAgICB0aGlzLl9j
YWxscy5wdXNoKGNhbGwpOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge09iamVj
dH0gb2JqZWN0CiAgICAgICovCiAgICAgX2JpbmRPYmplY3RUb1Jlc291cmNlOiBmdW5jdGlvbihv
YmplY3QpCkBAIC0yNTgsOCArMzkxLDExIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1Byb3BlcnR5KHByb3BlcnR5
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodHlwZW9mIGdsQ29udGV4dFtwcm9wZXJ0eV0g
PT09ICJmdW5jdGlvbiIpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogb3ZlcnJpZGUgR0wg
Y2FsbHMgYWZmZWN0aW5nIHJlc291cmNlcyBzdGF0ZXMgaGVyZS4KLSAgICAgICAgICAgICAgICBw
cm94eVtwcm9wZXJ0eV0gPSBzZWxmLl93cmFwRnVuY3Rpb24oc2VsZiwgZ2xDb250ZXh0LCBnbENv
bnRleHRbcHJvcGVydHldLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgdmFyIGN1c3RvbVdy
YXBGdW5jdGlvbiA9IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbnNb
cHJvcGVydHldOworICAgICAgICAgICAgICAgIGlmIChjdXN0b21XcmFwRnVuY3Rpb24pCisgICAg
ICAgICAgICAgICAgICAgIHByb3h5W3Byb3BlcnR5XSA9IHNlbGYuX3dyYXBDdXN0b21GdW5jdGlv
bihzZWxmLCBnbENvbnRleHQsIGdsQ29udGV4dFtwcm9wZXJ0eV0sIHByb3BlcnR5LCBjdXN0b21X
cmFwRnVuY3Rpb24pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
cHJveHlbcHJvcGVydHldID0gc2VsZi5fd3JhcEZ1bmN0aW9uKHNlbGYsIGdsQ29udGV4dCwgZ2xD
b250ZXh0W3Byb3BlcnR5XSwgcHJvcGVydHkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICgvXltB
LVowLTlfXSskLy50ZXN0KHByb3BlcnR5KSkgewogICAgICAgICAgICAgICAgIC8vIEZhc3QgYWNj
ZXNzIHRvIGVudW1zIGFuZCBjb25zdGFudHMuCiAgICAgICAgICAgICAgICAgcHJveHlbcHJvcGVy
dHldID0gZ2xDb250ZXh0W3Byb3BlcnR5XTsKQEAgLTI4OCw2ICs0MjQsMjkgQEAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0UmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7V2ViR0xS
ZW5kZXJpbmdDb250ZXh0fSBvcmlnaW5hbE9iamVjdAogICAgICAqIEBwYXJhbSB7RnVuY3Rpb259
IG9yaWdpbmFsRnVuY3Rpb24KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lCisg
ICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9tV3JhcEZ1bmN0aW9uCisgICAgICogQHJldHVy
biB7Kn0KKyAgICAgKi8KKyAgICBfd3JhcEN1c3RvbUZ1bmN0aW9uOiBmdW5jdGlvbihyZXNvdXJj
ZSwgb3JpZ2luYWxPYmplY3QsIG9yaWdpbmFsRnVuY3Rpb24sIGZ1bmN0aW9uTmFtZSwgY3VzdG9t
V3JhcEZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIG1hbmFnZXIgPSByZXNvdXJjZS5tYW5hZ2VyKCk7CisgICAgICAg
ICAgICBpZiAobWFuYWdlcikKKyAgICAgICAgICAgICAgICBtYW5hZ2VyLmNhcHR1cmVBcmd1bWVu
dHMocmVzb3VyY2UsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICB2YXIgd3JhcEZ1bmN0aW9uID0g
bmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbihvcmlnaW5hbE9i
amVjdCwgb3JpZ2luYWxGdW5jdGlvbiwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudHMpOworICAgICAg
ICAgICAgY3VzdG9tV3JhcEZ1bmN0aW9uLmFwcGx5KHdyYXBGdW5jdGlvbiwgYXJndW1lbnRzKTsK
KyAgICAgICAgICAgIGlmIChtYW5hZ2VyKQorICAgICAgICAgICAgICAgIG1hbmFnZXIucmVwb3J0
Q2FsbCh3cmFwRnVuY3Rpb24uY2FsbCgpKTsKKyAgICAgICAgICAgIHJldHVybiB3cmFwRnVuY3Rp
b24ucmVzdWx0KCk7CisgICAgICAgIH07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7UmVzb3VyY2V9IHJlc291cmNlCisgICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRl
eHR9IG9yaWdpbmFsT2JqZWN0CisgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3JpZ2luYWxGdW5j
dGlvbgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUKICAgICAgKiBAcmV0dXJu
IHsqfQogICAgICAqLwogICAgIF93cmFwRnVuY3Rpb246IGZ1bmN0aW9uKHJlc291cmNlLCBvcmln
aW5hbE9iamVjdCwgb3JpZ2luYWxGdW5jdGlvbiwgZnVuY3Rpb25OYW1lKQpAQCAtMzEzLDcgKzQ3
Miw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBSZXNvdXJjZS5wcm90b3R5cGU7CiAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0g
b3JpZ2luYWxPYmplY3QKICAqIEBwYXJhbSB7RnVuY3Rpb259IG9yaWdpbmFsRnVuY3Rpb24KICAq
IEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUKLSAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MKKyAq
IEBwYXJhbSB7QXJyYXl8QXJndW1lbnRzfSBhcmdzCiAgKi8KIFdlYkdMUmVuZGVyaW5nQ29udGV4
dFJlc291cmNlLldyYXBGdW5jdGlvbiA9IGZ1bmN0aW9uKG9yaWdpbmFsT2JqZWN0LCBvcmlnaW5h
bEZ1bmN0aW9uLCBmdW5jdGlvbk5hbWUsIGFyZ3MpCiB7CkBAIC0zNDgsNiArNTA3LDExIEBAIFdl
YkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfQogCitXZWJHTFJlbmRlcmluZ0NvbnRleHRSZXNvdXJjZS5XcmFwRnVuY3Rpb25zID0g
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY3VzdG9tIHdyYXBwZXJzLgorICAgIF9fcHJvdG9f
XzogbnVsbAorfTsKKwogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqLwpAQCAtNDQ1LDYgKzYwOSwx
MCBAQCBSZXNvdXJjZVRyYWNraW5nTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3N0b3BDYXB0dXJpbmdPbkZyYW1lRW5kID0gdHJ1ZTsKICAgICB9LAogCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtSZXNvdXJjZX0gcmVzb3VyY2UKKyAgICAgKiBAcGFyYW0ge0FycmF5fEFyZ3Vt
ZW50c30gYXJncworICAgICAqLwogICAgIGNhcHR1cmVBcmd1bWVudHM6IGZ1bmN0aW9uKHJlc291
cmNlLCBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYXB0dXJpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159933</attachid>
            <date>2012-08-22 08:01:06 -0700</date>
            <delta_ts>2012-08-22 08:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94686-20120822190104.patch</filename>
            <type>text/plain</type>
            <size>7518</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzZDY3MTAzYzJhZDkx
ZWMxMTQ1M2IxOWRiM2QyOGJhYWFiMWZiZi4uZDAzNGM0N2ZjZDE1NzY0ZjUwZWExM2U1YmM2NGFh
YjU0ZjQ3MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTA4LTIyICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWxsb3cgY29sbGVjdGluZyBjYWxscyBmb3IgUmVzb3VyY2Ugb2JqZWN0cyBh
ZmZlY3RpbmcgdGhlaXIgc3RhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbGxlY3RpbmcgY2FsbHMgZm9yIFdlYkdMIFJlc291cmNlIG9i
amVjdHMgYWZmZWN0aW5nIHRoZWlyIHN0YXRlcy4KKyAgICAgICAgQ2xvbmUgQ2FsbCdzIG11dGFi
bGUgYXJndW1lbnRzIGJlZm9yZSBwdXNoaW5nIGl0IHRvIHRoZSBsb2cuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorCisyMDEyLTA4LTIyICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gR2VuZXJpYyBmcmFtZXdvcmsgZHJhZnQg
Zm9yIHRyYWNraW5nIFdlYkdMIHJlc291cmNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwppbmRleCA5
Nzc4NzI3Njc2NTFmZGQ5MzI4ZDBiMzBhYjgyOTc0YWE0NTlkMWU3Li5iODkyZGRmN2NiOGE3NDMy
ZDI3ZDdmMTQyYTU1MGE1NzViNjc5MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwpAQCAtMzUs
NiArMzUsMTA1IEBACiAgKi8KIChmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpIHsKIAordmFyIFR5cGVVdGlscyA9IHsKKyAgICAv
KioKKyAgICAgKiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3R5cGVkYXJyYXkvc3Bl
Y3MvbGF0ZXN0LyM3CisgICAgICogQHR5cGUge0FycmF5LjxGdW5jdGlvbj59CisgICAgICovCisg
ICAgVFlQRURfQVJSQVlfQ0xBU1NFUzogKGZ1bmN0aW9uKHR5cGVOYW1lcykgeworICAgICAgICB2
YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZU5hbWVzLmxl
bmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKHdpbmRvd1t0eXBlTmFtZXNbaV1d
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHdpbmRvd1t0eXBlTmFtZXNbaV1dKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pKFsiSW50OEFycmF5IiwgIlVp
bnQ4QXJyYXkiLCAiVWludDhDbGFtcGVkQXJyYXkiLCAiSW50MTZBcnJheSIsICJVaW50MTZBcnJh
eSIsICJJbnQzMkFycmF5IiwgIlVpbnQzMkFycmF5IiwgIkZsb2F0MzJBcnJheSIsICJGbG9hdDY0
QXJyYXkiXSksCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IGFycmF5CisgICAgICogQHJl
dHVybiB7RnVuY3Rpb259CisgICAgICovCisgICAgdHlwZWRBcnJheUNsYXNzOiBmdW5jdGlvbihh
cnJheSkKKyAgICB7CisgICAgICAgIHZhciBjbGFzc2VzID0gVHlwZVV0aWxzLlRZUEVEX0FSUkFZ
X0NMQVNTRVM7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gY2xhc3Nlcy5sZW5ndGg7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChhcnJheSBpbnN0YW5jZW9mIGNsYXNzZXNbaV0p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzZXNbaV07CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Kn0gb2JqCisg
ICAgICogQHJldHVybiB7Kn0KKyAgICAgKiBGSVhNRTogc3VwcHJlc3MgY2hlY2tUeXBlcyBkdWUg
dG8gb3V0ZGF0ZWQgYnVpbHRpbiBleHRlcm5zIGZvciBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
YW5kIEltYWdlRGF0YQorICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30KKyAgICAgKi8KKyAg
ICBjbG9uZTogZnVuY3Rpb24ob2JqKQorICAgIHsKKyAgICAgICAgaWYgKCFvYmopCisgICAgICAg
ICAgICByZXR1cm4gb2JqOworCisgICAgICAgIHZhciB0eXBlID0gdHlwZW9mIG9iajsKKyAgICAg
ICAgaWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICByZXR1cm4gb2JqOworCisgICAgICAgIC8vIEhhbmRsZSBBcnJheSBhbmQgQXJyYXlCdWZm
ZXIgaW5zdGFuY2VzLgorICAgICAgICBpZiAodHlwZW9mIG9iai5zbGljZSA9PT0gImZ1bmN0aW9u
IikgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob2JqIGluc3RhbmNlb2YgQXJyYXkgfHwg
b2JqIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIG9iai5zbGlj
ZSgwKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0eXBlZEFycmF5Q2xhc3MgPSBUeXBlVXRp
bHMudHlwZWRBcnJheUNsYXNzKG9iaik7CisgICAgICAgIGlmICh0eXBlZEFycmF5Q2xhc3MpCisg
ICAgICAgICAgICByZXR1cm4gbmV3IHR5cGVkQXJyYXlDbGFzcyhvYmopOworCisgICAgICAgIGlm
IChvYmogaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuIG9i
ai5jbG9uZU5vZGUodHJ1ZSk7CisKKyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxDYW52
YXNFbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqLmNsb25lTm9kZSh0cnVl
KTsKKyAgICAgICAgICAgIHZhciBjb250ZXh0ID0gcmVzdWx0LmdldENvbnRleHQoIjJkIik7Cisg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShvYmosIDAsIDApOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBIVE1M
VmlkZW9FbGVtZW50KSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqLmNsb25lTm9kZSh0
cnVlKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDb3B5IEhUTUxWaWRlb0VsZW1lbnQncyBjdXJy
ZW50IGltYWdlIGludG8gYSAyZCBjYW52YXMuCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEltYWdlRGF0YSkgeworICAg
ICAgICAgICAgdmFyIGNvbnRleHQgPSBUeXBlVXRpbHMuX2R1bW15Q2FudmFzMmRDb250ZXh0KCk7
CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVJbWFnZURhdGEob2JqKTsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gb2JqLmRhdGEubGVuZ3RoOyBpIDwgbjsg
KytpKQorICAgICAgICAgICAgICByZXN1bHQuZGF0YVtpXSA9IG9iai5kYXRhW2ldOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnNvbGUuZXJyb3Io
IkFTU0VSVF9OT1RfUkVBQ0hFRDogZmFpbGVkIHRvIGNsb25lIG9iamVjdDogIiwgb2JqKTsKKyAg
ICAgICAgcmV0dXJuIG9iajsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEfQorICAgICAqLworICAgIF9kdW1teUNhbnZhczJkQ29udGV4
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRleHQgPSBUeXBlVXRpbHMuX2R1
bW15Q2FudmFzMmRDb250ZXh0OworICAgICAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAg
ICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgIHZhciBj
b250ZXh0UmVzb3VyY2UgPSBSZXNvdXJjZS5mb3JPYmplY3QoY29udGV4dCk7CisgICAgICAgICAg
ICBpZiAoY29udGV4dFJlc291cmNlKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0
UmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOworICAgICAgICAgICAgVHlwZVV0aWxzLl9kdW1teUNh
bnZhczJkQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQ7CisgICAgfQorfQorCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICovCkBAIC05Myw3ICsxOTIs
NyBAQCBDYWNoZS5wcm90b3R5cGUgPSB7CiAgKiBAcGFyYW0ge1Jlc291cmNlfE9iamVjdH0gdGhp
c09iamVjdAogICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uTmFtZQogICogQHBhcmFtIHtBcnJh
eXxBcmd1bWVudHN9IGFyZ3MKLSAqIEBwYXJhbSB7UmVzb3VyY2V8Kn0gcmVzdWx0CisgKiBAcGFy
YW0ge1Jlc291cmNlfCo9fSByZXN1bHQKICAqLwogZnVuY3Rpb24gQ2FsbCh0aGlzT2JqZWN0LCBm
dW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3VsdCkKIHsKQEAgLTEzNCw2ICsyMzMsMTggQEAgQ2FsbC5w
cm90b3R5cGUgPSB7CiAgICAgcmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzdWx0OworICAgIH0sCisKKyAgICBmcmVlemU6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9mcmVlemVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLl9mcmVlemVkID0gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlz
Ll9hcmdzLmxlbmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGZyZWV6
ZSB0aGUgUmVzb3VyY2VzIGFsc28hCisgICAgICAgICAgICBpZiAoIVJlc291cmNlLmZvck9iamVj
dCh0aGlzLl9hcmdzW2ldKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hcmdzW2ldID0gVHlwZVV0
aWxzLmNsb25lKHRoaXMuX2FyZ3NbaV0pOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNDUs
MTggKzI1NiwyNCBAQCBmdW5jdGlvbiBSZXNvdXJjZSh3cmFwcGVkT2JqZWN0KQogewogICAgIHRo
aXMuX2lkID0gKytSZXNvdXJjZS5fdW5pcXVlSWQ7CiAgICAgdGhpcy5fcmVzb3VyY2VNYW5hZ2Vy
ID0gbnVsbDsKKyAgICB0aGlzLl9jYWxscyA9IFtdOwogICAgIHRoaXMuc2V0V3JhcHBlZE9iamVj
dCh3cmFwcGVkT2JqZWN0KTsKIH0KIAorLyoqCisgKiBAdHlwZSB7bnVtYmVyfQorICovCiBSZXNv
dXJjZS5fdW5pcXVlSWQgPSAwOwogCiAvKioKLSAqIEBwYXJhbSB7T2JqZWN0fSBvYmoKKyAqIEBw
YXJhbSB7Kn0gb2JqCiAgKiBAcmV0dXJuIHtSZXNvdXJjZX0KICAqLwogUmVzb3VyY2UuZm9yT2Jq
ZWN0ID0gZnVuY3Rpb24ob2JqKQogewotICAgIGlmICghb2JqIHx8IG9iaiBpbnN0YW5jZW9mIFJl
c291cmNlKQorICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAob2Jq
IGluc3RhbmNlb2YgUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgaWYgKHR5cGVv
ZiBvYmogPT09ICJvYmplY3QiKQogICAgICAgICByZXR1cm4gb2JqWyJfX3Jlc291cmNlT2JqZWN0
Il07CkBAIC0xODUsNyArMzAyLDggQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIHNldFdyYXBwZWRPYmplY3Q6IGZ1bmN0aW9uKHZhbHVlKQogICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodmFsdWUgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIFJlc291cmNlKSwgIkJpbmRp
bmcgYSBSZXNvdXJjZSBvYmplY3QgdG8gYW5vdGhlciBSZXNvdXJjZSBvYmplY3Q/Iik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlLCAid3JhcHBlZE9iamVjdCBzaG91bGQgbm90IGJlIE5V
TEwiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoISh2YWx1ZSBpbnN0YW5jZW9mIFJlc291cmNl
KSwgIkJpbmRpbmcgYSBSZXNvdXJjZSBvYmplY3QgdG8gYW5vdGhlciBSZXNvdXJjZSBvYmplY3Q/
Iik7CiAgICAgICAgIHRoaXMuX3dyYXBwZWRPYmplY3QgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5f
YmluZE9iamVjdFRvUmVzb3VyY2UodmFsdWUpOwogICAgIH0sCkBAIC0yMTYsNiArMzM0LDIzIEBA
IFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVy
biB7QXJyYXkuPENhbGw+fQorICAgICAqLworICAgIGNhbGxzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHM7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7Q2FsbH0gY2FsbAorICAgICAqLworICAgIHB1c2hDYWxsOiBmdW5jdGlvbihjYWxsKQor
ICAgIHsKKyAgICAgICAgY2FsbC5mcmVlemUoKTsKKyAgICAgICAgdGhpcy5fY2FsbHMucHVzaChj
YWxsKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAog
ICAgICAqLwogICAgIF9iaW5kT2JqZWN0VG9SZXNvdXJjZTogZnVuY3Rpb24ob2JqZWN0KQpAQCAt
MzEzLDcgKzQ0OCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBSZXNvdXJjZS5wcm90b3R5cGU7CiAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5n
Q29udGV4dH0gb3JpZ2luYWxPYmplY3QKICAqIEBwYXJhbSB7RnVuY3Rpb259IG9yaWdpbmFsRnVu
Y3Rpb24KICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUKLSAqIEBwYXJhbSB7QXJyYXl9
IGFyZ3MKKyAqIEBwYXJhbSB7QXJyYXl8QXJndW1lbnRzfSBhcmdzCiAgKi8KIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5jdGlvbiA9IGZ1bmN0aW9uKG9yaWdpbmFsT2JqZWN0
LCBvcmlnaW5hbEZ1bmN0aW9uLCBmdW5jdGlvbk5hbWUsIGFyZ3MpCiB7CkBAIC00NDUsNiArNTgw
LDEwIEBAIFJlc291cmNlVHJhY2tpbmdNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc3RvcENhcHR1cmluZ09uRnJhbWVFbmQgPSB0cnVlOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1Jlc291cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7QXJyYXl8QXJn
dW1lbnRzfSBhcmdzCisgICAgICovCiAgICAgY2FwdHVyZUFyZ3VtZW50czogZnVuY3Rpb24ocmVz
b3VyY2UsIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhcHR1cmluZykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159935</attachid>
            <date>2012-08-22 08:11:50 -0700</date>
            <delta_ts>2012-08-22 09:09:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94686-20120822191148.patch</filename>
            <type>text/plain</type>
            <size>7548</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MzZDY3MTAzYzJhZDkx
ZWMxMTQ1M2IxOWRiM2QyOGJhYWFiMWZiZi4uZDAzNGM0N2ZjZDE1NzY0ZjUwZWExM2U1YmM2NGFh
YjU0ZjQ3MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTA4LTIyICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWxsb3cgY29sbGVjdGluZyBjYWxscyBmb3IgUmVzb3VyY2Ugb2JqZWN0cyBh
ZmZlY3RpbmcgdGhlaXIgc3RhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbGxlY3RpbmcgY2FsbHMgZm9yIFdlYkdMIFJlc291cmNlIG9i
amVjdHMgYWZmZWN0aW5nIHRoZWlyIHN0YXRlcy4KKyAgICAgICAgQ2xvbmUgQ2FsbCdzIG11dGFi
bGUgYXJndW1lbnRzIGJlZm9yZSBwdXNoaW5nIGl0IHRvIHRoZSBsb2cuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorCisyMDEyLTA4LTIyICBBbmRyZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtXZWJHTF0gR2VuZXJpYyBmcmFtZXdvcmsgZHJhZnQg
Zm9yIHRyYWNraW5nIFdlYkdMIHJlc291cmNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA1OTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwppbmRleCA5
Nzc4NzI3Njc2NTFmZGQ5MzI4ZDBiMzBhYjgyOTc0YWE0NTlkMWU3Li4zMWU4OWUzZWQzMTYxZWEw
M2FkZTg2NTVlNDMxNDY2Yjc1MjQ0OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcwpAQCAtMzUs
NiArMzUsMTA1IEBACiAgKi8KIChmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0
ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpIHsKIAordmFyIFR5cGVVdGlscyA9IHsKKyAgICAv
KioKKyAgICAgKiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3R5cGVkYXJyYXkvc3Bl
Y3MvbGF0ZXN0LyM3CisgICAgICogQHR5cGUge0FycmF5LjxGdW5jdGlvbj59CisgICAgICovCisg
ICAgdHlwZWRBcnJheUNsYXNzZXM6IChmdW5jdGlvbih0eXBlTmFtZXMpIHsKKyAgICAgICAgdmFy
IHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGVOYW1lcy5sZW5n
dGg7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRXaW5kb3dbdHlwZU5h
bWVzW2ldXSkKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbnNwZWN0ZWRXaW5kb3dbdHlw
ZU5hbWVzW2ldXSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KShb
IkludDhBcnJheSIsICJVaW50OEFycmF5IiwgIlVpbnQ4Q2xhbXBlZEFycmF5IiwgIkludDE2QXJy
YXkiLCAiVWludDE2QXJyYXkiLCAiSW50MzJBcnJheSIsICJVaW50MzJBcnJheSIsICJGbG9hdDMy
QXJyYXkiLCAiRmxvYXQ2NEFycmF5Il0pLAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBh
cnJheQorICAgICAqIEByZXR1cm4ge0Z1bmN0aW9ufQorICAgICAqLworICAgIHR5cGVkQXJyYXlD
bGFzczogZnVuY3Rpb24oYXJyYXkpCisgICAgeworICAgICAgICB2YXIgY2xhc3NlcyA9IFR5cGVV
dGlscy50eXBlZEFycmF5Q2xhc3NlczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBjbGFz
c2VzLmxlbmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGFycmF5IGluc3RhbmNl
b2YgY2xhc3Nlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3Nlc1tpXTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHsqfSBvYmoKKyAgICAgKiBAcmV0dXJuIHsqfQorICAgICAqIEZJWE1FOiBzdXBwcmVzcyBj
aGVja1R5cGVzIGR1ZSB0byBvdXRkYXRlZCBidWlsdGluIGV4dGVybnMgZm9yIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCBhbmQgSW1hZ2VEYXRhCisgICAgICogQHN1cHByZXNzIHtjaGVja1R5cGVz
fQorICAgICAqLworICAgIGNsb25lOiBmdW5jdGlvbihvYmopCisgICAgeworICAgICAgICBpZiAo
IW9iaikKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAgICAgdmFyIHR5cGUgPSB0eXBl
b2Ygb2JqOworICAgICAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAhPT0gImZ1bmN0
aW9uIikKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAgICAgLy8gSGFuZGxlIEFycmF5
IGFuZCBBcnJheUJ1ZmZlciBpbnN0YW5jZXMuCisgICAgICAgIGlmICh0eXBlb2Ygb2JqLnNsaWNl
ID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChvYmogaW5zdGFu
Y2VvZiBBcnJheSB8fCBvYmogaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7CisgICAgICAgICAgICBy
ZXR1cm4gb2JqLnNsaWNlKDApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHR5cGVkQXJyYXlD
bGFzcyA9IFR5cGVVdGlscy50eXBlZEFycmF5Q2xhc3Mob2JqKTsKKyAgICAgICAgaWYgKHR5cGVk
QXJyYXlDbGFzcykKKyAgICAgICAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheUNsYXNzKG9iaik7
CisKKyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpCisgICAgICAg
ICAgICByZXR1cm4gb2JqLmNsb25lTm9kZSh0cnVlKTsKKworICAgICAgICBpZiAob2JqIGluc3Rh
bmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBvYmou
Y2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgdmFyIGNvbnRleHQgPSByZXN1bHQuZ2V0Q29u
dGV4dCgiMmQiKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG9iaiwgMCwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9iaiBp
bnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBv
YmouY2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgLy8gRklYTUU6IENvcHkgSFRNTFZpZGVv
RWxlbWVudCdzIGN1cnJlbnQgaW1hZ2UgaW50byBhIDJkIGNhbnZhcy4KKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgSW1h
Z2VEYXRhKSB7CisgICAgICAgICAgICB2YXIgY29udGV4dCA9IFR5cGVVdGlscy5fZHVtbXlDYW52
YXMyZENvbnRleHQoKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUlt
YWdlRGF0YShvYmopOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBvYmouZGF0YS5s
ZW5ndGg7IGkgPCBuOyArK2kpCisgICAgICAgICAgICAgIHJlc3VsdC5kYXRhW2ldID0gb2JqLmRh
dGFbaV07CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAg
Y29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBmYWlsZWQgdG8gY2xvbmUgb2JqZWN0
OiAiLCBvYmopOworICAgICAgICByZXR1cm4gb2JqOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9CisgICAgICovCisgICAgX2R1bW15
Q2FudmFzMmRDb250ZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgY29udGV4dCA9
IFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHQ7CisgICAgICAgIGlmICghY29udGV4dCkg
eworICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgiMmQiKTsKKyAgICAgICAgICAgIHZhciBjb250ZXh0UmVzb3VyY2UgPSBSZXNvdXJjZS5m
b3JPYmplY3QoY29udGV4dCk7CisgICAgICAgICAgICBpZiAoY29udGV4dFJlc291cmNlKQorICAg
ICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0UmVzb3VyY2Uud3JhcHBlZE9iamVjdCgpOwor
ICAgICAgICAgICAgVHlwZVV0aWxzLl9kdW1teUNhbnZhczJkQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorfQorCiAvKioKICAqIEBj
b25zdHJ1Y3RvcgogICovCkBAIC05Myw3ICsxOTIsNyBAQCBDYWNoZS5wcm90b3R5cGUgPSB7CiAg
KiBAcGFyYW0ge1Jlc291cmNlfE9iamVjdH0gdGhpc09iamVjdAogICogQHBhcmFtIHtzdHJpbmd9
IGZ1bmN0aW9uTmFtZQogICogQHBhcmFtIHtBcnJheXxBcmd1bWVudHN9IGFyZ3MKLSAqIEBwYXJh
bSB7UmVzb3VyY2V8Kn0gcmVzdWx0CisgKiBAcGFyYW0ge1Jlc291cmNlfCo9fSByZXN1bHQKICAq
LwogZnVuY3Rpb24gQ2FsbCh0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUsIGFyZ3MsIHJlc3VsdCkK
IHsKQEAgLTEzNCw2ICsyMzMsMTggQEAgQ2FsbC5wcm90b3R5cGUgPSB7CiAgICAgcmVzdWx0OiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0OworICAgIH0sCisK
KyAgICBmcmVlemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9mcmVlemVk
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9mcmVlemVkID0gdHJ1ZTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLl9hcmdzLmxlbmd0aDsgaSA8IG47ICsraSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IGZyZWV6ZSB0aGUgUmVzb3VyY2VzIGFsc28hCisgICAg
ICAgICAgICBpZiAoIVJlc291cmNlLmZvck9iamVjdCh0aGlzLl9hcmdzW2ldKSkKKyAgICAgICAg
ICAgICAgICB0aGlzLl9hcmdzW2ldID0gVHlwZVV0aWxzLmNsb25lKHRoaXMuX2FyZ3NbaV0pOwor
ICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xNDUsMTggKzI1NiwyNCBAQCBmdW5jdGlvbiBSZXNv
dXJjZSh3cmFwcGVkT2JqZWN0KQogewogICAgIHRoaXMuX2lkID0gKytSZXNvdXJjZS5fdW5pcXVl
SWQ7CiAgICAgdGhpcy5fcmVzb3VyY2VNYW5hZ2VyID0gbnVsbDsKKyAgICB0aGlzLl9jYWxscyA9
IFtdOwogICAgIHRoaXMuc2V0V3JhcHBlZE9iamVjdCh3cmFwcGVkT2JqZWN0KTsKIH0KIAorLyoq
CisgKiBAdHlwZSB7bnVtYmVyfQorICovCiBSZXNvdXJjZS5fdW5pcXVlSWQgPSAwOwogCiAvKioK
LSAqIEBwYXJhbSB7T2JqZWN0fSBvYmoKKyAqIEBwYXJhbSB7Kn0gb2JqCiAgKiBAcmV0dXJuIHtS
ZXNvdXJjZX0KICAqLwogUmVzb3VyY2UuZm9yT2JqZWN0ID0gZnVuY3Rpb24ob2JqKQogewotICAg
IGlmICghb2JqIHx8IG9iaiBpbnN0YW5jZW9mIFJlc291cmNlKQorICAgIGlmICghb2JqKQorICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBvYmo7CiAgICAgaWYgKHR5cGVvZiBvYmogPT09ICJvYmplY3QiKQogICAgICAg
ICByZXR1cm4gb2JqWyJfX3Jlc291cmNlT2JqZWN0Il07CkBAIC0xODUsNyArMzAyLDggQEAgUmVz
b3VyY2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHNldFdyYXBwZWRPYmplY3Q6IGZ1bmN0
aW9uKHZhbHVlKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodmFsdWUgJiYgISh2YWx1
ZSBpbnN0YW5jZW9mIFJlc291cmNlKSwgIkJpbmRpbmcgYSBSZXNvdXJjZSBvYmplY3QgdG8gYW5v
dGhlciBSZXNvdXJjZSBvYmplY3Q/Iik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZhbHVlLCAi
d3JhcHBlZE9iamVjdCBzaG91bGQgbm90IGJlIE5VTEwiKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoISh2YWx1ZSBpbnN0YW5jZW9mIFJlc291cmNlKSwgIkJpbmRpbmcgYSBSZXNvdXJjZSBvYmpl
Y3QgdG8gYW5vdGhlciBSZXNvdXJjZSBvYmplY3Q/Iik7CiAgICAgICAgIHRoaXMuX3dyYXBwZWRP
YmplY3QgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fYmluZE9iamVjdFRvUmVzb3VyY2UodmFsdWUp
OwogICAgIH0sCkBAIC0yMTYsNiArMzM0LDIzIEBAIFJlc291cmNlLnByb3RvdHlwZSA9IHsKICAg
ICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPENhbGw+fQorICAgICAqLwor
ICAgIGNhbGxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHM7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FsbH0gY2FsbAorICAgICAqLwor
ICAgIHB1c2hDYWxsOiBmdW5jdGlvbihjYWxsKQorICAgIHsKKyAgICAgICAgY2FsbC5mcmVlemUo
KTsKKyAgICAgICAgdGhpcy5fY2FsbHMucHVzaChjYWxsKTsKKyAgICB9LAorCisgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAogICAgICAqLwogICAgIF9iaW5kT2JqZWN0VG9S
ZXNvdXJjZTogZnVuY3Rpb24ob2JqZWN0KQpAQCAtMzEzLDcgKzQ0OCw3IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZXNvdXJjZS5wcm90b3R5
cGU7CiAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gb3JpZ2luYWxPYmplY3QKICAq
IEBwYXJhbSB7RnVuY3Rpb259IG9yaWdpbmFsRnVuY3Rpb24KICAqIEBwYXJhbSB7c3RyaW5nfSBm
dW5jdGlvbk5hbWUKLSAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MKKyAqIEBwYXJhbSB7QXJyYXl8QXJn
dW1lbnRzfSBhcmdzCiAgKi8KIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLldyYXBGdW5j
dGlvbiA9IGZ1bmN0aW9uKG9yaWdpbmFsT2JqZWN0LCBvcmlnaW5hbEZ1bmN0aW9uLCBmdW5jdGlv
bk5hbWUsIGFyZ3MpCiB7CkBAIC00NDUsNiArNTgwLDEwIEBAIFJlc291cmNlVHJhY2tpbmdNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RvcENhcHR1cmluZ09uRnJhbWVFbmQg
PSB0cnVlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1Jlc291cmNlfSByZXNv
dXJjZQorICAgICAqIEBwYXJhbSB7QXJyYXl8QXJndW1lbnRzfSBhcmdzCisgICAgICovCiAgICAg
Y2FwdHVyZUFyZ3VtZW50czogZnVuY3Rpb24ocmVzb3VyY2UsIGFyZ3MpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2NhcHR1cmluZykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159951</attachid>
            <date>2012-08-22 09:09:26 -0700</date>
            <delta_ts>2012-08-23 03:07:57 -0700</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-94686-20120822200924.patch</filename>
            <type>text/plain</type>
            <size>7500</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmMzAyYjA5MWQ1MTZm
YTAyMGRjYThmMjllYzI5YjE0OWEyYzcyYS4uNDIwN2E5NWFmMjhjZjA4NWIwZmM1NmNhYjQ1ZTI3
MDQzNThhZGRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTIyICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtXZWJHTF0gQWxsb3cgY29sbGVjdGluZyBjYWxscyBmb3IgUmVzb3VyY2Ugb2JqZWN0cyBh
ZmZlY3RpbmcgdGhlaXIgc3RhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NDY4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbGxlY3RpbmcgY2FsbHMgZm9yIFdlYkdMIFJlc291cmNlIG9i
amVjdHMgYWZmZWN0aW5nIHRoZWlyIHN0YXRlcy4KKyAgICAgICAgQ2xvbmUgQ2FsbCdzIG11dGFi
bGUgYXJndW1lbnRzIGJlZm9yZSBwdXNoaW5nIGl0IHRvIHRoZSBsb2cuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorCiAyMDEyLTA4LTIyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIxMjU1NzgpOiBmYXN0L3JlZ2V4L3VuaWNvZGVDYXNlSW5zZW5zaXRp
dmUuaHRtbCBjcmFzaCBvbiBMaW51eCBEZWJ1ZyBDaHJvbWl1bQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0V2ViR0xNb2R1bGVTb3VyY2UuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5q
cwppbmRleCAxMzZlOGM4M2FiYjJhYjE2NTA1MTlmN2E3ZGQxOTkyOTJiNzMyZDk5Li4zYWNlMGIy
NDUwYWZhMWFmY2M4MTBhODE4NzUzZDkxMjIzZDcwZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRXZWJHTE1vZHVsZVNvdXJjZS5q
cwpAQCAtMzUsNiArMzUsMTA1IEBACiAgKi8KIChmdW5jdGlvbiAoSW5qZWN0ZWRTY3JpcHRIb3N0
LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpIHsKIAordmFyIFR5cGVVdGlscyA9
IHsKKyAgICAvKioKKyAgICAgKiBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3R5cGVk
YXJyYXkvc3BlY3MvbGF0ZXN0LyM3CisgICAgICogQHR5cGUge0FycmF5LjxGdW5jdGlvbj59Cisg
ICAgICovCisgICAgdHlwZWRBcnJheUNsYXNzZXM6IChmdW5jdGlvbih0eXBlTmFtZXMpIHsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR5cGVO
YW1lcy5sZW5ndGg7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpbnNwZWN0ZWRXaW5k
b3dbdHlwZU5hbWVzW2ldXSkKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpbnNwZWN0ZWRX
aW5kb3dbdHlwZU5hbWVzW2ldXSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9KShbIkludDhBcnJheSIsICJVaW50OEFycmF5IiwgIlVpbnQ4Q2xhbXBlZEFycmF5Iiwg
IkludDE2QXJyYXkiLCAiVWludDE2QXJyYXkiLCAiSW50MzJBcnJheSIsICJVaW50MzJBcnJheSIs
ICJGbG9hdDMyQXJyYXkiLCAiRmxvYXQ2NEFycmF5Il0pLAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHsqfSBhcnJheQorICAgICAqIEByZXR1cm4ge0Z1bmN0aW9ufQorICAgICAqLworICAgIHR5
cGVkQXJyYXlDbGFzczogZnVuY3Rpb24oYXJyYXkpCisgICAgeworICAgICAgICB2YXIgY2xhc3Nl
cyA9IFR5cGVVdGlscy50eXBlZEFycmF5Q2xhc3NlczsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAs
IG4gPSBjbGFzc2VzLmxlbmd0aDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGFycmF5
IGluc3RhbmNlb2YgY2xhc3Nlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3Nlc1tp
XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHsqfSBvYmoKKyAgICAgKiBAcmV0dXJuIHsqfQorICAgICAqIEZJWE1FOiBz
dXBwcmVzcyBjaGVja1R5cGVzIGR1ZSB0byBvdXRkYXRlZCBidWlsdGluIGV4dGVybnMgZm9yIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCBhbmQgSW1hZ2VEYXRhCisgICAgICogQHN1cHByZXNzIHtj
aGVja1R5cGVzfQorICAgICAqLworICAgIGNsb25lOiBmdW5jdGlvbihvYmopCisgICAgeworICAg
ICAgICBpZiAoIW9iaikKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAgICAgdmFyIHR5
cGUgPSB0eXBlb2Ygb2JqOworICAgICAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlwZSAh
PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisKKyAgICAgICAgLy8gSGFu
ZGxlIEFycmF5IGFuZCBBcnJheUJ1ZmZlciBpbnN0YW5jZXMuCisgICAgICAgIGlmICh0eXBlb2Yg
b2JqLnNsaWNlID09PSAiZnVuY3Rpb24iKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChv
YmogaW5zdGFuY2VvZiBBcnJheSB8fCBvYmogaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm4gb2JqLnNsaWNlKDApOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHR5
cGVkQXJyYXlDbGFzcyA9IFR5cGVVdGlscy50eXBlZEFycmF5Q2xhc3Mob2JqKTsKKyAgICAgICAg
aWYgKHR5cGVkQXJyYXlDbGFzcykKKyAgICAgICAgICAgIHJldHVybiBuZXcgdHlwZWRBcnJheUNs
YXNzKG9iaik7CisKKyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm4gb2JqLmNsb25lTm9kZSh0cnVlKTsKKworICAgICAgICBpZiAo
b2JqIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciByZXN1
bHQgPSBvYmouY2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgdmFyIGNvbnRleHQgPSByZXN1
bHQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG9iaiwg
MCwgMCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG9iaiBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHsKKyAgICAgICAgICAgIHZhciBy
ZXN1bHQgPSBvYmouY2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgLy8gRklYTUU6IENvcHkg
SFRNTFZpZGVvRWxlbWVudCdzIGN1cnJlbnQgaW1hZ2UgaW50byBhIDJkIGNhbnZhcy4KKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAob2JqIGluc3Rh
bmNlb2YgSW1hZ2VEYXRhKSB7CisgICAgICAgICAgICB2YXIgY29udGV4dCA9IFR5cGVVdGlscy5f
ZHVtbXlDYW52YXMyZENvbnRleHQoKTsKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb250ZXh0
LmNyZWF0ZUltYWdlRGF0YShvYmopOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBv
YmouZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpCisgICAgICAgICAgICAgIHJlc3VsdC5kYXRhW2ld
ID0gb2JqLmRhdGFbaV07CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisK
KyAgICAgICAgY29uc29sZS5lcnJvcigiQVNTRVJUX05PVF9SRUFDSEVEOiBmYWlsZWQgdG8gY2xv
bmUgb2JqZWN0OiAiLCBvYmopOworICAgICAgICByZXR1cm4gb2JqOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9CisgICAgICovCisg
ICAgX2R1bW15Q2FudmFzMmRDb250ZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
Y29udGV4dCA9IFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENvbnRleHQ7CisgICAgICAgIGlmICgh
Y29udGV4dCkgeworICAgICAgICAgICAgdmFyIGNhbnZhcyA9IGluc3BlY3RlZFdpbmRvdy5kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgICAgIGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgIHZhciBjb250ZXh0UmVzb3VyY2UgPSBS
ZXNvdXJjZS5mb3JPYmplY3QoY29udGV4dCk7CisgICAgICAgICAgICBpZiAoY29udGV4dFJlc291
cmNlKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0UmVzb3VyY2Uud3JhcHBlZE9i
amVjdCgpOworICAgICAgICAgICAgVHlwZVV0aWxzLl9kdW1teUNhbnZhczJkQ29udGV4dCA9IGNv
bnRleHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorfQorCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgogICovCkBAIC05Myw3ICsxOTIsNyBAQCBDYWNoZS5wcm90b3R5
cGUgPSB7CiAgKiBAcGFyYW0ge1Jlc291cmNlfE9iamVjdH0gdGhpc09iamVjdAogICogQHBhcmFt
IHtzdHJpbmd9IGZ1bmN0aW9uTmFtZQogICogQHBhcmFtIHtBcnJheXxBcmd1bWVudHN9IGFyZ3MK
LSAqIEBwYXJhbSB7UmVzb3VyY2V8Kn0gcmVzdWx0CisgKiBAcGFyYW0ge1Jlc291cmNlfCo9fSBy
ZXN1bHQKICAqLwogZnVuY3Rpb24gQ2FsbCh0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUsIGFyZ3Ms
IHJlc3VsdCkKIHsKQEAgLTEzNCw2ICsyMzMsMTggQEAgQ2FsbC5wcm90b3R5cGUgPSB7CiAgICAg
cmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0Owor
ICAgIH0sCisKKyAgICBmcmVlemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9mcmVlemVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9mcmVlemVkID0g
dHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0aGlzLl9hcmdzLmxlbmd0aDsgaSA8
IG47ICsraSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGZyZWV6ZSB0aGUgUmVzb3VyY2VzIGFs
c28hCisgICAgICAgICAgICBpZiAoIVJlc291cmNlLmZvck9iamVjdCh0aGlzLl9hcmdzW2ldKSkK
KyAgICAgICAgICAgICAgICB0aGlzLl9hcmdzW2ldID0gVHlwZVV0aWxzLmNsb25lKHRoaXMuX2Fy
Z3NbaV0pOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yMDMsMTggKzMxNCwyNCBAQCBmdW5j
dGlvbiBSZXNvdXJjZSh3cmFwcGVkT2JqZWN0KQogewogICAgIHRoaXMuX2lkID0gKytSZXNvdXJj
ZS5fdW5pcXVlSWQ7CiAgICAgdGhpcy5fcmVzb3VyY2VNYW5hZ2VyID0gbnVsbDsKKyAgICB0aGlz
Ll9jYWxscyA9IFtdOwogICAgIHRoaXMuc2V0V3JhcHBlZE9iamVjdCh3cmFwcGVkT2JqZWN0KTsK
IH0KIAorLyoqCisgKiBAdHlwZSB7bnVtYmVyfQorICovCiBSZXNvdXJjZS5fdW5pcXVlSWQgPSAw
OwogCiAvKioKLSAqIEBwYXJhbSB7T2JqZWN0fSBvYmoKKyAqIEBwYXJhbSB7Kn0gb2JqCiAgKiBA
cmV0dXJuIHtSZXNvdXJjZX0KICAqLwogUmVzb3VyY2UuZm9yT2JqZWN0ID0gZnVuY3Rpb24ob2Jq
KQogewotICAgIGlmICghb2JqIHx8IG9iaiBpbnN0YW5jZW9mIFJlc291cmNlKQorICAgIGlmICgh
b2JqKQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICBpZiAob2JqIGluc3RhbmNlb2YgUmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgaWYgKHR5cGVvZiBvYmogPT09ICJvYmplY3Qi
KQogICAgICAgICByZXR1cm4gb2JqWyJfX3Jlc291cmNlT2JqZWN0Il07CkBAIC0yNDMsNyArMzYw
LDggQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHNldFdyYXBwZWRPYmpl
Y3Q6IGZ1bmN0aW9uKHZhbHVlKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodmFsdWUg
JiYgISh2YWx1ZSBpbnN0YW5jZW9mIFJlc291cmNlKSwgIkJpbmRpbmcgYSBSZXNvdXJjZSBvYmpl
Y3QgdG8gYW5vdGhlciBSZXNvdXJjZSBvYmplY3Q/Iik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHZhbHVlLCAid3JhcHBlZE9iamVjdCBzaG91bGQgbm90IGJlIE5VTEwiKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoISh2YWx1ZSBpbnN0YW5jZW9mIFJlc291cmNlKSwgIkJpbmRpbmcgYSBSZXNv
dXJjZSBvYmplY3QgdG8gYW5vdGhlciBSZXNvdXJjZSBvYmplY3Q/Iik7CiAgICAgICAgIHRoaXMu
X3dyYXBwZWRPYmplY3QgPSB2YWx1ZTsKICAgICAgICAgdGhpcy5fYmluZE9iamVjdFRvUmVzb3Vy
Y2UodmFsdWUpOwogICAgIH0sCkBAIC0yNzQsNiArMzkyLDIzIEBAIFJlc291cmNlLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPENhbGw+fQor
ICAgICAqLworICAgIGNhbGxzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fY2FsbHM7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q2FsbH0gY2FsbAor
ICAgICAqLworICAgIHB1c2hDYWxsOiBmdW5jdGlvbihjYWxsKQorICAgIHsKKyAgICAgICAgY2Fs
bC5mcmVlemUoKTsKKyAgICAgICAgdGhpcy5fY2FsbHMucHVzaChjYWxsKTsKKyAgICB9LAorCisg
ICAgLyoqCiAgICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdAogICAgICAqLwogICAgIF9iaW5k
T2JqZWN0VG9SZXNvdXJjZTogZnVuY3Rpb24ob2JqZWN0KQpAQCAtMzkxLDcgKzUyNiw3IEBAIFdl
YkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZXNvdXJj
ZS5wcm90b3R5cGU7CiAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gb3JpZ2luYWxP
YmplY3QKICAqIEBwYXJhbSB7RnVuY3Rpb259IG9yaWdpbmFsRnVuY3Rpb24KICAqIEBwYXJhbSB7
c3RyaW5nfSBmdW5jdGlvbk5hbWUKLSAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MKKyAqIEBwYXJhbSB7
QXJyYXl8QXJndW1lbnRzfSBhcmdzCiAgKi8KIFdlYkdMUmVuZGVyaW5nQ29udGV4dFJlc291cmNl
LldyYXBGdW5jdGlvbiA9IGZ1bmN0aW9uKG9yaWdpbmFsT2JqZWN0LCBvcmlnaW5hbEZ1bmN0aW9u
LCBmdW5jdGlvbk5hbWUsIGFyZ3MpCiB7CkBAIC01OTEsNiArNzI2LDEwIEBAIFJlc291cmNlVHJh
Y2tpbmdNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RvcENhcHR1cmluZ09u
RnJhbWVFbmQgPSB0cnVlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1Jlc291
cmNlfSByZXNvdXJjZQorICAgICAqIEBwYXJhbSB7QXJyYXl8QXJndW1lbnRzfSBhcmdzCisgICAg
ICovCiAgICAgY2FwdHVyZUFyZ3VtZW50czogZnVuY3Rpb24ocmVzb3VyY2UsIGFyZ3MpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2NhcHR1cmluZykK
</data>

          </attachment>
      

    </bug>

</bugzilla>