<?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>84609</bug_id>
          
          <creation_ts>2012-04-23 10:16:14 -0700</creation_ts>
          <short_desc>framebuffer binding should not be changed after canvas resize or compositing</short_desc>
          <delta_ts>2012-04-23 16:22:29 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84623</dependson>
    
    <dependson>84629</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>607785</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 10:16:14 -0700</bug_when>
    <thetext>At the moment WebGL conformance tests framebuffer-bindings-unaffected-on-resize.html are failing, which indicates that the binding is affected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607814</commentid>
    <comment_count>1</comment_count>
      <attachid>138379</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 10:34:25 -0700</bug_when>
    <thetext>Created attachment 138379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607815</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 10:35:22 -0700</bug_when>
    <thetext>Test is synced from khronos.

Please have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607833</commentid>
    <comment_count>3</comment_count>
      <attachid>138379</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-23 10:51:34 -0700</bug_when>
    <thetext>Comment on attachment 138379
Patch

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

&gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1144
&gt; +var cancelRequestAnimFrame = (function() {

the standard name of this function is &quot;cancelAnimationFrame&quot;

&gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1145
&gt; +  return window.cancelCancelRequestAnimationFrame ||

window.cancelCancel...() ? what is this?

&gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1150
&gt; +         window.clearTimeout;

nothing here checks for the real name of the function - window.cancelAnimationFrame() - so this won&apos;t work in a browser with only the unprefixed version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607874</commentid>
    <comment_count>4</comment_count>
      <attachid>138379</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-04-23 11:32:56 -0700</bug_when>
    <thetext>Comment on attachment 138379
Patch

The code looks fine to me; please make the test changes James points out upstream. (See https://developer.mozilla.org/en/DOM/window.cancelAnimationFrame .) Feel free to upload another version of the patch fixing those issues. r=me with those fixes made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607901</commentid>
    <comment_count>5</comment_count>
    <who name="Jeff Timanus">twiz</who>
    <bug_when>2012-04-23 11:58:37 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=138379) [details]
&gt; Patch

Thanks for looking into this issue, Mo.  The changes in WebGLRenderingContext, and DrawingBuffer look good to me.  Caching the bound framebuffer object in the drawing buffer seems like the simplest fix for this problem.

Jeff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607903</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 12:01:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 138379 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=138379&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1144
&gt; &gt; +var cancelRequestAnimFrame = (function() {
&gt; 
&gt; the standard name of this function is &quot;cancelAnimationFrame&quot;
&gt; 
&gt; &gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1145
&gt; &gt; +  return window.cancelCancelRequestAnimationFrame ||
&gt; 
&gt; window.cancelCancel...() ? what is this?
&gt; 
&gt; &gt; LayoutTests/fast/canvas/webgl/resources/webgl-test-utils.js:1150
&gt; &gt; +         window.clearTimeout;
&gt; 
&gt; nothing here checks for the real name of the function - window.cancelAnimationFrame() - so this won&apos;t work in a browser with only the unprefixed version.

Gregg just fixed these issues on the khronos side.  I will re-sync before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607945</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-23 13:04:10 -0700</bug_when>
    <thetext>Apparently this patch got landed in http://trac.webkit.org/changeset/114929.  However, it&apos;s broken a ton of canvas/webgl tests, including:


fast/canvas/webgl/texture-bindings-uneffected-on-resize.html
fast/canvas/webgl/webgl-composite-modes-repaint.html
fast/canvas/webgl/compressed-tex-image.html
fast/canvas/webgl/webgl-viewport-parameters-preserved.html
fast/canvas/webgl/webgl-composite-modes.html
fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607951</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-23 13:07:42 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Apparently this patch got landed in http://trac.webkit.org/changeset/114929.  However, it&apos;s broken a ton of canvas/webgl tests, including:
&gt; 
&gt; 
&gt; fast/canvas/webgl/texture-bindings-uneffected-on-resize.html
&gt; fast/canvas/webgl/webgl-composite-modes-repaint.html
&gt; fast/canvas/webgl/compressed-tex-image.html
&gt; fast/canvas/webgl/webgl-viewport-parameters-preserved.html
&gt; fast/canvas/webgl/webgl-composite-modes.html
&gt; fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize.html

Here&apos;s the failure report for Lion Release (Tests) with 35 webgl test errors:

http://build.webkit.org/results/Lion%20Release%20(Tests)/r114929%20(7859)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607958</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-23 13:13:02 -0700</bug_when>
    <thetext>Rolled out in r114935.

Committed r114935: &lt;http://trac.webkit.org/changeset/114935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608110</commentid>
    <comment_count>10</comment_count>
      <attachid>138442</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 15:43:51 -0700</bug_when>
    <thetext>Created attachment 138442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608124</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-23 15:49:19 -0700</bug_when>
    <thetext>What is different about this patch?  Have you run the testcases which failed on the previous patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608132</commentid>
    <comment_count>12</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 15:55:12 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; What is different about this patch?  Have you run the testcases which failed on the previous patch?

webkit-test-util.js is different from the previous version, and the issue caused the failures are fixed (tested locally)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608165</commentid>
    <comment_count>13</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-04-23 16:22:29 -0700</bug_when>
    <thetext>Committed r114961: &lt;http://trac.webkit.org/changeset/114961&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138379</attachid>
            <date>2012-04-23 10:34:25 -0700</date>
            <delta_ts>2012-04-23 15:43:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84609-20120423103424.patch</filename>
            <type>text/plain</type>
            <size>17100</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDkxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTIzICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgZnJhbWVidWZmZXIgYmluZGluZyBzaG91
bGQgbm90IGJlIGNoYW5nZWQgYWZ0ZXIgY2FudmFzIHJlc2l6ZSBvciBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS5odG1s
CisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOiBzZXQg
ZnJhbWVidWZmZXIgYmluZGluZyB0byBEcmF3aW5nQnVmZmVyLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUZyYW1l
YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6bG9zZUNv
bnRleHRJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVm
ZmVyQ2Fpcm8uY3BwOiBpbml0aWFsaXplIG1fZnJhbWVidWZmZXJCaW5kaW5nLgorICAgICAgICAo
V2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOiBSZWNv
dmVyIGZyYW1lYnVmZmVyIGJpbmRpbmcgYWZ0ZXIgdXBkYXRlKCkuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOiBBZGQgYSBmdW5jdGlvbiB0byByZXN0b3JlIGZyYW1l
YnVmZmVyIGJpbmRpbmcuCisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpyZXN0b3Jl
RnJhbWVidWZmZXJCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhd2luZ0J1ZmZlcjo6c2V0VGV4dHVyZTJEQmluZGluZyk6CisgICAgICAgIChEcmF3aW5n
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OnNldEZyYW1lYnVmZmVy
QmluZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVm
ZmVyTWFjLm1tOiBpbml0aWFsaXplIG1fZnJhbWVidWZmZXJCaW5kaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHA6IGluaXRpYWxpemUgbV9mcmFtZWJ1
ZmZlckJpbmRpbmcuCisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVm
ZmVyKToKKwogMjAxMi0wNC0xNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW1BlcmZvcm1hbmNlXVtWOF0gU2tpcCBJc29sYXRlIGxvb2stdXAgdG8gZmlu
ZCBTdHJpbmdDYWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMTQ3OTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MjAsNiArOTIwLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRG
cmFtZWJ1ZgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5n
ID0gYnVmZmVyOworICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fZHJhd2luZ0J1
ZmZlci0+c2V0RnJhbWVidWZmZXJCaW5kaW5nKG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmlu
ZGluZy5nZXQoKSkpOwogICAgIGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgbV9kcmF3aW5n
QnVmZmVyKSB7CiAgICAgICAgIC8vIEluc3RlYWQgb2YgYmluZGluZyBmYiAwLCBiaW5kIHRoZSBk
cmF3aW5nIGJ1ZmZlci4KICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5kKCk7CkBAIC0xNTMz
LDEwICsxNTM1LDExIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVGcmFtZWIK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChmcmFtZWJ1ZmZlciA9PSBtX2ZyYW1lYnVmZmVyQmlu
ZGluZykgewogICAgICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IDA7Ci0gICAgICAgIC8vIEhh
dmUgdG8gY2FsbCBiaW5kRnJhbWVidWZmZXIgaGVyZSB0byBiaW5kIGJhY2sgdG8gaW50ZXJuYWwg
ZmJvLgotICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQorICAgICAgICBpZiAobV9kcmF3aW5n
QnVmZmVyKSB7CisgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldEZyYW1lYnVmZmVyQmlu
ZGluZygwKTsKKyAgICAgICAgICAgIC8vIEhhdmUgdG8gY2FsbCBiaW5kRnJhbWVidWZmZXIgaGVy
ZSB0byBiaW5kIGJhY2sgdG8gaW50ZXJuYWwgZmJvLgogICAgICAgICAgICAgbV9kcmF3aW5nQnVm
ZmVyLT5iaW5kKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IDApOwogICAgIH0KIH0KQEAgLTQzMDcsOCArNDMxMCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpsb3NlQ29udGV4dEkKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CiAK
ICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAgIC8vIE1ha2UgYWJzb2x1dGVseSBz
dXJlIHdlIGRvIG5vdCByZWZlciB0byBhbiBhbHJlYWR5LWRlbGV0ZWQgdGV4dHVyZS4KKyAgICAg
ICAgLy8gTWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UgZG8gbm90IHJlZmVyIHRvIGFuIGFscmVhZHkt
ZGVsZXRlZCB0ZXh0dXJlIG9yIGZyYW1lYnVmZmVyLgogICAgICAgICBtX2RyYXdpbmdCdWZmZXIt
PnNldFRleHR1cmUyREJpbmRpbmcoMCk7CisgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0RnJh
bWVidWZmZXJCaW5kaW5nKDApOwogICAgIH0KIAogICAgIC8vIFRoZXJlIGlzIG5vIGRpcmVjdCB3
YXkgdG8gY2xlYXIgZXJyb3JzIGZyb20gYSBHTCBpbXBsZW1lbnRhdGlvbiBhbmQKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
RHJhd2luZ0J1ZmZlckNhaXJvLmNwcAkocmV2aXNpb24gMTE0Nzk2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdy
YXBoaWNzQ29uCiAgICAgLCBtX2FscGhhKGFscGhhKQogICAgICwgbV9zY2lzc29yRW5hYmxlZChm
YWxzZSkKICAgICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQorICAgICwgbV9mcmFtZWJ1ZmZlckJp
bmRpbmcoMCkKICAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkUwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMTQ3
OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5n
QnVmZmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIERyYXdp
bmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb24KICAgICAsIG1fYWxwaGEoYWxwaGEp
CiAgICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0dXJlMkRCaW5kaW5n
KDApCisgICAgLCBtX2ZyYW1lYnVmZmVyQmluZGluZygwKQogICAgICwgbV9hY3RpdmVUZXh0dXJl
VW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKICAgICAsIG1fc2l6ZSgtMSwgLTEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDExNDc5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDYgKzg2LDggQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cgogICAg
IG1fdGV4dHVyZUlkID0gbV9kcmF3aW5nQnVmZmVyLT5mcm9udENvbG9yQnVmZmVyKCk7CiAgICAg
aWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkp
CiAgICAgICAgIHVwZGF0ZXIuYXBwZW5kQ29weShtX2RyYXdpbmdCdWZmZXItPmNvbG9yQnVmZmVy
KCksIG1fdGV4dHVyZUlkLCBib3VuZHMoKSk7CisKKyAgICBtX2RyYXdpbmdCdWZmZXItPnJlc3Rv
cmVGcmFtZWJ1ZmZlckJpbmRpbmcoKTsKIH0KIAogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcAkocmV2
aXNpb24gMTE0Nzk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDE0IEBAIHZvaWQg
RHJhd2luZ0J1ZmZlcjo6Y29tbWl0KGxvbmcgeCwgbG9uZyAKICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKIH0KIAor
dm9pZCBEcmF3aW5nQnVmZmVyOjpyZXN0b3JlRnJhbWVidWZmZXJCaW5kaW5nKCkKK3sKKyAgICBp
ZiAoIW1fY29udGV4dCB8fCAhbV9mcmFtZWJ1ZmZlckJpbmRpbmcpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcpOworfQorCiBib29sIERyYXdpbmdCdWZmZXI6
Om11bHRpc2FtcGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZXh0ICYmIG1fY29udGV4
dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMgJiYgbV9tdWx0aXNhbXBsZUV4dGVu
c2lvblN1cHBvcnRlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9EcmF3aW5nQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkocmV2aXNpb24gMTE0Nzk2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksNyArOTksMTQgQEAgcHVibGljOgogCiAgICAgLy8gVGhlIERyYXdpbmdCdWZm
ZXIgbmVlZHMgdG8gdHJhY2sgdGhlIHRleHR1cmUgYm91bmQgdG8gdGV4dHVyZSB1bml0IDAuCiAg
ICAgLy8gVGhlIGJvdW5kIHRleHR1cmUgaXMgdHJhY2tlZCB0byBhdm9pZCBjb3N0bHkgcXVlcmll
cyBkdXJpbmcgcmVuZGVyaW5nLgotICAgIHZvaWQgc2V0VGV4dHVyZTJEQmluZGluZyhHQzNEaW50
IHRleHR1cmUpIHsgbV90ZXh0dXJlMkRCaW5kaW5nID0gdGV4dHVyZTsgfQorICAgIHZvaWQgc2V0
VGV4dHVyZTJEQmluZGluZyhQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpIHsgbV90ZXh0dXJlMkRC
aW5kaW5nID0gdGV4dHVyZTsgfQorCisgICAgLy8gVGhlIERyYXdpbmdCdWZmZXIgbmVlZHMgdG8g
dHJhY2sgdGhlIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciBzbyBpdAorICAgIC8vIHJlc3Rv
cmUgdGhlIGJpbmRpbmcgd2hlbiBuZWVkZWQuCisgICAgdm9pZCBzZXRGcmFtZWJ1ZmZlckJpbmRp
bmcoUGxhdGZvcm0zRE9iamVjdCBmYm8pIHsgbV9mcmFtZWJ1ZmZlckJpbmRpbmcgPSBmYm87IH0K
KworICAgIC8vIEJpbmQgdG8gdGhlIG1fZnJhbWVidWZmZXJCaW5kaW5nIGlmIGl0J3Mgbm90IDAu
CisgICAgdm9pZCByZXN0b3JlRnJhbWVidWZmZXJCaW5kaW5nKCk7CiAKICAgICAvLyBUcmFjayB0
aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0dXJlIHVuaXQuIFRleHR1cmUgdW5pdCAwIGlzIHVzZWQg
YXMgaG9zdCBmb3IgYSBzY3JhdGNoCiAgICAgLy8gdGV4dHVyZS4KQEAgLTEzNSw2ICsxNDIsNyBA
QCBwcml2YXRlOgogICAgIEFscGhhUmVxdWlyZW1lbnQgbV9hbHBoYTsKICAgICBib29sIG1fc2Np
c3NvckVuYWJsZWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmUyREJpbmRpbmc7Cisg
ICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZyYW1lYnVmZmVyQmluZGluZzsKICAgICBHQzNEZW51bSBt
X2FjdGl2ZVRleHR1cmVVbml0OwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0Ry
YXdpbmdCdWZmZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCShyZXZpc2lvbiAxMTQ3OTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgRHJhd2luZ0J1ZmZlcjo6RHJh
d2luZ0J1ZmZlcihHcmFwaGljc0NvbgogICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAsIG1fc2Np
c3NvckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKKyAgICAsIG1f
ZnJhbWVidWZmZXJCaW5kaW5nKDApCiAgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9z
aXplKC0xLCAtMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9x
dC9EcmF3aW5nQnVmZmVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCShyZXZpc2lvbiAxMTQ3OTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZl
clF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBEcmF3aW5nQnVmZmVyOjpE
cmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29uCiAgICAgLCBtX2FscGhhKGFscGhhKQogICAgICwgbV9z
Y2lzc29yRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQorICAgICwg
bV9mcmFtZWJ1ZmZlckJpbmRpbmcoMCkKICAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X3NpemUoLTEsIC0xKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0OTEzKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDQtMjMgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KKworICAgICAgICBmcmFtZWJ1ZmZlciBiaW5kaW5n
IHNob3VsZCBub3QgYmUgY2hhbmdlZCBhZnRlciBjYW52YXMgcmVzaXplIG9yIGNvbXBvc2l0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDYwOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZl
ci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qczogU3luYyB3aXRo
IGtocm9ub3Mgc2lkZSAocGFydGlhbCkKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzLik6CisgICAg
ICAgIChXZWJHTFRlc3RVdGlscyk6CisKIDIwMTItMDQtMjMgIFBpZXJyZSBSb3NzaSAgPHBpZXJy
ZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLWJpbmRpbmdz
LXVuYWZmZWN0ZWQtb24tcmVzaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9u
LXJlc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK1ZlcmlmaWVzIHRoYXQgR0wg
ZnJhbWVidWZmZXIgYmluZGluZ3MgZG8gbm90IGNoYW5nZSB3aGVuIGNhbnZhcyBpcyByZXNpemVk
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBmYm9TaXplIDwgY2FudmFzLndp
ZHRoIGlzIHRydWUKK1BBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
UikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUKK3Rlc3QgYmVmb3JlIHJlc2l6aW5nIGNhbnZh
cworUEFTUyBzaG91bGQgYmUgYmx1ZQorUEFTUyBhcmVhIG91dHNpZGUgZmJvIHNob3VsZCBiZSB0
cmFuc3BhcmVudCBibGFjaworUEFTUyBzaG91bGQgYmUgZ3JlZW4KK1BBU1MgYXJlYSBvdXRzaWRl
IGZibyBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2sKK3Rlc3QgYWZ0ZXIgcmVzaXppbmcgY2Fu
dmFzCitQQVNTIHNob3VsZCBiZSBibHVlCitQQVNTIGFyZWEgb3V0c2lkZSBmYm8gc2hvdWxkIGJl
IHRyYW5zcGFyZW50IGJsYWNrCitQQVNTIHNob3VsZCBiZSBncmVlbgorUEFTUyBhcmVhIG91dHNp
ZGUgZmJvIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjawordGVzdCBhZnRlciByZXNpemluZyBj
YW52YXMgYW5kIHdhaXRpbmcgZm9yIGNvbXBvc2l0aW5nCitQQVNTIHNob3VsZCBiZSBibHVlCitQ
QVNTIGFyZWEgb3V0c2lkZSBmYm8gc2hvdWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrCitQQVNTIHNo
b3VsZCBiZSBncmVlbgorUEFTUyBhcmVhIG91dHNpZGUgZmJvIHNob3VsZCBiZSB0cmFuc3BhcmVu
dCBibGFjaworUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hv
dWxkIGJlIG5vIGVycm9ycy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3Rl
ZC1vbi1yZXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmlu
ZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MyBAQAorCis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8dGl0bGU+VmVyaWZpZXMgdGhhdCBHTCBmcmFtZWJ1ZmZlciBiaW5kaW5ncyBkbyBu
b3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQ8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxjYW52YXMgaWQ9ImV4YW1wbGUiIHdpZHRoPSI0cHgiIGhlaWdodD0iNHB4Ij48L2Nh
bnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IEdMIGZyYW1lYnVmZmVy
IGJpbmRpbmdzIGRvIG5vdCBjaGFuZ2Ugd2hlbiBjYW52YXMgaXMgcmVzaXplZCIpOworCitpZiAo
d2luZG93LmluaXROb25LaHJvbm9zRnJhbWV3b3JrKSB7CisgIHdpbmRvdy5pbml0Tm9uS2hyb25v
c0ZyYW1ld29yayh0cnVlKTsKK30KKwordmFyIGVycjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwordmFy
IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOwordmFyIGdyZWVuID0gWzAsIDI1NSwg
MCwgMjU1XTsKK3ZhciBibHVlID0gWzAsIDAsIDI1NSwgMjU1XTsKK3ZhciBmYm9TaXplID0gMjsK
K3Nob3VsZEJlVHJ1ZSgiZmJvU2l6ZSA8IGNhbnZhcy53aWR0aCIpOwordmFyIGZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZi
byk7Cit2YXIgZmJvVGV4ID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYWN0aXZlVGV4dHVyZShn
bC5URVhUVVJFMSk7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBmYm9UZXgpOworZ2wu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5URVhUVVJFXzJELCBmYm9UZXgsIDApOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJE
LCAwLCBnbC5SR0JBLCBmYm9TaXplLCBmYm9TaXplLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9C
WVRFLCBudWxsKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9N
SU5fRklMVEVSLCBnbC5MSU5FQVIpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX01BR19GSUxURVIsIGdsLkxJTkVBUik7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBh
cmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VE
R0UpOworc2hvdWxkQmUoImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IiwgImdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFIik7CisKK2Z1bmN0aW9uIGNoZWNrRkJPKGNvbG9y
LCBtc2cpIHsKKyAgd3R1LmNoZWNrQ2FudmFzUmVjdChnbCwgMCwgMCwgZmJvU2l6ZSwgZmJvU2l6
ZSwgY29sb3IsIG1zZyk7CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIGZib1NpemUsIGZib1Np
emUsIGZib1NpemUsIGZib1NpemUsIFswLCAwLCAwLCAwXSwgImFyZWEgb3V0c2lkZSBmYm8gc2hv
dWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrIik7Cit9CisKKy8vIFRoZSBGQk8gaXMgMngyIGFuZCBp
dCdzIGJvdW5kIHNvIGNsZWFyaW5nIHNob3VsZCBjbGVhciBhIDJ4MiBhcmVhCisvLyBhbmQgY2Fs
bGluZyByZWFkIHBpeGVscyBzaG91bGQgcmVhZCB0aGUgY2xlYXIgY29sb3IgaW4gdGhhdCAyeDIg
YXJlYQorLy8gYW5kIDAsMCwwLDAgb3V0c2lkZSB0aGF0IGFyZWEuCisvLworLy8gSWYgdGhlIEZC
TyBpcyBubyBsb25nZXIgYm91bmQgYmVjYXVzZSBvZiBhIFdlYkdMIGltcGxlbWVudGF0aW9uIGVy
cm9yCisvLyB0aGVuIGxpa2VseSB0aGUgY2xlYXIgd2lsbCBjbGVhciB0aGUgYmFja2J1ZmZlciBh
bmQgcmVhZGluZyBvdXRzaWRlCisvLyB0aGUgMngyIGFyZWEgd2lsbCBub3QgYmUgMCwwLDAsMAor
CitmdW5jdGlvbiB0ZXN0KCkgeworICBnbC5jbGVhckNvbG9yKDAsIDAsIDEsIDEpOworICBnbC5j
bGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsKKyAgY2hlY2tGQk8oYmx1ZSwgInNob3VsZCBiZSBi
bHVlIik7CisgIGdsLmNsZWFyQ29sb3IoMCwgMSwgMCwgMSk7CisgIGdsLmNsZWFyKGdsLkNPTE9S
X0JVRkZFUl9CSVQpOworICBjaGVja0ZCTyhncmVlbiwgInNob3VsZCBiZSBncmVlbiIpOworfQor
CitkZWJ1ZygidGVzdCBiZWZvcmUgcmVzaXppbmcgY2FudmFzIik7Cit0ZXN0KCk7CitkZWJ1Zygi
dGVzdCBhZnRlciByZXNpemluZyBjYW52YXMiKTsKK2NhbnZhcy53aWR0aCA9IDg7Cit0ZXN0KCk7
CitkZWJ1ZygidGVzdCBhZnRlciByZXNpemluZyBjYW52YXMgYW5kIHdhaXRpbmcgZm9yIGNvbXBv
c2l0aW5nIik7CitjYW52YXMud2lkdGggPSAxNjsKK3d0dS53YWl0RnJhbWVzKDUsIGZ1bmN0aW9u
KCkgeworICB0ZXN0KCk7CisgIGZpbmlzaFRlc3QoKTsKKyAgZ2xFcnJvclNob3VsZEJlKGdsLCBn
bC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMuIik7Cit9KTsKKworc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5k
aW5ncy11bmFmZmVjdGVkLW9uLXJlc2l6ZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzCShyZXZpc2lvbiAxMTQ3
OTYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVz
dC11dGlscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTEwNCw3ICsxMTA0LDY2IEBAIHZhciBnZXRV
cmxBcmd1bWVudHMgPSBmdW5jdGlvbigpIHsKICAgcmV0dXJuIGFyZ3M7CiB9OwogCisvKioKKyAq
IFByb3ZpZGVzIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbiBhIGNyb3NzIGJyb3dzZXIgd2F5Lgor
ICovCit2YXIgcmVxdWVzdEFuaW1GcmFtZUltcGxfOworCit2YXIgcmVxdWVzdEFuaW1GcmFtZSA9
IGZ1bmN0aW9uKGNhbGxiYWNrLCBlbGVtZW50KSB7CisgIGlmICghcmVxdWVzdEFuaW1GcmFtZUlt
cGxfKSB7CisgICAgcmVxdWVzdEFuaW1GcmFtZUltcGxfID0gZnVuY3Rpb24oKSB7CisgICAgICB2
YXIgZnVuY3Rpb25OYW1lcyA9IFsKKyAgICAgICAgInJlcXVlc3RBbmltYXRpb25GcmFtZSIsCisg
ICAgICAgICJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLAorICAgICAgICAibW96UmVxdWVz
dEFuaW1hdGlvbkZyYW1lIiwKKyAgICAgICAgIm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLAorICAg
ICAgICAibXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiCisgICAgICBdOworICAgICAgZm9yICh2YXIg
amogPSAwOyBqaiA8IGZ1bmN0aW9uTmFtZXMubGVuZ3RoOyArK2pqKSB7CisgICAgICAgIHZhciBm
dW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVzW2pqXTsKKyAgICAgICAgaWYgKHdpbmRvd1tmdW5j
dGlvbk5hbWVdKSB7CisgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkgeworICAgICAgICAgICAgICBy
ZXR1cm4gd2luZG93W25hbWVdLmNhbGwod2luZG93LCBjYWxsYmFjaywgZWxlbWVudCk7CisgICAg
ICAgICAgICB9OworICAgICAgICAgIH0oZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgfQorICAgICAg
fQorICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNhbGxiYWNrLCBlbGVtZW50KSB7CisgICAgICAgICAg
IHJldHVybiB3aW5kb3cuc2V0VGltZW91dChjYWxsYmFjaywgMTAwMCAvIDcwKTsKKyAgICAgICAg
fTsKKyAgICB9KCk7CisgIH0KKworICByZXR1cm4gcmVxdWVzdEFuaW1GcmFtZUltcGxfKGNhbGxi
YWNrLCBlbGVtZW50KTsKK307CisKKy8qKgorICogUHJvdmlkZXMgY2FuY2VsUmVxdWVzdEFuaW1h
dGlvbkZyYW1lIGluIGEgY3Jvc3MgYnJvd3NlciB3YXkuCisgKi8KK3ZhciBjYW5jZWxSZXF1ZXN0
QW5pbUZyYW1lID0gKGZ1bmN0aW9uKCkgeworICByZXR1cm4gd2luZG93LmNhbmNlbENhbmNlbFJl
cXVlc3RBbmltYXRpb25GcmFtZSB8fAorICAgICAgICAgd2luZG93LndlYmtpdENhbmNlbFJlcXVl
c3RBbmltYXRpb25GcmFtZSB8fAorICAgICAgICAgd2luZG93Lm1vekNhbmNlbFJlcXVlc3RBbmlt
YXRpb25GcmFtZSB8fAorICAgICAgICAgd2luZG93Lm9DYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgfHwKKyAgICAgICAgIHdpbmRvdy5tc0NhbmNlbFJlcXVlc3RBbmltYXRpb25GcmFtZSB8fAor
ICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dDsKK30pKCk7CisKK3ZhciB3YWl0RnJhbWVzID0g
ZnVuY3Rpb24oZnJhbWVzLCBjYWxsYmFjaykgeworICB2YXIgY291bnREb3duID0gZnVuY3Rpb24o
KSB7CisgICAgaWYgKGZyYW1lcyA9PSAwKSB7CisgICAgICBjYWxsYmFjaygpOworICAgIH0gZWxz
ZSB7CisgICAgICAtLWZyYW1lczsKKyAgICAgIHJlcXVlc3RBbmltRnJhbWUoY291bnREb3duKTsK
KyAgICB9CisgIH07CisgIGNvdW50RG93bigpOworfTsKKwogcmV0dXJuIHsKKyAgY2FuY2VsUmVx
dWVzdEFuaW1GcmFtZTogY2FuY2VsUmVxdWVzdEFuaW1GcmFtZSwKICAgY3JlYXRlM0RDb250ZXh0
OiBjcmVhdGUzRENvbnRleHQsCiAgIGNyZWF0ZTNEQ29udGV4dFdpdGhXcmFwcGVyVGhhdFRocm93
c09uR0xFcnJvcjoKICAgICBjcmVhdGUzRENvbnRleHRXaXRoV3JhcHBlclRoYXRUaHJvd3NPbkdM
RXJyb3IsCkBAIC0xMTQ3LDYgKzEyMDYsOCBAQCByZXR1cm4gewogICBzaG91bGRHZW5lcmF0ZUdM
RXJyb3I6IHNob3VsZEdlbmVyYXRlR0xFcnJvciwKICAgcmVhZEZpbGU6IHJlYWRGaWxlLAogICBy
ZWFkRmlsZUxpc3Q6IHJlYWRGaWxlTGlzdCwKKyAgcmVxdWVzdEFuaW1GcmFtZTogcmVxdWVzdEFu
aW1GcmFtZSwKKyAgd2FpdEZyYW1lczogd2FpdEZyYW1lcywKIAogICBub25lOiBmYWxzZQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138442</attachid>
            <date>2012-04-23 15:43:51 -0700</date>
            <delta_ts>2012-04-23 15:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84609-20120423154350.patch</filename>
            <type>text/plain</type>
            <size>17023</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDk1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA0LTIzICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgZnJhbWVidWZmZXIgYmluZGluZyBzaG91
bGQgbm90IGJlIGNoYW5nZWQgYWZ0ZXIgY2FudmFzIHJlc2l6ZSBvciBjb21wb3NpdGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ2MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCisKKyAgICAgICAgVGVzdDogZmFzdC9j
YW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUuaHRt
bAorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDogc2V0
IGZyYW1lYnVmZmVyIGJpbmRpbmcgdG8gRHJhd2luZ0J1ZmZlci4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omxvc2VD
b250ZXh0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1
ZmZlckNhaXJvLmNwcDogaW5pdGlhbGl6ZSBtX2ZyYW1lYnVmZmVyQmluZGluZy4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDogUmVj
b3ZlciBmcmFtZWJ1ZmZlciBiaW5kaW5nIGFmdGVyIHVwZGF0ZSgpLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcDogQWRkIGEgZnVuY3Rpb24gdG8gcmVzdG9yZSBmcmFt
ZWJ1ZmZlciBiaW5kaW5nLgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6cmVzdG9y
ZUZyYW1lYnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXI6OnNldFRleHR1cmUyREJpbmRpbmcpOgorICAgICAgICAoRHJhd2lu
Z0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpzZXRGcmFtZWJ1ZmZl
ckJpbmRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1
ZmZlck1hYy5tbTogaW5pdGlhbGl6ZSBtX2ZyYW1lYnVmZmVyQmluZGluZy4KKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwOiBpbml0aWFsaXplIG1fZnJhbWVi
dWZmZXJCaW5kaW5nLgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1
ZmZlcik6CisKIDIwMTItMDQtMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDk5ODEuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDExNDk1MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAs
OCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmcgPSBidWZmZXI7CisgICAgaWYg
KG1fZHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5zZXRGcmFtZWJ1ZmZl
ckJpbmRpbmcob2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKSk7CiAgICAg
aWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2RyYXdpbmdCdWZmZXIpIHsKICAgICAgICAg
Ly8gSW5zdGVhZCBvZiBiaW5kaW5nIGZiIDAsIGJpbmQgdGhlIGRyYXdpbmcgYnVmZmVyLgogICAg
ICAgICBtX2RyYXdpbmdCdWZmZXItPmJpbmQoKTsKQEAgLTE1MzMsMTAgKzE1MzUsMTEgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUZyYW1lYgogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKGZyYW1lYnVmZmVyID09IG1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CiAgICAgICAgIG1f
ZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKLSAgICAgICAgLy8gSGF2ZSB0byBjYWxsIGJpbmRGcmFt
ZWJ1ZmZlciBoZXJlIHRvIGJpbmQgYmFjayB0byBpbnRlcm5hbCBmYm8uCi0gICAgICAgIGlmICht
X2RyYXdpbmdCdWZmZXIpCisgICAgICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAg
ICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0RnJhbWVidWZmZXJCaW5kaW5nKDApOworICAgICAgICAg
ICAgLy8gSGF2ZSB0byBjYWxsIGJpbmRGcmFtZWJ1ZmZlciBoZXJlIHRvIGJpbmQgYmFjayB0byBp
bnRlcm5hbCBmYm8uCiAgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmJpbmQoKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCk7CiAgICAgfQogfQpAQCAt
NDMwNyw4ICs0MzEwLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omxvc2VDb250ZXh0
SQogICAgIGRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKTsKIAogICAgIGlmIChtX2RyYXdpbmdC
dWZmZXIpIHsKLSAgICAgICAgLy8gTWFrZSBhYnNvbHV0ZWx5IHN1cmUgd2UgZG8gbm90IHJlZmVy
IHRvIGFuIGFscmVhZHktZGVsZXRlZCB0ZXh0dXJlLgorICAgICAgICAvLyBNYWtlIGFic29sdXRl
bHkgc3VyZSB3ZSBkbyBub3QgcmVmZXIgdG8gYW4gYWxyZWFkeS1kZWxldGVkIHRleHR1cmUgb3Ig
ZnJhbWVidWZmZXIuCiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0VGV4dHVyZTJEQmluZGlu
ZygwKTsKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5zZXRGcmFtZWJ1ZmZlckJpbmRpbmcoMCk7
CiAgICAgfQogCiAgICAgLy8gVGhlcmUgaXMgbm8gZGlyZWN0IHdheSB0byBjbGVhciBlcnJvcnMg
ZnJvbSBhIEdMIGltcGxlbWVudGF0aW9uIGFuZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8u
Y3BwCShyZXZpc2lvbiAxMTQ5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhpY3NDb24KICAgICAsIG1f
YWxwaGEoYWxwaGEpCiAgICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQogICAgICwgbV90ZXh0
dXJlMkRCaW5kaW5nKDApCisgICAgLCBtX2ZyYW1lYnVmZmVyQmluZGluZygwKQogICAgICwgbV9h
Y3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApCiAgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZSgtMSwgLTEpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDExNDk1MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgRHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1
ZmZlcihHcmFwaGljc0NvbgogICAgICwgbV9hbHBoYShhbHBoYSkKICAgICAsIG1fc2Npc3NvckVu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX3RleHR1cmUyREJpbmRpbmcoMCkKKyAgICAsIG1fZnJhbWVi
dWZmZXJCaW5kaW5nKDApCiAgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaXplKC0x
LCAtMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAkocmV2aXNpb24gMTE0
OTUzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCB2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyCiAgICAgbV90ZXh0dXJlSWQgPSBtX2Ry
YXdpbmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIoKTsKICAgICBpZiAobV9kcmF3aW5nQnVmZmVy
LT5yZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIoKSkKICAgICAgICAgdXBkYXRlci5h
cHBlbmRDb3B5KG1fZHJhd2luZ0J1ZmZlci0+Y29sb3JCdWZmZXIoKSwgbV90ZXh0dXJlSWQsIGJv
dW5kcygpKTsKKworICAgIG1fZHJhd2luZ0J1ZmZlci0+cmVzdG9yZUZyYW1lYnVmZmVyQmluZGlu
ZygpOwogfQogCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvRHJhd2luZ0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCShyZXZpc2lvbiAxMTQ5NTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsMTQgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpjb21t
aXQobG9uZyB4LCBsb25nIAogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwogfQogCit2b2lkIERyYXdpbmdCdWZmZXI6
OnJlc3RvcmVGcmFtZWJ1ZmZlckJpbmRpbmcoKQoreworICAgIGlmICghbV9jb250ZXh0IHx8ICFt
X2ZyYW1lYnVmZmVyQmluZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZyYW1lYnVm
ZmVyQmluZGluZyk7Cit9CisKIGJvb2wgRHJhd2luZ0J1ZmZlcjo6bXVsdGlzYW1wbGUoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5nZXRDb250ZXh0QXR0cmli
dXRlcygpLmFudGlhbGlhcyAmJiBtX211bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2lu
Z0J1ZmZlci5oCShyZXZpc2lvbiAxMTQ5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSwx
NCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgRHJhd2luZ0J1ZmZlciBuZWVkcyB0byB0cmFjayB0
aGUgdGV4dHVyZSBib3VuZCB0byB0ZXh0dXJlIHVuaXQgMC4KICAgICAvLyBUaGUgYm91bmQgdGV4
dHVyZSBpcyB0cmFja2VkIHRvIGF2b2lkIGNvc3RseSBxdWVyaWVzIGR1cmluZyByZW5kZXJpbmcu
Ci0gICAgdm9pZCBzZXRUZXh0dXJlMkRCaW5kaW5nKEdDM0RpbnQgdGV4dHVyZSkgeyBtX3RleHR1
cmUyREJpbmRpbmcgPSB0ZXh0dXJlOyB9CisgICAgdm9pZCBzZXRUZXh0dXJlMkRCaW5kaW5nKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkgeyBtX3RleHR1cmUyREJpbmRpbmcgPSB0ZXh0dXJlOyB9
CisKKyAgICAvLyBUaGUgRHJhd2luZ0J1ZmZlciBuZWVkcyB0byB0cmFjayB0aGUgY3VycmVudGx5
IGJvdW5kIGZyYW1lYnVmZmVyIHNvIGl0CisgICAgLy8gcmVzdG9yZSB0aGUgYmluZGluZyB3aGVu
IG5lZWRlZC4KKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyQmluZGluZyhQbGF0Zm9ybTNET2JqZWN0
IGZibykgeyBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IGZibzsgfQorCisgICAgLy8gQmluZCB0byB0
aGUgbV9mcmFtZWJ1ZmZlckJpbmRpbmcgaWYgaXQncyBub3QgMC4KKyAgICB2b2lkIHJlc3RvcmVG
cmFtZWJ1ZmZlckJpbmRpbmcoKTsKIAogICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZl
IHRleHR1cmUgdW5pdC4gVGV4dHVyZSB1bml0IDAgaXMgdXNlZCBhcyBob3N0IGZvciBhIHNjcmF0
Y2gKICAgICAvLyB0ZXh0dXJlLgpAQCAtMTM1LDYgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgQWxw
aGFSZXF1aXJlbWVudCBtX2FscGhhOwogICAgIGJvb2wgbV9zY2lzc29yRW5hYmxlZDsKICAgICBQ
bGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZTJEQmluZGluZzsKKyAgICBQbGF0Zm9ybTNET2JqZWN0
IG1fZnJhbWVidWZmZXJCaW5kaW5nOwogICAgIEdDM0RlbnVtIG1fYWN0aXZlVGV4dHVyZVVuaXQ7
CiAKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0Ry
YXdpbmdCdWZmZXJNYWMubW0JKHJldmlzaW9uIDExNDk1MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsNyBAQCBEcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNz
Q29uCiAgICAgLCBtX2FscGhhKGFscGhhKQogICAgICwgbV9zY2lzc29yRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQorICAgICwgbV9mcmFtZWJ1ZmZlckJpbmRpbmco
MCkKICAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUw
KQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3NpemUoLTEsIC0xKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0
L0RyYXdpbmdCdWZmZXJRdC5jcHAJKHJldmlzaW9uIDExNDk1MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBAIERyYXdpbmdCdWZmZXI6OkRyYXdpbmdCdWZmZXIoR3JhcGhp
Y3NDb24KICAgICAsIG1fYWxwaGEoYWxwaGEpCiAgICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNl
KQogICAgICwgbV90ZXh0dXJlMkRCaW5kaW5nKDApCisgICAgLCBtX2ZyYW1lYnVmZmVyQmluZGlu
ZygwKQogICAgICwgbV9hY3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTApCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2l6ZSgtMSwgLTEpCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMTQ5NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0yMyAgWmhlbnlhbyBNbyAgPHptb0Bnb29n
bGUuY29tPgorCisgICAgICAgIGZyYW1lYnVmZmVyIGJpbmRpbmcgc2hvdWxkIG5vdCBiZSBjaGFu
Z2VkIGFmdGVyIGNhbnZhcyByZXNpemUgb3IgY29tcG9zaXRpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NjA5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSdXNzZWxsLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVi
dWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVj
dGVkLW9uLXJlc2l6ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qczogU3luYyB3aXRoIGtocm9ub3Mgc2lkZSAocGFy
dGlhbCkKKyAgICAgICAgKFdlYkdMVGVzdFV0aWxzLik6CisgICAgICAgIChXZWJHTFRlc3RVdGls
cyk6CisKIDIwMTItMDQtMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDk5ODEuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1iaW5kaW5ncy11bmFmZmVj
dGVkLW9uLXJlc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitWZXJpZmllcyB0aGF0IEdMIGZyYW1lYnVm
ZmVyIGJpbmRpbmdzIGRvIG5vdCBjaGFuZ2Ugd2hlbiBjYW52YXMgaXMgcmVzaXplZAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgZmJvU2l6ZSA8IGNhbnZhcy53aWR0aCBpcyB0
cnVlCitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFCit0ZXN0IGJlZm9yZSByZXNpemluZyBjYW52YXMKK1BBU1Mg
c2hvdWxkIGJlIGJsdWUKK1BBU1MgYXJlYSBvdXRzaWRlIGZibyBzaG91bGQgYmUgdHJhbnNwYXJl
bnQgYmxhY2sKK1BBU1Mgc2hvdWxkIGJlIGdyZWVuCitQQVNTIGFyZWEgb3V0c2lkZSBmYm8gc2hv
dWxkIGJlIHRyYW5zcGFyZW50IGJsYWNrCit0ZXN0IGFmdGVyIHJlc2l6aW5nIGNhbnZhcworUEFT
UyBzaG91bGQgYmUgYmx1ZQorUEFTUyBhcmVhIG91dHNpZGUgZmJvIHNob3VsZCBiZSB0cmFuc3Bh
cmVudCBibGFjaworUEFTUyBzaG91bGQgYmUgZ3JlZW4KK1BBU1MgYXJlYSBvdXRzaWRlIGZibyBz
aG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2sKK3Rlc3QgYWZ0ZXIgcmVzaXppbmcgY2FudmFzIGFu
ZCB3YWl0aW5nIGZvciBjb21wb3NpdGluZworUEFTUyBzaG91bGQgYmUgYmx1ZQorUEFTUyBhcmVh
IG91dHNpZGUgZmJvIHNob3VsZCBiZSB0cmFuc3BhcmVudCBibGFjaworUEFTUyBzaG91bGQgYmUg
Z3JlZW4KK1BBU1MgYXJlYSBvdXRzaWRlIGZibyBzaG91bGQgYmUgdHJhbnNwYXJlbnQgYmxhY2sK
K1BBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBiZSBu
byBlcnJvcnMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZnJhbWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUtZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLWJpbmRpbmdzLXVuYWZmZWN0ZWQtb24tcmVz
aXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJh
bWVidWZmZXItYmluZGluZ3MtdW5hZmZlY3RlZC1vbi1yZXNpemUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLWJpbmRpbmdzLXVu
YWZmZWN0ZWQtb24tcmVzaXplLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKwor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHRpdGxlPlZlcmlmaWVzIHRoYXQgR0wgZnJhbWVidWZmZXIgYmluZGluZ3MgZG8gbm90IGNoYW5n
ZSB3aGVuIGNhbnZhcyBpcyByZXNpemVkPC90aXRsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
Y2FudmFzIGlkPSJleGFtcGxlIiB3aWR0aD0iNHB4IiBoZWlnaHQ9IjRweCI+PC9jYW52YXM+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCBHTCBmcmFtZWJ1ZmZlciBiaW5kaW5n
cyBkbyBub3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQiKTsKKworaWYgKHdpbmRvdy5p
bml0Tm9uS2hyb25vc0ZyYW1ld29yaykgeworICB3aW5kb3cuaW5pdE5vbktocm9ub3NGcmFtZXdv
cmsodHJ1ZSk7Cit9CisKK3ZhciBlcnI7Cit2YXIgd3R1ID0gV2ViR0xUZXN0VXRpbHM7Cit2YXIg
Y2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKTsKK3ZhciBnbCA9IHd0
dS5jcmVhdGUzRENvbnRleHQoY2FudmFzKTsKK3ZhciBncmVlbiA9IFswLCAyNTUsIDAsIDI1NV07
Cit2YXIgYmx1ZSA9IFswLCAwLCAyNTUsIDI1NV07Cit2YXIgZmJvU2l6ZSA9IDI7CitzaG91bGRC
ZVRydWUoImZib1NpemUgPCBjYW52YXMud2lkdGgiKTsKK3ZhciBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOworZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwordmFy
IGZib1RleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmFjdGl2ZVRleHR1cmUoZ2wuVEVYVFVS
RTEpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgZmJvVGV4KTsKK2dsLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVY
VFVSRV8yRCwgZmJvVGV4LCAwKTsKK2dsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wu
UkdCQSwgZmJvU2l6ZSwgZmJvU2l6ZSwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVs
bCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZ2wuTElORUFSKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVS
RV9NQUdfRklMVEVSLCBnbC5MSU5FQVIpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50ZXhQYXJhbWV0ZXJp
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKK3No
b3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5G
UkFNRUJVRkZFUl9DT01QTEVURSIpOworCitmdW5jdGlvbiBjaGVja0ZCTyhjb2xvciwgbXNnKSB7
CisgIHd0dS5jaGVja0NhbnZhc1JlY3QoZ2wsIDAsIDAsIGZib1NpemUsIGZib1NpemUsIGNvbG9y
LCBtc2cpOworICB3dHUuY2hlY2tDYW52YXNSZWN0KGdsLCBmYm9TaXplLCBmYm9TaXplLCBmYm9T
aXplLCBmYm9TaXplLCBbMCwgMCwgMCwgMF0sICJhcmVhIG91dHNpZGUgZmJvIHNob3VsZCBiZSB0
cmFuc3BhcmVudCBibGFjayIpOworfQorCisvLyBUaGUgRkJPIGlzIDJ4MiBhbmQgaXQncyBib3Vu
ZCBzbyBjbGVhcmluZyBzaG91bGQgY2xlYXIgYSAyeDIgYXJlYQorLy8gYW5kIGNhbGxpbmcgcmVh
ZCBwaXhlbHMgc2hvdWxkIHJlYWQgdGhlIGNsZWFyIGNvbG9yIGluIHRoYXQgMngyIGFyZWEKKy8v
IGFuZCAwLDAsMCwwIG91dHNpZGUgdGhhdCBhcmVhLgorLy8KKy8vIElmIHRoZSBGQk8gaXMgbm8g
bG9uZ2VyIGJvdW5kIGJlY2F1c2Ugb2YgYSBXZWJHTCBpbXBsZW1lbnRhdGlvbiBlcnJvcgorLy8g
dGhlbiBsaWtlbHkgdGhlIGNsZWFyIHdpbGwgY2xlYXIgdGhlIGJhY2tidWZmZXIgYW5kIHJlYWRp
bmcgb3V0c2lkZQorLy8gdGhlIDJ4MiBhcmVhIHdpbGwgbm90IGJlIDAsMCwwLDAKKworZnVuY3Rp
b24gdGVzdCgpIHsKKyAgZ2wuY2xlYXJDb2xvcigwLCAwLCAxLCAxKTsKKyAgZ2wuY2xlYXIoZ2wu
Q09MT1JfQlVGRkVSX0JJVCk7CisgIGNoZWNrRkJPKGJsdWUsICJzaG91bGQgYmUgYmx1ZSIpOwor
ICBnbC5jbGVhckNvbG9yKDAsIDEsIDAsIDEpOworICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgY2hlY2tGQk8oZ3JlZW4sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30KKworZGVidWco
InRlc3QgYmVmb3JlIHJlc2l6aW5nIGNhbnZhcyIpOwordGVzdCgpOworZGVidWcoInRlc3QgYWZ0
ZXIgcmVzaXppbmcgY2FudmFzIik7CitjYW52YXMud2lkdGggPSA4OwordGVzdCgpOworZGVidWco
InRlc3QgYWZ0ZXIgcmVzaXppbmcgY2FudmFzIGFuZCB3YWl0aW5nIGZvciBjb21wb3NpdGluZyIp
OworY2FudmFzLndpZHRoID0gMTY7Cit3dHUud2FpdEZyYW1lcyg1LCBmdW5jdGlvbigpIHsKKyAg
dGVzdCgpOworICBmaW5pc2hUZXN0KCk7CisgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJS
T1IsICJTaG91bGQgYmUgbm8gZXJyb3JzLiIpOworfSk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItYmluZGluZ3MtdW5h
ZmZlY3RlZC1vbi1yZXNpemUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2wtdGVzdC11dGlscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGlscy5qcwkocmV2aXNpb24gMTE0OTUzKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QtdXRpbHMu
anMJKHdvcmtpbmcgY29weSkKQEAgLTExMDQsNyArMTEwNCw2NiBAQCB2YXIgZ2V0VXJsQXJndW1l
bnRzID0gZnVuY3Rpb24oKSB7CiAgIHJldHVybiBhcmdzOwogfTsKIAorLyoqCisgKiBQcm92aWRl
cyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW4gYSBjcm9zcyBicm93c2VyIHdheS4KKyAqLwordmFy
IHJlcXVlc3RBbmltRnJhbWVJbXBsXzsKKwordmFyIHJlcXVlc3RBbmltRnJhbWUgPSBmdW5jdGlv
bihjYWxsYmFjaywgZWxlbWVudCkgeworICBpZiAoIXJlcXVlc3RBbmltRnJhbWVJbXBsXykgewor
ICAgIHJlcXVlc3RBbmltRnJhbWVJbXBsXyA9IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGZ1bmN0
aW9uTmFtZXMgPSBbCisgICAgICAgICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLAorICAgICAgICAi
d2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwKKyAgICAgICAgIm1velJlcXVlc3RBbmltYXRp
b25GcmFtZSIsCisgICAgICAgICJvUmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwKKyAgICAgICAgIm1z
UmVxdWVzdEFuaW1hdGlvbkZyYW1lIgorICAgICAgXTsKKyAgICAgIGZvciAodmFyIGpqID0gMDsg
amogPCBmdW5jdGlvbk5hbWVzLmxlbmd0aDsgKytqaikgeworICAgICAgICB2YXIgZnVuY3Rpb25O
YW1lID0gZnVuY3Rpb25OYW1lc1tqal07CisgICAgICAgIGlmICh3aW5kb3dbZnVuY3Rpb25OYW1l
XSkgeworICAgICAgICAgIHJldHVybiBmdW5jdGlvbihuYW1lKSB7CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oY2FsbGJhY2ssIGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHdp
bmRvd1tuYW1lXS5jYWxsKHdpbmRvdywgY2FsbGJhY2ssIGVsZW1lbnQpOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICB9KGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAg
IHJldHVybiBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkgeworICAgICAgICAgICByZXR1cm4g
d2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2ssIDEwMDAgLyA3MCk7CisgICAgICAgIH07CisgICAg
fSgpOworICB9CisKKyAgcmV0dXJuIHJlcXVlc3RBbmltRnJhbWVJbXBsXyhjYWxsYmFjaywgZWxl
bWVudCk7Cit9OworCisvKioKKyAqIFByb3ZpZGVzIGNhbmNlbEFuaW1hdGlvbkZyYW1lIGluIGEg
Y3Jvc3MgYnJvd3NlciB3YXkuCisgKi8KK3ZhciBjYW5jZWxBbmltRnJhbWUgPSAoZnVuY3Rpb24o
KSB7CisgIHJldHVybiB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgfHwKKyAgICAgICAgIHdp
bmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZSB8fAorICAgICAgICAgd2luZG93Lm1vekNh
bmNlbEFuaW1hdGlvbkZyYW1lIHx8CisgICAgICAgICB3aW5kb3cub0NhbmNlbEFuaW1hdGlvbkZy
YW1lIHx8CisgICAgICAgICB3aW5kb3cubXNDYW5jZWxBbmltYXRpb25GcmFtZSB8fAorICAgICAg
ICAgd2luZG93LmNsZWFyVGltZW91dDsKK30pKCk7CisKK3ZhciB3YWl0RnJhbWVzID0gZnVuY3Rp
b24oZnJhbWVzLCBjYWxsYmFjaykgeworICB2YXIgY291bnREb3duID0gZnVuY3Rpb24oKSB7Cisg
ICAgaWYgKGZyYW1lcyA9PSAwKSB7CisgICAgICBjYWxsYmFjaygpOworICAgIH0gZWxzZSB7Cisg
ICAgICAtLWZyYW1lczsKKyAgICAgIHJlcXVlc3RBbmltRnJhbWUoY291bnREb3duKTsKKyAgICB9
CisgIH07CisgIGNvdW50RG93bigpOworfTsKKwogcmV0dXJuIHsKKyAgY2FuY2VsQW5pbUZyYW1l
OiBjYW5jZWxBbmltRnJhbWUsCiAgIGNyZWF0ZTNEQ29udGV4dDogY3JlYXRlM0RDb250ZXh0LAog
ICBjcmVhdGUzRENvbnRleHRXaXRoV3JhcHBlclRoYXRUaHJvd3NPbkdMRXJyb3I6CiAgICAgY3Jl
YXRlM0RDb250ZXh0V2l0aFdyYXBwZXJUaGF0VGhyb3dzT25HTEVycm9yLApAQCAtMTE0Nyw2ICsx
MjA2LDggQEAgcmV0dXJuIHsKICAgc2hvdWxkR2VuZXJhdGVHTEVycm9yOiBzaG91bGRHZW5lcmF0
ZUdMRXJyb3IsCiAgIHJlYWRGaWxlOiByZWFkRmlsZSwKICAgcmVhZEZpbGVMaXN0OiByZWFkRmls
ZUxpc3QsCisgIHJlcXVlc3RBbmltRnJhbWU6IHJlcXVlc3RBbmltRnJhbWUsCisgIHdhaXRGcmFt
ZXM6IHdhaXRGcmFtZXMsCiAKICAgbm9uZTogZmFsc2UKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>