<?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>200406</bug_id>
          
          <creation_ts>2019-08-02 14:35:37 -0700</creation_ts>
          <short_desc>[results.webkit.org Timeline] Performance improvements</short_desc>
          <delta_ts>2019-08-06 10:58:15 -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>Safari Technology Preview</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhifei Fang">zhifei_fang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1558140</commentid>
    <comment_count>0</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-02 14:35:37 -0700</bug_when>
    <thetext>Unhook the scroll event when a series/axis have been removed from the container 

This will limit the number of event fired and actually destroy all the series and axis that have been removed from the container.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558142</commentid>
    <comment_count>1</comment_count>
      <attachid>375458</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-02 14:36:18 -0700</bug_when>
    <thetext>Created attachment 375458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558189</commentid>
    <comment_count>2</comment_count>
      <attachid>375458</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-02 15:59:53 -0700</bug_when>
    <thetext>Comment on attachment 375458
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        * resultsdbpy/resultsdbpy/view/static/library/js/Ref.js:

We need some comments here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558197</commentid>
    <comment_count>3</comment_count>
      <attachid>375465</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-02 16:18:26 -0700</bug_when>
    <thetext>Created attachment 375465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558236</commentid>
    <comment_count>4</comment_count>
      <attachid>375474</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-02 19:11:08 -0700</bug_when>
    <thetext>Created attachment 375474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558463</commentid>
    <comment_count>5</comment_count>
      <attachid>375465</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-05 09:48:57 -0700</bug_when>
    <thetext>Comment on attachment 375465
Patch

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

&gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:620
&gt; +        console.log(stateDiff);

Do you intend to land this logging statement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558632</commentid>
    <comment_count>6</comment_count>
      <attachid>375583</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-05 16:43:51 -0700</bug_when>
    <thetext>Created attachment 375583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558641</commentid>
    <comment_count>7</comment_count>
      <attachid>375583</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-05 17:21:15 -0700</bug_when>
    <thetext>Comment on attachment 375583
Patch

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

Along with fixing a few pretty clear correctness bugs, this patch has a HUGE impact on memory usage of timelines, particularly large ones. I&apos;ve observed about 5x in some cases, probably 2 or 3x on average.

&gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/Utils.js:69
&gt; +// Check more about Intersection observer API

I would put this in one-line:

// Uses intersection observer: &lt;https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API&gt;

&gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:380
&gt; +                // We do nothing for those off screen ones

Comment is duplicating what the code says, just remove it.

How would the element be on screen but the stateDiff not?

&gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:763
&gt; +                // In case of modification white rendering

Nit: while rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558667</commentid>
    <comment_count>8</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-05 18:15:06 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #7)
&gt; Comment on attachment 375583 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375583&amp;action=review
&gt; 
&gt; Along with fixing a few pretty clear correctness bugs, this patch has a HUGE
&gt; impact on memory usage of timelines, particularly large ones. I&apos;ve observed
&gt; about 5x in some cases, probably 2 or 3x on average.
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/Utils.js:69
&gt; &gt; +// Check more about Intersection observer API
&gt; 
&gt; I would put this in one-line:
&gt; 
&gt; // Uses intersection observer:
&gt; &lt;https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API&gt;
&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:380
&gt; &gt; +                // We do nothing for those off screen ones
&gt; 
&gt; Comment is duplicating what the code says, just remove it.
&gt; 
&gt; How would the element be on screen but the stateDiff not?
stateDiff is a diff, when we already set onScreen to true, it will always be true in the state, unless we want to set it to false. 

&gt; 
&gt; &gt; Tools/resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:763
&gt; &gt; +                // In case of modification white rendering
&gt; 
&gt; Nit: while rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558669</commentid>
    <comment_count>9</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-05 18:19:59 -0700</bug_when>
    <thetext>Just change the title, this patch now include multiple performance improvements for the canvas timeline.

1. Unhook the scroll event when a series/axis have been removed from the container 
2. Fix the axis&apos;s cache date structure out of sync.
3. Use position:sticky to reduce the blink when update the transform
4. Use intersection observer to detect if the canvas on screen or not, if a canvas is not on the screen, we do nothing, this will eliminate render requests we send out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558677</commentid>
    <comment_count>10</comment_count>
      <attachid>375592</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-05 18:43:19 -0700</bug_when>
    <thetext>Created attachment 375592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558770</commentid>
    <comment_count>11</comment_count>
      <attachid>375592</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-08-06 08:12:16 -0700</bug_when>
    <thetext>Comment on attachment 375592
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        Reviewed by NOBODY (OOPS!).

WebKit does:

&lt;change title&gt;
&lt;bug URL&gt;

Reviewed by &lt;Reviewer&gt;.

&lt;change details&gt;

-----

So can we move the numbered list under the &apos;Reviewed by&apos; line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558812</commentid>
    <comment_count>12</comment_count>
      <attachid>375630</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-06 10:31:50 -0700</bug_when>
    <thetext>Created attachment 375630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558813</commentid>
    <comment_count>13</comment_count>
      <attachid>375631</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2019-08-06 10:33:48 -0700</bug_when>
    <thetext>Created attachment 375631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558833</commentid>
    <comment_count>14</comment_count>
      <attachid>375631</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-06 10:57:03 -0700</bug_when>
    <thetext>Comment on attachment 375631
Patch

Clearing flags on attachment: 375631

Committed r248305: &lt;https://trac.webkit.org/changeset/248305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558834</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-06 10:57:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558836</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-06 10:58:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/53993566&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375458</attachid>
            <date>2019-08-02 14:36:18 -0700</date>
            <delta_ts>2019-08-02 16:18:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190802143618.patch</filename>
            <type>text/plain</type>
            <size>16223</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uMjFlNjczOTdiMzk4ZGZlZTA4MmVmNGY4MDUyMjkxMzQ1MDAwMGJkYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVbmhvb2sgdGhlIHNjcm9sbCBl
dmVudCB3aGVuIGEgc2VyaWVzL2F4aXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFp
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA0
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzOgorICAg
ICAgICAoU2lnbmFsLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChwcm90b3R5
cGUuc3RvcEFjdGlvbik6CisgICAgICAgIChSZWYpOgorICAgICAgICAoUmVmLnByb3RvdHlwZS5h
cHBseSk6CisgICAgICAgIChSZWYucHJvdG90eXBlLmRlc3RvcnkpOgorICAgICAgICAqIHJlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNl
Q29tcG9uZW50cy5qczoKKyAgICAgICAgKEFwcGx5TmV3Q2hpbGRyZW4pOgorICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9U
aW1lbGluZUNvbXBvbmVudHMuanM6CisgICAgICAgIChUaW1lbGluZS5DYW52YXNTZXJpZXNDb21w
b25lbnQpOgorCiAyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNv
bT4KIAogICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVc2luZyB0cmFuc2Zv
cm0gbWF0cml4IHRvIGNhbGN1bGF0ZSB0aGUgdGFnIHJvdGF0aW9uIHBvc2l0aW9uCmRpZmYgLS1n
aXQgYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pz
L1JlZi5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJh
cnkvanMvUmVmLmpzCmluZGV4IDEyOTgyZjljOTZmYTQzZTNmNGZkYmQ5NjA0YTRlM2Y3Njg1YjQ3
MmMuLmM5MTRkNWI4MDM0YjQ0MWYwOTY3ZWFkNDk2MWMxNWRlNjRlMmZhM2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVm
LmpzCisrKyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJh
cnkvanMvUmVmLmpzCkBAIC0zOSwxMiArMzksMTIgQEAgY2xhc3MgU2lnbmFsIHsKICAgICAgICAg
cmV0dXJuIHRoaXM7CiAgICAgfQogICAgIHJlbW92ZUxpc3RlbmVyKGZuKSB7Ci0gICAgICAgIGNv
bnN0IHJlbW92ZUluZGV4ID0gMDsKKyAgICAgICAgbGV0IHJlbW92ZUluZGV4ID0gMDsKICAgICAg
ICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyLCBpbmRleCkgPT4gewogICAgICAgICAg
ICAgaWYgKGhhbmRsZXIgPT09IGZuKQogICAgICAgICAgICAgICAgIHJlbW92ZUluZGV4ID0gaW5k
ZXg7CiAgICAgICAgIH0pOwotICAgICAgICB0aGlzLmhhbmRsZXIuc3BsaWNlKHJlbW92ZUluZGV4
LCAxKTsKKyAgICAgICAgdGhpcy5oYW5kbGVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpOwogICAg
ICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgcmVtb3ZlQWxsTGlzdGVuZXIoKSB7CkBAIC05
MCw2ICs5MCwxMCBAQCBjbGFzcyBFdmVudFN0cmVhbSB7CiAgICAgICAgIHRoaXMuc2lnbmFsLmFk
ZExpc3RlbmVyKGZuKTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQorICAgIHN0b3BBY3Rp
b24oZm4pIHsKKyAgICAgICAgdGhpcy5zaWduYWwucmVtb3ZlTGlzdGVuZXIoZm4pOworICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICB9CiAgICAgZXJyb3IoZm4pIHsKICAgICAgICAgdGhpcy5lcnJv
clNpZ25hbC5hZGRMaXN0ZW5lcihmbik7CiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQzLDcg
KzI0Nyw3IEBAIGNsYXNzIFJlZiB7CiAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25maWcuc3RhdGUg
IT09IHVuZGVmaW5lZCA/IGNvbmZpZy5zdGF0ZSA6IHt9OwogICAgICAgICB0aGlzLm9uU3RhdGVV
cGRhdGUgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uU3RhdGVVcGRhdGUpOwog
ICAgICAgICB0aGlzLm9uRWxlbWVudE1vdW50ID0gbmV3IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNv
bmZpZy5vbkVsZW1lbnRNb3VudCk7Ci0gICAgICAgIHRoaXMub25FbGVtZW50VW5tb3V0ID0gbmV3
IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNvbmZpZy5vbkVsZW1lbnRVbm1vdXQpOworICAgICAgICB0
aGlzLm9uRWxlbWVudFVubW91bnQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9u
RWxlbWVudFVubW91bnQpOwogICAgIH0KICAgICBiaW5kKGVsZW1lbnQpIHsKICAgICAgICAgdGhp
cy5hcHBseShlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtyZWY9IiR7dGhpcy5rZXl9Il1gKSk7CkBA
IC0yNTUsNyArMjU5LDcgQEAgY2xhc3MgUmVmIHsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudCA9
PT0gZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVu
dCAmJiB0aGlzLmVsZW1lbnQgIT09IGVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLm9uRWxlbWVu
dFVubW91dC5lbWl0KHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLm9uRWxlbWVudFVu
bW91bnQuZW1pdCh0aGlzLmVsZW1lbnQpOwogICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50
OwogICAgICAgICAvL0luaXRpYWwgc3RhdGUKICAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IHVu
ZGVmaW5lZCAmJiB0aGlzLnN0YXRlICE9PSBudWxsKQpAQCAtMjY1LDcgKzI2OSw3IEBAIGNsYXNz
IFJlZiB7CiAgICAgZGVzdG9yeShlbGVtZW50KSB7CiAgICAgICAgIGlmICghZWxlbWVudCB8fCBl
bGVtZW50ICE9PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRo
aXMub25FbGVtZW50VW5tb3V0LmVtaXQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5vbkVs
ZW1lbnRVbm1vdW50LmVtaXQodGhpcy5lbGVtZW50KTsKICAgICB9CiAgICAgdG9TdHJpbmcoKSB7
CiAgICAgICAgIHJldHVybiB0aGlzLmtleTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9u
ZW50cy5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJh
cnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qcwppbmRleCBhNjk0OGIzMWExN2IwMmIy
MTZhNGMxY2QyZjQyOTY3OGM5NThiOTZkLi4yOWM1ZjI5YmRiOTJkMzhhOGZjOTVlODBhNzkzNDkw
ZDNiNzRiNTIwIDEwMDY0NAotLS0gYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMKKysrIGIvVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25l
bnRzL0Jhc2VDb21wb25lbnRzLmpzCkBAIC00MiwxMCArNDIsMTAgQEAgZnVuY3Rpb24gQXBwbHlO
ZXdDaGlsZHJlbihlbGVtZW50LCBvbGRBcnJheSwgbmV3QXJyYXksIGNoaWxkVG9LZXlGdW5jLCBp
dGVtUHJvY2UKICAgICBuZXdDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHsKICAg
ICAgICAgaWYgKGluZGV4IDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgICAg
IGlmIChjaGlsZCAhPT0gZWxlbWVudC5jaGlsZHJlbltpbmRleF0pIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5yZXBsYWNlQ2hpbGQoY2hpbGQsIGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5yZXBsYWNlKGVsZW1l
bnQuY2hpbGRyZW5baW5kZXhdLCB0eXBlb2YgaXRlbVByb2Nlc3NvciA9PT0gImZ1bmN0aW9uIiA/
IGl0ZW1Qcm9jZXNzb3IoY2hpbGQpIDogY2hpbGQpOworICAgICAgICAgICAgICAgIGlmIChjaGls
ZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQu
Y2hpbGRyZW5baW5kZXhdLmJlZm9yZShjaGlsZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIERPTS5iZWZvcmUoZWxlbWVudC5jaGlsZHJlbltpbmRleF0sIHR5
cGVvZiBpdGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkg
OiBjaGlsZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBp
ZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1l
bGluZUNvbXBvbmVudHMuanMgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0
YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpzCmluZGV4IDkx
ZDFlMTRjYjljNjc1ZmI0OTc0NmNlMWY1NzRkOGMwMmU0M2UzZWYuLmQzY2ZmZGI1ZWE2YzkyYWVm
ODI1YWU0YTlmYjhlNDQ2YzY4NjAyNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jl
c3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1lbGluZUNvbXBv
bmVudHMuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMv
bGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcwpAQCAtMzMxLDUwICsz
MzEsNjEgQEAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNjYWxlcywg
b3B0aW9uID0ge30pID0+IHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICBjb25zdCBjYW52YXNS
ZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHsKLSAgICAgICAgICAgIGRvdHM6
IGluaXREb3RzLAotICAgICAgICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAotICAgICAgICAgICAg
c2Nyb2xsTGVmdDogMCwKLSAgICAgICAgICAgIHdpZHRoOiAwLAotICAgICAgICB9LAotICAgICAg
ICBvbkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHNldHVwQ2FudmFz
SGVpZ2h0V2l0aERwcihlbGVtZW50LCBoZWlnaHQpOwotICAgICAgICAgICAgc2V0dXBDYW52YXND
b250ZXh0U2NhbGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAob25Eb3RDbGljaykgewotICAg
ICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewot
ICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhl
LCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkb3RzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90Q2xpY2so
ZG90c1swXSwgZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgcmV0
dXJuIExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWlu
ZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CisgICAgICAgIGNvbnN0IG9uU2Nyb2xsQWN0aW9uID0g
KGUpID0+IHsKKyAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50
YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8oKX0pOworICAgICAgICB9Owor
ICAgICAgICBjb25zdCBvblJlc2l6ZUFjdGlvbiA9ICh3aWR0aCkgPT4geworICAgICAgICAgICAg
Y2FudmFzUmVmLnNldFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKKyAgICAgICAgfTsKIAotICAgICAg
ICAgICAgaWYgKG9uRG90Q2xpY2sgfHwgb25Eb3RIb3ZlcikgewotICAgICAgICAgICAgICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVm
LnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG90
cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbkRvdEhvdmVyKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90SG92ZXIoZG90c1swXSwgZSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0
eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlm
Ziwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBlbGVtZW50LmdldENv
bnRleHQoIjJkIik7Ci0gICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwot
ICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMgfHwgdHlw
ZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZm
LndpZHRoID09PSAnbnVtYmVyJykgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRv
dHMubGVuZ3RoIDw9IHNjYWxlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURp
ZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5kb3RzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvcmNl
UmVkcmF3Q2FjaGUgPSB0cnVlOworICAgICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRl
UmVmKHsKKyAgICAgICAgICAgIHN0YXRlOiB7CisgICAgICAgICAgICAgICAgZG90czogaW5pdERv
dHMsCisgICAgICAgICAgICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAorICAgICAgICAgICAgICAg
IHNjcm9sbExlZnQ6IDAsCisgICAgICAgICAgICAgICAgd2lkdGg6IDAsCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdodCk7CisgICAgICAg
ICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgaWYgKG9uRG90Q2xpY2spIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
ZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xs
TGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBdLCBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKG9uRG90Q2xpY2sgfHwgb25Eb3RIb3ZlcikgeworICAgICAgICAgICAgICAgICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52
YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZG90cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25E
b3RIb3ZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RIb3Zlcihkb3Rz
WzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNv
ciA9ICJwb2ludGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICBvbkNvbnRhaW5lclNjcm9sbC5zdG9wQWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAg
ICAgICAgICAgICBvblJlc2l6ZS5zdG9wQWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBz
dGF0ZSkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBlbGVtZW50LmdldENv
bnRleHQoIjJkIik7CisgICAgICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2FjaGUgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBzdGF0ZURpZmYuZG90
cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBz
dGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRvdHMubGVuZ3RoIDw9IHNjYWxlcy5sZW5ndGgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBzdGF0ZURpZmYuZG90cykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IG9m
ZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0
ZSwgZm9yY2VSZWRyYXdDYWNoZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJlZHJh
d0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0NhY2hlKSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICAgICAgfSk7CiAKLSAgICByZXR1
cm4gTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5l
clNjcm9sbCwgb25SZXNpemUpID0+IHsKICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2Nh
bGVzLmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICAgICAg
Y29uc3QgdXBkYXRlRGF0YSA9IChkb3RzLCBzY2FsZXMpID0+IHsKICAgICAgICAgICAgIHVwZGF0
ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBkb3RXaWR0aCAqIGdldERldmljZVBpeGVs
UmF0aW8oKSk7CkBAIC0zODUsMTIgKzM5Niw4IEBAIFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBv
bmVudCA9IChkb3RzLCBzY2FsZXMsIG9wdGlvbiA9IHt9KSA9PiB7CiAgICAgICAgIH07CiAgICAg
ICAgIGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9ydGVyID09PSAiZnVuY3Rpb24iKQogICAgICAgICAg
ICAgb3B0aW9uLmV4cG9ydGVyKHVwZGF0ZURhdGEpOwotICAgICAgICBvbkNvbnRhaW5lclNjcm9s
bC5hY3Rpb24oKGUpID0+IHsKLSAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xs
TGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8oKX0pOwotICAg
ICAgICB9KTsKLSAgICAgICAgb25SZXNpemUuYWN0aW9uKCh3aWR0aCkgPT4gewotICAgICAgICAg
ICAgY2FudmFzUmVmLnNldFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKLSAgICAgICAgfSk7CisgICAg
ICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbihvblNjcm9sbEFjdGlvbik7CisgICAgICAgIG9u
UmVzaXplLmFjdGlvbihvblJlc2l6ZUFjdGlvbik7CiAgICAgICAgIHJldHVybiBgPGRpdiBjbGFz
cz0ic2VyaWVzIj4KICAgICAgICAgICAgIDxjYW52YXMgcmVmPSIke2NhbnZhc1JlZn0iPgogICAg
ICAgICA8L2Rpdj5gOwpAQCAtNjgzLDUxICs2OTAsNjQgQEAgVGltZWxpbmUuQ2FudmFzWEF4aXND
b21wb25lbnQgPSAoc2NhbGVzLCBvcHRpb24gPSB7fSkgPT4gewogICAgIH07CiAgICAgY29uc3Qg
aW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdCA9IGdldFNjYWxlc01hcExpbmtMaXN0KGluaXRTY2Fs
ZXMpOwogCi0gICAgY29uc3QgY2FudmFzUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0
YXRlOiB7Ci0gICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAotICAgICAgICAgICAgd2lkdGg6IDAs
Ci0gICAgICAgICAgICBzY2FsZXM6IGluaXRTY2FsZXMsCi0gICAgICAgICAgICBzY2FsZXNNYXBM
aW5rTGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAotICAgICAgICB9LAotICAgICAgICBv
bkVsZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzSGVp
Z2h0V2l0aERwcihlbGVtZW50LCBjYW52YXNIZWlnaHQpOwotICAgICAgICAgICAgc2V0dXBDYW52
YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAob25TY2FsZUNsaWNrKSB7
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dl
clNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChzY2FsZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAg
b25TY2FsZUNsaWNrKHNjYWxlc1swXSwgZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUhvdmVyKSB7
Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAo
ZSkgPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQgc2NhbGVzID0gZ2V0TW91c2VFdmVudFRp
cmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG9uU2NhbGVIb3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNj
YWxlSG92ZXIoc2NhbGVzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQu
c3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7
CisgICAgcmV0dXJuIHsKKyAgICAgICAgc2VyaWVzOiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBk
YXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4geworICAg
ICAgICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4geworICAgICAgICAgICAgICAg
IGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdl
dERldmljZVBpeGVsUmF0aW8oKX0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGNvbnN0
IG9uUmVzaXplQWN0aW9uID0gKHdpZHRoKSA9PiB7CisgICAgICAgICAgICAgICAgY2FudmFzUmVm
LnNldFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
IGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoeworICAgICAgICAgICAgICAgIHN0YXRl
OiB7CisgICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoOiAwLAorICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IGluaXRTY2FsZXMsCisg
ICAgICAgICAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBpbml0U2NhbGVHcm91cE1hcExp
bmtMaXN0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBvbkVsZW1lbnRNb3Vu
dDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRX
aXRoRHByKGVsZW1lbnQsIGNhbnZhc0hlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHNldHVw
Q2FudmFzQ29udGV4dFNjYWxlKGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAob25T
Y2FsZUNsaWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
c2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNj
cm9sbExlZnQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2Fs
ZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlQ2xpY2so
c2NhbGVzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljayB8fCBvblNj
YWxlSG92ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
ZXQgc2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRl
LnNjcm9sbExlZnQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
Y2FsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvblNj
YWxlSG92ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlSG92
ZXIoc2NhbGVzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5j
dXJzb3IgPSAiZGVmYXVsdCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIG9uRWxlbWVudFVubW91bnQ6IChlbGVtZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLnN0b3BBY3Rpb24ob25TY3Jv
bGxBY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZS5zdG9wQWN0aW9uKG9uUmVz
aXplQWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG9uU3RhdGVV
cGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgIGxldCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlm
IChzdGF0ZURpZmYuc2NhbGVzIHx8IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251
bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251bWJlcicpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUuc2NhbGVzTWFwTGlua0xpc3QgPSBnZXRTY2FsZXNNYXBMaW5rTGlz
dChzdGF0ZURpZmYuc2NhbGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRS
ZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3
Q2FjaGUpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwg
c3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2FjaGUg
PSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzIHx8IHR5cGVvZiBzdGF0
ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9
PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykgewot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zY2FsZXNNYXBMaW5rTGlzdCA9IGdldFNjYWxlc01h
cExpbmtMaXN0KHN0YXRlRGlmZi5zY2FsZXMpOwotICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVx
dWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IG9mZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNo
ZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSkpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfSk7CisgICAgICAgICAgICB9KTsKKwogCi0gICAgcmV0
dXJuIHsKLSAgICAgICAgc2VyaWVzOiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRlQ29udGFp
bmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4gewogICAgICAgICAgICAg
dXBkYXRlQ29udGFpbmVyV2lkdGgoc2NhbGVzLmxlbmd0aCAqIHNjYWxlV2lkdGggKiBnZXREZXZp
Y2VQaXhlbFJhdGlvKCkpOwogICAgICAgICAgICAgY29uc3QgdXBkYXRlRGF0YSA9IChzY2FsZXMp
ID0+IHsKICAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3Ro
ICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CkBAIC03MzcsMTIgKzc1Nyw4
IEBAIFRpbWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9uZW50ID0gKHNjYWxlcywgb3B0aW9uID0ge30p
ID0+IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9y
dGVyID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRh
dGVEYXRhKTsKLSAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewot
ICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQu
c2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8oKX0pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICBvblJlc2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
Y2FudmFzUmVmLnNldFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKLSAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAg
ICAgICAgIG9uUmVzaXplLmFjdGlvbihvblJlc2l6ZUFjdGlvbik7CiAgICAgICAgICAgICByZXR1
cm4gYDxkaXYgY2xhc3M9IngtYXhpcyI+CiAgICAgICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7
Y2FudmFzUmVmfSI+CiAgICAgICAgICAgICA8L2Rpdj5gOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375465</attachid>
            <date>2019-08-02 16:18:26 -0700</date>
            <delta_ts>2019-08-02 19:11:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190802161826.patch</filename>
            <type>text/plain</type>
            <size>17129</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uYTM1YWE5MWMyNTQ4ZGI3OGNjNGVlNWI2OTYzZDEzZDI3ZGI0NTIwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVbmhvb2sgdGhlIHNjcm9sbCBl
