<?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>93321</bug_id>
          
          <creation_ts>2012-08-06 19:11:18 -0700</creation_ts>
          <short_desc>Exception should be thrown when connect() creates a cycle without DelayNode</short_desc>
          <delta_ts>2014-02-05 11:11:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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="Xingnan Wang">xingnan.wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688687</commentid>
    <comment_count>0</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2012-08-06 19:11:18 -0700</bug_when>
    <thetext>https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#methodsandparams-AudioNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688697</commentid>
    <comment_count>1</comment_count>
      <attachid>156833</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2012-08-06 19:19:30 -0700</bug_when>
    <thetext>Created attachment 156833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694192</commentid>
    <comment_count>2</comment_count>
      <attachid>156833</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-08-13 15:59:51 -0700</bug_when>
    <thetext>Comment on attachment 156833
Patch

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

Thanks for the nice patch to fix this issue.  Just a few small comments.

&gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:73
&gt; +bool AudioNode::checkCycle(AudioNode* startNode, AudioNode* endNode)

Can we make checkCycle more explicit.  Maybe checkForDelayFreeCycle?

Perhaps a short comment can also be added saying we&apos;re looking for a path between startNode and endNode that does not contain a delayNode.

Also, have you considered what happens if the delayNode has 0 delay?  Convolvers could also have an arbitrarily long delay. (These are probably outside the scope of this fix.)

&gt; LayoutTests/webaudio/audionode-connect-cycle-expected.txt:1
&gt; +This tests that we should throw an exception if a cycle is created without DelayNode in it.

Typos:  &quot;we should throw&quot; -&gt; &quot;we throw&quot; and &quot;without DelayNode&quot; -&gt; &quot;without a DelayNode&quot;

&gt; LayoutTests/webaudio/audionode-connect-cycle-expected.txt:5
&gt; +PASS connect() is OK.

These aren&apos;t very informative.  Is there an easy way to provide a little more context?

&gt; LayoutTests/webaudio/audionode-connect-cycle.html:43
&gt; +    

Is there any significance to the fact that the audio context length is 411 but the buffer length is 441?  Or did you intend both to be 0.01 sec long?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694637</commentid>
    <comment_count>3</comment_count>
      <attachid>158252</attachid>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2012-08-14 01:14:15 -0700</bug_when>
    <thetext>Created attachment 158252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694670</commentid>
    <comment_count>4</comment_count>
    <who name="Xingnan Wang">xingnan.wang</who>
    <bug_when>2012-08-14 01:47:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 156833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156833&amp;action=review
&gt; 
&gt; Thanks for the nice patch to fix this issue.  Just a few small comments.
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/AudioNode.cpp:73
&gt; &gt; +bool AudioNode::checkCycle(AudioNode* startNode, AudioNode* endNode)
&gt; 
&gt; Can we make checkCycle more explicit.  Maybe checkForDelayFreeCycle?

Done.

&gt; 
&gt; Perhaps a short comment can also be added saying we&apos;re looking for a path between startNode and endNode that does not contain a delayNode.
&gt;

Done.
 
&gt; Also, have you considered what happens if the delayNode has 0 delay?  Convolvers could also have an arbitrarily long delay. (These are probably outside the scope of this fix.)
&gt; 

