<?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>40926</bug_id>
          
          <creation_ts>2010-06-21 10:13:19 -0700</creation_ts>
          <short_desc>(Blocked by SVG) high and unfreed memory usage on script tag insertion</short_desc>
          <delta_ts>2011-04-29 15:19:43 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>59604</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Romanovich">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>krit</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240763</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Romanovich">alex</who>
    <bug_when>2010-06-21 10:13:19 -0700</bug_when>
    <thetext>I&apos;ve attached a script that will append and remove a script tag to a div over the course of 10 seconds.

When you run it in Safari 5.0 with the Activity Monitor open, you will observe the memory usage of Safari climb steadily for the 10 seconds the script runs for. Repeat clicks will very quickly drive memory usage up over 1gig.

If you take the same code and run it in Firefox 3.6.3, you will also see the memory usage go up but: 1) by a much much smaller amount 2) over repeat clicks Firefox&apos;s memory usage will suddenly drop back down, and will not continue to climb endlessly.

This problem exists also in WebKit nightly (61502).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240764</commentid>
    <comment_count>1</comment_count>
      <attachid>59262</attachid>
    <who name="Alexander Romanovich">alex</who>
    <bug_when>2010-06-21 10:13:46 -0700</bug_when>
    <thetext>Created attachment 59262
test case for bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241388</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-22 12:29:09 -0700</bug_when>
    <thetext>These script elements aren&apos;t garbage collected, there were over 125000 left alive after the test finished for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242161</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-23 17:00:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/8124718&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322205</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:25:14 -0800</bug_when>
    <thetext>This is caused by this code in JSDOMBinding.h:

        // If a wrapper is the last reference to an image or script element
        // that is loading but not in the document, the wrapper is observable
        // because it is the only thing keeping the image element alive, and if
        // the image element is destroyed, its load event will not fire.
        // FIXME: The DOM should manage this issue without the help of JavaScript wrappers.
        if (node-&gt;hasTagName(imgTag) &amp;&amp; !static_cast&lt;HTMLImageElement*&gt;(node)-&gt;haveFiredLoadEvent())
            return true;
        if (node-&gt;hasTagName(scriptTag) &amp;&amp; !static_cast&lt;HTMLScriptElement*&gt;(node)-&gt;haveFiredLoadEvent())
            return true;
#if ENABLE(VIDEO)
        if (node-&gt;hasTagName(audioTag) &amp;&amp; !static_cast&lt;HTMLAudioElement*&gt;(node)-&gt;paused())
            return true;
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322206</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:25:47 -0800</bug_when>
    <thetext>Clearly, haveFiredLoadEvent() is not the same as &quot;is loading&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322243</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 14:53:40 -0800</bug_when>
    <thetext>Besides this synthetic test case, this affects inline scripts, because they also don&apos;t fire the load event. Script elements with src are probably affected if load fails...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322372</commentid>
    <comment_count>7</comment_count>
      <attachid>76598</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-14 17:18:39 -0800</bug_when>
    <thetext>Created attachment 76598
proposed fix

It seems the we may get this flag wrong if src attribute is removed or changed during loading. Fixing that is something for another day.

See also: bug 39628, bug 31253, bug 23372.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322381</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-14 17:26:15 -0800</bug_when>
    <thetext>Attachment 76598 did not build on chromium:
Build output: http://queues.webkit.org/results/7096004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322390</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-14 17:36:53 -0800</bug_when>
    <thetext>Attachment 76598 did not build on qt:
Build output: http://queues.webkit.org/results/7160006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322568</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-15 04:05:21 -0800</bug_when>
    <thetext>Attachment 76598 did not build on chromium:
Build output: http://queues.webkit.org/results/7158026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322687</commentid>
    <comment_count>11</comment_count>
      <attachid>76598</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-15 10:44:37 -0800</bug_when>
    <thetext>Comment on attachment 76598
proposed fix

SVG tests are failing, need to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322699</commentid>
    <comment_count>12</comment_count>
      <attachid>76669</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-15 11:05:53 -0800</bug_when>
    <thetext>Created attachment 76669
work in progress, breaks SVG

SVG seems quite complicated - when I remove the failing assertion, svg/dom/SVGScriptElement/script-load-and-error-events.svg breaks badly. I don&apos;t know the SVG spec and can&apos;t tell for sure if its expected results are correct.

I suspect that SVG is not quite right:
1) The test expects onload for &lt;script xlink:href=&quot;resources/certainlydoesnotexist.js&quot;&gt;&lt;/script&gt;
2) WebKit fires onload for &lt;script&gt; without any external resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322700</commentid>
    <comment_count>13</comment_count>
      <attachid>76670</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-12-15 11:07:39 -0800</bug_when>
    <thetext>Created attachment 76670
SVG no subresources test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339629</commentid>
    <comment_count>14</comment_count>
    <who name="Alexander Romanovich">alex</who>
    <bug_when>2011-01-25 06:43:39 -0800</bug_when>
    <thetext>Is anyone working on the SVG block for this bug? Maybe a separate bug filed for it that I can CC myself on?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339934</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-25 14:37:32 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=76669) [details]
&gt; work in progress, breaks SVG
&gt; 
&gt; SVG seems quite complicated - when I remove the failing assertion, svg/dom/SVGScriptElement/script-load-and-error-events.svg breaks badly. I don&apos;t know the SVG spec and can&apos;t tell for sure if its expected results are correct.
&gt; 
&gt; I suspect that SVG is not quite right:
&gt; 1) The test expects onload for &lt;script xlink:href=&quot;resources/certainlydoesnotexist.js&quot;&gt;&lt;/script&gt;
&gt; 2) WebKit fires onload for &lt;script&gt; without any external resources.

I haven&apos;t looked at the test in quesiton.  However SVG has a separate load event &quot;SVGLoad&quot;:
http://www.w3.org/TR/2002/PR-SVG11-20021115/interact.html

It&apos;s fired basically every time a tag is closed if there is a listener.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395546</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-29 15:09:40 -0700</bug_when>
    <thetext>It looks like the test case here is fixed by the fix for bug 59604.

*** This bug has been marked as a duplicate of bug 59604 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395552</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-29 15:19:43 -0700</bug_when>
    <thetext>It&apos;s certainly correct to close this as a dupe, but we&apos;ll need to sort out the other bugs and issues touched by this patch eventually.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>59262</attachid>
            <date>2010-06-21 10:13:46 -0700</date>
            <delta_ts>2010-06-21 10:13:46 -0700</delta_ts>
            <desc>test case for bug</desc>
            <filename>memory_usage.html</filename>
            <type>text/html</type>
            <size>432</size>
            <attacher name="Alexander Romanovich">alex</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgoKZnVuY3Rpb24gdGVzdCgpIHsKdmFyIHRlc3Q9ZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKdmFyIHRzID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgp
LmdldFRpbWUoKSAvIDEwMDApOwp3aGlsZSAoTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUo
KSAvIDEwMDApIC0gdHMgPCAxMCkgewoJdmFyIGVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2NyaXB0Jyk7Cgl0ZXN0LmFwcGVuZENoaWxkKGVsZW1lbnQpOwoJdGVzdC5yZW1vdmVDaGls
ZChlbGVtZW50KTsKfTsKYWxlcnQoJ2RvbmUnKTsKfQoKPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+
CjxkaXYgaWQ9InRlc3QiPjwvZGl2Pgo8YSBocmVmPSIjIiBvbmNsaWNrPSJ0ZXN0KCk7cmV0dXJu
IGZhbHNlOyI+VGVzdDwvYT4KPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76598</attachid>
            <date>2010-12-14 17:18:39 -0800</date>
            <delta_ts>2010-12-15 11:05:53 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>ExpectingEvent.txt</filename>
            <type>text/plain</type>
            <size>20423</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDA3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMTItMTQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTI2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MTI0NzE4PiBoaWdoIGFuZCB1bmZyZWVkIG1lbW9yeSB1c2FnZSBvbiBz