dmVudCB3aGVuIGEgc2VyaWVzL2F4aXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFp
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA0
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzOgorICAg
ICAgICAoU2lnbmFsLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChwcm90b3R5
cGUuc3RvcEFjdGlvbik6IFVucmVnc2l0ZXIgYW4gYWN0aW9uIGhhbmRsZXIKKyAgICAgICAgKFJl
Zik6CisgICAgICAgIChSZWYucHJvdG90eXBlLmFwcGx5KToKKyAgICAgICAgKFJlZi5wcm90b3R5
cGUuZGVzdG9yeSk6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzOgorICAgICAgICAoQXBw
bHlOZXdDaGlsZHJlbik6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qczoKKyAgICAg
ICAgKFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudCk6CisKIDIwMTktMDgtMDIgIFpoaWZl
aSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRzLndlYmtp
dC5vcmcgVGltZWxpbmVdIFVzaW5nIHRyYW5zZm9ybSBtYXRyaXggdG8gY2FsY3VsYXRlIHRoZSB0
YWcgcm90YXRpb24gcG9zaXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKaW5kZXggMTI5ODJmOWM5
NmZhNDNlM2Y0ZmRiZDk2MDRhNGUzZjc2ODViNDcyYy4uYzkxNGQ1YjgwMzRiNDQxZjA5NjdlYWQ0
OTYxYzE1ZGU2NGUyZmEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKQEAgLTM5LDEyICszOSwx
MiBAQCBjbGFzcyBTaWduYWwgewogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgcmVt
b3ZlTGlzdGVuZXIoZm4pIHsKLSAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPSAwOworICAgICAg
ICBsZXQgcmVtb3ZlSW5kZXggPSAwOwogICAgICAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhh
bmRsZXIsIGluZGV4KSA9PiB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gZm4pCiAgICAg
ICAgICAgICAgICAgcmVtb3ZlSW5kZXggPSBpbmRleDsKICAgICAgICAgfSk7Ci0gICAgICAgIHRo
aXMuaGFuZGxlci5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpOworICAgICAgICB0aGlzLmhhbmRsZXJz
LnNwbGljZShyZW1vdmVJbmRleCwgMSk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KICAg
ICByZW1vdmVBbGxMaXN0ZW5lcigpIHsKQEAgLTkwLDYgKzkwLDEwIEBAIGNsYXNzIEV2ZW50U3Ry
ZWFtIHsKICAgICAgICAgdGhpcy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwogICAgICAgICByZXR1
cm4gdGhpczsKICAgICB9CisgICAgc3RvcEFjdGlvbihmbikgeworICAgICAgICB0aGlzLnNpZ25h
bC5yZW1vdmVMaXN0ZW5lcihmbik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KICAgICBl
cnJvcihmbikgewogICAgICAgICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsKICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC0yNDMsNyArMjQ3LDcgQEAgY2xhc3MgUmVmIHsKICAgICAg
ICAgdGhpcy5zdGF0ZSA9IGNvbmZpZy5zdGF0ZSAhPT0gdW5kZWZpbmVkID8gY29uZmlnLnN0YXRl
IDoge307CiAgICAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZSA9IG5ldyBTaWduYWwoKS5hZGRMaXN0
ZW5lcihjb25maWcub25TdGF0ZVVwZGF0ZSk7CiAgICAgICAgIHRoaXMub25FbGVtZW50TW91bnQg
PSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudE1vdW50KTsKLSAgICAg
ICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmln
Lm9uRWxlbWVudFVubW91dCk7CisgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudCA9IG5ldyBT
aWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVtZW50VW5tb3VudCk7CiAgICAgfQogICAg
IGJpbmQoZWxlbWVudCkgewogICAgICAgICB0aGlzLmFwcGx5KGVsZW1lbnQucXVlcnlTZWxlY3Rv
cihgW3JlZj0iJHt0aGlzLmtleX0iXWApKTsKQEAgLTI1NSw3ICsyNTksNyBAQCBjbGFzcyBSZWYg
ewogICAgICAgICBpZiAodGhpcy5lbGVtZW50ID09PSBlbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAodGhpcy5lbGVtZW50ICYmIHRoaXMuZWxlbWVudCAhPT0gZWxlbWVu
dCkKLSAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3V0LmVtaXQodGhpcy5lbGVtZW50KTsK
KyAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudC5lbWl0KHRoaXMuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgIC8vSW5pdGlhbCBzdGF0ZQog
ICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RhdGUgIT09IG51
bGwpCkBAIC0yNjUsNyArMjY5LDcgQEAgY2xhc3MgUmVmIHsKICAgICBkZXN0b3J5KGVsZW1lbnQp
IHsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQuZW1pdCh0aGlz
LmVsZW1lbnQpOworICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91bnQuZW1pdCh0aGlzLmVsZW1l
bnQpOwogICAgIH0KICAgICB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMua2V5Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25l
bnRzLmpzCmluZGV4IGE2OTQ4YjMxYTE3YjAyYjIxNmE0YzFjZDJmNDI5Njc4Yzk1OGI5NmQuLjI5
YzVmMjliZGI5MmQzOGE4ZmM5NWU4MGE3OTM0OTBkM2I3NGI1MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50
cy9CYXNlQ29tcG9uZW50cy5qcworKysgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMKQEAgLTQy
LDEwICs0MiwxMCBAQCBmdW5jdGlvbiBBcHBseU5ld0NoaWxkcmVuKGVsZW1lbnQsIG9sZEFycmF5
LCBuZXdBcnJheSwgY2hpbGRUb0tleUZ1bmMsIGl0ZW1Qcm9jZQogICAgIG5ld0NoaWxkcmVuLmZv
ckVhY2goKGNoaWxkLCBpbmRleCkgPT4gewogICAgICAgICBpZiAoaW5kZXggPCBlbGVtZW50LmNo
aWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGNoaWxkICE9PSBlbGVtZW50LmNoaWxk
cmVuW2luZGV4XSkgewotICAgICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxF
bGVtZW50KQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlcGxhY2VDaGlsZChjaGlsZCwg
ZWxlbWVudC5jaGlsZHJlbltpbmRleF0pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgRE9NLnJlcGxhY2UoZWxlbWVudC5jaGlsZHJlbltpbmRleF0sIHR5cGVvZiBp
dGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkgOiBjaGls
ZCk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbltpbmRleF0uYmVmb3JlKGNoaWxk
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgRE9NLmJlZm9y
ZShlbGVtZW50LmNoaWxkcmVuW2luZGV4XSwgdHlwZW9mIGl0ZW1Qcm9jZXNzb3IgPT09ICJmdW5j
dGlvbiIgPyBpdGVtUHJvY2Vzc29yKGNoaWxkKSA6IGNoaWxkKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcyBiL1Rvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9U
aW1lbGluZUNvbXBvbmVudHMuanMKaW5kZXggOTFkMWUxNGNiOWM2NzVmYjQ5NzQ2Y2UxZjU3NGQ4
YzAyZTQzZTNlZi4uOWIwMjlkMDAxZDkxYzQ4Zjc0YmJkZmIxYzRmMzdkNjk4OGMxNDg5ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcworKysgYi9Ub29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxp
bmVDb21wb25lbnRzLmpzCkBAIC0zMzEsNTAgKzMzMSw2NiBAQCBUaW1lbGluZS5DYW52YXNTZXJp
ZXNDb21wb25lbnQgPSAoZG90cywgc2NhbGVzLCBvcHRpb24gPSB7fSkgPT4gewogICAgICAgICB9
CiAgICAgfTsKIAotICAgIGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICBzdGF0ZTogewotICAgICAgICAgICAgZG90czogaW5pdERvdHMsCi0gICAgICAgICAgICBzY2Fs
ZXM6IGluaXRTY2FsZXMsCi0gICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAotICAgICAgICAgICAg
d2lkdGg6IDAsCi0gICAgICAgIH0sCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkg
PT4gewotICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdo
dCk7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVtZW50KTsKLSAgICAg
ICAgICAgIGlmIChvbkRvdENsaWNrKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBkb3Rz
ID0gZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0
LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBdLCBlKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0KKyAgICByZXR1cm4gTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVw
ZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUpID0+IHsKKyAg
ICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4geworICAgICAgICAgICAgY2FudmFz
UmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNl
UGl4ZWxSYXRpbygpfSk7CisgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9uUmVzaXplQWN0aW9u
ID0gKHdpZHRoKSA9PiB7CisgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3
aWR0aH0pOworICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAob25Eb3RDbGljayB8fCBvbkRv
dEhvdmVyKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZW1vdmUnLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNl
RXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9uRG90SG92ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25E
b3RIb3Zlcihkb3RzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5
bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBvblN0
YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgICAgIGxl
dCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNj
YWxlcyB8fCBzdGF0ZURpZmYuZG90cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09
ICdudW1iZXInIHx8IHR5cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZG90cy5sZW5ndGggPD0gc2NhbGVzLmxlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CisgICAgICAg
IGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoeworICAgICAgICAgICAgc3RhdGU6IHsK
KyAgICAgICAgICAgICAgICBkb3RzOiBpbml0RG90cywKKyAgICAgICAgICAgICAgICBzY2FsZXM6
IGluaXRTY2FsZXMsCisgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvbkVsZW1lbnRNb3Vu
dDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhE
cHIoZWxlbWVudCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRT
Y2FsZShlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpZiAob25Eb3RDbGljaykgeworICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3RzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJE
b3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbkRvdENsaWNrKGRvdHNbMF0sIGUpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAob25Eb3RDbGljayB8fCBvbkRvdEhv
dmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91
c2Vtb3ZlJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3RzID0gZ2V0
TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChvbkRvdEhvdmVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbkRvdEhvdmVyKGRvdHNbMF0sIGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5z
dHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvbkVsZW1lbnRVbm1vdW50
OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLnN0b3BB
Y3Rpb24ob25TY3JvbGxBY3Rpb24pOworICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rp
b24ob25SZXNpemVBY3Rpb24pOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uU3RhdGVV
cGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgICAg
ICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChzdGF0
ZURpZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5kb3RzIHx8IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xs
TGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251bWJlcicp
IHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLnNjYWxlcyA9IHN0YXRlRGlmZi5zY2FsZXMubWFw
KHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0NhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVE
aWZmLmRvdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlRGlmZi5kb3RzID0gc3Rh
dGVEaWZmLmRvdHMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJl
ZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0NhY2hlKSk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRl
RGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0pOworICAgICAgICB9KTsKIAotICAgIHJldHVybiBMaXN0UHJvdmlkZXJSZWNlaXZl
cigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4g
ewogICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3RoICogZG90V2lkdGgg
KiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgICAgICBjb25zdCB1cGRhdGVEYXRhID0gKGRv
dHMsIHNjYWxlcykgPT4gewogICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2NhbGVz
Lmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKQEAgLTM4NSwxMiAr
NDAxLDggQEAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNjYWxlcywg
b3B0aW9uID0ge30pID0+IHsKICAgICAgICAgfTsKICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24u
ZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICBvcHRpb24uZXhwb3J0ZXIodXBk
YXRlRGF0YSk7Ci0gICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAg
ICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxM
ZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBvblJl
c2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUo
e3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9KTsKKyAgICAgICAgb25Db250YWluZXJTY3JvbGwu
YWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXpl
QWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZXJpZXMiPgogICAgICAgICAg
ICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgIDwvZGl2PmA7CkBAIC02MDUs
NiArNjE3LDcgQEAgVGltZWxpbmUuQ2FudmFzWEF4aXNDb21wb25lbnQgPSAoc2NhbGVzLCBvcHRp
b24gPSB7fSkgPT4gewogICAgICAgICB9KTsKICAgICB9OwogICAgIGNvbnN0IHJlZHJhd0NhY2hl
ID0gKG9mZnNjcmVlbkNhbnZhcywgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgbm90aWZ5VG9S
ZW5kZXIpID0+IHsKKyAgICAgICAgY29uc29sZS5sb2coc3RhdGVEaWZmKTsKICAgICAgICAgY29u
c3Qgc2Nyb2xsTGVmdCA9IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicg
PyBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA6IHN0YXRlLnNjcm9sbExlZnQ7CiAgICAgICAgIGNvbnN0
IHNjYWxlcyA9IHN0YXRlRGlmZi5zY2FsZXMgPyBzdGF0ZURpZmYuc2NhbGVzIDogc3RhdGUuc2Nh
bGVzOwogICAgICAgICBjb25zdCBzY2FsZXNNYXBMaW5rTGlzdCA9IHN0YXRlRGlmZi5zY2FsZXNN
YXBMaW5rTGlzdCA/IHN0YXRlRGlmZi5zY2FsZXNNYXBMaW5rTGlzdCA6IHN0YXRlLnNjYWxlc01h
cExpbmtMaXN0OwpAQCAtNjgzLDUxICs2OTYsNjYgQEAgVGltZWxpbmUuQ2FudmFzWEF4aXNDb21w
b25lbnQgPSAoc2NhbGVzLCBvcHRpb24gPSB7fSkgPT4gewogICAgIH07CiAgICAgY29uc3QgaW5p
dFNjYWxlR3JvdXBNYXBMaW5rTGlzdCA9IGdldFNjYWxlc01hcExpbmtMaXN0KGluaXRTY2FsZXMp
OwogCi0gICAgY29uc3QgY2FudmFzUmVmID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRl
OiB7Ci0gICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAotICAgICAgICAgICAgd2lkdGg6IDAsCi0g
ICAgICAgICAgICBzY2FsZXM6IGluaXRTY2FsZXMsCi0gICAgICAgICAgICBzY2FsZXNNYXBMaW5r
TGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAotICAgICAgICB9LAotICAgICAgICBvbkVs
ZW1lbnRNb3VudDogKGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0
V2l0aERwcihlbGVtZW50LCBjYW52YXNIZWlnaHQpOwotICAgICAgICAgICAgc2V0dXBDYW52YXND
b250ZXh0U2NhbGUoZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAob25TY2FsZUNsaWNrKSB7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNj
YWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzY2FsZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAgb25T
Y2FsZUNsaWNrKHNjYWxlc1swXSwgZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUhvdmVyKSB7Ci0g
ICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkg
PT4gewotICAgICAgICAgICAgICAgICAgICBsZXQgc2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdn
ZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG9uU2NhbGVIb3ZlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxl
SG92ZXIoc2NhbGVzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5
bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7Cisg
ICAgcmV0dXJuIHsKKyAgICAgICAgc2VyaWVzOiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRl
Q29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4geworICAgICAg
ICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4geworICAgICAgICAgICAgICAgIGNh
bnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERl
dmljZVBpeGVsUmF0aW8oKX0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGNvbnN0IG9u
UmVzaXplQWN0aW9uID0gKHdpZHRoKSA9PiB7CisgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNl
dFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGNv
bnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoeworICAgICAgICAgICAgICAgIHN0YXRlOiB7
CisgICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCisgICAgICAgICAgICAgICAgICAg
IHdpZHRoOiAwLAorICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IGluaXRTY2FsZXMsCisgICAg
ICAgICAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBpbml0U2NhbGVHcm91cE1hcExpbmtM
aXN0CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBvbkVsZW1lbnRNb3VudDog
KGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRo
RHByKGVsZW1lbnQsIGNhbnZhc0hlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHNldHVwQ2Fu
dmFzQ29udGV4dFNjYWxlKGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAob25TY2Fs
ZUNsaWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoJ2NsaWNrJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2Nh
bGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9s
bExlZnQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2FsZXMu
bGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlQ2xpY2soc2Nh
bGVzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljayB8fCBvblNjYWxl
SG92ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cignbW91c2Vtb3ZlJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
c2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNj
cm9sbExlZnQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2Fs
ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxl
SG92ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlSG92ZXIo
c2NhbGVzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5z
dHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJz
b3IgPSAiZGVmYXVsdCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIG9uRWxlbWVudFVubW91bnQ6IChlbGVtZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLnN0b3BBY3Rpb24ob25TY3JvbGxB
Y3Rpb24pOworICAgICAgICAgICAgICAgICAgICBvblJlc2l6ZS5zdG9wQWN0aW9uKG9uUmVzaXpl
QWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG9uU3RhdGVVcGRh
dGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGxldCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChz
dGF0ZURpZmYuc2NhbGVzIHx8IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJl
cicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251bWJlcicpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRG8gYSBjb3B5LCBpbiBjYXNlIHRoZSBkYXRlIGNoYW5nZWQgd2hlbiB3ZSBy
ZW5kZXIgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZURpZmYuc2NhbGVzID0g
c3RhdGVEaWZmLnNjYWxlcy5tYXAoeCA9PiB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZURpZmYuc2NhbGVzTWFwTGlua0xpc3QgPSBnZXRTY2FsZXNNYXBMaW5rTGlzdChzdGF0
ZURpZmYuc2NhbGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0Nh
Y2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIo
cmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUp
KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfQotICAgICAgICB9LAotICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVE
aWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2FjaGUgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzIHx8IHR5cGVvZiBzdGF0ZURpZmYu
c2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251
bWJlcicpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykgewotICAgICAg
ICAgICAgICAgICAgICBzdGF0ZS5zY2FsZXNNYXBMaW5rTGlzdCA9IGdldFNjYWxlc01hcExpbmtM
aXN0KHN0YXRlRGlmZi5zY2FsZXMpOwotICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0Nh
Y2hlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lKCgpID0+IG9mZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxl
bWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfSk7CisgICAgICAgICAgICB9KTsKKwogCi0gICAgcmV0dXJuIHsK
LSAgICAgICAgc2VyaWVzOiBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lk
dGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4gewogICAgICAgICAgICAgdXBkYXRl
Q29udGFpbmVyV2lkdGgoc2NhbGVzLmxlbmd0aCAqIHNjYWxlV2lkdGggKiBnZXREZXZpY2VQaXhl
bFJhdGlvKCkpOwogICAgICAgICAgICAgY29uc3QgdXBkYXRlRGF0YSA9IChzY2FsZXMpID0+IHsK
ICAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3RoICogc2Nh
bGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CkBAIC03MzcsMTIgKzc2NSw4IEBAIFRp
bWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9uZW50ID0gKHNjYWxlcywgb3B0aW9uID0ge30pID0+IHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9ydGVyID09
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRh
KTsKLSAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAgICAg
ICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xs
TGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8oKX0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBvblJlc2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFz
UmVmLnNldFN0YXRlKHt3aWR0aDogd2lkdGh9KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAg
IG9uUmVzaXplLmFjdGlvbihvblJlc2l6ZUFjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYDxk
aXYgY2xhc3M9IngtYXhpcyI+CiAgICAgICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFz
UmVmfSI+CiAgICAgICAgICAgICA8L2Rpdj5gOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375474</attachid>
            <date>2019-08-02 19:11:08 -0700</date>
            <delta_ts>2019-08-05 16:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190802191107.patch</filename>
            <type>text/plain</type>
            <size>16703</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uYTM1YWE5MWMyNTQ4ZGI3OGNjNGVlNWI2OTYzZDEzZDI3ZGI0NTIwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVbmhvb2sgdGhlIHNjcm9sbCBl
