<?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>147805</bug_id>
          
          <creation_ts>2015-08-07 22:15:05 -0700</creation_ts>
          <short_desc>Refactor webkitTrac to Dashboard.Repository.OpenSource.trac and internalTrac to Dashboard.Repository.Internal.trac</short_desc>
          <delta_ts>2015-08-11 15:47:54 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147796</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jason Marcell">jmarcell</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>jmarcell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115997</commentid>
    <comment_count>0</comment_count>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2015-08-07 22:15:05 -0700</bug_when>
    <thetext>Refactor webkitTrac to Dashboard.Repository.OpenSource.trac and internalTrac to Dashboard.Repository.Internal.trac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115998</commentid>
    <comment_count>1</comment_count>
      <attachid>258561</attachid>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2015-08-07 22:16:40 -0700</bug_when>
    <thetext>Created attachment 258561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115999</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-07 22:18:11 -0700</bug_when>
    <thetext>Attachment 258561 did not pass style-queue:


ERROR: Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116001</commentid>
    <comment_count>3</comment_count>
      <attachid>258562</attachid>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2015-08-07 22:24:23 -0700</bug_when>
    <thetext>Created attachment 258562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116689</commentid>
    <comment_count>4</comment_count>
      <attachid>258562</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-11 13:45:56 -0700</bug_when>
    <thetext>Comment on attachment 258562
Patch

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

Note, we&apos;ll need to make a corresponding change to our internal code before/after we land this change.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:97
&gt; -        var latestRecordedOpenSourceRevisionNumber = webkitTrac.latestRecordedRevisionNumber;
&gt; -        if (!latestRecordedOpenSourceRevisionNumber || webkitTrac.oldestRecordedRevisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name]) {
&gt; -            webkitTrac.loadMoreHistoricalData();
&gt; +        var latestRecordedOpenSourceRevisionNumber = Dashboard.Repository.OpenSource.trac.latestRecordedRevisionNumber;
&gt; +        if (!latestRecordedOpenSourceRevisionNumber || Dashboard.Repository.OpenSource.trac.oldestRecordedRevisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name]) {
&gt; +            Dashboard.Repository.OpenSource.trac.loadMoreHistoricalData();
&gt;              return;
&gt;          }
&gt;  
&gt;          // FIXME: To be 100% correct, we should also filter out changes that are ignored by
&gt;          // the queue, see _should_file_trigger_build in wkbuild.py.
&gt; -        var totalRevisionsBehind = webkitTrac.commitsOnBranch(queue.branch.openSource, function(commit) { return commit.revisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name]; }).length;
&gt; +        var totalRevisionsBehind = Dashboard.Repository.OpenSource.trac.commitsOnBranch(queue.branch.openSource, function(commit) { return commit.revisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name]; }).length;
&gt;  
&gt;          if (latestProductiveIteration.revision[Dashboard.Repository.Internal.name]) {
&gt; -            var latestRecordedInternalRevisionNumber = internalTrac.latestRecordedRevisionNumber;
&gt; -            if (!latestRecordedInternalRevisionNumber || internalTrac.oldestRecordedRevisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.Internal.name]) {
&gt; -                internalTrac.loadMoreHistoricalData();
&gt; +            var latestRecordedInternalRevisionNumber = Dashboard.Repository.Internal.trac.latestRecordedRevisionNumber;
&gt; +            if (!latestRecordedInternalRevisionNumber || Dashboard.Repository.Internal.trac.oldestRecordedRevisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.Internal.name]) {
&gt; +                Dashboard.Repository.Internal.trac.loadMoreHistoricalData();
&gt;                  return;
&gt;              }
&gt;  
&gt; -            totalRevisionsBehind += internalTrac.commitsOnBranch(queue.branch.internal, function(commit) { return commit.revisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.Internal.name]; }).length;
&gt; +            totalRevisionsBehind += Dashboard.Repository.Internal.trac.commitsOnBranch(queue.branch.internal, function(commit) { return commit.revisionNumber &gt; latestProductiveIteration.revision[Dashboard.Repository.Internal.name]; }).length;
&gt;          }

For your consideration, I suggest we define local variables webkitTrac :=  Dashboard.Repository.OpenSource.trac and internalTrac := Dashboard.Repository.Internal.trac. Then we do no need to modify all the existing lines in this function. Additionally, defining such local variables will likely make it more straightforward to refactor this code to work for arbitrary repositories in a future patch among other benefits.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:162
&gt; -        var linesForOpenSource = this._popoverLinesForCommitRange(webkitTrac, queue.branch.openSource, latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name] + 1, webkitTrac.latestRecordedRevisionNumber);
&gt; +        var linesForOpenSource = this._popoverLinesForCommitRange(Dashboard.Repository.OpenSource.trac, queue.branch.openSource, latestProductiveIteration.revision[Dashboard.Repository.OpenSource.name] + 1, Dashboard.Repository.OpenSource.trac.latestRecordedRevisionNumber);
&gt;          for (var i = 0; i != linesForOpenSource.length; ++i)
&gt;              content.appendChild(linesForOpenSource[i]);
&gt;  
&gt;          var linesForInternal = [];
&gt; -        if (latestProductiveIteration.revision[Dashboard.Repository.Internal.name] &amp;&amp; internalTrac.latestRecordedRevisionNumber)
&gt; -            var linesForInternal = this._popoverLinesForCommitRange(internalTrac, queue.branch.internal, latestProductiveIteration.revision[Dashboard.Repository.Internal.name] + 1, internalTrac.latestRecordedRevisionNumber);
&gt; +        if (latestProductiveIteration.revision[Dashboard.Repository.Internal.name] &amp;&amp; Dashboard.Repository.Internal.trac.latestRecordedRevisionNumber)
&gt; +            var linesForInternal = this._popoverLinesForCommitRange(Dashboard.Repository.Internal.trac, queue.branch.internal, latestProductiveIteration.revision[Dashboard.Repository.Internal.name] + 1, Dashboard.Repository.Internal.trac.latestRecordedRevisionNumber);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116690</commentid>
    <comment_count>5</comment_count>
      <attachid>258562</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-11 13:48:08 -0700</bug_when>
    <thetext>Comment on attachment 258562
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        (BuildbotQueueView): Moved webkitTrac to Dashboard.Repository.OpenSource.trac and internalTrac to
&gt; +        Dashboard.Repository.Internal.trac

Very minor: &quot;moved&quot; is not the best way to describe the substitution you are performing. Also, we should add a period at the end of the sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116727</commentid>
    <comment_count>6</comment_count>
      <attachid>258759</attachid>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2015-08-11 14:52:14 -0700</bug_when>
    <thetext>Created attachment 258759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116730</commentid>
    <comment_count>7</comment_count>
      <attachid>258759</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-11 15:00:05 -0700</bug_when>
    <thetext>Comment on attachment 258759
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:80
&gt; +        webkitTrac = Dashboard.Repository.OpenSource.trac;
&gt; +        internalTrac = Dashboard.Repository.Internal.trac;

These lines are declaring global variables named webkitTrac and internalTrac. Please make these local variables by explicitly adding the keyword var before the name of the variable such that these lines read:

var webkitTrac = Dashboard.Repository.OpenSource.trac;
var internalTrac = Dashboard.Repository.Internal.trac;

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:159
&gt; +        webkitTrac = Dashboard.Repository.OpenSource.trac;
&gt; +        internalTrac = Dashboard.Repository.Internal.trac;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116734</commentid>
    <comment_count>8</comment_count>
      <attachid>258762</attachid>
    <who name="Jason Marcell">jmarcell</who>
    <bug_when>2015-08-11 15:03:07 -0700</bug_when>
    <thetext>Created attachment 258762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116753</commentid>
    <comment_count>9</comment_count>
      <attachid>258762</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 15:47:50 -0700</bug_when>
    <thetext>Comment on attachment 258762
Patch

Clearing flags on attachment: 258762

Committed r188304: &lt;http://trac.webkit.org/changeset/188304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116754</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 15:47:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258561</attachid>
            <date>2015-08-07 22:16:40 -0700</date>
            <delta_ts>2015-08-07 22:24:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147805-20150807221629.patch</filename>
            <type>text/plain</type>
            <size>11897</size>
            <attacher name="Jason Marcell">jmarcell</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODk3
