<?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>60137</bug_id>
          
          <creation_ts>2011-05-03 20:55:36 -0700</creation_ts>
          <short_desc>Mismatched multiple box-shadows do not transition as expected</short_desc>
          <delta_ts>2011-05-12 11:10:22 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>abarth</cc>
    
    <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>397677</commentid>
    <comment_count>0</comment_count>
      <attachid>92188</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-03 20:55:36 -0700</bug_when>
    <thetext>Created attachment 92188
Testcase

A transition from one inset box-shadow to two shadows, one inset and one outset, doesn&apos;t work as expected. See testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397678</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-03 20:56:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/9311120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397679</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-03 20:56:17 -0700</bug_when>
    <thetext>The issue here is that shadows are processed in reverse order, and the last shadows have different types in the testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397700</commentid>
    <comment_count>3</comment_count>
      <attachid>92193</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-03 22:33:03 -0700</bug_when>
    <thetext>Created attachment 92193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397759</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-05-04 02:38:25 -0700</bug_when>
    <thetext>Attachment 92193 did not build on qt:
Build output: http://queues.webkit.org/results/8551434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398388</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-04 16:33:25 -0700</bug_when>
    <thetext>Attachment 92193 did not pass chromium-ews:
Output: http://queues.webkit.org/results/8567003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402660</commentid>
    <comment_count>6</comment_count>
      <attachid>93245</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-11 22:18:22 -0700</bug_when>
    <thetext>Created attachment 93245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402681</commentid>
    <comment_count>7</comment_count>
      <attachid>93245</attachid>
    <who name="">mitz</who>
    <bug_when>2011-05-11 22:37:28 -0700</bug_when>
    <thetext>Comment on attachment 93245
Patch

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

r+ but please consider addressing at least some of the comments

&gt; Source/WebCore/page/animation/AnimationBase.cpp:330
&gt; +static inline int shadowListLength(const ShadowData* shadow)

Why not size_t?