dmVudCB3aGVuIGEgc2VyaWVzL2F4aXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFp
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA0
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzOgorICAg
ICAgICAoU2lnbmFsLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChwcm90b3R5
cGUuc3RvcEFjdGlvbik6IFVucmVnc2l0ZXIgYW4gYWN0aW9uIGhhbmRsZXIKKyAgICAgICAgKFJl
Zik6CisgICAgICAgIChSZWYucHJvdG90eXBlLmFwcGx5KToKKyAgICAgICAgKFJlZi5wcm90b3R5
cGUuZGVzdG9yeSk6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzOgorICAgICAgICAoQXBw
bHlOZXdDaGlsZHJlbik6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qczoKKyAgICAg
ICAgKFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudCk6CisKIDIwMTktMDgtMDIgIFpoaWZl
aSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRzLndlYmtp
dC5vcmcgVGltZWxpbmVdIFVzaW5nIHRyYW5zZm9ybSBtYXRyaXggdG8gY2FsY3VsYXRlIHRoZSB0
YWcgcm90YXRpb24gcG9zaXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKaW5kZXggMTI5ODJmOWM5
NmZhNDNlM2Y0ZmRiZDk2MDRhNGUzZjc2ODViNDcyYy4uYzkxNGQ1YjgwMzRiNDQxZjA5NjdlYWQ0
OTYxYzE1ZGU2NGUyZmEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKQEAgLTM5LDEyICszOSwx
MiBAQCBjbGFzcyBTaWduYWwgewogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgcmVt
b3ZlTGlzdGVuZXIoZm4pIHsKLSAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPSAwOworICAgICAg
ICBsZXQgcmVtb3ZlSW5kZXggPSAwOwogICAgICAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhh
bmRsZXIsIGluZGV4KSA9PiB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gZm4pCiAgICAg
ICAgICAgICAgICAgcmVtb3ZlSW5kZXggPSBpbmRleDsKICAgICAgICAgfSk7Ci0gICAgICAgIHRo
aXMuaGFuZGxlci5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpOworICAgICAgICB0aGlzLmhhbmRsZXJz
LnNwbGljZShyZW1vdmVJbmRleCwgMSk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KICAg
ICByZW1vdmVBbGxMaXN0ZW5lcigpIHsKQEAgLTkwLDYgKzkwLDEwIEBAIGNsYXNzIEV2ZW50U3Ry
ZWFtIHsKICAgICAgICAgdGhpcy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwogICAgICAgICByZXR1
cm4gdGhpczsKICAgICB9CisgICAgc3RvcEFjdGlvbihmbikgeworICAgICAgICB0aGlzLnNpZ25h
bC5yZW1vdmVMaXN0ZW5lcihmbik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KICAgICBl
cnJvcihmbikgewogICAgICAgICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsKICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC0yNDMsNyArMjQ3LDcgQEAgY2xhc3MgUmVmIHsKICAgICAg
ICAgdGhpcy5zdGF0ZSA9IGNvbmZpZy5zdGF0ZSAhPT0gdW5kZWZpbmVkID8gY29uZmlnLnN0YXRl
IDoge307CiAgICAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZSA9IG5ldyBTaWduYWwoKS5hZGRMaXN0
ZW5lcihjb25maWcub25TdGF0ZVVwZGF0ZSk7CiAgICAgICAgIHRoaXMub25FbGVtZW50TW91bnQg
PSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudE1vdW50KTsKLSAgICAg
ICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmln
Lm9uRWxlbWVudFVubW91dCk7CisgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudCA9IG5ldyBT
aWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVtZW50VW5tb3VudCk7CiAgICAgfQogICAg
IGJpbmQoZWxlbWVudCkgewogICAgICAgICB0aGlzLmFwcGx5KGVsZW1lbnQucXVlcnlTZWxlY3Rv
cihgW3JlZj0iJHt0aGlzLmtleX0iXWApKTsKQEAgLTI1NSw3ICsyNTksNyBAQCBjbGFzcyBSZWYg
ewogICAgICAgICBpZiAodGhpcy5lbGVtZW50ID09PSBlbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAodGhpcy5lbGVtZW50ICYmIHRoaXMuZWxlbWVudCAhPT0gZWxlbWVu
dCkKLSAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3V0LmVtaXQodGhpcy5lbGVtZW50KTsK
KyAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudC5lbWl0KHRoaXMuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgIC8vSW5pdGlhbCBzdGF0ZQog
ICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RhdGUgIT09IG51
bGwpCkBAIC0yNjUsNyArMjY5LDcgQEAgY2xhc3MgUmVmIHsKICAgICBkZXN0b3J5KGVsZW1lbnQp
IHsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQuZW1pdCh0aGlz
LmVsZW1lbnQpOworICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91bnQuZW1pdCh0aGlzLmVsZW1l
bnQpOwogICAgIH0KICAgICB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMua2V5Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25l
bnRzLmpzCmluZGV4IGE2OTQ4YjMxYTE3YjAyYjIxNmE0YzFjZDJmNDI5Njc4Yzk1OGI5NmQuLjI5
YzVmMjliZGI5MmQzOGE4ZmM5NWU4MGE3OTM0OTBkM2I3NGI1MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50
cy9CYXNlQ29tcG9uZW50cy5qcworKysgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92
aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMKQEAgLTQy
LDEwICs0MiwxMCBAQCBmdW5jdGlvbiBBcHBseU5ld0NoaWxkcmVuKGVsZW1lbnQsIG9sZEFycmF5
LCBuZXdBcnJheSwgY2hpbGRUb0tleUZ1bmMsIGl0ZW1Qcm9jZQogICAgIG5ld0NoaWxkcmVuLmZv
ckVhY2goKGNoaWxkLCBpbmRleCkgPT4gewogICAgICAgICBpZiAoaW5kZXggPCBlbGVtZW50LmNo
aWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGNoaWxkICE9PSBlbGVtZW50LmNoaWxk
cmVuW2luZGV4XSkgewotICAgICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxF
bGVtZW50KQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlcGxhY2VDaGlsZChjaGlsZCwg
ZWxlbWVudC5jaGlsZHJlbltpbmRleF0pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgRE9NLnJlcGxhY2UoZWxlbWVudC5jaGlsZHJlbltpbmRleF0sIHR5cGVvZiBp
dGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkgOiBjaGls
ZCk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbltpbmRleF0uYmVmb3JlKGNoaWxk
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgRE9NLmJlZm9y
ZShlbGVtZW50LmNoaWxkcmVuW2luZGV4XSwgdHlwZW9mIGl0ZW1Qcm9jZXNzb3IgPT09ICJmdW5j
dGlvbiIgPyBpdGVtUHJvY2Vzc29yKGNoaWxkKSA6IGNoaWxkKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcyBiL1Rvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9U
aW1lbGluZUNvbXBvbmVudHMuanMKaW5kZXggOTFkMWUxNGNiOWM2NzVmYjQ5NzQ2Y2UxZjU3NGQ4
YzAyZTQzZTNlZi4uMDZhZjkzYWIwYzE4YmFhY2M5ZmI4YWM5MmM4ZjI0ZGI4YzQ3ODNmOSAxMDA2
NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcworKysgYi9Ub29scy9yZXN1bHRz
ZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxp
bmVDb21wb25lbnRzLmpzCkBAIC0zMzEsNTAgKzMzMSw2NiBAQCBUaW1lbGluZS5DYW52YXNTZXJp
ZXNDb21wb25lbnQgPSAoZG90cywgc2NhbGVzLCBvcHRpb24gPSB7fSkgPT4gewogICAgICAgICB9
CiAgICAgfTsKIAotICAgIGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAg
ICBzdGF0ZTogewotICAgICAgICAgICAgZG90czogaW5pdERvdHMsCi0gICAgICAgICAgICBzY2Fs
ZXM6IGluaXRTY2FsZXMsCi0gICAgICAgICAgICBzY3JvbGxMZWZ0OiAwLAotICAgICAgICAgICAg
d2lkdGg6IDAsCi0gICAgICAgIH0sCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkg
PT4gewotICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdo
dCk7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVtZW50KTsKLSAgICAg
ICAgICAgIGlmIChvbkRvdENsaWNrKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBkb3Rz
ID0gZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0
LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBdLCBlKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0KKyAgICByZXR1cm4gTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVw
ZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUpID0+IHsKKyAg
ICAgICAgY29uc3Qgb25TY3JvbGxBY3Rpb24gPSAoZSkgPT4geworICAgICAgICAgICAgY2FudmFz
UmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNl
UGl4ZWxSYXRpbygpfSk7CisgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9uUmVzaXplQWN0aW9u
ID0gKHdpZHRoKSA9PiB7CisgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3
aWR0aH0pOworICAgICAgICB9OwogCi0gICAgICAgICAgICBpZiAob25Eb3RDbGljayB8fCBvbkRv
dEhvdmVyKSB7Ci0gICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZW1vdmUnLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNl
RXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9uRG90SG92ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25E
b3RIb3Zlcihkb3RzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5
bGUuY3Vyc29yID0gInBvaW50ZXIiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICBvblN0
YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgICAgIGxl
dCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNj
YWxlcyB8fCBzdGF0ZURpZmYuZG90cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09
ICdudW1iZXInIHx8IHR5cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZG90cy5sZW5ndGggPD0gc2NhbGVzLmxlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CisgICAgICAg
IGNvbnN0IGNhbnZhc1JlZiA9IFJFRi5jcmVhdGVSZWYoeworICAgICAgICAgICAgc3RhdGU6IHsK
KyAgICAgICAgICAgICAgICBkb3RzOiBpbml0RG90cywKKyAgICAgICAgICAgICAgICBzY2FsZXM6
IGluaXRTY2FsZXMsCisgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvbkVsZW1lbnRNb3Vu
dDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhE
cHIoZWxlbWVudCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRT
Y2FsZShlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpZiAob25Eb3RDbGljaykgeworICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3RzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJE
b3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbkRvdENsaWNrKGRvdHNbMF0sIGUpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAob25Eb3RDbGljayB8fCBvbkRvdEhv
dmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91
c2Vtb3ZlJywgKGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3RzID0gZ2V0
TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChvbkRvdEhvdmVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbkRvdEhvdmVyKGRvdHNbMF0sIGUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5z
dHlsZS5jdXJzb3IgPSAiZGVmYXVsdCI7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvbkVsZW1lbnRVbm1vdW50
OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLnN0b3BB
Y3Rpb24ob25TY3JvbGxBY3Rpb24pOworICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rp
b24ob25SZXNpemVBY3Rpb24pOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uU3RhdGVV
cGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAgICAg
ICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChzdGF0
ZURpZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5kb3RzIHx8IHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xs
TGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251bWJlcicp
IHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLnNjYWxlcyA9IHN0YXRlRGlmZi5zY2FsZXMubWFw
KHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0NhY2hlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVE
aWZmLmRvdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlRGlmZi5kb3RzID0gc3Rh
dGVEaWZmLmRvdHMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJl
ZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0NhY2hlKSk7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRl
RGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0pOworICAgICAgICB9KTsKIAotICAgIHJldHVybiBMaXN0UHJvdmlkZXJSZWNlaXZl
cigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6ZSkgPT4g
ewogICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3RoICogZG90V2lkdGgg
KiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgICAgICBjb25zdCB1cGRhdGVEYXRhID0gKGRv
dHMsIHNjYWxlcykgPT4gewogICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2NhbGVz
Lmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKQEAgLTM4NSwxMiAr
NDAxLDggQEAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNjYWxlcywg
b3B0aW9uID0ge30pID0+IHsKICAgICAgICAgfTsKICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24u
ZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICBvcHRpb24uZXhwb3J0ZXIodXBk
YXRlRGF0YSk7Ci0gICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAg
ICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxM
ZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBvblJl
c2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUo
e3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9KTsKKyAgICAgICAgb25Db250YWluZXJTY3JvbGwu
YWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXpl
QWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZXJpZXMiPgogICAgICAgICAg
ICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgIDwvZGl2PmA7CkBAIC02ODMs
NjYgKzY5NSw3OCBAQCBUaW1lbGluZS5DYW52YXNYQXhpc0NvbXBvbmVudCA9IChzY2FsZXMsIG9w
dGlvbiA9IHt9KSA9PiB7CiAgICAgfTsKICAgICBjb25zdCBpbml0U2NhbGVHcm91cE1hcExpbmtM
aXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3QoaW5pdFNjYWxlcyk7CiAKLSAgICBjb25zdCBjYW52
YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHsKLSAgICAgICAgICAgIHNj
cm9sbExlZnQ6IDAsCi0gICAgICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgICAgIHNjYWxlczog
aW5pdFNjYWxlcywKLSAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBpbml0U2NhbGVHcm91
cE1hcExpbmtMaXN0Ci0gICAgICAgIH0sCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVu
dCkgPT4gewotICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGNh
bnZhc0hlaWdodCk7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVtZW50
KTsKLSAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2spIHsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5z
dGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxl
cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlQ2xpY2soc2NhbGVzWzBd
LCBlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKG9uU2NhbGVDbGljayB8fCBvblNjYWxlSG92ZXIpIHsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNS
ZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChz
Y2FsZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25TY2FsZUhvdmVy
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3ZlcihzY2FsZXNbMF0sIGUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRl
ciI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKKyAgICByZXR1cm4geworICAgICAg
ICBzZXJpZXM6IExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25D
b250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CisgICAgICAgICAgICBjb25zdCBvblNjcm9s
bEFjdGlvbiA9IChlKSA9PiB7CisgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtz
Y3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY29uc3Qgb25SZXNpemVBY3Rpb24gPSAod2lk
dGgpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0
aH0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY29uc3QgY2FudmFzUmVmID0gUkVG
LmNyZWF0ZVJlZih7CisgICAgICAgICAgICAgICAgc3RhdGU6IHsKKyAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsTGVmdDogMCwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCisgICAgICAg
ICAgICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKKyAgICAgICAgICAgICAgICAgICAgc2Nh
bGVzTWFwTGlua0xpc3Q6IGluaXRTY2FsZUdyb3VwTWFwTGlua0xpc3QKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIoZWxlbWVudCwgY2FudmFz
SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2spIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4g
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50
VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVDbGljayhzY2FsZXNbMF0sIGUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBpZiAob25TY2FsZUNsaWNrIHx8IG9uU2NhbGVIb3ZlcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkg
PT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2
ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVIb3ZlcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3ZlcihzY2FsZXNbMF0sIGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJwb2lu
dGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAg
b25Db250YWluZXJTY3JvbGwuc3RvcEFjdGlvbihvblNjcm9sbEFjdGlvbik7CisgICAgICAgICAg
ICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rpb24ob25SZXNpemVBY3Rpb24pOworICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRl
RGlmZiwgc3RhdGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2Fj
aGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwg
dHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVE
aWZmLndpZHRoID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
YXRlRGlmZi5zY2FsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VSZWRyYXdD
YWNoZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNjcmVlbkNhY2hlZFJl
bmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdD
YWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
IG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAg
ICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHN0YXRl
RGlmZi5zY2FsZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8
fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgewotICAgICAgICAgICAgICAg
IGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnNjYWxl
c01hcExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3Qoc3RhdGVEaWZmLnNjYWxlcyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2Ny
ZWVuQ2FjaGVkUmVuZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBm
b3JjZVJlZHJhd0NhY2hlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworCiAKLSAgICByZXR1cm4gewotICAgICAgICBzZXJpZXM6IExpc3RQcm92
aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9u
UmVzaXplKSA9PiB7CiAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVu
Z3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CiAgICAgICAgICAgICBj
b25zdCB1cGRhdGVEYXRhID0gKHNjYWxlcykgPT4gewotICAgICAgICAgICAgICAgIHVwZGF0ZUNv
bnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxS
YXRpbygpKTsKKyAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIG1vZGlmaWNhdGlvbiB3aGl0
ZSByZW5kZXJpbmcKKyAgICAgICAgICAgICAgICBjb25zdCBzY2FsZXNDb3B5ID0gc2NhbGVzLm1h
cCh4ID0+IHgpOworICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlc0Nv
cHkubGVuZ3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CiAgICAgICAg
ICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHsKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVz
OiBzY2FsZXMKKyAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiBzY2FsZXNDb3B5LAorICAgICAg
ICAgICAgICAgICAgICBzY2FsZXNNYXBMaW5rTGlzdDogZ2V0U2NhbGVzTWFwTGlua0xpc3Qoc2Nh
bGVzQ29weSkKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9ydGVyID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAg
ICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRhKTsKLSAgICAgICAgICAgIG9uQ29udGFpbmVy
U2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0
ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVsUmF0aW8o
KX0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBvblJlc2l6ZS5hY3Rpb24oKHdpZHRo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHt3aWR0aDogd2lkdGh9
KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9u
KG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAgIG9uUmVzaXplLmFjdGlvbihvblJlc2l6ZUFj
dGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9IngtYXhpcyI+CiAgICAgICAg
ICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgICAgICA8L2Rpdj5g
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375583</attachid>
            <date>2019-08-05 16:43:51 -0700</date>
            <delta_ts>2019-08-05 18:43:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190805164351.patch</filename>
            <type>text/plain</type>
            <size>21098</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uYTM1YWE5MWMyNTQ4ZGI3OGNjNGVlNWI2OTYzZDEzZDI3ZGI0NTIwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVbmhvb2sgdGhlIHNjcm9sbCBl
