<?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>57130</bug_id>
          
          <creation_ts>2011-03-25 16:22:37 -0700</creation_ts>
          <short_desc>Relative mouse coordinates recalculated for each target</short_desc>
          <delta_ts>2011-03-29 04:02:57 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373778</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-25 16:22:37 -0700</bug_when>
    <thetext>Mouse events recalculate the relative coordinates (offsetX/Y and layerX/Y) for each target which can be quite expensive. 
See MouseRelatedEvent::receivedTarget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373780</commentid>
    <comment_count>1</comment_count>
      <attachid>86993</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-25 16:24:09 -0700</bug_when>
    <thetext>Created attachment 86993
Patch, work in progress

Draft patch, comments on the general approach welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373835</commentid>
    <comment_count>2</comment_count>
      <attachid>87003</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-25 19:01:38 -0700</bug_when>
    <thetext>Created attachment 87003
Patch

Added tests for offset and layer position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373837</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-25 19:10:38 -0700</bug_when>
    <thetext>Attachment 87003 did not build on qt:
Build output: http://queues.webkit.org/results/8256019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373838</commentid>
    <comment_count>4</comment_count>
      <attachid>87003</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-25 19:11:44 -0700</bug_when>
    <thetext>Comment on attachment 87003
Patch

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

Looks great with nits. Love the test.

&gt; Source/WebCore/ChangeLog:10
&gt; +        structures significantly.

Probably should mention that this is changes O(N^2) to O(N). Don&apos;t be shy :)

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:141
&gt; +    m_hasCachedRelativePosition = false;

You can optimize this even further by checking (just outside receivedTarget callsite) to see if target is actually changing.

&gt; Source/WebCore/dom/MouseRelatedEvent.h:44
&gt; +        int layerX() const;
&gt; +        int layerY() const;
&gt; +        int offsetX() const;
&gt; +        int offsetY() const;

These aren&apos;t const anymore, right? They will change the object.

&gt; Source/WebCore/dom/MouseRelatedEvent.h:67
&gt; +        void computeRelativePosition() const;

Ditto.

&gt; Source/WebCore/dom/MouseRelatedEvent.h:84
&gt; +        mutable int m_layerX;
&gt; +        mutable int m_layerY;
&gt; +        mutable int m_offsetX;
&gt; +        mutable int m_offsetY;
&gt; +        mutable bool m_hasCachedRelativePosition;

And once you remove consts, these don&apos;t need to be mutables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373839</commentid>
    <comment_count>5</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-25 19:17:26 -0700</bug_when>
    <thetext>This patch speeds up mouse event dispatching for deep DOM trees significantly. 

For a tree of a depth of 100 firing an event for the innermost element takes between 1300ms and 1320ms on my machine, with the patch that number is between 64 and 68ms. A ~20x improvement.

More realistically, with a depth of 10 there is a 2x improvement.

Some performance numbers for different depths:

Depth | Before | After
------+--------+------
  100 | 1310ms |  66ms
   50 |  394ms |  45ms
   25 |  148ms |  36ms
   10 |   62ms |  29ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373841</commentid>
    <comment_count>6</comment_count>
      <attachid>87004</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-25 19:52:01 -0700</bug_when>
    <thetext>Created attachment 87004
Patch

Thanks Dimitri. Made the changes you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373842</commentid>
    <comment_count>7</comment_count>
      <attachid>87004</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-25 19:58:31 -0700</bug_when>
    <thetext>Comment on attachment 87004
Patch

yay Emil!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374218</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-27 14:11:20 -0700</bug_when>
    <thetext>Attachment 87004 did not build on chromium:
Build output: http://queues.webkit.org/results/8267480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374741</commentid>
    <comment_count>9</comment_count>
      <attachid>87193</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-03-28 13:48:59 -0700</bug_when>
    <thetext>Created attachment 87193
Patch

PTAL

Updated chromium&apos;s WebDOMMouseEvent to match the updated event object and updated the new mouse-relative-position test to account for platform differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374794</commentid>
    <comment_count>10</comment_count>
      <attachid>87193</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-28 14:45:10 -0700</bug_when>
    <thetext>Comment on attachment 87193
Patch

gorgeous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375178</commentid>
    <comment_count>11</comment_count>
      <attachid>87193</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-29 04:02:52 -0700</bug_when>
    <thetext>Comment on attachment 87193
Patch

Clearing flags on attachment: 87193

Committed r82225: &lt;http://trac.webkit.org/changeset/82225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375179</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-29 04:02:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86993</attachid>
            <date>2011-03-25 16:24:09 -0700</date>
            <delta_ts>2011-03-25 19:01:38 -0700</delta_ts>
            <desc>Patch, work in progress</desc>
            <filename>57130.patch</filename>
            <type>text/plain</type>
            <size>9678</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMjUgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGF0aXZlIG1vdXNlIGNvb3JkaW5hdGVzIHJlY2FsY3VsYXRl
ZCBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQ2FsY3VsYXRlIHJlbGF0aXZlIGNvb3JkaW5hdGVz
IGxhemlseSBmb3IgbW91c2UgZXZlbnRzIGluc3RlYWQgb2YgZG9pbmcKKyAgICAgICAgaXQgZm9y
IGVhY2ggdGFyZ2V0LiBTcGVlZHMgdXAgZGlzcGF0Y2hpbmcgb2YgbW91c2UgZXZlbnRzIGluIGRl
ZXAgZG9tCisgICAgICAgIHN0cnVjdHVyZXMgc2lnbmlmaWNhbnRseS4KKworICAgICAgICBUZXN0
OiBwZXJmL21vdXNlLWV2ZW50Lmh0bWwKKworICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVk
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGlu
YXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpwYWdlWm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclgpOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VSZWxhdGVkRXZlbnQ6OmxheWVyWSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6b2Zmc2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
b2Zmc2V0WSk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50Lmg6CisKIDIwMTEtMDMt
MjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkZWxlIFBldGVyc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwCShyZXZpc2lvbiA4MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgTW91c2VSZWxhdGVk
RXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KCkKICAgICAsIG1fb2Zmc2V0WCgwKQogICAgICwgbV9v
ZmZzZXRZKDApCiAgICAgLCBtX2lzU2ltdWxhdGVkKGZhbHNlKQorICAgICwgbV9oYXNDYWNoZWRS
ZWxhdGl2ZVBvc2l0aW9uKGZhbHNlKQogewogfQogCkBAIC05MSwyMSArOTIsMjAgQEAgTW91c2VS
ZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbgogdm9pZCBNb3VzZVJlbGF0ZWRFdmVu
dDo6aW5pdENvb3JkaW5hdGVzKCkKIHsKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9y
IGNvb3JkaW5hdGVzLgotICAgIC8vIENvcnJlY3QgdmFsdWVzIGNhbid0IGJlIGNvbXB1dGVkIHVu
dGlsIHdlIGhhdmUgYXQgdGFyZ2V0LCBzbyByZWNlaXZlZFRhcmdldAotICAgIC8vIGRvZXMgdGhl
ICJyZWFsIiBjb21wdXRhdGlvbi4KKyAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQg
bGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgbV9sYXllclggPSBtX3Bh
Z2VYOwogICAgIG1fbGF5ZXJZID0gbV9wYWdlWTsKICAgICBtX29mZnNldFggPSBtX3BhZ2VYOwog
ICAgIG1fb2Zmc2V0WSA9IG1fcGFnZVk7CiAKICAgICBjb21wdXRlUGFnZUxvY2F0aW9uKCk7Cisg
ICAgbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7CiB9CiAKIHZvaWQgTW91c2VS
ZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhpbnQgY2xpZW50WCwgaW50IGNsaWVudFkpCiB7
CiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4KLSAgICAvLyBD
b3JyZWN0IHZhbHVlcyBjYW4ndCBiZSBjb21wdXRlZCB1bnRpbCB3ZSBoYXZlIGF0IHRhcmdldCwg
c28gcmVjZWl2ZWRUYXJnZXQKLSAgICAvLyBkb2VzIHRoZSAicmVhbCIgY29tcHV0YXRpb24uCisg
ICAgLy8gQ29ycmVjdCB2YWx1ZXMgYXJlIGNvbXB1dGVkIGxhemlseSwgc2VlIGNvbXB1dGVSZWxh
dGl2ZVBvc2l0aW9uLgogICAgIG1fY2xpZW50WCA9IGNsaWVudFg7CiAgICAgbV9jbGllbnRZID0g
Y2xpZW50WTsKICAgICBtX3BhZ2VYID0gY2xpZW50WCArIGNvbnRlbnRzWCh2aWV3KCkpOwpAQCAt
MTE2LDkgKzExNiwxMCBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMo
CiAgICAgbV9vZmZzZXRZID0gbV9wYWdlWTsKIAogICAgIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsK
KyAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAotc3RhdGljIGZs
b2F0IHBhZ2Vab29tRmFjdG9yKFVJRXZlbnQqIGV2ZW50KQorc3RhdGljIGZsb2F0IHBhZ2Vab29t
RmFjdG9yKGNvbnN0IFVJRXZlbnQqIGV2ZW50KQogewogICAgIERPTVdpbmRvdyogd2luZG93ID0g
ZXZlbnQtPnZpZXcoKTsKICAgICBpZiAoIXdpbmRvdykKQEAgLTEzNyw5ICsxMzgsMTMgQEAgdm9p
ZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdAogCiB2b2lkIE1vdXNlUmVsYXRl
ZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiB7Ci0gICAgQVNTRVJUKHRhcmdldCgpKTsKLSAgICBO
b2RlKiB0YXJnID0gdGFyZ2V0KCktPnRvTm9kZSgpOwotICAgIGlmICghdGFyZykKKyAgICBtX2hh
c0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKK30KKwordm9pZCBNb3VzZVJlbGF0ZWRF
dmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKSBjb25zdAoreworICAgIE5vZGUqIHRhcmdl
dE5vZGUgPSB0YXJnZXQoKSA/IHRhcmdldCgpLT50b05vZGUoKSA6IDA7CisgICAgaWYgKCF0YXJn
ZXROb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDb21wdXRlIGNvb3JkaW5hdGVzIHRo
YXQgYXJlIGJhc2VkIG9uIHRoZSB0YXJnZXQuCkBAIC0xNDksMTEgKzE1NCwxMSBAQCB2b2lkIE1v
dXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCiAgICAgbV9vZmZzZXRZID0gbV9wYWdl
WTsKIAogICAgIC8vIE11c3QgaGF2ZSBhbiB1cGRhdGVkIHJlbmRlciB0cmVlIGZvciB0aGlzIG1h
dGggdG8gd29yayBjb3JyZWN0bHkuCi0gICAgdGFyZy0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKIAogICAgIC8vIEFkanVzdCBvZmZzZXRYL1kgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHRh
cmdldCdzIHBvc2l0aW9uLgogICAgIGlmICghaXNTaW11bGF0ZWQoKSkgewotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByID0gdGFyZy0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgRmxvYXRQ
b2ludCBsb2NhbFBvcyA9IHItPmFic29sdXRlVG9Mb2NhbChhYnNvbHV0ZUxvY2F0aW9uKCksIGZh
bHNlLCB0cnVlKTsKICAgICAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBwYWdlWm9vbUZhY3Rv
cih0aGlzKTsKICAgICAgICAgICAgIG1fb2Zmc2V0WCA9IGxyb3VuZGYobG9jYWxQb3MueCgpIC8g
em9vbUZhY3Rvcik7CkBAIC0xNjYsMTcgKzE3MSw0OCBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50
OjpyZWNlaXZlZFRhcmdldCgpCiAgICAgLy8gT3VyIFJlbmRlckxheWVyIGlzIGEgbW9yZSBtb2Rl
cm4gY29uY2VwdCwgYW5kIGxheWVyWC9ZIGlzIHNvbWUKICAgICAvLyBvdGhlciBub3Rpb24gYWJv
dXQgZ3JvdXBzIG9mIGVsZW1lbnRzIChsZWZ0IG92ZXIgZnJvbSB0aGUgTmV0c2NhcGUgNCBkYXlz
Pyk7CiAgICAgLy8gd2Ugc2hvdWxkIHRlc3QgYW5kIGZpeCB0aGlzLgotICAgIE5vZGUqIG4gPSB0
YXJnOworICAgIE5vZGUqIG4gPSB0YXJnZXROb2RlOwogICAgIHdoaWxlIChuICYmICFuLT5yZW5k
ZXJlcigpKQogICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAgIGlmIChuKSB7Ci0gICAg
ICAgIFJlbmRlckxheWVyKiBsYXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7
CisKKyAgICBSZW5kZXJMYXllciogbGF5ZXI7CisgICAgaWYgKG4gJiYgKGxheWVyID0gbi0+cmVu
ZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkpIHsKICAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVy
UG9zaXRpb24oKTsKICAgICAgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQo
KSkgewogICAgICAgICAgICAgbV9sYXllclggLT0gbGF5ZXItPngoKTsKICAgICAgICAgICAgIG1f
bGF5ZXJZIC09IGxheWVyLT55KCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBtX2hhc0NhY2hl
ZFJlbGF0aXZlUG9zaXRpb24gPSB0cnVlOworfQorCitpbnQgTW91c2VSZWxhdGVkRXZlbnQ6Omxh
eWVyWCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24pCisg
ICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCk7CisgICAgcmV0dXJuIG1fbGF5ZXJYOwor
fQorCitpbnQgTW91c2VSZWxhdGVkRXZlbnQ6OmxheWVyWSgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24pCisgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0
aW9uKCk7CisgICAgcmV0dXJuIG1fbGF5ZXJZOworfQorCitpbnQgTW91c2VSZWxhdGVkRXZlbnQ6
Om9mZnNldFgoKSBjb25zdAoreworICAgIGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9u
KQorICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOworICAgIHJldHVybiBtX29mZnNl
dFg7Cit9CisKK2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WSgpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24pCisgICAgICAgIGNvbXB1dGVSZWxhdGl2
ZVBvc2l0aW9uKCk7CisgICAgcmV0dXJuIG1fb2Zmc2V0WTsKIH0KIAogaW50IE1vdXNlUmVsYXRl
ZEV2ZW50OjpwYWdlWCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVk
RXZlbnQuaAkocmV2aXNpb24gODE5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgaW50IHNjcmVlblkoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblk7
IH0KICAgICAgICAgaW50IGNsaWVudFgoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFg7IH0KICAg
ICAgICAgaW50IGNsaWVudFkoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFk7IH0KLSAgICAgICAg
aW50IGxheWVyWCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJYOyB9Ci0gICAgICAgIGludCBsYXll
clkoKSBjb25zdCB7IHJldHVybiBtX2xheWVyWTsgfQotICAgICAgICBpbnQgb2Zmc2V0WCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0WDsgfQotICAgICAgICBpbnQgb2Zmc2V0WSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0WTsgfQorICAgICAgICBpbnQgbGF5ZXJYKCkgY29uc3Q7CisgICAgICAg
IGludCBsYXllclkoKSBjb25zdDsKKyAgICAgICAgaW50IG9mZnNldFgoKSBjb25zdDsKKyAgICAg
ICAgaW50IG9mZnNldFkoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1NpbXVsYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTaW11bGF0ZWQ7IH0KICAgICAgICAgdmlydHVhbCBpbnQgcGFnZVgoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgcGFnZVkoKSBjb25zdDsKQEAgLTY0LDYgKzY0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRUYXJn
ZXQoKTsKIAogICAgICAgICB2b2lkIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsKKyAgICAgICAgdm9p
ZCBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0OwogICAgICAgICAKICAgICAgICAgLy8g
RXhwb3NlIHRoZXNlIHNvIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50IGNhbiBzZXQgdGhlbS4K
ICAgICAgICAgaW50IG1fc2NyZWVuWDsKQEAgLTc0LDEyICs3NSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fcGFnZVg7CiAgICAgICAgIGludCBt
X3BhZ2VZOwotICAgICAgICBpbnQgbV9sYXllclg7Ci0gICAgICAgIGludCBtX2xheWVyWTsKLSAg
ICAgICAgaW50IG1fb2Zmc2V0WDsKLSAgICAgICAgaW50IG1fb2Zmc2V0WTsKICAgICAgICAgSW50
UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwogICAgICAgICBib29sIG1faXNTaW11bGF0ZWQ7Cisg
ICAgICAgIG11dGFibGUgaW50IG1fbGF5ZXJYOworICAgICAgICBtdXRhYmxlIGludCBtX2xheWVy
WTsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9vZmZzZXRYOworICAgICAgICBtdXRhYmxlIGludCBt
X29mZnNldFk7CisgICAgICAgIG11dGFibGUgYm9vbCBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRp
b247CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
ODIwMDIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMS0wMy0yNSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYXRpdmUg
bW91c2UgY29vcmRpbmF0ZXMgcmVjYWxjdWxhdGVkIGZvciB0YXJnZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQWRkIG1v
dXNlIGV2ZW50IHBlcmZvcm1hbmNlIHRlc3QuCisKKyAgICAgICAgKiBwZXJmL21vdXNlLWV2ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGVyZi9tb3VzZS1ldmVudC5odG1sOiBB
ZGRlZC4KKwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBMYXlvdXRUZXN0cy9wZXJm
L21vdXNlLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wZXJm
L21vdXNlLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bl
cmYvbW91c2UtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K1Rlc3RzIHRoYXQgbW91c2UgZXZlbnQgZGlzcGF0Y2ggaXMgbGluZWFyIHdpdGggcmVzcGVjdCB0
byB0aGUgbnVtYmVyIG9mIHBhcmVudCBlbGVtZW50cy4KK1BBU1MKKwpJbmRleDogTGF5b3V0VGVz
dHMvcGVyZi9tb3VzZS1ldmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BlcmYv
bW91c2UtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BlcmYvbW91c2Ut
ZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICAub3V0ZXIgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIG1hcmdp
bjogMC4yNXB4OworICAgICAgICBwYWRkaW5nOiAwLjI1cHg7CisgICAgfQorICAgIC5pbm5lciB7
CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAg
YmFja2dyb3VuZDogcmVkOworICAgIH0KKzwvc3R5bGU+Cis8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4K
KzxzY3JpcHQ+CisKK3ZhciBpbm5lckVsZW1lbnQsIHJlcG9ydGVkUG9zaXRpb247Cit2YXIgdGVz
dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworCitmdW5jdGlvbiBz
ZXR1cEZ1bmN0aW9uKG1hZ25pdHVkZSkKK3sKKyAgICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAn
JzsKKyAgICB2YXIgZWxlbWVudCwgcGFyZW50ID0gdGVzdEVsZW1lbnQ7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtYWduaXR1ZGU7IGkrKykgeworICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ291dGVy
JzsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgICAgICBwYXJlbnQg
PSBlbGVtZW50OworICAgIH0KKyAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnaW5uZXInOworICAgIHBhcmVudC5hcHBl
bmRDaGlsZChlbGVtZW50KTsKKyAgICBlbGVtZW50Lm9ubW91c2VvdmVyID0gZnVuY3Rpb24oZSkg
eworICAgICAgICByZXBvcnRlZFBvc2l0aW9uID0gZS5vZmZzZXRYICsgJywgJyArIGUub2Zmc2V0
WTsKKyAgICB9OworICAgIGlubmVyRWxlbWVudCA9IGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHRl
c3QobWFnbml0dWRlKQoreworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
dmFyIHJlY3QgPSBpbm5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDAsIDApOworICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhyZWN0LmxlZnQsIHJlY3QudG9wKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMCwgMCk7CisgICAgfQorfQorCitNYWduaXR1ZGUuZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgbW91c2UgZXZlbnQgZGlzcGF0Y2ggaXMgbGluZWFyIHdpdGggcmVzcGVjdCB0byB0aGUgbnVt
YmVyIG9mIHBhcmVudCBlbGVtZW50cy4iKTsKK01hZ25pdHVkZS5ydW4oc2V0dXBGdW5jdGlvbiwg
dGVzdCwgTWFnbml0dWRlLkxJTkVBUik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87003</attachid>
            <date>2011-03-25 19:01:38 -0700</date>
            <delta_ts>2011-03-25 19:18:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>57130.patch</filename>
            <type>text/plain</type>
            <size>13369</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMjUgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGF0aXZlIG1vdXNlIGNvb3JkaW5hdGVzIHJlY2FsY3VsYXRl
ZCBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQ2FsY3VsYXRlIHJlbGF0aXZlIGNvb3JkaW5hdGVz
IGxhemlseSBmb3IgbW91c2UgZXZlbnRzIGluc3RlYWQgb2YgZG9pbmcKKyAgICAgICAgaXQgZm9y
IGVhY2ggdGFyZ2V0LiBTcGVlZHMgdXAgZGlzcGF0Y2hpbmcgb2YgbW91c2UgZXZlbnRzIGluIGRl
ZXAgZG9tCisgICAgICAgIHN0cnVjdHVyZXMgc2lnbmlmaWNhbnRseS4KKworICAgICAgICBBbHNv
IGZpeGVzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDk3MworCisg
ICAgICAgIFRlc3Q6IHBlcmYvbW91c2UtZXZlbnQuaHRtbAorCisgICAgICAgICogZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpN
b3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnBhZ2Vab29tRmFjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmxheWVyWCk6CisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bGF5ZXJZKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVs
YXRlZEV2ZW50OjpvZmZzZXRZKToKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuaDoK
KwogMjAxMS0wMy0yNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDgxOTc1KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBN
b3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoKQogICAgICwgbV9vZmZzZXRYKDAp
CiAgICAgLCBtX29mZnNldFkoMCkKICAgICAsIG1faXNTaW11bGF0ZWQoZmFsc2UpCisgICAgLCBt
X2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTkxLDIxICs5Miwy
MCBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uCiB2b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoKQogewogICAgIC8vIFNldCB1cCBpbml0aWFs
IHZhbHVlcyBmb3IgY29vcmRpbmF0ZXMuCi0gICAgLy8gQ29ycmVjdCB2YWx1ZXMgY2FuJ3QgYmUg
Y29tcHV0ZWQgdW50aWwgd2UgaGF2ZSBhdCB0YXJnZXQsIHNvIHJlY2VpdmVkVGFyZ2V0Ci0gICAg
Ly8gZG9lcyB0aGUgInJlYWwiIGNvbXB1dGF0aW9uLgorICAgIC8vIENvcnJlY3QgdmFsdWVzIGFy
ZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbi4KICAgICBtX2xh
eWVyWCA9IG1fcGFnZVg7CiAgICAgbV9sYXllclkgPSBtX3BhZ2VZOwogICAgIG1fb2Zmc2V0WCA9
IG1fcGFnZVg7CiAgICAgbV9vZmZzZXRZID0gbV9wYWdlWTsKIAogICAgIGNvbXB1dGVQYWdlTG9j
YXRpb24oKTsKKyAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAog
dm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSkKIHsKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVz
LgotICAgIC8vIENvcnJlY3QgdmFsdWVzIGNhbid0IGJlIGNvbXB1dGVkIHVudGlsIHdlIGhhdmUg
YXQgdGFyZ2V0LCBzbyByZWNlaXZlZFRhcmdldAotICAgIC8vIGRvZXMgdGhlICJyZWFsIiBjb21w
dXRhdGlvbi4KKyAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQgbGF6aWx5LCBzZWUg
Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAgbV9jbGllbnRYID0gY2xpZW50WDsKICAgICBt
X2NsaWVudFkgPSBjbGllbnRZOwogICAgIG1fcGFnZVggPSBjbGllbnRYICsgY29udGVudHNYKHZp
ZXcoKSk7CkBAIC0xMTYsOSArMTE2LDEwIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRD
b29yZGluYXRlcygKICAgICBtX29mZnNldFkgPSBtX3BhZ2VZOwogCiAgICAgY29tcHV0ZVBhZ2VM
b2NhdGlvbigpOworICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQog
Ci1zdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoVUlFdmVudCogZXZlbnQpCitzdGF0aWMgZmxv
YXQgcGFnZVpvb21GYWN0b3IoY29uc3QgVUlFdmVudCogZXZlbnQpCiB7CiAgICAgRE9NV2luZG93
KiB3aW5kb3cgPSBldmVudC0+dmlldygpOwogICAgIGlmICghd2luZG93KQpAQCAtMTM3LDkgKzEz
OCwxMyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUGFnZUxvY2F0CiAKIHZvaWQg
TW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsKLSAgICBBU1NFUlQodGFyZ2V0
KCkpOwotICAgIE5vZGUqIHRhcmcgPSB0YXJnZXQoKS0+dG9Ob2RlKCk7Ci0gICAgaWYgKCF0YXJn
KQorICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOworfQorCit2b2lkIE1v
dXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAg
Tm9kZSogdGFyZ2V0Tm9kZSA9IHRhcmdldCgpID8gdGFyZ2V0KCktPnRvTm9kZSgpIDogMDsKKyAg
ICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENvbXB1dGUgY29v
cmRpbmF0ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIHRhcmdldC4KQEAgLTE0OSwxMSArMTU0LDEx
IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKICAgICBtX29mZnNl
dFkgPSBtX3BhZ2VZOwogCiAgICAgLy8gTXVzdCBoYXZlIGFuIHVwZGF0ZWQgcmVuZGVyIHRyZWUg
Zm9yIHRoaXMgbWF0aCB0byB3b3JrIGNvcnJlY3RseS4KLSAgICB0YXJnLT5kb2N1bWVudCgpLT51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCiAgICAgLy8gQWRqdXN0IG9mZnNldFgvWSB0byBiZSByZWxhdGl2
ZSB0byB0aGUgdGFyZ2V0J3MgcG9zaXRpb24uCiAgICAgaWYgKCFpc1NpbXVsYXRlZCgpKSB7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJnLT5yZW5kZXJlcigpKSB7CisgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJnZXROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAg
ICAgICBGbG9hdFBvaW50IGxvY2FsUG9zID0gci0+YWJzb2x1dGVUb0xvY2FsKGFic29sdXRlTG9j
YXRpb24oKSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IHBh
Z2Vab29tRmFjdG9yKHRoaXMpOwogICAgICAgICAgICAgbV9vZmZzZXRYID0gbHJvdW5kZihsb2Nh
bFBvcy54KCkgLyB6b29tRmFjdG9yKTsKQEAgLTE2NiwxNyArMTcxLDQ4IEBAIHZvaWQgTW91c2VS
ZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKICAgICAvLyBPdXIgUmVuZGVyTGF5ZXIgaXMg
YSBtb3JlIG1vZGVybiBjb25jZXB0LCBhbmQgbGF5ZXJYL1kgaXMgc29tZQogICAgIC8vIG90aGVy
IG5vdGlvbiBhYm91dCBncm91cHMgb2YgZWxlbWVudHMgKGxlZnQgb3ZlciBmcm9tIHRoZSBOZXRz
Y2FwZSA0IGRheXM/KTsKICAgICAvLyB3ZSBzaG91bGQgdGVzdCBhbmQgZml4IHRoaXMuCi0gICAg
Tm9kZSogbiA9IHRhcmc7CisgICAgTm9kZSogbiA9IHRhcmdldE5vZGU7CiAgICAgd2hpbGUgKG4g
JiYgIW4tPnJlbmRlcmVyKCkpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYg
KG4pIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gbi0+cmVuZGVyZXIoKS0+ZW5jbG9z
aW5nTGF5ZXIoKTsKKworICAgIFJlbmRlckxheWVyKiBsYXllcjsKKyAgICBpZiAobiAmJiAobGF5
ZXIgPSBuLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKSkgewogICAgICAgICBsYXllci0+
dXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICBmb3IgKDsgbGF5ZXI7IGxheWVyID0gbGF5
ZXItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBtX2xheWVyWCAtPSBsYXllci0+eCgpOwogICAg
ICAgICAgICAgbV9sYXllclkgLT0gbGF5ZXItPnkoKTsKICAgICAgICAgfQogICAgIH0KKworICAg
IG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IHRydWU7Cit9CisKK2ludCBNb3VzZVJlbGF0
ZWRFdmVudDo6bGF5ZXJYKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faGFzQ2FjaGVkUmVsYXRpdmVQ
b3NpdGlvbikKKyAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKTsKKyAgICByZXR1cm4g
bV9sYXllclg7Cit9CisKK2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bGF5ZXJZKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgY29tcHV0ZVJl
bGF0aXZlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbV9sYXllclk7Cit9CisKK2ludCBNb3VzZVJl
bGF0ZWRFdmVudDo6b2Zmc2V0WCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2hhc0NhY2hlZFJlbGF0
aXZlUG9zaXRpb24pCisgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCk7CisgICAgcmV0
dXJuIG1fb2Zmc2V0WDsKK30KKworaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgY29t
cHV0ZVJlbGF0aXZlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbV9vZmZzZXRZOwogfQogCiBpbnQg
TW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lvbiA4MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgc2NyZWVuWSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyZWVuWTsgfQogICAgICAgICBpbnQgY2xpZW50WCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50WDsgfQogICAgICAgICBpbnQgY2xpZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50WTsg
fQotICAgICAgICBpbnQgbGF5ZXJYKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclg7IH0KLSAgICAg
ICAgaW50IGxheWVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJZOyB9Ci0gICAgICAgIGludCBv
ZmZzZXRYKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRYOyB9Ci0gICAgICAgIGludCBvZmZzZXRZ
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRZOyB9CisgICAgICAgIGludCBsYXllclgoKSBjb25z
dDsKKyAgICAgICAgaW50IGxheWVyWSgpIGNvbnN0OworICAgICAgICBpbnQgb2Zmc2V0WCgpIGNv
bnN0OworICAgICAgICBpbnQgb2Zmc2V0WSgpIGNvbnN0OwogICAgICAgICBib29sIGlzU2ltdWxh
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRlZDsgfQogICAgICAgICB2aXJ0dWFsIGlu
dCBwYWdlWCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGludCBwYWdlWSgpIGNvbnN0OwpAQCAt
NjQsNiArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZFRhcmdldCgpOwogCiAgICAgICAgIHZvaWQgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOwor
ICAgICAgICB2b2lkIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkgY29uc3Q7CiAgICAgICAgIAog
ICAgICAgICAvLyBFeHBvc2UgdGhlc2Ugc28gTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQgY2Fu
IHNldCB0aGVtLgogICAgICAgICBpbnQgbV9zY3JlZW5YOwpAQCAtNzQsMTIgKzc1LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBpbnQgbV9wYWdlWDsKICAg
ICAgICAgaW50IG1fcGFnZVk7Ci0gICAgICAgIGludCBtX2xheWVyWDsKLSAgICAgICAgaW50IG1f
bGF5ZXJZOwotICAgICAgICBpbnQgbV9vZmZzZXRYOwotICAgICAgICBpbnQgbV9vZmZzZXRZOwog
ICAgICAgICBJbnRQb2ludCBtX2Fic29sdXRlTG9jYXRpb247CiAgICAgICAgIGJvb2wgbV9pc1Np
bXVsYXRlZDsKKyAgICAgICAgbXV0YWJsZSBpbnQgbV9sYXllclg7CisgICAgICAgIG11dGFibGUg
aW50IG1fbGF5ZXJZOworICAgICAgICBtdXRhYmxlIGludCBtX29mZnNldFg7CisgICAgICAgIG11
dGFibGUgaW50IG1fb2Zmc2V0WTsKKyAgICAgICAgbXV0YWJsZSBib29sIG1faGFzQ2FjaGVkUmVs
YXRpdmVQb3NpdGlvbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MjAwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTI1ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWxhdGl2ZSBtb3VzZSBjb29yZGluYXRlcyByZWNhbGN1bGF0ZWQgZm9yIHRhcmdldAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxMzAKKworICAg
ICAgICBBZGQgbW91c2UgZXZlbnQgcGVyZm9ybWFuY2UgdGVzdC4KKworICAgICAgICAqIHBlcmYv
bW91c2UtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL21vdXNlLWV2
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1yZWxhdGl2ZS1wb3Np
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZS1yZWxhdGl2ZS1wb3NpdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorc3BhbgorCitidXR0b24KK1BBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2sodGVz
dEVsZW1lbnQpOyBpcyAnY2xpZW50KDIwMCwgMjAwKSwgb2Zmc2V0KDEwMCwgMTAwKSwgbGF5ZXIo
MjAwLCAyMDApJworUEFTUyBzaW11bGF0ZUVsZW1lbnRDbGljayhzcGFuRWxlbWVudCk7IGlzICdj
bGllbnQoMTE2LCAxMTEpLCBvZmZzZXQoMTYsIDExKSwgbGF5ZXIoMTE2LCAxMTEpJworUEFTUyBz
aW11bGF0ZUVsZW1lbnRDbGljayhpbnB1dEVsZW1lbnQpOyBpcyAnY2xpZW50KDE5OSwgMzI4KSwg
b2Zmc2V0KDQwLCAxMyksIGxheWVyKDk0LCAxMyknCitQQVNTIHNpbXVsYXRlRWxlbWVudENsaWNr
KGJ1dHRvbkVsZW1lbnQpOyBpcyAnY2xpZW50KDEzNSwgNDgzKSwgb2Zmc2V0KDI4LCAxNiksIGxh
eWVyKDEzNSwgNDgzKScKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVs
YXRpdmUtcG9zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tb3VzZS1yZWxhdGl2ZS1wb3NpdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIGh0bWwsIGJvZHkg
eworICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIHBhZGRpbmc6IDA7CisgICAgfQorICAgIAor
ICAgICN0ZXN0MSB7CisgICAgICAgIG1hcmdpbjogMTAwcHg7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogc2lsdmVyOwor
ICAgIH0KKworICAgICN0ZXN0MiB7CisgICAgICAgIG1hcmdpbjogLTkwcHggMCAwIDEwMHB4Owor
ICAgICAgICB3aWR0aDogMTkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7CisgICAgICAgIGJv
cmRlcjogMXB4IHNvbGlkIHNpbHZlcjsKKyAgICAgICAgcGFkZGluZzogNHB4OworICAgIH0KKwor
ICAgICN0ZXN0MiA+IGRpdiB7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
aGVpZ2h0OiAxNTBweDsKKyAgICAgICAgd2lkdGg6IDE1MHB4OworICAgICAgICBvdmVyZmxvdzog
YXV0bzsKKyAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CisgICAgfQorCisgICAgI3Rlc3QyID4g
ZGl2ID4gaW5wdXQgeworICAgICAgICB3aWR0aDogODBweDsKKyAgICAgICAgbWFyZ2luOiAxNTBw
eDsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQ7CisgICAgfQorPC9zdHlsZT4KKzxib2R5Pgor
ICAgIDxkaXYgaWQ9InRlc3QxIj4KKyAgICAgICAgPHNwYW4+c3Bhbjwvc3Bhbj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGlkPSJ0ZXN0MiI+CisgICAgICAgIDxkaXY+CisgICAgICAgICAgICA8aW5w
dXQgdHlwZT0idGV4dCIgdmFsdWU9ImlucHV0Ij4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxi
dXR0b24+YnV0dG9uPC9idXR0b24+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHNpbXVsYXRlRWxlbWVudENs
aWNrKGVsZW1lbnQpCisgICAgeworICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUp
OworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgIHJldHVybiAn
VGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJzsKKworICAgICAgICB2YXIgcmVzdWx0Owor
ICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lcihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmVzdWx0ID0gJ2NsaWVudCgnICsgZXZlbnQuY2xpZW50WCArICcsICcgKyBldmVudC5jbGllbnRZ
ICsKKyAgICAgICAgICAgICAgICAgICAgJyksIG9mZnNldCgnICsgZXZlbnQub2Zmc2V0WCArICcs
ICcgKyBldmVudC5vZmZzZXRZICsKKyAgICAgICAgICAgICAgICAgICAgJyksIGxheWVyKCcgKyBl
dmVudC5sYXllclggKyAnLCAnICsgZXZlbnQubGF5ZXJZICsgJyknOworICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlzdGVuZXIs
IGZhbHNlKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocmVjdC5sZWZ0ICsgcmVj
dC53aWR0aCAvIDIsIHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyKTsKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdmFyIHRlc3RFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJyk7CisgICAgdmFyIHNwYW5FbGVtZW50ID0g
dGVzdEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICB2YXIgdGVz
dEVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJyk7CisgICAgdmFyIGlu
cHV0RWxlbWVudCA9IHRlc3RFbGVtZW50Mi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVsw
XTsKKyAgICB2YXIgYnV0dG9uRWxlbWVudCA9IHRlc3RFbGVtZW50Mi5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnYnV0dG9uJylbMF07CisKKyAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50Q2xpY2so
dGVzdEVsZW1lbnQpOyIsICInY2xpZW50KDIwMCwgMjAwKSwgb2Zmc2V0KDEwMCwgMTAwKSwgbGF5
ZXIoMjAwLCAyMDApJyIpOworICAgIHNob3VsZEJlKCJzaW11bGF0ZUVsZW1lbnRDbGljayhzcGFu
RWxlbWVudCk7IiwgIidjbGllbnQoMTE2LCAxMTEpLCBvZmZzZXQoMTYsIDExKSwgbGF5ZXIoMTE2
LCAxMTEpJyIpOworICAgIHNob3VsZEJlKCJzaW11bGF0ZUVsZW1lbnRDbGljayhpbnB1dEVsZW1l
bnQpOyIsICInY2xpZW50KDE5OSwgMzI4KSwgb2Zmc2V0KDQwLCAxMyksIGxheWVyKDk0LCAxMykn
Iik7CisgICAgc2hvdWxkQmUoInNpbXVsYXRlRWxlbWVudENsaWNrKGJ1dHRvbkVsZW1lbnQpOyIs
ICInY2xpZW50KDEzNSwgNDgzKSwgb2Zmc2V0KDI4LCAxNiksIGxheWVyKDEzNSwgNDgzKSciKTsK
Kzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0cyB0aGF0IG1v
dXNlIGV2ZW50IGRpc3BhdGNoIGlzIGxpbmVhciB3aXRoIHJlc3BlY3QgdG8gdGhlIG51bWJlciBv
ZiBwYXJlbnQgZWxlbWVudHMuCitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL3BlcmYvbW91c2Ut
ZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9tYWduaXR1ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgLm91dGVyIHsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBtYXJnaW46IDAuMjVweDsKKyAg
ICAgICAgcGFkZGluZzogMC4yNXB4OworICAgIH0KKyAgICAuaW5uZXIgeworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IHJl
ZDsKKyAgICB9Cis8L3N0eWxlPgorPGRpdiBpZD0idGVzdCI+PC9kaXY+Cis8c2NyaXB0PgorCit2
YXIgaW5uZXJFbGVtZW50LCByZXBvcnRlZFBvc2l0aW9uOwordmFyIHRlc3RFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKKworZnVuY3Rpb24gc2V0dXBGdW5jdGlvbiht
YWduaXR1ZGUpCit7CisgICAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CisgICAgdmFyIGVs
ZW1lbnQsIHBhcmVudCA9IHRlc3RFbGVtZW50OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFn
bml0dWRlOyBpKyspIHsKKyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdvdXRlcic7CisgICAgICAgIHBh
cmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICAgICAgcGFyZW50ID0gZWxlbWVudDsKKyAg
ICB9CisgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gJ2lubmVyJzsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgZWxlbWVudC5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVw
b3J0ZWRQb3NpdGlvbiA9IGUub2Zmc2V0WCArICcsICcgKyBlLm9mZnNldFk7CisgICAgfTsKKyAg
ICBpbm5lckVsZW1lbnQgPSBlbGVtZW50OworfQorCitmdW5jdGlvbiB0ZXN0KG1hZ25pdHVkZSkK
K3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIHZhciByZWN0ID0gaW5u
ZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygwLCAwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocmVjdC5s
ZWZ0LCByZWN0LnRvcCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDAsIDApOwor
ICAgIH0KK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IG1vdXNlIGV2ZW50
IGRpc3BhdGNoIGlzIGxpbmVhciB3aXRoIHJlc3BlY3QgdG8gdGhlIG51bWJlciBvZiBwYXJlbnQg
ZWxlbWVudHMuIik7CitNYWduaXR1ZGUucnVuKHNldHVwRnVuY3Rpb24sIHRlc3QsIE1hZ25pdHVk
ZS5MSU5FQVIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>
<flag name="review"
          id="79384"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87004</attachid>
            <date>2011-03-25 19:52:01 -0700</date>
            <delta_ts>2011-03-28 13:48:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>57130.patch</filename>
            <type>text/plain</type>
            <size>14954</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDIwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMjUgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGF0aXZlIG1vdXNlIGNvb3JkaW5hdGVzIHJlY2FsY3VsYXRl
ZCBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQ2FsY3VsYXRlIHJlbGF0aXZlIGNvb3JkaW5hdGVz
IGxhemlseSBmb3IgbW91c2UgZXZlbnRzIGluc3RlYWQgb2YgZG9pbmcKKyAgICAgICAgaXQgZm9y
IGVhY2ggdGFyZ2V0LiBTcGVlZHMgdXAgZGlzcGF0Y2hpbmcgb2YgbW91c2UgZXZlbnRzIGluIGRl
ZXAgZG9tCisgICAgICAgIHN0cnVjdHVyZXMgc2lnbmlmaWNhbnRseSwgTyhuXjIpIHRvIE8obiku
CisKKyAgICAgICAgQWxzbyBmaXhlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzQ5NzMKKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUt
cG9zaXRpb24uaHRtbAorICAgICAgICAgICAgICAgcGVyZi9tb3VzZS1ldmVudC5odG1sCisKKyAg
ICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFRhcmdl
dCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
OjpyZWNlaXZlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVk
RXZlbnQ6OmxheWVyWCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bGF5
ZXJZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKToKKyAgICAgICAgKiBk
b20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVSUV2ZW50OjpsYXllclgpOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVu
dDo6bGF5ZXJZKToKKyAgICAgICAgKiBkb20vVUlFdmVudC5oOgorCiAyMDExLTAzLTI1ICBLZXZp
biBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVp
bGQgZml4LCBkb24ndCB1c2UgdGhlIG5ldyBGUEQgaW1wbGVtZW50YXRpb24geWV0LCB1bnRpbCB3
ZSBjYW4gbWVyZ2Ugb3VycyB3aXRoIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lv
biA4MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3Miw2ICsyNzIsOSBAQCB2b2lkIEV2ZW50OjpzdG9yZVJlc3VsdChjb25zdCBTdHJpbmcm
KQogCiB2b2lkIEV2ZW50OjpzZXRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gdGFyZ2V0
KQogeworICAgIGlmIChtX3RhcmdldCA9PSB0YXJnZXQpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fdGFyZ2V0ID0gdGFyZ2V0OwogICAgIGlmIChtX3RhcmdldCkKICAgICAgICAgcmVjZWl2ZWRU
YXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAko
cmV2aXNpb24gODE5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpN
b3VzZVJlbGF0ZWRFdmVudCgpCiAgICAgLCBtX29mZnNldFgoMCkKICAgICAsIG1fb2Zmc2V0WSgw
KQogICAgICwgbV9pc1NpbXVsYXRlZChmYWxzZSkKKyAgICAsIG1faGFzQ2FjaGVkUmVsYXRpdmVQ
b3NpdGlvbihmYWxzZSkKIHsKIH0KIApAQCAtOTEsMjEgKzkyLDIwIEBAIE1vdXNlUmVsYXRlZEV2
ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb24KIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRD
b29yZGluYXRlcygpCiB7CiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFsdWVzIGZvciBjb29yZGlu
YXRlcy4KLSAgICAvLyBDb3JyZWN0IHZhbHVlcyBjYW4ndCBiZSBjb21wdXRlZCB1bnRpbCB3ZSBo
YXZlIGF0IHRhcmdldCwgc28gcmVjZWl2ZWRUYXJnZXQKLSAgICAvLyBkb2VzIHRoZSAicmVhbCIg
Y29tcHV0YXRpb24uCisgICAgLy8gQ29ycmVjdCB2YWx1ZXMgYXJlIGNvbXB1dGVkIGxhemlseSwg
c2VlIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uLgogICAgIG1fbGF5ZXJYID0gbV9wYWdlWDsKICAg
ICBtX2xheWVyWSA9IG1fcGFnZVk7CiAgICAgbV9vZmZzZXRYID0gbV9wYWdlWDsKICAgICBtX29m
ZnNldFkgPSBtX3BhZ2VZOwogCiAgICAgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOworICAgIG1faGFz
Q2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQogCiB2b2lkIE1vdXNlUmVsYXRlZEV2
ZW50Ojppbml0Q29vcmRpbmF0ZXMoaW50IGNsaWVudFgsIGludCBjbGllbnRZKQogewogICAgIC8v
IFNldCB1cCBpbml0aWFsIHZhbHVlcyBmb3IgY29vcmRpbmF0ZXMuCi0gICAgLy8gQ29ycmVjdCB2
YWx1ZXMgY2FuJ3QgYmUgY29tcHV0ZWQgdW50aWwgd2UgaGF2ZSBhdCB0YXJnZXQsIHNvIHJlY2Vp
dmVkVGFyZ2V0Ci0gICAgLy8gZG9lcyB0aGUgInJlYWwiIGNvbXB1dGF0aW9uLgorICAgIC8vIENv
cnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3Np
dGlvbi4KICAgICBtX2NsaWVudFggPSBjbGllbnRYOwogICAgIG1fY2xpZW50WSA9IGNsaWVudFk7
CiAgICAgbV9wYWdlWCA9IGNsaWVudFggKyBjb250ZW50c1godmlldygpKTsKQEAgLTExNiw5ICsx
MTYsMTAgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKAogICAgIG1f
b2Zmc2V0WSA9IG1fcGFnZVk7CiAKICAgICBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CisgICAgbV9o
YXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7CiB9CiAKLXN0YXRpYyBmbG9hdCBwYWdl
Wm9vbUZhY3RvcihVSUV2ZW50KiBldmVudCkKK3N0YXRpYyBmbG9hdCBwYWdlWm9vbUZhY3Rvcihj
b25zdCBVSUV2ZW50KiBldmVudCkKIHsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGV2ZW50LT52
aWV3KCk7CiAgICAgaWYgKCF3aW5kb3cpCkBAIC0xMzcsOSArMTM4LDEzIEBAIHZvaWQgTW91c2VS
ZWxhdGVkRXZlbnQ6OmNvbXB1dGVQYWdlTG9jYXQKIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6
cmVjZWl2ZWRUYXJnZXQoKQogewotICAgIEFTU0VSVCh0YXJnZXQoKSk7Ci0gICAgTm9kZSogdGFy
ZyA9IHRhcmdldCgpLT50b05vZGUoKTsKLSAgICBpZiAoIXRhcmcpCisgICAgbV9oYXNDYWNoZWRS
ZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7Cit9CisKK3ZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCkKK3sKKyAgICBOb2RlKiB0YXJnZXROb2RlID0gdGFyZ2V0
KCkgPyB0YXJnZXQoKS0+dG9Ob2RlKCkgOiAwOworICAgIGlmICghdGFyZ2V0Tm9kZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gQ29tcHV0ZSBjb29yZGluYXRlcyB0aGF0IGFyZSBiYXNlZCBv
biB0aGUgdGFyZ2V0LgpAQCAtMTQ5LDExICsxNTQsMTEgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVu
dDo6cmVjZWl2ZWRUYXJnZXQoKQogICAgIG1fb2Zmc2V0WSA9IG1fcGFnZVk7CiAKICAgICAvLyBN
dXN0IGhhdmUgYW4gdXBkYXRlZCByZW5kZXIgdHJlZSBmb3IgdGhpcyBtYXRoIHRvIHdvcmsgY29y
cmVjdGx5LgotICAgIHRhcmctPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAg
ICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICAv
LyBBZGp1c3Qgb2Zmc2V0WC9ZIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQncyBwb3NpdGlv
bi4KICAgICBpZiAoIWlzU2ltdWxhdGVkKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
ciA9IHRhcmctPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogciA9IHRh
cmdldE5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb3Mg
PSByLT5hYnNvbHV0ZVRvTG9jYWwoYWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gcGFnZVpvb21GYWN0b3IodGhpcyk7CiAgICAg
ICAgICAgICBtX29mZnNldFggPSBscm91bmRmKGxvY2FsUG9zLngoKSAvIHpvb21GYWN0b3IpOwpA
QCAtMTY2LDE3ICsxNzEsNDggQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRUYXJn
ZXQoKQogICAgIC8vIE91ciBSZW5kZXJMYXllciBpcyBhIG1vcmUgbW9kZXJuIGNvbmNlcHQsIGFu
ZCBsYXllclgvWSBpcyBzb21lCiAgICAgLy8gb3RoZXIgbm90aW9uIGFib3V0IGdyb3VwcyBvZiBl
bGVtZW50cyAobGVmdCBvdmVyIGZyb20gdGhlIE5ldHNjYXBlIDQgZGF5cz8pOwogICAgIC8vIHdl
IHNob3VsZCB0ZXN0IGFuZCBmaXggdGhpcy4KLSAgICBOb2RlKiBuID0gdGFyZzsKKyAgICBOb2Rl
KiBuID0gdGFyZ2V0Tm9kZTsKICAgICB3aGlsZSAobiAmJiAhbi0+cmVuZGVyZXIoKSkKICAgICAg
ICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICBpZiAobikgewotICAgICAgICBSZW5kZXJMYXll
ciogbGF5ZXIgPSBuLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOworCisgICAgUmVuZGVy
TGF5ZXIqIGxheWVyOworICAgIGlmIChuICYmIChsYXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xv
c2luZ0xheWVyKCkpKSB7CiAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9uKCk7CiAg
ICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKICAgICAgICAg
ICAgIG1fbGF5ZXJYIC09IGxheWVyLT54KCk7CiAgICAgICAgICAgICBtX2xheWVyWSAtPSBsYXll
ci0+eSgpOwogICAgICAgICB9CiAgICAgfQorCisgICAgbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0
aW9uID0gdHJ1ZTsKK30KKworaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclgoKQoreworICAg
IGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQorICAgICAgICBjb21wdXRlUmVsYXRp
dmVQb3NpdGlvbigpOworICAgIHJldHVybiBtX2xheWVyWDsKK30KKworaW50IE1vdXNlUmVsYXRl
ZEV2ZW50OjpsYXllclkoKQoreworICAgIGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9u
KQorICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOworICAgIHJldHVybiBtX2xheWVy
WTsKK30KKworaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKCkKK3sKKyAgICBpZiAoIW1f
aGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRp
b24oKTsKKyAgICByZXR1cm4gbV9vZmZzZXRYOworfQorCitpbnQgTW91c2VSZWxhdGVkRXZlbnQ6
Om9mZnNldFkoKQoreworICAgIGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQorICAg
ICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOworICAgIHJldHVybiBtX29mZnNldFk7CiB9
CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVgoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgJKHJldmlzaW9uIDgxOTc1KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICsz
OCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBzY3JlZW5ZKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JlZW5ZOyB9CiAgICAgICAgIGludCBjbGllbnRYKCkgY29uc3QgeyByZXR1
cm4gbV9jbGllbnRYOyB9CiAgICAgICAgIGludCBjbGllbnRZKCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnRZOyB9Ci0gICAgICAgIGludCBsYXllclgoKSBjb25zdCB7IHJldHVybiBtX2xheWVyWDsg
fQotICAgICAgICBpbnQgbGF5ZXJZKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclk7IH0KLSAgICAg
ICAgaW50IG9mZnNldFgoKSBjb25zdCB7IHJldHVybiBtX29mZnNldFg7IH0KLSAgICAgICAgaW50
IG9mZnNldFkoKSBjb25zdCB7IHJldHVybiBtX29mZnNldFk7IH0KKyAgICAgICAgaW50IGxheWVy
WCgpOworICAgICAgICBpbnQgbGF5ZXJZKCk7CisgICAgICAgIGludCBvZmZzZXRYKCk7CisgICAg
ICAgIGludCBvZmZzZXRZKCk7CiAgICAgICAgIGJvb2wgaXNTaW11bGF0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzU2ltdWxhdGVkOyB9CiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VYKCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VZKCkgY29uc3Q7CkBAIC02NCw2ICs2NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkVGFyZ2V0KCk7
CiAKICAgICAgICAgdm9pZCBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CisgICAgICAgIHZvaWQgY29t
cHV0ZVJlbGF0aXZlUG9zaXRpb24oKTsKICAgICAgICAgCiAgICAgICAgIC8vIEV4cG9zZSB0aGVz
ZSBzbyBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudCBjYW4gc2V0IHRoZW0uCiAgICAgICAgIGlu
dCBtX3NjcmVlblg7CkBAIC04MCw2ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgaW50IG1fb2Zmc2V0WTsKICAgICAgICAgSW50UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwog
ICAgICAgICBib29sIG1faXNTaW11bGF0ZWQ7CisgICAgICAgIGJvb2wgbV9oYXNDYWNoZWRSZWxh
dGl2ZVBvc2l0aW9uOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vVUlFdmVudC5jcHAJKHJldmlzaW9uIDgxOTc1KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1VJRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMiArNjksMTIgQEAgaW50IFVJRXZl
bnQ6OmNoYXJDb2RlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFVJRXZlbnQ6Omxh
eWVyWCgpIGNvbnN0CitpbnQgVUlFdmVudDo6bGF5ZXJYKCkKIHsKICAgICByZXR1cm4gMDsKIH0K
IAotaW50IFVJRXZlbnQ6OmxheWVyWSgpIGNvbnN0CitpbnQgVUlFdmVudDo6bGF5ZXJZKCkKIHsK
ICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaAkocmV2aXNpb24gODE5NzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4
ICs1Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBpbnQga2V5Q29k
ZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGludCBjaGFyQ29kZSgpIGNvbnN0OwogCi0gICAg
ICAgIHZpcnR1YWwgaW50IGxheWVyWCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIGludCBsYXll
clkoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBpbnQgbGF5ZXJYKCk7CisgICAgICAgIHZpcnR1
YWwgaW50IGxheWVyWSgpOwogCiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VYKCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgaW50IHBhZ2VZKCkgY29uc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjAy
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDExLTAzLTI1ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWxhdGl2ZSBtb3Vz
ZSBjb29yZGluYXRlcyByZWNhbGN1bGF0ZWQgZm9yIHRhcmdldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxMzAKKworICAgICAgICBBZGQgbW91c2Ug
ZXZlbnQgcGVyZm9ybWFuY2UgdGVzdC4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL21vdXNlLXJl
bGF0aXZlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGVyZi9t
b3VzZS1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBlcmYvbW91c2UtZXZl
bnQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUu
Y29tPgogCiAgICAgICAgIHBsdWdpbnMvZW1iZWQtcHJlZmVycy1wbHVnaW5zLWZvci1pbWFnZXMu
aHRtbCBvbmx5IHBhc3Npbmcgb24gU25vd0xlb3BhcmQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tb3VzZS1yZWxhdGl2ZS1wb3NpdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVs
YXRpdmUtcG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K3NwYW4KKworYnV0dG9uCitQQVNTIHNpbXVsYXRlRWxlbWVudENsaWNrKHRlc3RFbGVtZW50KTsg
aXMgJ2NsaWVudCgyMDAsIDIwMCksIG9mZnNldCgxMDAsIDEwMCksIGxheWVyKDIwMCwgMjAwKScK
K1BBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVsZW1lbnQpOyBpcyAnY2xpZW50KDExNiwg
MTExKSwgb2Zmc2V0KDE2LCAxMSksIGxheWVyKDExNiwgMTExKScKK1BBU1Mgc2ltdWxhdGVFbGVt
ZW50Q2xpY2soaW5wdXRFbGVtZW50KTsgaXMgJ2NsaWVudCgxOTksIDMyOCksIG9mZnNldCg0MCwg
MTMpLCBsYXllcig5NCwgMTMpJworUEFTUyBzaW11bGF0ZUVsZW1lbnRDbGljayhidXR0b25FbGVt
ZW50KTsgaXMgJ2NsaWVudCgxMzUsIDQ4MyksIG9mZnNldCgyOCwgMTYpLCBsYXllcigxMzUsIDQ4
MyknCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0
aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVs
YXRpdmUtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICBodG1sLCBib2R5IHsKKyAgICAgICAg
bWFyZ2luOiAwOworICAgICAgICBwYWRkaW5nOiAwOworICAgIH0KKyAgICAKKyAgICAjdGVzdDEg
eworICAgICAgICBtYXJnaW46IDEwMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQ6IHNpbHZlcjsKKyAgICB9CisKKyAg
ICAjdGVzdDIgeworICAgICAgICBtYXJnaW46IC05MHB4IDAgMCAxMDBweDsKKyAgICAgICAgd2lk
dGg6IDE5MHB4OworICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgICAgICBib3JkZXI6IDFweCBz
b2xpZCBzaWx2ZXI7CisgICAgICAgIHBhZGRpbmc6IDRweDsKKyAgICB9CisKKyAgICAjdGVzdDIg
PiBkaXYgeworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGhlaWdodDogMTUw
cHg7CisgICAgICAgIHdpZHRoOiAxNTBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAg
ICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgIH0KKworICAgICN0ZXN0MiA+IGRpdiA+IGlucHV0
IHsKKyAgICAgICAgd2lkdGg6IDgwcHg7CisgICAgICAgIG1hcmdpbjogMTUwcHg7CisgICAgICAg
IGJvcmRlcjogMXB4IHNvbGlkOworICAgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8ZGl2IGlk
PSJ0ZXN0MSI+CisgICAgICAgIDxzcGFuPnNwYW48L3NwYW4+CisgICAgPC9kaXY+CisgICAgPGRp
diBpZD0idGVzdDIiPgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPGlucHV0IHR5cGU9InRl
eHQiIHZhbHVlPSJpbnB1dCI+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8YnV0dG9uPmJ1dHRv
bjwvYnV0dG9uPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBzaW11bGF0ZUVsZW1lbnRDbGljayhlbGVtZW50
KQorICAgIHsKKyAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTsKKyAgICAgICAg
aWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgICAgICByZXR1cm4gJ1RoaXMgdGVzdCBy
ZXF1aXJlcyBldmVudFNlbmRlcic7CisKKyAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgZnVu
Y3Rpb24gbGlzdGVuZXIoZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICdj
bGllbnQoJyArIGV2ZW50LmNsaWVudFggKyAnLCAnICsgZXZlbnQuY2xpZW50WSArCisgICAgICAg
ICAgICAgICAgICAgICcpLCBvZmZzZXQoJyArIGV2ZW50Lm9mZnNldFggKyAnLCAnICsgZXZlbnQu
b2Zmc2V0WSArCisgICAgICAgICAgICAgICAgICAgICcpLCBsYXllcignICsgZXZlbnQubGF5ZXJY
ICsgJywgJyArIGV2ZW50LmxheWVyWSArICcpJzsKKyAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAg
ICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7Cisg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAy
LCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMik7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIGVsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0ZXN0MScpOworICAgIHZhciBzcGFuRWxlbWVudCA9IHRlc3RFbGVtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisgICAgdmFyIHRlc3RFbGVtZW50MiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MicpOworICAgIHZhciBpbnB1dEVsZW1lbnQg
PSB0ZXN0RWxlbWVudDIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JylbMF07CisgICAgdmFy
IGJ1dHRvbkVsZW1lbnQgPSB0ZXN0RWxlbWVudDIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRv
bicpWzBdOworCisgICAgc2hvdWxkQmUoInNpbXVsYXRlRWxlbWVudENsaWNrKHRlc3RFbGVtZW50
KTsiLCAiJ2NsaWVudCgyMDAsIDIwMCksIG9mZnNldCgxMDAsIDEwMCksIGxheWVyKDIwMCwgMjAw
KSciKTsKKyAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVsZW1lbnQpOyIs
ICInY2xpZW50KDExNiwgMTExKSwgb2Zmc2V0KDE2LCAxMSksIGxheWVyKDExNiwgMTExKSciKTsK
KyAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50Q2xpY2soaW5wdXRFbGVtZW50KTsiLCAiJ2Ns
aWVudCgxOTksIDMyOCksIG9mZnNldCg0MCwgMTMpLCBsYXllcig5NCwgMTMpJyIpOworICAgIHNo
b3VsZEJlKCJzaW11bGF0ZUVsZW1lbnRDbGljayhidXR0b25FbGVtZW50KTsiLCAiJ2NsaWVudCgx
MzUsIDQ4MyksIG9mZnNldCgyOCwgMTYpLCBsYXllcigxMzUsIDQ4MyknIik7Cis8L3NjcmlwdD4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BlcmYvbW91c2UtZXZlbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BlcmYvbW91c2UtZXZlbnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgdGhhdCBtb3VzZSBldmVudCBk
aXNwYXRjaCBpcyBsaW5lYXIgd2l0aCByZXNwZWN0IHRvIHRoZSBudW1iZXIgb2YgcGFyZW50IGVs
ZW1lbnRzLgorUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUzIEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFnbml0
dWRlLXBlcmYuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIC5vdXRlciB7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbWFyZ2luOiAwLjI1cHg7CisgICAgICAgIHBhZGRp
bmc6IDAuMjVweDsKKyAgICB9CisgICAgLmlubmVyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CisgICAgfQor
PC9zdHlsZT4KKzxkaXYgaWQ9InRlc3QiPjwvZGl2PgorPHNjcmlwdD4KKwordmFyIGlubmVyRWxl
bWVudCwgcmVwb3J0ZWRQb3NpdGlvbjsKK3ZhciB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0Jyk7CisKK2Z1bmN0aW9uIHNldHVwRnVuY3Rpb24obWFnbml0dWRlKQor
eworICAgIHRlc3RFbGVtZW50LmlubmVySFRNTCA9ICcnOworICAgIHZhciBlbGVtZW50LCBwYXJl
bnQgPSB0ZXN0RWxlbWVudDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hZ25pdHVkZTsgaSsr
KSB7CisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAnb3V0ZXInOworICAgICAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgICAgIHBhcmVudCA9IGVsZW1lbnQ7CisgICAgfQorICAgIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBlbGVtZW50LmNsYXNz
TmFtZSA9ICdpbm5lcic7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGVs
ZW1lbnQub25tb3VzZW92ZXIgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlcG9ydGVkUG9zaXRp
b24gPSBlLm9mZnNldFggKyAnLCAnICsgZS5vZmZzZXRZOworICAgIH07CisgICAgaW5uZXJFbGVt
ZW50ID0gZWxlbWVudDsKK30KKworZnVuY3Rpb24gdGVzdChtYWduaXR1ZGUpCit7CisgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICB2YXIgcmVjdCA9IGlubmVyRWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
MCwgMCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHJlY3QubGVmdCwgcmVjdC50
b3ApOworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygwLCAwKTsKKyAgICB9Cit9CisK
K01hZ25pdHVkZS5kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBtb3VzZSBldmVudCBkaXNwYXRjaCBp
cyBsaW5lYXIgd2l0aCByZXNwZWN0IHRvIHRoZSBudW1iZXIgb2YgcGFyZW50IGVsZW1lbnRzLiIp
OworTWFnbml0dWRlLnJ1bihzZXR1cEZ1bmN0aW9uLCB0ZXN0LCBNYWduaXR1ZGUuTElORUFSKTsK
Kzwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>
<flag name="review"
          id="79385"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87193</attachid>
            <date>2011-03-28 13:48:59 -0700</date>
            <delta_ts>2011-03-29 04:02:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>57130_3.patch</filename>
            <type>text/plain</type>
            <size>17511</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMjggIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbGF0aXZlIG1vdXNlIGNvb3JkaW5hdGVzIHJlY2FsY3VsYXRl
ZCBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQ2FsY3VsYXRlIHJlbGF0aXZlIGNvb3JkaW5hdGVz
IGxhemlseSBmb3IgbW91c2UgZXZlbnRzIGluc3RlYWQgb2YgZG9pbmcKKyAgICAgICAgaXQgZm9y
IGVhY2ggdGFyZ2V0LiBTcGVlZHMgdXAgZGlzcGF0Y2hpbmcgb2YgbW91c2UgZXZlbnRzIGluIGRl
ZXAgZG9tCisgICAgICAgIHN0cnVjdHVyZXMgc2lnbmlmaWNhbnRseSwgTyhuXjIpIHRvIE8obiku
CisKKyAgICAgICAgQWxzbyBmaXhlcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzQ5NzMKKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUt
cG9zaXRpb24uaHRtbAorICAgICAgICAgICAgICAgcGVyZi9tb3VzZS1ldmVudC5odG1sCisKKyAg
ICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFRhcmdl
dCk6CisgICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OnBhZ2Vab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
OjpyZWNlaXZlZFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVk
RXZlbnQ6OmxheWVyWCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6bGF5
ZXJZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKToKKyAgICAgICAgKiBk
b20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20vVUlFdmVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVSUV2ZW50OjpsYXllclgpOgorICAgICAgICAoV2ViQ29yZTo6VUlFdmVu
dDo6bGF5ZXJZKToKKyAgICAgICAgKiBkb20vVUlFdmVudC5oOgorCiAyMDExLTAzLTI4ICBKZXNz
aWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQg
YnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gODE5NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiAr
MjcyLDkgQEAgdm9pZCBFdmVudDo6c3RvcmVSZXN1bHQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBF
dmVudDo6c2V0VGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCkKIHsKKyAgICBp
ZiAobV90YXJnZXQgPT0gdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKICAgICBtX3RhcmdldCA9
IHRhcmdldDsKICAgICBpZiAobV90YXJnZXQpCiAgICAgICAgIHJlY2VpdmVkVGFyZ2V0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDgx
OTc1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVk
RXZlbnQoKQogICAgICwgbV9vZmZzZXRYKDApCiAgICAgLCBtX29mZnNldFkoMCkKICAgICAsIG1f
aXNTaW11bGF0ZWQoZmFsc2UpCisgICAgLCBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24oZmFs
c2UpCiB7CiB9CiAKQEAgLTkxLDIxICs5MiwyMCBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VS
ZWxhdGVkRXZlbnQoY29uCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMo
KQogewogICAgIC8vIFNldCB1cCBpbml0aWFsIHZhbHVlcyBmb3IgY29vcmRpbmF0ZXMuCi0gICAg
Ly8gQ29ycmVjdCB2YWx1ZXMgY2FuJ3QgYmUgY29tcHV0ZWQgdW50aWwgd2UgaGF2ZSBhdCB0YXJn
ZXQsIHNvIHJlY2VpdmVkVGFyZ2V0Ci0gICAgLy8gZG9lcyB0aGUgInJlYWwiIGNvbXB1dGF0aW9u
LgorICAgIC8vIENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBjb21wdXRl
UmVsYXRpdmVQb3NpdGlvbi4KICAgICBtX2xheWVyWCA9IG1fcGFnZVg7CiAgICAgbV9sYXllclkg
PSBtX3BhZ2VZOwogICAgIG1fb2Zmc2V0WCA9IG1fcGFnZVg7CiAgICAgbV9vZmZzZXRZID0gbV9w
YWdlWTsKIAogICAgIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsKKyAgICBtX2hhc0NhY2hlZFJlbGF0
aXZlUG9zaXRpb24gPSBmYWxzZTsKIH0KIAogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENv
b3JkaW5hdGVzKGludCBjbGllbnRYLCBpbnQgY2xpZW50WSkKIHsKICAgICAvLyBTZXQgdXAgaW5p
dGlhbCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgotICAgIC8vIENvcnJlY3QgdmFsdWVzIGNhbid0
IGJlIGNvbXB1dGVkIHVudGlsIHdlIGhhdmUgYXQgdGFyZ2V0LCBzbyByZWNlaXZlZFRhcmdldAot
ICAgIC8vIGRvZXMgdGhlICJyZWFsIiBjb21wdXRhdGlvbi4KKyAgICAvLyBDb3JyZWN0IHZhbHVl
cyBhcmUgY29tcHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCiAgICAg
bV9jbGllbnRYID0gY2xpZW50WDsKICAgICBtX2NsaWVudFkgPSBjbGllbnRZOwogICAgIG1fcGFn
ZVggPSBjbGllbnRYICsgY29udGVudHNYKHZpZXcoKSk7CkBAIC0xMTYsOSArMTE2LDEwIEBAIHZv
aWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcygKICAgICBtX29mZnNldFkgPSBt
X3BhZ2VZOwogCiAgICAgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOworICAgIG1faGFzQ2FjaGVkUmVs
YXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQogCi1zdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3Io
VUlFdmVudCogZXZlbnQpCitzdGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoY29uc3QgVUlFdmVu
dCogZXZlbnQpCiB7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBldmVudC0+dmlldygpOwogICAg
IGlmICghd2luZG93KQpAQCAtMTM3LDkgKzEzOCwxMyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50
Ojpjb21wdXRlUGFnZUxvY2F0CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFy
Z2V0KCkKIHsKLSAgICBBU1NFUlQodGFyZ2V0KCkpOwotICAgIE5vZGUqIHRhcmcgPSB0YXJnZXQo
KS0+dG9Ob2RlKCk7Ci0gICAgaWYgKCF0YXJnKQorICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3Np
dGlvbiA9IGZhbHNlOworfQorCit2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRp
dmVQb3NpdGlvbigpCit7CisgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IHRhcmdldCgpID8gdGFyZ2V0
KCktPnRvTm9kZSgpIDogMDsKKyAgICBpZiAoIXRhcmdldE5vZGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIENvbXB1dGUgY29vcmRpbmF0ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIHRhcmdl
dC4KQEAgLTE0OSwxMSArMTU0LDExIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVk
VGFyZ2V0KCkKICAgICBtX29mZnNldFkgPSBtX3BhZ2VZOwogCiAgICAgLy8gTXVzdCBoYXZlIGFu
IHVwZGF0ZWQgcmVuZGVyIHRyZWUgZm9yIHRoaXMgbWF0aCB0byB3b3JrIGNvcnJlY3RseS4KLSAg
ICB0YXJnLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgdGFyZ2V0Tm9k
ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgLy8gQWRqdXN0IG9m
ZnNldFgvWSB0byBiZSByZWxhdGl2ZSB0byB0aGUgdGFyZ2V0J3MgcG9zaXRpb24uCiAgICAgaWYg
KCFpc1NpbXVsYXRlZCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJnLT5y
ZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJnZXROb2RlLT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9zID0gci0+YWJzb2x1
dGVUb0xvY2FsKGFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAg
ZmxvYXQgem9vbUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpOwogICAgICAgICAgICAgbV9v
ZmZzZXRYID0gbHJvdW5kZihsb2NhbFBvcy54KCkgLyB6b29tRmFjdG9yKTsKQEAgLTE2NiwxNyAr
MTcxLDQ4IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKICAgICAv
LyBPdXIgUmVuZGVyTGF5ZXIgaXMgYSBtb3JlIG1vZGVybiBjb25jZXB0LCBhbmQgbGF5ZXJYL1kg
aXMgc29tZQogICAgIC8vIG90aGVyIG5vdGlvbiBhYm91dCBncm91cHMgb2YgZWxlbWVudHMgKGxl
ZnQgb3ZlciBmcm9tIHRoZSBOZXRzY2FwZSA0IGRheXM/KTsKICAgICAvLyB3ZSBzaG91bGQgdGVz
dCBhbmQgZml4IHRoaXMuCi0gICAgTm9kZSogbiA9IHRhcmc7CisgICAgTm9kZSogbiA9IHRhcmdl
dE5vZGU7CiAgICAgd2hpbGUgKG4gJiYgIW4tPnJlbmRlcmVyKCkpCiAgICAgICAgIG4gPSBuLT5w
YXJlbnROb2RlKCk7Ci0gICAgaWYgKG4pIHsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0g
bi0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKworICAgIFJlbmRlckxheWVyKiBsYXll
cjsKKyAgICBpZiAobiAmJiAobGF5ZXIgPSBuLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigp
KSkgewogICAgICAgICBsYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICBmb3Ig
KDsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBtX2xheWVy
WCAtPSBsYXllci0+eCgpOwogICAgICAgICAgICAgbV9sYXllclkgLT0gbGF5ZXItPnkoKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IHRydWU7
Cit9CisKK2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bGF5ZXJYKCkKK3sKKyAgICBpZiAoIW1faGFz
Q2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24o
KTsKKyAgICByZXR1cm4gbV9sYXllclg7Cit9CisKK2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6bGF5
ZXJZKCkKK3sKKyAgICBpZiAoIW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAg
Y29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbV9sYXllclk7Cit9CisKK2lu
dCBNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WCgpCit7CisgICAgaWYgKCFtX2hhc0NhY2hlZFJl
bGF0aXZlUG9zaXRpb24pCisgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCk7CisgICAg
cmV0dXJuIG1fb2Zmc2V0WDsKK30KKworaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKCkK
K3sKKyAgICBpZiAoIW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKKyAgICAgICAgY29tcHV0
ZVJlbGF0aXZlUG9zaXRpb24oKTsKKyAgICByZXR1cm4gbV9vZmZzZXRZOwogfQogCiBpbnQgTW91
c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lvbiA4MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgc2NyZWVuWSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyZWVuWTsgfQogICAgICAgICBpbnQgY2xpZW50WCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
WDsgfQogICAgICAgICBpbnQgY2xpZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50WTsgfQot
ICAgICAgICBpbnQgbGF5ZXJYKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclg7IH0KLSAgICAgICAg
aW50IGxheWVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJZOyB9Ci0gICAgICAgIGludCBvZmZz
ZXRYKCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRYOyB9Ci0gICAgICAgIGludCBvZmZzZXRZKCkg
Y29uc3QgeyByZXR1cm4gbV9vZmZzZXRZOyB9CisgICAgICAgIGludCBsYXllclgoKTsKKyAgICAg
ICAgaW50IGxheWVyWSgpOworICAgICAgICBpbnQgb2Zmc2V0WCgpOworICAgICAgICBpbnQgb2Zm
c2V0WSgpOwogICAgICAgICBib29sIGlzU2ltdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Np
bXVsYXRlZDsgfQogICAgICAgICB2aXJ0dWFsIGludCBwYWdlWCgpIGNvbnN0OwogICAgICAgICB2
aXJ0dWFsIGludCBwYWdlWSgpIGNvbnN0OwpAQCAtNjQsNiArNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFRhcmdldCgpOwogCiAgICAgICAg
IHZvaWQgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOworICAgICAgICB2b2lkIGNvbXB1dGVSZWxhdGl2
ZVBvc2l0aW9uKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFeHBvc2UgdGhlc2Ugc28gTW91c2VF
dmVudDo6aW5pdE1vdXNlRXZlbnQgY2FuIHNldCB0aGVtLgogICAgICAgICBpbnQgbV9zY3JlZW5Y
OwpAQCAtODAsNiArODEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBtX29m
ZnNldFk7CiAgICAgICAgIEludFBvaW50IG1fYWJzb2x1dGVMb2NhdGlvbjsKICAgICAgICAgYm9v
bCBtX2lzU2ltdWxhdGVkOworICAgICAgICBib29sIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlv
bjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vVUlFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1VJRXZl
bnQuY3BwCShyZXZpc2lvbiA4MTk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksMTIgKzY5LDEyIEBAIGludCBVSUV2ZW50OjpjaGFyQ29k
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBVSUV2ZW50OjpsYXllclgoKSBjb25z
dAoraW50IFVJRXZlbnQ6OmxheWVyWCgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBVSUV2
ZW50OjpsYXllclkoKSBjb25zdAoraW50IFVJRXZlbnQ6OmxheWVyWSgpCiB7CiAgICAgcmV0dXJu
IDA7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9VSUV2ZW50LmgJKHJldmlzaW9uIDgxOTc1KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1VJRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgaW50IGtleUNvZGUoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBpbnQgY2hhckNvZGUoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGludCBsYXllclgoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBpbnQgbGF5ZXJZKCkgY29uc3Q7
CisgICAgICAgIHZpcnR1YWwgaW50IGxheWVyWCgpOworICAgICAgICB2aXJ0dWFsIGludCBsYXll
clkoKTsKIAogICAgICAgICB2aXJ0dWFsIGludCBwYWdlWCgpIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIGludCBwYWdlWSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDgyMTM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRW1pbCBBIEVrbHVuZCAgPGVh
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVsYXRpdmUgbW91c2UgY29vcmRpbmF0ZXMgcmVjYWxjdWxhdGVkIGZvciBlYWNo
IHRhcmdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTcxMzAKKworICAgICAgICAqIHB1YmxpYy9XZWJET01Nb3VzZUV2ZW50Lmg6CisgICAgICAgICog
c3JjL1dlYkRPTU1vdXNlRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJET01Nb3VzZUV2
ZW50OjpsYXllclgpOgorICAgICAgICAoV2ViS2l0OjpXZWJET01Nb3VzZUV2ZW50OjpsYXllclkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJET01Nb3VzZUV2ZW50OjpvZmZzZXRYKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRE9NTW91c2VFdmVudDo6b2Zmc2V0WSk6CisKIDIwMTEtMDMtMjggIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2Vk
OiBmaXhlZCBjaHJvbWl1bSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRPTU1vdXNlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJET01Nb3VzZUV2ZW50LmgJKHJldmlzaW9uIDgxOTc1KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogICAgIFdFQktJVF9BUEkgaW50IHNjcmVlblko
KSBjb25zdDsKICAgICBXRUJLSVRfQVBJIGludCBjbGllbnRYKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0FQSSBpbnQgY2xpZW50WSgpIGNvbnN0OwotICAgIFdFQktJVF9BUEkgaW50IGxheWVyWCgpIGNv
bnN0OwotICAgIFdFQktJVF9BUEkgaW50IGxheWVyWSgpIGNvbnN0OwotICAgIFdFQktJVF9BUEkg
aW50IG9mZnNldFgoKSBjb25zdDsKLSAgICBXRUJLSVRfQVBJIGludCBvZmZzZXRZKCkgY29uc3Q7
CisgICAgV0VCS0lUX0FQSSBpbnQgbGF5ZXJYKCk7CisgICAgV0VCS0lUX0FQSSBpbnQgbGF5ZXJZ
KCk7CisgICAgV0VCS0lUX0FQSSBpbnQgb2Zmc2V0WCgpOworICAgIFdFQktJVF9BUEkgaW50IG9m
ZnNldFkoKTsKICAgICBXRUJLSVRfQVBJIGludCBwYWdlWCgpIGNvbnN0OwogICAgIFdFQktJVF9B
UEkgaW50IHBhZ2VZKCkgY29uc3Q7CiAgICAgV0VCS0lUX0FQSSBpbnQgeCgpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTW91c2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTW91c2VFdmVudC5jcHAJ
KHJldmlzaW9uIDgxOTc1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NTW91
c2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDI0ICs1NywyNCBAQCBpbnQgV2ViRE9N
TW91c2VFdmVudDo6Y2xpZW50WSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnN0VW53cmFwPE1vdXNl
RXZlbnQ+KCktPmNsaWVudFkoKTsKIH0KIAotaW50IFdlYkRPTU1vdXNlRXZlbnQ6OmxheWVyWCgp
IGNvbnN0CitpbnQgV2ViRE9NTW91c2VFdmVudDo6bGF5ZXJYKCkKIHsKLSAgICByZXR1cm4gY29u
c3RVbndyYXA8TW91c2VFdmVudD4oKS0+bGF5ZXJYKCk7CisgICAgcmV0dXJuIHVud3JhcDxNb3Vz
ZUV2ZW50PigpLT5sYXllclgoKTsKIH0KIAotaW50IFdlYkRPTU1vdXNlRXZlbnQ6OmxheWVyWSgp
IGNvbnN0CitpbnQgV2ViRE9NTW91c2VFdmVudDo6bGF5ZXJZKCkKIHsKLSAgICByZXR1cm4gY29u
c3RVbndyYXA8TW91c2VFdmVudD4oKS0+bGF5ZXJZKCk7CisgICAgcmV0dXJuIHVud3JhcDxNb3Vz
ZUV2ZW50PigpLT5sYXllclkoKTsKIH0KIAotaW50IFdlYkRPTU1vdXNlRXZlbnQ6Om9mZnNldFgo
KSBjb25zdAoraW50IFdlYkRPTU1vdXNlRXZlbnQ6Om9mZnNldFgoKQogewotICAgIHJldHVybiBj
b25zdFVud3JhcDxNb3VzZUV2ZW50PigpLT5vZmZzZXRYKCk7CisgICAgcmV0dXJuIHVud3JhcDxN
b3VzZUV2ZW50PigpLT5vZmZzZXRYKCk7CiB9CiAKLWludCBXZWJET01Nb3VzZUV2ZW50OjpvZmZz
ZXRZKCkgY29uc3QKK2ludCBXZWJET01Nb3VzZUV2ZW50OjpvZmZzZXRZKCkKIHsKLSAgICByZXR1
cm4gY29uc3RVbndyYXA8TW91c2VFdmVudD4oKS0+b2Zmc2V0WSgpOworICAgIHJldHVybiB1bndy
YXA8TW91c2VFdmVudD4oKS0+b2Zmc2V0WSgpOwogfQogCiBpbnQgV2ViRE9NTW91c2VFdmVudDo6
cGFnZVgoKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODIxMzYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yOCAgRW1p
bCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVsYXRpdmUgbW91c2UgY29vcmRpbmF0ZXMgcmVjYWxj
dWxhdGVkIGZvciB0YXJnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU3MTMwCisKKyAgICAgICAgQWRkIG1vdXNlIGV2ZW50IHBlcmZvcm1hbmNlIHRl
c3QuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tb3VzZS1yZWxhdGl2ZS1wb3NpdGlvbi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBv
c2l0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBlcmYvbW91c2UtZXZlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL21vdXNlLWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAy
MDExLTAzLTI4ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIGFkZGVkIG5ldyBHVEsrIHRlc3QgZXhwZWN0YXRpb25zLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdXNlLXJlbGF0
aXZlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21vdXNlLXJlbGF0aXZlLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2IEBACitzcGFuCisKK1BBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2sodGVz
dEVsZW1lbnQsIFsxMDAsIDEwMCwgMjAwLCAyMDBdKTsgaXMgJzEwMCwgMTAwLCAyMDAsIDIwMCcK
K1BBU1Mgc2ltdWxhdGVFbGVtZW50Q2xpY2soc3BhbkVsZW1lbnQsIFsxNiwgMTAsIDE2LCAxMF0p
OyBpcyAnMTYsIDEwLCAxNiwgMTAnCitQQVNTIHNpbXVsYXRlRWxlbWVudENsaWNrKGlucHV0RWxl
bWVudCwgWzQwLCAxMCwgNDAsIDEwXSk7IGlzICc0MCwgMTAsIDQwLCAxMCcKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRpdmUtcG9zaXRpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3VzZS1yZWxhdGl2ZS1wb3NpdGlvbi5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW91c2UtcmVsYXRp
dmUtcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzdHlsZT4KKyAgICBodG1sLCBib2R5IHsKKyAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICBwYWRkaW5nOiAwOworICAgIH0KKyAgICAKKyAgICAjdGVzdDEgeworICAgICAgICBtYXJn
aW46IDEwMHB4OworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhlaWdodDogMjAwcHg7
CisgICAgICAgIGJhY2tncm91bmQ6IHNpbHZlcjsKKyAgICB9CisKKyAgICAjdGVzdDIgeworICAg
ICAgICBtYXJnaW46IC05MHB4IDAgMCAxMDBweDsKKyAgICAgICAgd2lkdGg6IDE5MHB4OworICAg
ICAgICBoZWlnaHQ6IDE5MHB4OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7Cisg
ICAgICAgIHBhZGRpbmc6IDRweDsKKyAgICB9CisKKyAgICAjdGVzdDIgPiBkaXYgeworICAgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAgIHdp
ZHRoOiAxNTBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJhY2tncm91bmQ6
IHdoaXRlOworICAgIH0KKworICAgICN0ZXN0MiA+IGRpdiA+IGlucHV0IHsKKyAgICAgICAgd2lk
dGg6IDgwcHg7CisgICAgICAgIG1hcmdpbjogMTUwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IHNv
bGlkOworICAgIH0KKworICAgIGlucHV0LCBzcGFuIHsKKyAgICAgICAgZm9udC1zaXplOiAxNHB4
OworICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIGhlaWdodDogMjBweDsK
KyAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB9CisKKzwvc3R5bGU+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJ0ZXN0MSI+CisgICAgICAgIDxzcGFuPnNwYW48L3NwYW4+CisgICAgPC9kaXY+
CisgICAgPGRpdiBpZD0idGVzdDIiPgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPGlucHV0
IHR5cGU9InRleHQiIHZhbHVlPSJpbnB1dCI+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyAgICB2YXIg
VE9MRVJBTkNFID0gNTsKKyAgICBmdW5jdGlvbiBpc0FjY2VwdGFibGUoZXhwZWN0ZWQsIHJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAg
ICAgICBpZiAoTWF0aC5hYnMoZXhwZWN0ZWRbaV0gLSByZXN1bHRbaV0pID4gVE9MRVJBTkNFKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc2ltdWxhdGVFbGVtZW50Q2xpY2soZWxl
bWVudCwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHRy
dWUpOworICAgICAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgICAgIHJldHVy
biAnVGhpcyB0ZXN0IHJlcXVpcmVzIGV2ZW50U2VuZGVyJzsKKworICAgICAgICB2YXIgcmVzdWx0
OworICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lcihldmVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmVzdWx0ID0gW2V2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFksIGV2ZW50LmxheWVyWCwg
ZXZlbnQubGF5ZXJZXTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHZhciByZWN0
ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLCByZWN0LnRvcCArIHJl
Y3QuaGVpZ2h0IC8gMik7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcignY2xpY2snLCBsaXN0ZW5lciwgZmFsc2UpOworCisgICAgICAgIGlmIChyZXN1bHQgJiYg
aXNBY2NlcHRhYmxlKGV4cGVjdGVkLCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGV4cGVj
dGVkLmpvaW4oJywgJyk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcsICcpOyAgICAg
ICAgCisgICAgfQorCisgICAgdmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3QxJyk7CisgICAgdmFyIHNwYW5FbGVtZW50ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICB2YXIgdGVzdEVsZW1lbnQyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJyk7CisgICAgdmFyIGlucHV0RWxlbWVudCA9IHRlc3RFbGVt
ZW50Mi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTsKKworICAgIHNob3VsZEJlKCJz
aW11bGF0ZUVsZW1lbnRDbGljayh0ZXN0RWxlbWVudCwgWzEwMCwgMTAwLCAyMDAsIDIwMF0pOyIs
ICInMTAwLCAxMDAsIDIwMCwgMjAwJyIpOworICAgIHNob3VsZEJlKCJzaW11bGF0ZUVsZW1lbnRD
bGljayhzcGFuRWxlbWVudCwgWzE2LCAxMCwgMTYsIDEwXSk7IiwgIicxNiwgMTAsIDE2LCAxMCci
KTsKKyAgICBzaG91bGRCZSgic2ltdWxhdGVFbGVtZW50Q2xpY2soaW5wdXRFbGVtZW50LCBbNDAs
IDEwLCA0MCwgMTBdKTsiLCAiJzQwLCAxMCwgNDAsIDEwJyIpOworPC9zY3JpcHQ+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wZXJmL21vdXNlLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BlcmYvbW91c2UtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgbW91c2UgZXZlbnQgZGlzcGF0Y2gg
aXMgbGluZWFyIHdpdGggcmVzcGVjdCB0byB0aGUgbnVtYmVyIG9mIHBhcmVudCBlbGVtZW50cy4K
K1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvcGVyZi9tb3VzZS1ldmVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BlcmYvbW91c2UtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BlcmYvbW91c2UtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MyBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJm
LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAub3V0ZXIgeworICAgICAgICBwb3NpdGlvbjog
cmVsYXRpdmU7CisgICAgICAgIG1hcmdpbjogMC4yNXB4OworICAgICAgICBwYWRkaW5nOiAwLjI1
cHg7CisgICAgfQorICAgIC5pbm5lciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZDogcmVkOworICAgIH0KKzwvc3R5bGU+
Cis8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBpbm5lckVsZW1lbnQsIHJl
cG9ydGVkUG9zaXRpb247Cit2YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdCcpOworCitmdW5jdGlvbiBzZXR1cEZ1bmN0aW9uKG1hZ25pdHVkZSkKK3sKKyAgICB0
ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAnJzsKKyAgICB2YXIgZWxlbWVudCwgcGFyZW50ID0gdGVz
dEVsZW1lbnQ7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYWduaXR1ZGU7IGkrKykgeworICAg
ICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGVs
ZW1lbnQuY2xhc3NOYW1lID0gJ291dGVyJzsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgICAgICBwYXJlbnQgPSBlbGVtZW50OworICAgIH0KKyAgICBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAn
aW5uZXInOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBlbGVtZW50Lm9u
bW91c2VvdmVyID0gZnVuY3Rpb24oZSkgeworICAgICAgICByZXBvcnRlZFBvc2l0aW9uID0gZS5v
ZmZzZXRYICsgJywgJyArIGUub2Zmc2V0WTsKKyAgICB9OworICAgIGlubmVyRWxlbWVudCA9IGVs
ZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIHRlc3QobWFnbml0dWRlKQoreworICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgdmFyIHJlY3QgPSBpbm5lckVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDAsIDApOwor
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhyZWN0LmxlZnQsIHJlY3QudG9wKTsKKyAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7CisgICAgfQorfQorCitNYWduaXR1
ZGUuZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgbW91c2UgZXZlbnQgZGlzcGF0Y2ggaXMgbGluZWFy
IHdpdGggcmVzcGVjdCB0byB0aGUgbnVtYmVyIG9mIHBhcmVudCBlbGVtZW50cy4iKTsKK01hZ25p
dHVkZS5ydW4oc2V0dXBGdW5jdGlvbiwgdGVzdCwgTWFnbml0dWRlLkxJTkVBUik7Cis8L3Njcmlw
dD4KKzwvYm9keT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>