&gt; Source/WebCore/page/animation/AnimationBase.cpp:394
&gt; +        if (fromLength == toLength || ((!fromLength || fromLength == 1) &amp;&amp; (!toLength || toLength == 1))) {

If you make shadowListLength return an unsigned type, you will be able to write “(!fromLength || fromLength == 1)” as “fromLength &lt;= 1”

&gt; Source/WebCore/page/animation/AnimationBase.cpp:444
&gt; +        Vector&lt;const ShadowData*&gt; fromShadows(fromLength);
&gt; +        Vector&lt;const ShadowData*&gt; toShadows(toLength);
&gt; +        
&gt; +        while (shadowA) {
&gt; +            fromShadows.prepend(shadowA);
&gt; +            shadowA = shadowA-&gt;next();
&gt; +        }
&gt; +
&gt; +        while (shadowB) {
&gt; +            toShadows.prepend(shadowB);
&gt; +            shadowB = shadowB-&gt;next();
&gt; +        }

This is an expensive way of doing things. You initialize fromShadows with fromLength 0 ShadowData pointers in it, then you prepend another fromLength pointers to that. You should do something like
for (size_t i = fromLength; i &gt;= 0; --i) {
    fromShadows[i - 1] = shadowA;
    shadowA = shadowA-&gt;next();
}

And it would be better to give these vectors inline capacity to avoid heap allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402896</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-12 09:38:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402976</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-12 11:10:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86351 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
svg/custom/fill-opacity-update.svg</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>92188</attachid>
            <date>2011-05-03 20:55:36 -0700</date>
            <delta_ts>2011-05-03 20:55:36 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>shadow-test.html</filename>
            <type>text/html</type>
            <size>302</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PHN0eWxlPgpkaXYgewogICAgd2lkdGg6IDIyMHB4OwogICAgaGVpZ2h0OiAxMDBweDsKICAgIG1h
cmdpbjogMTBweDsKICAgIGJhY2tncm91bmQtY29sb3I6I0RERDsKICAgIGJvcmRlcjogMXB4IHNv
bGlkICM4NTdBNkQ7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMXM7CiAgICBi
b3gtc2hhZG93OiBpbnNldCA0cHggNHB4IDRweCBncmF5Owp9CgpkaXY6aG92ZXIgewogICAgYm94
LXNoYWRvdzogaW5zZXQgNHB4IDRweCA0cHggZ3JheSwgNHB4IDRweCA2cHggYmxhY2s7Cn0KPC9z
dHlsZT4KPGRpdj48L2Rpdj4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92193</attachid>
            <date>2011-05-03 22:33:03 -0700</date>
            <delta_ts>2011-05-11 22:18:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60137-20110503223302.patch</filename>
            <type>text/plain</type>
            <size>11797</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU3MTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YTI5MzBiMWM1ZTc5Mjk1N2NhYTRk
ODdmZWMwNzhlNzQyMTUxZWU0Li5hZjk1ZjA2NzEwMmQ1NTVhNjYxYzUwYzU3YjhkMjZiNjc3YzEy
ZTBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDUtMDMgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWlzbWF0Y2hlZCBtdWx0aXBsZSBib3gtc2hhZG93cyBkbyBub3QgdHJh
bnNpdGlvbiBhcyBleHBlY3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjAxMzcKKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0IGZvciBhbmltYXRp
bmcgYmV0d2VlbiBtaXNtYXRjaGVkIGxpc3RzIG9mIHNoYWRvd3MuCisgICAgICAgIFVwZGF0ZSB0
aGUgdGVzdCBhbmQgcmVzdWx0IGZvciBtdWx0aXBsZS1zaGFkb3ctdHJhbnNpdGlvbi5odG1sLAor
ICAgICAgICBhcyB0aGlzIGNoYW5nZSBmaXhlcyBpdHMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB0
cmFuc2l0aW9ucy9taXNtYXRjaGVkLXNoYWRvdy10cmFuc2l0aW9ucy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL21pc21hdGNoZWQtc2hhZG93LXRyYW5zaXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL211bHRpcGxlLXNoYWRvdy10cmFu
c2l0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hh
ZG93LXRyYW5zaXRpb25zLmh0bWw6CisKIDIwMTEtMDUtMDMgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZXhwZWN0YXRpb25zIHRyaWFn
ZSBhbmQgbmV3IGJhc2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L21pc21hdGNoZWQtc2hhZG93LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RyYW5zaXRpb25zL21pc21hdGNoZWQtc2hhZG93LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ODcyZDNjOTdhMzdhMjZiMGY2ZDY0OTAyODYwYzBlOGUwZjExY2Y4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvbWlzbWF0Y2hlZC1zaGFkb3ct
dHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorQk9YCitQQVNTIC0gImJv
eC1zaGFkb3ciIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTUsMTUsNSw1CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRp
b25zL21pc21hdGNoZWQtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9taXNtYXRjaGVkLXNoYWRvdy10cmFuc2l0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4
N2QxMGYxMjA4YTgzNWNkMjVmZTkwMDlkNDUzN2Q0YTA4YzY3MDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9taXNtYXRjaGVkLXNoYWRvdy10cmFuc2l0aW9ucy5o
dG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRT4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0
eWxlPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgIG1hcmdpbjogNTBweDsKKyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
ICAgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgcGFkZGluZzogMjBweDsKKyAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVy
YXRpb246IDFzOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGlu
ZWFyOworICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiBib3gtc2hhZG93OworICAg
IH0KKyAgICAKKyAgICAjYm94IHsKKyAgICAgIGJveC1zaGFkb3c6IGluc2V0IDEwcHggMjBweCA0
cHggZ3JheTsKKyAgICB9CisgICAgCisgICAgI2JveC5maW5hbCB7CisgICAgICBib3gtc2hhZG93
OiBpbnNldCAyMHB4IDEwcHggNHB4IGdyYXksIDEwcHggMTBweCA2cHggYmxhY2s7CisgICAgfQor
CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhl
bHBlcnMuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisK
KyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFt0aW1lLCBlbGVtZW50LWlk
LCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KKyAgICAgIFswLjUsICdib3gn
LCAnYm94LXNoYWRvdycsIFsxNSwgMTUsIDUsIDVdLCA0XSwKKyAgICBdOworICAKKyAgICBmdW5j
dGlvbiBzZXR1cFRlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdi
b3gnKS5jbGFzc05hbWUgPSAnYm94IGZpbmFsJzsKKyAgICB9CisgIAorICAgIHJ1blRyYW5zaXRp
b25UZXN0KGV4cGVjdGVkVmFsdWVzLCBzZXR1cFRlc3QsIHVzZVBhdXNlQVBJKTsKKyAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworICA8ZGl2IGlkPSJib3giIGNsYXNzPSJib3giPkJPWDwv
ZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tdWx0aXBsZS1zaGFkb3ctdHJhbnNpdGlv
bnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93
LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA3ZTFlZmJhMjU1ZGRmOGU2MDgwODBhOWYw
ZTc3MmYxMDFkNDNlMWUzLi4xZjljZjhjMzJmNWI2MDZlODgyMWM2NjM4MzY0OWY2NjgwMzQ3Mjlm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9tdWx0aXBsZS1zaGFkb3ctdHJh
bnNpdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL211bHRp
cGxlLXNoYWRvdy10cmFuc2l0aW9ucy1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw2IEBAIEJPWAog
Qk9YCiBCT1gKIFBBU1MgLSAiLXdlYmtpdC1ib3gtc2hhZG93IiBwcm9wZXJ0eSBmb3IgImJveCIg
ZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAsMCwwLDAKLVBBU1MgLSAi
LXdlYmtpdC1ib3gtc2hhZG93IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMC41cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLC0xMCwwLDAKLVBBU1MgLSAiLXdlYmtpdC1ib3gtc2hh
ZG93IiBwcm9wZXJ0eSBmb3IgImJveDMiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNs
b3NlIHRvOiAwLC0xMCwwLDIwCitQQVNTIC0gIi13ZWJraXQtYm94LXNoYWRvdyIgcHJvcGVydHkg
Zm9yICJib3gyIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMCwtMjAs
MCwxMAorUEFTUyAtICItd2Via2l0LWJveC1zaGFkb3ciIHByb3BlcnR5IGZvciAiYm94MyIgZWxl
bWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAsMCwwLDEwCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL211bHRpcGxlLXNoYWRvdy10cmFuc2l0aW9ucy5o
dG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25z
Lmh0bWwKaW5kZXggNGViZjc4ODkzNDM1NjU5ODdjMzIyMTJlYmY3MDdhN2M0OTRmOTlkNS4uNGE5
ZDRlYzU2NGYzM2M1NTQ3MzMxN2UxMThmNGY5MDdlY2U3NTA4OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwK
QEAgLTU0LDggKzU0LDggQEAKICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKICAgICAgIC8v
IFt0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0K
ICAgICAgIFswLjUsICdib3gnLCAnLXdlYmtpdC1ib3gtc2hhZG93JywgWzAsIDAsIDAsIDBdLCA0
XSwKLSAgICAgIFswLjUsICdib3gyJywgJy13ZWJraXQtYm94LXNoYWRvdycsIFswLCAtMTAsIDAs
IDBdLCA0XSwKLSAgICAgIFswLjUsICdib3gzJywgJy13ZWJraXQtYm94LXNoYWRvdycsIFswLCAt
MTAsIDAsIDIwXSwgNF0sCisgICAgICBbMC41LCAnYm94MicsICctd2Via2l0LWJveC1zaGFkb3cn
LCBbMCwgLTIwLCAwLCAxMF0sIDRdLAorICAgICAgWzAuNSwgJ2JveDMnLCAnLXdlYmtpdC1ib3gt
c2hhZG93JywgWzAsIDAsIDAsIDEwXSwgNF0sCiAgICAgXTsKICAgCiAgICAgZnVuY3Rpb24gc2V0
dXBUZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YzY4MWRlZDRlN2VmYmZmODI0N2JhYTZjNjVlNDU5ZWI2
OWIwMjU1Li41ZjY3MjBhNWVlN2UzYzdiZmM2ZjZhOTdkZDBhMWNjYzJmMGM1ODFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWlzbWF0Y2hlZCBtdWx0aXBsZSBib3gtc2hhZG93cyBkbyBub3QgdHJhbnNpdGlv
biBhcyBleHBlY3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjAxMzcKKyAgICAgICAgCisgICAgICAgIFdoZW4gYW5pbWF0aW5nIGJldHdlZW4gdHdv
IHNldHMgb2Ygc2hhZG93cyBvZiBkaWZmZXJlbnQgbGVuZ3Rocywgd2UgbmVlZAorICAgICAgICB0
byB3YWxrIHRoZSBTaGFkb3dEYXRhIGxpc3QgYmFja3dhcmRzLCBzaW5jZSBpdCBzdG9yZXMgdGhl
IHNoYWRvd3MgaW4KKyAgICAgICAgcmV2ZXJzZSBvcmRlciByZWxhdGl2ZSB0byB0aGUgQ1NTIChz
byB0aGF0IHBhaW50aW5nIGlzIGJhY2stdG8tZnJvbnQpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBwcm9ncmVzc2VzIHRoZSBiZWhhdmlvciBvZiB0aGUgdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hh
ZG93LXRyYW5zaXRpb25zLmh0bWwKKyAgICAgICAgdGVzdCwgd2hpY2ggaXMgZ2l2ZW4gbmV3IGV4
cGVjdGVkIHJlc3VsdHMuCisKKyAgICAgICAgVGVzdDogdHJhbnNpdGlvbnMvbWlzbWF0Y2hlZC1z
aGFkb3ctdHJhbnNpdGlvbnMuaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFkb3dMaXN0TGVuZ3RoKTogVXRpbGl0
eSB0byB3YWxrIHRoZSBsaXN0IG9mIFNoYWRvd0RhdGEgYW5kIGNvdW50IHRoZSBudW1iZXIKKyAg
ICAgICAgb2Ygc2hhZG93cy4KKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTog
UmV0dXJuIGEgU2hhZG93RGF0YSogdGhhdCBpcyB1c2VmdWwgYXMgYSBibGVuZGluZyB0YXJnZXQs
CisgICAgICAgIGJhc2VkIG9uIHRoZSBzaGFkb3cgdHlwZSwgYW5kIHdoZXRoZXIgaXQncyBhIC13
ZWJraXQtYm94LXNoYWRvdy4KKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRv
dzo6YmxlbmQpOiBDYWxsIG9uZSBvZiB0aGUgc3BlY2lhbGl6ZWQgYmxlbmQgbWV0aG9kcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmRTaW1wbGVPck1hdGNo
ZWRTaGFkb3dMaXN0cyk6IEZhc3QgcGF0aAorICAgICAgICBmb3Igc2hhZG93IGJsZW5kaW5nLCB3
aGVuIHRoZSBsaXN0IGxlbmd0aHMgbWF0Y2gsIG9yIGJvdGggYXJlIHNpbmdsZSBvciBudWxsIHNo
YWRvd3MuCisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTaGFkb3c6OmJsZW5kTWlz
bWF0Y2hlZFNoYWRvd0xpc3RzKTogU2xvd2VyIHBhdGggdGhhdCBidWlsZHMKKyAgICAgICAgdmVj
dG9ycyBmb3IgZWFjaCBsaXN0IHRvIHJldmVyc2UgdGhlbS4KKwogMjAxMS0wNS0wMyAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAppbmRleCAwMGExNWU4MmY4M2MyZWQ1ODg1OWU4NDIwY2UyMmE3Nzk2ZDE4NWExLi5hNDAxNDEy
ZTQxNTk2YzE1MmVhZjdmNDM4NjM3YjZhZThjODc3YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtMzI3LDYgKzMyNywzMSBAQCBw
dWJsaWM6CiB9OwogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorc3Rh
dGljIGlubGluZSBpbnQgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cp
Cit7CisgICAgaW50IGNvdW50OworICAgIGZvciAoY291bnQgPSAwOyBzaGFkb3c7IHNoYWRvdyA9
IHNoYWRvdy0+bmV4dCgpKQorICAgICAgICArK2NvdW50OworICAgIHJldHVybiBjb3VudDsKK30K
Kworc3RhdGljIGlubGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25z
dCBTaGFkb3dEYXRhKiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEs
ICgwLCAwLCAwLCAwLCBOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFNoYWRvd0RhdGEsIGRlZmF1bHRJbnNldFNoYWRvd0RhdGEsICgw
LCAwLCAwLCAwLCBJbnNldCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudCkpOworCisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSwg
KDAsIDAsIDAsIDAsIE5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTaGFkb3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dE
YXRhLCAoMCwgMCwgMCwgMCwgSW5zZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkpOworCisg
ICAgaWYgKHNyY1NoYWRvdykKKyAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKKworICAgIGlmIChv
dGhlclNoYWRvdy0+c3R5bGUoKSA9PSBJbnNldCkKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEg
OiAmZGVmYXVsdEluc2V0U2hhZG93RGF0YTsKKyAgICAKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ct
PmlzV2Via2l0Qm94U2hhZG93KCkgPyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVm
YXVsdFNoYWRvd0RhdGE7Cit9CisKIGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1Ymxp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKIHB1YmxpYzoKICAgICBQcm9wZXJ0eVdyYXBwZXJTaGFk
b3coaW50IHByb3AsIGNvbnN0IFNoYWRvd0RhdGEqIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBj
b25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFBhc3NPd25QdHI8U2hhZG93RGF0YT4s
IGJvb2wpKQpAQCAtMzYyLDE1ICszODcsMjcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93QSA9IChhLT4qbV9nZXR0ZXIpKCk7CiAgICAgICAgIGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvd0IgPSAoYi0+Km1fZ2V0dGVyKSgpOwotICAgICAgICBTaGFkb3dE
YXRhIGRlZmF1bHRTaGFkb3dEYXRhKDAsIDAsIDAsIDAsIE5vcm1hbCwgcHJvcGVydHkoKSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAg
U2hhZG93RGF0YSBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKDAsIDAsIDAsIDAsIEluc2V0LCBwcm9w
ZXJ0eSgpID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBDb2xvcjo6dHJhbnNwYXJlbnQp
OwogCisgICAgICAgIGludCBmcm9tTGVuZ3RoID0gc2hhZG93TGlzdExlbmd0aChzaGFkb3dBKTsK
KyAgICAgICAgaW50IHRvTGVuZ3RoID0gc2hhZG93TGlzdExlbmd0aChzaGFkb3dCKTsKKworICAg
ICAgICBpZiAoZnJvbUxlbmd0aCA9PSB0b0xlbmd0aCB8fCAoIWZyb21MZW5ndGggfHwgZnJvbUxl
bmd0aCA9PSAxKSAmJiAoIXRvTGVuZ3RoIHx8IHRvTGVuZ3RoID09IDEpKSB7CisgICAgICAgICAg
ICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kU2ltcGxlT3JNYXRjaGVkU2hhZG93TGlzdHMoYW5pbSwg
cHJvZ3Jlc3MsIHNoYWRvd0EsIHNoYWRvd0IpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kTWlzbWF0Y2hlZFNo
YWRvd0xpc3RzKGFuaW0sIHByb2dyZXNzLCBzaGFkb3dBLCBzaGFkb3dCLCBmcm9tTGVuZ3RoLCB0
b0xlbmd0aCksIGZhbHNlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUGFzc093blB0cjxTaGFk
b3dEYXRhKj4gYmxlbmRTaW1wbGVPck1hdGNoZWRTaGFkb3dMaXN0cyhjb25zdCBBbmltYXRpb25C
YXNlKiBhbmltLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0EsIGNv
bnN0IFNoYWRvd0RhdGEqIHNoYWRvd0IpIGNvbnN0CisgICAgewogICAgICAgICBPd25QdHI8U2hh
ZG93RGF0YT4gbmV3U2hhZG93RGF0YTsKICAgICAgICAgU2hhZG93RGF0YSogbGFzdFNoYWRvdyA9
IDA7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoc2hhZG93QSB8fCBzaGFkb3dCKSB7Ci0gICAg
ICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFkb3cgPSBzaGFkb3dBID8gc2hhZG93QSA6
IChzaGFkb3dCLT5zdHlsZSgpID09IEluc2V0ID8gJmRlZmF1bHRJbnNldFNoYWRvd0RhdGEgOiAm
ZGVmYXVsdFNoYWRvd0RhdGEpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hh
ZG93ID0gc2hhZG93QiA/IHNoYWRvd0IgOiAoc2hhZG93QS0+c3R5bGUoKSA9PSBJbnNldCA/ICZk
ZWZhdWx0SW5zZXRTaGFkb3dEYXRhIDogJmRlZmF1bHRTaGFkb3dEYXRhKTsKKyAgICAgICAgICAg
IGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0Es
IHNoYWRvd0IpOworICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hh
ZG93Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CiAKICAgICAgICAgICAgIE93blB0cjxT
aGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0
U2hhZG93LCBwcm9ncmVzcyk7CiAgICAgICAgICAgICBTaGFkb3dEYXRhKiBibGVuZGVkU2hhZG93
UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKQEAgLTM4NiwxMCArNDIzLDQ1IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHNoYWRvd0IgPSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogMDsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShuZXdTaGFkb3dEYXRh
LnJlbGVhc2UoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gbmV3U2hhZG93RGF0YS5yZWxlYXNl
KCk7CisgICAgfQorCisgICAgUGFzc093blB0cjxTaGFkb3dEYXRhKj4gYmxlbmRNaXNtYXRjaGVk
U2hhZG93TGlzdHMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgZG91YmxlIHByb2dyZXNzLCBj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3dBLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dCLCBpbnQg
ZnJvbUxlbmd0aCwgaW50IHRvTGVuZ3RoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVGhlIHNo
YWRvd3MgaW4gU2hhZG93RGF0YSBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIsIHNvIHdoZW4g
YW5pbWF0aW5nIG1pc21hdGNoZWQgbGlzdHMsCisgICAgICAgIC8vIHJldmVyc2UgdGhlbSBhbmQg
bWF0Y2ggZnJvbSB0aGUgZW5kLgorICAgICAgICBWZWN0b3I8Y29uc3QgU2hhZG93RGF0YSo+IGZy
b21TaGFkb3dzKGZyb21MZW5ndGgpOworICAgICAgICBWZWN0b3I8Y29uc3QgU2hhZG93RGF0YSo+
IHRvU2hhZG93cyh0b0xlbmd0aCk7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoc2hhZG93QSkg
eworICAgICAgICAgICAgZnJvbVNoYWRvd3MucHJlcGVuZChzaGFkb3dBKTsKKyAgICAgICAgICAg
IHNoYWRvd0EgPSBzaGFkb3dBLT5uZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAo
c2hhZG93QikgeworICAgICAgICAgICAgdG9TaGFkb3dzLnByZXBlbmQoc2hhZG93Qik7CisgICAg
ICAgICAgICBzaGFkb3dCID0gc2hhZG93Qi0+bmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAg
T3duUHRyPFNoYWRvd0RhdGE+IG5ld1NoYWRvd0RhdGE7CisgICAgICAgIAorICAgICAgICBpbnQg
bWF4TGVuZ3RoID0gbWF4KGZyb21MZW5ndGgsIHRvTGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0
YSogZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiAwOworICAg
ICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogdG9TaGFkb3cgPSBpIDwgdG9MZW5ndGggPyB0b1No
YWRvd3NbaV0gOiAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRh
KiBzcmNTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7Cisg
ICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGlu
Zyh0b1NoYWRvdywgZnJvbVNoYWRvdyk7CisKKyAgICAgICAgICAgIE93blB0cjxTaGFkb3dEYXRh
PiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0U2hhZG93LCBw
cm9ncmVzcyk7CisgICAgICAgICAgICAvLyBJbnNlcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0
IHRvIHByZXNlcnZlIHRoZSBvcmRlci4KKyAgICAgICAgICAgIGJsZW5kZWRTaGFkb3ctPnNldE5l
eHQobmV3U2hhZG93RGF0YS5yZWxlYXNlKCkpOworICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9
IGJsZW5kZWRTaGFkb3cucmVsZWFzZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5l
d1NoYWRvd0RhdGEucmVsZWFzZSgpOwogICAgIH0KIAotcHJpdmF0ZToKICAgICBjb25zdCBTaGFk
b3dEYXRhKiAoUmVuZGVyU3R5bGU6OiptX2dldHRlcikoKSBjb25zdDsKICAgICB2b2lkIChSZW5k
ZXJTdHlsZTo6Km1fc2V0dGVyKShQYXNzT3duUHRyPFNoYWRvd0RhdGE+LCBib29sKTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93245</attachid>
            <date>2011-05-11 22:18:22 -0700</date>
            <delta_ts>2011-05-11 22:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60137-20110511221821.patch</filename>
            <type>text/plain</type>
            <size>11778</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYzMDYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMmE0NzU0NjlkYzA0Y2Y4MjVhNjhk
ZDZkNTNhN2FmZmE2ZjY2NDBiLi4xZmYzY2ZkZWVhODE4ZmU3YWMwZDQ4ZTM0ZGM5NGYxNzc0NDdl
ZmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDUtMTEgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWlzbWF0Y2hlZCBtdWx0aXBsZSBib3gtc2hhZG93cyBkbyBub3QgdHJh
bnNpdGlvbiBhcyBleHBlY3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjAxMzcKKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0IGZvciBhbmltYXRp
bmcgYmV0d2VlbiBtaXNtYXRjaGVkIGxpc3RzIG9mIHNoYWRvd3MuCisgICAgICAgIFVwZGF0ZSB0
aGUgdGVzdCBhbmQgcmVzdWx0IGZvciBtdWx0aXBsZS1zaGFkb3ctdHJhbnNpdGlvbi5odG1sLAor
ICAgICAgICBhcyB0aGlzIGNoYW5nZSBmaXhlcyBpdHMgYmVoYXZpb3IuCisKKyAgICAgICAgKiB0
cmFuc2l0aW9ucy9taXNtYXRjaGVkLXNoYWRvdy10cmFuc2l0aW9ucy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL21pc21hdGNoZWQtc2hhZG93LXRyYW5zaXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRpb25zL211bHRpcGxlLXNoYWRvdy10cmFu
c2l0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hh
ZG93LXRyYW5zaXRpb25zLmh0bWw6CisKIDIwMTEtMDUtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL21pc21hdGNoZWQtc2hhZG93LXRyYW5z
aXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL21pc21hdGNoZWQt
c2hhZG93LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODcyZDNjOTdhMzdh
MjZiMGY2ZDY0OTAyODYwYzBlOGUwZjExY2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdHJhbnNpdGlvbnMvbWlzbWF0Y2hlZC1zaGFkb3ctdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorQk9YCitQQVNTIC0gImJveC1zaGFkb3ciIHByb3BlcnR5IGZvciAi
Ym94IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUsMTUsNSw1CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL21pc21hdGNoZWQtc2hhZG93LXRy
YW5zaXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9taXNtYXRjaGVkLXNoYWRv
dy10cmFuc2l0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4N2QxMGYxMjA4YTgzNWNkMjVmZTkwMDlk
NDUzN2Q0YTA4YzY3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9taXNtYXRjaGVkLXNoYWRvdy10cmFuc2l0aW9ucy5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwh
RE9DVFlQRT4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC5ib3ggeworICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIG1hcmdpbjogNTBweDsK
KyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgdGV4dC1hbGlnbjogY2VudGVy
OworICAgICAgcGFkZGluZzogMjBweDsKKyAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl
YXQ7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzOworICAgICAgLXdlYmtp
dC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLXByb3BlcnR5OiBib3gtc2hhZG93OworICAgIH0KKyAgICAKKyAgICAjYm94IHsKKyAg
ICAgIGJveC1zaGFkb3c6IGluc2V0IDEwcHggMjBweCA0cHggZ3JheTsKKyAgICB9CisgICAgCisg
ICAgI2JveC5maW5hbCB7CisgICAgICBib3gtc2hhZG93OiBpbnNldCAyMHB4IDEwcHggNHB4IGdy
YXksIDEwcHggMTBweCA2cHggYmxhY2s7CisgICAgfQorCisgIDwvc3R5bGU+CisgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvdHJhbnNpdGlvbi10ZXN0LWhlbHBlcnMuanMiPjwvc2NyaXB0PgorICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVl
cyA9IFsKKyAgICAgIC8vIFt0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFs
dWUsIHRvbGVyYW5jZV0KKyAgICAgIFswLjUsICdib3gnLCAnYm94LXNoYWRvdycsIFsxNSwgMTUs
IDUsIDVdLCA0XSwKKyAgICBdOworICAKKyAgICBmdW5jdGlvbiBzZXR1cFRlc3QoKQorICAgIHsK
KyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKS5jbGFzc05hbWUgPSAnYm94IGZp
bmFsJzsKKyAgICB9CisgIAorICAgIHJ1blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBz
ZXR1cFRlc3QsIHVzZVBhdXNlQVBJKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
ICA8ZGl2IGlkPSJib3giIGNsYXNzPSJib3giPkJPWDwvZGl2PgorICA8ZGl2IGlkPSJyZXN1bHQi
PjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9tdWx0aXBsZS1zaGFkb3ctdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLWV4cGVjdGVkLnR4
dAppbmRleCA3ZTFlZmJhMjU1ZGRmOGU2MDgwODBhOWYwZTc3MmYxMDFkNDNlMWUzLi4xZjljZjhj
MzJmNWI2MDZlODgyMWM2NjM4MzY0OWY2NjgwMzQ3MjlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy90cmFuc2l0aW9ucy9tdWx0aXBsZS1zaGFkb3ctdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL211bHRpcGxlLXNoYWRvdy10cmFuc2l0aW9ucy1l
eHBlY3RlZC50eHQKQEAgLTIsNiArMiw2IEBAIEJPWAogQk9YCiBCT1gKIFBBU1MgLSAiLXdlYmtp
dC1ib3gtc2hhZG93IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21l
dGhpbmcgY2xvc2UgdG86IDAsMCwwLDAKLVBBU1MgLSAiLXdlYmtpdC1ib3gtc2hhZG93IiBwcm9w
ZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAw
LC0xMCwwLDAKLVBBU1MgLSAiLXdlYmtpdC1ib3gtc2hhZG93IiBwcm9wZXJ0eSBmb3IgImJveDMi
IGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLC0xMCwwLDIwCitQQVNT
IC0gIi13ZWJraXQtYm94LXNoYWRvdyIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDAu
NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMCwtMjAsMCwxMAorUEFTUyAtICItd2Via2l0LWJv
eC1zaGFkb3ciIHByb3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDAsMCwwLDEwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRp
b25zL211bHRpcGxlLXNoYWRvdy10cmFuc2l0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNp
dGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwKaW5kZXggNGViZjc4ODkzNDM1
NjU5ODdjMzIyMTJlYmY3MDdhN2M0OTRmOTlkNS4uNGE5ZDRlYzU2NGYzM2M1NTQ3MzMxN2UxMThm
NGY5MDdlY2U3NTA4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvbXVsdGlw
bGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMv
bXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwKQEAgLTU0LDggKzU0LDggQEAKICAgICBj
b25zdCBleHBlY3RlZFZhbHVlcyA9IFsKICAgICAgIC8vIFt0aW1lLCBlbGVtZW50LWlkLCBwcm9w
ZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVyYW5jZV0KICAgICAgIFswLjUsICdib3gnLCAnLXdl
YmtpdC1ib3gtc2hhZG93JywgWzAsIDAsIDAsIDBdLCA0XSwKLSAgICAgIFswLjUsICdib3gyJywg
Jy13ZWJraXQtYm94LXNoYWRvdycsIFswLCAtMTAsIDAsIDBdLCA0XSwKLSAgICAgIFswLjUsICdi
b3gzJywgJy13ZWJraXQtYm94LXNoYWRvdycsIFswLCAtMTAsIDAsIDIwXSwgNF0sCisgICAgICBb
MC41LCAnYm94MicsICctd2Via2l0LWJveC1zaGFkb3cnLCBbMCwgLTIwLCAwLCAxMF0sIDRdLAor
ICAgICAgWzAuNSwgJ2JveDMnLCAnLXdlYmtpdC1ib3gtc2hhZG93JywgWzAsIDAsIDAsIDEwXSwg
NF0sCiAgICAgXTsKICAgCiAgICAgZnVuY3Rpb24gc2V0dXBUZXN0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBk
Y2IwODE4MzY4ZDhiNjI3YmIxNDRjMzRjODFhZWE2MmRjNTY4NzNlLi40NjQ1MDUyNTE5N2M5Nzky
ZDIzMWZmYzhlZDAzYTg3YzI5YTE5NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTEtMDUtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlzbWF0Y2hlZCBtdWx0
aXBsZSBib3gtc2hhZG93cyBkbyBub3QgdHJhbnNpdGlvbiBhcyBleHBlY3RlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAxMzcKKyAgICAgICAgCisg
ICAgICAgIFdoZW4gYW5pbWF0aW5nIGJldHdlZW4gdHdvIHNldHMgb2Ygc2hhZG93cyBvZiBkaWZm
ZXJlbnQgbGVuZ3Rocywgd2UgbmVlZAorICAgICAgICB0byB3YWxrIHRoZSBTaGFkb3dEYXRhIGxp
c3QgYmFja3dhcmRzLCBzaW5jZSBpdCBzdG9yZXMgdGhlIHNoYWRvd3MgaW4KKyAgICAgICAgcmV2
ZXJzZSBvcmRlciByZWxhdGl2ZSB0byB0aGUgQ1NTIChzbyB0aGF0IHBhaW50aW5nIGlzIGJhY2st
dG8tZnJvbnQpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwcm9ncmVzc2VzIHRoZSBiZWhhdmlv
ciBvZiB0aGUgdHJhbnNpdGlvbnMvbXVsdGlwbGUtc2hhZG93LXRyYW5zaXRpb25zLmh0bWwKKyAg
ICAgICAgdGVzdCwgd2hpY2ggaXMgZ2l2ZW4gbmV3IGV4cGVjdGVkIHJlc3VsdHMuCisKKyAgICAg
ICAgVGVzdDogdHJhbnNpdGlvbnMvbWlzbWF0Y2hlZC1zaGFkb3ctdHJhbnNpdGlvbnMuaHRtbAor
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaGFkb3dMaXN0TGVuZ3RoKTogVXRpbGl0eSB0byB3YWxrIHRoZSBsaXN0IG9mIFNo
YWRvd0RhdGEgYW5kIGNvdW50IHRoZSBudW1iZXIKKyAgICAgICAgb2Ygc2hhZG93cy4KKyAgICAg
ICAgKFdlYkNvcmU6OnNoYWRvd0ZvckJsZW5kaW5nKTogUmV0dXJuIGEgU2hhZG93RGF0YSogdGhh
dCBpcyB1c2VmdWwgYXMgYSBibGVuZGluZyB0YXJnZXQsCisgICAgICAgIGJhc2VkIG9uIHRoZSBz
aGFkb3cgdHlwZSwgYW5kIHdoZXRoZXIgaXQncyBhIC13ZWJraXQtYm94LXNoYWRvdy4KKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmQpOiBDYWxsIG9uZSBvZiB0
aGUgc3BlY2lhbGl6ZWQgYmxlbmQgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5
V3JhcHBlclNoYWRvdzo6YmxlbmRTaW1wbGVPck1hdGNoZWRTaGFkb3dMaXN0cyk6IEZhc3QgcGF0
aAorICAgICAgICBmb3Igc2hhZG93IGJsZW5kaW5nLCB3aGVuIHRoZSBsaXN0IGxlbmd0aHMgbWF0
Y2gsIG9yIGJvdGggYXJlIHNpbmdsZSBvciBudWxsIHNoYWRvd3MuCisgICAgICAgIChXZWJDb3Jl
OjpQcm9wZXJ0eVdyYXBwZXJTaGFkb3c6OmJsZW5kTWlzbWF0Y2hlZFNoYWRvd0xpc3RzKTogU2xv
d2VyIHBhdGggdGhhdCBidWlsZHMKKyAgICAgICAgdmVjdG9ycyBmb3IgZWFjaCBsaXN0IHRvIHJl
dmVyc2UgdGhlbS4KKwogMjAxMS0wNS0xMSAgUm9iaW4gRHVubiAgPHJvYmluQGFsbGR1bm4uY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtldmluIE9sbGl2aWVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAwMGExNWU4MmY4M2My
ZWQ1ODg1OWU4NDIwY2UyMmE3Nzk2ZDE4NWExLi4zMWIxNjkzYzQ3ODliMTZhNGYwNjllN2U1YzA0
NGYwZTQ4M2U1YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25CYXNlLmNwcApAQCAtMzI3LDYgKzMyNywzMSBAQCBwdWJsaWM6CiB9OwogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorc3RhdGljIGlubGluZSBpbnQgc2hhZG93
TGlzdExlbmd0aChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCit7CisgICAgaW50IGNvdW50Owor
ICAgIGZvciAoY291bnQgPSAwOyBzaGFkb3c7IHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpKQorICAg
ICAgICArK2NvdW50OworICAgIHJldHVybiBjb3VudDsKK30KKworc3RhdGljIGlubGluZSBjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBzcmNTaGFk
b3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU2hhZG93RGF0YSwgZGVmYXVsdFNoYWRvd0RhdGEsICgwLCAwLCAwLCAwLCBOb3JtYWws
IGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnQpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNo
YWRvd0RhdGEsIGRlZmF1bHRJbnNldFNoYWRvd0RhdGEsICgwLCAwLCAwLCAwLCBJbnNldCwgZmFs
c2UsIENvbG9yOjp0cmFuc3BhcmVudCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaGFk
b3dEYXRhLCBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YSwgKDAsIDAsIDAsIDAsIE5vcm1hbCwg
dHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaGFk
b3dEYXRhLCBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLCAoMCwgMCwgMCwgMCwgSW5z
ZXQsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudCkpOworCisgICAgaWYgKHNyY1NoYWRvdykKKyAg
ICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKKworICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUoKSA9
PSBJbnNldCkKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygp
ID8gJmRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdEluc2V0U2hhZG93
RGF0YTsKKyAgICAKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkg
PyAmZGVmYXVsdFdlYktpdEJveFNoYWRvd0RhdGEgOiAmZGVmYXVsdFNoYWRvd0RhdGE7Cit9CisK
IGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
IHsKIHB1YmxpYzoKICAgICBQcm9wZXJ0eVdyYXBwZXJTaGFkb3coaW50IHByb3AsIGNvbnN0IFNo
YWRvd0RhdGEqIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5
bGU6OipzZXR0ZXIpKFBhc3NPd25QdHI8U2hhZG93RGF0YT4sIGJvb2wpKQpAQCAtMzYyLDE1ICsz
ODcsMjcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
QSA9IChhLT4qbV9nZXR0ZXIpKCk7CiAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0Ig
PSAoYi0+Km1fZ2V0dGVyKSgpOwotICAgICAgICBTaGFkb3dEYXRhIGRlZmF1bHRTaGFkb3dEYXRh
KDAsIDAsIDAsIDAsIE5vcm1hbCwgcHJvcGVydHkoKSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNo
YWRvdywgQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAgU2hhZG93RGF0YSBkZWZhdWx0SW5z
ZXRTaGFkb3dEYXRhKDAsIDAsIDAsIDAsIEluc2V0LCBwcm9wZXJ0eSgpID09IENTU1Byb3BlcnR5
V2Via2l0Qm94U2hhZG93LCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogCisgICAgICAgIGludCBmcm9t
TGVuZ3RoID0gc2hhZG93TGlzdExlbmd0aChzaGFkb3dBKTsKKyAgICAgICAgaW50IHRvTGVuZ3Ro
ID0gc2hhZG93TGlzdExlbmd0aChzaGFkb3dCKTsKKworICAgICAgICBpZiAoZnJvbUxlbmd0aCA9
PSB0b0xlbmd0aCB8fCAoKCFmcm9tTGVuZ3RoIHx8IGZyb21MZW5ndGggPT0gMSkgJiYgKCF0b0xl
bmd0aCB8fCB0b0xlbmd0aCA9PSAxKSkpIHsKKyAgICAgICAgICAgIChkc3QtPiptX3NldHRlciko
YmxlbmRTaW1wbGVPck1hdGNoZWRTaGFkb3dMaXN0cyhhbmltLCBwcm9ncmVzcywgc2hhZG93QSwg
c2hhZG93QiksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRNaXNtYXRjaGVkU2hhZG93TGlzdHMoYW5pbSwgcHJv
Z3Jlc3MsIHNoYWRvd0EsIHNoYWRvd0IsIGZyb21MZW5ndGgsIHRvTGVuZ3RoKSwgZmFsc2UpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBQYXNzT3duUHRyPFNoYWRvd0RhdGEqPiBibGVuZFNpbXBs
ZU9yTWF0Y2hlZFNoYWRvd0xpc3RzKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGRvdWJsZSBw
cm9ncmVzcywgY29uc3QgU2hhZG93RGF0YSogc2hhZG93QSwgY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93QikgY29uc3QKKyAgICB7CiAgICAgICAgIE93blB0cjxTaGFkb3dEYXRhPiBuZXdTaGFkb3dE
YXRhOwogICAgICAgICBTaGFkb3dEYXRhKiBsYXN0U2hhZG93ID0gMDsKICAgICAgICAgCiAgICAg
ICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRvd0IpIHsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRv
d0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0EgPyBzaGFkb3dBIDogKHNoYWRvd0ItPnN0eWxlKCkg
PT0gSW5zZXQgPyAmZGVmYXVsdEluc2V0U2hhZG93RGF0YSA6ICZkZWZhdWx0U2hhZG93RGF0YSk7
Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dCID8gc2hh
ZG93QiA6IChzaGFkb3dBLT5zdHlsZSgpID09IEluc2V0ID8gJmRlZmF1bHRJbnNldFNoYWRvd0Rh
dGEgOiAmZGVmYXVsdFNoYWRvd0RhdGEpOworICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSog
c3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7CisgICAgICAg
ICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFk
b3dCLCBzaGFkb3dBKTsKIAogICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRT
aGFkb3cgPSBibGVuZEZ1bmMoYW5pbSwgc3JjU2hhZG93LCBkc3RTaGFkb3csIHByb2dyZXNzKTsK
ICAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVkU2hhZG93
LmdldCgpOwpAQCAtMzg2LDEwICs0MjMsNDUgQEAgcHVibGljOgogICAgICAgICAgICAgc2hhZG93
QiA9IHNoYWRvd0IgPyBzaGFkb3dCLT5uZXh0KCkgOiAwOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKG5ld1NoYWRvd0RhdGEucmVsZWFzZSgpLCBmYWxzZSk7
CisgICAgICAgIHJldHVybiBuZXdTaGFkb3dEYXRhLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBQ
YXNzT3duUHRyPFNoYWRvd0RhdGEqPiBibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyhjb25zdCBB
bmltYXRpb25CYXNlKiBhbmltLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IFNoYWRvd0RhdGEqIHNo
YWRvd0EsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0IsIGludCBmcm9tTGVuZ3RoLCBpbnQgdG9M
ZW5ndGgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBUaGUgc2hhZG93cyBpbiBTaGFkb3dEYXRh
IGFyZSBzdG9yZWQgaW4gcmV2ZXJzZSBvcmRlciwgc28gd2hlbiBhbmltYXRpbmcgbWlzbWF0Y2hl
ZCBsaXN0cywKKyAgICAgICAgLy8gcmV2ZXJzZSB0aGVtIGFuZCBtYXRjaCBmcm9tIHRoZSBlbmQu
CisgICAgICAgIFZlY3Rvcjxjb25zdCBTaGFkb3dEYXRhKj4gZnJvbVNoYWRvd3MoZnJvbUxlbmd0
aCk7CisgICAgICAgIFZlY3Rvcjxjb25zdCBTaGFkb3dEYXRhKj4gdG9TaGFkb3dzKHRvTGVuZ3Ro
KTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChzaGFkb3dBKSB7CisgICAgICAgICAgICBmcm9t
U2hhZG93cy5wcmVwZW5kKHNoYWRvd0EpOworICAgICAgICAgICAgc2hhZG93QSA9IHNoYWRvd0Et
Pm5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChzaGFkb3dCKSB7CisgICAgICAg
ICAgICB0b1NoYWRvd3MucHJlcGVuZChzaGFkb3dCKTsKKyAgICAgICAgICAgIHNoYWRvd0IgPSBz
aGFkb3dCLT5uZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBPd25QdHI8U2hhZG93RGF0YT4g
bmV3U2hhZG93RGF0YTsKKyAgICAgICAgCisgICAgICAgIGludCBtYXhMZW5ndGggPSBtYXgoZnJv
bUxlbmd0aCwgdG9MZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heExlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBmcm9tU2hhZG93ID0gaSA8
IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7CisgICAgICAgICAgICBjb25zdCBTaGFk
b3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IDA7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRv
d0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKKyAgICAgICAgICAgIGNvbnN0IFNo
YWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hh
ZG93KTsKKworICAgICAgICAgICAgT3duUHRyPFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBi
bGVuZEZ1bmMoYW5pbSwgc3JjU2hhZG93LCBkc3RTaGFkb3csIHByb2dyZXNzKTsKKyAgICAgICAg
ICAgIC8vIEluc2VydCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpc3QgdG8gcHJlc2VydmUgdGhlIG9y
ZGVyLgorICAgICAgICAgICAgYmxlbmRlZFNoYWRvdy0+c2V0TmV4dChuZXdTaGFkb3dEYXRhLnJl
bGVhc2UoKSk7CisgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gYmxlbmRlZFNoYWRvdy5yZWxl
YXNlKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3U2hhZG93RGF0YS5yZWxlYXNl
KCk7CiAgICAgfQogCi1wcml2YXRlOgogICAgIGNvbnN0IFNoYWRvd0RhdGEqIChSZW5kZXJTdHls
ZTo6Km1fZ2V0dGVyKSgpIGNvbnN0OwogICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIp
KFBhc3NPd25QdHI8U2hhZG93RGF0YT4sIGJvb2wpOwogfTsK
</data>
<flag name="review"
          id="86382"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>