dmVudCB3aGVuIGEgc2VyaWVzL2F4aXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFp
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA0
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzOgorICAg
ICAgICAoU2lnbmFsLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChwcm90b3R5
cGUuc3RvcEFjdGlvbik6IFVucmVnc2l0ZXIgYW4gYWN0aW9uIGhhbmRsZXIKKyAgICAgICAgKFJl
Zik6CisgICAgICAgIChSZWYucHJvdG90eXBlLmFwcGx5KToKKyAgICAgICAgKFJlZi5wcm90b3R5
cGUuZGVzdG9yeSk6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0
aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzOgorICAgICAgICAoQXBw
bHlOZXdDaGlsZHJlbik6CisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qczoKKyAgICAg
ICAgKFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudCk6CisKIDIwMTktMDgtMDIgIFpoaWZl
aSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRzLndlYmtp
dC5vcmcgVGltZWxpbmVdIFVzaW5nIHRyYW5zZm9ybSBtYXRyaXggdG8gY2FsY3VsYXRlIHRoZSB0
YWcgcm90YXRpb24gcG9zaXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKaW5kZXggMTI5ODJmOWM5
NmZhNDNlM2Y0ZmRiZDk2MDRhNGUzZjc2ODViNDcyYy4uYzkxNGQ1YjgwMzRiNDQxZjA5NjdlYWQ0
OTYxYzE1ZGU2NGUyZmEzZiAxMDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2Ri
cHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkv
cmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMKQEAgLTM5LDEyICszOSwx
MiBAQCBjbGFzcyBTaWduYWwgewogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgcmVt
b3ZlTGlzdGVuZXIoZm4pIHsKLSAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPSAwOworICAgICAg
ICBsZXQgcmVtb3ZlSW5kZXggPSAwOwogICAgICAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhh
bmRsZXIsIGluZGV4KSA9PiB7CiAgICAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gZm4pCiAgICAg
ICAgICAgICAgICAgcmVtb3ZlSW5kZXggPSBpbmRleDsKICAgICAgICAgfSk7Ci0gICAgICAgIHRo
aXMuaGFuZGxlci5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpOworICAgICAgICB0aGlzLmhhbmRsZXJz
LnNwbGljZShyZW1vdmVJbmRleCwgMSk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KICAg
ICByZW1vdmVBbGxMaXN0ZW5lcigpIHsKQEAgLTkwLDYgKzkwLDEwIEBAIGNsYXNzIEV2ZW50U3Ry
ZWFtIHsKICAgICAgICAgdGhpcy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwogICAgICAgICByZXR1
cm4gdGhpczsKICAgICB9CisgICAgc3RvcEFjdGlvbihmbikgeworICAgICAgICB0aGlzLnNpZ25h
bC5yZW1vdmVMaXN0ZW5lcihmbik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KICAgICBl
cnJvcihmbikgewogICAgICAgICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsKICAg
ICAgICAgcmV0dXJuIHRoaXM7CkBAIC0yNDMsNyArMjQ3LDcgQEAgY2xhc3MgUmVmIHsKICAgICAg
ICAgdGhpcy5zdGF0ZSA9IGNvbmZpZy5zdGF0ZSAhPT0gdW5kZWZpbmVkID8gY29uZmlnLnN0YXRl
IDoge307CiAgICAgICAgIHRoaXMub25TdGF0ZVVwZGF0ZSA9IG5ldyBTaWduYWwoKS5hZGRMaXN0
ZW5lcihjb25maWcub25TdGF0ZVVwZGF0ZSk7CiAgICAgICAgIHRoaXMub25FbGVtZW50TW91bnQg
PSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudE1vdW50KTsKLSAgICAg
ICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmln
Lm9uRWxlbWVudFVubW91dCk7CisgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudCA9IG5ldyBT
aWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVtZW50VW5tb3VudCk7CiAgICAgfQogICAg
IGJpbmQoZWxlbWVudCkgewogICAgICAgICB0aGlzLmFwcGx5KGVsZW1lbnQucXVlcnlTZWxlY3Rv
cihgW3JlZj0iJHt0aGlzLmtleX0iXWApKTsKQEAgLTI1NSw3ICsyNTksNyBAQCBjbGFzcyBSZWYg
ewogICAgICAgICBpZiAodGhpcy5lbGVtZW50ID09PSBlbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAodGhpcy5lbGVtZW50ICYmIHRoaXMuZWxlbWVudCAhPT0gZWxlbWVu
dCkKLSAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3V0LmVtaXQodGhpcy5lbGVtZW50KTsK
KyAgICAgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudC5lbWl0KHRoaXMuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgIC8vSW5pdGlhbCBzdGF0ZQog
ICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RhdGUgIT09IG51
bGwpCkBAIC0yNjUsNyArMjY5LDcgQEAgY2xhc3MgUmVmIHsKICAgICBkZXN0b3J5KGVsZW1lbnQp
IHsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQuZW1pdCh0aGlz
LmVsZW1lbnQpOworICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91bnQuZW1pdCh0aGlzLmVsZW1l
bnQpOwogICAgIH0KICAgICB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMua2V5Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9VdGlscy5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2xpYnJhcnkvanMvVXRpbHMuanMKaW5kZXggYTIyNjVmNmJjYjU3OWZkNmM3NzUxM2U0MjJi
ZmQ1MGY5OGM5YTk3Ni4uYjcxZTYzMDFmMTIyNTU4YjBlYTM0YjZkODA2ZWE1YzAwOTVmMDNkNCAx
MDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9VdGlscy5qcworKysgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3
L3N0YXRpYy9saWJyYXJ5L2pzL1V0aWxzLmpzCkBAIC02NSw0ICs2NSwyMiBAQCBmdW5jdGlvbiBp
c0RhcmtNb2RlICgpIHsKICAgICBjb25zdCBtYXRjaCA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7CiAgICAgcmV0dXJuIG1hdGNoLm1hdGNoZXM7CiB9
Ci1leHBvcnQge3RpbWVEaWZmZXJlbmNlLCBpc0RhcmtNb2RlLCBDb29raWV9OworCisvLyBDaGVj
ayBtb3JlIGFib3V0IEludGVyc2VjdGlvbiBvYnNlcnZlciBBUEkKKy8vIGh0dHBzOi8vZGV2ZWxv
cGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9JbnRlcnNlY3Rpb25fT2JzZXJ2ZXJf
QVBJCitmdW5jdGlvbiBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMoZWxlbWVudCwgY2FsbGJhY2s9
KCk9Pnt9LCBzdGFydFRocmVzaG9sZD0wLjAsIGVuZFRyZXNob2xkPTEuMCwgc3RlcD0wLjEsIG9w
dGlvbj17fSkgeworICAgIGNvbnN0IHVzZU9wdGlvbiA9IHt9OworICAgIHVzZU9wdGlvbi5yb290
ID0gb3B0aW9uLnJvb3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IG9wdGlvbi5yb290IDogbnVs
bDsKKyAgICB1c2VPcHRpb24ucm9vdE1hcmdpbiA9IG9wdGlvbi5yb290TWFyZ2luID8gb3B0aW9u
LnJvb3RNYXJnaW4gOiAiMCI7CisgICAgY29uc3QgdGhyZXNob2xkQXJyYXkgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gc3RhcnRUaHJlc2hvbGQ7IGkgPD0gZW5kVHJlc2hvbGQ7IGkrPSBzdGVwKSB7
CisgICAgICAgIHRocmVzaG9sZEFycmF5LnB1c2goaSk7CisgICAgfQorICAgIHRocmVzaG9sZEFy
cmF5LmZvckVhY2godGhyZXNob2xkID0+IHsKKyAgICAgICAgdXNlT3B0aW9uLnRocmVzaG9sZCA9
IHRocmVzaG9sZDsKKyAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIoY2FsbGJhY2ssIHVzZU9wdGlvbik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxl
bWVudCk7CisgICAgfSk7Cit9CisKK2V4cG9ydCB7dGltZURpZmZlcmVuY2UsIGlzRGFya01vZGUs
IENvb2tpZSwgY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2ZXJzfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9C
YXNlQ29tcG9uZW50cy5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qcwppbmRleCBhNjk0OGIz
MWExN2IwMmIyMTZhNGMxY2QyZjQyOTY3OGM5NThiOTZkLi4yOWM1ZjI5YmRiOTJkMzhhOGZjOTVl
ODBhNzkzNDkwZDNiNzRiNTIwIDEwMDY0NAotLS0gYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMK
KysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9q
cy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzCkBAIC00MiwxMCArNDIsMTAgQEAgZnVuY3Rp
b24gQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LCBvbGRBcnJheSwgbmV3QXJyYXksIGNoaWxkVG9L
ZXlGdW5jLCBpdGVtUHJvY2UKICAgICBuZXdDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgp
ID0+IHsKICAgICAgICAgaWYgKGluZGV4IDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKICAg
ICAgICAgICAgIGlmIChjaGlsZCAhPT0gZWxlbWVudC5jaGlsZHJlbltpbmRleF0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5yZXBsYWNlQ2hpbGQoY2hpbGQsIGVsZW1lbnQuY2hpbGRyZW5baW5k
ZXhdKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5yZXBs
YWNlKGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLCB0eXBlb2YgaXRlbVByb2Nlc3NvciA9PT0gImZ1
bmN0aW9uIiA/IGl0ZW1Qcm9jZXNzb3IoY2hpbGQpIDogY2hpbGQpOworICAgICAgICAgICAgICAg
IGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLmJlZm9yZShjaGlsZCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIERPTS5iZWZvcmUoZWxlbWVudC5jaGlsZHJlbltp
bmRleF0sIHR5cGVvZiBpdGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3Nv
cihjaGlsZCkgOiBjaGlsZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9u
ZW50cy9UaW1lbGluZUNvbXBvbmVudHMuanMgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpz
CmluZGV4IDkxZDFlMTRjYjljNjc1ZmI0OTc0NmNlMWY1NzRkOGMwMmU0M2UzZWYuLjI1NWRlYjA2
YWZhMmI4NGE2NGRhZDcwZjE5OTM2Zjc1ZjExY2NkMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1l
bGluZUNvbXBvbmVudHMuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcwpAQCAt
MjUsNyArMjUsNyBAQCBpbXBvcnQgewogfQogZnJvbSAnLi4vUmVmLmpzJzsKIAotaW1wb3J0IHtp
c0RhcmtNb2RlfSBmcm9tICcuLi9VdGlscy5qcyc7CitpbXBvcnQge2lzRGFya01vZGUsIGNyZWF0
ZUluc2VydGlvbk9ic2VydmVyc30gZnJvbSAnLi4vVXRpbHMuanMnOwogaW1wb3J0IHtMaXN0Q29t
cG9uZW50LCBMaXN0UHJvdmlkZXIsIExpc3RQcm92aWRlclJlY2VpdmVyfSBmcm9tICcuL0Jhc2VD
b21wb25lbnRzLmpzJwogCiBmdW5jdGlvbiBwb2ludENpcmNsZUNvbGxpc2lvbkRldGFjdChwb2lu
dCwgY2lyY2xlKSB7CkBAIC05MiwyMyArOTIsMTcgQEAgZnVuY3Rpb24gWFNjcm9sbGFibGVDYW52
YXNQcm92aWRlcihleHBvcnRlciwgLi4uY2hpbGRyZW5GdW5jdGlvbnMpIHsKICAgICAgICAgICAg
IHJlc2l6ZUV2ZW50U3RyZWFtLmFkZChlbGVtZW50Lm9mZnNldFdpZHRoKTsKICAgICAgICAgfSwK
ICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXIn
KQotICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgk
e3N0YXRlRGlmZi5zY3JvbGxMZWZ0fXB4LCAwKWA7CiAgICAgICAgICAgICBpZiAoc3RhdGVEaWZm
LnJlc2l6ZSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtlbGVt
ZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aH1weGA7CiAgICAgICAg
ICAgICAgICAgcmVzaXplRXZlbnRTdHJlYW0uYWRkKGVsZW1lbnQub2Zmc2V0V2lkdGgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgc2Nyb2xsRXZlbnRTdHJlYW0uYWN0
aW9uKChlKSA9PiB7Ci0gICAgICAgIC8vIFByb3ZpZGUgdGhlIGxvZ2ljIHNjcm9sbExlZnQKLSAg
ICAgICAgcHJlc2VudGVyUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxM
ZWZ0fSk7Ci0gICAgfSk7CiAgICAgLy8gUHJvdmlkZSBwYXJlbnQgZnVuY3Rpb25zL2V2ZW50IHRv
IGNoaWxkcmVuIHRvIHVzZQogCiAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9
IiR7c2Nyb2xsUmVmfSI+Ci0gICAgICAgIDxkaXYgcmVmPSIke2NvbnRhaW5lclJlZn0iPgotICAg
ICAgICAgICAgPGRpdiByZWY9IiR7cHJlc2VudGVyUmVmfSI+JHsKKyAgICAgICAgPGRpdiByZWY9
IiR7Y29udGFpbmVyUmVmfSIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+CisgICAgICAgICAg
ICA8ZGl2IHJlZj0iJHtwcmVzZW50ZXJSZWZ9IiBzdHlsZT0icG9zaXRpb246IC13ZWJraXQtc3Rp
Y2t5OyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyBsZWZ0OiAwIj4kewogICAgICAgICAgICAgICAg
IExpc3RQcm92aWRlcigodXBkYXRlQ2hpbGRyZW5GdW5jdGlvbnMpID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cG9ydGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRl
cigoY2hpbGRyZW4pID0+IHsKQEAgLTEzMiw2ICsxMjYsOCBAQCBmdW5jdGlvbiBvZmZzY3JlZW5D
YWNoZWRSZW5kZXJGYWN0b3J5KHBhZGRpbmcsIGhlaWdodCkgewogICAgIC8vIGFuZCBjb3B5IHRo
ZSB2aWV3cG9ydCBhcmVhIGZyb20gb2YgaXQKICAgICAvLyBJdCB3aWxsIHRyaWdnZXIgcmVkcmF3
Q2FjaGUgd2hlbiBjYWNoZSBkb24ndCBoYXZlIGVub3VnaCBzcGFjZQogICAgIHJldHVybiAocmVk
cmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUgPSBm
YWxzZSkgPT4geworICAgICAgICAvLyBDaGVjayBpZiB0aGUgY2FudmFzIGRpc3BsYXkgb24gdGhl
IHNjcmVlbiBvciBub3QsCisgICAgICAgIC8vIFRoaXMgd2lsbCBzYXZlIHJlbmRlciB0aW1lCiAg
ICAgICAgIGNvbnN0IHdpZHRoID0gdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251bWJlcicg
PyBzdGF0ZURpZmYud2lkdGggOiBzdGF0ZS53aWR0aDsKICAgICAgICAgaWYgKHdpZHRoIDw9IDAp
CiAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgpAQCAtMTU1LDcgKzE1MSw3IEBAIGZ1
bmN0aW9uIG9mZnNjcmVlbkNhY2hlZFJlbmRlckZhY3RvcnkocGFkZGluZywgaGVpZ2h0KSB7CiAK
ICAgICAgICAgaWYgKG5lZWRUb1JlZHJhd0NhY2hlKSB7CiAgICAgICAgICAgICAvLyBXZSBkcmF3
IGV2ZXJ5dGhpbmcgb24gY2FjaGUKLSAgICAgICAgICAgIHJlZHJhd0NhY2hlKG9mZnNjcmVlbkNh
bnZhcywgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgKCkgPT4geworICAgICAgICAgICAgIHJl
ZHJhd0NhY2hlKG9mZnNjcmVlbkNhbnZhcywgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgKCkg
PT4gewogICAgICAgICAgICAgICAgIGNhY2hlZFNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0IDwgcGFk
ZGluZyA/IHNjcm9sbExlZnQgOiBzY3JvbGxMZWZ0IC0gcGFkZGluZzsKICAgICAgICAgICAgICAg
ICBjYWNoZVBvc0xlZnQgPSBzY3JvbGxMZWZ0IC0gY2FjaGVkU2Nyb2xsTGVmdDsKICAgICAgICAg
ICAgICAgICBpZiAoY2FjaGVQb3NMZWZ0IDwgMCkKQEAgLTMzMSw1MCArMzI3LDc1IEBAIFRpbWVs
aW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudCA9IChkb3RzLCBzY2FsZXMsIG9wdGlvbiA9IHt9KSA9
PiB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgY29uc3QgY2FudmFzUmVmID0gUkVGLmNyZWF0
ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7Ci0gICAgICAgICAgICBkb3RzOiBpbml0RG90cywKLSAg
ICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKLSAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAs
Ci0gICAgICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91
bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIo
ZWxlbWVudCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVs
ZW1lbnQpOwotICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2spIHsKLSAgICAgICAgICAgICAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVmLnN0
YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG90cy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkRvdENsaWNrKGRvdHNbMF0sIGUpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgIHJldHVybiBMaXN0UHJvdmlk
ZXJSZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJl
c2l6ZSkgPT4geworICAgICAgICBjb25zdCBvblNjcm9sbEFjdGlvbiA9IChlKSA9PiB7CisgICAg
ICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3Njcm9sbExlZnQ6IGUudGFyZ2V0LnNjcm9sbExl
ZnQgLyBnZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3Qg
b25SZXNpemVBY3Rpb24gPSAod2lkdGgpID0+IHsKKyAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRT
dGF0ZSh7d2lkdGg6IHdpZHRofSk7CisgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChvbkRv
dENsaWNrIHx8IG9uRG90SG92ZXIpIHsKLSAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBk
b3RzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxM
ZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob25Eb3RIb3ZlcikKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvbkRvdEhvdmVyKGRvdHNbMF0sIGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAi
ZGVmYXVsdCI7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7
Ci0gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOwot
ICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2FjaGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlm
IChzdGF0ZURpZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5kb3RzIHx8IHR5cGVvZiBzdGF0ZURpZmYu
c2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9PT0gJ251
bWJlcicpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkb3RzLmxlbmd0aCA8PSBz
Y2FsZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBz
dGF0ZURpZmYuZG90cykgewotICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0NhY2hlID0g
dHJ1ZTsKKyAgICAgICAgY29uc3QgY2FudmFzUmVmID0gUkVGLmNyZWF0ZVJlZih7CisgICAgICAg
ICAgICBzdGF0ZTogeworICAgICAgICAgICAgICAgIGRvdHM6IGluaXREb3RzLAorICAgICAgICAg
ICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKKyAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiAw
LAorICAgICAgICAgICAgICAgIHdpZHRoOiAwLAorICAgICAgICAgICAgICAgIG9uU2NyZWVuOiB0
cnVlLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVu
dCkgPT4geworICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50
LCBoZWlnaHQpOworICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVsZW1l
bnQpOworICAgICAgICAgICAgICAgIGlmIChvbkRvdENsaWNrKSB7CisgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4geworICAgICAgICAg
ICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2Fu
dmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGRvdHMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90Q2xp
Y2soZG90c1swXSwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChvbkRvdENsaWNrIHx8IG9uRG90SG92ZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAo
ZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50
VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG9uRG90SG92ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uRG90SG92ZXIoZG90c1swXSwgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNv
ciA9ICJkZWZhdWx0IjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2ZXJzKGVsZW1lbnQsIChl
bnRyaWVzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7b25T
Y3JlZW46IGVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmd9KTsKKyAgICAgICAgICAgICAgICB9LCAw
LCAwLjAxLCAwLjAxKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBvbkVsZW1lbnRVbm1v
dW50OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLnN0
b3BBY3Rpb24ob25TY3JvbGxBY3Rpb24pOworICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0b3BB
Y3Rpb24ob25SZXNpemVBY3Rpb24pOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uU3Rh
dGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7CisgICAgICAgICAgICAg
ICAgY29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgICAg
ICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIC8vIFdl
IGRvIG5vdGhpbmcgZm9yIHRob3NlIG9mZiBzY3JlZW4gb25lcworICAgICAgICAgICAgICAgIGlm
ICghc3RhdGUub25TY3JlZW4gJiYgIXN0YXRlRGlmZi5vblNjcmVlbikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwg
c3RhdGVEaWZmLmRvdHMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVy
JyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJyB8fCBzdGF0ZURpZmYub25T
Y3JlZW4pIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLnNjYWxlcyA9IHN0YXRlRGlmZi5zY2Fs
ZXMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0NhY2hl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAo
c3RhdGVEaWZmLmRvdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlRGlmZi5kb3Rz
ID0gc3RhdGVEaWZmLmRvdHMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBm
b3JjZVJlZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2NyZWVuQ2FjaGVkUmVu
ZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0Nh
Y2hlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRp
b25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQs
IHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0pOworICAgICAgICB9KTsKIAotICAgIHJldHVybiBMaXN0UHJvdmlkZXJS
ZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xsLCBvblJlc2l6
ZSkgPT4gewogICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3RoICogZG90
V2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgICAgICBjb25zdCB1cGRhdGVEYXRh
ID0gKGRvdHMsIHNjYWxlcykgPT4gewogICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgo
c2NhbGVzLmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKQEAgLTM4
NSwxMiArNDA2LDggQEAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNj
YWxlcywgb3B0aW9uID0ge30pID0+IHsKICAgICAgICAgfTsKICAgICAgICAgaWYgKHR5cGVvZiBv
cHRpb24uZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICBvcHRpb24uZXhwb3J0
ZXIodXBkYXRlRGF0YSk7Ci0gICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4g
ewotICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5z
Y3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0gICAgICAgIH0pOwotICAgICAg
ICBvblJlc2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICBjYW52YXNSZWYuc2V0
U3RhdGUoe3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9KTsKKyAgICAgICAgb25Db250YWluZXJT
Y3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgb25SZXNpemUuYWN0aW9uKG9u
UmVzaXplQWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZXJpZXMiPgogICAg
ICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgIDwvZGl2PmA7CkBA
IC02ODMsNjYgKzcwMCw3OCBAQCBUaW1lbGluZS5DYW52YXNYQXhpc0NvbXBvbmVudCA9IChzY2Fs
ZXMsIG9wdGlvbiA9IHt9KSA9PiB7CiAgICAgfTsKICAgICBjb25zdCBpbml0U2NhbGVHcm91cE1h
cExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3QoaW5pdFNjYWxlcyk7CiAKLSAgICBjb25z
dCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHsKLSAgICAgICAg
ICAgIHNjcm9sbExlZnQ6IDAsCi0gICAgICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgICAgIHNj
YWxlczogaW5pdFNjYWxlcywKLSAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBpbml0U2Nh
bGVHcm91cE1hcExpbmtMaXN0Ci0gICAgICAgIH0sCi0gICAgICAgIG9uRWxlbWVudE1vdW50OiAo
ZWxlbWVudCkgPT4gewotICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1l
bnQsIGNhbnZhc0hlaWdodCk7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShl
bGVtZW50KTsKLSAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2spIHsKLSAgICAgICAgICAgICAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZh
c1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHNjYWxlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxlQ2xpY2soc2Nh
bGVzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKG9uU2NhbGVDbGljayB8fCBvblNjYWxlSG92ZXIpIHsKLSAgICAgICAgICAgICAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBj
YW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzY2FsZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25TY2Fs
ZUhvdmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3ZlcihzY2FsZXNb
MF0sIGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAi
cG9pbnRlciI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKKyAgICByZXR1cm4gewor
ICAgICAgICBzZXJpZXM6IExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0
aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CisgICAgICAgICAgICBjb25zdCBv
blNjcm9sbEFjdGlvbiA9IChlKSA9PiB7CisgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0
YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRp
bygpfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY29uc3Qgb25SZXNpemVBY3Rpb24g
PSAod2lkdGgpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRo
OiB3aWR0aH0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY29uc3QgY2FudmFzUmVm
ID0gUkVGLmNyZWF0ZVJlZih7CisgICAgICAgICAgICAgICAgc3RhdGU6IHsKKyAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsTGVmdDogMCwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDAsCisg
ICAgICAgICAgICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKKyAgICAgICAgICAgICAgICAg
ICAgc2NhbGVzTWFwTGlua0xpc3Q6IGluaXRTY2FsZUdyb3VwTWFwTGlua0xpc3QKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxlbWVudCkgPT4g
eworICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIoZWxlbWVudCwg
Y2FudmFzSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2Nh
bGUoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2spIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAo
ZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3Vz
ZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVu
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVDbGljayhzY2FsZXNbMF0sIGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBpZiAob25TY2FsZUNsaWNrIHx8IG9uU2NhbGVIb3ZlcikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUn
LCAoZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRN
b3VzZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVIb3ZlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3ZlcihzY2FsZXNbMF0sIGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9
ICJwb2ludGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgb25Db250YWluZXJTY3JvbGwuc3RvcEFjdGlvbihvblNjcm9sbEFjdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rpb24ob25SZXNpemVBY3Rpb24pOworICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQs
IHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGZvcmNlUmVk
cmF3Q2FjaGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2Fs
ZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Yg
c3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0YXRlRGlmZi5zY2FsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VS
ZWRyYXdDYWNoZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNjcmVlbkNh
Y2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VS
ZWRyYXdDYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0g
ICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0g
ICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KHN0YXRlRGlmZi5zY2FsZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVt
YmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgewotICAgICAgICAg
ICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRl
LnNjYWxlc01hcExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3Qoc3RhdGVEaWZmLnNjYWxl
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4g
b2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0
YXRlLCBmb3JjZVJlZHJhd0NhY2hlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
KTsKKyAgICAgICAgICAgIH0pOworCiAKLSAgICByZXR1cm4gewotICAgICAgICBzZXJpZXM6IExp
c3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3Jv
bGwsIG9uUmVzaXplKSA9PiB7CiAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2Fs
ZXMubGVuZ3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CiAgICAgICAg
ICAgICBjb25zdCB1cGRhdGVEYXRhID0gKHNjYWxlcykgPT4gewotICAgICAgICAgICAgICAgIHVw
ZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNl
UGl4ZWxSYXRpbygpKTsKKyAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIG1vZGlmaWNhdGlv
biB3aGl0ZSByZW5kZXJpbmcKKyAgICAgICAgICAgICAgICBjb25zdCBzY2FsZXNDb3B5ID0gc2Nh
bGVzLm1hcCh4ID0+IHgpOworICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNj
YWxlc0NvcHkubGVuZ3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7CiAg
ICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHsKLSAgICAgICAgICAgICAgICAgICAg
c2NhbGVzOiBzY2FsZXMKKyAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiBzY2FsZXNDb3B5LAor
ICAgICAgICAgICAgICAgICAgICBzY2FsZXNNYXBMaW5rTGlzdDogZ2V0U2NhbGVzTWFwTGlua0xp
c3Qoc2NhbGVzQ29weSkKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9ydGVyID09PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRhKTsKLSAgICAgICAgICAgIG9uQ29u
dGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5z
ZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERldmljZVBpeGVs
UmF0aW8oKX0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBvblJlc2l6ZS5hY3Rpb24o
KHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHt3aWR0aDog
d2lkdGh9KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwu
YWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAgIG9uUmVzaXplLmFjdGlvbihvblJl
c2l6ZUFjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9IngtYXhpcyI+CiAg
ICAgICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgICAgICA8
L2Rpdj5gOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375592</attachid>
            <date>2019-08-05 18:43:19 -0700</date>
            <delta_ts>2019-08-06 10:31:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190805184318.patch</filename>
            <type>text/plain</type>
            <size>21376</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uOGVmN2NmMjcyMDc2OGRiMmJkZDcxYmJhY2Q0MTQzNTBkMTE0NGU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBQZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDQwNgorICAgICAgICAxLiBVbmhvb2sgdGhlIHNjcm9sbCBldmVudCB3aGVuIGEgc2VyaWVzL2F4
aXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIAorICAgICAgICAyLiBGaXgg
dGhlIGF4aXMncyBjYWNoZSBkYXRlIHN0cnVjdHVyZSBvdXQgb2Ygc3luYy4KKyAgICAgICAgMy4g
VXNlIHBvc2l0aW9uOnN0aWNreSB0byByZWR1Y2UgdGhlIGJsaW5rIHdoZW4gdXBkYXRlIHRoZSB0
cmFuc2Zvcm0KKyAgICAgICAgNC4gVXNlIGludGVyc2VjdGlvbiBvYnNlcnZlciB0byBkZXRlY3Qg
aWYgdGhlIGNhbnZhcyBvbiBzY3JlZW4gb3Igbm90LCBpZiBhIGNhbnZhcyBpcyBub3Qgb24gdGhl
IHNjcmVlbiwgd2UgZG8gbm90aGluZywgdGhpcyB3aWxsIGVsaW1pbmF0ZSByZW5kZXIgcmVxdWVz
dHMgd2Ugc2VuZCBvdXQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pz
L1JlZi5qczoKKyAgICAgICAgKFNpZ25hbC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIpOgorICAg
ICAgICAocHJvdG90eXBlLnN0b3BBY3Rpb24pOiBVbnJlZ3NpdGVyIGFuIGFjdGlvbiBoYW5kbGVy
CisgICAgICAgIChSZWYpOgorICAgICAgICAoUmVmLnByb3RvdHlwZS5hcHBseSk6CisgICAgICAg
IChSZWYucHJvdG90eXBlLmRlc3RvcnkpOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qczoK
KyAgICAgICAgKEFwcGx5TmV3Q2hpbGRyZW4pOgorICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3Vs
dHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1lbGluZUNvbXBvbmVu
dHMuanM6CisgICAgICAgIChUaW1lbGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQpOgorCiAyMDE5
LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBb
cmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBVc2luZyB0cmFuc2Zvcm0gbWF0cml4IHRvIGNh
bGN1bGF0ZSB0aGUgdGFnIHJvdGF0aW9uIHBvc2l0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5qcyBiL1Rvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzCmlu
ZGV4IDEyOTgyZjljOTZmYTQzZTNmNGZkYmQ5NjA0YTRlM2Y3Njg1YjQ3MmMuLmM5MTRkNWI4MDM0
YjQ0MWYwOTY3ZWFkNDk2MWMxNWRlNjRlMmZhM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3VsdHNk
YnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzCisrKyBiL1Rvb2xz
L3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzCkBA
IC0zOSwxMiArMzksMTIgQEAgY2xhc3MgU2lnbmFsIHsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAg
ICAgfQogICAgIHJlbW92ZUxpc3RlbmVyKGZuKSB7Ci0gICAgICAgIGNvbnN0IHJlbW92ZUluZGV4
ID0gMDsKKyAgICAgICAgbGV0IHJlbW92ZUluZGV4ID0gMDsKICAgICAgICAgdGhpcy5oYW5kbGVy
cy5mb3JFYWNoKChoYW5kbGVyLCBpbmRleCkgPT4gewogICAgICAgICAgICAgaWYgKGhhbmRsZXIg
PT09IGZuKQogICAgICAgICAgICAgICAgIHJlbW92ZUluZGV4ID0gaW5kZXg7CiAgICAgICAgIH0p
OwotICAgICAgICB0aGlzLmhhbmRsZXIuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTsKKyAgICAgICAg
dGhpcy5oYW5kbGVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpOwogICAgICAgICByZXR1cm4gdGhp
czsKICAgICB9CiAgICAgcmVtb3ZlQWxsTGlzdGVuZXIoKSB7CkBAIC05MCw2ICs5MCwxMCBAQCBj
bGFzcyBFdmVudFN0cmVhbSB7CiAgICAgICAgIHRoaXMuc2lnbmFsLmFkZExpc3RlbmVyKGZuKTsK
ICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfQorICAgIHN0b3BBY3Rpb24oZm4pIHsKKyAgICAg
ICAgdGhpcy5zaWduYWwucmVtb3ZlTGlzdGVuZXIoZm4pOworICAgICAgICByZXR1cm4gdGhpczsK
KyAgICB9CiAgICAgZXJyb3IoZm4pIHsKICAgICAgICAgdGhpcy5lcnJvclNpZ25hbC5hZGRMaXN0
ZW5lcihmbik7CiAgICAgICAgIHJldHVybiB0aGlzOwpAQCAtMjQzLDcgKzI0Nyw3IEBAIGNsYXNz
IFJlZiB7CiAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25maWcuc3RhdGUgIT09IHVuZGVmaW5lZCA/
IGNvbmZpZy5zdGF0ZSA6IHt9OwogICAgICAgICB0aGlzLm9uU3RhdGVVcGRhdGUgPSBuZXcgU2ln
bmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uU3RhdGVVcGRhdGUpOwogICAgICAgICB0aGlzLm9u
RWxlbWVudE1vdW50ID0gbmV3IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNvbmZpZy5vbkVsZW1lbnRN
b3VudCk7Ci0gICAgICAgIHRoaXMub25FbGVtZW50VW5tb3V0ID0gbmV3IFNpZ25hbCgpLmFkZExp
c3RlbmVyKGNvbmZpZy5vbkVsZW1lbnRVbm1vdXQpOworICAgICAgICB0aGlzLm9uRWxlbWVudFVu
bW91bnQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudFVubW91bnQp
OwogICAgIH0KICAgICBiaW5kKGVsZW1lbnQpIHsKICAgICAgICAgdGhpcy5hcHBseShlbGVtZW50
LnF1ZXJ5U2VsZWN0b3IoYFtyZWY9IiR7dGhpcy5rZXl9Il1gKSk7CkBAIC0yNTUsNyArMjU5LDcg
QEAgY2xhc3MgUmVmIHsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudCA9PT0gZWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudCAmJiB0aGlzLmVsZW1l
bnQgIT09IGVsZW1lbnQpCi0gICAgICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91dC5lbWl0KHRo
aXMuZWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91bnQuZW1pdCh0aGlz
LmVsZW1lbnQpOwogICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwogICAgICAgICAvL0lu
aXRpYWwgc3RhdGUKICAgICAgICAgaWYgKHRoaXMuc3RhdGUgIT09IHVuZGVmaW5lZCAmJiB0aGlz
LnN0YXRlICE9PSBudWxsKQpAQCAtMjY1LDcgKzI2OSw3IEBAIGNsYXNzIFJlZiB7CiAgICAgZGVz
dG9yeShlbGVtZW50KSB7CiAgICAgICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50ICE9PSB0aGlz
LmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMub25FbGVtZW50VW5t
b3V0LmVtaXQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdW50LmVt
aXQodGhpcy5lbGVtZW50KTsKICAgICB9CiAgICAgdG9TdHJpbmcoKSB7CiAgICAgICAgIHJldHVy
biB0aGlzLmtleTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvc3RhdGljL2xpYnJhcnkvanMvVXRpbHMuanMgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1V0aWxzLmpzCmluZGV4IGEyMjY1ZjZiY2I1Nzlm
ZDZjNzc1MTNlNDIyYmZkNTBmOThjOWE5NzYuLjk4MzJmNTdlY2MzMDRmZTFiODdjZGI0NmY1YmEy
OTNkNDczY2Y0NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvc3RhdGljL2xpYnJhcnkvanMvVXRpbHMuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcwpAQCAtNjUsNCArNjUsMjEg
QEAgZnVuY3Rpb24gaXNEYXJrTW9kZSAoKSB7CiAgICAgY29uc3QgbWF0Y2ggPSB3aW5kb3cubWF0
Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpOwogICAgIHJldHVybiBtYXRj
aC5tYXRjaGVzOwogfQotZXhwb3J0IHt0aW1lRGlmZmVyZW5jZSwgaXNEYXJrTW9kZSwgQ29va2ll
fTsKKworLy8gVXNlcyBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXI6IDxodHRwczovL2RldmVsb3Blci5t
b3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSW50ZXJzZWN0aW9uX09ic2VydmVyX0FQST4K
K2Z1bmN0aW9uIGNyZWF0ZUluc2VydGlvbk9ic2VydmVycyhlbGVtZW50LCBjYWxsYmFjaz0oKT0+
e30sIHN0YXJ0VGhyZXNob2xkPTAuMCwgZW5kVHJlc2hvbGQ9MS4wLCBzdGVwPTAuMSwgb3B0aW9u
PXt9KSB7CisgICAgY29uc3QgdXNlT3B0aW9uID0ge307CisgICAgdXNlT3B0aW9uLnJvb3QgPSBv
cHRpb24ucm9vdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gb3B0aW9uLnJvb3QgOiBudWxsOwor
ICAgIHVzZU9wdGlvbi5yb290TWFyZ2luID0gb3B0aW9uLnJvb3RNYXJnaW4gPyBvcHRpb24ucm9v
dE1hcmdpbiA6ICIwIjsKKyAgICBjb25zdCB0aHJlc2hvbGRBcnJheSA9IFtdOworICAgIGZvciAo
bGV0IGkgPSBzdGFydFRocmVzaG9sZDsgaSA8PSBlbmRUcmVzaG9sZDsgaSs9IHN0ZXApIHsKKyAg
ICAgICAgdGhyZXNob2xkQXJyYXkucHVzaChpKTsKKyAgICB9CisgICAgdGhyZXNob2xkQXJyYXku
Zm9yRWFjaCh0aHJlc2hvbGQgPT4geworICAgICAgICB1c2VPcHRpb24udGhyZXNob2xkID0gdGhy
ZXNob2xkOworICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZl
cihjYWxsYmFjaywgdXNlT3B0aW9uKTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50
KTsKKyAgICB9KTsKK30KKworZXhwb3J0IHt0aW1lRGlmZmVyZW5jZSwgaXNEYXJrTW9kZSwgQ29v
a2llLCBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnN9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvcmVzdWx0
c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VD
b21wb25lbnRzLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMv
bGlicmFyeS9qcy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzCmluZGV4IGE2OTQ4YjMxYTE3
YjAyYjIxNmE0YzFjZDJmNDI5Njc4Yzk1OGI5NmQuLjI5YzVmMjliZGI5MmQzOGE4ZmM5NWU4MGE3
OTM0OTBkM2I3NGI1MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qcworKysg
Yi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2Nv
bXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMKQEAgLTQyLDEwICs0MiwxMCBAQCBmdW5jdGlvbiBB
cHBseU5ld0NoaWxkcmVuKGVsZW1lbnQsIG9sZEFycmF5LCBuZXdBcnJheSwgY2hpbGRUb0tleUZ1
bmMsIGl0ZW1Qcm9jZQogICAgIG5ld0NoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4g
ewogICAgICAgICBpZiAoaW5kZXggPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgewogICAgICAg
ICAgICAgaWYgKGNoaWxkICE9PSBlbGVtZW50LmNoaWxkcmVuW2luZGV4XSkgewotICAgICAgICAg
ICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KQotICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50LnJlcGxhY2VDaGlsZChjaGlsZCwgZWxlbWVudC5jaGlsZHJlbltpbmRleF0p
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgRE9NLnJlcGxhY2Uo
ZWxlbWVudC5jaGlsZHJlbltpbmRleF0sIHR5cGVvZiBpdGVtUHJvY2Vzc29yID09PSAiZnVuY3Rp
b24iID8gaXRlbVByb2Nlc3NvcihjaGlsZCkgOiBjaGlsZCk7CisgICAgICAgICAgICAgICAgaWYg
KGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZWxl
bWVudC5jaGlsZHJlbltpbmRleF0uYmVmb3JlKGNoaWxkKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgRE9NLmJlZm9yZShlbGVtZW50LmNoaWxkcmVuW2luZGV4
XSwgdHlwZW9mIGl0ZW1Qcm9jZXNzb3IgPT09ICJmdW5jdGlvbiIgPyBpdGVtUHJvY2Vzc29yKGNo
aWxkKSA6IGNoaWxkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRz
L1RpbWVsaW5lQ29tcG9uZW50cy5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3Zp
ZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1lbGluZUNvbXBvbmVudHMuanMKaW5k
ZXggOTFkMWUxNGNiOWM2NzVmYjQ5NzQ2Y2UxZjU3NGQ4YzAyZTQzZTNlZi4uNmRmNDRkNDY0NzU5
ZDQ2ZjI4NTA3ZWY1MjI2NDAyZDg5NmY5YmJhOSAxMDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2Ri
cHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5l
Q29tcG9uZW50cy5qcworKysgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0
YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpzCkBAIC0yNSw3
ICsyNSw3IEBAIGltcG9ydCB7CiB9CiBmcm9tICcuLi9SZWYuanMnOwogCi1pbXBvcnQge2lzRGFy
a01vZGV9IGZyb20gJy4uL1V0aWxzLmpzJzsKK2ltcG9ydCB7aXNEYXJrTW9kZSwgY3JlYXRlSW5z
ZXJ0aW9uT2JzZXJ2ZXJzfSBmcm9tICcuLi9VdGlscy5qcyc7CiBpbXBvcnQge0xpc3RDb21wb25l
bnQsIExpc3RQcm92aWRlciwgTGlzdFByb3ZpZGVyUmVjZWl2ZXJ9IGZyb20gJy4vQmFzZUNvbXBv
bmVudHMuanMnCiAKIGZ1bmN0aW9uIHBvaW50Q2lyY2xlQ29sbGlzaW9uRGV0YWN0KHBvaW50LCBj
aXJjbGUpIHsKQEAgLTkyLDIzICs5MiwxNyBAQCBmdW5jdGlvbiBYU2Nyb2xsYWJsZUNhbnZhc1By
b3ZpZGVyKGV4cG9ydGVyLCAuLi5jaGlsZHJlbkZ1bmN0aW9ucykgewogICAgICAgICAgICAgcmVz
aXplRXZlbnRTdHJlYW0uYWRkKGVsZW1lbnQub2Zmc2V0V2lkdGgpOwogICAgICAgICB9LAogICAg
ICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSkgPT4gewotICAg
ICAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicpCi0g
ICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7c3Rh
dGVEaWZmLnNjcm9sbExlZnR9cHgsIDApYDsKICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYucmVz
aXplKSB7CiAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGAke2VsZW1lbnQu
cGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRofXB4YDsKICAgICAgICAgICAg
ICAgICByZXNpemVFdmVudFN0cmVhbS5hZGQoZWxlbWVudC5vZmZzZXRXaWR0aCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9KTsKLSAgICBzY3JvbGxFdmVudFN0cmVhbS5hY3Rpb24o
KGUpID0+IHsKLSAgICAgICAgLy8gUHJvdmlkZSB0aGUgbG9naWMgc2Nyb2xsTGVmdAotICAgICAg
ICBwcmVzZW50ZXJSZWYuc2V0U3RhdGUoe3Njcm9sbExlZnQ6IGUudGFyZ2V0LnNjcm9sbExlZnR9
KTsKLSAgICB9KTsKICAgICAvLyBQcm92aWRlIHBhcmVudCBmdW5jdGlvbnMvZXZlbnQgdG8gY2hp
bGRyZW4gdG8gdXNlCiAKICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImNvbnRlbnQiIHJlZj0iJHtz
Y3JvbGxSZWZ9Ij4KLSAgICAgICAgPGRpdiByZWY9IiR7Y29udGFpbmVyUmVmfSI+Ci0gICAgICAg
ICAgICA8ZGl2IHJlZj0iJHtwcmVzZW50ZXJSZWZ9Ij4keworICAgICAgICA8ZGl2IHJlZj0iJHtj
b250YWluZXJSZWZ9IiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj4KKyAgICAgICAgICAgIDxk
aXYgcmVmPSIke3ByZXNlbnRlclJlZn0iIHN0eWxlPSJwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7
IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IGxlZnQ6IDAiPiR7CiAgICAgICAgICAgICAgICAgTGlz
dFByb3ZpZGVyKCh1cGRhdGVDaGlsZHJlbkZ1bmN0aW9ucykgPT4gewogICAgICAgICAgICAgICAg
ICAgICBpZiAoZXhwb3J0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVyKChj
aGlsZHJlbikgPT4gewpAQCAtMTMyLDYgKzEyNiw4IEBAIGZ1bmN0aW9uIG9mZnNjcmVlbkNhY2hl
ZFJlbmRlckZhY3RvcnkocGFkZGluZywgaGVpZ2h0KSB7CiAgICAgLy8gYW5kIGNvcHkgdGhlIHZp
ZXdwb3J0IGFyZWEgZnJvbSBvZiBpdAogICAgIC8vIEl0IHdpbGwgdHJpZ2dlciByZWRyYXdDYWNo
ZSB3aGVuIGNhY2hlIGRvbid0IGhhdmUgZW5vdWdoIHNwYWNlCiAgICAgcmV0dXJuIChyZWRyYXdD
YWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNl
KSA9PiB7CisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBjYW52YXMgZGlzcGxheSBvbiB0aGUgc2Ny
ZWVuIG9yIG5vdCwKKyAgICAgICAgLy8gVGhpcyB3aWxsIHNhdmUgcmVuZGVyIHRpbWUKICAgICAg
ICAgY29uc3Qgd2lkdGggPSB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJyA/IHN0
YXRlRGlmZi53aWR0aCA6IHN0YXRlLndpZHRoOwogICAgICAgICBpZiAod2lkdGggPD0gMCkKICAg
ICAgICAgICAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCkBAIC0xNTUsNyArMTUxLDcgQEAgZnVuY3Rp
b24gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyRmFjdG9yeShwYWRkaW5nLCBoZWlnaHQpIHsKIAogICAg
ICAgICBpZiAobmVlZFRvUmVkcmF3Q2FjaGUpIHsKICAgICAgICAgICAgIC8vIFdlIGRyYXcgZXZl
cnl0aGluZyBvbiBjYWNoZQotICAgICAgICAgICAgcmVkcmF3Q2FjaGUob2Zmc2NyZWVuQ2FudmFz
LCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCAoKSA9PiB7CisgICAgICAgICAgICAgcmVkcmF3
Q2FjaGUob2Zmc2NyZWVuQ2FudmFzLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCAoKSA9PiB7
CiAgICAgICAgICAgICAgICAgY2FjaGVkU2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgPCBwYWRkaW5n
ID8gc2Nyb2xsTGVmdCA6IHNjcm9sbExlZnQgLSBwYWRkaW5nOwogICAgICAgICAgICAgICAgIGNh
Y2hlUG9zTGVmdCA9IHNjcm9sbExlZnQgLSBjYWNoZWRTY3JvbGxMZWZ0OwogICAgICAgICAgICAg
ICAgIGlmIChjYWNoZVBvc0xlZnQgPCAwKQpAQCAtMzMxLDUwICszMjcsNzQgQEAgVGltZWxpbmUu
Q2FudmFzU2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNjYWxlcywgb3B0aW9uID0ge30pID0+IHsK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVm
KHsKLSAgICAgICAgc3RhdGU6IHsKLSAgICAgICAgICAgIGRvdHM6IGluaXREb3RzLAotICAgICAg
ICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAotICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKLSAg
ICAgICAgICAgIHdpZHRoOiAwLAotICAgICAgICB9LAotICAgICAgICBvbkVsZW1lbnRNb3VudDog
KGVsZW1lbnQpID0+IHsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVt
ZW50LCBoZWlnaHQpOwotICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVu
dCk7Ci0gICAgICAgICAgICBpZiAob25Eb3RDbGljaykgewotICAgICAgICAgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAg
ICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUu
c2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0
aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uRG90Q2xpY2soZG90c1swXSwgZSk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgcmV0dXJuIExpc3RQcm92aWRlclJl
Y2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXpl
KSA9PiB7CisgICAgICAgIGNvbnN0IG9uU2Nyb2xsQWN0aW9uID0gKGUpID0+IHsKKyAgICAgICAg
ICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAv
IGdldERldmljZVBpeGVsUmF0aW8oKX0pOworICAgICAgICB9OworICAgICAgICBjb25zdCBvblJl
c2l6ZUFjdGlvbiA9ICh3aWR0aCkgPT4geworICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRl
KHt3aWR0aDogd2lkdGh9KTsKKyAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKG9uRG90Q2xp
Y2sgfHwgb25Eb3RIb3ZlcikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGRvdHMg
PSBnZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQs
IGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChvbkRvdEhvdmVyKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9uRG90SG92ZXIoZG90c1swXSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
bGVtZW50LnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZh
dWx0IjsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAg
ICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBlbGVtZW50LmdldENvbnRleHQoIjJkIik7Ci0gICAg
ICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHN0
YXRlRGlmZi5zY2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3Jv
bGxMZWZ0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVy
JykgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvdHMubGVuZ3RoIDw9IHNjYWxl
cy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzIHx8IHN0YXRl
RGlmZi5kb3RzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVl
OworICAgICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKKyAgICAgICAgICAg
IHN0YXRlOiB7CisgICAgICAgICAgICAgICAgZG90czogaW5pdERvdHMsCisgICAgICAgICAgICAg
ICAgc2NhbGVzOiBpbml0U2NhbGVzLAorICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCisg
ICAgICAgICAgICAgICAgd2lkdGg6IDAsCisgICAgICAgICAgICAgICAgb25TY3JlZW46IHRydWUs
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhl
aWdodCk7CisgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7
CisgICAgICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2spIHsKKyAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNS
ZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZG90cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhk
b3RzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2sgfHwgb25Eb3RIb3ZlcikgeworICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJn
Z2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob25Eb3RIb3ZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b25Eb3RIb3Zlcihkb3RzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVt
ZW50LnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0g
ImRlZmF1bHQiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMoZWxlbWVudCwgKGVudHJp
ZXMpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtvblNjcmVl
bjogZW50cmllc1swXS5pc0ludGVyc2VjdGluZ30pOworICAgICAgICAgICAgICAgIH0sIDAsIDAu
MDEsIDAuMDEpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uRWxlbWVudFVubW91bnQ6
IChlbGVtZW50KSA9PiB7CisgICAgICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwuc3RvcEFj
dGlvbihvblNjcm9sbEFjdGlvbik7CisgICAgICAgICAgICAgICAgb25SZXNpemUuc3RvcEFjdGlv
bihvblJlc2l6ZUFjdGlvbik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgb25TdGF0ZVVw
ZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKKyAgICAgICAgICAgICAgICBj
b25zdCBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAg
IGxldCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFzdGF0
ZS5vblNjcmVlbiAmJiAhc3RhdGVEaWZmLm9uU2NyZWVuKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBzdGF0ZURp
ZmYuZG90cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5
cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInIHx8IHN0YXRlRGlmZi5vblNjcmVlbikg
eworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZURpZmYuc2NhbGVzID0gc3RhdGVEaWZmLnNjYWxlcy5tYXAo
eCA9PiB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZURp
ZmYuZG90cykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLmRvdHMgPSBzdGF0
ZURpZmYuZG90cy5tYXAoeCA9PiB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVk
cmF3Q2FjaGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVk
cmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KCgpID0+IG9mZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVE
aWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSkpOwogICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfSk7CisgICAgICAgIH0pOwogCi0gICAgcmV0dXJuIExpc3RQcm92aWRlclJlY2VpdmVy
KCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7
CiAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBkb3RXaWR0aCAq
IGdldERldmljZVBpeGVsUmF0aW8oKSk7CiAgICAgICAgIGNvbnN0IHVwZGF0ZURhdGEgPSAoZG90
cywgc2NhbGVzKSA9PiB7CiAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMu
bGVuZ3RoICogZG90V2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwpAQCAtMzg1LDEyICs0
MDUsOCBAQCBUaW1lbGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQgPSAoZG90cywgc2NhbGVzLCBv
cHRpb24gPSB7fSkgPT4gewogICAgICAgICB9OwogICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5l
eHBvcnRlciA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRh
dGVEYXRhKTsKLSAgICAgICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9uKChlKSA9PiB7Ci0gICAg
ICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3Njcm9sbExlZnQ6IGUudGFyZ2V0LnNjcm9sbExl
ZnQgLyBnZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9uUmVz
aXplLmFjdGlvbigod2lkdGgpID0+IHsKLSAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7
d2lkdGg6IHdpZHRofSk7Ci0gICAgICAgIH0pOworICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5h
Y3Rpb24ob25TY3JvbGxBY3Rpb24pOworICAgICAgICBvblJlc2l6ZS5hY3Rpb24ob25SZXNpemVB
Y3Rpb24pOwogICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNlcmllcyI+CiAgICAgICAgICAg
ICA8Y2FudmFzIHJlZj0iJHtjYW52YXNSZWZ9Ij4KICAgICAgICAgPC9kaXY+YDsKQEAgLTY4Myw2
NiArNjk5LDc4IEBAIFRpbWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9uZW50ID0gKHNjYWxlcywgb3B0
aW9uID0ge30pID0+IHsKICAgICB9OwogICAgIGNvbnN0IGluaXRTY2FsZUdyb3VwTWFwTGlua0xp
c3QgPSBnZXRTY2FsZXNNYXBMaW5rTGlzdChpbml0U2NhbGVzKTsKIAotICAgIGNvbnN0IGNhbnZh
c1JlZiA9IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0ZTogewotICAgICAgICAgICAgc2Ny
b2xsTGVmdDogMCwKLSAgICAgICAgICAgIHdpZHRoOiAwLAotICAgICAgICAgICAgc2NhbGVzOiBp
bml0U2NhbGVzLAotICAgICAgICAgICAgc2NhbGVzTWFwTGlua0xpc3Q6IGluaXRTY2FsZUdyb3Vw
TWFwTGlua0xpc3QKLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50
KSA9PiB7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIoZWxlbWVudCwgY2Fu
dmFzSGVpZ2h0KTsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVsZW1lbnQp
OwotICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykgewotICAgICAgICAgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAg
ICBsZXQgc2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0
YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVz
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVDbGljayhzY2FsZXNbMF0s
IGUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBp
ZiAob25TY2FsZUNsaWNrIHx8IG9uU2NhbGVIb3ZlcikgewotICAgICAgICAgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1Jl
Zi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNj
YWxlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlSG92ZXIp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TY2FsZUhvdmVyKHNjYWxlc1swXSwgZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJwb2ludGVy
IjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOworICAgIHJldHVybiB7CisgICAgICAg
IHNlcmllczogTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNv
bnRhaW5lclNjcm9sbCwgb25SZXNpemUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG9uU2Nyb2xs
QWN0aW9uID0gKGUpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3Nj
cm9sbExlZnQ6IGUudGFyZ2V0LnNjcm9sbExlZnQgLyBnZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICBjb25zdCBvblJlc2l6ZUFjdGlvbiA9ICh3aWR0
aCkgPT4geworICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7d2lkdGg6IHdpZHRo
fSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYu
Y3JlYXRlUmVmKHsKKyAgICAgICAgICAgICAgICBzdGF0ZTogeworICAgICAgICAgICAgICAgICAg
ICBzY3JvbGxMZWZ0OiAwLAorICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKKyAgICAgICAg
ICAgICAgICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAorICAgICAgICAgICAgICAgICAgICBzY2Fs
ZXNNYXBMaW5rTGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50LCBjYW52YXNI
ZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRU
aXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb25TY2FsZUNsaWNrKHNjYWxlc1swXSwgZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUhvdmVyKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZl
bnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25TY2FsZUhvdmVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb25TY2FsZUhvdmVyKHNjYWxlc1swXSwgZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50
ZXIiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBvbkVsZW1lbnRVbm1vdW50OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBv
bkNvbnRhaW5lclNjcm9sbC5zdG9wQWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgb25SZXNpemUuc3RvcEFjdGlvbihvblJlc2l6ZUFjdGlvbik7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVE
aWZmLCBzdGF0ZSkgPT4geworICAgICAgICAgICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNo
ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCB0
eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBzdGF0ZURp
ZmYud2lkdGggPT09ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rh
dGVEaWZmLnNjYWxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0Nh
Y2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2NyZWVuQ2FjaGVkUmVu
ZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0Nh
Y2hlKQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAg
b25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAg
ICAgIGxldCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc3RhdGVE
aWZmLnNjYWxlcyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8
IHR5cGVvZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0YXRlRGlmZi5zY2FsZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc2NhbGVz
TWFwTGlua0xpc3QgPSBnZXRTY2FsZXNNYXBMaW5rTGlzdChzdGF0ZURpZmYuc2NhbGVzKTsKLSAg
ICAgICAgICAgICAgICAgICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3Jl
ZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZv
cmNlUmVkcmF3Q2FjaGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOworICAg
ICAgICAgICAgfSk7CisKIAotICAgIHJldHVybiB7Ci0gICAgICAgIHNlcmllczogTGlzdFByb3Zp
ZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25S
ZXNpemUpID0+IHsKICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5n
dGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICAgICAgICAgIGNv
bnN0IHVwZGF0ZURhdGEgPSAoc2NhbGVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ29u
dGFpbmVyV2lkdGgoc2NhbGVzLmxlbmd0aCAqIHNjYWxlV2lkdGggKiBnZXREZXZpY2VQaXhlbFJh
dGlvKCkpOworICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgbW9kaWZpY2F0aW9uIHdoaWxl
IHJlbmRlcmluZworICAgICAgICAgICAgICAgIGNvbnN0IHNjYWxlc0NvcHkgPSBzY2FsZXMubWFw
KHggPT4geCk7CisgICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2NhbGVzQ29w
eS5sZW5ndGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICAgICAg
ICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoewotICAgICAgICAgICAgICAgICAgICBzY2FsZXM6
IHNjYWxlcworICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHNjYWxlc0NvcHksCisgICAgICAg
ICAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBnZXRTY2FsZXNNYXBMaW5rTGlzdChzY2Fs
ZXNDb3B5KQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKHR5cGVvZiBvcHRpb24uZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAg
ICAgb3B0aW9uLmV4cG9ydGVyKHVwZGF0ZURhdGEpOwotICAgICAgICAgICAgb25Db250YWluZXJT
Y3JvbGwuYWN0aW9uKChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRl
KHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygp
fSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIG9uUmVzaXplLmFjdGlvbigod2lkdGgp
ID0+IHsKLSAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0aH0p
OwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5hY3Rpb24o
b25TY3JvbGxBY3Rpb24pOworICAgICAgICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXplQWN0
aW9uKTsKICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ieC1heGlzIj4KICAgICAgICAg
ICAgICAgICA8Y2FudmFzIHJlZj0iJHtjYW52YXNSZWZ9Ij4KICAgICAgICAgICAgIDwvZGl2PmA7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375630</attachid>
            <date>2019-08-06 10:31:50 -0700</date>
            <delta_ts>2019-08-06 10:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190806103149.patch</filename>
            <type>text/plain</type>
            <size>21712</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uMTk5NTkwOTAyYWE1ZTZkYTQzYzg1YjQ2ZmE4NGRiYzM4NjlhZTU2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBQZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IFVuaG9vayB0aGUgc2Nyb2xsIGV2ZW50IHdoZW4gYSBzZXJpZXMvYXhpcyBoYXZlIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSBjb250YWluZXIgCisgICAgICAgIDIuIEZpeCB0aGUgYXhpcydzIGNhY2hl