YmJmODg0YTA4ODFlMWE0M2UzYmFkNDljMmQwMGE3MWYwZDEyLi5jYjEyYzg3NDRmZjY2M2NlZmY4
Nzg3YmM2MGM5MDBmNDE5NDQxZjkwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTUtMDgtMDcgIEphc29uIE1hcmNl
bGwgIDxqbWFyY2VsbEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZWQgd2Via2l0VHJhYyB0byBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMgYW5kIGludGVybmFsVHJhYyB0byBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBV
UkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzOgorICAgICAgICAoQnVp
bGRib3RRdWV1ZVZpZXcpOiBNb3ZlZCB3ZWJraXRUcmFjIHRvIERhc2hib2FyZC5SZXBvc2l0b3J5
Lk9wZW5Tb3VyY2UudHJhYyBhbmQgaW50ZXJuYWxUcmFjIHRvCisgICAgICAgIERhc2hib2FyZC5S
ZXBvc2l0b3J5LkludGVybmFsLnRyYWMKKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3LnByb3Rv
dHlwZS5fYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291bnQpOiBEaXR0by4KKyAgICAgICAgKEJ1aWxk
Ym90UXVldWVWaWV3LnByb3RvdHlwZS5fcHJlc2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0cyk6
IERpdHRvLgorICAgICAgICAoQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnJldmlzaW9uQ29u
dGVudEZvckl0ZXJhdGlvbik6IERpdHRvLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRp
YWxpemF0aW9uLmpzOiBEaXR0by4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NYWluLmpzOiBE
aXR0by4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIuanM6CisgICAg
ICAgIChBbmFseXplcik6IERpdHRvLgorICAgICAgICAoQW5hbHl6ZXIucHJvdG90eXBlLmFuYWx5
emUpOiBEaXR0by4KKwogMjAxNS0wOC0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdIEFub3RoZXIgYnVpbGQgZml4IGFmdGVyIHIx
ODgxNTcuCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmll
dy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCmluZGV4IDdl
NDAxZjE0OWNlMzgyOTFiNDE2N2NlODQxM2I3YWY2ZjMxYjBkYWUuLjA3ZjE0M2RiNTVjYThjODgx
NGU4ZDEyMjI5YzEzYzUzNzE5ODk4ZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L0J1aWxkYm90UXVldWVWaWV3LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90
UXVldWVWaWV3LmpzCkBAIC0zOCw5ICszOCw5IEBAIEJ1aWxkYm90UXVldWVWaWV3ID0gZnVuY3Rp
b24ocXVldWVzKQogICAgICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUu
RXZlbnQuVW5hdXRob3JpemVkQWNjZXNzLCB0aGlzLl91bmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMp
OwogICAgIH0uYmluZCh0aGlzKSk7CiAKLSAgICB3ZWJraXRUcmFjLmFkZEV2ZW50TGlzdGVuZXIo
VHJhYy5FdmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0aGlz
KTsKLSAgICBpZiAodHlwZW9mIGludGVybmFsVHJhYyAhPSAidW5kZWZpbmVkIikKLSAgICAgICAg
aW50ZXJuYWxUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5FdmVudC5Db21taXRzVXBkYXRlZCwg
dGhpcy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKKyAgICBEYXNoYm9hcmQuUmVwb3NpdG9y
eS5PcGVuU291cmNlLnRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRh
dGVkLCB0aGlzLl9uZXdDb21taXRzUmVjb3JkZWQsIHRoaXMpOworICAgIGlmICh0eXBlb2YgRGFz
aGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYyAhPSAidW5kZWZpbmVkIikKKyAgICAgICAg
RGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5hZGRFdmVudExpc3RlbmVyKFRyYWMu
RXZlbnQuQ29tbWl0c1VwZGF0ZWQsIHRoaXMuX25ld0NvbW1pdHNSZWNvcmRlZCwgdGhpcyk7CiB9
OwogCiBCYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90UXVldWVWaWV3
KTsKQEAgLTc2LDI0ICs3NiwyNCBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbikKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB2YXIgbGF0ZXN0UmVjb3JkZWRPcGVuU291cmNlUmV2aXNpb25OdW1iZXIg
PSB3ZWJraXRUcmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXI7Ci0gICAgICAgIGlmICgh
bGF0ZXN0UmVjb3JkZWRPcGVuU291cmNlUmV2aXNpb25OdW1iZXIgfHwgd2Via2l0VHJhYy5vbGRl
c3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZp
c2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKSB7Ci0gICAgICAgICAg
ICB3ZWJraXRUcmFjLmxvYWRNb3JlSGlzdG9yaWNhbERhdGEoKTsKKyAgICAgICAgdmFyIGxhdGVz
dFJlY29yZGVkT3BlblNvdXJjZVJldmlzaW9uTnVtYmVyID0gRGFzaGJvYXJkLlJlcG9zaXRvcnku
T3BlblNvdXJjZS50cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXI7CisgICAgICAgIGlm
ICghbGF0ZXN0UmVjb3JkZWRPcGVuU291cmNlUmV2aXNpb25OdW1iZXIgfHwgRGFzaGJvYXJkLlJl
cG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLm9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIgPiBs
YXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9w
ZW5Tb3VyY2UubmFtZV0pIHsKKyAgICAgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5T
b3VyY2UudHJhYy5sb2FkTW9yZUhpc3RvcmljYWxEYXRhKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogVG8gYmUgMTAwJSBjb3JyZWN0LCB3ZSBz
aG91bGQgYWxzbyBmaWx0ZXIgb3V0IGNoYW5nZXMgdGhhdCBhcmUgaWdub3JlZCBieQogICAgICAg
ICAvLyB0aGUgcXVldWUsIHNlZSBfc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCBpbiB3a2J1aWxk
LnB5LgotICAgICAgICB2YXIgdG90YWxSZXZpc2lvbnNCZWhpbmQgPSB3ZWJraXRUcmFjLmNvbW1p
dHNPbkJyYW5jaChxdWV1ZS5icmFuY2gub3BlblNvdXJjZSwgZnVuY3Rpb24oY29tbWl0KSB7IHJl
dHVybiBjb21taXQucmV2aXNpb25OdW1iZXIgPiBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJl
dmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UubmFtZV07IH0pLmxlbmd0aDsK
KyAgICAgICAgdmFyIHRvdGFsUmV2aXNpb25zQmVoaW5kID0gRGFzaGJvYXJkLlJlcG9zaXRvcnku
T3BlblNvdXJjZS50cmFjLmNvbW1pdHNPbkJyYW5jaChxdWV1ZS5icmFuY2gub3BlblNvdXJjZSwg
ZnVuY3Rpb24oY29tbWl0KSB7IHJldHVybiBjb21taXQucmV2aXNpb25OdW1iZXIgPiBsYXRlc3RQ
cm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3Vy
Y2UubmFtZV07IH0pLmxlbmd0aDsKIAogICAgICAgICBpZiAobGF0ZXN0UHJvZHVjdGl2ZUl0ZXJh
dGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lXSkgewotICAg
ICAgICAgICAgdmFyIGxhdGVzdFJlY29yZGVkSW50ZXJuYWxSZXZpc2lvbk51bWJlciA9IGludGVy
bmFsVHJhYy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyOwotICAgICAgICAgICAgaWYgKCFs
YXRlc3RSZWNvcmRlZEludGVybmFsUmV2aXNpb25OdW1iZXIgfHwgaW50ZXJuYWxUcmFjLm9sZGVz
dFJlY29yZGVkUmV2aXNpb25OdW1iZXIgPiBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlz
aW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLm5hbWVdKSB7Ci0gICAgICAgICAgICAg
ICAgaW50ZXJuYWxUcmFjLmxvYWRNb3JlSGlzdG9yaWNhbERhdGEoKTsKKyAgICAgICAgICAgIHZh
ciBsYXRlc3RSZWNvcmRlZEludGVybmFsUmV2aXNpb25OdW1iZXIgPSBEYXNoYm9hcmQuUmVwb3Np
dG9yeS5JbnRlcm5hbC50cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXI7CisgICAgICAg
ICAgICBpZiAoIWxhdGVzdFJlY29yZGVkSW50ZXJuYWxSZXZpc2lvbk51bWJlciB8fCBEYXNoYm9h
cmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLm9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIg
PiBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5
LkludGVybmFsLm5hbWVdKSB7CisgICAgICAgICAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnku
SW50ZXJuYWwudHJhYy5sb2FkTW9yZUhpc3RvcmljYWxEYXRhKCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0b3RhbFJldmlzaW9uc0JlaGlu
ZCArPSBpbnRlcm5hbFRyYWMuY29tbWl0c09uQnJhbmNoKHF1ZXVlLmJyYW5jaC5pbnRlcm5hbCwg
ZnVuY3Rpb24oY29tbWl0KSB7IHJldHVybiBjb21taXQucmV2aXNpb25OdW1iZXIgPiBsYXRlc3RQ
cm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFs
Lm5hbWVdOyB9KS5sZW5ndGg7CisgICAgICAgICAgICB0b3RhbFJldmlzaW9uc0JlaGluZCArPSBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLmNvbW1pdHNPbkJyYW5jaChxdWV1ZS5i
cmFuY2guaW50ZXJuYWwsIGZ1bmN0aW9uKGNvbW1pdCkgeyByZXR1cm4gY29tbWl0LnJldmlzaW9u
TnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVw
b3NpdG9yeS5JbnRlcm5hbC5uYW1lXTsgfSkubGVuZ3RoOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCF0b3RhbFJldmlzaW9uc0JlaGluZCkKQEAgLTE1MywxMyArMTUzLDEzIEBAIEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiY29tbWl0
LWhpc3RvcnktcG9wb3ZlciI7CiAKLSAgICAgICAgdmFyIGxpbmVzRm9yT3BlblNvdXJjZSA9IHRo
aXMuX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJhbmdlKHdlYmtpdFRyYWMsIHF1ZXVlLmJyYW5jaC5v
cGVuU291cmNlLCBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5S
ZXBvc2l0b3J5Lk9wZW5Tb3VyY2UubmFtZV0gKyAxLCB3ZWJraXRUcmFjLmxhdGVzdFJlY29yZGVk
UmV2aXNpb25OdW1iZXIpOworICAgICAgICB2YXIgbGluZXNGb3JPcGVuU291cmNlID0gdGhpcy5f
cG9wb3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2UoRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJj
ZS50cmFjLCBxdWV1ZS5icmFuY2gub3BlblNvdXJjZSwgbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlv
bi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdICsgMSwgRGFz
aGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25O
dW1iZXIpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBsaW5lc0Zvck9wZW5Tb3VyY2Uu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxpbmVzRm9yT3Bl
blNvdXJjZVtpXSk7CiAKICAgICAgICAgdmFyIGxpbmVzRm9ySW50ZXJuYWwgPSBbXTsKLSAgICAg
ICAgaWYgKGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9z
aXRvcnkuSW50ZXJuYWwubmFtZV0gJiYgaW50ZXJuYWxUcmFjLmxhdGVzdFJlY29yZGVkUmV2aXNp
b25OdW1iZXIpCi0gICAgICAgICAgICB2YXIgbGluZXNGb3JJbnRlcm5hbCA9IHRoaXMuX3BvcG92
ZXJMaW5lc0ZvckNvbW1pdFJhbmdlKGludGVybmFsVHJhYywgcXVldWUuYnJhbmNoLmludGVybmFs
LCBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5
LkludGVybmFsLm5hbWVdICsgMSwgaW50ZXJuYWxUcmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25O
dW1iZXIpOworICAgICAgICBpZiAobGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltE
YXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lXSAmJiBEYXNoYm9hcmQuUmVwb3NpdG9y
eS5JbnRlcm5hbC50cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIpCisgICAgICAgICAg
ICB2YXIgbGluZXNGb3JJbnRlcm5hbCA9IHRoaXMuX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJhbmdl
KERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMsIHF1ZXVlLmJyYW5jaC5pbnRlcm5h
bCwgbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9y
eS5JbnRlcm5hbC5uYW1lXSArIDEsIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMu
bGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcik7CiAKICAgICAgICAgaWYgKGxpbmVzRm9yT3Bl
blNvdXJjZS5sZW5ndGggJiYgbGluZXNGb3JJbnRlcm5hbC5sZW5ndGgpCiAgICAgICAgICAgICB0
aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwpAQCAtMjYyLDEyICsyNjIsMTQgQEAg
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoaXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2Uu
bmFtZV0pOwogCi0gICAgICAgIHZhciBvcGVuU291cmNlQ29udGVudCA9IHRoaXMuX3JldmlzaW9u
Q29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5
ZWRJdGVyYXRpb24sIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UubmFtZSwgd2Via2l0
VHJhYyk7CisgICAgICAgIHZhciBvcGVuU291cmNlQ29udGVudCA9IHRoaXMuX3JldmlzaW9uQ29u
dGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5ZWRJ
dGVyYXRpb24sCisgICAgICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5h
bWUsIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyk7CiAKICAgICAgICAgaWYg
KCFpdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFtZV0p
CiAgICAgICAgICAgICByZXR1cm4gb3BlblNvdXJjZUNvbnRlbnQ7CiAKLSAgICAgICAgdmFyIGlu
dGVybmFsQ29udGVudCA9IHRoaXMuX3JldmlzaW9uQ29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0
aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5ZWRJdGVyYXRpb24sIERhc2hib2FyZC5SZXBv
c2l0b3J5LkludGVybmFsLm5hbWUsIGludGVybmFsVHJhYyk7CisgICAgICAgIHZhciBpbnRlcm5h
bENvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLAorICAgICAgICAgICAgRGFzaGJv
YXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFtZSwgRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJu
YWwudHJhYyk7CiAKICAgICAgICAgdmFyIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwogICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChvcGVuU291cmNlQ29u
dGVudCk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5q
cyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCmluZGV4IDk1NTdkYmQ1
MmJkM2UwZTZlM2YxMGIxODFlZDhjOTI1OGUxNjA0NmQuLjkxNDJhNGVhZDMzNmZiMDRlOGVlZGEw
ZmNhYzMyOGNlOTE5MmZjNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRp
YWxpemF0aW9uLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpz
CkBAIC0yNSw3ICsyNSw3IEBACiAKIHZhciBzZXR0aW5ncyA9IG5ldyBTZXR0aW5nczsKIHZhciBi
dWlsZGJvdHMgPSBbIG5ldyBXZWJLaXRCdWlsZGJvdCBdOwotdmFyIHdlYmtpdFRyYWMgPSBuZXcg
VHJhYygiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvIik7CitEYXNoYm9hcmQuUmVwb3NpdG9yeS5P
cGVuU291cmNlLnRyYWMgPSBuZXcgVHJhYygiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvIik7CiBp
ZiAodHlwZW9mIEJ1Z3ppbGxhICE9PSAidW5kZWZpbmVkIikKICAgICB2YXIgYnVnemlsbGEgPSBu
ZXcgQnVnemlsbGE7CiBpZiAodHlwZW9mIEJ1YmJsZVF1ZXVlU2VydmVyICE9PSAidW5kZWZpbmVk
IikKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01haW4uanMgYi9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9NYWluLmpzCmluZGV4IDIxYWYyMTMzZDMzNzc3NDQ5YTdmMGM3MGYzY2JkMTFk
MzM1MjIxYzcuLjY3ZjI5MmE3N2JkZmUwNGY3NjAzNGUxOGQ4YjRlZjA5MzQ3NDhlYmYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01haW4uanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvTWFpbi5qcwpAQCAtMjk2LDggKzI5Niw4IEBAIGZ1bmN0aW9uIGRvY3VtZW50UmVhZHko
KQogICAgIH0KIH0KIAotd2Via2l0VHJhYy5zdGFydFBlcmlvZGljVXBkYXRlcygpOwotaWYgKHR5
cGVvZiBpbnRlcm5hbFRyYWMgIT09ICJ1bmRlZmluZWQiKQotICAgIGludGVybmFsVHJhYy5zdGFy
dFBlcmlvZGljVXBkYXRlcygpOworRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFj
LnN0YXJ0UGVyaW9kaWNVcGRhdGVzKCk7CitpZiAodHlwZW9mIERhc2hib2FyZC5SZXBvc2l0b3J5
LkludGVybmFsLnRyYWMgIT09ICJ1bmRlZmluZWQiKQorICAgIERhc2hib2FyZC5SZXBvc2l0b3J5
LkludGVybmFsLnRyYWMuc3RhcnRQZXJpb2RpY1VwZGF0ZXMoKTsKIAogZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGRvY3VtZW50UmVhZHkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzIGIvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzCmluZGV4IDVmNzNkMzAzOGY2MDk3OWYwYjRjZGJj
Yzc4OTE3YjhlZGNlZTc1ZGUuLjc2NGE3MGIwMjU1ZWEzYzc4MzBiNTMxNjhlYzI5N2E0MzhlOGFi
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NBbmFseXplci5qcwor
KysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIuanMKQEAgLTMwLDcgKzMw
LDcgQEAgQW5hbHl6ZXIgPSBmdW5jdGlvbigpCiAgICAgLy8gT25seSBsb2FkIG9uZSBxdWV1ZSBh
dCBhIHRpbWUgdG8gbm90IG92ZXJsb2FkIHRoZSBzZXJ2ZXIuCiAgICAgdGhpcy5fcXVldWVCZWlu
Z0xvYWRlZCA9IG51bGw7CiAKLSAgICB3ZWJraXRUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5F
dmVudC5Mb2FkZWQsIHRoaXMuX2xvYWRlZEZyb21UcmFjLCB0aGlzKTsKKyAgICBEYXNoYm9hcmQu
UmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50Lkxv
YWRlZCwgdGhpcy5fbG9hZGVkRnJvbVRyYWMsIHRoaXMpOwogfTsKIAogQmFzZU9iamVjdC5hZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhBbmFseXplcik7CkBAIC03Nyw3ICs3Nyw3IEBAIEFuYWx5emVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZXNSZWFkeVRvQW5hbHl6
ZS5wdXNoKHF1ZXVlKTsKICAgICAgICAgfSwgdGhpcyk7CiAKLSAgICAgICAgd2Via2l0VHJhYy5s
b2FkKHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOworICAgICAgICBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMubG9hZCh0aGlzLl9yYW5nZVN0YXJ0
VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKIAogICAgICAgICBidWJibGVRdWV1ZVNlcnZlci5s
b2FkUHJvY2Vzc2luZ1RpbWVzKHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRp
bWUsIHRoaXMuX2xvYWRlZEJ1YmJsZXNUaW1pbmcuYmluZCh0aGlzKSk7CiAgICAgfSwKQEAgLTI2
NCw3ICsyNjQsNyBAQCBBbmFseXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB3b3JzdFRp
bWVSZXZpc2lvbjsKICAgICAgICAgdmFyIHdvcnN0T3duVGltZVJldmlzaW9uOwogCi0gICAgICAg
IHdlYmtpdFRyYWMucmVjb3JkZWRDb21taXRzLmZvckVhY2goZnVuY3Rpb24ocmV2aXNpb24pIHsK
KyAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLnJlY29yZGVkQ29t
bWl0cy5mb3JFYWNoKGZ1bmN0aW9uKHJldmlzaW9uKSB7CiAgICAgICAgICAgICBpZiAocmV2aXNp
b24uZGF0ZSA8IHRoaXMuX3JhbmdlU3RhcnRUaW1lIHx8IHJldmlzaW9uLmRhdGUgPj0gdGhpcy5f
cmFuZ2VFbmRUaW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258562</attachid>
            <date>2015-08-07 22:24:23 -0700</date>
            <delta_ts>2015-08-11 14:52:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147805-20150807222412.patch</filename>
            <type>text/plain</type>
            <size>11922</size>
            <attacher name="Jason Marcell">jmarcell</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODk3