That`s an interesting question. Will the sound grow gradually larger and larger and never end if delayNOde has 0 delay? Not sure what`s the result if a convolver in a cycle, I`d love to have a try.

But now in spec only delayNode is allowed in cycle, do we have more use-cases to use a convolver in a cycle?  

&gt; &gt; LayoutTests/webaudio/audionode-connect-cycle-expected.txt:1
&gt; &gt; +This tests that we should throw an exception if a cycle is created without DelayNode in it.
&gt; 
&gt; Typos:  &quot;we should throw&quot; -&gt; &quot;we throw&quot; and &quot;without DelayNode&quot; -&gt; &quot;without a DelayNode&quot;
&gt;
 
Done.

&gt; &gt; LayoutTests/webaudio/audionode-connect-cycle-expected.txt:5
&gt; &gt; +PASS connect() is OK.
&gt; 
&gt; These aren&apos;t very informative.  Is there an easy way to provide a little more context?
&gt;

Find a way to print the node name.
 
&gt; &gt; LayoutTests/webaudio/audionode-connect-cycle.html:43
&gt; &gt; +    
&gt; 
&gt; Is there any significance to the fact that the audio context length is 411 but the buffer length is 441?  Or did you intend both to be 0.01 sec long?

My fault. Both should be 441.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976942</commentid>
    <comment_count>5</comment_count>
      <attachid>158252</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 11:11:35 -0800</bug_when>
    <thetext>Comment on attachment 158252
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156833</attachid>
            <date>2012-08-06 19:19:30 -0700</date>
            <delta_ts>2012-08-14 01:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93321-20120807102448.patch</filename>
            <type>text/plain</type>
            <size>9504</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVjNWVjYTkzY2Q2NTkx
ZTg1YzhjMmM4NzdlZWExNGZlMTRhYmViYy4uYTIyZTBhZTZhZTY5MjhiZGFjZmZlYmFkYTE4MzNh
ZDdkY2EzNTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA2ICBYaW5n
bmFuIFdhbmcgIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIEV4Y2VwdGlvbiBz
aG91bGQgYmUgdGhyb3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNsZSB3aXRob3V0IERl
bGF5Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMzMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b2xsb3cgdGhlIHNwZWMgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAv
d2ViYXVkaW8vc3BlY2lmaWNhdGlvbi5odG1sI21ldGhvZHNhbmRwYXJhbXMtQXVkaW9Ob2RlCisK
KyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpjaGVja0N5Y2xlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Ob2RlOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oOgorICAgICAgICAoQXVkaW9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVP
dXRwdXQ6OmlucHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChBdWRpb05vZGVPdXRwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpudW1iZXJPZklucHV0cyk6CisKIDIwMTIt
MDgtMDUgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXggYXNz
ZXJ0aW9uIGR1cmluZyBkZXRhY2ggb2YgU1ZHIHdyYXBwZXJzIHdpdGhvdXQgYmFzZVZhbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDY5ZmQ5
MGJiMTc2MzYxZTdhYjVjOTFjN2U1ZDFhNzgzZjhkY2RmZGMuLmI2ZDVmYjc5MzYxYzZjOTA1M2I4
MDI5MDc4Y2I2YzcxYTFiZWYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTcwLDYgKzcwLDI0IEBAIEF1ZGlvTm9kZTo6fkF1ZGlvTm9k
ZSgpCiAjZW5kaWYKIH0KIAorYm9vbCBBdWRpb05vZGU6OmNoZWNrQ3ljbGUoQXVkaW9Ob2RlKiBz
dGFydE5vZGUsIEF1ZGlvTm9kZSogZW5kTm9kZSkKK3sKKyAgICBpZiAoc3RhcnROb2RlID09IGVu
ZE5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHN0YXJ0Tm9kZS0+bm9kZVR5
cGUoKSA9PSBBdWRpb05vZGU6Ok5vZGVUeXBlRGVsYXkgfHwgZW5kTm9kZS0+bm9kZVR5cGUoKSA9
PSBBdWRpb05vZGU6Ok5vZGVUeXBlRGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGFydE5vZGUtPm51bWJlck9mT3V0cHV0
cygpOyBpKyspIHsKKyAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQgPSBzdGFydE5vZGUt
Pm91dHB1dChpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IG91dHB1dC0+bnVt
YmVyT2ZJbnB1dHMoKTsgaisrKQorICAgICAgICAgICAgaWYgKGNoZWNrQ3ljbGUob3V0cHV0LT5p
bnB1dChqKS0+bm9kZSgpLCBlbmROb2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjppbml0aWFs
aXplKCkKIHsKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwpAQCAtMTQ1LDYgKzE2MywxNSBA
QCB2b2lkIEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
aWYgKG5vZGVUeXBlKCkgIT0gTm9kZVR5cGVPc2NpbGxhdG9yCisgICAgICAgICYmIG5vZGVUeXBl
KCkgIT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJjZQorICAgICAgICAmJiBub2RlVHlwZSgpICE9
IE5vZGVUeXBlTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2UKKyAgICAgICAgJiYgbm9kZVR5cGUoKSAh
PSBOb2RlVHlwZURlbGF5CisgICAgICAgICYmIGNoZWNrQ3ljbGUoZGVzdGluYXRpb24sIHRoaXMp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBkZXN0aW5hdGlvbi0+aW5wdXQoaW5w
dXRJbmRleCk7CiAgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQob3V0
cHV0SW5kZXgpOwogICAgIGlucHV0LT5jb25uZWN0KG91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0ZWYzZTY1NjBiN2ZmZThkOWMwN2Qw
YzcyNGZkZTljNGIzY2RjMDg5Li5lODE4ZGU2MjY1NGNmYWYyNzI4NGU3MWI5M2FiM2I4ZGFhYzRi
ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAg
LTE1Niw2ICsxNTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuYWJsZU91dHB1dHNJZk5lY2Vz
c2FyeSgpOwogICAgIHZvaWQgZGlzYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisgICAgc3Rh
dGljIGJvb2wgY2hlY2tDeWNsZShBdWRpb05vZGUqIHN0YXJ0Tm9kZSwgQXVkaW9Ob2RlKiBlbmRO
b2RlKTsKIHByb3RlY3RlZDoKICAgICAvLyBJbnB1dHMgYW5kIG91dHB1dHMgbXVzdCBiZSBjcmVh
dGVkIGJlZm9yZSB0aGUgQXVkaW9Ob2RlIGlzIGluaXRpYWxpemVkLgogICAgIHZvaWQgYWRkSW5w
dXQoUGFzc093blB0cjxBdWRpb05vZGVJbnB1dD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCmluZGV4IDE5ZWJhNjRiMjhkMjFm
YzMyODI3Nzc1ZTEzNGJhNTI2NDM4MTk3ZmMuLjgxMzY5OTg1OTAzYTUwNjcxZDFhYmM2OTkxYmNm
N2E2MDQ1ODgyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZU91dHB1dC5jcHAKQEAgLTI1Nyw2ICsyNTcsMTcgQEAgdm9pZCBBdWRpb05vZGVP
dXRwdXQ6OmVuYWJsZSgpCiAgICAgfQogfQogCitBdWRpb05vZGVJbnB1dCogQXVkaW9Ob2RlT3V0
cHV0OjppbnB1dCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9pbnB1dHMuc2l6ZSgpKSkgeworICAgICAgICBJbnB1dHNJdGVyYXRvciBp
ID0gbV9pbnB1dHMuYmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIAorICAgICAgICAg
ICAgKytpOworICAgICAgICByZXR1cm4gKmk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5k
ZXggMjBjMDhjODA5ODBkOWQwOTVhMjJmMDExNWFiZTQ5Mjg0ZmEzNzg1Yy4uODMxYTE5ODEwZjA1
MWZhYjQyNmIxY2YzNjIzMTc0NGJiODg2M2ExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC04NCw2ICs4NCw5IEBAIHB1Ymxp
YzoKICAgICAvLyB1cGRhdGVSZW5kZXJpbmdTdGF0ZSgpIGlzIGNhbGxlZCBpbiB0aGUgYXVkaW8g
dGhyZWFkIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlciBxdWFudHVtIHRvIGhhbmRs
ZSBhbnkgcmVjZW50IGNoYW5nZXMgdG8gdGhlIGdyYXBoIHN0YXRlLgogICAgIC8vIEl0IG11c3Qg
YmUgY2FsbGVkIHdpdGggdGhlIGNvbnRleHQncyBncmFwaCBsb2NrLgogICAgIHZvaWQgdXBkYXRl
UmVuZGVyaW5nU3RhdGUoKTsKKworICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnB1dHMuc2l6ZSgpOyB9CisgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0KHVu
c2lnbmVkKTsKICAgICAKIHByaXZhdGU6CiAgICAgQXVkaW9Ob2RlKiBtX25vZGU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OGM2YmQ3ZDBkOTcxMmYyMWFmYzRmNWJkZGUxYzNlOTYxYWJkYTFlYi4uYTQwOTBhNzY1YzY5NDQ5
NTRjMjRjOWQ0MTE2ODQwYjljYmNiZjI1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4
LTA2ICBYaW5nbmFuIFdhbmcgIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIEV4
Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNsZSB3
aXRob3V0IERlbGF5Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTMzMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
CisgICAgICAgICogd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb25vZGUtY29ubmVjdC1jeWNsZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgVGhpcyB0ZXN0IGlzIHRvIGNoZWNrIHRoZSBleGNlcHRpb24gdGhy
b3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNsZS4KKwogMjAxMi0wOC0wNSAgWW9zaGlm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gZm9y
bSB0ZXN0cyBhcmUgZmxha3ksIG1vc3RseSBvbiBMaW51eApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmOWIzMjVmNTc0ZmQwNTRiNmNmZDBjMjMwOTgzNTg2YjY4N2M0YjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb25vZGUtY29ubmVjdC1jeWNsZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0cyB0aGF0IHdlIHNob3VsZCB0
aHJvdyBhbiBleGNlcHRpb24gaWYgYSBjeWNsZSBpcyBjcmVhdGVkIHdpdGhvdXQgRGVsYXlOb2Rl
IGluIGl0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgY29ubmVjdCgpIGlz
IE9LLgorUEFTUyBjb25uZWN0KCkgaXMgT0suCitQQVNTIGNvbm5lY3QoKSBpcyBPSy4KK1BBU1Mg
Y29ubmVjdCgpIGlzIE9LLgorUEFTUyBjb25uZWN0KCkgZXhjZXB0aW9uIHRocm93biBmb3IgaWxs
ZWdhbCBjeWNsZS4KK1BBU1MgY29ubmVjdCgpIGlzIE9LLgorUEFTUyBjb25uZWN0KCkgZXhjZXB0
aW9uIHRocm93biBmb3IgaWxsZWdhbCBjeWNsZS4KK1BBU1MgY29ubmVjdCgpIGlzIE9LLgorUEFT
UyBjb25uZWN0KCkgaXMgT0suCitQQVNTIGNvbm5lY3QoKSBpcyBPSy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9hdWRpb25vZGUtY29ubmVjdC1jeWNsZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmUzNmQ2
NWY4NGRlZjEwM2FiMDM1NGQ5NzBjYWQ0MzA5ZjQ5Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUuaHRtbApAQCAtMCwwICsx
LDg5IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoYXQgd2Ugc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhIGN5Y2xlIGlzIGNy
ZWF0ZWQgd2l0aG91dCBEZWxheU5vZGUgaW4gaXQuIik7CisKK2Z1bmN0aW9uIGNvbm5lY3QoZnJv
bSwgdG8sIGV4Y2VwdGlvbikgeworICAgIHRyeSB7CisgICAgICAgIGZyb20uY29ubmVjdCh0byk7
CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJjb25uZWN0
KCkgZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIGlsbGVnYWwgY3ljbGUuIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoImNvbm5lY3QoKSBpcyBPSy4iKTsKKyAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIGN5Y2xlLiIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGV4Y2VwdGlv
biB0aHJvd24uIik7CisgICAgfQorfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIAorICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1ZGlvIGNv
bnRleHQuCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KDEsIDQxMSwg
NDQxMDApOworICAgIHZhciBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigxLCA0NDEsIDQ0
MTAwKTsKKyAgICAKKyAgICB2YXIgc291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2Uo
KTsKKyAgICBzb3VyY2UuYnVmZmVyID0gYnVmZmVyOworCisgICAgdmFyIG5vZGUxID0gY29udGV4
dC5jcmVhdGVHYWluTm9kZSgpOworICAgIHZhciBub2RlMiA9IGNvbnRleHQuY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgdmFyIG5vZGUzID0gY29udGV4dC5jcmVhdGVDb252b2x2ZXIoKTsKKyAg
ICB2YXIgbm9kZTQgPSBjb250ZXh0LmNyZWF0ZUdhaW5Ob2RlKCk7CisgICAgdmFyIG5vZGU1ID0g
Y29udGV4dC5jcmVhdGVQYW5uZXIoKTsKKyAgICB2YXIgbm9kZTYgPSBjb250ZXh0LmNyZWF0ZUR5
bmFtaWNzQ29tcHJlc3NvcigpOworCisgICAgdmFyIGRlbGF5ID0gY29udGV4dC5jcmVhdGVEZWxh
eU5vZGUoKTsKKworICAgIC8vIHNvdXJjZSAtLT4gbm9kZTEgLS0+IG5vZGUyIC0tPiBub2RlMyAt
LT4gbm9kZTQgLS0+IGRlc3RpbmF0aW9uCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIFggLS0t
LS0tLS0tLS0tLS0tLS0tLQorICAgIGNvbm5lY3Qoc291cmNlLCBub2RlMSwgZmFsc2UpOworICAg
IGNvbm5lY3Qobm9kZTIsIG5vZGUzLCBmYWxzZSk7CisgICAgY29ubmVjdChub2RlMywgbm9kZTQs
IGZhbHNlKTsKKyAgICBjb25uZWN0KG5vZGU0LCBjb250ZXh0LmRlc3RpbmF0aW9uLCBmYWxzZSk7
CisgICAgY29ubmVjdChub2RlNCwgbm9kZTIsIHRydWUpOworCisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgIG5vZGU1ICA8LS0tLS0tLS0tLS0tLS0tCisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICBYICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICB2ICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gc291cmNlIC0tPiBub2RlMSAtLT4g
bm9kZTIgLS0+IG5vZGUzIC0tPiBub2RlNCAtLT4gZGVzdGluYXRpb24KKyAgICBjb25uZWN0KG5v
ZGU0LCBub2RlNSwgZmFsc2UpOworICAgIGNvbm5lY3Qobm9kZTUsIG5vZGUyLCB0cnVlKTsKKwor
ICAgIC8vIHNvdXJjZSAtLT4gbm9kZTEgLS0+IG5vZGUyIC0tPiBub2RlMyAtLT4gbm9kZTQgLS0+
IGRlc3RpbmF0aW9uCisgICAgLy8gICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgfAor
ICAgIC8vICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyAgICAgICAg
ICAgIG5vZGU2IDwtLS0tLS0tLS0tLS0gZGVsYXkKKyAgICBjb25uZWN0KG5vZGUzLCBkZWxheSwg
ZmFsc2UpOworICAgIGNvbm5lY3QoZGVsYXksIG5vZGU2LCBmYWxzZSk7CisgICAgY29ubmVjdChu
b2RlNiwgbm9kZTEsIGZhbHNlKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0
KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158252</attachid>
            <date>2012-08-14 01:14:15 -0700</date>
            <delta_ts>2014-02-05 11:11:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93321-20120814161934.patch</filename>
            <type>text/plain</type>
            <size>10823</size>
            <attacher name="Xingnan Wang">xingnan.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlkMWNlNTAyYzYwNjcx
NWQ0ZTQ1MTAzOGM3MzE5NTFlNDYxZjExZS4uN2M0NjcyNTc0ZmUxOGJlODM5MTMxMDRjOTI5NTli
NDBiNWJlNTk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTEzICBYaW5n
bmFuIFdhbmcgIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAgIEV4Y2VwdGlvbiBz
aG91bGQgYmUgdGhyb3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNsZSB3aXRob3V0IERl
bGF5Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMzMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
b2xsb3cgdGhlIHNwZWMgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAv
d2ViYXVkaW8vc3BlY2lmaWNhdGlvbi5odG1sI21ldGhvZHNhbmRwYXJhbXMtQXVkaW9Ob2RlCisK
KyAgICAgICAgVGVzdDogd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpjaGVja0N5Y2xlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Ob2RlOjpjb25uZWN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oOgorICAgICAgICAoQXVkaW9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVP
dXRwdXQ6OmlucHV0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChBdWRpb05vZGVPdXRwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpudW1iZXJPZklucHV0cyk6CisKIDIwMTIt
MDgtMTIgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSByZW5kZXJTdXJmYWNlIGluIGluY29ycmVjdCBzcGFjZSBpZiBvd25pbmcgbGF5
ZXIgaGFzIGVtcHR5IGJ1dCBub24temVybyBib3VuZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCA2OWZkOTBiYjE3NjM2MWU3YWI1YzkxYzdl
NWQxYTc4M2Y4ZGNkZmRjLi5iNmJlZjhmYTE3MjVkMzg5YzUwNjE1NzhjNDM4MzhlYTdmZmYxZGMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBA
IC03MCw2ICs3MCwyNSBAQCBBdWRpb05vZGU6On5BdWRpb05vZGUoKQogI2VuZGlmCiB9CiAKK2Jv
b2wgQXVkaW9Ob2RlOjpjaGVja0ZvckRlbGF5RnJlZUN5Y2xlKEF1ZGlvTm9kZSogc3RhcnROb2Rl
LCBBdWRpb05vZGUqIGVuZE5vZGUpCit7CisgICAgLy8gTG9vayBmb3IgYSBwYXRoIGJldHdlZW4g
c3RhcnROb2RlIGFuZCBlbmROb2RlIHRoYXQgZG9lcyBub3QgY29udGFpbiBhIGRlbGF5Tm9kZS4K
KyAgICBpZiAoc3RhcnROb2RlID09IGVuZE5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKHN0YXJ0Tm9kZS0+bm9kZVR5cGUoKSA9PSBBdWRpb05vZGU6Ok5vZGVUeXBlRGVsYXkg
fHwgZW5kTm9kZS0+bm9kZVR5cGUoKSA9PSBBdWRpb05vZGU6Ok5vZGVUeXBlRGVzdGluYXRpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dGFydE5vZGUtPm51bWJlck9mT3V0cHV0cygpOyBpKyspIHsKKyAgICAgICAgQXVkaW9Ob2RlT3V0
cHV0KiBvdXRwdXQgPSBzdGFydE5vZGUtPm91dHB1dChpKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG91dHB1dC0+bnVtYmVyT2ZJbnB1dHMoKTsgaisrKQorICAgICAgICAgICAg
aWYgKGNoZWNrRm9yRGVsYXlGcmVlQ3ljbGUob3V0cHV0LT5pbnB1dChqKS0+bm9kZSgpLCBlbmRO
b2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjppbml0aWFsaXplKCkKIHsKICAgICBtX2lzSW5p
dGlhbGl6ZWQgPSB0cnVlOwpAQCAtMTQ1LDYgKzE2NCwxNSBAQCB2b2lkIEF1ZGlvTm9kZTo6Y29u
bmVjdChBdWRpb05vZGUqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWdu
ZWQgaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG5vZGVUeXBlKCkgIT0gTm9k
ZVR5cGVPc2NpbGxhdG9yCisgICAgICAgICYmIG5vZGVUeXBlKCkgIT0gTm9kZVR5cGVBdWRpb0J1
ZmZlclNvdXJjZQorICAgICAgICAmJiBub2RlVHlwZSgpICE9IE5vZGVUeXBlTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2UKKyAgICAgICAgJiYgbm9kZVR5cGUoKSAhPSBOb2RlVHlwZURlbGF5CisgICAg
ICAgICYmIGNoZWNrRm9yRGVsYXlGcmVlQ3ljbGUoZGVzdGluYXRpb24sIHRoaXMpKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBkZXN0aW5hdGlvbi0+aW5wdXQoaW5wdXRJbmRleCk7
CiAgICAgQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQob3V0cHV0SW5kZXgp
OwogICAgIGlucHV0LT5jb25uZWN0KG91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0ZWYzZTY1NjBiN2ZmZThkOWMwN2QwYzcyNGZkZTlj
NGIzY2RjMDg5Li4xMWVjOWUzNDY4OGExMmM2YjQyZWJmNTVlNzA1YzliNDA2M2VjZmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTE1Niw2ICsx
NTYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOwog
ICAgIHZvaWQgZGlzYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpOworCisgICAgc3RhdGljIGJvb2wg
Y2hlY2tGb3JEZWxheUZyZWVDeWNsZShBdWRpb05vZGUqIHN0YXJ0Tm9kZSwgQXVkaW9Ob2RlKiBl
bmROb2RlKTsKIHByb3RlY3RlZDoKICAgICAvLyBJbnB1dHMgYW5kIG91dHB1dHMgbXVzdCBiZSBj
cmVhdGVkIGJlZm9yZSB0aGUgQXVkaW9Ob2RlIGlzIGluaXRpYWxpemVkLgogICAgIHZvaWQgYWRk
SW5wdXQoUGFzc093blB0cjxBdWRpb05vZGVJbnB1dD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCmluZGV4IDE5ZWJhNjRiMjhk
MjFmYzMyODI3Nzc1ZTEzNGJhNTI2NDM4MTk3ZmMuLjgxMzY5OTg1OTAzYTUwNjcxZDFhYmM2OTkx
YmNmN2E2MDQ1ODgyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKQEAgLTI1Nyw2ICsyNTcsMTcgQEAgdm9pZCBBdWRpb05v
ZGVPdXRwdXQ6OmVuYWJsZSgpCiAgICAgfQogfQogCitBdWRpb05vZGVJbnB1dCogQXVkaW9Ob2Rl
T3V0cHV0OjppbnB1dCh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9pbnB1dHMuc2l6ZSgpKSkgeworICAgICAgICBJbnB1dHNJdGVyYXRv
ciBpID0gbV9pbnB1dHMuYmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIAorICAgICAg
ICAgICAgKytpOworICAgICAgICByZXR1cm4gKmk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRw
dXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgK
aW5kZXggMjBjMDhjODA5ODBkOWQwOTVhMjJmMDExNWFiZTQ5Mjg0ZmEzNzg1Yy4uODMxYTE5ODEw
ZjA1MWZhYjQyNmIxY2YzNjIzMTc0NGJiODg2M2ExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC04NCw2ICs4NCw5IEBAIHB1
YmxpYzoKICAgICAvLyB1cGRhdGVSZW5kZXJpbmdTdGF0ZSgpIGlzIGNhbGxlZCBpbiB0aGUgYXVk
aW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlciBxdWFudHVtIHRvIGhh
bmRsZSBhbnkgcmVjZW50IGNoYW5nZXMgdG8gdGhlIGdyYXBoIHN0YXRlLgogICAgIC8vIEl0IG11
c3QgYmUgY2FsbGVkIHdpdGggdGhlIGNvbnRleHQncyBncmFwaCBsb2NrLgogICAgIHZvaWQgdXBk
YXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKCkgY29u
c3QgeyByZXR1cm4gbV9pbnB1dHMuc2l6ZSgpOyB9CisgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0
KHVuc2lnbmVkKTsKICAgICAKIHByaXZhdGU6CiAgICAgQXVkaW9Ob2RlKiBtX25vZGU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMmQ4YTgxYjI5YTk2Y2VhNWMzNWVjODBiMDgyZTcwOTBlODUyY2YzYi4uODM0NTg3OGUwMDQ0
NTc5NmI0YmQ4OGM5MWUwNWEzZTU5NTBhNDU3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTA4LTEzICBYaW5nbmFuIFdhbmcgIDx4aW5nbmFuLndhbmdAaW50ZWwuY29tPgorCisgICAgICAg
IEV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNs
ZSB3aXRob3V0IERlbGF5Tm9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTMzMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3QtY3ljbGUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb25vZGUtY29ubmVjdC1jeWNsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgVGhpcyB0ZXN0IGlzIHRvIGNoZWNrIHRoZSBleGNlcHRpb24g
dGhyb3duIHdoZW4gY29ubmVjdCgpIGNyZWF0ZXMgYSBjeWNsZS4KKwogMjAxMi0wOC0xMyAgRWxs
aW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBFeHBhbmQgbGlz
dCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzIGZvciBSZW5kZXJRdW90ZSB0byBtYXRjaCBXSEFUV0cg
c3BlYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5lY3Qt
Y3ljbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9ub2RlLWNvbm5l
Y3QtY3ljbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMjg3NDNiMTQ0YzkzMzMwM2MwYjdm
ZjZkZDU5ZTU0ZDE0MTExZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by9hdWRpb25vZGUtY29ubmVjdC1jeWNsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
VGhpcyB0ZXN0cyB0aGF0IHdlIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhIGN5Y2xlIGlzIGNyZWF0
ZWQgd2l0aG91dCBhIERlbGF5Tm9kZSBpbiBpdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCitQQVNTIFN1Y2NlZWQgdG8gY29ubmVjdCBmcm9tIEF1ZGlvQnVmZmVyU291cmNlTm9kZSB0
byBBdWRpb0dhaW5Ob2RlIHdpdGhvdXQgYW55IGV4Y2VwdGlvbi4KK1BBU1MgU3VjY2VlZCB0byBj
b25uZWN0IGZyb20gQmlxdWFkRmlsdGVyTm9kZSB0byBDb252b2x2ZXJOb2RlIHdpdGhvdXQgYW55
IGV4Y2VwdGlvbi4KK1BBU1MgU3VjY2VlZCB0byBjb25uZWN0IGZyb20gQ29udm9sdmVyTm9kZSB0
byBBdWRpb0dhaW5Ob2RlIHdpdGhvdXQgYW55IGV4Y2VwdGlvbi4KK1BBU1MgU3VjY2VlZCB0byBj
b25uZWN0IGZyb20gQXVkaW9HYWluTm9kZSB0byBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB3aXRob3V0
IGFueSBleGNlcHRpb24uCitQQVNTIEZhaWxlZCB0byBjb25uZWN0IGZyb20gQXVkaW9HYWluTm9k
ZSB0byBCaXF1YWRGaWx0ZXJOb2RlIHdpdGggZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93biBmb3Ig
aWxsZWdhbCBjeWNsZS4KK1BBU1MgU3VjY2VlZCB0byBjb25uZWN0IGZyb20gQXVkaW9HYWluTm9k
ZSB0byBBdWRpb1Bhbm5lck5vZGUgd2l0aG91dCBhbnkgZXhjZXB0aW9uLgorUEFTUyBGYWlsZWQg
dG8gY29ubmVjdCBmcm9tIEF1ZGlvUGFubmVyTm9kZSB0byBCaXF1YWRGaWx0ZXJOb2RlIHdpdGgg
ZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93biBmb3IgaWxsZWdhbCBjeWNsZS4KK1BBU1MgU3VjY2Vl
ZCB0byBjb25uZWN0IGZyb20gQ29udm9sdmVyTm9kZSB0byBEZWxheU5vZGUgd2l0aG91dCBhbnkg
ZXhjZXB0aW9uLgorUEFTUyBTdWNjZWVkIHRvIGNvbm5lY3QgZnJvbSBEZWxheU5vZGUgdG8gRHlu
YW1pY3NDb21wcmVzc29yTm9kZSB3aXRob3V0IGFueSBleGNlcHRpb24uCitQQVNTIFN1Y2NlZWQg
dG8gY29ubmVjdCBmcm9tIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgdG8gQXVkaW9HYWluTm9kZSB3
aXRob3V0IGFueSBleGNlcHRpb24uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9u
b2RlLWNvbm5lY3QtY3ljbGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvbm9kZS1j
b25uZWN0LWN5Y2xlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzcwYTA3ZjBlNGI1ZTYzNWNlYjg5YTBmYzBl
YTEzNGMzMWI1Yjg3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1
ZGlvbm9kZS1jb25uZWN0LWN5Y2xlLmh0bWwKQEAgLTAsMCArMSw5NiBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keT4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHdlIHRocm93
IGFuIGV4Y2VwdGlvbiBpZiBhIGN5Y2xlIGlzIGNyZWF0ZWQgd2l0aG91dCBhIERlbGF5Tm9kZSBp
biBpdC4iKTsKKworZnVuY3Rpb24gbm9kZU5hbWUobm9kZSkKK3sKKyAgICB2YXIgcmVnZXggPSAv
ZnVuY3Rpb24gKC57MSx9KVwoLzsKKyAgICB2YXIgcmVzdWx0cyA9IChyZWdleCkuZXhlYyhub2Rl
LmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkpOworICAgIHJldHVybiAocmVzdWx0cyAmJiByZXN1bHRz
Lmxlbmd0aCA+IDEpID8gcmVzdWx0c1sxXSA6ICIiOworfQorCitmdW5jdGlvbiBjb25uZWN0KGZy
b20sIHRvLCBleGNlcHRpb24pIHsKKyAgICB0cnkgeworICAgICAgICBmcm9tLmNvbm5lY3QodG8p
OworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3VjY2Vl
ZCB0byBjb25uZWN0IGZyb20gIiArIG5vZGVOYW1lKGZyb20pICsgIiB0byAiICsgbm9kZU5hbWUo
dG8pICsgIiwgYnV0IGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIGN5Y2xl
LiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZWVkIHRvIGNv
bm5lY3QgZnJvbSAiICsgbm9kZU5hbWUoZnJvbSkgKyAiIHRvICIgKyBub2RlTmFtZSh0bykgKyAi
IHdpdGhvdXQgYW55IGV4Y2VwdGlvbi4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkZhaWxlZCB0byBjb25uZWN0IGZy
b20gIiArIG5vZGVOYW1lKGZyb20pICsgIiB0byAiICsgbm9kZU5hbWUodG8pICsgIiB3aXRoIGV4
cGVjdGVkIGV4Y2VwdGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgY3ljbGUuIik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZhaWxlZCB0byBjb25uZWN0IGZyb20gIiArIG5v
ZGVOYW1lKGZyb20pICsgIiB0byAiICsgbm9kZU5hbWUodG8pICsgIiB3aXRoIHVuZXhwZWN0ZWQg
ZXhjZXB0aW9uIHRocm93bi4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgLy8gQ3JlYXRlIG9mZmxpbmUg
YXVkaW8gY29udGV4dC4KKyAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQo
MSwgNDQxLCA0NDEwMCk7CisgICAgdmFyIGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKDEs
IDQ0MSwgNDQxMDApOworICAgIAorICAgIHZhciBzb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworICAgIHNvdXJjZS5idWZmZXIgPSBidWZmZXI7CisKKyAgICB2YXIgbm9kZTEg
PSBjb250ZXh0LmNyZWF0ZUdhaW5Ob2RlKCk7CisgICAgdmFyIG5vZGUyID0gY29udGV4dC5jcmVh
dGVCaXF1YWRGaWx0ZXIoKTsKKyAgICB2YXIgbm9kZTMgPSBjb250ZXh0LmNyZWF0ZUNvbnZvbHZl
cigpOworICAgIHZhciBub2RlNCA9IGNvbnRleHQuY3JlYXRlR2Fpbk5vZGUoKTsKKyAgICB2YXIg
bm9kZTUgPSBjb250ZXh0LmNyZWF0ZVBhbm5lcigpOworICAgIHZhciBub2RlNiA9IGNvbnRleHQu
Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisKKyAgICB2YXIgZGVsYXkgPSBjb250ZXh0LmNy
ZWF0ZURlbGF5Tm9kZSgpOworCisgICAgLy8gc291cmNlIC0tPiBub2RlMSAtLT4gbm9kZTIgLS0+
IG5vZGUzIC0tPiBub2RlNCAtLT4gZGVzdGluYXRpb24KKyAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgIF4gICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgWCAtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgY29ubmVjdChzb3VyY2UsIG5vZGUxLCBmYWxz
ZSk7CisgICAgY29ubmVjdChub2RlMiwgbm9kZTMsIGZhbHNlKTsKKyAgICBjb25uZWN0KG5vZGUz
LCBub2RlNCwgZmFsc2UpOworICAgIGNvbm5lY3Qobm9kZTQsIGNvbnRleHQuZGVzdGluYXRpb24s
IGZhbHNlKTsKKyAgICBjb25uZWN0KG5vZGU0LCBub2RlMiwgdHJ1ZSk7CisKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZTUgIDwtLS0tLS0tLS0tLS0tLS0KKyAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgIFggICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyBzb3VyY2UgLS0+IG5v
ZGUxIC0tPiBub2RlMiAtLT4gbm9kZTMgLS0+IG5vZGU0IC0tPiBkZXN0aW5hdGlvbgorICAgIGNv
bm5lY3Qobm9kZTQsIG5vZGU1LCBmYWxzZSk7CisgICAgY29ubmVjdChub2RlNSwgbm9kZTIsIHRy
dWUpOworCisgICAgLy8gc291cmNlIC0tPiBub2RlMSAtLT4gbm9kZTIgLS0+IG5vZGUzIC0tPiBu
b2RlNCAtLT4gZGVzdGluYXRpb24KKyAgICAvLyAgICAgICAgICAgICAgXiAgICAgICAgICAgICAg
ICAgICB8CisgICAgLy8gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgdgorICAgIC8v
ICAgICAgICAgICAgbm9kZTYgPC0tLS0tLS0tLS0tLSBkZWxheQorICAgIGNvbm5lY3Qobm9kZTMs
IGRlbGF5LCBmYWxzZSk7CisgICAgY29ubmVjdChkZWxheSwgbm9kZTYsIGZhbHNlKTsKKyAgICBj
b25uZWN0KG5vZGU2LCBub2RlMSwgZmFsc2UpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>