IGRhdGUgc3RydWN0dXJlIG91dCBvZiBzeW5jLgorICAgICAgICAzLiBVc2UgcG9zaXRpb246c3Rp
Y2t5IHRvIHJlZHVjZSB0aGUgYmxpbmsgd2hlbiB1cGRhdGUgdGhlIHRyYW5zZm9ybQorICAgICAg
ICA0LiBVc2UgaW50ZXJzZWN0aW9uIG9ic2VydmVyIHRvIGRldGVjdCBpZiB0aGUgY2FudmFzIG9u
IHNjcmVlbiBvciBub3QsIGlmIGEgY2FudmFzIGlzIG5vdCBvbiB0aGUgc2NyZWVuLCB3ZSBkbyBu
b3RoaW5nLCB0aGlzIHdpbGwgZWxpbWluYXRlIHJlbmRlciByZXF1ZXN0cyB3ZSBzZW5kIG91dC4K
KworCisgICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFy
eS9qcy9SZWYuanM6CisgICAgICAgIChTaWduYWwucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyKToK
KyAgICAgICAgKHByb3RvdHlwZS5zdG9wQWN0aW9uKTogVW5yZWdzaXRlciBhbiBhY3Rpb24gaGFu
ZGxlcgorICAgICAgICAoUmVmKToKKyAgICAgICAgKFJlZi5wcm90b3R5cGUuYXBwbHkpOgorICAg
ICAgICAoUmVmLnByb3RvdHlwZS5kZXN0b3J5KToKKyAgICAgICAgKiByZXN1bHRzZGJweS9yZXN1
bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMu
anM6CisgICAgICAgIChBcHBseU5ld0NoaWxkcmVuKToKKyAgICAgICAgKiByZXN1bHRzZGJweS9y
ZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21w
b25lbnRzLmpzOgorICAgICAgICAoVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50KToKKwog
MjAxOS0wOC0wMiAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW3Jlc3VsdHMud2Via2l0Lm9yZyBUaW1lbGluZV0gVXNpbmcgdHJhbnNmb3JtIG1hdHJpeCB0
byBjYWxjdWxhdGUgdGhlIHRhZyByb3RhdGlvbiBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9SZWYuanMgYi9U
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5q
cwppbmRleCAxMjk4MmY5Yzk2ZmE0M2UzZjRmZGJkOTYwNGE0ZTNmNzY4NWI0NzJjLi5jOTE0ZDVi
ODAzNGI0NDFmMDk2N2VhZDQ5NjFjMTVkZTY0ZTJmYTNmIDEwMDY0NAotLS0gYS9Ub29scy9yZXN1
bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5qcworKysgYi9U
b29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1JlZi5q
cwpAQCAtMzksMTIgKzM5LDEyIEBAIGNsYXNzIFNpZ25hbCB7CiAgICAgICAgIHJldHVybiB0aGlz
OwogICAgIH0KICAgICByZW1vdmVMaXN0ZW5lcihmbikgewotICAgICAgICBjb25zdCByZW1vdmVJ
bmRleCA9IDA7CisgICAgICAgIGxldCByZW1vdmVJbmRleCA9IDA7CiAgICAgICAgIHRoaXMuaGFu
ZGxlcnMuZm9yRWFjaCgoaGFuZGxlciwgaW5kZXgpID0+IHsKICAgICAgICAgICAgIGlmIChoYW5k
bGVyID09PSBmbikKICAgICAgICAgICAgICAgICByZW1vdmVJbmRleCA9IGluZGV4OwogICAgICAg
ICB9KTsKLSAgICAgICAgdGhpcy5oYW5kbGVyLnNwbGljZShyZW1vdmVJbmRleCwgMSk7CisgICAg
ICAgIHRoaXMuaGFuZGxlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTsKICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgfQogICAgIHJlbW92ZUFsbExpc3RlbmVyKCkgewpAQCAtOTAsNiArOTAsMTAg
QEAgY2xhc3MgRXZlbnRTdHJlYW0gewogICAgICAgICB0aGlzLnNpZ25hbC5hZGRMaXN0ZW5lcihm
bik7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KKyAgICBzdG9wQWN0aW9uKGZuKSB7Cisg
ICAgICAgIHRoaXMuc2lnbmFsLnJlbW92ZUxpc3RlbmVyKGZuKTsKKyAgICAgICAgcmV0dXJuIHRo
aXM7CisgICAgfQogICAgIGVycm9yKGZuKSB7CiAgICAgICAgIHRoaXMuZXJyb3JTaWduYWwuYWRk
TGlzdGVuZXIoZm4pOwogICAgICAgICByZXR1cm4gdGhpczsKQEAgLTI0Myw3ICsyNDcsNyBAQCBj
bGFzcyBSZWYgewogICAgICAgICB0aGlzLnN0YXRlID0gY29uZmlnLnN0YXRlICE9PSB1bmRlZmlu
ZWQgPyBjb25maWcuc3RhdGUgOiB7fTsKICAgICAgICAgdGhpcy5vblN0YXRlVXBkYXRlID0gbmV3
IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNvbmZpZy5vblN0YXRlVXBkYXRlKTsKICAgICAgICAgdGhp
cy5vbkVsZW1lbnRNb3VudCA9IG5ldyBTaWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25FbGVt
ZW50TW91bnQpOwotICAgICAgICB0aGlzLm9uRWxlbWVudFVubW91dCA9IG5ldyBTaWduYWwoKS5h
ZGRMaXN0ZW5lcihjb25maWcub25FbGVtZW50VW5tb3V0KTsKKyAgICAgICAgdGhpcy5vbkVsZW1l
bnRVbm1vdW50ID0gbmV3IFNpZ25hbCgpLmFkZExpc3RlbmVyKGNvbmZpZy5vbkVsZW1lbnRVbm1v
dW50KTsKICAgICB9CiAgICAgYmluZChlbGVtZW50KSB7CiAgICAgICAgIHRoaXMuYXBwbHkoZWxl
bWVudC5xdWVyeVNlbGVjdG9yKGBbcmVmPSIke3RoaXMua2V5fSJdYCkpOwpAQCAtMjU1LDcgKzI1
OSw3IEBAIGNsYXNzIFJlZiB7CiAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQgPT09IGVsZW1lbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQgJiYgdGhpcy5l
bGVtZW50ICE9PSBlbGVtZW50KQotICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQuZW1p
dCh0aGlzLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdW50LmVtaXQo
dGhpcy5lbGVtZW50KTsKICAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICAgICAgICAg
Ly9Jbml0aWFsIHN0YXRlCiAgICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSB1bmRlZmluZWQgJiYg
dGhpcy5zdGF0ZSAhPT0gbnVsbCkKQEAgLTI2NSw3ICsyNjksNyBAQCBjbGFzcyBSZWYgewogICAg
IGRlc3RvcnkoZWxlbWVudCkgewogICAgICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudCAhPT0g
dGhpcy5lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLm9uRWxlbWVu
dFVubW91dC5lbWl0KHRoaXMuZWxlbWVudCk7CisgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3Vu
dC5lbWl0KHRoaXMuZWxlbWVudCk7CiAgICAgfQogICAgIHRvU3RyaW5nKCkgewogICAgICAgICBy
ZXR1cm4gdGhpcy5rZXk7CmRpZmYgLS1naXQgYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1V0aWxzLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVz
dWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcwppbmRleCBhMjI2NWY2YmNi
NTc5ZmQ2Yzc3NTEzZTQyMmJmZDUwZjk4YzlhOTc2Li45ODMyZjU3ZWNjMzA0ZmUxYjg3Y2RiNDZm
NWJhMjkzZDQ3M2NmNDczIDEwMDY0NAotLS0gYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL1V0aWxzLmpzCisrKyBiL1Rvb2xzL3Jlc3VsdHNkYnB5
L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvVXRpbHMuanMKQEAgLTY1LDQgKzY1
LDIxIEBAIGZ1bmN0aW9uIGlzRGFya01vZGUgKCkgewogICAgIGNvbnN0IG1hdGNoID0gd2luZG93
Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKTsKICAgICByZXR1cm4g
bWF0Y2gubWF0Y2hlczsKIH0KLWV4cG9ydCB7dGltZURpZmZlcmVuY2UsIGlzRGFya01vZGUsIENv
b2tpZX07CisKKy8vIFVzZXMgaW50ZXJzZWN0aW9uIG9ic2VydmVyOiA8aHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ludGVyc2VjdGlvbl9PYnNlcnZlcl9B
UEk+CitmdW5jdGlvbiBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMoZWxlbWVudCwgY2FsbGJhY2s9
KCk9Pnt9LCBzdGFydFRocmVzaG9sZD0wLjAsIGVuZFRyZXNob2xkPTEuMCwgc3RlcD0wLjEsIG9w
dGlvbj17fSkgeworICAgIGNvbnN0IHVzZU9wdGlvbiA9IHt9OworICAgIHVzZU9wdGlvbi5yb290
ID0gb3B0aW9uLnJvb3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IG9wdGlvbi5yb290IDogbnVs
bDsKKyAgICB1c2VPcHRpb24ucm9vdE1hcmdpbiA9IG9wdGlvbi5yb290TWFyZ2luID8gb3B0aW9u
LnJvb3RNYXJnaW4gOiAiMCI7CisgICAgY29uc3QgdGhyZXNob2xkQXJyYXkgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gc3RhcnRUaHJlc2hvbGQ7IGkgPD0gZW5kVHJlc2hvbGQ7IGkrPSBzdGVwKSB7
CisgICAgICAgIHRocmVzaG9sZEFycmF5LnB1c2goaSk7CisgICAgfQorICAgIHRocmVzaG9sZEFy
cmF5LmZvckVhY2godGhyZXNob2xkID0+IHsKKyAgICAgICAgdXNlT3B0aW9uLnRocmVzaG9sZCA9
IHRocmVzaG9sZDsKKyAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIoY2FsbGJhY2ssIHVzZU9wdGlvbik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZWxl
bWVudCk7CisgICAgfSk7Cit9CisKK2V4cG9ydCB7dGltZURpZmZlcmVuY2UsIGlzRGFya01vZGUs
IENvb2tpZSwgY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2ZXJzfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3Jl
c3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9C
YXNlQ29tcG9uZW50cy5qcyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3Rh
dGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qcwppbmRleCBhNjk0OGIz
MWExN2IwMmIyMTZhNGMxY2QyZjQyOTY3OGM5NThiOTZkLi4yOWM1ZjI5YmRiOTJkMzhhOGZjOTVl
ODBhNzkzNDkwZDNiNzRiNTIwIDEwMDY0NAotLS0gYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRz
ZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMK
KysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9q
cy9jb21wb25lbnRzL0Jhc2VDb21wb25lbnRzLmpzCkBAIC00MiwxMCArNDIsMTAgQEAgZnVuY3Rp
b24gQXBwbHlOZXdDaGlsZHJlbihlbGVtZW50LCBvbGRBcnJheSwgbmV3QXJyYXksIGNoaWxkVG9L
ZXlGdW5jLCBpdGVtUHJvY2UKICAgICBuZXdDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgp
ID0+IHsKICAgICAgICAgaWYgKGluZGV4IDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHsKICAg
ICAgICAgICAgIGlmIChjaGlsZCAhPT0gZWxlbWVudC5jaGlsZHJlbltpbmRleF0pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5yZXBsYWNlQ2hpbGQoY2hpbGQsIGVsZW1lbnQuY2hpbGRyZW5baW5k
ZXhdKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIERPTS5yZXBs
YWNlKGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLCB0eXBlb2YgaXRlbVByb2Nlc3NvciA9PT0gImZ1
bmN0aW9uIiA/IGl0ZW1Qcm9jZXNzb3IoY2hpbGQpIDogY2hpbGQpOworICAgICAgICAgICAgICAg
IGlmIChjaGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLmJlZm9yZShjaGlsZCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIERPTS5iZWZvcmUoZWxlbWVudC5jaGlsZHJlbltp
bmRleF0sIHR5cGVvZiBpdGVtUHJvY2Vzc29yID09PSAiZnVuY3Rpb24iID8gaXRlbVByb2Nlc3Nv
cihjaGlsZCkgOiBjaGlsZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9u
ZW50cy9UaW1lbGluZUNvbXBvbmVudHMuanMgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJw
eS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpz
CmluZGV4IDkxZDFlMTRjYjljNjc1ZmI0OTc0NmNlMWY1NzRkOGMwMmU0M2UzZWYuLjUwNTlmMGZi
OWRlZTQ0YjZmYjVlOWI0NjhkZWUzOTQ3ZTcwYzNmYmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1l
bGluZUNvbXBvbmVudHMuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmll
dy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qcwpAQCAt
MjUsNyArMjUsNyBAQCBpbXBvcnQgewogfQogZnJvbSAnLi4vUmVmLmpzJzsKIAotaW1wb3J0IHtp
c0RhcmtNb2RlfSBmcm9tICcuLi9VdGlscy5qcyc7CitpbXBvcnQge2lzRGFya01vZGUsIGNyZWF0
ZUluc2VydGlvbk9ic2VydmVyc30gZnJvbSAnLi4vVXRpbHMuanMnOwogaW1wb3J0IHtMaXN0Q29t
cG9uZW50LCBMaXN0UHJvdmlkZXIsIExpc3RQcm92aWRlclJlY2VpdmVyfSBmcm9tICcuL0Jhc2VD
b21wb25lbnRzLmpzJwogCiBmdW5jdGlvbiBwb2ludENpcmNsZUNvbGxpc2lvbkRldGFjdChwb2lu
dCwgY2lyY2xlKSB7CkBAIC05MiwyMyArOTIsMTcgQEAgZnVuY3Rpb24gWFNjcm9sbGFibGVDYW52
YXNQcm92aWRlcihleHBvcnRlciwgLi4uY2hpbGRyZW5GdW5jdGlvbnMpIHsKICAgICAgICAgICAg
IHJlc2l6ZUV2ZW50U3RyZWFtLmFkZChlbGVtZW50Lm9mZnNldFdpZHRoKTsKICAgICAgICAgfSwK
ICAgICAgICAgb25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsK
LSAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXIn
KQotICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgk
e3N0YXRlRGlmZi5zY3JvbGxMZWZ0fXB4LCAwKWA7CiAgICAgICAgICAgICBpZiAoc3RhdGVEaWZm
LnJlc2l6ZSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtlbGVt
ZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aH1weGA7CiAgICAgICAg
ICAgICAgICAgcmVzaXplRXZlbnRTdHJlYW0uYWRkKGVsZW1lbnQub2Zmc2V0V2lkdGgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSk7Ci0gICAgc2Nyb2xsRXZlbnRTdHJlYW0uYWN0
aW9uKChlKSA9PiB7Ci0gICAgICAgIC8vIFByb3ZpZGUgdGhlIGxvZ2ljIHNjcm9sbExlZnQKLSAg
ICAgICAgcHJlc2VudGVyUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxM
ZWZ0fSk7Ci0gICAgfSk7CiAgICAgLy8gUHJvdmlkZSBwYXJlbnQgZnVuY3Rpb25zL2V2ZW50IHRv
IGNoaWxkcmVuIHRvIHVzZQogCiAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjb250ZW50IiByZWY9
IiR7c2Nyb2xsUmVmfSI+Ci0gICAgICAgIDxkaXYgcmVmPSIke2NvbnRhaW5lclJlZn0iPgotICAg
ICAgICAgICAgPGRpdiByZWY9IiR7cHJlc2VudGVyUmVmfSI+JHsKKyAgICAgICAgPGRpdiByZWY9
IiR7Y29udGFpbmVyUmVmfSIgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZSI+CisgICAgICAgICAg
ICA8ZGl2IHJlZj0iJHtwcmVzZW50ZXJSZWZ9IiBzdHlsZT0icG9zaXRpb246IC13ZWJraXQtc3Rp
Y2t5OyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyBsZWZ0OiAwIj4kewogICAgICAgICAgICAgICAg
IExpc3RQcm92aWRlcigodXBkYXRlQ2hpbGRyZW5GdW5jdGlvbnMpID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cG9ydGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRl
cigoY2hpbGRyZW4pID0+IHsKQEAgLTEyNywxMSArMTIxLDE1IEBAIGZ1bmN0aW9uIFhTY3JvbGxh
YmxlQ2FudmFzUHJvdmlkZXIoZXhwb3J0ZXIsIC4uLmNoaWxkcmVuRnVuY3Rpb25zKSB7CiBmdW5j
dGlvbiBvZmZzY3JlZW5DYWNoZWRSZW5kZXJGYWN0b3J5KHBhZGRpbmcsIGhlaWdodCkgewogICAg
IGxldCBjYWNoZWRTY3JvbGxMZWZ0ID0gMDsKICAgICBsZXQgb2Zmc2NyZWVuQ2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgICAgLy8gRG91YmxlIGJ1ZmZlcmluZwor
ICAgIGNvbnN0IG9mZnNjcmVlbkNhbnZhc0J1ZmZlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2NhbnZhcycpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgcmVkcmF3Q2FjaGUg
dG8gcmVuZGVyIGEgb2Zmc2NyZWVuIGNhY2hlCiAgICAgLy8gYW5kIGNvcHkgdGhlIHZpZXdwb3J0
IGFyZWEgZnJvbSBvZiBpdAogICAgIC8vIEl0IHdpbGwgdHJpZ2dlciByZWRyYXdDYWNoZSB3aGVu
IGNhY2hlIGRvbid0IGhhdmUgZW5vdWdoIHNwYWNlCiAgICAgcmV0dXJuIChyZWRyYXdDYWNoZSwg
ZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlKSA9PiB7
CisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBjYW52YXMgZGlzcGxheSBvbiB0aGUgc2NyZWVuIG9y
IG5vdCwKKyAgICAgICAgLy8gVGhpcyB3aWxsIHNhdmUgcmVuZGVyIHRpbWUKICAgICAgICAgY29u
c3Qgd2lkdGggPSB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJyA/IHN0YXRlRGlm
Zi53aWR0aCA6IHN0YXRlLndpZHRoOwogICAgICAgICBpZiAod2lkdGggPD0gMCkKICAgICAgICAg
ICAgIC8vIE5vdGhpbmcgdG8gcmVuZGVyCkBAIC0xNTUsNyArMTUzLDcgQEAgZnVuY3Rpb24gb2Zm
c2NyZWVuQ2FjaGVkUmVuZGVyRmFjdG9yeShwYWRkaW5nLCBoZWlnaHQpIHsKIAogICAgICAgICBp
ZiAobmVlZFRvUmVkcmF3Q2FjaGUpIHsKICAgICAgICAgICAgIC8vIFdlIGRyYXcgZXZlcnl0aGlu
ZyBvbiBjYWNoZQotICAgICAgICAgICAgcmVkcmF3Q2FjaGUob2Zmc2NyZWVuQ2FudmFzLCBlbGVt
ZW50LCBzdGF0ZURpZmYsIHN0YXRlLCAoKSA9PiB7CisgICAgICAgICAgICAgcmVkcmF3Q2FjaGUo
b2Zmc2NyZWVuQ2FudmFzLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCAoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgY2FjaGVkU2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgPCBwYWRkaW5nID8gc2Ny
b2xsTGVmdCA6IHNjcm9sbExlZnQgLSBwYWRkaW5nOwogICAgICAgICAgICAgICAgIGNhY2hlUG9z
TGVmdCA9IHNjcm9sbExlZnQgLSBjYWNoZWRTY3JvbGxMZWZ0OwogICAgICAgICAgICAgICAgIGlm
IChjYWNoZVBvc0xlZnQgPCAwKQpAQCAtMzMxLDUwICszMjksNzQgQEAgVGltZWxpbmUuQ2FudmFz
U2VyaWVzQ29tcG9uZW50ID0gKGRvdHMsIHNjYWxlcywgb3B0aW9uID0ge30pID0+IHsKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAg
ICAgICAgc3RhdGU6IHsKLSAgICAgICAgICAgIGRvdHM6IGluaXREb3RzLAotICAgICAgICAgICAg
c2NhbGVzOiBpbml0U2NhbGVzLAotICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKLSAgICAgICAg
ICAgIHdpZHRoOiAwLAotICAgICAgICB9LAotICAgICAgICBvbkVsZW1lbnRNb3VudDogKGVsZW1l
bnQpID0+IHsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50LCBo
ZWlnaHQpOwotICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7Ci0g
ICAgICAgICAgICBpZiAob25Eb3RDbGljaykgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQg
ZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xs
TGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb3RzLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG9uRG90Q2xpY2soZG90c1swXSwgZSk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9CisgICAgcmV0dXJuIExpc3RQcm92aWRlclJlY2VpdmVy
KCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7
CisgICAgICAgIGNvbnN0IG9uU2Nyb2xsQWN0aW9uID0gKGUpID0+IHsKKyAgICAgICAgICAgIGNh
bnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERl
dmljZVBpeGVsUmF0aW8oKX0pOworICAgICAgICB9OworICAgICAgICBjb25zdCBvblJlc2l6ZUFj
dGlvbiA9ICh3aWR0aCkgPT4geworICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHt3aWR0
aDogd2lkdGh9KTsKKyAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2sgfHwg
b25Eb3RIb3ZlcikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
bW91c2Vtb3ZlJywgKGUpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBnZXRN
b3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1l
bnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChvbkRvdEhvdmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9uRG90SG92ZXIoZG90c1swXSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50
LnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAg
b25TdGF0ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAg
ICAgIGNvbnN0IGNvbnRleHQgPSBlbGVtZW50LmdldENvbnRleHQoIjJkIik7Ci0gICAgICAgICAg
ICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHN0YXRlRGlm
Zi5zY2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0
ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgewot
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvdHMubGVuZ3RoIDw9IHNjYWxlcy5sZW5n
dGgpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5k
b3RzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVlOworICAg
ICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKKyAgICAgICAgICAgIHN0YXRl
OiB7CisgICAgICAgICAgICAgICAgZG90czogaW5pdERvdHMsCisgICAgICAgICAgICAgICAgc2Nh
bGVzOiBpbml0U2NhbGVzLAorICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCisgICAgICAg
ICAgICAgICAgd2lkdGg6IDAsCisgICAgICAgICAgICAgICAgb25TY3JlZW46IHRydWUsCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRoRHByKGVsZW1lbnQsIGhlaWdodCk7
CisgICAgICAgICAgICAgICAgc2V0dXBDYW52YXNDb250ZXh0U2NhbGUoZWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2spIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90cyhlLCBjYW52YXNSZWYuc3Rh
dGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG90
cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RDbGljayhkb3RzWzBd
LCBlKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2sgfHwgb25Eb3RIb3ZlcikgeworICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG90cyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyRG90
cyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZG90cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob25Eb3RIb3ZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3RI
b3Zlcihkb3RzWzBdLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0
eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1
bHQiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnMoZWxlbWVudCwgKGVudHJpZXMpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtvblNjcmVlbjogZW50
cmllc1swXS5pc0ludGVyc2VjdGluZ30pOworICAgICAgICAgICAgICAgIH0sIDAsIDAuMDEsIDAu
MDEpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uRWxlbWVudFVubW91bnQ6IChlbGVt
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwuc3RvcEFjdGlvbihv
blNjcm9sbEFjdGlvbik7CisgICAgICAgICAgICAgICAgb25SZXNpemUuc3RvcEFjdGlvbihvblJl
c2l6ZUFjdGlvbik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTog
KGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBj
b250ZXh0ID0gZWxlbWVudC5nZXRDb250ZXh0KCIyZCIpOworICAgICAgICAgICAgICAgIGxldCBm
b3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5vblNj
cmVlbiAmJiAhc3RhdGVEaWZmLm9uU2NyZWVuKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCBzdGF0ZURpZmYuZG90
cyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBz
dGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInIHx8IHN0YXRlRGlmZi5vblNjcmVlbikgeworCisg
ICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZURpZmYuc2NhbGVzID0gc3RhdGVEaWZmLnNjYWxlcy5tYXAoeCA9PiB4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuZG90
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLmRvdHMgPSBzdGF0ZURpZmYu
ZG90cy5tYXAoeCA9PiB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2Fj
aGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2Fj
aGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+
IG9mZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBz
dGF0ZSwgZm9yY2VSZWRyYXdDYWNoZSkpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fSk7CisgICAgICAgIH0pOwogCi0gICAgcmV0dXJuIExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRh
dGVDb250YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CiAgICAg
ICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBkb3RXaWR0aCAqIGdldERl
dmljZVBpeGVsUmF0aW8oKSk7CiAgICAgICAgIGNvbnN0IHVwZGF0ZURhdGEgPSAoZG90cywgc2Nh
bGVzKSA9PiB7CiAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVuZ3Ro
ICogZG90V2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwpAQCAtMzg1LDEyICs0MDcsOCBA
QCBUaW1lbGluZS5DYW52YXNTZXJpZXNDb21wb25lbnQgPSAoZG90cywgc2NhbGVzLCBvcHRpb24g
PSB7fSkgPT4gewogICAgICAgICB9OwogICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi5leHBvcnRl
ciA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRh
KTsKLSAgICAgICAgb25Db250YWluZXJTY3JvbGwuYWN0aW9uKChlKSA9PiB7Ci0gICAgICAgICAg
ICBjYW52YXNSZWYuc2V0U3RhdGUoe3Njcm9sbExlZnQ6IGUudGFyZ2V0LnNjcm9sbExlZnQgLyBn
ZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIG9uUmVzaXplLmFj
dGlvbigod2lkdGgpID0+IHsKLSAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7d2lkdGg6
IHdpZHRofSk7Ci0gICAgICAgIH0pOworICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5hY3Rpb24o
b25TY3JvbGxBY3Rpb24pOworICAgICAgICBvblJlc2l6ZS5hY3Rpb24ob25SZXNpemVBY3Rpb24p
OwogICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9InNlcmllcyI+CiAgICAgICAgICAgICA8Y2Fu
dmFzIHJlZj0iJHtjYW52YXNSZWZ9Ij4KICAgICAgICAgPC9kaXY+YDsKQEAgLTY4Myw2NiArNzAx
LDc4IEBAIFRpbWVsaW5lLkNhbnZhc1hBeGlzQ29tcG9uZW50ID0gKHNjYWxlcywgb3B0aW9uID0g
e30pID0+IHsKICAgICB9OwogICAgIGNvbnN0IGluaXRTY2FsZUdyb3VwTWFwTGlua0xpc3QgPSBn
ZXRTY2FsZXNNYXBMaW5rTGlzdChpbml0U2NhbGVzKTsKIAotICAgIGNvbnN0IGNhbnZhc1JlZiA9
IFJFRi5jcmVhdGVSZWYoewotICAgICAgICBzdGF0ZTogewotICAgICAgICAgICAgc2Nyb2xsTGVm
dDogMCwKLSAgICAgICAgICAgIHdpZHRoOiAwLAotICAgICAgICAgICAgc2NhbGVzOiBpbml0U2Nh
bGVzLAotICAgICAgICAgICAgc2NhbGVzTWFwTGlua0xpc3Q6IGluaXRTY2FsZUdyb3VwTWFwTGlu
a0xpc3QKLSAgICAgICAgfSwKLSAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7
Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIoZWxlbWVudCwgY2FudmFzSGVp
Z2h0KTsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4dFNjYWxlKGVsZW1lbnQpOwotICAg
ICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gewotICAgICAgICAgICAgICAgICAgICBsZXQg
c2NhbGVzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJTY2FsZXMoZSwgY2FudmFzUmVmLnN0YXRlLnNj
cm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0
aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVDbGljayhzY2FsZXNbMF0sIGUpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAob25T
Y2FsZUNsaWNrIHx8IG9uU2NhbGVIb3ZlcikgewotICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHsKLSAgICAgICAgICAgICAgICAgICAg
bGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0
ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5s
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlSG92ZXIpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb25TY2FsZUhvdmVyKHNjYWxlc1swXSwgZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJwb2ludGVyIjsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1l
bnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOworICAgIHJldHVybiB7CisgICAgICAgIHNlcmll
czogTGlzdFByb3ZpZGVyUmVjZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5l
clNjcm9sbCwgb25SZXNpemUpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IG9uU2Nyb2xsQWN0aW9u
ID0gKGUpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3Njcm9sbExl
ZnQ6IGUudGFyZ2V0LnNjcm9sbExlZnQgLyBnZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBjb25zdCBvblJlc2l6ZUFjdGlvbiA9ICh3aWR0aCkgPT4g
eworICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5zZXRTdGF0ZSh7d2lkdGg6IHdpZHRofSk7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRl
UmVmKHsKKyAgICAgICAgICAgICAgICBzdGF0ZTogeworICAgICAgICAgICAgICAgICAgICBzY3Jv
bGxMZWZ0OiAwLAorICAgICAgICAgICAgICAgICAgICB3aWR0aDogMCwKKyAgICAgICAgICAgICAg
ICAgICAgc2NhbGVzOiBpbml0U2NhbGVzLAorICAgICAgICAgICAgICAgICAgICBzY2FsZXNNYXBM
aW5rTGlzdDogaW5pdFNjYWxlR3JvdXBNYXBMaW5rTGlzdAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgb25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0aERwcihlbGVtZW50LCBjYW52YXNIZWlnaHQp
OworICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRleHRTY2FsZShlbGVtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljaykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2Vy
U2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb25TY2FsZUNsaWNrKHNjYWxlc1swXSwgZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGlmIChvblNjYWxlQ2xpY2sgfHwgb25TY2FsZUhvdmVyKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJn
Z2VyU2NhbGVzKGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVzLmxlbmd0aCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAob25TY2FsZUhvdmVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb25TY2FsZUhvdmVyKHNjYWxlc1swXSwgZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gImRlZmF1bHQiOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBvbkVs
ZW1lbnRVbm1vdW50OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBvbkNvbnRh
aW5lclNjcm9sbC5zdG9wQWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAgICAgICAg
ICAgb25SZXNpemUuc3RvcEFjdGlvbihvblJlc2l6ZUFjdGlvbik7CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBvblN0YXRlVXBkYXRlOiAoZWxlbWVudCwgc3RhdGVEaWZmLCBz
dGF0ZSkgPT4geworICAgICAgICAgICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNjYWxlcyB8fCB0eXBlb2Yg
c3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVvZiBzdGF0ZURpZmYud2lk
dGggPT09ICdudW1iZXInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZm
LnNjYWxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJlZHJhd0NhY2hlID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJl
ZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0NhY2hlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgb25TdGF0
ZVVwZGF0ZTogKGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKLSAgICAgICAgICAgIGxl
dCBmb3JjZVJlZHJhd0NhY2hlID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNj
YWxlcyB8fCB0eXBlb2Ygc3RhdGVEaWZmLnNjcm9sbExlZnQgPT09ICdudW1iZXInIHx8IHR5cGVv
ZiBzdGF0ZURpZmYud2lkdGggPT09ICdudW1iZXInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
YXRlRGlmZi5zY2FsZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUuc2NhbGVzTWFwTGlu
a0xpc3QgPSBnZXRTY2FsZXNNYXBMaW5rTGlzdChzdGF0ZURpZmYuc2NhbGVzKTsKLSAgICAgICAg
ICAgICAgICAgICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNo
ZWRSZW5kZXIocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVk
cmF3Q2FjaGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOworICAgICAgICAg
ICAgfSk7CisKIAotICAgIHJldHVybiB7Ci0gICAgICAgIHNlcmllczogTGlzdFByb3ZpZGVyUmVj
ZWl2ZXIoKHVwZGF0ZUNvbnRhaW5lcldpZHRoLCBvbkNvbnRhaW5lclNjcm9sbCwgb25SZXNpemUp
ID0+IHsKICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBz
Y2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICAgICAgICAgIGNvbnN0IHVw
ZGF0ZURhdGEgPSAoc2NhbGVzKSA9PiB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVy
V2lkdGgoc2NhbGVzLmxlbmd0aCAqIHNjYWxlV2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkp
OworICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgbW9kaWZpY2F0aW9uIHdoaWxlIHJlbmRl
cmluZworICAgICAgICAgICAgICAgIGNvbnN0IHNjYWxlc0NvcHkgPSBzY2FsZXMubWFwKHggPT4g
eCk7CisgICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyV2lkdGgoc2NhbGVzQ29weS5sZW5n
dGggKiBzY2FsZVdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICAgICAgICAgICAg
ICBjYW52YXNSZWYuc2V0U3RhdGUoewotICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHNjYWxl
cworICAgICAgICAgICAgICAgICAgICBzY2FsZXM6IHNjYWxlc0NvcHksCisgICAgICAgICAgICAg
ICAgICAgIHNjYWxlc01hcExpbmtMaXN0OiBnZXRTY2FsZXNNYXBMaW5rTGlzdChzY2FsZXNDb3B5
KQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHR5
cGVvZiBvcHRpb24uZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgb3B0
aW9uLmV4cG9ydGVyKHVwZGF0ZURhdGEpOwotICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwu
YWN0aW9uKChlKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3Jv
bGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIG9uUmVzaXplLmFjdGlvbigod2lkdGgpID0+IHsK
LSAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0aH0pOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBvbkNvbnRhaW5lclNjcm9sbC5hY3Rpb24ob25TY3Jv
bGxBY3Rpb24pOworICAgICAgICAgICAgb25SZXNpemUuYWN0aW9uKG9uUmVzaXplQWN0aW9uKTsK
ICAgICAgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0ieC1heGlzIj4KICAgICAgICAgICAgICAg
ICA8Y2FudmFzIHJlZj0iJHtjYW52YXNSZWZ9Ij4KICAgICAgICAgICAgIDwvZGl2PmA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375631</attachid>
            <date>2019-08-06 10:33:48 -0700</date>
            <delta_ts>2019-08-06 10:57:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200406-20190806103348.patch</filename>
            <type>text/plain</type>
            <size>21734</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MTY4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWZiNDkyZWU1OTI1ZGFlNmY2MWY5NzViZGIyOGUwYzgy