Y3JpcHQgdGFnIGluc2VydGlvbgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6
OlNjcmlwdEVsZW1lbnQpOiBDaGFuZ2VkIHRvIHN0YXJ0IHdpdGggIm5vdCBleHBlY3RpbmcgbGFv
ZCBldmVudCIsCisgICAgICAgIG1hdGNoaW5nIGNvbW1vbiBzZW5zZSBhbmQgSFRNTEltYWdlRWxl
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQpOiBQ
cm90ZWN0IHRoZSBlbGVtZW50IHdoaWxlIGRpc3BhdGNoaW5nIGV2ZW50cywgYXMKKyAgICAgICAg
bm90aGluZyBleHBsaWNpdGx5IGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBhIHJlZmVyZW5jZSBv
biBzdGFjay4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGUpOiBEaXR0
by4KKworICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOiAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcyk6CisgICAgICAgICogZG9tL1hNTERv
Y3VtZW50UGFyc2VyUXQuY3BwOiAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRW5k
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6IChX
ZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpyZXF1ZXN0UGVuZGluZ1NjcmlwdCk6CisgICAgICAg
IE5vdyB0aGF0IHRoZSBkZWZhdWx0IGlzIGRpZmZlcmVudCwgd2UgbmVlZCB0byBjYWxsIHNldEV4
cGVjdGluZ0xvYWRFdmVudCgpIGR1cmluZyBsb2FkaW5nLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JzZXJ2YWJsZVRocm91
Z2hET00pOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50OjpleHBlY3RpbmdMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6c2V0RXhwZWN0aW5nTG9hZEV2ZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV4cGVjdGluZ0xvYWRFdmVudCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6SW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6On5J
bWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6c2V0SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQpOgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OmV4cGVjdGluZ0JlZm9yZUxvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxv
YWRlcjo6ZXhwZWN0aW5nTG9hZEV2ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVp
cmVkUmVzb3VyY2VzKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWly
ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0
Y2hMb2FkRXZlbnQpOgorICAgICAgICAqIHdtbC9XTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V01MSW1hZ2VFbGVtZW50OjphdHRhY2gpOgorICAgICAgICBSZW5hbWVkICJm
aXJlZCIgdG8gImV4cGVjdGluZyIsIGFzIHRoZSBvbGQgbmFtZSB3YXMgYSBsaWUuCisKIDIwMTAt
MTItMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgTWFycmluLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw5ICszMTAsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNPYnNlcnZhYmxlVGhyb3VnaERPCiAgICAgICAgIC8vIGJlY2F1c2UgaXQgaXMgdGhl
IG9ubHkgdGhpbmcga2VlcGluZyB0aGUgaW1hZ2UgZWxlbWVudCBhbGl2ZSwgYW5kIGlmCiAgICAg
ICAgIC8vIHRoZSBpbWFnZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZlbnQgd2ls
bCBub3QgZmlyZS4KICAgICAgICAgLy8gRklYTUU6IFRoZSBET00gc2hvdWxkIG1hbmFnZSB0aGlz
IGlzc3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlwdCB3cmFwcGVycy4KLSAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoaW1nVGFnKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxl
bWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKKyAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoaW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSkt
PmV4cGVjdGluZ0xvYWRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgJiYgIXN0YXRpY19jYXN0PEhUTUxTY3Jp
cHRFbGVtZW50Kj4obm9kZSktPmhhdmVGaXJlZExvYWRFdmVudCgpKQorICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50
Kj4obm9kZSktPmV4cGVjdGluZ0xvYWRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhdWRpb1Rh
ZykgJiYgIXN0YXRpY19jYXN0PEhUTUxBdWRpb0VsZW1lbnQqPihub2RlKS0+cGF1c2VkKCkpCklu
ZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBTY3JpcHRF
bGVtZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsCiAgICAgLCBtX3dhc0luc2VydGVkQnlQ
YXJzZXIod2FzSW5zZXJ0ZWRCeVBhcnNlcikKICAgICAsIG1faXNFeHRlcm5hbFNjcmlwdChmYWxz
ZSkKICAgICAsIG1fd2FzQWxyZWFkeVN0YXJ0ZWQod2FzQWxyZWFkeVN0YXJ0ZWQpCi0gICAgLCBt
X2hhdmVGaXJlZExvYWQoZmFsc2UpCisgICAgLCBtX2V4cGVjdGluZ0xvYWQoZmFsc2UpCiB7CiAg
ICAgQVNTRVJUKG1fZWxlbWVudCk7CiB9CkBAIC0xNTMsNiArMTUzLDggQEAgdm9pZCBTY3JpcHRF
bGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IAogICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkp
CiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxFbGVtZW50PiBwcm90ZWN0KGVsZW1lbnQo
KSk7CisKICAgICBpZiAoIW1fZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoc291cmNl
VXJsKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjMsNyArMTY1LDcgQEAgdm9pZCBTY3JpcHRF
bGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IAogICAgIC8vIG1fd2FzSW5zZXJ0ZWRCeVBhcnNl
ciBpcyBuZXZlciByZXNldCAtIGFsd2F5cyByZXNpZWQgYXQgdGhlIGluaXRpYWwgdmFsdWUgc2V0
IHdoaWxlIHBhcnNpbmcuCiAgICAgLy8gbV93YXNBbHJlYWR5U3RhcnRlZCBpcyBsZWZ0IHVudG91
Y2hlZCBhcyB3ZWxsIHRvIGF2b2lkIHNjcmlwdCByZWV4ZWN1dGlvbiwgaWYgYSA8c2NyaXB0PiBl
bGVtZW50CiAgICAgLy8gaXMgcmVtb3ZlZCBhbmQgcmVhcHBlbmRlZCB0byB0aGUgZG9jdW1lbnQu
Ci0gICAgbV9oYXZlRmlyZWRMb2FkID0gZmFsc2U7CisgICAgbV9leHBlY3RpbmdMb2FkID0gdHJ1
ZTsKIAogICAgIGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBtX2NhY2hlZFNjcmlwdC0+
YWRkQ2xpZW50KHRoaXMpOwpAQCAtMjI2LDYgKzIyOCw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6
c3RvcExvYWRSZXF1ZXN0KCkKIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZShDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoY2FjaGVkU2NyaXB0KTsKKyAgICBSZWZQ
dHI8RWxlbWVudD4gcHJvdGVjdChlbGVtZW50KCkpOwogICAgIGlmIChjYWNoZWRTY3JpcHQtPmVy
cm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgZWxzZSB7
CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvZG9tL1Nj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpID0gMDsKIAotICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXZlRmlyZWRMb2FkOyB9CisgICAgYm9vbCBleHBlY3Rp
bmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGluZ0xvYWQ7IH0KKyAgICB2b2lk
IHNldEV4cGVjdGluZ0xvYWRFdmVudChib29sIGV4cGVjdGluZ0xvYWQpIHsgbV9leHBlY3RpbmdM
b2FkID0gZXhwZWN0aW5nTG9hZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRIYXZlRmly
ZWRMb2FkRXZlbnQoYm9vbCBoYXZlRmlyZWRMb2FkKSB7IG1faGF2ZUZpcmVkTG9hZCA9IGhhdmVG
aXJlZExvYWQ7IH0KICAgICBib29sIHdhc0luc2VydGVkQnlQYXJzZXIoKSBjb25zdCB7IHJldHVy
biBtX3dhc0luc2VydGVkQnlQYXJzZXI7IH0KICAgICBib29sIHdhc0FscmVhZHlTdGFydGVkKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNBbHJlYWR5U3RhcnRlZDsgfQogCkBAIC04OSw3ICs4OSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3dhc0luc2VydGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lz
RXh0ZXJuYWxTY3JpcHQ7CiAgICAgYm9vbCBtX3dhc0FscmVhZHlTdGFydGVkOwotICAgIGJvb2wg
bV9oYXZlRmlyZWRMb2FkOworICAgIGJvb2wgbV9leHBlY3RpbmdMb2FkOwogfTsKIAogU2NyaXB0
RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL2Rv
bS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTksNiAr
ODk5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKICAgICAgICAg
ICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0ID0gc2NyaXB0RWxlbWVudC0+c2NyaXB0Q2hhcnNldCgp
OwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHNjcmlw
dEhyZWYpICYmCiAgICAgICAgICAgICAgICAgKG1fcGVuZGluZ1NjcmlwdCA9IGRvY3VtZW50KCkt
PmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc2NyaXB0SHJlZiwgc2NyaXB0
Q2hhcnNldCkpKSB7CisgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVudC0+c2V0RXhwZWN0aW5n
TG9hZEV2ZW50KHRydWUpOwogICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IGVsZW1l
bnQ7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5hZGRDbGllbnQodGhpcyk7CiAK
SW5kZXg6IFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCShyZXZpc2lvbiA3MzkyNCkKKysr
IFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MDIsNiArNjAyLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VFbmRFbGVtZW50KAog
ICAgICAgICAgICAgU3RyaW5nIHNjcmlwdENoYXJzZXQgPSBzY3JpcHRFbGVtZW50LT5zY3JpcHRD
aGFyc2V0KCk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQoc2NyaXB0SHJlZikgJiYKICAgICAgICAgICAgICAgICAobV9wZW5kaW5nU2NyaXB0ID0gZG9j
dW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzY3JpcHRIcmVm
LCBzY3JpcHRDaGFyc2V0KSkpIHsKKyAgICAgICAgICAgICAgICB0b1NjcmlwdEVsZW1lbnQoc2Ny
aXB0KS0+c2V0RXhwZWN0aW5nTG9hZEV2ZW50KHRydWUpOwogICAgICAgICAgICAgICAgIG1fc2Ny
aXB0RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5h
ZGRDbGllbnQodGhpcyk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlz
aW9uIDczOTI0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphdHRhY2go
KQogewogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAotICAgIGlmIChyZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPmlzSW1hZ2UoKSAmJiBtX2ltYWdlTG9hZGVyLmhhdmVGaXJlZEJlZm9yZUxv
YWRFdmVudCgpKSB7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgp
ICYmICFtX2ltYWdlTG9hZGVyLmV4cGVjdGluZ0JlZm9yZUxvYWRFdmVudCgpKSB7CiAgICAgICAg
IFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSk7CiAg
ICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJ
bWFnZS0+aW1hZ2VSZXNvdXJjZSgpOwogICAgICAgICBpZiAocmVuZGVySW1hZ2VSZXNvdXJjZS0+
aGFzSW1hZ2UoKSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gNzM5MjQp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAotICAg
IGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUxvYWRlci5o
YXZlRmlyZWRMb2FkRXZlbnQoKTsgfQorICAgIGJvb2wgZXhwZWN0aW5nTG9hZEV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZUxvYWRlci5leHBlY3RpbmdMb2FkRXZlbnQoKTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXR0YWNoKCkKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9p
bWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwogICAgICAg
ICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgICAgICBpZiAocmVuZGVy
ZXIoKSAmJiBtX2ltYWdlTG9hZGVyLT5oYXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgeworICAg
ICAgICBpZiAocmVuZGVyZXIoKSAmJiAhbV9pbWFnZUxvYWRlci0+ZXhwZWN0aW5nQmVmb3JlTG9h
ZEV2ZW50KCkpIHsKICAgICAgICAgICAgIFJlbmRlckltYWdlKiByZW5kZXJJbWFnZSA9IHRvUmVu
ZGVySW1hZ2UocmVuZGVyZXIoKSk7CiAgICAgICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiBy
ZW5kZXJJbWFnZVJlc291cmNlID0gcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKTsKICAgICAg
ICAgICAgIHJlbmRlckltYWdlUmVzb3VyY2UtPnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXIt
PmltYWdlKCkpOyAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24g
NzM5MjQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjIsOCArMTYyLDggQEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6ZGVmZXJBdHRy
aWJ1dGVWYQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7
Ci0gICAgQVNTRVJUKCFoYXZlRmlyZWRMb2FkRXZlbnQoKSk7Ci0gICAgc2V0SGF2ZUZpcmVkTG9h
ZEV2ZW50KHRydWUpOworICAgIEFTU0VSVChleHBlY3RpbmdMb2FkRXZlbnQoKSk7CisgICAgc2V0
RXhwZWN0aW5nTG9hZEV2ZW50KGZhbHNlKTsKIAogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAkocmV2aXNpb24gNzM5MjQpCisr
KyBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzIsOCArMjcyLDEwIEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6cmVxdWVzdFBlbmRp
bmdTY3IKICAgICBwZW5kaW5nU2NyaXB0LmFkb3B0RWxlbWVudChzY3JpcHQpOwogICAgIC8vIFRo
aXMgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gMCBmb3IgZW1wdHkgb3IgaW52YWxpZCBzcmNWYWx1
ZXMuCiAgICAgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQgPSBtX2RvY3VtZW50LT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNyY1ZhbHVlLCB0b1NjcmlwdEVsZW1lbnQo
c2NyaXB0KS0+c2NyaXB0Q2hhcnNldCgpKTsKKyAgICB0b1NjcmlwdEVsZW1lbnQoc2NyaXB0KS0+
c2V0RXhwZWN0aW5nTG9hZEV2ZW50KHRydWUpOwogICAgIGlmICghY2FjaGVkU2NyaXB0KSB7CiAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIERpc3BhdGNoIGVycm9yIGV2ZW50LgorICAgICAg
ICB0b1NjcmlwdEVsZW1lbnQoc2NyaXB0KS0+c2V0RXhwZWN0aW5nTG9hZEV2ZW50KGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBwZW5kaW5nU2NyaXB0LnNldENhY2hl
ZFNjcmlwdChjYWNoZWRTY3JpcHQpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNp
b24gNzM5MjQpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDggKzk0LDggQEAgc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGxvYWRFdmVudFNl
bmRlcgogSW1hZ2VMb2FkZXI6OkltYWdlTG9hZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBt
X2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1faW1hZ2UoMCkKLSAgICAsIG1fZmlyZWRCZWZvcmVM
b2FkKHRydWUpCi0gICAgLCBtX2ZpcmVkTG9hZCh0cnVlKQorICAgICwgbV9leHBlY3RpbmdCZWZv
cmVMb2FkKGZhbHNlKQorICAgICwgbV9leHBlY3RpbmdMb2FkKGZhbHNlKQogICAgICwgbV9pbWFn
ZUNvbXBsZXRlKHRydWUpCiAgICAgLCBtX2xvYWRNYW51YWxseShmYWxzZSkKIHsKQEAgLTEwNiwx
MiArMTA2LDEyIEBAIEltYWdlTG9hZGVyOjp+SW1hZ2VMb2FkZXIoKQogICAgIGlmIChtX2ltYWdl
KQogICAgICAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAKLSAgICBBU1NFUlQoIW1f
ZmlyZWRCZWZvcmVMb2FkIHx8ICFiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZl
bnRzKHRoaXMpKTsKLSAgICBpZiAoIW1fZmlyZWRCZWZvcmVMb2FkKQorICAgIEFTU0VSVChtX2V4
cGVjdGluZ0JlZm9yZUxvYWQgfHwgIWJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRpbmdF
dmVudHModGhpcykpOworICAgIGlmIChtX2V4cGVjdGluZ0JlZm9yZUxvYWQpCiAgICAgICAgIGJl
Zm9yZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwogCi0gICAgQVNTRVJUKCFt
X2ZpcmVkTG9hZCB8fCAhbG9hZEV2ZW50U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cyh0aGlzKSk7
Ci0gICAgaWYgKCFtX2ZpcmVkTG9hZCkKKyAgICBBU1NFUlQobV9leHBlY3RpbmdMb2FkIHx8ICFs
b2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKHRoaXMpKTsKKyAgICBpZiAobV9leHBl
Y3RpbmdMb2FkKQogICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
IH0KIApAQCAtMTIxLDEzICsxMjEsMTMgQEAgdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2UoQ2Fj
aGVkSW1hZ2UqIAogICAgIENhY2hlZEltYWdlKiBvbGRJbWFnZSA9IG1faW1hZ2UuZ2V0KCk7CiAg
ICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdlKSB7CiAgICAgICAgIG1faW1hZ2UgPSBuZXdJbWFn
ZTsKLSAgICAgICAgaWYgKCFtX2ZpcmVkQmVmb3JlTG9hZCkgeworICAgICAgICBpZiAobV9leHBl
Y3RpbmdCZWZvcmVMb2FkKSB7CiAgICAgICAgICAgICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5j
YW5jZWxFdmVudCh0aGlzKTsKLSAgICAgICAgICAgIG1fZmlyZWRCZWZvcmVMb2FkID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZXhwZWN0aW5nQmVmb3JlTG9hZCA9IGZhbHNlOwogICAgICAgICB9Ci0g
ICAgICAgIGlmICghbV9maXJlZExvYWQpIHsKKyAgICAgICAgaWYgKG1fZXhwZWN0aW5nTG9hZCkg
ewogICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7Ci0gICAg
ICAgICAgICBtX2ZpcmVkTG9hZCA9IHRydWU7CisgICAgICAgICAgICBtX2V4cGVjdGluZ0xvYWQg
PSBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVlOwogICAg
ICAgICBpZiAobmV3SW1hZ2UpCkBAIC0xNzcsMTQgKzE3NywxNCBAQCB2b2lkIEltYWdlTG9hZGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgCiAgICAgQ2FjaGVkSW1hZ2UqIG9sZEltYWdlID0g
bV9pbWFnZS5nZXQoKTsKICAgICBpZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKLSAgICAgICAg
aWYgKCFtX2ZpcmVkQmVmb3JlTG9hZCkKKyAgICAgICAgaWYgKG1fZXhwZWN0aW5nQmVmb3JlTG9h
ZCkKICAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMp
OwotICAgICAgICBpZiAoIW1fZmlyZWRMb2FkKQorICAgICAgICBpZiAobV9leHBlY3RpbmdMb2Fk
KQogICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiAKICAg
ICAgICAgbV9pbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX2ZpcmVkQmVmb3JlTG9hZCA9ICFu
ZXdJbWFnZTsKLSAgICAgICAgbV9maXJlZExvYWQgPSAhbmV3SW1hZ2U7CisgICAgICAgIG1fZXhw
ZWN0aW5nQmVmb3JlTG9hZCA9IG5ld0ltYWdlOworICAgICAgICBtX2V4cGVjdGluZ0xvYWQgPSBu
ZXdJbWFnZTsKICAgICAgICAgbV9pbWFnZUNvbXBsZXRlID0gIW5ld0ltYWdlOwogCiAgICAgICAg
IGlmIChuZXdJbWFnZSkgewpAQCAtMjE0LDEwICsyMTQsMTAgQEAgdm9pZCBJbWFnZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgogICAgIEFTU0VSVChtX2ZhaWxlZExvYWRVUkwuaXNFbXB0
eSgpKTsKIAogICAgIG1faW1hZ2VDb21wbGV0ZSA9IHRydWU7Ci0gICAgaWYgKGhhdmVGaXJlZEJl
Zm9yZUxvYWRFdmVudCgpKQorICAgIGlmICghZXhwZWN0aW5nQmVmb3JlTG9hZEV2ZW50KCkpCiAg
ICAgICAgIHVwZGF0ZVJlbmRlcmVyKCk7CiAKLSAgICBpZiAobV9maXJlZExvYWQpCisgICAgaWYg
KCFtX2V4cGVjdGluZ0xvYWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxvYWRFdmVudFNlbmRl
cigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOwpAQCAtMjYzLDEzICsyNjMsMTMgQEAgdm9pZCBJ
bWFnZUxvYWRlcjo6dXBkYXRlUmVuZGVyZXIoKQogCiB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRj
aFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQogewotICAgIGlmIChtX2ZpcmVkQmVmb3JlTG9hZCkK
KyAgICBpZiAoIW1fZXhwZWN0aW5nQmVmb3JlTG9hZCkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
ICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9maXJlZEJlZm9yZUxvYWQg
PSB0cnVlOworICAgIG1fZXhwZWN0aW5nQmVmb3JlTG9hZCA9IGZhbHNlOwogICAgIGlmIChtX2Vs
ZW1lbnQtPmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KG1faW1hZ2UtPnVybCgpKSkgewogICAgICAg
ICB1cGRhdGVSZW5kZXJlcigpOwogICAgICAgICByZXR1cm47CkBAIC0yODYsMTMgKzI4NiwxMyBA
QCB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMCiAKIHZvaWQgSW1hZ2VM
b2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudCgpCiB7Ci0gICAgaWYgKG1fZmlyZWRMb2Fk
KQorICAgIGlmICghbV9leHBlY3RpbmdMb2FkKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFt
X2ltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2ZpcmVkTG9hZCA9IHRydWU7Cisg
ICAgbV9leHBlY3RpbmdMb2FkID0gZmFsc2U7CiAgICAgZGlzcGF0Y2hMb2FkRXZlbnQoKTsKIH0K
IApJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCShyZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRMb2FkTWFudWFsbHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9sb2Fk
TWFudWFsbHkgPSBsb2FkTWFudWFsbHk7IH0KIAotICAgIGJvb2wgaGF2ZUZpcmVkQmVmb3JlTG9h
ZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJlZEJlZm9yZUxvYWQ7IH0KLSAgICBib29sIGhh
dmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9CisgICAgYm9v
bCBleHBlY3RpbmdCZWZvcmVMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGluZ0Jl
Zm9yZUxvYWQ7IH0KKyAgICBib29sIGV4cGVjdGluZ0xvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwZWN0aW5nTG9hZDsgfQogCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVm
b3JlTG9hZEV2ZW50cygpOwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVu
dHMoKTsKQEAgLTc5LDggKzc5LDggQEAgcHJpdmF0ZToKICAgICBFbGVtZW50KiBtX2VsZW1lbnQ7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1faW1hZ2U7CiAgICAgQXRv
bWljU3RyaW5nIG1fZmFpbGVkTG9hZFVSTDsKLSAgICBib29sIG1fZmlyZWRCZWZvcmVMb2FkIDog
MTsKLSAgICBib29sIG1fZmlyZWRMb2FkIDogMTsKKyAgICBib29sIG1fZXhwZWN0aW5nQmVmb3Jl
TG9hZCA6IDE7CisgICAgYm9vbCBtX2V4cGVjdGluZ0xvYWQgOiAxOwogICAgIGJvb2wgbV9pbWFn
ZUNvbXBsZXRlIDogMTsKICAgICBib29sIG1fbG9hZE1hbnVhbGx5IDogMTsKIH07CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDczOTI0KQorKysgV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIFJlbmRl
ck9iamVjdCogU1ZHSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW4KIAogYm9vbCBTVkdJbWFnZUVsZW1l
bnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiB7Ci0gICAgcmV0dXJuICFleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkgfHwgbV9pbWFnZUxvYWRlci5oYXZlRmlyZWRM
b2FkRXZlbnQoKTsKKyAgICByZXR1cm4gIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFs
dWUoKSB8fCAhbV9pbWFnZUxvYWRlci5leHBlY3RpbmdMb2FkRXZlbnQoKTsKIH0KIAogdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAko
cmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzIsOCArNzIsOCBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nCiAgICAgICAgIC8vIEhhbmRsZSBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyBhdHRyaWJ1dGUuIE9ubHkgcG9zc2libGUgY2FzZTog
Y2hhbmdpbmcgZnJvbSAndHJ1ZScgdG8gJ2ZhbHNlJwogICAgICAgICAvLyBjYXVzZXMgYW4gaW1t
ZWRpYXRlIGRpc3BhdGNoIG9mIHRoZSBTVkdMb2FkIGV2ZW50LiBJZiB0aGUgYXR0cmlidXRlIHZh
bHVlIHdhcyAnZmFsc2UnIGJlZm9yZSBpbnNlcnRpbmcgdGhlIHNjcmlwdCBlbGVtZW50CiAgICAg
ICAgIC8vIGluIHRoZSBkb2N1bWVudCwgdGhlIFNWR0xvYWQgZXZlbnQgaGFzIGFscmVhZHkgYmVl
biBkaXNwYXRjaGVkLgotICAgICAgICBpZiAoIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNl
VmFsdWUoKSAmJiAhaGF2ZUZpcmVkTG9hZEV2ZW50KCkgJiYgIXdhc0luc2VydGVkQnlQYXJzZXIo
KSkgewotICAgICAgICAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUpOworICAgICAgICBp
ZiAoIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSAmJiBleHBlY3RpbmdMb2Fk
RXZlbnQoKSAmJiAhd2FzSW5zZXJ0ZWRCeVBhcnNlcigpKSB7CisgICAgICAgICAgICBzZXRFeHBl
Y3RpbmdMb2FkRXZlbnQoZmFsc2UpOwogICAgICAgICAgICAgQVNTRVJUKGhhdmVMb2FkZWRSZXF1
aXJlZFJlc291cmNlcygpKTsKIAogICAgICAgICAgICAgc2VuZFNWR0xvYWRFdmVudElmUG9zc2li
bGUoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtCiAKICAgICAvLyBFdmVudHVhbGx5IHNlbmQgU1ZHTG9hZCBldmVudCBub3cgZm9y
IHRoZSBkeW5hbWljYWxseSBpbnNlcnRlZCBzY3JpcHQgZWxlbWVudAogICAgIGlmICghZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpKSB7Ci0gICAgICAgIHNldEhhdmVGaXJlZExv
YWRFdmVudCh0cnVlKTsKKyAgICAgICAgc2V0RXhwZWN0aW5nTG9hZEV2ZW50KGZhbHNlKTsKICAg
ICAgICAgc2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoKTsKICAgICB9CiB9CkBAIC0xMzYsNyAr
MTM2LDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbAogCiAgICAg
Ly8gQSBTVkdMb2FkIGV2ZW50IGhhcyBiZWVuIGZpcmVkIGJ5IFNWR0VsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbi4KICAgICBpZiAoIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFs
dWUoKSkKLSAgICAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUpOworICAgICAgICBzZXRF
eHBlY3RpbmdMb2FkRXZlbnQoZmFsc2UpOwogfQogCiBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6
dHlwZSgpIGNvbnN0CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dAogCiBib29sIFNWR1NjcmlwdEVsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1
aXJlZFJlc291cmNlcygpCiB7Ci0gICAgcmV0dXJuICFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
QmFzZVZhbHVlKCkgfHwgaGF2ZUZpcmVkTG9hZEV2ZW50KCk7CisgICAgcmV0dXJuICFleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkgfHwgIWV4cGVjdGluZ0xvYWRFdmVudCgpOwog
fQogCiBTdHJpbmcgU1ZHU2NyaXB0RWxlbWVudDo6c291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25z
dApAQCAtMjA2LDggKzIwNiw4IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2Fk
RXZlbnQKICAgICBib29sIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPSBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCk7CiAKICAgICBpZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigp
KQotICAgICAgICBBU1NFUlQoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAhPSBoYXZlRmlyZWRM
b2FkRXZlbnQoKSk7Ci0gICAgZWxzZSBpZiAoaGF2ZUZpcmVkTG9hZEV2ZW50KCkpIHsKKyAgICAg
ICAgQVNTRVJUKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgPT0gZXhwZWN0aW5nTG9hZEV2ZW50
KCkpOworICAgIGVsc2UgaWYgKCFleHBlY3RpbmdMb2FkRXZlbnQoKSkgewogICAgICAgICAvLyBJ
ZiB3ZSd2ZSBhbHJlYWR5IGZpcmVkIGFuIGxvYWQgZXZlbnQgYW5kIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQgaXMgc2V0IHRvICd0cnVlJwogICAgICAgICAvLyBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkIGhhcyBiZWVuIG1vZGlmaWVkIHdoaWxlIGxvYWRpbmcgdGhlIDxzY3JpcHQ+LiBEb24n
dCBkaXNwYXRjaCB0d2ljZS4KICAgICAgICAgaWYgKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CkBAIC0yMTksMTAgKzIxOSwxMCBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9h
ZEV2ZW50CiAgICAgLy8gU1ZHIGZpcmVzIHRoZSBTVkdMb2FkIGV2ZW50IGltbWVkaWF0ZWx5IGFm
dGVyIHBhcnNpbmcgdGhlIDxzY3JpcHQ+IGVsZW1lbnQsIGlmIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKICAgICAvLyBpcyBzZXQgdG8gJ2ZhbHNlJywgb3RoZXJ3aGlzZSBpdCBkaXNwYXRjaGVz
IHRoZSAnU1ZHTG9hZCcgZXZlbnQganVzdCBhZnRlciBsb2FkaW5nIHRoZSByZW1vdGUgcmVzb3Vy
Y2UuCiAgICAgaWYgKGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpIHsKLSAgICAgICAgQVNTRVJU
KCFoYXZlRmlyZWRMb2FkRXZlbnQoKSk7CisgICAgICAgIEFTU0VSVChleHBlY3RpbmdMb2FkRXZl
bnQoKSk7CiAKICAgICAgICAgLy8gRGlzcGF0Y2ggU1ZHTG9hZCBldmVudAotICAgICAgICBzZXRI
YXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7CisgICAgICAgIHNldEV4cGVjdGluZ0xvYWRFdmVudChm
YWxzZSk7CiAgICAgICAgIEFTU0VSVChoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSk7CiAK
ICAgICAgICAgc2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoKTsKSW5kZXg6IFdlYkNvcmUvd21s
L1dNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MSW1hZ2VF
bGVtZW50LmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL3dtbC9XTUxJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV01MSW1hZ2VFbGVt
ZW50OjphdHRhY2goKQogewogICAgIFdNTEVsZW1lbnQ6OmF0dGFjaCgpOwogCi0gICAgaWYgKHJl
bmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZp
cmVkQmVmb3JlTG9hZEV2ZW50KCkpIHsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigp
LT5pc0ltYWdlKCkgJiYgIW1faW1hZ2VMb2FkZXIuZXhwZWN0aW5nQmVmb3JlTG9hZEV2ZW50KCkp
IHsKICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlT2JqID0gdG9SZW5kZXJJbWFnZShyZW5kZXJl
cigpKTsKICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9
IGltYWdlT2JqLT5pbWFnZVJlc291cmNlKCk7CiAgICAgICAgIGlmIChyZW5kZXJJbWFnZVJlc291
cmNlLT5oYXNJbWFnZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76669</attachid>
            <date>2010-12-15 11:05:53 -0800</date>
            <delta_ts>2010-12-15 11:05:53 -0800</delta_ts>
            <desc>work in progress, breaks SVG</desc>
            <filename>ExpectingEvent.txt</filename>
            <type>text/plain</type>
            <size>21226</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDA3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMTItMTQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwOTI2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MTI0NzE4PiBoaWdoIGFuZCB1bmZyZWVkIG1lbW9yeSB1c2FnZSBvbiBz