YmJmODg0YTA4ODFlMWE0M2UzYmFkNDljMmQwMGE3MWYwZDEyLi4wYmUzYTlkOTliYzAwODM3ZGFi
MTA1YmE0NzdmZWEzMjc2MTkxMWNjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTUtMDgtMDcgIEphc29uIE1hcmNl
bGwgIDxqbWFyY2VsbEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Igd2Via2l0VHJhYyB0
byBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMgYW5kIGludGVybmFsVHJhYyB0
byBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1
ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3KTogTW92ZWQgd2Via2l0VHJh
YyB0byBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMgYW5kIGludGVybmFsVHJh
YyB0bworICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjCisgICAgICAg
IChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50
KTogRGl0dG8uCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3ByZXNlbnRQ
b3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMpOiBEaXR0by4KKyAgICAgICAgKEJ1aWxkYm90UXVldWVW
aWV3LnByb3RvdHlwZS5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24pOiBEaXR0by4KKyAgICAg
ICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qczogRGl0dG8uCisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvTWFpbi5qczogRGl0dG8uCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
TWV0cmljc0FuYWx5emVyLmpzOgorICAgICAgICAoQW5hbHl6ZXIpOiBEaXR0by4KKyAgICAgICAg
KEFuYWx5emVyLnByb3RvdHlwZS5hbmFseXplKTogRGl0dG8uCisKIDIwMTUtMDgtMDcgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbR1RLXSBB
bm90aGVyIGJ1aWxkIGZpeCBhZnRlciByMTg4MTU3LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWls
ZGJvdFF1ZXVlVmlldy5qcwppbmRleCA3ZTQwMWYxNDljZTM4MjkxYjQxNjdjZTg0MTNiN2FmNmYz
MWIwZGFlLi4wN2YxNDNkYjU1Y2E4Yzg4MTRlOGQxMjIyOWMxM2M1MzcxOTg5OGVmIDEwMDY0NAot
LS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcworKysgYi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwpAQCAtMzgsOSArMzgsOSBAQCBC
dWlsZGJvdFF1ZXVlVmlldyA9IGZ1bmN0aW9uKHF1ZXVlcykKICAgICAgICAgcXVldWUuYWRkRXZl
bnRMaXN0ZW5lcihCdWlsZGJvdFF1ZXVlLkV2ZW50LlVuYXV0aG9yaXplZEFjY2VzcywgdGhpcy5f
dW5hdXRob3JpemVkQWNjZXNzLCB0aGlzKTsKICAgICB9LmJpbmQodGhpcykpOwogCi0gICAgd2Vi
a2l0VHJhYy5hZGRFdmVudExpc3RlbmVyKFRyYWMuRXZlbnQuQ29tbWl0c1VwZGF0ZWQsIHRoaXMu
X25ld0NvbW1pdHNSZWNvcmRlZCwgdGhpcyk7Ci0gICAgaWYgKHR5cGVvZiBpbnRlcm5hbFRyYWMg
IT0gInVuZGVmaW5lZCIpCi0gICAgICAgIGludGVybmFsVHJhYy5hZGRFdmVudExpc3RlbmVyKFRy
YWMuRXZlbnQuQ29tbWl0c1VwZGF0ZWQsIHRoaXMuX25ld0NvbW1pdHNSZWNvcmRlZCwgdGhpcyk7
CisgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLmFkZEV2ZW50TGlzdGVu
ZXIoVHJhYy5FdmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0
aGlzKTsKKyAgICBpZiAodHlwZW9mIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMg
IT0gInVuZGVmaW5lZCIpCisgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRy
YWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCB0aGlzLl9uZXdD
b21taXRzUmVjb3JkZWQsIHRoaXMpOwogfTsKIAogQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhCdWlsZGJvdFF1ZXVlVmlldyk7CkBAIC03NiwyNCArNzYsMjQgQEAgQnVpbGRib3RR
dWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWxhdGVzdFByb2R1Y3RpdmVJdGVy
YXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGxhdGVzdFJlY29yZGVk
T3BlblNvdXJjZVJldmlzaW9uTnVtYmVyID0gd2Via2l0VHJhYy5sYXRlc3RSZWNvcmRlZFJldmlz
aW9uTnVtYmVyOwotICAgICAgICBpZiAoIWxhdGVzdFJlY29yZGVkT3BlblNvdXJjZVJldmlzaW9u
TnVtYmVyIHx8IHdlYmtpdFRyYWMub2xkZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlciA+IGxhdGVz
dFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNv
dXJjZS5uYW1lXSkgewotICAgICAgICAgICAgd2Via2l0VHJhYy5sb2FkTW9yZUhpc3RvcmljYWxE
YXRhKCk7CisgICAgICAgIHZhciBsYXRlc3RSZWNvcmRlZE9wZW5Tb3VyY2VSZXZpc2lvbk51bWJl
ciA9IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5sYXRlc3RSZWNvcmRlZFJl
dmlzaW9uTnVtYmVyOworICAgICAgICBpZiAoIWxhdGVzdFJlY29yZGVkT3BlblNvdXJjZVJldmlz
aW9uTnVtYmVyIHx8IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5vbGRlc3RS
ZWNvcmRlZFJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lv
bltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKSB7CisgICAgICAgICAgICBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMubG9hZE1vcmVIaXN0b3JpY2FsRGF0
YSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6
IFRvIGJlIDEwMCUgY29ycmVjdCwgd2Ugc2hvdWxkIGFsc28gZmlsdGVyIG91dCBjaGFuZ2VzIHRo
YXQgYXJlIGlnbm9yZWQgYnkKICAgICAgICAgLy8gdGhlIHF1ZXVlLCBzZWUgX3Nob3VsZF9maWxl
X3RyaWdnZXJfYnVpbGQgaW4gd2tidWlsZC5weS4KLSAgICAgICAgdmFyIHRvdGFsUmV2aXNpb25z
QmVoaW5kID0gd2Via2l0VHJhYy5jb21taXRzT25CcmFuY2gocXVldWUuYnJhbmNoLm9wZW5Tb3Vy
Y2UsIGZ1bmN0aW9uKGNvbW1pdCkgeyByZXR1cm4gY29tbWl0LnJldmlzaW9uTnVtYmVyID4gbGF0
ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVu
U291cmNlLm5hbWVdOyB9KS5sZW5ndGg7CisgICAgICAgIHZhciB0b3RhbFJldmlzaW9uc0JlaGlu
ZCA9IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5jb21taXRzT25CcmFuY2go
cXVldWUuYnJhbmNoLm9wZW5Tb3VyY2UsIGZ1bmN0aW9uKGNvbW1pdCkgeyByZXR1cm4gY29tbWl0
LnJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNo
Ym9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdOyB9KS5sZW5ndGg7CiAKICAgICAgICAg
aWYgKGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRv
cnkuSW50ZXJuYWwubmFtZV0pIHsKLSAgICAgICAgICAgIHZhciBsYXRlc3RSZWNvcmRlZEludGVy
bmFsUmV2aXNpb25OdW1iZXIgPSBpbnRlcm5hbFRyYWMubGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51
bWJlcjsKLSAgICAgICAgICAgIGlmICghbGF0ZXN0UmVjb3JkZWRJbnRlcm5hbFJldmlzaW9uTnVt
YmVyIHx8IGludGVybmFsVHJhYy5vbGRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyID4gbGF0ZXN0
UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5h
bC5uYW1lXSkgewotICAgICAgICAgICAgICAgIGludGVybmFsVHJhYy5sb2FkTW9yZUhpc3Rvcmlj
YWxEYXRhKCk7CisgICAgICAgICAgICB2YXIgbGF0ZXN0UmVjb3JkZWRJbnRlcm5hbFJldmlzaW9u
TnVtYmVyID0gRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5sYXRlc3RSZWNvcmRl
ZFJldmlzaW9uTnVtYmVyOworICAgICAgICAgICAgaWYgKCFsYXRlc3RSZWNvcmRlZEludGVybmFs
UmV2aXNpb25OdW1iZXIgfHwgRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5vbGRl
c3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZp
c2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lXSkgeworICAgICAgICAgICAg
ICAgIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMubG9hZE1vcmVIaXN0b3JpY2Fs
RGF0YSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgdG90YWxSZXZpc2lvbnNCZWhpbmQgKz0gaW50ZXJuYWxUcmFjLmNvbW1pdHNPbkJyYW5j
aChxdWV1ZS5icmFuY2guaW50ZXJuYWwsIGZ1bmN0aW9uKGNvbW1pdCkgeyByZXR1cm4gY29tbWl0
LnJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZpc2lvbltEYXNo
Ym9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lXTsgfSkubGVuZ3RoOworICAgICAgICAgICAg
dG90YWxSZXZpc2lvbnNCZWhpbmQgKz0gRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJh
Yy5jb21taXRzT25CcmFuY2gocXVldWUuYnJhbmNoLmludGVybmFsLCBmdW5jdGlvbihjb21taXQp
IHsgcmV0dXJuIGNvbW1pdC5yZXZpc2lvbk51bWJlciA+IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRp
b24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFtZV07IH0pLmxlbmd0
aDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghdG90YWxSZXZpc2lvbnNCZWhpbmQpCkBAIC0x
NTMsMTMgKzE1MywxMyBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGNv
bnRlbnQuY2xhc3NOYW1lID0gImNvbW1pdC1oaXN0b3J5LXBvcG92ZXIiOwogCi0gICAgICAgIHZh
ciBsaW5lc0Zvck9wZW5Tb3VyY2UgPSB0aGlzLl9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZSh3
ZWJraXRUcmFjLCBxdWV1ZS5icmFuY2gub3BlblNvdXJjZSwgbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJh
dGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdICsgMSwg
d2Via2l0VHJhYy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKTsKKyAgICAgICAgdmFyIGxp
bmVzRm9yT3BlblNvdXJjZSA9IHRoaXMuX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJhbmdlKERhc2hi
b2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYywgcXVldWUuYnJhbmNoLm9wZW5Tb3VyY2Us
IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnku
T3BlblNvdXJjZS5uYW1lXSArIDEsIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJh
Yy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgIT0gbGluZXNGb3JPcGVuU291cmNlLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChsaW5lc0Zvck9wZW5Tb3VyY2VbaV0pOwogCiAgICAgICAgIHZhciBsaW5l
c0ZvckludGVybmFsID0gW107Ci0gICAgICAgIGlmIChsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9u
LnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLm5hbWVdICYmIGludGVybmFs
VHJhYy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKQotICAgICAgICAgICAgdmFyIGxpbmVz
Rm9ySW50ZXJuYWwgPSB0aGlzLl9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZShpbnRlcm5hbFRy
YWMsIHF1ZXVlLmJyYW5jaC5pbnRlcm5hbCwgbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbi5yZXZp
c2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lXSArIDEsIGludGVybmFsVHJh
Yy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKTsKKyAgICAgICAgaWYgKGxhdGVzdFByb2R1
Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFt
ZV0gJiYgRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5sYXRlc3RSZWNvcmRlZFJl
dmlzaW9uTnVtYmVyKQorICAgICAgICAgICAgdmFyIGxpbmVzRm9ySW50ZXJuYWwgPSB0aGlzLl9w
b3BvdmVyTGluZXNGb3JDb21taXRSYW5nZShEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50
cmFjLCBxdWV1ZS5icmFuY2guaW50ZXJuYWwsIGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2
aXNpb25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFtZV0gKyAxLCBEYXNoYm9hcmQu
UmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIpOwog
CiAgICAgICAgIGlmIChsaW5lc0Zvck9wZW5Tb3VyY2UubGVuZ3RoICYmIGxpbmVzRm9ySW50ZXJu
YWwubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50
KTsKQEAgLTI2MiwxMiArMjYyLDE0IEBAIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9h
cmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKTsKIAotICAgICAgICB2YXIgb3BlblNvdXJj
ZUNvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLCBEYXNoYm9hcmQuUmVwb3NpdG9y
eS5PcGVuU291cmNlLm5hbWUsIHdlYmtpdFRyYWMpOworICAgICAgICB2YXIgb3BlblNvdXJjZUNv
bnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihpdGVy
YXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLAorICAgICAgICAgICAgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lLCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291
cmNlLnRyYWMpOwogCiAgICAgICAgIGlmICghaXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5S
ZXBvc2l0b3J5LkludGVybmFsLm5hbWVdKQogICAgICAgICAgICAgcmV0dXJuIG9wZW5Tb3VyY2VD
b250ZW50OwogCi0gICAgICAgIHZhciBpbnRlcm5hbENvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNv
bnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVk
SXRlcmF0aW9uLCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lLCBpbnRlcm5hbFRy
YWMpOworICAgICAgICB2YXIgaW50ZXJuYWxDb250ZW50ID0gdGhpcy5fcmV2aXNpb25Db250ZW50
V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBwcmV2aW91c0Rpc3BsYXllZEl0ZXJh
dGlvbiwKKyAgICAgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLm5hbWUsIERh
c2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMpOwogCiAgICAgICAgIHZhciBmcmFnbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgZnJhZ21lbnQu
YXBwZW5kQ2hpbGQob3BlblNvdXJjZUNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvSW5pdGlhbGl6YXRpb24uanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFs
aXphdGlvbi5qcwppbmRleCA5NTU3ZGJkNTJiZDNlMGU2ZTNmMTBiMTgxZWQ4YzkyNThlMTYwNDZk
Li45MTQyYTRlYWQzMzZmYjA0ZThlZWRhMGZjYWMzMjhjZTkxOTJmYzZjIDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwpAQCAtMjUsNyArMjUsNyBAQAogCiB2YXIgc2V0dGlu
Z3MgPSBuZXcgU2V0dGluZ3M7CiB2YXIgYnVpbGRib3RzID0gWyBuZXcgV2ViS2l0QnVpbGRib3Qg
XTsKLXZhciB3ZWJraXRUcmFjID0gbmV3IFRyYWMoImh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIp
OworRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjID0gbmV3IFRyYWMoImh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnLyIpOwogaWYgKHR5cGVvZiBCdWd6aWxsYSAhPT0gInVuZGVmaW5l
ZCIpCiAgICAgdmFyIGJ1Z3ppbGxhID0gbmV3IEJ1Z3ppbGxhOwogaWYgKHR5cGVvZiBCdWJibGVR
dWV1ZVNlcnZlciAhPT0gInVuZGVmaW5lZCIpCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9NYWluLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwppbmRleCAyMWFmMjEz
M2QzMzc3NzQ0OWE3ZjBjNzBmM2NiZDExZDMzNTIyMWM3Li42N2YyOTJhNzdiZGZlMDRmNzYwMzRl
MThkOGI0ZWYwOTM0NzQ4ZWJmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NYWlu
LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01haW4uanMKQEAgLTI5Niw4ICsyOTYsOCBA
QCBmdW5jdGlvbiBkb2N1bWVudFJlYWR5KCkKICAgICB9CiB9CiAKLXdlYmtpdFRyYWMuc3RhcnRQ
ZXJpb2RpY1VwZGF0ZXMoKTsKLWlmICh0eXBlb2YgaW50ZXJuYWxUcmFjICE9PSAidW5kZWZpbmVk
IikKLSAgICBpbnRlcm5hbFRyYWMuc3RhcnRQZXJpb2RpY1VwZGF0ZXMoKTsKK0Rhc2hib2FyZC5S
ZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5zdGFydFBlcmlvZGljVXBkYXRlcygpOworaWYgKHR5
cGVvZiBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjICE9PSAidW5kZWZpbmVkIikK
KyAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLnN0YXJ0UGVyaW9kaWNVcGRh
dGVzKCk7CiAKIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBk
b2N1bWVudFJlYWR5KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NB
bmFseXplci5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NBbmFseXplci5qcwppbmRl
eCA1ZjczZDMwMzhmNjA5NzlmMGI0Y2RiY2M3ODkxN2I4ZWRjZWU3NWRlLi43NjRhNzBiMDI1NWVh
M2M3ODMwYjUzMTY4ZWMyOTdhNDM4ZThhYjI5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9NZXRyaWNzQW5hbHl6ZXIuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmlj
c0FuYWx5emVyLmpzCkBAIC0zMCw3ICszMCw3IEBAIEFuYWx5emVyID0gZnVuY3Rpb24oKQogICAg
IC8vIE9ubHkgbG9hZCBvbmUgcXVldWUgYXQgYSB0aW1lIHRvIG5vdCBvdmVybG9hZCB0aGUgc2Vy
dmVyLgogICAgIHRoaXMuX3F1ZXVlQmVpbmdMb2FkZWQgPSBudWxsOwogCi0gICAgd2Via2l0VHJh
Yy5hZGRFdmVudExpc3RlbmVyKFRyYWMuRXZlbnQuTG9hZGVkLCB0aGlzLl9sb2FkZWRGcm9tVHJh
YywgdGhpcyk7CisgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLmFkZEV2
ZW50TGlzdGVuZXIoVHJhYy5FdmVudC5Mb2FkZWQsIHRoaXMuX2xvYWRlZEZyb21UcmFjLCB0aGlz
KTsKIH07CiAKIEJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQW5hbHl6ZXIpOwpA
QCAtNzcsNyArNzcsNyBAQCBBbmFseXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
dGhpcy5fcXVldWVzUmVhZHlUb0FuYWx5emUucHVzaChxdWV1ZSk7CiAgICAgICAgIH0sIHRoaXMp
OwogCi0gICAgICAgIHdlYmtpdFRyYWMubG9hZCh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5f
cmFuZ2VFbmRUaW1lKTsKKyAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50
cmFjLmxvYWQodGhpcy5fcmFuZ2VTdGFydFRpbWUsIHRoaXMuX3JhbmdlRW5kVGltZSk7CiAKICAg
ICAgICAgYnViYmxlUXVldWVTZXJ2ZXIubG9hZFByb2Nlc3NpbmdUaW1lcyh0aGlzLl9yYW5nZVN0
YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lLCB0aGlzLl9sb2FkZWRCdWJibGVzVGltaW5nLmJp
bmQodGhpcykpOwogICAgIH0sCkBAIC0yNjQsNyArMjY0LDcgQEAgQW5hbHl6ZXIucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgd29yc3RUaW1lUmV2aXNpb247CiAgICAgICAgIHZhciB3b3JzdE93
blRpbWVSZXZpc2lvbjsKIAotICAgICAgICB3ZWJraXRUcmFjLnJlY29yZGVkQ29tbWl0cy5mb3JF
YWNoKGZ1bmN0aW9uKHJldmlzaW9uKSB7CisgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9w
ZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENvbW1pdHMuZm9yRWFjaChmdW5jdGlvbihyZXZpc2lvbikg
ewogICAgICAgICAgICAgaWYgKHJldmlzaW9uLmRhdGUgPCB0aGlzLl9yYW5nZVN0YXJ0VGltZSB8
fCByZXZpc2lvbi5kYXRlID49IHRoaXMuX3JhbmdlRW5kVGltZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258759</attachid>
            <date>2015-08-11 14:52:14 -0700</date>
            <delta_ts>2015-08-11 15:03:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147805-20150811145158.patch</filename>
            <type>text/plain</type>
            <size>8820</size>
            <attacher name="Jason Marcell">jmarcell</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWNi
ZDBiZWMzOWNjNGRlNDA5ZDI4MDY0NmE3OGE5YWZiNTE2NzFlLi5mZWUwYjg4MGY0Y2VmNTNkOTJh
MDQyOWJhODM4NTVhODRiYTEwM2QzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMDgtMTEgIEphc29uIE1hcmNl
bGwgIDxqbWFyY2VsbEBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vic3RpdHV0ZWQgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjIGZvciB3ZWJraXRUcmFjIGFuZCBEYXNoYm9hcmQu
UmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjCisgICAgICAgIGZvciBpbnRlcm5hbFRyYWMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3KTogU3Vi
c3RpdHV0ZWQgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjIGZvciB3ZWJraXRU
cmFjIGFuZAorICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjIGZvciBp
bnRlcm5hbFRyYWMuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX2FwcGVu
ZFBlbmRpbmdSZXZpc2lvbkNvdW50KTogQWRkZWQgbG9jYWwgdmFyaWFibGVzIHdlYmtpdFRyYWMK
KyAgICAgICAgYW5kIGludGVybmFsVHJhYyBmb3IgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNv
dXJjZS50cmFjIGFuZCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLAorICAgICAg
ICByZXNwZWN0aXZlbHkuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3By
ZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMpOiBEaXR0by4KKyAgICAgICAgKEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZS5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24pOiBTdWJzdGl0
dXRlZAorICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMgZm9yIHdl
YmtpdFRyYWMgYW5kIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMgZm9yCisgICAg
ICAgIGludGVybmFsVHJhYy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlv
bi5qczogRGl0dG8uCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qczogRGl0dG8uCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzOgorICAgICAgICAoQW5h
bHl6ZXIpOiBEaXR0by4KKyAgICAgICAgKEFuYWx5emVyLnByb3RvdHlwZS5hbmFseXplKTogRGl0
dG8uCisKIDIwMTUtMDgtMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dpbl0gU3dpdGNoIFdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE1
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCmluZGV4IDdlNDAxZjE0
OWNlMzgyOTFiNDE2N2NlODQxM2I3YWY2ZjMxYjBkYWUuLjEwYWUwNWYzYmNlZDNmZWFhNzI4ZjA0
Zjc2MDViZjQzY2JmODkzMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90UXVldWVWaWV3LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVW
aWV3LmpzCkBAIC0zOCw5ICszOCw5IEBAIEJ1aWxkYm90UXVldWVWaWV3ID0gZnVuY3Rpb24ocXVl
dWVzKQogICAgICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQu
VW5hdXRob3JpemVkQWNjZXNzLCB0aGlzLl91bmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMpOwogICAg
IH0uYmluZCh0aGlzKSk7CiAKLSAgICB3ZWJraXRUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5F
dmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKLSAg
ICBpZiAodHlwZW9mIGludGVybmFsVHJhYyAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgaW50ZXJu
YWxUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5FdmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5f
bmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKKyAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVu
U291cmNlLnRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCB0
aGlzLl9uZXdDb21taXRzUmVjb3JkZWQsIHRoaXMpOworICAgIGlmICh0eXBlb2YgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYyAhPSAidW5kZWZpbmVkIikKKyAgICAgICAgRGFzaGJv
YXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5hZGRFdmVudExpc3RlbmVyKFRyYWMuRXZlbnQu
Q29tbWl0c1VwZGF0ZWQsIHRoaXMuX25ld0NvbW1pdHNSZWNvcmRlZCwgdGhpcyk7CiB9OwogCiBC
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90UXVldWVWaWV3KTsKQEAg
LTc2LDYgKzc2LDggQEAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIWxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAg
ICAgICAgd2Via2l0VHJhYyA9IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYzsK
KyAgICAgICAgaW50ZXJuYWxUcmFjID0gRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJh
YzsKICAgICAgICAgdmFyIGxhdGVzdFJlY29yZGVkT3BlblNvdXJjZVJldmlzaW9uTnVtYmVyID0g
d2Via2l0VHJhYy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyOwogICAgICAgICBpZiAoIWxh
dGVzdFJlY29yZGVkT3BlblNvdXJjZVJldmlzaW9uTnVtYmVyIHx8IHdlYmtpdFRyYWMub2xkZXN0
UmVjb3JkZWRSZXZpc2lvbk51bWJlciA+IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNp
b25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSkgewogICAgICAgICAgICAg
d2Via2l0VHJhYy5sb2FkTW9yZUhpc3RvcmljYWxEYXRhKCk7CkBAIC0xNTMsNiArMTU1LDggQEAg
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY29udGVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9
ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsKIAorICAgICAgICB3ZWJraXRUcmFjID0gRGFzaGJv
YXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjOworICAgICAgICBpbnRlcm5hbFRyYWMgPSBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjOwogICAgICAgICB2YXIgbGluZXNGb3JP
cGVuU291cmNlID0gdGhpcy5fcG9wb3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2Uod2Via2l0VHJhYywg
cXVldWUuYnJhbmNoLm9wZW5Tb3VyY2UsIGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNp
b25bRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSArIDEsIHdlYmtpdFRyYWMu
bGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcik7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
ICE9IGxpbmVzRm9yT3BlblNvdXJjZS5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQobGluZXNGb3JPcGVuU291cmNlW2ldKTsKQEAgLTI2MiwxMiArMjY2LDE0IEBA
IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNl
Lm5hbWVdKTsKIAotICAgICAgICB2YXIgb3BlblNvdXJjZUNvbnRlbnQgPSB0aGlzLl9yZXZpc2lv
bkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxh
eWVkSXRlcmF0aW9uLCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWUsIHdlYmtp
dFRyYWMpOworICAgICAgICB2YXIgb3BlblNvdXJjZUNvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNv
bnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVk
SXRlcmF0aW9uLAorICAgICAgICAgICAgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5u
YW1lLCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMpOwogCiAgICAgICAgIGlm
ICghaXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLm5hbWVd
KQogICAgICAgICAgICAgcmV0dXJuIG9wZW5Tb3VyY2VDb250ZW50OwogCi0gICAgICAgIHZhciBp
bnRlcm5hbENvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJh
dGlvbihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLCBEYXNoYm9hcmQuUmVw
b3NpdG9yeS5JbnRlcm5hbC5uYW1lLCBpbnRlcm5hbFRyYWMpOworICAgICAgICB2YXIgaW50ZXJu
YWxDb250ZW50ID0gdGhpcy5fcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24o
aXRlcmF0aW9uLCBwcmV2aW91c0Rpc3BsYXllZEl0ZXJhdGlvbiwKKyAgICAgICAgICAgIERhc2hi
b2FyZC5SZXBvc2l0b3J5LkludGVybmFsLm5hbWUsIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVy
bmFsLnRyYWMpOwogCiAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKTsKICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQob3BlblNvdXJjZUNv
bnRlbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvSW5pdGlhbGl6YXRpb24u
anMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwppbmRleCA5NTU3ZGJk
NTJiZDNlMGU2ZTNmMTBiMTgxZWQ4YzkyNThlMTYwNDZkLi45MTQyYTRlYWQzMzZmYjA0ZThlZWRh
MGZjYWMzMjhjZTkxOTJmYzZjIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0
aWFsaXphdGlvbi5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5q
cwpAQCAtMjUsNyArMjUsNyBAQAogCiB2YXIgc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3M7CiB2YXIg
YnVpbGRib3RzID0gWyBuZXcgV2ViS2l0QnVpbGRib3QgXTsKLXZhciB3ZWJraXRUcmFjID0gbmV3
IFRyYWMoImh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIpOworRGFzaGJvYXJkLlJlcG9zaXRvcnku
T3BlblNvdXJjZS50cmFjID0gbmV3IFRyYWMoImh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIpOwog
aWYgKHR5cGVvZiBCdWd6aWxsYSAhPT0gInVuZGVmaW5lZCIpCiAgICAgdmFyIGJ1Z3ppbGxhID0g
bmV3IEJ1Z3ppbGxhOwogaWYgKHR5cGVvZiBCdWJibGVRdWV1ZVNlcnZlciAhPT0gInVuZGVmaW5l
ZCIpCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NYWluLmpzIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvTWFpbi5qcwppbmRleCAyMWFmMjEzM2QzMzc3NzQ0OWE3ZjBjNzBmM2NiZDEx
ZDMzNTIyMWM3Li42N2YyOTJhNzdiZGZlMDRmNzYwMzRlMThkOGI0ZWYwOTM0NzQ4ZWJmIDEwMDY0
NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NYWluLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL01haW4uanMKQEAgLTI5Niw4ICsyOTYsOCBAQCBmdW5jdGlvbiBkb2N1bWVudFJlYWR5
KCkKICAgICB9CiB9CiAKLXdlYmtpdFRyYWMuc3RhcnRQZXJpb2RpY1VwZGF0ZXMoKTsKLWlmICh0
eXBlb2YgaW50ZXJuYWxUcmFjICE9PSAidW5kZWZpbmVkIikKLSAgICBpbnRlcm5hbFRyYWMuc3Rh
cnRQZXJpb2RpY1VwZGF0ZXMoKTsKK0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJh
Yy5zdGFydFBlcmlvZGljVXBkYXRlcygpOworaWYgKHR5cGVvZiBEYXNoYm9hcmQuUmVwb3NpdG9y
eS5JbnRlcm5hbC50cmFjICE9PSAidW5kZWZpbmVkIikKKyAgICBEYXNoYm9hcmQuUmVwb3NpdG9y
eS5JbnRlcm5hbC50cmFjLnN0YXJ0UGVyaW9kaWNVcGRhdGVzKCk7CiAKIGRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBkb2N1bWVudFJlYWR5KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NBbmFseXplci5qcyBiL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL01ldHJpY3NBbmFseXplci5qcwppbmRleCA1ZjczZDMwMzhmNjA5NzlmMGI0Y2Ri
Y2M3ODkxN2I4ZWRjZWU3NWRlLi43NjRhNzBiMDI1NWVhM2M3ODMwYjUzMTY4ZWMyOTdhNDM4ZThh
YjI5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIuanMK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzCkBAIC0zMCw3ICsz
MCw3IEBAIEFuYWx5emVyID0gZnVuY3Rpb24oKQogICAgIC8vIE9ubHkgbG9hZCBvbmUgcXVldWUg
YXQgYSB0aW1lIHRvIG5vdCBvdmVybG9hZCB0aGUgc2VydmVyLgogICAgIHRoaXMuX3F1ZXVlQmVp
bmdMb2FkZWQgPSBudWxsOwogCi0gICAgd2Via2l0VHJhYy5hZGRFdmVudExpc3RlbmVyKFRyYWMu
RXZlbnQuTG9hZGVkLCB0aGlzLl9sb2FkZWRGcm9tVHJhYywgdGhpcyk7CisgICAgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5FdmVudC5M
b2FkZWQsIHRoaXMuX2xvYWRlZEZyb21UcmFjLCB0aGlzKTsKIH07CiAKIEJhc2VPYmplY3QuYWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoQW5hbHl6ZXIpOwpAQCAtNzcsNyArNzcsNyBAQCBBbmFseXpl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fcXVldWVzUmVhZHlUb0FuYWx5
emUucHVzaChxdWV1ZSk7CiAgICAgICAgIH0sIHRoaXMpOwogCi0gICAgICAgIHdlYmtpdFRyYWMu
bG9hZCh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKKyAgICAgICAg
RGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjLmxvYWQodGhpcy5fcmFuZ2VTdGFy
dFRpbWUsIHRoaXMuX3JhbmdlRW5kVGltZSk7CiAKICAgICAgICAgYnViYmxlUXVldWVTZXJ2ZXIu
bG9hZFByb2Nlc3NpbmdUaW1lcyh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRU
aW1lLCB0aGlzLl9sb2FkZWRCdWJibGVzVGltaW5nLmJpbmQodGhpcykpOwogICAgIH0sCkBAIC0y
NjQsNyArMjY0LDcgQEAgQW5hbHl6ZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgd29yc3RU
aW1lUmV2aXNpb247CiAgICAgICAgIHZhciB3b3JzdE93blRpbWVSZXZpc2lvbjsKIAotICAgICAg
ICB3ZWJraXRUcmFjLnJlY29yZGVkQ29tbWl0cy5mb3JFYWNoKGZ1bmN0aW9uKHJldmlzaW9uKSB7
CisgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENv
bW1pdHMuZm9yRWFjaChmdW5jdGlvbihyZXZpc2lvbikgewogICAgICAgICAgICAgaWYgKHJldmlz
aW9uLmRhdGUgPCB0aGlzLl9yYW5nZVN0YXJ0VGltZSB8fCByZXZpc2lvbi5kYXRlID49IHRoaXMu
X3JhbmdlRW5kVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258762</attachid>
            <date>2015-08-11 15:03:07 -0700</date>
            <delta_ts>2015-08-11 15:47:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147805-20150811150251.patch</filename>
            <type>text/plain</type>
            <size>8836</size>
            <attacher name="Jason Marcell">jmarcell</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNWNi
ZDBiZWMzOWNjNGRlNDA5ZDI4MDY0NmE3OGE5YWZiNTE2NzFlLi5mZWUwYjg4MGY0Y2VmNTNkOTJh
MDQyOWJhODM4NTVhODRiYTEwM2QzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMDgtMTEgIEphc29uIE1hcmNl
bGwgIDxqbWFyY2VsbEBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vic3RpdHV0ZWQgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjIGZvciB3ZWJraXRUcmFjIGFuZCBEYXNoYm9hcmQu
UmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjCisgICAgICAgIGZvciBpbnRlcm5hbFRyYWMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0ZXMuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFF1ZXVlVmlldy5qczoKKyAgICAgICAgKEJ1aWxkYm90UXVldWVWaWV3KTogU3Vi
c3RpdHV0ZWQgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjIGZvciB3ZWJraXRU
cmFjIGFuZAorICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjIGZvciBp
bnRlcm5hbFRyYWMuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX2FwcGVu
ZFBlbmRpbmdSZXZpc2lvbkNvdW50KTogQWRkZWQgbG9jYWwgdmFyaWFibGVzIHdlYmtpdFRyYWMK
KyAgICAgICAgYW5kIGludGVybmFsVHJhYyBmb3IgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNv
dXJjZS50cmFjIGFuZCBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjLAorICAgICAg
ICByZXNwZWN0aXZlbHkuCisgICAgICAgIChCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUuX3By
ZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMpOiBEaXR0by4KKyAgICAgICAgKEJ1aWxkYm90
UXVldWVWaWV3LnByb3RvdHlwZS5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24pOiBTdWJzdGl0
dXRlZAorICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMgZm9yIHdl
YmtpdFRyYWMgYW5kIERhc2hib2FyZC5SZXBvc2l0b3J5LkludGVybmFsLnRyYWMgZm9yCisgICAg
ICAgIGludGVybmFsVHJhYy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlv
bi5qczogRGl0dG8uCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qczogRGl0dG8uCisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzOgorICAgICAgICAoQW5h
bHl6ZXIpOiBEaXR0by4KKyAgICAgICAgKEFuYWx5emVyLnByb3RvdHlwZS5hbmFseXplKTogRGl0
dG8uCisKIDIwMTUtMDgtMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dpbl0gU3dpdGNoIFdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE1
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVWaWV3LmpzCmluZGV4IDdlNDAxZjE0
OWNlMzgyOTFiNDE2N2NlODQxM2I3YWY2ZjMxYjBkYWUuLjU1ZjQ5NDQ3ZGZmZjJlMDliY2U1NTEw
ZWMzZjRjMGJmMjAyZTU3Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxk
Ym90UXVldWVWaWV3LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90UXVldWVW
aWV3LmpzCkBAIC0zOCw5ICszOCw5IEBAIEJ1aWxkYm90UXVldWVWaWV3ID0gZnVuY3Rpb24ocXVl
dWVzKQogICAgICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQu
VW5hdXRob3JpemVkQWNjZXNzLCB0aGlzLl91bmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMpOwogICAg
IH0uYmluZCh0aGlzKSk7CiAKLSAgICB3ZWJraXRUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5F
dmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5fbmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKLSAg
ICBpZiAodHlwZW9mIGludGVybmFsVHJhYyAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgaW50ZXJu
YWxUcmFjLmFkZEV2ZW50TGlzdGVuZXIoVHJhYy5FdmVudC5Db21taXRzVXBkYXRlZCwgdGhpcy5f
bmV3Q29tbWl0c1JlY29yZGVkLCB0aGlzKTsKKyAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVu
U291cmNlLnRyYWMuYWRkRXZlbnRMaXN0ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCB0
aGlzLl9uZXdDb21taXRzUmVjb3JkZWQsIHRoaXMpOworICAgIGlmICh0eXBlb2YgRGFzaGJvYXJk
LlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYyAhPSAidW5kZWZpbmVkIikKKyAgICAgICAgRGFzaGJv
YXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5hZGRFdmVudExpc3RlbmVyKFRyYWMuRXZlbnQu
Q29tbWl0c1VwZGF0ZWQsIHRoaXMuX25ld0NvbW1pdHNSZWNvcmRlZCwgdGhpcyk7CiB9OwogCiBC
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90UXVldWVWaWV3KTsKQEAg
LTc2LDYgKzc2LDggQEAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIWxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAg
ICAgICAgdmFyIHdlYmtpdFRyYWMgPSBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRy
YWM7CisgICAgICAgIHZhciBpbnRlcm5hbFRyYWMgPSBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRl
cm5hbC50cmFjOwogICAgICAgICB2YXIgbGF0ZXN0UmVjb3JkZWRPcGVuU291cmNlUmV2aXNpb25O
dW1iZXIgPSB3ZWJraXRUcmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXI7CiAgICAgICAg
IGlmICghbGF0ZXN0UmVjb3JkZWRPcGVuU291cmNlUmV2aXNpb25OdW1iZXIgfHwgd2Via2l0VHJh
Yy5vbGRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyID4gbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlv
bi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKSB7CiAgICAg
ICAgICAgICB3ZWJraXRUcmFjLmxvYWRNb3JlSGlzdG9yaWNhbERhdGEoKTsKQEAgLTE1Myw2ICsx
NTUsOCBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb250
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGNvbnRlbnQuY2xh
c3NOYW1lID0gImNvbW1pdC1oaXN0b3J5LXBvcG92ZXIiOwogCisgICAgICAgIHZhciB3ZWJraXRU
cmFjID0gRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFjOworICAgICAgICB2YXIg
aW50ZXJuYWxUcmFjID0gRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYzsKICAgICAg
ICAgdmFyIGxpbmVzRm9yT3BlblNvdXJjZSA9IHRoaXMuX3BvcG92ZXJMaW5lc0ZvckNvbW1pdFJh
bmdlKHdlYmtpdFRyYWMsIHF1ZXVlLmJyYW5jaC5vcGVuU291cmNlLCBsYXRlc3RQcm9kdWN0aXZl
SXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UubmFtZV0g
KyAxLCB3ZWJraXRUcmFjLmxhdGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIpOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSAhPSBsaW5lc0Zvck9wZW5Tb3VyY2UubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxpbmVzRm9yT3BlblNvdXJjZVtpXSk7CkBAIC0y
NjIsMTIgKzI2NiwxNCBAQCBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChpdGVyYXRpb24ucmV2aXNpb25bRGFzaGJvYXJkLlJlcG9z
aXRvcnkuT3BlblNvdXJjZS5uYW1lXSk7CiAKLSAgICAgICAgdmFyIG9wZW5Tb3VyY2VDb250ZW50
ID0gdGhpcy5fcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9u
LCBwcmV2aW91c0Rpc3BsYXllZEl0ZXJhdGlvbiwgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNv
dXJjZS5uYW1lLCB3ZWJraXRUcmFjKTsKKyAgICAgICAgdmFyIG9wZW5Tb3VyY2VDb250ZW50ID0g
dGhpcy5fcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBw
cmV2aW91c0Rpc3BsYXllZEl0ZXJhdGlvbiwKKyAgICAgICAgICAgIERhc2hib2FyZC5SZXBvc2l0
b3J5Lk9wZW5Tb3VyY2UubmFtZSwgRGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS50cmFj
KTsKIAogICAgICAgICBpZiAoIWl0ZXJhdGlvbi5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9y
eS5JbnRlcm5hbC5uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBvcGVuU291cmNlQ29udGVudDsK
IAotICAgICAgICB2YXIgaW50ZXJuYWxDb250ZW50ID0gdGhpcy5fcmV2aXNpb25Db250ZW50V2l0
aFBvcG92ZXJGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBwcmV2aW91c0Rpc3BsYXllZEl0ZXJhdGlv
biwgRGFzaGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwubmFtZSwgaW50ZXJuYWxUcmFjKTsKKyAg
ICAgICAgdmFyIGludGVybmFsQ29udGVudCA9IHRoaXMuX3JldmlzaW9uQ29udGVudFdpdGhQb3Bv
dmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5ZWRJdGVyYXRpb24sCisg
ICAgICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5JbnRlcm5hbC5uYW1lLCBEYXNoYm9hcmQu
UmVwb3NpdG9yeS5JbnRlcm5hbC50cmFjKTsKIAogICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1
bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgIGZyYWdtZW50LmFwcGVuZENo
aWxkKG9wZW5Tb3VyY2VDb250ZW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L0luaXRpYWxpemF0aW9uLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvSW5pdGlhbGl6YXRpb24u
anMKaW5kZXggOTU1N2RiZDUyYmQzZTBlNmUzZjEwYjE4MWVkOGM5MjU4ZTE2MDQ2ZC4uOTE0MmE0
ZWFkMzM2ZmIwNGU4ZWVkYTBmY2FjMzI4Y2U5MTkyZmM2YyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvSW5pdGlhbGl6YXRpb24uanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
SW5pdGlhbGl6YXRpb24uanMKQEAgLTI1LDcgKzI1LDcgQEAKIAogdmFyIHNldHRpbmdzID0gbmV3
IFNldHRpbmdzOwogdmFyIGJ1aWxkYm90cyA9IFsgbmV3IFdlYktpdEJ1aWxkYm90IF07Ci12YXIg
d2Via2l0VHJhYyA9IG5ldyBUcmFjKCJodHRwczovL3RyYWMud2Via2l0Lm9yZy8iKTsKK0Rhc2hi
b2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBUcmFjKCJodHRwczovL3RyYWMu
d2Via2l0Lm9yZy8iKTsKIGlmICh0eXBlb2YgQnVnemlsbGEgIT09ICJ1bmRlZmluZWQiKQogICAg
IHZhciBidWd6aWxsYSA9IG5ldyBCdWd6aWxsYTsKIGlmICh0eXBlb2YgQnViYmxlUXVldWVTZXJ2
ZXIgIT09ICJ1bmRlZmluZWQiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFp
bi5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01haW4uanMKaW5kZXggMjFhZjIxMzNkMzM3Nzc0
NDlhN2YwYzcwZjNjYmQxMWQzMzUyMjFjNy4uNjdmMjkyYTc3YmRmZTA0Zjc2MDM0ZTE4ZDhiNGVm
MDkzNDc0OGViZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcworKysg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NYWluLmpzCkBAIC0yOTYsOCArMjk2LDggQEAgZnVuY3Rp
b24gZG9jdW1lbnRSZWFkeSgpCiAgICAgfQogfQogCi13ZWJraXRUcmFjLnN0YXJ0UGVyaW9kaWNV
cGRhdGVzKCk7Ci1pZiAodHlwZW9mIGludGVybmFsVHJhYyAhPT0gInVuZGVmaW5lZCIpCi0gICAg
aW50ZXJuYWxUcmFjLnN0YXJ0UGVyaW9kaWNVcGRhdGVzKCk7CitEYXNoYm9hcmQuUmVwb3NpdG9y
eS5PcGVuU291cmNlLnRyYWMuc3RhcnRQZXJpb2RpY1VwZGF0ZXMoKTsKK2lmICh0eXBlb2YgRGFz
aGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYyAhPT0gInVuZGVmaW5lZCIpCisgICAgRGFz
aGJvYXJkLlJlcG9zaXRvcnkuSW50ZXJuYWwudHJhYy5zdGFydFBlcmlvZGljVXBkYXRlcygpOwog
CiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZG9jdW1lbnRS
ZWFkeSk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIu
anMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzQW5hbHl6ZXIuanMKaW5kZXggNWY3M2Qz
MDM4ZjYwOTc5ZjBiNGNkYmNjNzg5MTdiOGVkY2VlNzVkZS4uNzY0YTcwYjAyNTVlYTNjNzgzMGI1
MzE2OGVjMjk3YTQzOGU4YWIyOSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0
cmljc0FuYWx5emVyLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NBbmFseXpl
ci5qcwpAQCAtMzAsNyArMzAsNyBAQCBBbmFseXplciA9IGZ1bmN0aW9uKCkKICAgICAvLyBPbmx5
IGxvYWQgb25lIHF1ZXVlIGF0IGEgdGltZSB0byBub3Qgb3ZlcmxvYWQgdGhlIHNlcnZlci4KICAg
ICB0aGlzLl9xdWV1ZUJlaW5nTG9hZGVkID0gbnVsbDsKIAotICAgIHdlYmtpdFRyYWMuYWRkRXZl
bnRMaXN0ZW5lcihUcmFjLkV2ZW50LkxvYWRlZCwgdGhpcy5fbG9hZGVkRnJvbVRyYWMsIHRoaXMp
OworICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5hZGRFdmVudExpc3Rl
bmVyKFRyYWMuRXZlbnQuTG9hZGVkLCB0aGlzLl9sb2FkZWRGcm9tVHJhYywgdGhpcyk7CiB9Owog
CiBCYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEFuYWx5emVyKTsKQEAgLTc3LDcg
Kzc3LDcgQEAgQW5hbHl6ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX3F1
ZXVlc1JlYWR5VG9BbmFseXplLnB1c2gocXVldWUpOwogICAgICAgICB9LCB0aGlzKTsKIAotICAg
ICAgICB3ZWJraXRUcmFjLmxvYWQodGhpcy5fcmFuZ2VTdGFydFRpbWUsIHRoaXMuX3JhbmdlRW5k
VGltZSk7CisgICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5sb2Fk
KHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOwogCiAgICAgICAgIGJ1
YmJsZVF1ZXVlU2VydmVyLmxvYWRQcm9jZXNzaW5nVGltZXModGhpcy5fcmFuZ2VTdGFydFRpbWUs
IHRoaXMuX3JhbmdlRW5kVGltZSwgdGhpcy5fbG9hZGVkQnViYmxlc1RpbWluZy5iaW5kKHRoaXMp
KTsKICAgICB9LApAQCAtMjY0LDcgKzI2NCw3IEBAIEFuYWx5emVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHdvcnN0VGltZVJldmlzaW9uOwogICAgICAgICB2YXIgd29yc3RPd25UaW1lUmV2
aXNpb247CiAKLSAgICAgICAgd2Via2l0VHJhYy5yZWNvcmRlZENvbW1pdHMuZm9yRWFjaChmdW5j
dGlvbihyZXZpc2lvbikgeworICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNl
LnRyYWMucmVjb3JkZWRDb21taXRzLmZvckVhY2goZnVuY3Rpb24ocmV2aXNpb24pIHsKICAgICAg
ICAgICAgIGlmIChyZXZpc2lvbi5kYXRlIDwgdGhpcy5fcmFuZ2VTdGFydFRpbWUgfHwgcmV2aXNp
b24uZGF0ZSA+PSB0aGlzLl9yYW5nZUVuZFRpbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>