MmNmZWZiYi4uYWEyMjhiNDFiMDUxZTIyZjNkNGU3YjQyNDQ1MWYxOTFiOGVlMTg0MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDE5LTA4LTAyICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbcmVzdWx0cy53ZWJraXQub3JnIFRpbWVsaW5lXSBQZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IFVuaG9vayB0aGUgc2Nyb2xsIGV2ZW50IHdoZW4gYSBzZXJpZXMvYXhpcyBoYXZlIGJlZW4gcmVt
b3ZlZCBmcm9tIHRoZSBjb250YWluZXIgCisgICAgICAgIDIuIEZpeCB0aGUgYXhpcydzIGNhY2hl
IGRhdGEgc3RydWN0dXJlIG91dCBvZiBzeW5jLgorICAgICAgICAzLiBVc2UgcG9zaXRpb246c3Rp
Y2t5IHRvIHJlZHVjZSB0aGUgc2Nyb2xsaW5nIGJsaW5rIHdoZW4gdXBkYXRlIHRoZSBwcmVzZW50
ZXIncyB0cmFuc2Zvcm0KKyAgICAgICAgNC4gVXNlIGludGVyc2VjdGlvbiBvYnNlcnZlciB0byBk
ZXRlY3QgaWYgdGhlIGNhbnZhcyBvbiBzY3JlZW4gb3Igbm90LCBpZiBhIGNhbnZhcyBpcyBub3Qg
b24gdGhlIHNjcmVlbiwgd2UgZG8gbm90aGluZywgdGhpcyB3aWxsIGVsaW1pbmF0ZSByZW5kZXIg
cmVxdWVzdHMgd2Ugc2VuZCBvdXQuCisKKworICAgICAgICAqIHJlc3VsdHNkYnB5L3Jlc3VsdHNk
YnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvUmVmLmpzOgorICAgICAgICAoU2lnbmFsLnByb3Rv
dHlwZS5yZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChwcm90b3R5cGUuc3RvcEFjdGlvbik6IFVu
cmVnc2l0ZXIgYW4gYWN0aW9uIGhhbmRsZXIKKyAgICAgICAgKFJlZik6CisgICAgICAgIChSZWYu
cHJvdG90eXBlLmFwcGx5KToKKyAgICAgICAgKFJlZi5wcm90b3R5cGUuZGVzdG9yeSk6CisgICAg
ICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21w
b25lbnRzL0Jhc2VDb21wb25lbnRzLmpzOgorICAgICAgICAoQXBwbHlOZXdDaGlsZHJlbik6Cisg
ICAgICAgICogcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9j
b21wb25lbnRzL1RpbWVsaW5lQ29tcG9uZW50cy5qczoKKyAgICAgICAgKFRpbWVsaW5lLkNhbnZh
c1Nlcmllc0NvbXBvbmVudCk6CisKIDIwMTktMDgtMDIgIFpoaWZlaSBGYW5nICA8emhpZmVpX2Zh
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRzLndlYmtpdC5vcmcgVGltZWxpbmVdIFVz
aW5nIHRyYW5zZm9ybSBtYXRyaXggdG8gY2FsY3VsYXRlIHRoZSB0YWcgcm90YXRpb24gcG9zaXRp
b24KZGlmZiAtLWdpdCBhL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGlj
L2xpYnJhcnkvanMvUmVmLmpzIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy9SZWYuanMKaW5kZXggMTI5ODJmOWM5NmZhNDNlM2Y0ZmRiZDk2MDRh
NGUzZjc2ODViNDcyYy4uYzkxNGQ1YjgwMzRiNDQxZjA5NjdlYWQ0OTYxYzE1ZGU2NGUyZmEzZiAx
MDA2NDQKLS0tIGEvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGli
cmFyeS9qcy9SZWYuanMKKysrIGIvVG9vbHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9z
dGF0aWMvbGlicmFyeS9qcy9SZWYuanMKQEAgLTM5LDEyICszOSwxMiBAQCBjbGFzcyBTaWduYWwg
ewogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgcmVtb3ZlTGlzdGVuZXIoZm4pIHsK
LSAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPSAwOworICAgICAgICBsZXQgcmVtb3ZlSW5kZXgg
PSAwOwogICAgICAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIsIGluZGV4KSA9PiB7
CiAgICAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gZm4pCiAgICAgICAgICAgICAgICAgcmVtb3Zl
SW5kZXggPSBpbmRleDsKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuaGFuZGxlci5zcGxpY2Uo
cmVtb3ZlSW5kZXgsIDEpOworICAgICAgICB0aGlzLmhhbmRsZXJzLnNwbGljZShyZW1vdmVJbmRl
eCwgMSk7CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KICAgICByZW1vdmVBbGxMaXN0ZW5l
cigpIHsKQEAgLTkwLDYgKzkwLDEwIEBAIGNsYXNzIEV2ZW50U3RyZWFtIHsKICAgICAgICAgdGhp
cy5zaWduYWwuYWRkTGlzdGVuZXIoZm4pOwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9Cisg
ICAgc3RvcEFjdGlvbihmbikgeworICAgICAgICB0aGlzLnNpZ25hbC5yZW1vdmVMaXN0ZW5lcihm
bik7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KICAgICBlcnJvcihmbikgewogICAgICAg
ICB0aGlzLmVycm9yU2lnbmFsLmFkZExpc3RlbmVyKGZuKTsKICAgICAgICAgcmV0dXJuIHRoaXM7
CkBAIC0yNDMsNyArMjQ3LDcgQEAgY2xhc3MgUmVmIHsKICAgICAgICAgdGhpcy5zdGF0ZSA9IGNv
bmZpZy5zdGF0ZSAhPT0gdW5kZWZpbmVkID8gY29uZmlnLnN0YXRlIDoge307CiAgICAgICAgIHRo
aXMub25TdGF0ZVVwZGF0ZSA9IG5ldyBTaWduYWwoKS5hZGRMaXN0ZW5lcihjb25maWcub25TdGF0
ZVVwZGF0ZSk7CiAgICAgICAgIHRoaXMub25FbGVtZW50TW91bnQgPSBuZXcgU2lnbmFsKCkuYWRk
TGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudE1vdW50KTsKLSAgICAgICAgdGhpcy5vbkVsZW1lbnRV
bm1vdXQgPSBuZXcgU2lnbmFsKCkuYWRkTGlzdGVuZXIoY29uZmlnLm9uRWxlbWVudFVubW91dCk7
CisgICAgICAgIHRoaXMub25FbGVtZW50VW5tb3VudCA9IG5ldyBTaWduYWwoKS5hZGRMaXN0ZW5l
cihjb25maWcub25FbGVtZW50VW5tb3VudCk7CiAgICAgfQogICAgIGJpbmQoZWxlbWVudCkgewog
ICAgICAgICB0aGlzLmFwcGx5KGVsZW1lbnQucXVlcnlTZWxlY3RvcihgW3JlZj0iJHt0aGlzLmtl
eX0iXWApKTsKQEAgLTI1NSw3ICsyNTksNyBAQCBjbGFzcyBSZWYgewogICAgICAgICBpZiAodGhp
cy5lbGVtZW50ID09PSBlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAo
dGhpcy5lbGVtZW50ICYmIHRoaXMuZWxlbWVudCAhPT0gZWxlbWVudCkKLSAgICAgICAgICAgIHRo
aXMub25FbGVtZW50VW5tb3V0LmVtaXQodGhpcy5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMu
b25FbGVtZW50VW5tb3VudC5lbWl0KHRoaXMuZWxlbWVudCk7CiAgICAgICAgIHRoaXMuZWxlbWVu
dCA9IGVsZW1lbnQ7CiAgICAgICAgIC8vSW5pdGlhbCBzdGF0ZQogICAgICAgICBpZiAodGhpcy5z
dGF0ZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3RhdGUgIT09IG51bGwpCkBAIC0yNjUsNyArMjY5
LDcgQEAgY2xhc3MgUmVmIHsKICAgICBkZXN0b3J5KGVsZW1lbnQpIHsKICAgICAgICAgaWYgKCFl
bGVtZW50IHx8IGVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdGhpcy5vbkVsZW1lbnRVbm1vdXQuZW1pdCh0aGlzLmVsZW1lbnQpOworICAgICAg
ICB0aGlzLm9uRWxlbWVudFVubW91bnQuZW1pdCh0aGlzLmVsZW1lbnQpOwogICAgIH0KICAgICB0
b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIHRoaXMua2V5OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcyBi
L1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvVXRp
bHMuanMKaW5kZXggYTIyNjVmNmJjYjU3OWZkNmM3NzUxM2U0MjJiZmQ1MGY5OGM5YTk3Ni4uOTgz
MmY1N2VjYzMwNGZlMWI4N2NkYjQ2ZjViYTI5M2Q0NzNjZjQ3MyAxMDA2NDQKLS0tIGEvVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9VdGlscy5qcwor
KysgYi9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pz
L1V0aWxzLmpzCkBAIC02NSw0ICs2NSwyMSBAQCBmdW5jdGlvbiBpc0RhcmtNb2RlICgpIHsKICAg
ICBjb25zdCBtYXRjaCA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspJyk7CiAgICAgcmV0dXJuIG1hdGNoLm1hdGNoZXM7CiB9Ci1leHBvcnQge3RpbWVEaWZm
ZXJlbmNlLCBpc0RhcmtNb2RlLCBDb29raWV9OworCisvLyBVc2VzIGludGVyc2VjdGlvbiBvYnNl
cnZlcjogPGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9J
bnRlcnNlY3Rpb25fT2JzZXJ2ZXJfQVBJPgorZnVuY3Rpb24gY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2
ZXJzKGVsZW1lbnQsIGNhbGxiYWNrPSgpPT57fSwgc3RhcnRUaHJlc2hvbGQ9MC4wLCBlbmRUcmVz
aG9sZD0xLjAsIHN0ZXA9MC4xLCBvcHRpb249e30pIHsKKyAgICBjb25zdCB1c2VPcHRpb24gPSB7
fTsKKyAgICB1c2VPcHRpb24ucm9vdCA9IG9wdGlvbi5yb290IGluc3RhbmNlb2YgSFRNTEVsZW1l
bnQgPyBvcHRpb24ucm9vdCA6IG51bGw7CisgICAgdXNlT3B0aW9uLnJvb3RNYXJnaW4gPSBvcHRp
b24ucm9vdE1hcmdpbiA/IG9wdGlvbi5yb290TWFyZ2luIDogIjAiOworICAgIGNvbnN0IHRocmVz
aG9sZEFycmF5ID0gW107CisgICAgZm9yIChsZXQgaSA9IHN0YXJ0VGhyZXNob2xkOyBpIDw9IGVu
ZFRyZXNob2xkOyBpKz0gc3RlcCkgeworICAgICAgICB0aHJlc2hvbGRBcnJheS5wdXNoKGkpOwor
ICAgIH0KKyAgICB0aHJlc2hvbGRBcnJheS5mb3JFYWNoKHRocmVzaG9sZCA9PiB7CisgICAgICAg
IHVzZU9wdGlvbi50aHJlc2hvbGQgPSB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IG9ic2VydmVy
ID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB1c2VPcHRpb24pOworICAgICAg
ICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpOworICAgIH0pOworfQorCitleHBvcnQge3RpbWVE
aWZmZXJlbmNlLCBpc0RhcmtNb2RlLCBDb29raWUsIGNyZWF0ZUluc2VydGlvbk9ic2VydmVyc307
CmRpZmYgLS1naXQgYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9s
aWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBvbmVudHMuanMgYi9Ub29scy9yZXN1bHRzZGJw
eS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvQmFzZUNvbXBv
bmVudHMuanMKaW5kZXggYTY5NDhiMzFhMTdiMDJiMjE2YTRjMWNkMmY0Mjk2NzhjOTU4Yjk2ZC4u
MjljNWYyOWJkYjkyZDM4YThmYzk1ZTgwYTc5MzQ5MGQzYjc0YjUyMCAxMDA2NDQKLS0tIGEvVG9v
bHMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25l
bnRzL0Jhc2VDb21wb25lbnRzLmpzCisrKyBiL1Rvb2xzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5
L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9CYXNlQ29tcG9uZW50cy5qcwpAQCAt
NDIsMTAgKzQyLDEwIEBAIGZ1bmN0aW9uIEFwcGx5TmV3Q2hpbGRyZW4oZWxlbWVudCwgb2xkQXJy
YXksIG5ld0FycmF5LCBjaGlsZFRvS2V5RnVuYywgaXRlbVByb2NlCiAgICAgbmV3Q2hpbGRyZW4u
Zm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7CiAgICAgICAgIGlmIChpbmRleCA8IGVsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQgIT09IGVsZW1lbnQuY2hp
bGRyZW5baW5kZXhdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRN
TEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucmVwbGFjZUNoaWxkKGNoaWxk
LCBlbGVtZW50LmNoaWxkcmVuW2luZGV4XSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBET00ucmVwbGFjZShlbGVtZW50LmNoaWxkcmVuW2luZGV4XSwgdHlwZW9m
IGl0ZW1Qcm9jZXNzb3IgPT09ICJmdW5jdGlvbiIgPyBpdGVtUHJvY2Vzc29yKGNoaWxkKSA6IGNo
aWxkKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkg
eworICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuW2luZGV4XS5iZWZvcmUoY2hp
bGQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBET00uYmVm
b3JlKGVsZW1lbnQuY2hpbGRyZW5baW5kZXhdLCB0eXBlb2YgaXRlbVByb2Nlc3NvciA9PT0gImZ1
bmN0aW9uIiA/IGl0ZW1Qcm9jZXNzb3IoY2hpbGQpIDogY2hpbGQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgSFRNTEVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0
YXRpYy9saWJyYXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpzIGIvVG9vbHMv
cmVzdWx0c2RicHkvcmVzdWx0c2RicHkvdmlldy9zdGF0aWMvbGlicmFyeS9qcy9jb21wb25lbnRz
L1RpbWVsaW5lQ29tcG9uZW50cy5qcwppbmRleCA5MWQxZTE0Y2I5YzY3NWZiNDk3NDZjZTFmNTc0
ZDhjMDJlNDNlM2VmLi41MDU5ZjBmYjlkZWU0NGI2ZmI1ZTliNDY4ZGVlMzk0N2U3MGMzZmJiIDEw
MDY0NAotLS0gYS9Ub29scy9yZXN1bHRzZGJweS9yZXN1bHRzZGJweS92aWV3L3N0YXRpYy9saWJy
YXJ5L2pzL2NvbXBvbmVudHMvVGltZWxpbmVDb21wb25lbnRzLmpzCisrKyBiL1Rvb2xzL3Jlc3Vs
dHNkYnB5L3Jlc3VsdHNkYnB5L3ZpZXcvc3RhdGljL2xpYnJhcnkvanMvY29tcG9uZW50cy9UaW1l
bGluZUNvbXBvbmVudHMuanMKQEAgLTI1LDcgKzI1LDcgQEAgaW1wb3J0IHsKIH0KIGZyb20gJy4u
L1JlZi5qcyc7CiAKLWltcG9ydCB7aXNEYXJrTW9kZX0gZnJvbSAnLi4vVXRpbHMuanMnOworaW1w
b3J0IHtpc0RhcmtNb2RlLCBjcmVhdGVJbnNlcnRpb25PYnNlcnZlcnN9IGZyb20gJy4uL1V0aWxz
LmpzJzsKIGltcG9ydCB7TGlzdENvbXBvbmVudCwgTGlzdFByb3ZpZGVyLCBMaXN0UHJvdmlkZXJS
ZWNlaXZlcn0gZnJvbSAnLi9CYXNlQ29tcG9uZW50cy5qcycKIAogZnVuY3Rpb24gcG9pbnRDaXJj
bGVDb2xsaXNpb25EZXRhY3QocG9pbnQsIGNpcmNsZSkgewpAQCAtOTIsMjMgKzkyLDE3IEBAIGZ1
bmN0aW9uIFhTY3JvbGxhYmxlQ2FudmFzUHJvdmlkZXIoZXhwb3J0ZXIsIC4uLmNoaWxkcmVuRnVu
Y3Rpb25zKSB7CiAgICAgICAgICAgICByZXNpemVFdmVudFN0cmVhbS5hZGQoZWxlbWVudC5vZmZz
ZXRXaWR0aCk7CiAgICAgICAgIH0sCiAgICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBz
dGF0ZURpZmYsIHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHN0YXRlRGlmZi5z
Y3JvbGxMZWZ0ID09PSAnbnVtYmVyJykKLSAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLnRy
YW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtzdGF0ZURpZmYuc2Nyb2xsTGVmdH1weCwgMClgOwogICAg
ICAgICAgICAgaWYgKHN0YXRlRGlmZi5yZXNpemUpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50
LnN0eWxlLndpZHRoID0gYCR7ZWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zm
c2V0V2lkdGh9cHhgOwogICAgICAgICAgICAgICAgIHJlc2l6ZUV2ZW50U3RyZWFtLmFkZChlbGVt
ZW50Lm9mZnNldFdpZHRoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0pOwotICAg
IHNjcm9sbEV2ZW50U3RyZWFtLmFjdGlvbigoZSkgPT4gewotICAgICAgICAvLyBQcm92aWRlIHRo
ZSBsb2dpYyBzY3JvbGxMZWZ0Ci0gICAgICAgIHByZXNlbnRlclJlZi5zZXRTdGF0ZSh7c2Nyb2xs
TGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdH0pOwotICAgIH0pOwogICAgIC8vIFByb3ZpZGUgcGFy
ZW50IGZ1bmN0aW9ucy9ldmVudCB0byBjaGlsZHJlbiB0byB1c2UKIAogICAgIHJldHVybiBgPGRp
diBjbGFzcz0iY29udGVudCIgcmVmPSIke3Njcm9sbFJlZn0iPgotICAgICAgICA8ZGl2IHJlZj0i
JHtjb250YWluZXJSZWZ9Ij4KLSAgICAgICAgICAgIDxkaXYgcmVmPSIke3ByZXNlbnRlclJlZn0i
PiR7CisgICAgICAgIDxkaXYgcmVmPSIke2NvbnRhaW5lclJlZn0iIHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmUiPgorICAgICAgICAgICAgPGRpdiByZWY9IiR7cHJlc2VudGVyUmVmfSIgc3R5bGU9
InBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgbGVmdDog
MCI+JHsKICAgICAgICAgICAgICAgICBMaXN0UHJvdmlkZXIoKHVwZGF0ZUNoaWxkcmVuRnVuY3Rp
b25zKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChleHBvcnRlcikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZXhwb3J0ZXIoKGNoaWxkcmVuKSA9PiB7CkBAIC0xMjcsMTEgKzEyMSwx
NSBAQCBmdW5jdGlvbiBYU2Nyb2xsYWJsZUNhbnZhc1Byb3ZpZGVyKGV4cG9ydGVyLCAuLi5jaGls
ZHJlbkZ1bmN0aW9ucykgewogZnVuY3Rpb24gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyRmFjdG9yeShw
YWRkaW5nLCBoZWlnaHQpIHsKICAgICBsZXQgY2FjaGVkU2Nyb2xsTGVmdCA9IDA7CiAgICAgbGV0
IG9mZnNjcmVlbkNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworICAg
IC8vIERvdWJsZSBidWZmZXJpbmcKKyAgICBjb25zdCBvZmZzY3JlZW5DYW52YXNCdWZmZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24g
d2lsbCBjYWxsIHJlZHJhd0NhY2hlIHRvIHJlbmRlciBhIG9mZnNjcmVlbiBjYWNoZQogICAgIC8v
IGFuZCBjb3B5IHRoZSB2aWV3cG9ydCBhcmVhIGZyb20gb2YgaXQKICAgICAvLyBJdCB3aWxsIHRy
aWdnZXIgcmVkcmF3Q2FjaGUgd2hlbiBjYWNoZSBkb24ndCBoYXZlIGVub3VnaCBzcGFjZQogICAg
IHJldHVybiAocmVkcmF3Q2FjaGUsIGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVk
cmF3Q2FjaGUgPSBmYWxzZSkgPT4geworICAgICAgICAvLyBDaGVjayBpZiB0aGUgY2FudmFzIGRp
c3BsYXkgb24gdGhlIHNjcmVlbiBvciBub3QsCisgICAgICAgIC8vIFRoaXMgd2lsbCBzYXZlIHJl
bmRlciB0aW1lCiAgICAgICAgIGNvbnN0IHdpZHRoID0gdHlwZW9mIHN0YXRlRGlmZi53aWR0aCA9
PT0gJ251bWJlcicgPyBzdGF0ZURpZmYud2lkdGggOiBzdGF0ZS53aWR0aDsKICAgICAgICAgaWYg
KHdpZHRoIDw9IDApCiAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIHJlbmRlcgpAQCAtMTU1LDcg
KzE1Myw3IEBAIGZ1bmN0aW9uIG9mZnNjcmVlbkNhY2hlZFJlbmRlckZhY3RvcnkocGFkZGluZywg
aGVpZ2h0KSB7CiAKICAgICAgICAgaWYgKG5lZWRUb1JlZHJhd0NhY2hlKSB7CiAgICAgICAgICAg
ICAvLyBXZSBkcmF3IGV2ZXJ5dGhpbmcgb24gY2FjaGUKLSAgICAgICAgICAgIHJlZHJhd0NhY2hl
KG9mZnNjcmVlbkNhbnZhcywgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0ZSwgKCkgPT4geworICAg
ICAgICAgICAgIHJlZHJhd0NhY2hlKG9mZnNjcmVlbkNhbnZhcywgZWxlbWVudCwgc3RhdGVEaWZm
LCBzdGF0ZSwgKCkgPT4gewogICAgICAgICAgICAgICAgIGNhY2hlZFNjcm9sbExlZnQgPSBzY3Jv
bGxMZWZ0IDwgcGFkZGluZyA/IHNjcm9sbExlZnQgOiBzY3JvbGxMZWZ0IC0gcGFkZGluZzsKICAg
ICAgICAgICAgICAgICBjYWNoZVBvc0xlZnQgPSBzY3JvbGxMZWZ0IC0gY2FjaGVkU2Nyb2xsTGVm
dDsKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVQb3NMZWZ0IDwgMCkKQEAgLTMzMSw1MCArMzI5
LDc0IEBAIFRpbWVsaW5lLkNhbnZhc1Nlcmllc0NvbXBvbmVudCA9IChkb3RzLCBzY2FsZXMsIG9w
dGlvbiA9IHt9KSA9PiB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgY29uc3QgY2FudmFzUmVm
ID0gUkVGLmNyZWF0ZVJlZih7Ci0gICAgICAgIHN0YXRlOiB7Ci0gICAgICAgICAgICBkb3RzOiBp
bml0RG90cywKLSAgICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKLSAgICAgICAgICAgIHNj
cm9sbExlZnQ6IDAsCi0gICAgICAgICAgICB3aWR0aDogMCwKLSAgICAgICAgfSwKLSAgICAgICAg
b25FbGVtZW50TW91bnQ6IChlbGVtZW50KSA9PiB7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0hl
aWdodFdpdGhEcHIoZWxlbWVudCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIHNldHVwQ2FudmFzQ29u
dGV4dFNjYWxlKGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKG9uRG90Q2xpY2spIHsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwg
Y2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoZG90cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvbkRvdENsaWNrKGRv
dHNbMF0sIGUpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgIHJldHVy
biBMaXN0UHJvdmlkZXJSZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVy
U2Nyb2xsLCBvblJlc2l6ZSkgPT4geworICAgICAgICBjb25zdCBvblNjcm9sbEFjdGlvbiA9IChl
KSA9PiB7CisgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3RhdGUoe3Njcm9sbExlZnQ6IGUudGFy
Z2V0LnNjcm9sbExlZnQgLyBnZXREZXZpY2VQaXhlbFJhdGlvKCl9KTsKKyAgICAgICAgfTsKKyAg
ICAgICAgY29uc3Qgb25SZXNpemVBY3Rpb24gPSAod2lkdGgpID0+IHsKKyAgICAgICAgICAgIGNh
bnZhc1JlZi5zZXRTdGF0ZSh7d2lkdGg6IHdpZHRofSk7CisgICAgICAgIH07CiAKLSAgICAgICAg
ICAgIGlmIChvbkRvdENsaWNrIHx8IG9uRG90SG92ZXIpIHsKLSAgICAgICAgICAgICAgICBlbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGxldCBkb3RzID0gZ2V0TW91c2VFdmVudFRpcmdnZXJEb3RzKGUsIGNhbnZhc1JlZi5z
dGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMu
bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25Eb3RIb3ZlcikKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvbkRvdEhvdmVyKGRvdHNbMF0sIGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7Ci0gICAgICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHls
ZS5jdXJzb3IgPSAiZGVmYXVsdCI7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYs
IHN0YXRlKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZWxlbWVudC5nZXRDb250
ZXh0KCIyZCIpOwotICAgICAgICAgICAgbGV0IGZvcmNlUmVkcmF3Q2FjaGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzIHx8IHN0YXRlRGlmZi5kb3RzIHx8IHR5cGVv
ZiBzdGF0ZURpZmYuc2Nyb2xsTGVmdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXRlRGlmZi53
aWR0aCA9PT0gJ251bWJlcicpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkb3Rz
Lmxlbmd0aCA8PSBzY2FsZXMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZm
LnNjYWxlcyB8fCBzdGF0ZURpZmYuZG90cykgewotICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgY2FudmFzUmVmID0gUkVGLmNyZWF0ZVJl
Zih7CisgICAgICAgICAgICBzdGF0ZTogeworICAgICAgICAgICAgICAgIGRvdHM6IGluaXREb3Rz
LAorICAgICAgICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKKyAgICAgICAgICAgICAgICBz
Y3JvbGxMZWZ0OiAwLAorICAgICAgICAgICAgICAgIHdpZHRoOiAwLAorICAgICAgICAgICAgICAg
IG9uU2NyZWVuOiB0cnVlLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9uRWxlbWVudE1v
dW50OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzSGVpZ2h0V2l0
aERwcihlbGVtZW50LCBoZWlnaHQpOworICAgICAgICAgICAgICAgIHNldHVwQ2FudmFzQ29udGV4
dFNjYWxlKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmIChvbkRvdENsaWNrKSB7CisgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4g
eworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dl
ckRvdHMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVsZW1lbnQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9uRG90Q2xpY2soZG90c1swXSwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChvbkRvdENsaWNrIHx8IG9uRG90
SG92ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdt
b3VzZW1vdmUnLCAoZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvdHMgPSBn
ZXRNb3VzZUV2ZW50VGlyZ2dlckRvdHMoZSwgY2FudmFzUmVmLnN0YXRlLnNjcm9sbExlZnQsIGVs
ZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvdHMubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uRG90SG92ZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9uRG90SG92ZXIoZG90c1swXSwgZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50
LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3JlYXRlSW5zZXJ0aW9uT2JzZXJ2ZXJz
KGVsZW1lbnQsIChlbnRyaWVzKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhc1JlZi5z
ZXRTdGF0ZSh7b25TY3JlZW46IGVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmd9KTsKKyAgICAgICAg
ICAgICAgICB9LCAwLCAwLjAxLCAwLjAxKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBv
bkVsZW1lbnRVbm1vdW50OiAoZWxlbWVudCkgPT4geworICAgICAgICAgICAgICAgIG9uQ29udGFp
bmVyU2Nyb2xsLnN0b3BBY3Rpb24ob25TY3JvbGxBY3Rpb24pOworICAgICAgICAgICAgICAgIG9u
UmVzaXplLnN0b3BBY3Rpb24ob25SZXNpemVBY3Rpb24pOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlKSA9PiB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IGVsZW1lbnQuZ2V0Q29udGV4dCgiMmQiKTsK
KyAgICAgICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICghc3RhdGUub25TY3JlZW4gJiYgIXN0YXRlRGlmZi5vblNjcmVlbikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKHN0YXRlRGlmZi5z
Y2FsZXMgfHwgc3RhdGVEaWZmLmRvdHMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09
PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJyB8fCBzdGF0
ZURpZmYub25TY3JlZW4pIHsKKworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVEaWZmLnNj
YWxlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVEaWZmLnNjYWxlcyA9IHN0YXRl
RGlmZi5zY2FsZXMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVJl
ZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdGVEaWZmLmRvdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRl
RGlmZi5kb3RzID0gc3RhdGVEaWZmLmRvdHMubWFwKHggPT4geCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JjZVJlZHJhd0NhY2hlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gb2Zmc2NyZWVu
Q2FjaGVkUmVuZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRlLCBmb3Jj
ZVJlZHJhd0NhY2hlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVl
c3RBbmltYXRpb25GcmFtZSgoKSA9PiBvZmZzY3JlZW5DYWNoZWRSZW5kZXIocmVkcmF3Q2FjaGUs
IGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUsIGZvcmNlUmVkcmF3Q2FjaGUpKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0pOworICAgICAgICB9KTsKIAotICAgIHJldHVybiBMaXN0
UHJvdmlkZXJSZWNlaXZlcigodXBkYXRlQ29udGFpbmVyV2lkdGgsIG9uQ29udGFpbmVyU2Nyb2xs
LCBvblJlc2l6ZSkgPT4gewogICAgICAgICB1cGRhdGVDb250YWluZXJXaWR0aChzY2FsZXMubGVu
Z3RoICogZG90V2lkdGggKiBnZXREZXZpY2VQaXhlbFJhdGlvKCkpOwogICAgICAgICBjb25zdCB1
cGRhdGVEYXRhID0gKGRvdHMsIHNjYWxlcykgPT4gewogICAgICAgICAgICAgdXBkYXRlQ29udGFp
bmVyV2lkdGgoc2NhbGVzLmxlbmd0aCAqIGRvdFdpZHRoICogZ2V0RGV2aWNlUGl4ZWxSYXRpbygp
KTsKQEAgLTM4NSwxMiArNDA3LDggQEAgVGltZWxpbmUuQ2FudmFzU2VyaWVzQ29tcG9uZW50ID0g
KGRvdHMsIHNjYWxlcywgb3B0aW9uID0ge30pID0+IHsKICAgICAgICAgfTsKICAgICAgICAgaWYg
KHR5cGVvZiBvcHRpb24uZXhwb3J0ZXIgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICBvcHRp
b24uZXhwb3J0ZXIodXBkYXRlRGF0YSk7Ci0gICAgICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlv
bigoZSkgPT4gewotICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBl
LnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNlUGl4ZWxSYXRpbygpfSk7Ci0gICAgICAgIH0p
OwotICAgICAgICBvblJlc2l6ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICBjYW52
YXNSZWYuc2V0U3RhdGUoe3dpZHRoOiB3aWR0aH0pOwotICAgICAgICB9KTsKKyAgICAgICAgb25D
b250YWluZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgb25SZXNpemUu
YWN0aW9uKG9uUmVzaXplQWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzZXJp
ZXMiPgogICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAgICAgIDwv
ZGl2PmA7CkBAIC02ODMsNjYgKzcwMSw3OCBAQCBUaW1lbGluZS5DYW52YXNYQXhpc0NvbXBvbmVu
dCA9IChzY2FsZXMsIG9wdGlvbiA9IHt9KSA9PiB7CiAgICAgfTsKICAgICBjb25zdCBpbml0U2Nh
bGVHcm91cE1hcExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3QoaW5pdFNjYWxlcyk7CiAK
LSAgICBjb25zdCBjYW52YXNSZWYgPSBSRUYuY3JlYXRlUmVmKHsKLSAgICAgICAgc3RhdGU6IHsK
LSAgICAgICAgICAgIHNjcm9sbExlZnQ6IDAsCi0gICAgICAgICAgICB3aWR0aDogMCwKLSAgICAg
ICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKLSAgICAgICAgICAgIHNjYWxlc01hcExpbmtMaXN0
OiBpbml0U2NhbGVHcm91cE1hcExpbmtMaXN0Ci0gICAgICAgIH0sCi0gICAgICAgIG9uRWxlbWVu
dE1vdW50OiAoZWxlbWVudCkgPT4gewotICAgICAgICAgICAgc2V0dXBDYW52YXNIZWlnaHRXaXRo
RHByKGVsZW1lbnQsIGNhbnZhc0hlaWdodCk7Ci0gICAgICAgICAgICBzZXR1cENhbnZhc0NvbnRl
eHRTY2FsZShlbGVtZW50KTsKLSAgICAgICAgICAgIGlmIChvblNjYWxlQ2xpY2spIHsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlcyA9IGdldE1vdXNlRXZlbnRUaXJnZ2VyU2NhbGVz
KGUsIGNhbnZhc1JlZi5zdGF0ZS5zY3JvbGxMZWZ0LCBlbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNjYWxlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBvblNjYWxl
Q2xpY2soc2NhbGVzWzBdLCBlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKG9uU2NhbGVDbGljayB8fCBvblNjYWxlSG92ZXIpIHsKLSAgICAg
ICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIChlKSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNj
YWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVmdCwgZWxlbWVudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzY2FsZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAob25TY2FsZUhvdmVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3Zl
cihzY2FsZXNbMF0sIGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5j
dXJzb3IgPSAicG9pbnRlciI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9ICJkZWZhdWx0IjsKKyAgICBy
ZXR1cm4geworICAgICAgICBzZXJpZXM6IExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250
YWluZXJXaWR0aCwgb25Db250YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CisgICAgICAgICAg
ICBjb25zdCBvblNjcm9sbEFjdGlvbiA9IChlKSA9PiB7CisgICAgICAgICAgICAgICAgY2FudmFz
UmVmLnNldFN0YXRlKHtzY3JvbGxMZWZ0OiBlLnRhcmdldC5zY3JvbGxMZWZ0IC8gZ2V0RGV2aWNl
UGl4ZWxSYXRpbygpfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY29uc3Qgb25SZXNp
emVBY3Rpb24gPSAod2lkdGgpID0+IHsKKyAgICAgICAgICAgICAgICBjYW52YXNSZWYuc2V0U3Rh
dGUoe3dpZHRoOiB3aWR0aH0pOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY29uc3Qg
Y2FudmFzUmVmID0gUkVGLmNyZWF0ZVJlZih7CisgICAgICAgICAgICAgICAgc3RhdGU6IHsKKyAg
ICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogMCwKKyAgICAgICAgICAgICAgICAgICAgd2lk
dGg6IDAsCisgICAgICAgICAgICAgICAgICAgIHNjYWxlczogaW5pdFNjYWxlcywKKyAgICAgICAg
ICAgICAgICAgICAgc2NhbGVzTWFwTGlua0xpc3Q6IGluaXRTY2FsZUdyb3VwTWFwTGlua0xpc3QK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIG9uRWxlbWVudE1vdW50OiAoZWxl
bWVudCkgPT4geworICAgICAgICAgICAgICAgICAgICBzZXR1cENhbnZhc0hlaWdodFdpdGhEcHIo
ZWxlbWVudCwgY2FudmFzSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0dXBDYW52YXND
b250ZXh0U2NhbGUoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvblNjYWxlQ2xp
Y2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
Y2xpY2snLCAoZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZXMg
PSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xsTGVm
dCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVDbGljayhzY2FsZXNb
MF0sIGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAob25TY2FsZUNsaWNrIHx8IG9uU2NhbGVIb3Zl
cikgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdt
b3VzZW1vdmUnLCAoZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY2Fs
ZXMgPSBnZXRNb3VzZUV2ZW50VGlyZ2dlclNjYWxlcyhlLCBjYW52YXNSZWYuc3RhdGUuc2Nyb2xs
TGVmdCwgZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlcy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9uU2NhbGVIb3Zl
cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2NhbGVIb3ZlcihzY2Fs
ZXNbMF0sIGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxl
LmN1cnNvciA9ICJwb2ludGVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmN1cnNvciA9
ICJkZWZhdWx0IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgb25FbGVtZW50VW5tb3VudDogKGVsZW1lbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgb25Db250YWluZXJTY3JvbGwuc3RvcEFjdGlvbihvblNjcm9sbEFjdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIG9uUmVzaXplLnN0b3BBY3Rpb24ob25SZXNpemVBY3Rp
b24pOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgb25TdGF0ZVVwZGF0ZTog
KGVsZW1lbnQsIHN0YXRlRGlmZiwgc3RhdGUpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IGZvcmNlUmVkcmF3Q2FjaGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRl
RGlmZi5zY2FsZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyB8
fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yY2VSZWRyYXdDYWNoZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNjcmVlbkNhY2hlZFJlbmRlcihyZWRyYXdDYWNoZSwgZWxlbWVudCwgc3RhdGVEaWZmLCBzdGF0
ZSwgZm9yY2VSZWRyYXdDYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0sCi0gICAgICAgIG9uU3RhdGVVcGRhdGU6IChlbGVtZW50LCBzdGF0ZURpZmYsIHN0YXRl
KSA9PiB7Ci0gICAgICAgICAgICBsZXQgZm9yY2VSZWRyYXdDYWNoZSA9IGZhbHNlOwotICAgICAg
ICAgICAgaWYgKHN0YXRlRGlmZi5zY2FsZXMgfHwgdHlwZW9mIHN0YXRlRGlmZi5zY3JvbGxMZWZ0
ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygc3RhdGVEaWZmLndpZHRoID09PSAnbnVtYmVyJykgewot
ICAgICAgICAgICAgICAgIGlmIChzdGF0ZURpZmYuc2NhbGVzKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlLnNjYWxlc01hcExpbmtMaXN0ID0gZ2V0U2NhbGVzTWFwTGlua0xpc3Qoc3RhdGVE
aWZmLnNjYWxlcyk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcmNlUmVkcmF3Q2FjaGUgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKCkgPT4gb2Zmc2NyZWVuQ2FjaGVkUmVuZGVyKHJlZHJhd0NhY2hlLCBlbGVtZW50LCBzdGF0
ZURpZmYsIHN0YXRlLCBmb3JjZVJlZHJhd0NhY2hlKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9KTsKKyAgICAgICAgICAgIH0pOworCiAKLSAgICByZXR1cm4gewotICAgICAgICBz
ZXJpZXM6IExpc3RQcm92aWRlclJlY2VpdmVyKCh1cGRhdGVDb250YWluZXJXaWR0aCwgb25Db250
YWluZXJTY3JvbGwsIG9uUmVzaXplKSA9PiB7CiAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJX
aWR0aChzY2FsZXMubGVuZ3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0aW8oKSk7
CiAgICAgICAgICAgICBjb25zdCB1cGRhdGVEYXRhID0gKHNjYWxlcykgPT4gewotICAgICAgICAg
ICAgICAgIHVwZGF0ZUNvbnRhaW5lcldpZHRoKHNjYWxlcy5sZW5ndGggKiBzY2FsZVdpZHRoICog
Z2V0RGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAgICAgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIG1v
ZGlmaWNhdGlvbiB3aGlsZSByZW5kZXJpbmcKKyAgICAgICAgICAgICAgICBjb25zdCBzY2FsZXND
b3B5ID0gc2NhbGVzLm1hcCh4ID0+IHgpOworICAgICAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5l
cldpZHRoKHNjYWxlc0NvcHkubGVuZ3RoICogc2NhbGVXaWR0aCAqIGdldERldmljZVBpeGVsUmF0
aW8oKSk7CiAgICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRlKHsKLSAgICAgICAgICAg
ICAgICAgICAgc2NhbGVzOiBzY2FsZXMKKyAgICAgICAgICAgICAgICAgICAgc2NhbGVzOiBzY2Fs
ZXNDb3B5LAorICAgICAgICAgICAgICAgICAgICBzY2FsZXNNYXBMaW5rTGlzdDogZ2V0U2NhbGVz
TWFwTGlua0xpc3Qoc2NhbGVzQ29weSkKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uLmV4cG9ydGVyID09PSAiZnVuY3Rpb24i
KQogICAgICAgICAgICAgICAgIG9wdGlvbi5leHBvcnRlcih1cGRhdGVEYXRhKTsKLSAgICAgICAg
ICAgIG9uQ29udGFpbmVyU2Nyb2xsLmFjdGlvbigoZSkgPT4gewotICAgICAgICAgICAgICAgIGNh
bnZhc1JlZi5zZXRTdGF0ZSh7c2Nyb2xsTGVmdDogZS50YXJnZXQuc2Nyb2xsTGVmdCAvIGdldERl
dmljZVBpeGVsUmF0aW8oKX0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBvblJlc2l6
ZS5hY3Rpb24oKHdpZHRoKSA9PiB7Ci0gICAgICAgICAgICAgICAgY2FudmFzUmVmLnNldFN0YXRl
KHt3aWR0aDogd2lkdGh9KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgb25Db250YWlu
ZXJTY3JvbGwuYWN0aW9uKG9uU2Nyb2xsQWN0aW9uKTsKKyAgICAgICAgICAgIG9uUmVzaXplLmFj
dGlvbihvblJlc2l6ZUFjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9Ingt
YXhpcyI+CiAgICAgICAgICAgICAgICAgPGNhbnZhcyByZWY9IiR7Y2FudmFzUmVmfSI+CiAgICAg
ICAgICAgICA8L2Rpdj5gOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>