Y3JpcHQgdGFnIGluc2VydGlvbgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6
OlNjcmlwdEVsZW1lbnQpOiBDaGFuZ2VkIHRvIHN0YXJ0IHdpdGggIm5vdCBleHBlY3RpbmcgbGFv
ZCBldmVudCIsCisgICAgICAgIG1hdGNoaW5nIGNvbW1vbiBzZW5zZSBhbmQgSFRNTEltYWdlRWxl
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQpOiBQ
cm90ZWN0IHRoZSBlbGVtZW50IHdoaWxlIGRpc3BhdGNoaW5nIGV2ZW50cywgYXMKKyAgICAgICAg
bm90aGluZyBleHBsaWNpdGx5IGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBhIHJlZmVyZW5jZSBv
biBzdGFjay4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGUpOiBEaXR0
by4KKworICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOiAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmVuZEVsZW1lbnROcyk6CisgICAgICAgICogZG9tL1hNTERv
Y3VtZW50UGFyc2VyUXQuY3BwOiAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRW5k
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6IChX
ZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpyZXF1ZXN0UGVuZGluZ1NjcmlwdCk6CisgICAgICAg
IE5vdyB0aGF0IHRoZSBkZWZhdWx0IGlzIGRpZmZlcmVudCwgd2UgbmVlZCB0byBjYWxsIHNldEV4
cGVjdGluZ0xvYWRFdmVudCgpIGR1cmluZyBsb2FkaW5nLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JzZXJ2YWJsZVRocm91
Z2hET00pOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50OjpleHBlY3RpbmdMb2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6c2V0RXhwZWN0aW5nTG9hZEV2ZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmV4cGVjdGluZ0xvYWRFdmVudCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hMb2FkRXZlbnQpOgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUxvYWRlcjo6SW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6On5J
bWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6c2V0SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQpOgorICAg
ICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMb2Fk
ZXI6OmV4cGVjdGluZ0JlZm9yZUxvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxv
YWRlcjo6ZXhwZWN0aW5nTG9hZEV2ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVp
cmVkUmVzb3VyY2VzKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWly
ZWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0
Y2hMb2FkRXZlbnQpOgorICAgICAgICAqIHdtbC9XTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V01MSW1hZ2VFbGVtZW50OjphdHRhY2gpOgorICAgICAgICBSZW5hbWVkICJm
aXJlZCIgdG8gImV4cGVjdGluZyIsIGFzIHRoZSBvbGQgbmFtZSB3YXMgYSBsaWUuCisKIDIwMTAt
MTItMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQ2hyaXMgTWFycmluLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw5ICszMTAsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNPYnNlcnZhYmxlVGhyb3VnaERPCiAgICAgICAgIC8vIGJlY2F1c2UgaXQgaXMgdGhl
IG9ubHkgdGhpbmcga2VlcGluZyB0aGUgaW1hZ2UgZWxlbWVudCBhbGl2ZSwgYW5kIGlmCiAgICAg
ICAgIC8vIHRoZSBpbWFnZSBlbGVtZW50IGlzIGRlc3Ryb3llZCwgaXRzIGxvYWQgZXZlbnQgd2ls
bCBub3QgZmlyZS4KICAgICAgICAgLy8gRklYTUU6IFRoZSBET00gc2hvdWxkIG1hbmFnZSB0aGlz
IGlzc3VlIHdpdGhvdXQgdGhlIGhlbHAgb2YgSmF2YVNjcmlwdCB3cmFwcGVycy4KLSAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoaW1nVGFnKSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxl
bWVudCo+KG5vZGUpLT5oYXZlRmlyZWRMb2FkRXZlbnQoKSkKKyAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoaW1nVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSkt
PmV4cGVjdGluZ0xvYWRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgJiYgIXN0YXRpY19jYXN0PEhUTUxTY3Jp
cHRFbGVtZW50Kj4obm9kZSktPmhhdmVGaXJlZExvYWRFdmVudCgpKQorICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShzY3JpcHRUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRFbGVtZW50
Kj4obm9kZSktPmV4cGVjdGluZ0xvYWRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhdWRpb1Rh
ZykgJiYgIXN0YXRpY19jYXN0PEhUTUxBdWRpb0VsZW1lbnQqPihub2RlKS0+cGF1c2VkKCkpCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzM5MjQp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
bm9kZSBpcyBwdXQgaW4gYW4gb2JqZWN0IGdyb3VwIGlkZW50aWZpZWQgYnkgdGhlIHJvb3QKICAg
ICAgICAgLy8gZWxlbWVudCBvZiB0aGUgdHJlZSB0byB3aGljaCBpdCBiZWxvbmdzLgogICAgICAg
ICB1aW50cHRyX3QgZ3JvdXBJZDsKLSAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSB8fCAo
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykgJiYgIXN0YXRpY19jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQqPihub2RlKS0+aGF2ZUZpcmVkTG9hZEV2ZW50KCkpKQorICAgICAgICBpZiAo
bm9kZS0+aW5Eb2N1bWVudCgpIHx8IChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFn
KSAmJiBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50Kj4obm9kZSktPmV4cGVjdGluZ0xvYWRF
dmVudCgpKSkKICAgICAgICAgICAgIGdyb3VwSWQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTm9kZSog
cm9vdCA9IG5vZGU7CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzM5MjQpCisr
KyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyAr
NTcsNyBAQCBTY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsCiAgICAgLCBt
X3dhc0luc2VydGVkQnlQYXJzZXIod2FzSW5zZXJ0ZWRCeVBhcnNlcikKICAgICAsIG1faXNFeHRl
cm5hbFNjcmlwdChmYWxzZSkKICAgICAsIG1fd2FzQWxyZWFkeVN0YXJ0ZWQod2FzQWxyZWFkeVN0
YXJ0ZWQpCi0gICAgLCBtX2hhdmVGaXJlZExvYWQoZmFsc2UpCisgICAgLCBtX2V4cGVjdGluZ0xv
YWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudCk7CiB9CkBAIC0xNTMsNiArMTUzLDgg
QEAgdm9pZCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IAogICAgIGlmICghZG9j
dW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxFbGVtZW50PiBw
cm90ZWN0KGVsZW1lbnQoKSk7CisKICAgICBpZiAoIW1fZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVM
b2FkRXZlbnQoc291cmNlVXJsKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjMsNyArMTY1LDcg
QEAgdm9pZCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IAogICAgIC8vIG1fd2Fz
SW5zZXJ0ZWRCeVBhcnNlciBpcyBuZXZlciByZXNldCAtIGFsd2F5cyByZXNpZWQgYXQgdGhlIGlu
aXRpYWwgdmFsdWUgc2V0IHdoaWxlIHBhcnNpbmcuCiAgICAgLy8gbV93YXNBbHJlYWR5U3RhcnRl
ZCBpcyBsZWZ0IHVudG91Y2hlZCBhcyB3ZWxsIHRvIGF2b2lkIHNjcmlwdCByZWV4ZWN1dGlvbiwg
aWYgYSA8c2NyaXB0PiBlbGVtZW50CiAgICAgLy8gaXMgcmVtb3ZlZCBhbmQgcmVhcHBlbmRlZCB0
byB0aGUgZG9jdW1lbnQuCi0gICAgbV9oYXZlRmlyZWRMb2FkID0gZmFsc2U7CisgICAgbV9leHBl
Y3RpbmdMb2FkID0gdHJ1ZTsKIAogICAgIGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBt
X2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpAQCAtMjI2LDYgKzIyOCw3IEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6c3RvcExvYWRSZXF1ZXN0KCkKIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZShDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCkKIHsKICAgICBBU1NFUlQoY2FjaGVkU2Ny
aXB0KTsKKyAgICBSZWZQdHI8RWxlbWVudD4gcHJvdGVjdChlbGVtZW50KCkpOwogICAgIGlmIChj
YWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50
KCk7CiAgICAgZWxzZSB7CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MzkyNCkKKysr
IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUx
LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpID0gMDsKIAotICAgIGJvb2wg
aGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXZlRmlyZWRMb2FkOyB9Cisg
ICAgYm9vbCBleHBlY3RpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGluZ0xv
YWQ7IH0KKyAgICB2b2lkIHNldEV4cGVjdGluZ0xvYWRFdmVudChib29sIGV4cGVjdGluZ0xvYWQp
IHsgbV9leHBlY3RpbmdMb2FkID0gZXhwZWN0aW5nTG9hZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZlbnQoYm9vbCBoYXZlRmlyZWRMb2FkKSB7IG1faGF2ZUZp
cmVkTG9hZCA9IGhhdmVGaXJlZExvYWQ7IH0KICAgICBib29sIHdhc0luc2VydGVkQnlQYXJzZXIo
KSBjb25zdCB7IHJldHVybiBtX3dhc0luc2VydGVkQnlQYXJzZXI7IH0KICAgICBib29sIHdhc0Fs
cmVhZHlTdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNBbHJlYWR5U3RhcnRlZDsgfQogCkBA
IC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhc0luc2VydGVkQnlQYXJzZXI7
CiAgICAgYm9vbCBtX2lzRXh0ZXJuYWxTY3JpcHQ7CiAgICAgYm9vbCBtX3dhc0FscmVhZHlTdGFy
dGVkOwotICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkOworICAgIGJvb2wgbV9leHBlY3RpbmdMb2Fk
OwogfTsKIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqKTsKSW5kZXg6
IFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkocmV2aXNpb24gNzM5MjQp
CisrKyBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OTksNiArODk5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVu
dE5zKCkKICAgICAgICAgICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0ID0gc2NyaXB0RWxlbWVudC0+
c2NyaXB0Q2hhcnNldCgpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmRpc3BhdGNoQmVmb3Jl
TG9hZEV2ZW50KHNjcmlwdEhyZWYpICYmCiAgICAgICAgICAgICAgICAgKG1fcGVuZGluZ1Njcmlw
dCA9IGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc2Ny
aXB0SHJlZiwgc2NyaXB0Q2hhcnNldCkpKSB7CisgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVu
dC0+c2V0RXhwZWN0aW5nTG9hZEV2ZW50KHRydWUpOwogICAgICAgICAgICAgICAgIG1fc2NyaXB0
RWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5hZGRD
bGllbnQodGhpcyk7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCShyZXZp
c2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MDIsNiArNjAyLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2VFbmRFbGVtZW50KAogICAgICAgICAgICAgU3RyaW5nIHNjcmlwdENoYXJzZXQgPSBzY3JpcHRF
bGVtZW50LT5zY3JpcHRDaGFyc2V0KCk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+ZGlzcGF0
Y2hCZWZvcmVMb2FkRXZlbnQoc2NyaXB0SHJlZikgJiYKICAgICAgICAgICAgICAgICAobV9wZW5k
aW5nU2NyaXB0ID0gZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFNj
cmlwdChzY3JpcHRIcmVmLCBzY3JpcHRDaGFyc2V0KSkpIHsKKyAgICAgICAgICAgICAgICBzY3Jp
cHRFbGVtZW50LT5zZXRFeHBlY3RpbmdMb2FkRXZlbnQodHJ1ZSk7CiAgICAgICAgICAgICAgICAg
bV9zY3JpcHRFbGVtZW50ID0gZWxlbWVudDsKICAgICAgICAgICAgICAgICBtX3BlbmRpbmdTY3Jp
cHQtPmFkZENsaWVudCh0aGlzKTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAko
cmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0
dGFjaCgpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOwogCi0gICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpICYmIG1faW1hZ2VMb2FkZXIuaGF2ZUZpcmVkQmVm
b3JlTG9hZEV2ZW50KCkpIHsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0lt
YWdlKCkgJiYgIW1faW1hZ2VMb2FkZXIuZXhwZWN0aW5nQmVmb3JlTG9hZEV2ZW50KCkpIHsKICAg
ICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0gdG9SZW5kZXJJbWFnZShyZW5kZXJlcigp
KTsKICAgICAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSogcmVuZGVySW1hZ2VSZXNvdXJjZSA9IHJl
bmRlckltYWdlLT5pbWFnZVJlc291cmNlKCk7CiAgICAgICAgIGlmIChyZW5kZXJJbWFnZVJlc291
cmNlLT5oYXNJbWFnZSgpKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA3
MzkyNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb21wbGV0ZSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlTG9h
ZGVyLmhhdmVGaXJlZExvYWRFdmVudCgpOyB9CisgICAgYm9vbCBleHBlY3RpbmdMb2FkRXZlbnQo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlTG9hZGVyLmV4cGVjdGluZ0xvYWRFdmVudCgpOyB9CiAK
IHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDczOTI0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTcsNyArODE3LDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjphdHRhY2goKQogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAg
ICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci0gICAgICAgIGlmIChy
ZW5kZXJlcigpICYmIG1faW1hZ2VMb2FkZXItPmhhdmVGaXJlZEJlZm9yZUxvYWRFdmVudCgpKSB7
CisgICAgICAgIGlmIChyZW5kZXJlcigpICYmICFtX2ltYWdlTG9hZGVyLT5leHBlY3RpbmdCZWZv
cmVMb2FkRXZlbnQoKSkgewogICAgICAgICAgICAgUmVuZGVySW1hZ2UqIHJlbmRlckltYWdlID0g
dG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKTsKICAgICAgICAgICAgIFJlbmRlckltYWdlUmVzb3Vy
Y2UqIHJlbmRlckltYWdlUmVzb3VyY2UgPSByZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgpOwog
ICAgICAgICAgICAgcmVuZGVySW1hZ2VSZXNvdXJjZS0+c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxv
YWRlci0+aW1hZ2UoKSk7IApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Miw4ICsxNjIsOCBAQCBib29sIEhUTUxTY3JpcHRFbGVtZW50OjpkZWZl
ckF0dHJpYnV0ZVZhCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50
KCkKIHsKLSAgICBBU1NFUlQoIWhhdmVGaXJlZExvYWRFdmVudCgpKTsKLSAgICBzZXRIYXZlRmly
ZWRMb2FkRXZlbnQodHJ1ZSk7CisgICAgQVNTRVJUKGV4cGVjdGluZ0xvYWRFdmVudCgpKTsKKyAg
ICBzZXRFeHBlY3RpbmdMb2FkRXZlbnQoZmFsc2UpOwogCiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQpJbmRl
eDogV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCShyZXZpc2lvbiA3Mzky
NCkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Miw4ICsyNzIsMTAgQEAgYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpyZXF1ZXN0
UGVuZGluZ1NjcgogICAgIHBlbmRpbmdTY3JpcHQuYWRvcHRFbGVtZW50KHNjcmlwdCk7CiAgICAg
Ly8gVGhpcyBzaG91bGQgY29ycmVjdGx5IHJldHVybiAwIGZvciBlbXB0eSBvciBpbnZhbGlkIHNy
Y1ZhbHVlcy4KICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCA9IG1fZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RTY3JpcHQoc3JjVmFsdWUsIHRvU2NyaXB0RWxl
bWVudChzY3JpcHQpLT5zY3JpcHRDaGFyc2V0KCkpOworICAgIHRvU2NyaXB0RWxlbWVudChzY3Jp
cHQpLT5zZXRFeHBlY3RpbmdMb2FkRXZlbnQodHJ1ZSk7CiAgICAgaWYgKCFjYWNoZWRTY3JpcHQp
IHsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsgLy8gRGlzcGF0Y2ggZXJyb3IgZXZlbnQuCisg
ICAgICAgIHRvU2NyaXB0RWxlbWVudChzY3JpcHQpLT5zZXRFeHBlY3RpbmdMb2FkRXZlbnQoZmFs
c2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHBlbmRpbmdTY3JpcHQuc2V0
Q2FjaGVkU2NyaXB0KGNhY2hlZFNjcmlwdCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsOCArOTQsOCBAQCBzdGF0aWMgSW1hZ2VFdmVudFNlbmRlciYgbG9hZEV2
ZW50U2VuZGVyCiBJbWFnZUxvYWRlcjo6SW1hZ2VMb2FkZXIoRWxlbWVudCogZWxlbWVudCkKICAg
ICA6IG1fZWxlbWVudChlbGVtZW50KQogICAgICwgbV9pbWFnZSgwKQotICAgICwgbV9maXJlZEJl
Zm9yZUxvYWQodHJ1ZSkKLSAgICAsIG1fZmlyZWRMb2FkKHRydWUpCisgICAgLCBtX2V4cGVjdGlu
Z0JlZm9yZUxvYWQoZmFsc2UpCisgICAgLCBtX2V4cGVjdGluZ0xvYWQoZmFsc2UpCiAgICAgLCBt
X2ltYWdlQ29tcGxldGUodHJ1ZSkKICAgICAsIG1fbG9hZE1hbnVhbGx5KGZhbHNlKQogewpAQCAt
MTA2LDEyICsxMDYsMTIgQEAgSW1hZ2VMb2FkZXI6On5JbWFnZUxvYWRlcigpCiAgICAgaWYgKG1f
aW1hZ2UpCiAgICAgICAgIG1faW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAotICAgIEFTU0VS
VCghbV9maXJlZEJlZm9yZUxvYWQgfHwgIWJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRp
bmdFdmVudHModGhpcykpOwotICAgIGlmICghbV9maXJlZEJlZm9yZUxvYWQpCisgICAgQVNTRVJU
KG1fZXhwZWN0aW5nQmVmb3JlTG9hZCB8fCAhYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuaGFzUGVu
ZGluZ0V2ZW50cyh0aGlzKSk7CisgICAgaWYgKG1fZXhwZWN0aW5nQmVmb3JlTG9hZCkKICAgICAg
ICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiAKLSAgICBBU1NF
UlQoIW1fZmlyZWRMb2FkIHx8ICFsb2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKHRo
aXMpKTsKLSAgICBpZiAoIW1fZmlyZWRMb2FkKQorICAgIEFTU0VSVChtX2V4cGVjdGluZ0xvYWQg
fHwgIWxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRpbmdFdmVudHModGhpcykpOworICAgIGlmICht
X2V4cGVjdGluZ0xvYWQpCiAgICAgICAgIGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRo
aXMpOwogfQogCkBAIC0xMjEsMTMgKzEyMSwxMyBAQCB2b2lkIEltYWdlTG9hZGVyOjpzZXRJbWFn
ZShDYWNoZWRJbWFnZSogCiAgICAgQ2FjaGVkSW1hZ2UqIG9sZEltYWdlID0gbV9pbWFnZS5nZXQo
KTsKICAgICBpZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKICAgICAgICAgbV9pbWFnZSA9IG5l
d0ltYWdlOwotICAgICAgICBpZiAoIW1fZmlyZWRCZWZvcmVMb2FkKSB7CisgICAgICAgIGlmICht
X2V4cGVjdGluZ0JlZm9yZUxvYWQpIHsKICAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRl
cigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICAgICAgbV9maXJlZEJlZm9yZUxvYWQgPSB0
cnVlOworICAgICAgICAgICAgbV9leHBlY3RpbmdCZWZvcmVMb2FkID0gZmFsc2U7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKCFtX2ZpcmVkTG9hZCkgeworICAgICAgICBpZiAobV9leHBlY3RpbmdM
b2FkKSB7CiAgICAgICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
LSAgICAgICAgICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZXhwZWN0aW5n
TG9hZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIG1faW1hZ2VDb21wbGV0ZSA9IHRydWU7
CiAgICAgICAgIGlmIChuZXdJbWFnZSkKQEAgLTE3NywxNCArMTc3LDE0IEBAIHZvaWQgSW1hZ2VM
b2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAKICAgICBDYWNoZWRJbWFnZSogb2xkSW1h
Z2UgPSBtX2ltYWdlLmdldCgpOwogICAgIGlmIChuZXdJbWFnZSAhPSBvbGRJbWFnZSkgewotICAg
ICAgICBpZiAoIW1fZmlyZWRCZWZvcmVMb2FkKQorICAgICAgICBpZiAobV9leHBlY3RpbmdCZWZv
cmVMb2FkKQogICAgICAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQo
dGhpcyk7Ci0gICAgICAgIGlmICghbV9maXJlZExvYWQpCisgICAgICAgIGlmIChtX2V4cGVjdGlu
Z0xvYWQpCiAgICAgICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
IAogICAgICAgICBtX2ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1fZmlyZWRCZWZvcmVMb2Fk
ID0gIW5ld0ltYWdlOwotICAgICAgICBtX2ZpcmVkTG9hZCA9ICFuZXdJbWFnZTsKKyAgICAgICAg
bV9leHBlY3RpbmdCZWZvcmVMb2FkID0gbmV3SW1hZ2U7CisgICAgICAgIG1fZXhwZWN0aW5nTG9h
ZCA9IG5ld0ltYWdlOwogICAgICAgICBtX2ltYWdlQ29tcGxldGUgPSAhbmV3SW1hZ2U7CiAKICAg
ICAgICAgaWYgKG5ld0ltYWdlKSB7CkBAIC0yMTQsMTAgKzIxNCwxMCBAQCB2b2lkIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgQVNTRVJUKG1fZmFpbGVkTG9hZFVSTC5p
c0VtcHR5KCkpOwogCiAgICAgbV9pbWFnZUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBpZiAoaGF2ZUZp
cmVkQmVmb3JlTG9hZEV2ZW50KCkpCisgICAgaWYgKCFleHBlY3RpbmdCZWZvcmVMb2FkRXZlbnQo
KSkKICAgICAgICAgdXBkYXRlUmVuZGVyZXIoKTsKIAotICAgIGlmIChtX2ZpcmVkTG9hZCkKKyAg
ICBpZiAoIW1fZXhwZWN0aW5nTG9hZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbG9hZEV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CkBAIC0yNjMsMTMgKzI2MywxMyBAQCB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigpCiAKIHZvaWQgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpCiB7Ci0gICAgaWYgKG1fZmlyZWRCZWZvcmVM
b2FkKQorICAgIGlmICghbV9leHBlY3RpbmdCZWZvcmVMb2FkKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2ltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2ZpcmVkQmVmb3Jl
TG9hZCA9IHRydWU7CisgICAgbV9leHBlY3RpbmdCZWZvcmVMb2FkID0gZmFsc2U7CiAgICAgaWYg
KG1fZWxlbWVudC0+ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV9pbWFnZS0+dXJsKCkpKSB7CiAg
ICAgICAgIHVwZGF0ZVJlbmRlcmVyKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NiwxMyArMjg2
LDEzIEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUwKIAogdm9pZCBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50KCkKIHsKLSAgICBpZiAobV9maXJl
ZExvYWQpCisgICAgaWYgKCFtX2V4cGVjdGluZ0xvYWQpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1faW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZWxlbWVudC0+ZG9jdW1l
bnQoKS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZmlyZWRMb2FkID0gdHJ1
ZTsKKyAgICBtX2V4cGVjdGluZ0xvYWQgPSBmYWxzZTsKICAgICBkaXNwYXRjaExvYWRFdmVudCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDczOTI0KQorKysgV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldExvYWRNYW51YWxseShib29sIGxvYWRNYW51YWxseSkgeyBt
X2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsgfQogCi0gICAgYm9vbCBoYXZlRmlyZWRCZWZv
cmVMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpcmVkQmVmb3JlTG9hZDsgfQotICAgIGJv
b2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJlZExvYWQ7IH0KKyAg
ICBib29sIGV4cGVjdGluZ0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0
aW5nQmVmb3JlTG9hZDsgfQorICAgIGJvb2wgZXhwZWN0aW5nTG9hZEV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBlY3RpbmdMb2FkOyB9CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRp
bmdCZWZvcmVMb2FkRXZlbnRzKCk7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9h
ZEV2ZW50cygpOwpAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fZWxl
bWVudDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9pbWFnZTsKICAg
ICBBdG9taWNTdHJpbmcgbV9mYWlsZWRMb2FkVVJMOwotICAgIGJvb2wgbV9maXJlZEJlZm9yZUxv
YWQgOiAxOwotICAgIGJvb2wgbV9maXJlZExvYWQgOiAxOworICAgIGJvb2wgbV9leHBlY3RpbmdC
ZWZvcmVMb2FkIDogMTsKKyAgICBib29sIG1fZXhwZWN0aW5nTG9hZCA6IDE7CiAgICAgYm9vbCBt
X2ltYWdlQ29tcGxldGUgOiAxOwogICAgIGJvb2wgbV9sb2FkTWFudWFsbHkgOiAxOwogfTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzM5MjQpCisrKyBXZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDcgQEAg
UmVuZGVyT2JqZWN0KiBTVkdJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbgogCiBib29sIFNWR0ltYWdl
RWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKLSAgICByZXR1cm4gIWV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSB8fCBtX2ltYWdlTG9hZGVyLmhhdmVG
aXJlZExvYWRFdmVudCgpOworICAgIHJldHVybiAhZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJh
c2VWYWx1ZSgpIHx8ICFtX2ltYWdlTG9hZGVyLmV4cGVjdGluZ0xvYWRFdmVudCgpOwogfQogCiB2
b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw4IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgLy8gSGFuZGxlIGR5bmFtaWMgdXBkYXRlcyBvZiB0
aGUgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnIGF0dHJpYnV0ZS4gT25seSBwb3NzaWJsZSBj
YXNlOiBjaGFuZ2luZyBmcm9tICd0cnVlJyB0byAnZmFsc2UnCiAgICAgICAgIC8vIGNhdXNlcyBh
biBpbW1lZGlhdGUgZGlzcGF0Y2ggb2YgdGhlIFNWR0xvYWQgZXZlbnQuIElmIHRoZSBhdHRyaWJ1
dGUgdmFsdWUgd2FzICdmYWxzZScgYmVmb3JlIGluc2VydGluZyB0aGUgc2NyaXB0IGVsZW1lbnQK
ICAgICAgICAgLy8gaW4gdGhlIGRvY3VtZW50LCB0aGUgU1ZHTG9hZCBldmVudCBoYXMgYWxyZWFk
eSBiZWVuIGRpc3BhdGNoZWQuCi0gICAgICAgIGlmICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEJhc2VWYWx1ZSgpICYmICFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiAhd2FzSW5zZXJ0ZWRCeVBh
cnNlcigpKSB7Ci0gICAgICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7CisgICAg
ICAgIGlmICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpICYmIGV4cGVjdGlu
Z0xvYWRFdmVudCgpICYmICF3YXNJbnNlcnRlZEJ5UGFyc2VyKCkpIHsKKyAgICAgICAgICAgIHNl
dEV4cGVjdGluZ0xvYWRFdmVudChmYWxzZSk7CiAgICAgICAgICAgICBBU1NFUlQoaGF2ZUxvYWRl
ZFJlcXVpcmVkUmVzb3VyY2VzKCkpOwogCiAgICAgICAgICAgICBzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZSgpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW0KIAogICAgIC8vIEV2ZW50dWFsbHkgc2VuZCBTVkdMb2FkIGV2ZW50IG5v
dyBmb3IgdGhlIGR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdCBlbGVtZW50CiAgICAgaWYgKCFl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKCkpIHsKLSAgICAgICAgc2V0SGF2ZUZp
cmVkTG9hZEV2ZW50KHRydWUpOworICAgICAgICBzZXRFeHBlY3RpbmdMb2FkRXZlbnQoZmFsc2Up
OwogICAgICAgICBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOwogICAgIH0KIH0KQEAgLTEz
Niw3ICsxMzYsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsCiAK
ICAgICAvLyBBIFNWR0xvYWQgZXZlbnQgaGFzIGJlZW4gZmlyZWQgYnkgU1ZHRWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuLgogICAgIGlmICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJh
c2VWYWx1ZSgpKQotICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7CisgICAgICAg
IHNldEV4cGVjdGluZ0xvYWRFdmVudChmYWxzZSk7CiB9CiAKIFN0cmluZyBTVkdTY3JpcHRFbGVt
ZW50Ojp0eXBlKCkgY29uc3QKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0CiAKIGJvb2wgU1ZHU2NyaXB0RWxlbWVudDo6aGF2ZUxvYWRl
ZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKLSAgICByZXR1cm4gIWV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRCYXNlVmFsdWUoKSB8fCBoYXZlRmlyZWRMb2FkRXZlbnQoKTsKKyAgICByZXR1cm4gIWV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSB8fCAhZXhwZWN0aW5nTG9hZEV2ZW50
KCk7CiB9CiAKIFN0cmluZyBTVkdTY3JpcHRFbGVtZW50Ojpzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0CkBAIC0yMDYsOCArMjA2LDggQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudAogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKTsKIAogICAgIGlmICh3YXNJbnNlcnRlZEJ5UGFy
c2VyKCkpCi0gICAgICAgIEFTU0VSVChleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICE9IGhhdmVG
aXJlZExvYWRFdmVudCgpKTsKLSAgICBlbHNlIGlmIChoYXZlRmlyZWRMb2FkRXZlbnQoKSkgewor
ICAgICAgICBBU1NFUlQoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9PSBleHBlY3RpbmdMb2Fk
RXZlbnQoKSk7CisgICAgZWxzZSBpZiAoIWV4cGVjdGluZ0xvYWRFdmVudCgpKSB7CiAgICAgICAg
IC8vIElmIHdlJ3ZlIGFscmVhZHkgZmlyZWQgYW4gbG9hZCBldmVudCBhbmQgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCBpcyBzZXQgdG8gJ3RydWUnCiAgICAgICAgIC8vIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgaGFzIGJlZW4gbW9kaWZpZWQgd2hpbGUgbG9hZGluZyB0aGUgPHNjcmlwdD4u
IERvbid0IGRpc3BhdGNoIHR3aWNlLgogICAgICAgICBpZiAoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKQEAgLTIxOSwxMCArMjE5LDEwIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0
Y2hMb2FkRXZlbnQKICAgICAvLyBTVkcgZmlyZXMgdGhlIFNWR0xvYWQgZXZlbnQgaW1tZWRpYXRl
bHkgYWZ0ZXIgcGFyc2luZyB0aGUgPHNjcmlwdD4gZWxlbWVudCwgaWYgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAogICAgIC8vIGlzIHNldCB0byAnZmFsc2UnLCBvdGhlcndoaXNlIGl0IGRpc3Bh
dGNoZXMgdGhlICdTVkdMb2FkJyBldmVudCBqdXN0IGFmdGVyIGxvYWRpbmcgdGhlIHJlbW90ZSBy
ZXNvdXJjZS4KICAgICBpZiAoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgewotICAgICAgICBB
U1NFUlQoIWhhdmVGaXJlZExvYWRFdmVudCgpKTsKKyAgICAgICAgQVNTRVJUKGV4cGVjdGluZ0xv
YWRFdmVudCgpKTsKIAogICAgICAgICAvLyBEaXNwYXRjaCBTVkdMb2FkIGV2ZW50Ci0gICAgICAg
IHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKKyAgICAgICAgc2V0RXhwZWN0aW5nTG9hZEV2
ZW50KGZhbHNlKTsKICAgICAgICAgQVNTRVJUKGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygp
KTsKIAogICAgICAgICBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZSgpOwpJbmRleDogV2ViQ29y
ZS93bWwvV01MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9XTUxJ
bWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MzkyNCkKKysrIFdlYkNvcmUvd21sL1dNTEltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXTUxJbWFn
ZUVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgV01MRWxlbWVudDo6YXR0YWNoKCk7CiAKLSAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkgJiYgbV9pbWFnZUxvYWRlci5o
YXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSkgeworICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzSW1hZ2UoKSAmJiAhbV9pbWFnZUxvYWRlci5leHBlY3RpbmdCZWZvcmVMb2FkRXZl
bnQoKSkgewogICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VPYmogPSB0b1JlbmRlckltYWdlKHJl
bmRlcmVyKCkpOwogICAgICAgICBSZW5kZXJJbWFnZVJlc291cmNlKiByZW5kZXJJbWFnZVJlc291
cmNlID0gaW1hZ2VPYmotPmltYWdlUmVzb3VyY2UoKTsKICAgICAgICAgaWYgKHJlbmRlckltYWdl
UmVzb3VyY2UtPmhhc0ltYWdlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>76670</attachid>
            <date>2010-12-15 11:07:39 -0800</date>
            <delta_ts>2010-12-15 11:07:39 -0800</delta_ts>
            <desc>SVG no subresources test</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>152</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAg
MzAwIiB2ZXJzaW9uPSIxLjEiPgo8c2NyaXB0IG9ubG9hZD0iYWxlcnQoJ2xvYWQnKSIgb25lcnJv
cj0iYWxlcnQoJ2Vycm9yJykiPiAKPC9zY3JpcHQ+Cjwvc3ZnPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>