<?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>72118</bug_id>
          
          <creation_ts>2011-11-11 05:28:50 -0800</creation_ts>
          <short_desc>Web Inspector: make search in DOM panel scale.</short_desc>
          <delta_ts>2011-11-11 07:22:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500704</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 05:28:50 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500711</commentid>
    <comment_count>1</comment_count>
      <attachid>114685</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 05:41:11 -0800</bug_when>
    <thetext>Created attachment 114685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500712</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 05:47:27 -0800</bug_when>
    <thetext>Attachment 114685 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDOMAgent.h:130:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDOMAgent.cpp:987:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500739</commentid>
    <comment_count>3</comment_count>
      <attachid>114694</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 06:49:32 -0800</bug_when>
    <thetext>Created attachment 114694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500741</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 06:52:43 -0800</bug_when>
    <thetext>Attachment 114694 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDOMAgent.h:130:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDOMAgent.cpp:990:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500745</commentid>
    <comment_count>5</comment_count>
      <attachid>114694</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 07:01:17 -0800</bug_when>
    <thetext>Comment on attachment 114694
Patch

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

&gt; Source/WebCore/inspector/front-end/ElementsPanel.js:366
&gt; +        var nextCallback = jumpToNextOnEmpty ? this.jumpToNextSearchResult.bind(this) : this.jumpToPreviousSearchResult.bind(this);

No need to bind these methods just to call them below.

&gt; Source/WebCore/inspector/front-end/ElementsPanel.js:370
&gt; +            nextCallback();

if (jumpToNextOnEmpty)
   this.jumpToNextSearchResult();
else
   this.jumpToPreviousSearchResult();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500750</commentid>
    <comment_count>6</comment_count>
      <attachid>114694</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-11 07:18:17 -0800</bug_when>
    <thetext>Comment on attachment 114694
Patch

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:982
&gt; +    resultsIt-&gt;second.clear();

Remove this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500752</commentid>
    <comment_count>7</comment_count>
      <attachid>114695</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 07:20:03 -0800</bug_when>
    <thetext>Created attachment 114695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500753</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 07:21:32 -0800</bug_when>
    <thetext>Attachment 114695 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/insp...&quot; exit_code: 1

Source/WebCore/inspector/InspectorDOMAgent.h:130:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/inspector/InspectorDOMAgent.cpp:989:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500754</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-11-11 07:22:52 -0800</bug_when>
    <thetext>Committed r99965: &lt;http://trac.webkit.org/changeset/99965&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114685</attachid>
            <date>2011-11-11 05:41:11 -0800</date>
            <delta_ts>2011-11-11 06:49:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72118-20111111174109.patch</filename>
            <type>text/plain</type>
            <size>39856</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmJiMzRhZjM4NmFhNTA4
NzRhZjg0Y2YxZTE5OWE4MDk0MjA0ZDlkLi44Mjc5OWFhMjU3NTM4YmVkYjI2Y2NlNThjZTUwYzhh
NmMxMzg0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkgQEAKIDIwMTEtMTEtMTEgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1ha2Ugc2VhcmNoIGluIERPTSBwYW5lbCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5wZXJmb3JtU2VhcmNo
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUucGVy
Zm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnNl
YXJjaFJlc3VsdC5teWNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuc2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuY2FuY2VsU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRj
aGVyLnByb3RvdHlwZS5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gucmVzdWx0Q291bnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNl
YXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVt
cFRvTmV4dFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVz
dWx0Lik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX2hp
Z2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9oaWRlU2VhcmNoSGlnaGxpZ2h0cyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9oaWdobGlnaHROdGhNYXRjaGVkUmVzb3VyY2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9zaG93U2VhcmNoUmVzdWx0
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUuX3Nob3dTZWFyY2hSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucGVyZm9ybVNlYXJjaC5maW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5qdW1wVG9QcmV2aW91
c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250
cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90
eXBlLl91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnRBbmRDdXJyZW50TWF0Y2hJbmRleCk6CisKKzIw
MTEtMTEtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAg
IE5vdCByZXZpZXdlZDogcm9sbCBvdXQgY2hhbmdlcyB0byBJbnNwZWN0b3JET01BZ2VudCB0aGF0
IHNxdWVlemVkIGludG8gOTk5MzMuCiAKICAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDE5
N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLjhkYWU2ZTc3NTllNTVkYmEz
ZTVhYmExODVhMDJjZWVmMTgzMjBhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KQEAgLTEyMDgsMTUgKzEyMDgsMzQgQEAKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJwZXJmb3JtU2VhcmNoIiwKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQbGFpbiB0ZXh0IG9yIHF1ZXJ5IHNlbGVjdG9yIG9y
IFhQYXRoIHNlYXJjaCBxdWVyeS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cnVuU3luY2hyb25vdXNseSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiV2hlbiBzZXQgdG8gdHJ1ZSwgcGVyZm9ybWluZyBzZWFyY2ggc3luY2hy
b25vdXNseSAoY2FuIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24pLiIgfQorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlBsYWluIHRleHQgb3IgcXVlcnkgc2VsZWN0b3Igb3IgWFBhdGggc2VhcmNoIHF1ZXJ5LiIgfQog
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YXJ0
cyBhc3luY2hyb25vdXMgc2VhcmNoIGZvciBhIGdpdmVuIHN0cmluZyBpbiB0aGUgRE9NIHRyZWUu
IFVzZSA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+IHRvIHN0b3AgZ2l2ZW4gYXN5bmNocm9ub3Vz
IHNlYXJjaCB0YXNrLiIsCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgZm9yIGEgZ2l2
ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2Nv
ZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+
IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZ2V0U2VhcmNoUmVzdWx0cyIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyb21JbmRleCIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnQgaW5kZXggb2YgdGhlIHNlYXJjaCByZXN1bHQg
dG8gYmUgcmV0dXJuZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvSW5k
ZXgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkVuZCBpbmRleCBvZiB0aGUg
c2VhcmNoIHJlc3VsdCB0byBiZSByZXR1cm5lZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiTm9kZUlkIiB9
LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5vZGVzLiIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMg
c2VhcmNoIHJlc3VsdHMgZnJvbSBnaXZlbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+IHRvIGdpdmVu
IDxjb2RlPnRvSW5kZXg8L2NvZGU+IGZyb20gdGhlIHNhcmNoIHdpdGggdGhlIGdpdmVuIGlkZW50
aWZpZXIuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5jZWxTZWFyY2giLAot
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5jZWxzIGFzeW5jaHJvbm91cyBzZWFy
Y2ggc3RhcnRlZCB3aXRoIDxjb2RlPnBlcmZvcm1TZWFyY2g8L2NvZGU+LiIsCisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiZGlzY2FyZFNlYXJjaFJlc3VsdHMiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlYXJjaElkIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzZWFyY2ggc2Vzc2lvbiBp
ZGVudGlmaWVyLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2NhcmRzIHNlYXJjaCByZXN1bHRzIGZyb20gdGhlIHNlc3Npb24gd2l0aCB0
aGUgZ2l2ZW4gaWQuIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2NvZGU+IHNob3VsZCBubyBsb25n
ZXIgYmUgY2FsbGVkIGZvciB0aGF0IHNlYXJjaC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTM4NywxNCArMTQwNiw2
IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9k
ZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3Zl
ZC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJNaXJyb3JzIDxjb2RlPkRPTU5vZGVSZW1vdmVkPC9jb2RlPiBldmVudC4iCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNlYXJjaFJlc3Vs
dHMiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiTm9kZUlkIiB9LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5v
ZGVzLiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlB1c2hlcyBzZWFyY2ggcmVzdWx0cyBpbml0aWF0ZWQgdXNpbmcgPGNvZGU+cGVyZm9ybVNl
YXJjaDwvY29kZT4gdG8gdGhlIGNsaWVudC4iLAotICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMDI1MTFhM2QxNjYwNmUwZDY3
YzI5ZDk0YmQxOWRhYzFkZWM2YzhkMC4uMjRhMDgzZDVjZGU2M2EyY2RkY2Q0YmY2OTNmNzA4Zjg5
NjVlMWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKQEAgLTE0Niw3ICsxNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICAgICByZXN1bHRDb2xsZWN0b3IuYWRkKG5vZGVzLT5pdGVtKGkpKTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAg
ICAgU3RyaW5nIG1fcXVlcnk7CiB9OwogCkBAIC0yMzQsNyArMjM1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICBSZWZQdHI8WFBhdGhSZXN1bHQ+IHJlc3VsdCA9IG1fZG9jdW1lbnQtPmV2YWx1YXRlKG1fcXVl
cnksIG1fZG9jdW1lbnQuZ2V0KCksIDAsIFhQYXRoUmVzdWx0OjpPUkRFUkVEX05PREVfU05BUFNI
T1RfVFlQRSwgMCwgZWMpOworICAgICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IHJlc3VsdCA9IG1f
ZG9jdW1lbnQtPmV2YWx1YXRlKG1fcXVlcnksIG1fZG9jdW1lbnQsIDAsIFhQYXRoUmVzdWx0OjpP
UkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgMCwgZWMpOwogICAgICAgICBpZiAoZWMgfHwgIXJl
c3VsdCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk1LDcgKzI5Niw2IEBAIEluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJCiAgICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX2RvbUxpc3RlbmVy
KDApCiAgICAgLCBtX2xhc3ROb2RlSWQoMSkKLSAgICAsIG1fbWF0Y2hKb2JzVGltZXIodGhpcywg
Jkluc3BlY3RvckRPTUFnZW50Ojpvbk1hdGNoSm9ic1RpbWVyKQogICAgICwgbV9zZWFyY2hpbmdG
b3JOb2RlKGZhbHNlKQogewogfQpAQCAtMzU5LDcgKzM1OSw3IEBAIE5vZGUqIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRlZE5vZGUoKSBjb25zdAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVzZXQoKQogewogICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgIGNhbmNlbFNlYXJjaCgmZXJy
b3IpOworICAgIG1fc2VhcmNoUmVzdWx0cy5jbGVhcigpOwogICAgIGRpc2NhcmRCaW5kaW5ncygp
OwogICAgIGlmIChtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQogICAgICAgICBtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrLT5yZXNldCgpOwpAQCAtODk2LDcgKzg5Niw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIFJlZlB0CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3Jt
U2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBydW5TeW5jaHJvbm91c2x5KQordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRD
b3VudCkKIHsKICAgICAvLyBGSVhNRTogRmV3IHRoaW5ncyBhcmUgbWlzc2luZyBoZXJlOgogICAg
IC8vIDEpIFNlYXJjaCB3b3JrcyB3aXRoIG5vZGUgZ3JhbnVsYXJpdHkgLSBudW1iZXIgb2YgbWF0
Y2hlcyB3aXRoaW4gbm9kZSBpcyBub3QgY2FsY3VsYXRlZC4KQEAgLTkyMiwzMSArOTIyLDI5IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhCiAgICAgU3RyaW5nIGVzY2FwZWRUYWdOYW1lUXVlcnkg
PSB0YWdOYW1lUXVlcnk7CiAgICAgZXNjYXBlZFRhZ05hbWVRdWVyeS5yZXBsYWNlKCInIiwgIlxc
JyIpOwogCi0gICAgLy8gQ2xlYXIgcGVuZGluZyBqb2JzLgotICAgIGNhbmNlbFNlYXJjaChlcnJv
cik7Ci0KICAgICAvLyBGaW5kIGFsbCBmcmFtZXMsIGlmcmFtZXMgYW5kIG9iamVjdCBlbGVtZW50
cyB0byBzZWFyY2ggdGhlaXIgZG9jdW1lbnRzLgogICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3Mg
PSBkb2N1bWVudHMoKTsKKyAgICBWZWN0b3I8TWF0Y2hKb2IqPiBtYXRjaEpvYnM7CiAgICAgZm9y
IChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQgPSBkb2NzLmJlZ2luKCk7IGl0ICE9IGRv
Y3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gKml0OwogCiAg
ICAgICAgIGlmICghdGFnTmFtZVF1ZXJ5LmlzRW1wdHkoKSAmJiBzdGFydFRhZ0ZvdW5kICYmIGVu
ZFRhZ0ZvdW5kKSB7Ci0gICAgICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBN
YXRjaEV4YWN0VGFnTmFtZXNKb2IoZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOwotICAgICAgICAg
ICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1l
bnQsIGVzY2FwZWRRdWVyeSkpOworICAgICAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0
Y2hFeGFjdFRhZ05hbWVzSm9iKGRvY3VtZW50LCB0YWdOYW1lUXVlcnkpKTsKKyAgICAgICAgICAg
IG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVk
UXVlcnkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCF0YWdOYW1lUXVlcnkuaXNFbXB0eSgpICYmIHN0YXJ0VGFnRm91bmQpIHsKLSAgICAgICAgICAg
IG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIv
Lypbc3RhcnRzLXdpdGgobmFtZSgpLCAnIiArIGVzY2FwZWRUYWdOYW1lUXVlcnkgKyAiJyldIikp
OwotICAgICAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hQbGFpblRl
eHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOworICAgICAgICAgICAgbWF0Y2hKb2JzLmFw
cGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltzdGFydHMtd2l0aChuYW1lKCks
ICciICsgZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7CisgICAgICAgICAgICBtYXRjaEpv
YnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5KSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghdGFnTmFt
ZVF1ZXJ5LmlzRW1wdHkoKSAmJiBlbmRUYWdGb3VuZCkgewogICAgICAgICAgICAgLy8gRklYTUU6
IHdlIHNob3VsZCBoYXZlIGEgbWF0Y2hFbmRPZlRhZ05hbWVzIHNlYXJjaCBmdW5jdGlvbiBpZiBl
bmRUYWdGb3VuZCBpcyB0cnVlIGJ1dCBub3Qgc3RhcnRUYWdGb3VuZC4KICAgICAgICAgICAgIC8v
IFRoaXMgcmVxdWlyZXMgZW5kcy13aXRoKCkgc3VwcG9ydCBpbiBYUGF0aCwgV2ViS2l0IG9ubHkg
c3VwcG9ydHMgc3RhcnRzLXdpdGgoKSBhbmQgY29udGFpbnMoKS4KLSAgICAgICAgICAgIG1fcGVu
ZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIvLypbY29u
dGFpbnMobmFtZSgpLCAnIiArIGVzY2FwZWRUYWdOYW1lUXVlcnkgKyAiJyldIikpOwotICAgICAg
ICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9j
dW1lbnQsIGVzY2FwZWRRdWVyeSkpOworICAgICAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcg
TWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlucyhuYW1lKCksICciICsgZXNjYXBl
ZFRhZ05hbWVRdWVyeSArICInKV0iKSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5KSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC05NTQsNDIgKzk1Miw1OSBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3Ry
aW5nJiB3aGl0ZXNwYQogICAgICAgICBpZiAobWF0Y2hlc0V2ZXJ5Tm9kZSkgewogICAgICAgICAg
ICAgLy8gVGhlc2UgcXVlcmllcyB3aWxsIG1hdGNoIGV2ZXJ5IG5vZGUuIE1hdGNoaW5nIGV2ZXJ5
dGhpbmcgaXNuJ3QgdXNlZnVsIGFuZCBjYW4gYmUgc2xvdyBmb3IgbGFyZ2UgcGFnZXMsCiAgICAg
ICAgICAgICAvLyBzbyBsaW1pdCB0aGUgc2VhcmNoIGZ1bmN0aW9ucyBsaXN0IHRvIHBsYWluIHRl
eHQgYW5kIGF0dHJpYnV0ZSBtYXRjaGluZyBmb3IgdGhlc2UuCi0gICAgICAgICAgICBtX3BlbmRp
bmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRh
aW5zKEAqLCAnIiArIGVzY2FwZWRRdWVyeSArICInKV0iKSk7Ci0gICAgICAgICAgICBtX3BlbmRp
bmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBl
ZFF1ZXJ5KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9i
KGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKEAqLCAnIiArIGVzY2FwZWRRdWVyeSArICInKV0iKSk7
CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1
bWVudCwgZXNjYXBlZFF1ZXJ5KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RJZEpvYihk
b2N1bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkpOwotICAgICAgICBtX3BlbmRpbmdNYXRj
aEpvYnMuYXBwZW5kKG5ldyBNYXRjaEV4YWN0Q2xhc3NOYW1lc0pvYihkb2N1bWVudCwgd2hpdGVz
cGFjZVRyaW1tZWRRdWVyeSkpOwotICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaEV4YWN0VGFnTmFtZXNKb2IoZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOwotICAgICAg
ICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFF1ZXJ5U2VsZWN0b3JBbGxKb2Io
ZG9jdW1lbnQsICJbIiArIGF0dHJpYnV0ZU5hbWVRdWVyeSArICJdIikpOwotICAgICAgICBtX3Bl
bmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFF1ZXJ5U2VsZWN0b3JBbGxKb2IoZG9jdW1l
bnQsIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpKTsKLSAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2Jz
LmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlucyhAKiwgJyIg
KyBlc2NhcGVkUXVlcnkgKyAiJyldIikpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBN
YXRjaEV4YWN0SWRKb2IoZG9jdW1lbnQsIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpKTsKKyAgICAg
ICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hFeGFjdENsYXNzTmFtZXNKb2IoZG9jdW1lbnQs
IHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpKTsKKyAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcg
TWF0Y2hFeGFjdFRhZ05hbWVzSm9iKGRvY3VtZW50LCB0YWdOYW1lUXVlcnkpKTsKKyAgICAgICAg
bWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hRdWVyeVNlbGVjdG9yQWxsSm9iKGRvY3VtZW50LCAi
WyIgKyBhdHRyaWJ1dGVOYW1lUXVlcnkgKyAiXSIpKTsKKyAgICAgICAgbWF0Y2hKb2JzLmFwcGVu
ZChuZXcgTWF0Y2hRdWVyeVNlbGVjdG9yQWxsSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5KSk7CisgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoWFBhdGhKb2IoZG9j
dW1lbnQsICIvLypbY29udGFpbnMoQCosICciICsgZXNjYXBlZFF1ZXJ5ICsgIicpXSIpKTsKICAg
ICAgICAgaWYgKCF0YWdOYW1lUXVlcnkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wZW5kaW5n
TWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlu
cyhuYW1lKCksICciICsgZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7Ci0gICAgICAgIG1f
cGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBl
c2NhcGVkUXVlcnkpKTsKLSAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0
Y2hYUGF0aEpvYihkb2N1bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkpOworICAgICAgICAg
ICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250
YWlucyhuYW1lKCksICciICsgZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7CisgICAgICAg
IG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVk
UXVlcnkpKTsKKyAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1
bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkpOwogICAgIH0KIAotICAgIGlmIChydW5TeW5j
aHJvbm91c2x5ICYmICpydW5TeW5jaHJvbm91c2x5KSB7Ci0gICAgICAgIC8vIEZvciB0ZXN0cy4K
LSAgICAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IHJlc3VsdENvbGxlY3RvcjsKLSAgICAgICAgZm9y
IChEZXF1ZTxNYXRjaEpvYio+OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ01hdGNoSm9icy5iZWdp
bigpOyBpdCAhPSBtX3BlbmRpbmdNYXRjaEpvYnMuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICAo
Kml0KS0+bWF0Y2gocmVzdWx0Q29sbGVjdG9yKTsKLSAgICAgICAgcmVwb3J0Tm9kZXNBc1NlYXJj
aFJlc3VsdHMocmVzdWx0Q29sbGVjdG9yKTsKLSAgICAgICAgY2FuY2VsU2VhcmNoKGVycm9yKTsK
KyAgICBMaXN0SGFzaFNldDxOb2RlKj4gcmVzdWx0Q29sbGVjdG9yOworICAgIGZvciAoVmVjdG9y
PE1hdGNoSm9iKj46Oml0ZXJhdG9yIGl0ID0gbWF0Y2hKb2JzLmJlZ2luKCk7IGl0ICE9IG1hdGNo
Sm9icy5lbmQoKTsgKytpdCkKKyAgICAgICAgKCppdCktPm1hdGNoKHJlc3VsdENvbGxlY3Rvcik7
CisgICAgZGVsZXRlQWxsVmFsdWVzKG1hdGNoSm9icyk7CisKKyAgICAqc2VhcmNoSWQgPSBJZGVu
dGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsKKyAgICBTZWFyY2hSZXN1bHRzOjpp
dGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMuYWRkKCpzZWFyY2hJZCwgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+KCkpLmZpcnN0OworICAgIHJlc3VsdHNJdC0+c2Vjb25kLmNsZWFyKCk7
CisKKyAgICBmb3IgKExpc3RIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgaXQgPSByZXN1bHRDb2xs
ZWN0b3IuYmVnaW4oKTsgaXQgIT0gcmVzdWx0Q29sbGVjdG9yLmVuZCgpOyArK2l0KQorICAgICAg
ICByZXN1bHRzSXQtPnNlY29uZC5hcHBlbmQoKml0KTsKKworICAgICpyZXN1bHRDb3VudCA9IHJl
c3VsdHNJdC0+c2Vjb25kLnNpemUoKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0
U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2Vh
cmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBub2RlSWRzKQoreworICAgIFNlYXJjaFJlc3VsdHM6Oml0ZXJhdG9yIGl0ID0gbV9zZWFyY2hS
ZXN1bHRzLmZpbmQoc2VhcmNoSWQpOworICAgIGlmIChpdCA9PSBtX3NlYXJjaFJlc3VsdHMuZW5k
KCkpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHNlYXJjaCBzZXNzaW9uIHdpdGggZ2l2
ZW4gaWQgZm91bmQiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHNpemUgPSBp
dC0+c2Vjb25kLnNpemUoKTsKKyAgICBpZiAoZnJvbUluZGV4IDwgMCB8fCB0b0luZGV4ID4gc2l6
ZSB8fCBmcm9tSW5kZXggPj0gdG9JbmRleCkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW52
YWxpZCBzZWFyY2ggcmVzdWx0IHJhbmdlIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X21hdGNoSm9ic1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKworICAgIGZvciAoaW50IGkgPSBmcm9t
SW5kZXg7IGkgPCB0b0luZGV4OyArK2kpCisgICAgICAgICgqbm9kZUlkcyktPnB1c2hOdW1iZXIo
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCgoaXQtPnNlY29uZClbaV0uZ2V0KCkpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6Y2FuY2VsU2VhcmNoKEVycm9yU3RyaW5nKikKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBzZWFyY2hJZCkKIHsKLSAgICBpZiAobV9tYXRjaEpvYnNUaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICBtX21hdGNoSm9ic1RpbWVyLnN0b3AoKTsKLSAgICBkZWxldGVBbGxWYWx1ZXMo
bV9wZW5kaW5nTWF0Y2hKb2JzKTsKLSAgICBtX3BlbmRpbmdNYXRjaEpvYnMuY2xlYXIoKTsKLSAg
ICBtX3NlYXJjaFJlc3VsdHMuY2xlYXIoKTsKKyAgICBtX3NlYXJjaFJlc3VsdHMucmVtb3ZlKHNl
YXJjaElkKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlTW91c2VQcmVzcygp
CkBAIC0xNTc1LDM2ICsxNTkwLDYgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6b25NYXRjaEpvYnNUaW1lcihUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4q
KQotewotICAgIGlmICghbV9wZW5kaW5nTWF0Y2hKb2JzLnNpemUoKSkgewotICAgICAgICBFcnJv
clN0cmluZyBlcnJvcjsKLSAgICAgICAgY2FuY2VsU2VhcmNoKCZlcnJvcik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBMaXN0SGFzaFNldDxOb2RlKj4gcmVzdWx0Q29sbGVjdG9yOwot
ICAgIE1hdGNoSm9iKiBqb2IgPSBtX3BlbmRpbmdNYXRjaEpvYnMudGFrZUZpcnN0KCk7Ci0gICAg
am9iLT5tYXRjaChyZXN1bHRDb2xsZWN0b3IpOwotICAgIGRlbGV0ZSBqb2I7Ci0KLSAgICByZXBv
cnROb2Rlc0FzU2VhcmNoUmVzdWx0cyhyZXN1bHRDb2xsZWN0b3IpOwotCi0gICAgbV9tYXRjaEpv
YnNUaW1lci5zdGFydE9uZVNob3QoMC4wMjUpOwotfQotCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpyZXBvcnROb2Rlc0FzU2VhcmNoUmVzdWx0cyhMaXN0SGFzaFNldDxOb2RlKj4mIHJlc3VsdENv
bGxlY3RvcikKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG5vZGVJZHMgPSBJbnNwZWN0
b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9y
IGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rvci5lbmQo
KTsgKytpdCkgewotICAgICAgICBpZiAobV9zZWFyY2hSZXN1bHRzLmNvbnRhaW5zKCppdCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9zZWFyY2hSZXN1bHRzLmFkZCgqaXQpOwot
ICAgICAgICBub2RlSWRzLT5wdXNoTnVtYmVyKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKml0KSk7
Ci0gICAgfQotICAgIG1fZnJvbnRlbmQtPnNlYXJjaFJlc3VsdHMobm9kZUlkcy5yZWxlYXNlKCkp
OwotfQotCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpjb3B5Tm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAyOTg1MTMyOWJl
OGU1YmJmNDFlOGJjOWM0ZDg3YTRhYWVkNWI5ZGYyLi5jNDYyMGY3YjI2OTYyNDU5ZDliMzFjM2Q2
MWQwZjRlYjMzOTg0NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtMTI2LDggKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dGVy
SFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBp
bnQqIG5ld0lkKTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JO
b2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbGlz
dGVuZXJzQXJyYXkpOwotICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgYm9vbCogY29uc3QgcnVuU3lu
Y2hyb25vdXNseSk7Ci0gICAgdm9pZCBjYW5jZWxTZWFyY2goRXJyb3JTdHJpbmcqKTsKKyAgICB2
b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VU
cmltbWVkUXVlcnksIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOworICAgIHZv
aWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQs
IGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Kik7Cisg
ICAgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
c2VhcmNoSWQpOwogICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogcmVzdWx0KTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIHZvaWQgc2V0SW5zcGVj
dE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKTsKQEAgLTIwOSw5ICsyMTAsNiBAQCBwcml2
YXRlOgogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDb250YWlu
ZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVz
TWFwKTsKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIE5vZGUqKTsKIAotICAgIHZvaWQgb25NYXRjaEpvYnNUaW1lcihUaW1l
cjxJbnNwZWN0b3JET01BZ2VudD4qKTsKLSAgICB2b2lkIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1
bHRzKExpc3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKTsKLQogICAgIE5vZGUqIG5v
ZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5n
cygpOwpAQCAtMjMxLDkgKzIyOSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hp
bGRyZW5SZXF1ZXN0ZWQ7CiAgICAgaW50IG1fbGFzdE5vZGVJZDsKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7Ci0gICAgRGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7
Ci0gICAgVGltZXI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7Ci0gICAgSGFz
aFNldDxSZWZQdHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPFJlZlB0cjxOb2RlPiA+ID4gU2VhcmNoUmVzdWx0czsKKyAgICBTZWFy
Y2hSZXN1bHRzIG1fc2VhcmNoUmVzdWx0czsKICAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0
cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAgICBPd25QdHI8SGlnaGxp
Z2h0RGF0YT4gbV9oaWdobGlnaHREYXRhOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2Vu
dC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5k
ZXggMjM2OWEyM2UxMGQwMTY0YjVmYjkyYzYwM2M2MzQ1MWFiZTNhNzVjYi4uOGUyMzNjY2JhODk1
NzE3ZGExN2VjYjJhYThiYzBmYmUxNDJiMGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC04MzIsMTkgKzgzMiw1OSBAQCBXZWJJbnNw
ZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtz
dHJpbmd9IHF1ZXJ5Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48RE9NQWdlbnQuTm9k
ZT4pfSBzZWFyY2hSZXN1bHRDb2xsZWN0b3IKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzZWFy
Y2hTeW5jaHJvbm91c2x5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpfSBzZWFyY2hD
YWxsYmFjawogICAgICAqLwotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBzZWFy
Y2hSZXN1bHRDb2xsZWN0b3IsIHNlYXJjaFN5bmNocm9ub3VzbHkpCisgICAgcGVyZm9ybVNlYXJj
aDogZnVuY3Rpb24ocXVlcnksIHNlYXJjaENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5f
c2VhcmNoUmVzdWx0Q29sbGVjdG9yID0gc2VhcmNoUmVzdWx0Q29sbGVjdG9yOwotICAgICAgICBE
T01BZ2VudC5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCAhIXNlYXJjaFN5bmNocm9ub3VzbHkpOworICAg
ICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFy
YW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNl
YXJjaElkCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXN1bHRzQ291bnQKKyAgICAgICAg
ICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzZWFyY2hJZCwgcmVzdWx0c0Nv
dW50KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHNlYXJjaElkOwor
ICAgICAgICAgICAgc2VhcmNoQ2FsbGJhY2socmVzdWx0c0NvdW50KTsKKyAgICAgICAgfQorICAg
ICAgICBET01BZ2VudC5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICog
QHBhcmFtIHs/ZnVuY3Rpb24oRE9NQWdlbnQuTm9kZSl9IGNhbGxiYWNrCisgICAgICovCisgICAg
c2VhcmNoUmVzdWx0OiBmdW5jdGlvbihpbmRleCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fc2VhcmNoSWQpIHsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHBh
cmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5
LjxudW1iZXI+fSBub2RlSWRzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZ1bmN0aW9u
IG15Y2FsbGJhY2soZXJyb3IsIG5vZGVJZHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3Ip
OworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobm9kZUlk
cy5sZW5ndGggIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgY2FsbGJhY2sodGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkc1swXV0pOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgRE9NQWdlbnQuZ2V0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFyY2hJ
ZCwgaW5kZXgsIGluZGV4ICsgMSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICB9LAogCiAgICAgY2FuY2VsU2Vh
cmNoOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoUmVzdWx0
Q29sbGVjdG9yOwotICAgICAgICBET01BZ2VudC5jYW5jZWxTZWFyY2goKTsKKyAgICAgICAgaWYg
KHRoaXMuX3NlYXJjaElkKSB7CisgICAgICAgICAgICBET01BZ2VudC5kaXNjYXJkU2VhcmNoUmVz
dWx0cyh0aGlzLl9zZWFyY2hJZCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoSWQ7
CisgICAgICAgIH0KICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDIwLDE1ICsxMDYwLDYgQEAgV2Vi
SW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGNoaWxkTm9kZVJlbW92
ZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgbm9kZUlkKQogICAgIHsKICAgICAgICAgdGhpcy5f
ZG9tQWdlbnQuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlSWQ+fSBub2Rl
SWRzCi0gICAgICovCi0gICAgc2VhcmNoUmVzdWx0czogZnVuY3Rpb24obm9kZUlkcykKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9kb21BZ2VudC5fc2VhcmNoUmVzdWx0Q29sbGVjdG9yKQotICAg
ICAgICAgICAgdGhpcy5fZG9tQWdlbnQuX3NlYXJjaFJlc3VsdENvbGxlY3Rvcihub2RlSWRzKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNQYW5lbC5qcwppbmRleCA2YzFlYjgxOWQxNjIzYTc4MmI4Y2NiNGVlNTlkYTg3MjJk
YTI2YWY0Li4wNzU4OGU4NjNjOGRjNmRmNWEzMmUxZGEwYTQ0MDY5MTBjZDNjZTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
CkBAIC0yNTIsNyArMjUyLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hN
YXRjaGVzQ291bnQoMCwgdGhpcyk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleDsKLSAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOworICAgICAg
ICBkZWxldGUgdGhpcy5fc2VhcmNoUmVzdWx0czsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFn
ZW50LmNhbmNlbFNlYXJjaCgpOwogICAgIH0sCiAKQEAgLTI2NSwxMSArMjY1LDIyIEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0
aGlzLl91cGRhdGVkTWF0Y2hDb3VudE9uY2UgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fbWF0Y2hl
c0NvdW50VXBkYXRlVGltZW91dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0g
cXVlcnk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2god2hp
dGVzcGFjZVRyaW1tZWRRdWVyeSwgdGhpcy5fYWRkTm9kZXNUb1NlYXJjaFJlc3VsdC5iaW5kKHRo
aXMpKTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXN1bHRDb3Vu
dAorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gcmVzdWx0Q291bnRDYWxsYmFjayhyZXN1
bHRDb3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRy
b2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHJlc3VsdENvdW50LCB0aGlzKTsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0Q291bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gbmV3IEFycmF5KHJlc3VsdENvdW50KTsKKyAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOworICAgICAgICAg
ICAgdGhpcy5qdW1wVG9OZXh0U2VhcmNoUmVzdWx0KCk7CisgICAgICAgIH0KKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2god2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwg
cmVzdWx0Q291bnRDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX2NvbnRleHRN
ZW51RXZlbnRGaXJlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0zMjIsNzAgKzMzMyw2NSBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAog
Ci0gICAgX3VwZGF0ZU1hdGNoZXNDb3VudDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHRoaXMu
X3NlYXJjaFJlc3VsdHMubGVuZ3RoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50
VXBkYXRlVGltZW91dCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25j
ZSA9IHRydWU7Ci0gICAgfSwKLQotICAgIF91cGRhdGVNYXRjaGVzQ291bnRTb29uOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25jZSkKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVNYXRjaGVzQ291bnQoKTsKLSAgICAgICAgaWYg
KHRoaXMuX21hdGNoZXNDb3VudFVwZGF0ZVRpbWVvdXQpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIC8vIFVwZGF0ZSB0aGUgbWF0Y2hlcyBjb3VudCBldmVyeSBoYWxmLXNlY29uZCBzbyBp
dCBkb2Vzbid0IGZlZWwgdHdpdGNoeS4KLSAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50VXBkYXRl
VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fdXBkYXRlTWF0Y2hlc0NvdW50LmJpbmQodGhpcyks
IDUwMCk7Ci0gICAgfSwKLQotICAgIF9hZGROb2Rlc1RvU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihu
b2RlSWRzKQotICAgIHsKLSAgICAgICAgaWYgKCFub2RlSWRzLmxlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB2YXIgb2xkU2VhcmNoUmVzdWx0SW5kZXggPSB0aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUlk
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07Ci0g
ICAgICAgICAgICB2YXIgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQobm9k
ZUlkKTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAg
ICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMucHVzaChub2RlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIEF2b2lkIGludm9jYXRpb25zIG9mIGhpZ2hsaWdodGluZyBmb3IgZXZlcnkgY2h1bmsg
b2Ygbm9kZUlkcy4KLSAgICAgICAgaWYgKG9sZFNlYXJjaFJlc3VsdEluZGV4ICE9PSB0aGlzLl9j
dXJyZW50U2VhcmNoUmVzdWx0SW5kZXgpCi0gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRDdXJy
ZW50U2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZU1hdGNoZXNDb3VudFNvb24o
KTsKLSAgICB9LAotCiAgICAganVtcFRvTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1
bHRzLmxlbmd0aCkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7CiAgICAg
ICAgIGlmICgrK3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA+PSB0aGlzLl9zZWFyY2hS
ZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCA9IDA7Ci0gICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICB0aGlzLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KHRy
dWUpOwogICAgIH0sCiAKICAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFy
Y2hSZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAg
ICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7
CiAgICAgICAgIGlmICgtLXRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDApCiAgICAg
ICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVz
dWx0cy5sZW5ndGggLSAxKTsKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJl
c3VsdCgpOworCisgICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoZmFs
c2UpOwogICAgIH0sCiAKLSAgICBfaGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdDogZnVuY3Rp
b24oKQorICAgIF9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihqdW1wVG9O
ZXh0T25FbXB0eSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7
Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXhdOwotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRs
aW5lLmZpbmRUcmVlRWxlbWVudChub2RlKTsKKyAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4OworICAgICAgICB2YXIgc2VhcmNoUmVzdWx0cyA9IHRoaXMu
X3NlYXJjaFJlc3VsdHM7CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHQgPSBzZWFyY2hSZXN1bHRz
W2luZGV4XTsKKworICAgICAgICB2YXIgbmV4dENhbGxiYWNrID0ganVtcFRvTmV4dE9uRW1wdHkg
PyB0aGlzLmp1bXBUb05leHRTZWFyY2hSZXN1bHQuYmluZCh0aGlzKSA6IHRoaXMuanVtcFRvUHJl
dmlvdXNTZWFyY2hSZXN1bHQuYmluZCh0aGlzKTsKKworICAgICAgICBpZiAoc2VhcmNoUmVzdWx0
ID09PSBudWxsKSB7CisgICAgICAgICAgICAvLyBIb2xlLCBza2lwIGl0CisgICAgICAgICAgICBu
ZXh0Q2FsbGJhY2soKTsKKworICAgICAgICAgICAgdGhpcy5fc2VhcmNoV2F0Y2hEb2cgPSAodGhp
cy5fc2VhcmNoV2F0Y2hEb2cgfHwgMCkgKyAxOworICAgICAgICAgICAgaWYgKHRoaXMuX3NlYXJj
aFdhdGNoRG9nID4gc2VhcmNoUmVzdWx0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAvLyBB
bGwgZWxlbWVudHMgaW4gdGhlIHNlYXJjaCByZXN1bHRzIGFyZSBudWxscyAtIGVudGlyZSBzZWFy
Y2ggcmVzdWx0IHNldCBpcyBvYnNvbGV0ZQorICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ2Fu
Y2VsZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0eXBlb2Ygc2VhcmNoUmVzdWx0ID09PSAidW5kZWZpbmVkIikgeworICAg
ICAgICAgICAgLy8gTm8gZGF0YSBmb3Igc2xvdCwgcmVxdWVzdCBpdC4KKyAgICAgICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2Vh
cmNoUmVzdWx0c1tpbmRleF0gPSBub2RlIHx8IG51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5f
aGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdChqdW1wVG9OZXh0T25FbXB0eSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2VhcmNoUmVzdWx0KGlu
ZGV4LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX3NlYXJjaFdhdGNoRG9nID0gMDsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgoaW5kZXgsIHRoaXMp
OworCisgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVF
bGVtZW50KHNlYXJjaFJlc3VsdCk7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCkgewogICAgICAg
ICAgICAgdHJlZUVsZW1lbnQuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFyY2hRdWVy
eSk7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWwoKTsKQEAgLTM5NCwxMiArNDAwLDE0
IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9oaWRl
U2VhcmNoSGlnaGxpZ2h0czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IHRoaXMuX3NlYXJjaFJlc3VsdHMgJiYgaSA8IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fc2VhcmNoUmVzdWx0c1tpXTsK
LSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVF
bGVtZW50KG5vZGUpOwotICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQotICAgICAgICAgICAg
ICAgIHRyZWVFbGVtZW50LmhpZGVTZWFyY2hIaWdobGlnaHRzKCk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB2YXIgc2VhcmNoUmVzdWx0ID0gdGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXhdOworICAgICAgICBpZiAoIXNlYXJjaFJlc3VsdCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5maW5k
VHJlZUVsZW1lbnQoc2VhcmNoUmVzdWx0KTsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50KQorICAg
ICAgICAgICAgdHJlZUVsZW1lbnQuaGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKICAgICB9LAogCiAg
ICAgc2VsZWN0ZWRET01Ob2RlOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDIzZWI3YmIzYmUzODViNDI5
OWZkZTFlYTE4ODAzZjQ0MGQ5M2FkM2MuLjU4ZDZhMDMyNWI5NzcwNTQxODA0MzM3NDAwYjQ4ZWFi
MDhmMDhiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIG5vZGUucmV2ZWFsKCk7CiAg
ICAgICAgICAgICB0aGlzLl9jdXJyZW50TWF0Y2hlZFJlc291cmNlSW5kZXggPSBtYXRjaGVkUmVz
b3VyY2VJbmRleDsKICAgICAgICAgfQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcuRXZlbnRUeXBlcy5TZWFyY2hJbmRleFVw
ZGF0ZWQsIHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVzb3VyY2VJbmRleCArIDEpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcu
RXZlbnRUeXBlcy5TZWFyY2hJbmRleFVwZGF0ZWQsIHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVzb3Vy
Y2VJbmRleCk7CiAgICAgfSwKIAogICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaFF1
ZXJ5LCBzb3J0T3JGaWx0ZXJBcHBsaWVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggMzI1MGM1ZTcwODc4MWUxYWVk
Y2UzZTA2YjcwZThjMGNiZGI5ZjhmZS4uNDg5MGUzNzg5MDVkYTc5ZDViYjVjNjg2ZjQyNjE4NTMx
OWM0Yzk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jlc291cmNlc1BhbmVsLmpzCkBAIC03NDMsNyArNzQzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm47IC8vIFVzZXIg
aGFzIHNlbGVjdGVkIGFub3RoZXIgdmlldyB3aGlsZSB3ZSB3ZXJlIHNlYXJjaGluZy4KICAgICAg
ICAgICAgIGlmICh0aGlzLl9sYXN0U2VhcmNoUmVzdWx0SW5kZXggIT0gLTEpCiAgICAgICAgICAg
ICAgICAgdGhpcy52aXNpYmxlVmlldy5qdW1wVG9TZWFyY2hSZXN1bHQodGhpcy5fbGFzdFNlYXJj
aFJlc3VsdEluZGV4KTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVy
LnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHNlYXJjaFJlc3VsdC5jdXJyZW50TWF0Y2hJbmRleCwg
dGhpcyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVD
dXJyZW50TWF0Y2hJbmRleChzZWFyY2hSZXN1bHQuY3VycmVudE1hdGNoSW5kZXggLSAxLCB0aGlz
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZW4gcnVuIFNvdXJjZUZyYW1lIHNlYXJjaCBp
ZiBuZWVkZWQgYW5kIGp1bXAgdG8gc2VhcmNoIHJlc3VsdCBpbmRleCB3aGVuIGRvbmUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmlu
ZGV4IDVjMjNmM2MxNmIxOGQ3MDQyODAzZWY0MTE1ZjNiNWIwNThkYmQ4Y2UuLjVkNDQyYjE3ODJj
NDdhYTViZmI2YjRlMGM5YzJlYWQyNTFmYjcyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xMTEzLDcgKzExMTMsNyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHNl
YXJjaE1hdGNoZXMsIHRoaXMpOwogICAgICAgICAgICAgdmlldy5qdW1wVG9GaXJzdFNlYXJjaFJl
c3VsdCgpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRl
Q3VycmVudE1hdGNoSW5kZXgodmlldy5jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggKyAxLCB0aGlz
KTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJl
bnRNYXRjaEluZGV4KHZpZXcuY3VycmVudFNlYXJjaFJlc3VsdEluZGV4LCB0aGlzKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3NlYXJjaFZpZXcucGVyZm9ybVNlYXJjaChxdWVyeSwgZmlu
aXNoZWRDYWxsYmFjay5iaW5kKHRoaXMpKTsKQEAgLTExMzMsNyArMTEzMyw3IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2VhcmNo
Vmlldy5qdW1wVG9GaXJzdFNlYXJjaFJlc3VsdCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB0aGlzLl9zZWFyY2hWaWV3Lmp1bXBUb05leHRTZWFyY2hSZXN1bHQoKTsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgodGhpcy5f
c2VhcmNoVmlldy5jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggKyAxLCB0aGlzKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgodGhp
cy5fc2VhcmNoVmlldy5jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgsIHRoaXMpOwogICAgIH0sCiAK
ICAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQpAQCAtMTE1Miw3ICsx
MTUyLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9zZWFyY2hWaWV3Lmp1bXBUb0xhc3RTZWFyY2hSZXN1bHQoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGhpcy5fc2VhcmNoVmlldy5qdW1wVG9QcmV2aW91c1NlYXJjaFJl
c3VsdCgpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVDdXJy
ZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCAr
IDEsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVD
dXJyZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCwgdGhpcyk7CiAgICAgfSwKIAogICAgIF90b2dnbGVGb3JtYXRTb3VyY2U6IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VhcmNoQ29u
dHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VhcmNoQ29u
dHJvbGxlci5qcwppbmRleCBmNmY2ODU4YmM4MzNkN2EwMzFiNzUwYTYwNWVkMzZmNjhiMWQzNjBh
Li4wMzkzNjM5ZGNiZDk5M2VmZmFlNmNiOWJkOWQ0ZDgyMGU2MWExODIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpz
CkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQ29udHJvbGxlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG1hdGNoZXMpIHsKICAgICAgICAgICAgIGlmIChtYXRj
aGVzID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNYXRjaEluZGV4ID09PSAx
KQorICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TWF0Y2hJbmRleCA9PT0gMCkKICAgICAgICAg
ICAgICAgICAgICAgdmFyIG1hdGNoZXNTdHJpbmcgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjEg
b2YgMSBtYXRjaCIpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoZXNTdHJpbmcgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjEgbWF0Y2giKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNYXRjaEluZGV4
KQotICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiJWQgb2YgJWQgbWF0Y2hlcyIsIGN1cnJlbnRNYXRjaEluZGV4LCBtYXRjaGVzKTsK
KyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRNYXRjaEluZGV4ID09PSAibnVtYmVy
IikKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZXNTdHJpbmcgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIiVkIG9mICVkIG1hdGNoZXMiLCBjdXJyZW50TWF0Y2hJbmRleCArIDEsIG1hdGNo
ZXMpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNo
ZXNTdHJpbmcgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVkIG1hdGNoZXMiLCBtYXRjaGVzKTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNjZlMjY4YjFkY2IyZWI3NzJiNmUwYjBiMmE0MDU5Yzg2
OGQzYWQwLi4xMzAwMGQxYmY0MWJlMTVhN2YzYTBhY2M3MDQ5ZTdhNjNjNDc0ZjFhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29n
bGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1ha2Ugc2VhcmNoIGluIERPTSBwYW5l
bCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLmh0bWw6
CisKIDIwMTEtMTEtMTEgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBDaHJvbWl1bSBleHBlY3RhdGlvbnMgZm9yIG5ldyB0ZXN0IGluIHI5OTkzNy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1z
ZWFyY2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1l
bnRzLXBhbmVsLXNlYXJjaC1leHBlY3RlZC50eHQKaW5kZXggZDdlZWVmNTc1OTk3NzRmZjZlMDVi
YmFlNDhiYjAxNjNjZWFkZDExNi4uNDc0N2E5MGZkMjE2ZTI5ZDU0ZmY3YzY4YWYyMWFmZjU3NzVl
Yjc4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRz
LXBhbmVsLXNlYXJjaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXNlYXJjaC1leHBlY3RlZC50eHQKQEAgLTIsMTQgKzIsMzAg
QEAgVGVzdHMgdGhhdCBlbGVtZW50cyBwYW5lbCBzZWFyY2ggaXMgcmV0dXJuaW5nIHByb3BlciBy
ZXN1bHRzLgogCiBGb29CYXIKIAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci1SZXN1bHRzOgotRm9vQmFyCi1Gb29CYXIKLTxpbnB1dCB2YWx1ZT0iSW5wdXRWYWwiPgotPGlu
cHV0IHZhbHVlPSJJbnB1dFZhbCI+Ci08aW5wdXQgdmFsdWU9IklucHV0VmFsIj4KLTxpbnB1dCB2
YWx1ZT0iSW5wdXRWYWwiPgotPGlucHV0IHZhbHVlPSJJbnB1dFZhbCI+Ci08ZGl2IGF0dHI9ImZv
byI+PC9kaXY+CisKK1J1bm5pbmc6IHRlc3RTZXRVcAorCitSdW5uaW5nOiB0ZXN0UGxhaW5UZXh0
CitGIG8gbyBCIGEgcgorCitSdW5uaW5nOiB0ZXN0UGFydGlhbFRleHQKK0YgbyBvIEIgYSByCisK
K1J1bm5pbmc6IHRlc3RTdGFydFRhZworPCBpIG4gcCB1IHQgICB2IGEgbCB1IGUgPSAiIEkgbiBw
IHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVzdFBhcnRpYWxUYWcKKzwgaSBuIHAgdSB0ICAg
diBhIGwgdSBlID0gIiBJIG4gcCB1IHQgViBhIGwgIiA+CisKK1J1bm5pbmc6IHRlc3RFeGFjdEF0
dHJpYnV0ZU5hbWUKKzwgaSBuIHAgdSB0ICAgdiBhIGwgdSBlID0gIiBJIG4gcCB1IHQgViBhIGwg
IiA+CisKK1J1bm5pbmc6IHRlc3RFeGFjdEF0dHJpYnV0ZVZhbF91ZQorPCBpIG4gcCB1IHQgICB2
IGEgbCB1IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVzdFBhcnRpYWxB
dHRyaWJ1dGVWYWxfdWUKKzwgaSBuIHAgdSB0ICAgdiBhIGwgdSBlID0gIiBJIG4gcCB1IHQgViBh
IGwgIiA+CisKK1J1bm5pbmc6IHRlc3RYUGF0aEF0dHJpYnV0ZQorPCBkIGkgdiAgIGEgdCB0IHIg
PSAiIGYgbyBvICIgPiA8IC8gZCBpIHYgPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLmh0bWwKaW5kZXggMGJlZDQy
Y2ZjNjFlODA0ZGMwYzVkNGYwNTFjNTk5YTZkMGFiYzg1Zi4uNDZhZDMzMGYyNGJlMWUzYTc3ZmJh
ZmM2Yjg1YmI1MDIzMmIxMTI4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXNlYXJjaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zZWFyY2guaHRtbApAQCAtNyw1NiArNyw3MyBA
QCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50
cyIpOwogCi0gICAgdmFyIHNlYXJjaFJlc3VsdHMgPSBbXTsKLSAgICBmdW5jdGlvbiBhZGRTZWFy
Y2hSZXN1bHQoZXJyb3IsIG1hcmt1cFZhbHVlKQorICAgIGZ1bmN0aW9uIHNlYXJjaENhbGxiYWNr
KG5leHQsIHJlc3VsdENvdW50KQogICAgIHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChtYXJrdXBWYWx1ZS5pbmRleE9mKCJ0ZXIiICsgIm1p
IiArICJuYXRvciIpICE9PSAtMSkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlc3VsdHM6Iik7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdHMoc2VhcmNoUmVzdWx0cyk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAg
ICAgICBzZWFyY2hSZXN1bHRzLnB1c2gobWFya3VwVmFsdWUpOwotICAgIH0KKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHRDb3VudDsgKytpKQorICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbUFnZW50LnNlYXJjaFJlc3VsdChpLCBzZWFyY2hSZXN1bHRDYWxsYmFjay5iaW5kKHRo
aXMsIGkgKyAxID09PSByZXN1bHRDb3VudCkpOwogCi0gICAgZnVuY3Rpb24gYWRkTm9kZXNUb1Nl
YXJjaFJlc3VsdChub2RlSWRzKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
b2RlSWRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5ub2RlRm9ySWQobm9kZUlkc1tpXSk7Ci0gICAgICAgICAgICBpZiAobm9kZS5u
b2RlVHlwZSgpID09PSBOb2RlLlRFWFRfTk9ERSkKLSAgICAgICAgICAgICAgICBzZWFyY2hSZXN1
bHRzLnB1c2gobm9kZS5ub2RlVmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbm9kZS5nZXRPdXRlckhUTUwoYWRkU2VhcmNoUmVzdWx0KTsKKyAgICAgICAgZnVuY3Rp
b24gc2VhcmNoUmVzdWx0Q2FsbGJhY2soaXNMYXN0SXRlbSwgbm9kZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbm9kZS5nZXRPdXRlckhUTUwoYWRkU2VhcmNoUmVzdWx0LmJpbmQodGhpcywgaXNM
YXN0SXRlbSkpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWRkU2VhcmNoUmVzdWx0
KGlzTGFzdEl0ZW0sIGVycm9yLCBtYXJrdXBWYWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQobWFya3VwVmFsdWUuc3BsaXQoIiIpLmpvaW4oIiAiKSk7
CisgICAgICAgICAgICBpZiAoaXNMYXN0SXRlbSkgeworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5jYW5jZWxTZWFyY2goKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXZWJJbnNwZWN0b3IuZG9tQWdl
bnQucmVxdWVzdERvY3VtZW50KHN0ZXAxKTsKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0
ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTZXRVcChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KG5leHQpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RQbGFpblRleHQobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goIkZvbyIgKyAi
QmFyIiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdFBhcnRpYWxUZXh0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJvbyIgKyAiQmEiLCBzZWFy
Y2hDYWxsYmFjay5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiB0ZXN0U3RhcnRUYWcobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goIjxpbnB1IiArICJ0Iiwgc2VhcmNoQ2FsbGJhY2su
YmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFBh
cnRpYWxUYWcobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFn
ZW50LnBlcmZvcm1TZWFyY2goIm5wdSIgKyAidCIsIHNlYXJjaENhbGxiYWNrLmJpbmQodGhpcywg
bmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RFeGFjdEF0dHJpYnV0
ZU5hbWUobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnBlcmZvcm1TZWFyY2goInZhbHUiICsgImUiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5l
eHQpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0RXhhY3RBdHRyaWJ1dGVW
YWxfdWUobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnBlcmZvcm1TZWFyY2goIkluIiArICJwdXRWYSIgKyAibCIsIHNlYXJjaENhbGxiYWNrLmJpbmQo
dGhpcywgbmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RQYXJ0aWFs
QXR0cmlidXRlVmFsX3VlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJuIiArICJwdXRWYSIgKyAibCIsIHNlYXJjaENhbGxi
YWNrLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RYUGF0aEF0dHJpYnV0ZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiLy9odG1sIiArICIvL0BhdHRyIiwgc2VhcmNoQ2Fs
bGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0KKyAgICBdKTsKIAotICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKLSAgICB7Ci0gICAgICAgIC8vIFBsYWluIHRleHQuCi0gICAgICAgIFdlYklu
c3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJGb28iICsgIkJhciIsIGFkZE5vZGVzVG9T
ZWFyY2hSZXN1bHQsIHRydWUpOwotICAgICAgICAvLyBQYXJ0aWFsIHRleHQuCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJvbyIgKyAiQmEiLCBhZGROb2Rlc1Rv
U2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gU3RhcnQgdGFnLgotICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiPGlucHUiICsgInQiLCBhZGROb2Rlc1Rv
U2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gUGFydGlhbCB0YWcuCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJucHUiICsgInQiLCBhZGROb2Rlc1Rv
U2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gRXhhY3QgYXR0cmlidXRlIG5hbWUuCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJ2YWx1IiArICJlIiwg
YWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0gICAgICAgIC8vIEV4YWN0IGF0dHJpYnV0
ZSB2YWw8PnVlLgotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgi
SW4iICsgInB1dFZhIiArICJsIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0gICAg
ICAgIC8vIFBhcnRpYWwgYXR0cmlidXRlIHZhbDw+dWUuCi0gICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5wZXJmb3JtU2VhcmNoKCJuIiArICJwdXRWYSIgKyAibCIsIGFkZE5vZGVzVG9TZWFy
Y2hSZXN1bHQsIHRydWUpOwotICAgICAgICAvLyBYUGF0aCBhdHRyaWJ1dGUuCi0gICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCIvL2h0bWwiICsgIi8vQGF0dHIiLCBh
ZGROb2Rlc1RvU2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gVGVybWluYXRvci4KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goInRlciIgKyAibWkiICsg
Im5hdG9yIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0gICAgfQogfQogPC9zY3Jp
cHQ+CiA8L2hlYWQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114694</attachid>
            <date>2011-11-11 06:49:32 -0800</date>
            <delta_ts>2011-11-11 07:19:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72118-20111111184930.patch</filename>
            <type>text/plain</type>
            <size>40677</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmJiMzRhZjM4NmFhNTA4
NzRhZjg0Y2YxZTE5OWE4MDk0MjA0ZDlkLi44Mjc5OWFhMjU3NTM4YmVkYjI2Y2NlNThjZTUwYzhh
NmMxMzg0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkgQEAKIDIwMTEtMTEtMTEgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1ha2Ugc2VhcmNoIGluIERPTSBwYW5lbCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5wZXJmb3JtU2VhcmNo
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUucGVy
Zm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnNl
YXJjaFJlc3VsdC5teWNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuc2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuY2FuY2VsU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRj
aGVyLnByb3RvdHlwZS5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gucmVzdWx0Q291bnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNl
YXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVt
cFRvTmV4dFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVz
dWx0Lik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX2hp
Z2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9oaWRlU2VhcmNoSGlnaGxpZ2h0cyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9oaWdobGlnaHROdGhNYXRjaGVkUmVzb3VyY2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9zaG93U2VhcmNoUmVzdWx0
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUuX3Nob3dTZWFyY2hSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucGVyZm9ybVNlYXJjaC5maW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5qdW1wVG9QcmV2aW91
c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250
cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90
eXBlLl91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnRBbmRDdXJyZW50TWF0Y2hJbmRleCk6CisKKzIw
MTEtMTEtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAg
IE5vdCByZXZpZXdlZDogcm9sbCBvdXQgY2hhbmdlcyB0byBJbnNwZWN0b3JET01BZ2VudCB0aGF0
IHNxdWVlemVkIGludG8gOTk5MzMuCiAKICAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDE5
N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLjhkYWU2ZTc3NTllNTVkYmEz
ZTVhYmExODVhMDJjZWVmMTgzMjBhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KQEAgLTEyMDgsMTUgKzEyMDgsMzQgQEAKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJwZXJmb3JtU2VhcmNoIiwKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQbGFpbiB0ZXh0IG9yIHF1ZXJ5IHNlbGVjdG9yIG9y
IFhQYXRoIHNlYXJjaCBxdWVyeS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cnVuU3luY2hyb25vdXNseSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiV2hlbiBzZXQgdG8gdHJ1ZSwgcGVyZm9ybWluZyBzZWFyY2ggc3luY2hy
b25vdXNseSAoY2FuIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24pLiIgfQorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlBsYWluIHRleHQgb3IgcXVlcnkgc2VsZWN0b3Igb3IgWFBhdGggc2VhcmNoIHF1ZXJ5LiIgfQog
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YXJ0
cyBhc3luY2hyb25vdXMgc2VhcmNoIGZvciBhIGdpdmVuIHN0cmluZyBpbiB0aGUgRE9NIHRyZWUu
IFVzZSA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+IHRvIHN0b3AgZ2l2ZW4gYXN5bmNocm9ub3Vz
IHNlYXJjaCB0YXNrLiIsCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgZm9yIGEgZ2l2
ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2Nv
ZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+
IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZ2V0U2VhcmNoUmVzdWx0cyIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyb21JbmRleCIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnQgaW5kZXggb2YgdGhlIHNlYXJjaCByZXN1bHQg
dG8gYmUgcmV0dXJuZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvSW5k
ZXgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkVuZCBpbmRleCBvZiB0aGUg
c2VhcmNoIHJlc3VsdCB0byBiZSByZXR1cm5lZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiTm9kZUlkIiB9
LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5vZGVzLiIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMg
c2VhcmNoIHJlc3VsdHMgZnJvbSBnaXZlbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+IHRvIGdpdmVu
IDxjb2RlPnRvSW5kZXg8L2NvZGU+IGZyb20gdGhlIHNhcmNoIHdpdGggdGhlIGdpdmVuIGlkZW50
aWZpZXIuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5jZWxTZWFyY2giLAot
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5jZWxzIGFzeW5jaHJvbm91cyBzZWFy
Y2ggc3RhcnRlZCB3aXRoIDxjb2RlPnBlcmZvcm1TZWFyY2g8L2NvZGU+LiIsCisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiZGlzY2FyZFNlYXJjaFJlc3VsdHMiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlYXJjaElkIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzZWFyY2ggc2Vzc2lvbiBp
ZGVudGlmaWVyLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2NhcmRzIHNlYXJjaCByZXN1bHRzIGZyb20gdGhlIHNlc3Npb24gd2l0aCB0
aGUgZ2l2ZW4gaWQuIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2NvZGU+IHNob3VsZCBubyBsb25n
ZXIgYmUgY2FsbGVkIGZvciB0aGF0IHNlYXJjaC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTM4NywxNCArMTQwNiw2
IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9k
ZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3Zl
ZC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJNaXJyb3JzIDxjb2RlPkRPTU5vZGVSZW1vdmVkPC9jb2RlPiBldmVudC4iCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNlYXJjaFJlc3Vs
dHMiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiTm9kZUlkIiB9LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5v
ZGVzLiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlB1c2hlcyBzZWFyY2ggcmVzdWx0cyBpbml0aWF0ZWQgdXNpbmcgPGNvZGU+cGVyZm9ybVNl
YXJjaDwvY29kZT4gdG8gdGhlIGNsaWVudC4iLAotICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMDI1MTFhM2QxNjYwNmUwZDY3
YzI5ZDk0YmQxOWRhYzFkZWM2YzhkMC4uNGI0YTg3ZGIzMGIyODgyODc0YzM0NTUzOTA1ZmE5MWE5
MTk4YWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKQEAgLTk2LDYgKzk3LDkgQEAgbmFtZXNwYWNlIERPTUFnZW50U3Rh
dGUgewogc3RhdGljIGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1ZXN0ZWRbXSA9ICJkb2N1bWVudFJl
cXVlc3RlZCI7CiB9OwogCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFRleHRTaXplID0gMTAwMDA7
CitzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKKwog
c3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNv
bG9yT2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QgfHwgISgqY29sb3JPYmplY3QpKQpA
QCAtMTQ2LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rv
ci5hZGQobm9kZXMtPml0ZW0oaSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9xdWVyeTsK
IH07CiAKQEAgLTIzNCw3ICsyMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxYUGF0aFJlc3Vs
dD4gcmVzdWx0ID0gbV9kb2N1bWVudC0+ZXZhbHVhdGUobV9xdWVyeSwgbV9kb2N1bWVudC5nZXQo
KSwgMCwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCAwLCBlYyk7Cisg
ICAgICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4gcmVzdWx0ID0gbV9kb2N1bWVudC0+ZXZhbHVhdGUo
bV9xdWVyeSwgbV9kb2N1bWVudCwgMCwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hP
VF9UWVBFLCAwLCBlYyk7CiAgICAgICAgIGlmIChlYyB8fCAhcmVzdWx0KQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTUsNyArMjk5LDYgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3Rv
ckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEkKICAg
ICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZG9tTGlzdGVuZXIoMCkKICAgICAsIG1fbGFzdE5v
ZGVJZCgxKQotICAgICwgbV9tYXRjaEpvYnNUaW1lcih0aGlzLCAmSW5zcGVjdG9yRE9NQWdlbnQ6
Om9uTWF0Y2hKb2JzVGltZXIpCiAgICAgLCBtX3NlYXJjaGluZ0Zvck5vZGUoZmFsc2UpCiB7CiB9
CkBAIC0zNTksNyArMzYyLDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiB7CiAgICAgRXJy
b3JTdHJpbmcgZXJyb3I7Ci0gICAgY2FuY2VsU2VhcmNoKCZlcnJvcik7CisgICAgbV9zZWFyY2hS
ZXN1bHRzLmNsZWFyKCk7CiAgICAgZGlzY2FyZEJpbmRpbmdzKCk7CiAgICAgaWYgKG1fcmV2YWxp
ZGF0ZVN0eWxlQXR0clRhc2spCiAgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnJl
c2V0KCk7CkBAIC04OTYsNyArODk5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHQKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IGJvb2wq
IGNvbnN0IHJ1blN5bmNocm9ub3VzbHkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3Jt
U2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5LCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KQogewogICAgIC8vIEZJ
WE1FOiBGZXcgdGhpbmdzIGFyZSBtaXNzaW5nIGhlcmU6CiAgICAgLy8gMSkgU2VhcmNoIHdvcmtz
IHdpdGggbm9kZSBncmFudWxhcml0eSAtIG51bWJlciBvZiBtYXRjaGVzIHdpdGhpbiBub2RlIGlz
IG5vdCBjYWxjdWxhdGVkLgpAQCAtOTIyLDMxICs5MjUsMjkgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgd2hp
dGVzcGEKICAgICBTdHJpbmcgZXNjYXBlZFRhZ05hbWVRdWVyeSA9IHRhZ05hbWVRdWVyeTsKICAg
ICBlc2NhcGVkVGFnTmFtZVF1ZXJ5LnJlcGxhY2UoIiciLCAiXFwnIik7CiAKLSAgICAvLyBDbGVh
ciBwZW5kaW5nIGpvYnMuCi0gICAgY2FuY2VsU2VhcmNoKGVycm9yKTsKLQogICAgIC8vIEZpbmQg
YWxsIGZyYW1lcywgaWZyYW1lcyBhbmQgb2JqZWN0IGVsZW1lbnRzIHRvIHNlYXJjaCB0aGVpciBk
b2N1bWVudHMuCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jcyA9IGRvY3VtZW50cygpOworICAg
IFZlY3RvcjxNYXRjaEpvYio+IG1hdGNoSm9iczsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+
OjppdGVyYXRvciBpdCA9IGRvY3MuYmVnaW4oKTsgaXQgIT0gZG9jcy5lbmQoKTsgKytpdCkgewog
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAqaXQ7CiAKICAgICAgICAgaWYgKCF0YWdOYW1l
UXVlcnkuaXNFbXB0eSgpICYmIHN0YXJ0VGFnRm91bmQgJiYgZW5kVGFnRm91bmQpIHsKLSAgICAg
ICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RUYWdOYW1lc0pv
Yihkb2N1bWVudCwgdGFnTmFtZVF1ZXJ5KSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdNYXRjaEpv
YnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5KSk7
CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaEV4YWN0VGFnTmFtZXNKb2Io
ZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOworICAgICAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChu
ZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRhZ05hbWVRdWVyeS5pc0Vt
cHR5KCkgJiYgc3RhcnRUYWdGb3VuZCkgewotICAgICAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2Jz
LmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltzdGFydHMtd2l0aChuYW1l
KCksICciICsgZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7Ci0gICAgICAgICAgICBtX3Bl
bmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNj
YXBlZFF1ZXJ5KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRo
Sm9iKGRvY3VtZW50LCAiLy8qW3N0YXJ0cy13aXRoKG5hbWUoKSwgJyIgKyBlc2NhcGVkVGFnTmFt
ZVF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNo
UGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0YWdOYW1lUXVlcnkuaXNFbXB0eSgpICYm
IGVuZFRhZ0ZvdW5kKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBt
YXRjaEVuZE9mVGFnTmFtZXMgc2VhcmNoIGZ1bmN0aW9uIGlmIGVuZFRhZ0ZvdW5kIGlzIHRydWUg
YnV0IG5vdCBzdGFydFRhZ0ZvdW5kLgogICAgICAgICAgICAgLy8gVGhpcyByZXF1aXJlcyBlbmRz
LXdpdGgoKSBzdXBwb3J0IGluIFhQYXRoLCBXZWJLaXQgb25seSBzdXBwb3J0cyBzdGFydHMtd2l0
aCgpIGFuZCBjb250YWlucygpLgotICAgICAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVu
ZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlucyhuYW1lKCksICciICsg
ZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdNYXRj
aEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5
KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3Vt
ZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBlc2NhcGVkVGFnTmFtZVF1ZXJ5ICsgIicp
XSIpKTsKKyAgICAgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9i
KGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTk1NCw0MiArOTU1LDU5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZv
cm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhCiAgICAg
ICAgIGlmIChtYXRjaGVzRXZlcnlOb2RlKSB7CiAgICAgICAgICAgICAvLyBUaGVzZSBxdWVyaWVz
IHdpbGwgbWF0Y2ggZXZlcnkgbm9kZS4gTWF0Y2hpbmcgZXZlcnl0aGluZyBpc24ndCB1c2VmdWwg
YW5kIGNhbiBiZSBzbG93IGZvciBsYXJnZSBwYWdlcywKICAgICAgICAgICAgIC8vIHNvIGxpbWl0
IHRoZSBzZWFyY2ggZnVuY3Rpb25zIGxpc3QgdG8gcGxhaW4gdGV4dCBhbmQgYXR0cmlidXRlIG1h
dGNoaW5nIGZvciB0aGVzZS4KLSAgICAgICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQo
bmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIvLypbY29udGFpbnMoQCosICciICsgZXNjYXBl
ZFF1ZXJ5ICsgIicpXSIpKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQo
bmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKKyAgICAgICAg
ICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIvLypbY29u
dGFpbnMoQCosICciICsgZXNjYXBlZFF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgICAgIG1hdGNo
Sm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wZW5kaW5n
TWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hFeGFjdElkSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNl
VHJpbW1lZFF1ZXJ5KSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1h
dGNoRXhhY3RDbGFzc05hbWVzSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSk7
Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RUYWdOYW1l
c0pvYihkb2N1bWVudCwgdGFnTmFtZVF1ZXJ5KSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9i
cy5hcHBlbmQobmV3IE1hdGNoUXVlcnlTZWxlY3RvckFsbEpvYihkb2N1bWVudCwgIlsiICsgYXR0
cmlidXRlTmFtZVF1ZXJ5ICsgIl0iKSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBl
bmQobmV3IE1hdGNoUXVlcnlTZWxlY3RvckFsbEpvYihkb2N1bWVudCwgd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeSkpOwotICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQ
YXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKEAqLCAnIiArIGVzY2FwZWRRdWVyeSArICIn
KV0iKSk7CisgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RJZEpvYihkb2N1
bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5k
KG5ldyBNYXRjaEV4YWN0Q2xhc3NOYW1lc0pvYihkb2N1bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRR
dWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaEV4YWN0VGFnTmFtZXNK
b2IoZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaFF1ZXJ5U2VsZWN0b3JBbGxKb2IoZG9jdW1lbnQsICJbIiArIGF0dHJpYnV0ZU5hbWVR
dWVyeSArICJdIikpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFF1ZXJ5U2Vs
ZWN0b3JBbGxKb2IoZG9jdW1lbnQsIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpKTsKKyAgICAgICAg
bWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlu
cyhAKiwgJyIgKyBlc2NhcGVkUXVlcnkgKyAiJyldIikpOwogICAgICAgICBpZiAoIXRhZ05hbWVR
dWVyeS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBlc2Nh
cGVkVGFnTmFtZVF1ZXJ5ICsgIicpXSIpKTsKLSAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFw
cGVuZChuZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOwotICAg
ICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50
LCB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5k
KG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBl
c2NhcGVkVGFnTmFtZVF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChu
ZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOworICAgICAgICBt
YXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5KSk7CisgICAgfQorCisgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IHJlc3VsdENvbGxl
Y3RvcjsKKyAgICBmb3IgKFZlY3RvcjxNYXRjaEpvYio+OjppdGVyYXRvciBpdCA9IG1hdGNoSm9i
cy5iZWdpbigpOyBpdCAhPSBtYXRjaEpvYnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5t
YXRjaChyZXN1bHRDb2xsZWN0b3IpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtYXRjaEpvYnMpOwor
CisgICAgKnNlYXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7
CisgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRz
LmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKyAgICByZXN1
bHRzSXQtPnNlY29uZC5jbGVhcigpOworCisgICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0
ZXJhdG9yIGl0ID0gcmVzdWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rv
ci5lbmQoKTsgKytpdCkKKyAgICAgICAgcmVzdWx0c0l0LT5zZWNvbmQuYXBwZW5kKCppdCk7CisK
KyAgICAqcmVzdWx0Q291bnQgPSByZXN1bHRzSXQtPnNlY29uZC5zaXplKCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwg
UmVmUHRyPEluc3BlY3RvckFycmF5Piogbm9kZUlkcykKK3sKKyAgICBTZWFyY2hSZXN1bHRzOjpp
dGVyYXRvciBpdCA9IG1fc2VhcmNoUmVzdWx0cy5maW5kKHNlYXJjaElkKTsKKyAgICBpZiAoaXQg
PT0gbV9zZWFyY2hSZXN1bHRzLmVuZCgpKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJObyBz
ZWFyY2ggc2Vzc2lvbiB3aXRoIGdpdmVuIGlkIGZvdW5kIjsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChydW5TeW5jaHJvbm91c2x5ICYmICpydW5TeW5jaHJvbm91c2x5KSB7Ci0g
ICAgICAgIC8vIEZvciB0ZXN0cy4KLSAgICAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IHJlc3VsdENv
bGxlY3RvcjsKLSAgICAgICAgZm9yIChEZXF1ZTxNYXRjaEpvYio+OjppdGVyYXRvciBpdCA9IG1f
cGVuZGluZ01hdGNoSm9icy5iZWdpbigpOyBpdCAhPSBtX3BlbmRpbmdNYXRjaEpvYnMuZW5kKCk7
ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+bWF0Y2gocmVzdWx0Q29sbGVjdG9yKTsKLSAgICAg
ICAgcmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3VsdHMocmVzdWx0Q29sbGVjdG9yKTsKLSAgICAgICAg
Y2FuY2VsU2VhcmNoKGVycm9yKTsKKyAgICBpbnQgc2l6ZSA9IGl0LT5zZWNvbmQuc2l6ZSgpOwor
ICAgIGlmIChmcm9tSW5kZXggPCAwIHx8IHRvSW5kZXggPiBzaXplIHx8IGZyb21JbmRleCA+PSB0
b0luZGV4KSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlkIHNlYXJjaCByZXN1bHQg
cmFuZ2UiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fbWF0Y2hKb2JzVGltZXIuc3Rh
cnRPbmVTaG90KDApOworCisgICAgZm9yIChpbnQgaSA9IGZyb21JbmRleDsgaSA8IHRvSW5kZXg7
ICsraSkKKyAgICAgICAgKCpub2RlSWRzKS0+cHVzaE51bWJlcihwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKChpdC0+c2Vjb25kKVtpXS5nZXQoKSkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpjYW5jZWxTZWFyY2goRXJyb3JTdHJpbmcqKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlz
Y2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKQog
ewotICAgIGlmIChtX21hdGNoSm9ic1RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fbWF0Y2hK
b2JzVGltZXIuc3RvcCgpOwotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3BlbmRpbmdNYXRjaEpvYnMp
OwotICAgIG1fcGVuZGluZ01hdGNoSm9icy5jbGVhcigpOwotICAgIG1fc2VhcmNoUmVzdWx0cy5j
bGVhcigpOworICAgIG1fc2VhcmNoUmVzdWx0cy5yZW1vdmUoc2VhcmNoSWQpOwogfQogCiBib29s
IEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVNb3VzZVByZXNzKCkKQEAgLTEyMzIsNiArMTI1MCwx
MCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbgogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRf
Tk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREU6CiAgICAgICAgICAg
ICBub2RlVmFsdWUgPSBub2RlLT5ub2RlVmFsdWUoKTsKKyAgICAgICAgICAgIGlmIChub2RlVmFs
dWUubGVuZ3RoKCkgPiBtYXhUZXh0U2l6ZSkgeworICAgICAgICAgICAgICAgIG5vZGVWYWx1ZSA9
IG5vZGVWYWx1ZS5sZWZ0KG1heFRleHRTaXplKTsKKyAgICAgICAgICAgICAgICBub2RlVmFsdWUu
YXBwZW5kKGVsbGlwc2lzVUNoYXIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgTm9kZTo6QVRUUklCVVRFX05PREU6CiAgICAgICAgICAgICBsb2NhbE5h
bWUgPSBub2RlLT5sb2NhbE5hbWUoKTsKQEAgLTE1NzUsMzYgKzE1OTcsNiBAQCBOb2RlKiBJbnNw
ZWN0b3JET01BZ2VudDo6bm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBub2RlOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojpvbk1hdGNoSm9ic1RpbWVyKFRp
bWVyPEluc3BlY3RvckRPTUFnZW50PiopCi17Ci0gICAgaWYgKCFtX3BlbmRpbmdNYXRjaEpvYnMu
c2l6ZSgpKSB7Ci0gICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgICAgICBjYW5jZWxTZWFy
Y2goJmVycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIExpc3RIYXNoU2V0PE5v
ZGUqPiByZXN1bHRDb2xsZWN0b3I7Ci0gICAgTWF0Y2hKb2IqIGpvYiA9IG1fcGVuZGluZ01hdGNo
Sm9icy50YWtlRmlyc3QoKTsKLSAgICBqb2ItPm1hdGNoKHJlc3VsdENvbGxlY3Rvcik7Ci0gICAg
ZGVsZXRlIGpvYjsKLQotICAgIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKHJlc3VsdENvbGxl
Y3Rvcik7Ci0KLSAgICBtX21hdGNoSm9ic1RpbWVyLnN0YXJ0T25lU2hvdCgwLjAyNSk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKExpc3RI
YXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4gbm9kZUlkcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICBmb3IgKExpc3RI
YXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgaXQgPSByZXN1bHRDb2xsZWN0b3IuYmVnaW4oKTsgaXQg
IT0gcmVzdWx0Q29sbGVjdG9yLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChtX3NlYXJjaFJl
c3VsdHMuY29udGFpbnMoKml0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX3Nl
YXJjaFJlc3VsdHMuYWRkKCppdCk7Ci0gICAgICAgIG5vZGVJZHMtPnB1c2hOdW1iZXIocHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZCgqaXQpKTsKLSAgICB9Ci0gICAgbV9mcm9udGVuZC0+c2VhcmNoUmVz
dWx0cyhub2RlSWRzLnJlbGVhc2UoKSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNv
cHlOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9k
ZUZvcklkKG5vZGVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDI5ODUxMzI5YmU4ZTViYmY0MWU4YmM5YzRkODdhNGFhZWQ1YjlkZjIuLmM0
NjIwZjdiMjY5NjI0NTlkOWIzMWMzZDYxZDBmNGViMzM5ODQ3MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMjYsOCArMTI2LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29u
c3QgU3RyaW5nJiBvdXRlckhUTUwsIGludCogbmV3SWQpOwogICAgIHZvaWQgc2V0Tm9kZVZhbHVl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdm9p
ZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBsaXN0ZW5lcnNBcnJheSk7Ci0gICAgdm9pZCBwZXJmb3JtU2Vh
cmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCBj
b25zdCBib29sKiBjb25zdCBydW5TeW5jaHJvbm91c2x5KTsKLSAgICB2b2lkIGNhbmNlbFNlYXJj
aChFcnJvclN0cmluZyopOworICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJZCwgaW50
KiByZXN1bHRDb3VudCk7CisgICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qKTsKKyAgICB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1bHRzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7CiAgICAgdm9pZCByZXNvbHZlTm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAs
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0QXR0cmlidXRl
cyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIHJlc3Vs
dCk7CiAgICAgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVu
YWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwpA
QCAtMjA5LDkgKzIxMCw2IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRl
cHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSopOwogCi0gICAgdm9p
ZCBvbk1hdGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiopOwotICAgIHZvaWQg
cmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3VsdHMoTGlzdEhhc2hTZXQ8Tm9kZSo+JiByZXN1bHRDb2xs
ZWN0b3IpOwotCiAgICAgTm9kZSogbm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
ICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CkBAIC0yMzEsOSArMjI5LDggQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PGludD4gbV9jaGlsZHJlblJlcXVlc3RlZDsKICAgICBpbnQgbV9sYXN0Tm9k
ZUlkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKLSAgICBEZXF1ZTxNYXRjaEpv
Yio+IG1fcGVuZGluZ01hdGNoSm9iczsKLSAgICBUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4gbV9t
YXRjaEpvYnNUaW1lcjsKLSAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0
czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gPiBT
ZWFyY2hSZXN1bHRzOworICAgIFNlYXJjaFJlc3VsdHMgbV9zZWFyY2hSZXN1bHRzOwogICAgIE93
blB0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJU
YXNrOwogICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERhdGE7CiAgICAgUmVm
UHRyPE5vZGU+IG1fbm9kZVRvRm9jdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01BZ2VudC5qcwppbmRleCAyMzY5YTIzZTEwZDAxNjRiNWZiOTJjNjAzYzYzNDUx
YWJlM2E3NWNiLi44ZTIzM2NjYmE4OTU3MTdkYTE3ZWNiMmFhOGJjMGZiZTE0MmIwZjA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTgz
MiwxOSArODMyLDU5IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAKICAg
ICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKLSAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKEFycmF5LjxET01BZ2VudC5Ob2RlPil9IHNlYXJjaFJlc3VsdENvbGxlY3RvcgotICAgICAq
IEBwYXJhbSB7Ym9vbGVhbj19IHNlYXJjaFN5bmNocm9ub3VzbHkKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKG51bWJlcil9IHNlYXJjaENhbGxiYWNrCiAgICAgICovCi0gICAgcGVyZm9ybVNlYXJj
aDogZnVuY3Rpb24ocXVlcnksIHNlYXJjaFJlc3VsdENvbGxlY3Rvciwgc2VhcmNoU3luY2hyb25v
dXNseSkKKyAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSwgc2VhcmNoQ2FsbGJhY2sp
CiAgICAgewotICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRDb2xsZWN0b3IgPSBzZWFyY2hSZXN1
bHRDb2xsZWN0b3I7Ci0gICAgICAgIERPTUFnZW50LnBlcmZvcm1TZWFyY2gocXVlcnksICEhc2Vh
cmNoU3luY2hyb25vdXNseSk7CisgICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoKCk7CisKKyAgICAg
ICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoSWQKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9
IHJlc3VsdHNDb3VudAorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJy
b3IsIHNlYXJjaElkLCByZXN1bHRzQ291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMu
X3NlYXJjaElkID0gc2VhcmNoSWQ7CisgICAgICAgICAgICBzZWFyY2hDYWxsYmFjayhyZXN1bHRz
Q291bnQpOworICAgICAgICB9CisgICAgICAgIERPTUFnZW50LnBlcmZvcm1TZWFyY2gocXVlcnks
IGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gaW5kZXgKKyAgICAgKiBAcGFyYW0gez9mdW5jdGlvbihET01BZ2VudC5Ob2RlKX0g
Y2FsbGJhY2sKKyAgICAgKi8KKyAgICBzZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4LCBjYWxs
YmFjaykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWFyY2hJZCkgeworICAgICAgICAgICAg
LyoqCisgICAgICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAg
ICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPG51bWJlcj59IG5vZGVJZHMKKyAgICAgICAgICAgICAq
LworICAgICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgbm9kZUlkcykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51
bGwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmIChub2RlSWRzLmxlbmd0aCAhPSAxKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9pZFRvRE9NTm9kZVtu
b2RlSWRzWzBdXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBET01BZ2VudC5nZXRTZWFy
Y2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkLCBpbmRleCwgaW5kZXggKyAxLCBteWNhbGxiYWNrLmJp
bmQodGhpcykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwog
ICAgIH0sCiAKICAgICBjYW5jZWxTZWFyY2g6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLl9zZWFyY2hSZXN1bHRDb2xsZWN0b3I7Ci0gICAgICAgIERPTUFnZW50LmNhbmNl
bFNlYXJjaCgpOworICAgICAgICBpZiAodGhpcy5fc2VhcmNoSWQpIHsKKyAgICAgICAgICAgIERP
TUFnZW50LmRpc2NhcmRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkKTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zZWFyY2hJZDsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICAvKioKQEAg
LTEwMjAsMTUgKzEwNjAsNiBAQCBXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUg
PSB7CiAgICAgY2hpbGROb2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBub2RlSWQp
CiAgICAgewogICAgICAgICB0aGlzLl9kb21BZ2VudC5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnRO
b2RlSWQsIG5vZGVJZCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7QXJyYXku
PERPTUFnZW50Lk5vZGVJZD59IG5vZGVJZHMKLSAgICAgKi8KLSAgICBzZWFyY2hSZXN1bHRzOiBm
dW5jdGlvbihub2RlSWRzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2RvbUFnZW50Ll9zZWFy
Y2hSZXN1bHRDb2xsZWN0b3IpCi0gICAgICAgICAgICB0aGlzLl9kb21BZ2VudC5fc2VhcmNoUmVz
dWx0Q29sbGVjdG9yKG5vZGVJZHMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDZjMWViODE5ZDE2
MjNhNzgyYjhjY2I0ZWU1OWRhODcyMmRhMjZhZjQuLjA3NTg4ZTg2M2M4ZGM2ZGY1YTMyZTFkYTBh
NDQwNjkxMGNkM2NlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTI1Miw3ICsyNTIsNyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zZWFyY2hD
b250cm9sbGVyLnVwZGF0ZVNlYXJjaE1hdGNoZXNDb3VudCgwLCB0aGlzKTsKIAogICAgICAgICBk
ZWxldGUgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4OwotICAgICAgICB0aGlzLl9zZWFy
Y2hSZXN1bHRzID0gW107CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWFyY2hSZXN1bHRzOwogICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuY2FuY2VsU2VhcmNoKCk7CiAgICAgfSwKIApAQCAt
MjY1LDExICsyNjUsMjIgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIXdoaXRlc3BhY2VUcmltbWVkUXVlcnkubGVuZ3RoKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25jZSA9IGZhbHNl
OwotICAgICAgICB0aGlzLl9tYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBxdWVyeTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQucGVyZm9ybVNlYXJjaCh3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCB0aGlzLl9hZGROb2Rl
c1RvU2VhcmNoUmVzdWx0LmJpbmQodGhpcykpOworICAgICAgICAvKioKKyAgICAgICAgICogQHBh
cmFtIHtudW1iZXJ9IHJlc3VsdENvdW50CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBy
ZXN1bHRDb3VudENhbGxiYWNrKHJlc3VsdENvdW50KQorICAgICAgICB7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQocmVz
dWx0Q291bnQsIHRoaXMpOworICAgICAgICAgICAgaWYgKCFyZXN1bHRDb3VudCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBuZXcg
QXJyYXkocmVzdWx0Q291bnQpOworICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gLTE7CisgICAgICAgICAgICB0aGlzLmp1bXBUb05leHRTZWFyY2hSZXN1bHQoKTsK
KyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCh3
aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5LCByZXN1bHRDb3VudENhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgIH0sCiAKICAgICBfY29udGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKQEAg
LTMyMiw3MCArMzMzLDY1IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfdXBkYXRlTWF0Y2hlc0NvdW50OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVT
ZWFyY2hNYXRjaGVzQ291bnQodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgsIHRoaXMpOwotICAg
ICAgICB0aGlzLl9tYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gbnVsbDsKLSAgICAgICAgdGhp
cy5fdXBkYXRlZE1hdGNoQ291bnRPbmNlID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZU1h
dGNoZXNDb3VudFNvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdXBk
YXRlZE1hdGNoQ291bnRPbmNlKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZU1hdGNo
ZXNDb3VudCgpOwotICAgICAgICBpZiAodGhpcy5fbWF0Y2hlc0NvdW50VXBkYXRlVGltZW91dCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgLy8gVXBkYXRlIHRoZSBtYXRjaGVzIGNvdW50
IGV2ZXJ5IGhhbGYtc2Vjb25kIHNvIGl0IGRvZXNuJ3QgZmVlbCB0d2l0Y2h5LgotICAgICAgICB0
aGlzLl9tYXRjaGVzQ291bnRVcGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLl91cGRhdGVN
YXRjaGVzQ291bnQuYmluZCh0aGlzKSwgNTAwKTsKLSAgICB9LAotCi0gICAgX2FkZE5vZGVzVG9T
ZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKG5vZGVJZHMpCi0gICAgewotICAgICAgICBpZiAoIW5vZGVJ
ZHMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBvbGRTZWFyY2hS
ZXN1bHRJbmRleCA9IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleDsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBub2RlSWRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
bm9kZUlkID0gbm9kZUlkc1tpXTsKLSAgICAgICAgICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9y
LmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWQpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNo
UmVzdWx0SW5kZXggPSAwOwotICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKG5v
ZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQXZvaWQgaW52b2NhdGlvbnMgb2YgaGlnaGxp
Z2h0aW5nIGZvciBldmVyeSBjaHVuayBvZiBub2RlSWRzLgotICAgICAgICBpZiAob2xkU2VhcmNo
UmVzdWx0SW5kZXggIT09IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCkKLSAgICAgICAg
ICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKLSAgICAgICAgdGhpcy5f
dXBkYXRlTWF0Y2hlc0NvdW50U29vbigpOwotICAgIH0sCi0KICAgICBqdW1wVG9OZXh0U2VhcmNo
UmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3Vs
dHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICBpZiAoIXRoaXMuX3Nl
YXJjaFJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5faGlkZVNl
YXJjaEhpZ2hsaWdodHMoKTsKICAgICAgICAgaWYgKCsrdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID49IHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5f
Y3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3Vy
cmVudFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dEN1cnJlbnRTZWFyY2hSZXN1bHQodHJ1ZSk7CiAgICAgfSwKIAogICAgIGp1bXBUb1ByZXZpb3Vz
U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3NlYXJj
aFJlc3VsdHMgfHwgIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQorICAgICAgICBpZiAoIXRo
aXMuX3NlYXJjaFJlc3VsdHMpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5f
aGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKICAgICAgICAgaWYgKC0tdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4IDwgMCkKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCA9ICh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDEpOwotICAgICAgICB0aGlzLl9o
aWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KCk7CisKKyAgICAgICAgdGhpcy5faGlnaGxpZ2h0
Q3VycmVudFNlYXJjaFJlc3VsdChmYWxzZSk7CiAgICAgfSwKIAotICAgIF9oaWdobGlnaHRDdXJy
ZW50U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCisgICAgX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKGp1bXBUb05leHRPbkVtcHR5KQogICAgIHsKLSAgICAgICAgdGhpcy5f
aGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKLSAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9zZWFyY2hS
ZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07Ci0gICAgICAgIHZhciB0cmVl
RWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KG5vZGUpOworICAgICAg
ICB2YXIgaW5kZXggPSB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXg7CisgICAgICAgIHZh
ciBzZWFyY2hSZXN1bHRzID0gdGhpcy5fc2VhcmNoUmVzdWx0czsKKyAgICAgICAgdmFyIHNlYXJj
aFJlc3VsdCA9IHNlYXJjaFJlc3VsdHNbaW5kZXhdOworCisgICAgICAgIHZhciBuZXh0Q2FsbGJh
Y2sgPSBqdW1wVG9OZXh0T25FbXB0eSA/IHRoaXMuanVtcFRvTmV4dFNlYXJjaFJlc3VsdC5iaW5k
KHRoaXMpIDogdGhpcy5qdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdC5iaW5kKHRoaXMpOworCisg
ICAgICAgIGlmIChzZWFyY2hSZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEhvbGUs
IHNraXAgaXQKKyAgICAgICAgICAgIG5leHRDYWxsYmFjaygpOworCisgICAgICAgICAgICB0aGlz
Ll9zZWFyY2hXYXRjaERvZyA9ICh0aGlzLl9zZWFyY2hXYXRjaERvZyB8fCAwKSArIDE7CisgICAg
ICAgICAgICBpZiAodGhpcy5fc2VhcmNoV2F0Y2hEb2cgPiBzZWFyY2hSZXN1bHRzLmxlbmd0aCkg
eworICAgICAgICAgICAgICAgIC8vIEFsbCBlbGVtZW50cyBpbiB0aGUgc2VhcmNoIHJlc3VsdHMg
YXJlIG51bGxzIC0gZW50aXJlIHNlYXJjaCByZXN1bHQgc2V0IGlzIG9ic29sZXRlCisgICAgICAg
ICAgICAgICAgdGhpcy5zZWFyY2hDYW5jZWxlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2hSZXN1bHQg
PT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAvLyBObyBkYXRhIGZvciBzbG90LCByZXF1
ZXN0IGl0LgorICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobm9kZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzW2luZGV4XSA9IG5vZGUgfHwgbnVsbDsK
KyAgICAgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KGp1bXBU
b05leHRPbkVtcHR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5zZWFyY2hSZXN1bHQoaW5kZXgsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VhcmNoV2F0Y2hEb2cg
PSAwOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVDdXJyZW50
TWF0Y2hJbmRleChpbmRleCwgdGhpcyk7CisKKyAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhp
cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoc2VhcmNoUmVzdWx0KTsKICAgICAgICAgaWYg
KHRyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWdobGlnaHRTZWFyY2hS
ZXN1bHRzKHRoaXMuX3NlYXJjaFF1ZXJ5KTsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnJldmVh
bCgpOwpAQCAtMzk0LDEyICs0MDAsMTQgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgX2hpZGVTZWFyY2hIaWdobGlnaHRzOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICBmb3IgKHZhciBpID0gMDsgdGhpcy5fc2VhcmNoUmVzdWx0cyAmJiBpIDwgdGhp
cy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLl9zZWFyY2hSZXN1bHRzW2ldOwotICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhp
cy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICBpZiAodHJl
ZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlkZVNlYXJjaEhpZ2hsaWdo
dHMoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHQgPSB0aGlzLl9zZWFyY2hS
ZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07CisgICAgICAgIGlmICghc2Vh
cmNoUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChzZWFyY2hSZXN1bHQpOworICAgICAg
ICBpZiAodHJlZUVsZW1lbnQpCisgICAgICAgICAgICB0cmVlRWxlbWVudC5oaWRlU2VhcmNoSGln
aGxpZ2h0cygpOwogICAgIH0sCiAKICAgICBzZWxlY3RlZERPTU5vZGU6IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMK
aW5kZXggMjNlYjdiYjNiZTM4NWI0Mjk5ZmRlMWVhMTg4MDNmNDQwZDkzYWQzYy4uNThkNmEwMzI1
Yjk3NzA1NDE4MDQzMzc0MDBiNDhlYWIwOGYwOGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTExMjAsNyArMTEyMCw3
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgbm9kZS5yZXZlYWwoKTsKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRNYXRjaGVkUmVz
b3VyY2VJbmRleCA9IG1hdGNoZWRSZXNvdXJjZUluZGV4OwogICAgICAgICB9Ci0gICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5F
dmVudFR5cGVzLlNlYXJjaEluZGV4VXBkYXRlZCwgdGhpcy5fY3VycmVudE1hdGNoZWRSZXNvdXJj
ZUluZGV4ICsgMSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5FdmVudFR5cGVzLlNlYXJjaEluZGV4VXBkYXRlZCwgdGhp
cy5fY3VycmVudE1hdGNoZWRSZXNvdXJjZUluZGV4KTsKICAgICB9LAogCiAgICAgcGVyZm9ybVNl
YXJjaDogZnVuY3Rpb24oc2VhcmNoUXVlcnksIHNvcnRPckZpbHRlckFwcGxpZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpp
bmRleCAzMjUwYzVlNzA4NzgxZTFhZWRjZTNlMDZiNzBlOGMwY2JkYjlmOGZlLi40ODkwZTM3ODkw
NWRhNzlkNWJiNWM2ODZmNDI2MTg1MzE5YzRjOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTc0Myw3ICs3NDMs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIHJldHVybjsgLy8gVXNlciBoYXMgc2VsZWN0ZWQgYW5vdGhlciB2aWV3IHdoaWxlIHdl
IHdlcmUgc2VhcmNoaW5nLgogICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RTZWFyY2hSZXN1bHRJ
bmRleCAhPSAtMSkKICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVWaWV3Lmp1bXBUb1NlYXJj
aFJlc3VsdCh0aGlzLl9sYXN0U2VhcmNoUmVzdWx0SW5kZXgpOwotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgoc2VhcmNoUmVz
dWx0LmN1cnJlbnRNYXRjaEluZGV4LCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
ZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHNlYXJjaFJlc3VsdC5jdXJy
ZW50TWF0Y2hJbmRleCAtIDEsIHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlbiBy
dW4gU291cmNlRnJhbWUgc2VhcmNoIGlmIG5lZWRlZCBhbmQganVtcCB0byBzZWFyY2ggcmVzdWx0
IGluZGV4IHdoZW4gZG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNWMyM2YzYzE2YjE4ZDcwNDI4MDNlZjQxMTVmM2I1
YjA1OGRiZDhjZS4uNWQ0NDJiMTc4MmM0N2FhNWJmYjZiNGUwYzljMmVhZDI1MWZiNzIzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKQEAgLTExMTMsNyArMTExMyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRh
dGVTZWFyY2hNYXRjaGVzQ291bnQoc2VhcmNoTWF0Y2hlcywgdGhpcyk7CiAgICAgICAgICAgICB2
aWV3Lmp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
c2VhcmNoQ29udHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleCh2aWV3LmN1cnJlbnRTZWFy
Y2hSZXN1bHRJbmRleCArIDEsIHRoaXMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJj
aENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgodmlldy5jdXJyZW50U2VhcmNoUmVz
dWx0SW5kZXgsIHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2VhcmNoVmlldy5w
ZXJmb3JtU2VhcmNoKHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrLmJpbmQodGhpcykpOwpAQCAtMTEz
Myw3ICsxMTMzLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9zZWFyY2hWaWV3Lmp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0KCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFZpZXcuanVtcFRvTmV4dFNlYXJj
aFJlc3VsdCgpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVD
dXJyZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCArIDEsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRh
dGVDdXJyZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCwgdGhpcyk7CiAgICAgfSwKIAogICAgIGp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0OiBm
dW5jdGlvbigpCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFZpZXcuanVtcFRvTGFzdFNl
YXJjaFJlc3VsdCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hWaWV3
Lmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zZWFy
Y2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHRoaXMuX3NlYXJjaFZpZXcuY3Vy
cmVudFNlYXJjaFJlc3VsdEluZGV4ICsgMSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5z
ZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHRoaXMuX3NlYXJjaFZpZXcu
Y3VycmVudFNlYXJjaFJlc3VsdEluZGV4LCB0aGlzKTsKICAgICB9LAogCiAgICAgX3RvZ2dsZUZv
cm1hdFNvdXJjZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzCmluZGV4IGY2ZjY4NThiYzgzM2Q3YTAz
MWI3NTBhNjA1ZWQzNmY2OGIxZDM2MGEuLjAzOTM2MzlkY2JkOTkzZWZmYWU2Y2I5YmQ5ZDRkODIw
ZTYxYTE4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2VhcmNoQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKQEAgLTE2NCwxMyArMTY0LDEzIEBAIFdlYkluc3BlY3Rv
ci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAobWF0Y2hlcykg
ewogICAgICAgICAgICAgaWYgKG1hdGNoZXMgPT09IDEpIHsKLSAgICAgICAgICAgICAgICBpZiAo
Y3VycmVudE1hdGNoSW5kZXggPT09IDEpCisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRNYXRj
aEluZGV4ID09PSAwKQogICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiMSBvZiAxIG1hdGNoIik7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiMSBtYXRjaCIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY3VycmVudE1hdGNoSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaGVz
U3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBvZiAlZCBtYXRjaGVzIiwgY3VycmVu
dE1hdGNoSW5kZXgsIG1hdGNoZXMpOworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVu
dE1hdGNoSW5kZXggPT09ICJudW1iZXIiKQorICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hl
c1N0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgb2YgJWQgbWF0Y2hlcyIsIGN1cnJl
bnRNYXRjaEluZGV4ICsgMSwgbWF0Y2hlcyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
JWQgbWF0Y2hlcyIsIG1hdGNoZXMpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2NmUyNjhiMWRj
YjJlYjc3MmI2ZTBiMGIyYTQwNTljODY4ZDNhZDAuLjEzMDAwZDFiZjQxYmUxNWE3ZjNhMGFjYzcw
NDllN2E2M2M0NzRmMWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xMSAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
bWFrZSBzZWFyY2ggaW4gRE9NIHBhbmVsIHNjYWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5l
bC1zZWFyY2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9lbGVt
ZW50cy1wYW5lbC1zZWFyY2guaHRtbDoKKwogMjAxMS0xMS0xMSAgVG9ueSBHZW50aWxjb3JlICA8
dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENocm9taXVtIGV4cGVjdGF0aW9ucyBmb3Ig
bmV3IHRlc3QgaW4gcjk5OTM3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Vs
ZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXNlYXJjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4cGVjdGVkLnR4dAppbmRl
eCBkN2VlZWY1NzU5OTc3NGZmNmUwNWJiYWU0OGJiMDE2M2NlYWRkMTE2Li40NzQ3YTkwZmQyMTZl
MjlkNTRmZjdjNjhhZjIxYWZmNTc3NWViNzhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4cGVj
dGVkLnR4dApAQCAtMiwxNCArMiwzMCBAQCBUZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNlYXJj
aCBpcyByZXR1cm5pbmcgcHJvcGVyIHJlc3VsdHMuCiAKIEZvb0JhcgogCi09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLVJlc3VsdHM6Ci1Gb29CYXIKLUZvb0JhcgotPGlucHV0
IHZhbHVlPSJJbnB1dFZhbCI+Ci08aW5wdXQgdmFsdWU9IklucHV0VmFsIj4KLTxpbnB1dCB2YWx1
ZT0iSW5wdXRWYWwiPgotPGlucHV0IHZhbHVlPSJJbnB1dFZhbCI+Ci08aW5wdXQgdmFsdWU9Iklu
cHV0VmFsIj4KLTxkaXYgYXR0cj0iZm9vIj48L2Rpdj4KKworUnVubmluZzogdGVzdFNldFVwCisK
K1J1bm5pbmc6IHRlc3RQbGFpblRleHQKK0YgbyBvIEIgYSByCisKK1J1bm5pbmc6IHRlc3RQYXJ0
aWFsVGV4dAorRiBvIG8gQiBhIHIKKworUnVubmluZzogdGVzdFN0YXJ0VGFnCis8IGkgbiBwIHUg
dCAgIHYgYSBsIHUgZSA9ICIgSSBuIHAgdSB0IFYgYSBsICIgPgorCitSdW5uaW5nOiB0ZXN0UGFy
dGlhbFRhZworPCBpIG4gcCB1IHQgICB2IGEgbCB1IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4K
KworUnVubmluZzogdGVzdEV4YWN0QXR0cmlidXRlTmFtZQorPCBpIG4gcCB1IHQgICB2IGEgbCB1
IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVzdEV4YWN0QXR0cmlidXRl
VmFsX3VlCis8IGkgbiBwIHUgdCAgIHYgYSBsIHUgZSA9ICIgSSBuIHAgdSB0IFYgYSBsICIgPgor
CitSdW5uaW5nOiB0ZXN0UGFydGlhbEF0dHJpYnV0ZVZhbF91ZQorPCBpIG4gcCB1IHQgICB2IGEg
bCB1IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVzdFhQYXRoQXR0cmli
dXRlCis8IGQgaSB2ICAgYSB0IHQgciA9ICIgZiBvIG8gIiA+IDwgLyBkIGkgdiA+CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zZWFy
Y2guaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1z
ZWFyY2guaHRtbAppbmRleCAwYmVkNDJjZmM2MWU4MDRkYzBjNWQ0ZjA1MWM1OTlhNmQwYWJjODVm
Li40NmFkMzMwZjI0YmUxZTNhNzdmYmFmYzZiODViYjUwMjMyYjExMjg3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXNlYXJj
aC5odG1sCkBAIC03LDU2ICs3LDczIEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3Bl
Y3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAKLSAgICB2YXIgc2VhcmNoUmVzdWx0cyA9IFtd
OwotICAgIGZ1bmN0aW9uIGFkZFNlYXJjaFJlc3VsdChlcnJvciwgbWFya3VwVmFsdWUpCisgICAg
ZnVuY3Rpb24gc2VhcmNoQ2FsbGJhY2sobmV4dCwgcmVzdWx0Q291bnQpCiAgICAgewotICAgICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1hcmt1cFZh
bHVlLmluZGV4T2YoInRlciIgKyAibWkiICsgIm5hdG9yIikgIT09IC0xKSB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Iik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVzdWx0czoi
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhzZWFyY2hSZXN1bHRzKTsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaChtYXJrdXBWYWx1
ZSk7Ci0gICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdENvdW50OyArK2kp
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2VhcmNoUmVzdWx0KGksIHNlYXJj
aFJlc3VsdENhbGxiYWNrLmJpbmQodGhpcywgaSArIDEgPT09IHJlc3VsdENvdW50KSk7CiAKLSAg
ICBmdW5jdGlvbiBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KG5vZGVJZHMpCi0gICAgewotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZChub2RlSWRzW2ldKTsK
LSAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUuVEVYVF9OT0RFKQotICAg
ICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaChub2RlLm5vZGVWYWx1ZSgpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub2RlLmdldE91dGVySFRNTChhZGRTZWFyY2hS
ZXN1bHQpOworICAgICAgICBmdW5jdGlvbiBzZWFyY2hSZXN1bHRDYWxsYmFjayhpc0xhc3RJdGVt
LCBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBub2RlLmdldE91dGVySFRNTChhZGRTZWFy
Y2hSZXN1bHQuYmluZCh0aGlzLCBpc0xhc3RJdGVtKSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBhZGRTZWFyY2hSZXN1bHQoaXNMYXN0SXRlbSwgZXJyb3IsIG1hcmt1cFZhbHVlKQor
ICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChtYXJrdXBWYWx1
ZS5zcGxpdCgiIikuam9pbigiICIpKTsKKyAgICAgICAgICAgIGlmIChpc0xhc3RJdGVtKSB7Cisg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmNhbmNlbFNlYXJjaCgpOworICAg
ICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAot
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoc3RlcDEpOworICAgIElu
c3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNldFVwKG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0
RG9jdW1lbnQobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFBsYWlu
VGV4dChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
cGVyZm9ybVNlYXJjaCgiRm9vIiArICJCYXIiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5l
eHQpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UGFydGlhbFRleHQobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1T
ZWFyY2goIm9vIiArICJCYSIsIHNlYXJjaENhbGxiYWNrLmJpbmQodGhpcywgbmV4dCkpOworICAg
ICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTdGFydFRhZyhuZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiPGlucHUi
ICsgInQiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICAgICAgfSwKKwor
ICAgICAgICBmdW5jdGlvbiB0ZXN0UGFydGlhbFRhZyhuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgibnB1IiArICJ0Iiwgc2Vh
cmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdEV4YWN0QXR0cmlidXRlTmFtZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgidmFsdSIgKyAiZSIsIHNlYXJj
aENhbGxiYWNrLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RFeGFjdEF0dHJpYnV0ZVZhbF91ZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiSW4iICsgInB1dFZhIiArICJs
Iiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFBhcnRpYWxBdHRyaWJ1dGVWYWxfdWUobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goIm4iICsgInB1
dFZhIiArICJsIiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFhQYXRoQXR0cmlidXRlKG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCIvL2h0bWwi
ICsgIi8vQGF0dHIiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICAgICAg
fQorICAgIF0pOwogCi0gICAgZnVuY3Rpb24gc3RlcDEoKQotICAgIHsKLSAgICAgICAgLy8gUGxh
aW4gdGV4dC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goIkZv
byIgKyAiQmFyIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0gICAgICAgIC8vIFBh
cnRpYWwgdGV4dC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2go
Im9vIiArICJCYSIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUpOwotICAgICAgICAvLyBT
dGFydCB0YWcuCi0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCI8
aW5wdSIgKyAidCIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUpOwotICAgICAgICAvLyBQ
YXJ0aWFsIHRhZy4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2go
Im5wdSIgKyAidCIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUpOwotICAgICAgICAvLyBF
eGFjdCBhdHRyaWJ1dGUgbmFtZS4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZv
cm1TZWFyY2goInZhbHUiICsgImUiLCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAg
ICAgICAgLy8gRXhhY3QgYXR0cmlidXRlIHZhbDw+dWUuCi0gICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5wZXJmb3JtU2VhcmNoKCJJbiIgKyAicHV0VmEiICsgImwiLCBhZGROb2Rlc1RvU2Vh
cmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gUGFydGlhbCBhdHRyaWJ1dGUgdmFsPD51ZS4K
LSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2goIm4iICsgInB1dFZh
IiArICJsIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0gICAgICAgIC8vIFhQYXRo
IGF0dHJpYnV0ZS4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2go
Ii8vaHRtbCIgKyAiLy9AYXR0ciIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUpOwotICAg
ICAgICAvLyBUZXJtaW5hdG9yLgotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9y
bVNlYXJjaCgidGVyIiArICJtaSIgKyAibmF0b3IiLCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0LCB0
cnVlKTsKLSAgICB9CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114695</attachid>
            <date>2011-11-11 07:20:03 -0800</date>
            <delta_ts>2011-11-11 07:21:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72118-20111111192001.patch</filename>
            <type>text/plain</type>
            <size>40122</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmJiMzRhZjM4NmFhNTA4
NzRhZjg0Y2YxZTE5OWE4MDk0MjA0ZDlkLi44Mjc5OWFhMjU3NTM4YmVkYjI2Y2NlNThjZTUwYzhh
NmMxMzg0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkgQEAKIDIwMTEtMTEtMTEgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1ha2Ugc2VhcmNoIGluIERPTSBwYW5lbCBzY2FsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmdldFNlYXJjaFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5wZXJmb3JtU2VhcmNo
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUucGVy
Zm9ybVNlYXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLnNl
YXJjaFJlc3VsdC5teWNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuc2VhcmNoUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5w
cm90b3R5cGUuY2FuY2VsU2VhcmNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRj
aGVyLnByb3RvdHlwZS5jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gucmVzdWx0Q291bnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucGVyZm9ybVNl
YXJjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuanVt
cFRvTmV4dFNlYXJjaFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVz
dWx0Lik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX2hp
Z2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9oaWRlU2VhcmNoSGlnaGxpZ2h0cyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9oaWdobGlnaHROdGhNYXRjaGVkUmVzb3VyY2UpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9zaG93U2VhcmNoUmVzdWx0
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5
cGUuX3Nob3dTZWFyY2hSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucGVyZm9ybVNlYXJjaC5maW5pc2hlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5qdW1wVG9QcmV2aW91
c1NlYXJjaFJlc3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250
cm9sbGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIucHJvdG90
eXBlLl91cGRhdGVTZWFyY2hNYXRjaGVzQ291bnRBbmRDdXJyZW50TWF0Y2hJbmRleCk6CisKKzIw
MTEtMTEtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCiAgICAgICAg
IE5vdCByZXZpZXdlZDogcm9sbCBvdXQgY2hhbmdlcyB0byBJbnNwZWN0b3JET01BZ2VudCB0aGF0
IHNxdWVlemVkIGludG8gOTk5MzMuCiAKICAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDE5
N2YyZDM5ODhkODYwMjRjNjU0ZWZiYWMzMDJhZDI3YTYzOWYzNDYuLjhkYWU2ZTc3NTllNTVkYmEz
ZTVhYmExODVhMDJjZWVmMTgzMjBhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KQEAgLTEyMDgsMTUgKzEyMDgsMzQgQEAKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJwZXJmb3JtU2VhcmNoIiwKICAgICAgICAgICAgICAgICAicGFyYW1l
dGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQbGFpbiB0ZXh0IG9yIHF1ZXJ5IHNlbGVjdG9yIG9y
IFhQYXRoIHNlYXJjaCBxdWVyeS4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cnVuU3luY2hyb25vdXNseSIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiV2hlbiBzZXQgdG8gdHJ1ZSwgcGVyZm9ybWluZyBzZWFyY2ggc3luY2hy
b25vdXNseSAoY2FuIGJsb2NrIHVzZXIgaW50ZXJhY3Rpb24pLiIgfQorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IlBsYWluIHRleHQgb3IgcXVlcnkgc2VsZWN0b3Igb3IgWFBhdGggc2VhcmNoIHF1ZXJ5LiIgfQog
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YXJ0
cyBhc3luY2hyb25vdXMgc2VhcmNoIGZvciBhIGdpdmVuIHN0cmluZyBpbiB0aGUgRE9NIHRyZWUu
IFVzZSA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+IHRvIHN0b3AgZ2l2ZW4gYXN5bmNocm9ub3Vz
IHNlYXJjaCB0YXNrLiIsCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdENvdW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VhcmNoZXMgZm9yIGEgZ2l2
ZW4gc3RyaW5nIGluIHRoZSBET00gdHJlZS4gVXNlIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2Nv
ZGU+IHRvIGFjY2VzcyBzZWFyY2ggcmVzdWx0cyBvciA8Y29kZT5jYW5jZWxTZWFyY2g8L2NvZGU+
IHRvIGVuZCB0aGlzIHNlYXJjaCBzZXNzaW9uLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZ2V0U2VhcmNoUmVzdWx0cyIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VhcmNoSWQiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiVW5pcXVlIHNlYXJjaCBzZXNzaW9uIGlkZW50aWZpZXIuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyb21JbmRleCIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU3RhcnQgaW5kZXggb2YgdGhlIHNlYXJjaCByZXN1bHQg
dG8gYmUgcmV0dXJuZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRvSW5k
ZXgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkVuZCBpbmRleCBvZiB0aGUg
c2VhcmNoIHJlc3VsdCB0byBiZSByZXR1cm5lZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiTm9kZUlkIiB9
LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5vZGVzLiIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMg
c2VhcmNoIHJlc3VsdHMgZnJvbSBnaXZlbiA8Y29kZT5mcm9tSW5kZXg8L2NvZGU+IHRvIGdpdmVu
IDxjb2RlPnRvSW5kZXg8L2NvZGU+IGZyb20gdGhlIHNhcmNoIHdpdGggdGhlIGdpdmVuIGlkZW50
aWZpZXIuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5jZWxTZWFyY2giLAot
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYW5jZWxzIGFzeW5jaHJvbm91cyBzZWFy
Y2ggc3RhcnRlZCB3aXRoIDxjb2RlPnBlcmZvcm1TZWFyY2g8L2NvZGU+LiIsCisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiZGlzY2FyZFNlYXJjaFJlc3VsdHMiLAorICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlYXJjaElkIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBzZWFyY2ggc2Vzc2lvbiBp
ZGVudGlmaWVyLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2NhcmRzIHNlYXJjaCByZXN1bHRzIGZyb20gdGhlIHNlc3Npb24gd2l0aCB0
aGUgZ2l2ZW4gaWQuIDxjb2RlPmdldFNlYXJjaFJlc3VsdHM8L2NvZGU+IHNob3VsZCBubyBsb25n
ZXIgYmUgY2FsbGVkIGZvciB0aGF0IHNlYXJjaC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpAQCAtMTM4NywxNCArMTQwNiw2
IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9k
ZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3Zl
ZC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJNaXJyb3JzIDxjb2RlPkRPTU5vZGVSZW1vdmVkPC9jb2RlPiBldmVudC4iCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogInNlYXJjaFJlc3Vs
dHMiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5vZGVJZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiTm9kZUlkIiB9LCAiZGVzY3JpcHRpb24iOiAiSWRzIG9mIHRoZSBzZWFyY2ggcmVzdWx0IG5v
ZGVzLiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlB1c2hlcyBzZWFyY2ggcmVzdWx0cyBpbml0aWF0ZWQgdXNpbmcgPGNvZGU+cGVyZm9ybVNl
YXJjaDwvY29kZT4gdG8gdGhlIGNsaWVudC4iLAotICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMDI1MTFhM2QxNjYwNmUwZDY3
YzI5ZDk0YmQxOWRhYzFkZWM2YzhkMC4uOTJhM2U2NTg0ZmNmZjM3MzdjYWFhNjQzZDI2Yzg4NDdi
ZGM2NmI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmQuaCIKQEAgLTk2LDYgKzk3LDkgQEAgbmFtZXNwYWNlIERPTUFnZW50U3Rh
dGUgewogc3RhdGljIGNvbnN0IGNoYXIgZG9jdW1lbnRSZXF1ZXN0ZWRbXSA9ICJkb2N1bWVudFJl
cXVlc3RlZCI7CiB9OwogCitzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFRleHRTaXplID0gMTAwMDA7
CitzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKKwog
c3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNv
bG9yT2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QgfHwgISgqY29sb3JPYmplY3QpKQpA
QCAtMTQ2LDcgKzE1MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJlc3VsdENvbGxlY3Rv
ci5hZGQobm9kZXMtPml0ZW0oaSkpOwogICAgIH0KIAotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9xdWVyeTsK
IH07CiAKQEAgLTIzNCw3ICsyMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIFJlZlB0cjxYUGF0aFJlc3Vs
dD4gcmVzdWx0ID0gbV9kb2N1bWVudC0+ZXZhbHVhdGUobV9xdWVyeSwgbV9kb2N1bWVudC5nZXQo
KSwgMCwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCAwLCBlYyk7Cisg
ICAgICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4gcmVzdWx0ID0gbV9kb2N1bWVudC0+ZXZhbHVhdGUo
bV9xdWVyeSwgbV9kb2N1bWVudCwgMCwgWFBhdGhSZXN1bHQ6Ok9SREVSRURfTk9ERV9TTkFQU0hP
VF9UWVBFLCAwLCBlYyk7CiAgICAgICAgIGlmIChlYyB8fCAhcmVzdWx0KQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTUsNyArMjk5LDYgQEAgSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3Rv
ckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEkKICAg
ICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fZG9tTGlzdGVuZXIoMCkKICAgICAsIG1fbGFzdE5v
ZGVJZCgxKQotICAgICwgbV9tYXRjaEpvYnNUaW1lcih0aGlzLCAmSW5zcGVjdG9yRE9NQWdlbnQ6
Om9uTWF0Y2hKb2JzVGltZXIpCiAgICAgLCBtX3NlYXJjaGluZ0Zvck5vZGUoZmFsc2UpCiB7CiB9
CkBAIC0zNTksNyArMzYyLDcgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiB7CiAgICAgRXJy
b3JTdHJpbmcgZXJyb3I7Ci0gICAgY2FuY2VsU2VhcmNoKCZlcnJvcik7CisgICAgbV9zZWFyY2hS
ZXN1bHRzLmNsZWFyKCk7CiAgICAgZGlzY2FyZEJpbmRpbmdzKCk7CiAgICAgaWYgKG1fcmV2YWxp
ZGF0ZVN0eWxlQXR0clRhc2spCiAgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnJl
c2V0KCk7CkBAIC04OTYsNyArODk5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHQKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IGJvb2wq
IGNvbnN0IHJ1blN5bmNocm9ub3VzbHkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwZXJmb3Jt
U2VhcmNoKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5LCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KQogewogICAgIC8vIEZJ
WE1FOiBGZXcgdGhpbmdzIGFyZSBtaXNzaW5nIGhlcmU6CiAgICAgLy8gMSkgU2VhcmNoIHdvcmtz
IHdpdGggbm9kZSBncmFudWxhcml0eSAtIG51bWJlciBvZiBtYXRjaGVzIHdpdGhpbiBub2RlIGlz
IG5vdCBjYWxjdWxhdGVkLgpAQCAtOTIyLDMxICs5MjUsMjkgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgd2hp
dGVzcGEKICAgICBTdHJpbmcgZXNjYXBlZFRhZ05hbWVRdWVyeSA9IHRhZ05hbWVRdWVyeTsKICAg
ICBlc2NhcGVkVGFnTmFtZVF1ZXJ5LnJlcGxhY2UoIiciLCAiXFwnIik7CiAKLSAgICAvLyBDbGVh
ciBwZW5kaW5nIGpvYnMuCi0gICAgY2FuY2VsU2VhcmNoKGVycm9yKTsKLQogICAgIC8vIEZpbmQg
YWxsIGZyYW1lcywgaWZyYW1lcyBhbmQgb2JqZWN0IGVsZW1lbnRzIHRvIHNlYXJjaCB0aGVpciBk
b2N1bWVudHMuCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jcyA9IGRvY3VtZW50cygpOworICAg
IFZlY3RvcjxNYXRjaEpvYio+IG1hdGNoSm9iczsKICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudCo+
OjppdGVyYXRvciBpdCA9IGRvY3MuYmVnaW4oKTsgaXQgIT0gZG9jcy5lbmQoKTsgKytpdCkgewog
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAqaXQ7CiAKICAgICAgICAgaWYgKCF0YWdOYW1l
UXVlcnkuaXNFbXB0eSgpICYmIHN0YXJ0VGFnRm91bmQgJiYgZW5kVGFnRm91bmQpIHsKLSAgICAg
ICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RUYWdOYW1lc0pv
Yihkb2N1bWVudCwgdGFnTmFtZVF1ZXJ5KSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdNYXRjaEpv
YnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5KSk7
CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaEV4YWN0VGFnTmFtZXNKb2Io
ZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOworICAgICAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChu
ZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRhZ05hbWVRdWVyeS5pc0Vt
cHR5KCkgJiYgc3RhcnRUYWdGb3VuZCkgewotICAgICAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2Jz
LmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltzdGFydHMtd2l0aChuYW1l
KCksICciICsgZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7Ci0gICAgICAgICAgICBtX3Bl
bmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNj
YXBlZFF1ZXJ5KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRo
Sm9iKGRvY3VtZW50LCAiLy8qW3N0YXJ0cy13aXRoKG5hbWUoKSwgJyIgKyBlc2NhcGVkVGFnTmFt
ZVF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNo
UGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0YWdOYW1lUXVlcnkuaXNFbXB0eSgpICYm
IGVuZFRhZ0ZvdW5kKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGhhdmUgYSBt
YXRjaEVuZE9mVGFnTmFtZXMgc2VhcmNoIGZ1bmN0aW9uIGlmIGVuZFRhZ0ZvdW5kIGlzIHRydWUg
YnV0IG5vdCBzdGFydFRhZ0ZvdW5kLgogICAgICAgICAgICAgLy8gVGhpcyByZXF1aXJlcyBlbmRz
LXdpdGgoKSBzdXBwb3J0IGluIFhQYXRoLCBXZWJLaXQgb25seSBzdXBwb3J0cyBzdGFydHMtd2l0
aCgpIGFuZCBjb250YWlucygpLgotICAgICAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFwcGVu
ZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlucyhuYW1lKCksICciICsg
ZXNjYXBlZFRhZ05hbWVRdWVyeSArICInKV0iKSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdNYXRj
aEpvYnMuYXBwZW5kKG5ldyBNYXRjaFBsYWluVGV4dEpvYihkb2N1bWVudCwgZXNjYXBlZFF1ZXJ5
KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3Vt
ZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBlc2NhcGVkVGFnTmFtZVF1ZXJ5ICsgIicp
XSIpKTsKKyAgICAgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9i
KGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTk1NCw0MiArOTU1LDU4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZv
cm1TZWFyY2goRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhCiAgICAg
ICAgIGlmIChtYXRjaGVzRXZlcnlOb2RlKSB7CiAgICAgICAgICAgICAvLyBUaGVzZSBxdWVyaWVz
IHdpbGwgbWF0Y2ggZXZlcnkgbm9kZS4gTWF0Y2hpbmcgZXZlcnl0aGluZyBpc24ndCB1c2VmdWwg
YW5kIGNhbiBiZSBzbG93IGZvciBsYXJnZSBwYWdlcywKICAgICAgICAgICAgIC8vIHNvIGxpbWl0
IHRoZSBzZWFyY2ggZnVuY3Rpb25zIGxpc3QgdG8gcGxhaW4gdGV4dCBhbmQgYXR0cmlidXRlIG1h
dGNoaW5nIGZvciB0aGVzZS4KLSAgICAgICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQo
bmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIvLypbY29udGFpbnMoQCosICciICsgZXNjYXBl
ZFF1ZXJ5ICsgIicpXSIpKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQo
bmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkpKTsKKyAgICAgICAg
ICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoWFBhdGhKb2IoZG9jdW1lbnQsICIvLypbY29u
dGFpbnMoQCosICciICsgZXNjYXBlZFF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgICAgIG1hdGNo
Sm9icy5hcHBlbmQobmV3IE1hdGNoUGxhaW5UZXh0Sm9iKGRvY3VtZW50LCBlc2NhcGVkUXVlcnkp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wZW5kaW5n
TWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hFeGFjdElkSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNl
VHJpbW1lZFF1ZXJ5KSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1h
dGNoRXhhY3RDbGFzc05hbWVzSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSk7
Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RUYWdOYW1l
c0pvYihkb2N1bWVudCwgdGFnTmFtZVF1ZXJ5KSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9i
cy5hcHBlbmQobmV3IE1hdGNoUXVlcnlTZWxlY3RvckFsbEpvYihkb2N1bWVudCwgIlsiICsgYXR0
cmlidXRlTmFtZVF1ZXJ5ICsgIl0iKSk7Ci0gICAgICAgIG1fcGVuZGluZ01hdGNoSm9icy5hcHBl
bmQobmV3IE1hdGNoUXVlcnlTZWxlY3RvckFsbEpvYihkb2N1bWVudCwgd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeSkpOwotICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQ
YXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKEAqLCAnIiArIGVzY2FwZWRRdWVyeSArICIn
KV0iKSk7CisgICAgICAgIG1hdGNoSm9icy5hcHBlbmQobmV3IE1hdGNoRXhhY3RJZEpvYihkb2N1
bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5k
KG5ldyBNYXRjaEV4YWN0Q2xhc3NOYW1lc0pvYihkb2N1bWVudCwgd2hpdGVzcGFjZVRyaW1tZWRR
dWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaEV4YWN0VGFnTmFtZXNK
b2IoZG9jdW1lbnQsIHRhZ05hbWVRdWVyeSkpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaFF1ZXJ5U2VsZWN0b3JBbGxKb2IoZG9jdW1lbnQsICJbIiArIGF0dHJpYnV0ZU5hbWVR
dWVyeSArICJdIikpOworICAgICAgICBtYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFF1ZXJ5U2Vs
ZWN0b3JBbGxKb2IoZG9jdW1lbnQsIHdoaXRlc3BhY2VUcmltbWVkUXVlcnkpKTsKKyAgICAgICAg
bWF0Y2hKb2JzLmFwcGVuZChuZXcgTWF0Y2hYUGF0aEpvYihkb2N1bWVudCwgIi8vKltjb250YWlu
cyhAKiwgJyIgKyBlc2NhcGVkUXVlcnkgKyAiJyldIikpOwogICAgICAgICBpZiAoIXRhZ05hbWVR
dWVyeS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5l
dyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBlc2Nh
cGVkVGFnTmFtZVF1ZXJ5ICsgIicpXSIpKTsKLSAgICAgICAgbV9wZW5kaW5nTWF0Y2hKb2JzLmFw
cGVuZChuZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOwotICAg
ICAgICBtX3BlbmRpbmdNYXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50
LCB3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KSk7CisgICAgICAgICAgICBtYXRjaEpvYnMuYXBwZW5k
KG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCAiLy8qW2NvbnRhaW5zKG5hbWUoKSwgJyIgKyBl
c2NhcGVkVGFnTmFtZVF1ZXJ5ICsgIicpXSIpKTsKKyAgICAgICAgbWF0Y2hKb2JzLmFwcGVuZChu
ZXcgTWF0Y2hQbGFpblRleHRKb2IoZG9jdW1lbnQsIGVzY2FwZWRRdWVyeSkpOworICAgICAgICBt
YXRjaEpvYnMuYXBwZW5kKG5ldyBNYXRjaFhQYXRoSm9iKGRvY3VtZW50LCB3aGl0ZXNwYWNlVHJp
bW1lZFF1ZXJ5KSk7CisgICAgfQorCisgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IHJlc3VsdENvbGxl
Y3RvcjsKKyAgICBmb3IgKFZlY3RvcjxNYXRjaEpvYio+OjppdGVyYXRvciBpdCA9IG1hdGNoSm9i
cy5iZWdpbigpOyBpdCAhPSBtYXRjaEpvYnMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLT5t
YXRjaChyZXN1bHRDb2xsZWN0b3IpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtYXRjaEpvYnMpOwor
CisgICAgKnNlYXJjaElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7
CisgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgcmVzdWx0c0l0ID0gbV9zZWFyY2hSZXN1bHRz
LmFkZCgqc2VhcmNoSWQsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKS5maXJzdDsKKworICAgIGZv
ciAoTGlzdEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJlc3VsdENvbGxlY3Rvci5iZWdp
bigpOyBpdCAhPSByZXN1bHRDb2xsZWN0b3IuZW5kKCk7ICsraXQpCisgICAgICAgIHJlc3VsdHNJ
dC0+c2Vjb25kLmFwcGVuZCgqaXQpOworCisgICAgKnJlc3VsdENvdW50ID0gcmVzdWx0c0l0LT5z
ZWNvbmQuc2l6ZSgpOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1
bHRzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50
IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG5vZGVJZHMp
Cit7CisgICAgU2VhcmNoUmVzdWx0czo6aXRlcmF0b3IgaXQgPSBtX3NlYXJjaFJlc3VsdHMuZmlu
ZChzZWFyY2hJZCk7CisgICAgaWYgKGl0ID09IG1fc2VhcmNoUmVzdWx0cy5lbmQoKSkgeworICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gc2VhcmNoIHNlc3Npb24gd2l0aCBnaXZlbiBpZCBmb3Vu
ZCI7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocnVuU3luY2hyb25vdXNseSAm
JiAqcnVuU3luY2hyb25vdXNseSkgewotICAgICAgICAvLyBGb3IgdGVzdHMuCi0gICAgICAgIExp
c3RIYXNoU2V0PE5vZGUqPiByZXN1bHRDb2xsZWN0b3I7Ci0gICAgICAgIGZvciAoRGVxdWU8TWF0
Y2hKb2IqPjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdNYXRjaEpvYnMuYmVnaW4oKTsgaXQgIT0g
bV9wZW5kaW5nTWF0Y2hKb2JzLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgKCppdCktPm1hdGNo
KHJlc3VsdENvbGxlY3Rvcik7Ci0gICAgICAgIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKHJl
c3VsdENvbGxlY3Rvcik7Ci0gICAgICAgIGNhbmNlbFNlYXJjaChlcnJvcik7CisgICAgaW50IHNp
emUgPSBpdC0+c2Vjb25kLnNpemUoKTsKKyAgICBpZiAoZnJvbUluZGV4IDwgMCB8fCB0b0luZGV4
ID4gc2l6ZSB8fCBmcm9tSW5kZXggPj0gdG9JbmRleCkgeworICAgICAgICAqZXJyb3JTdHJpbmcg
PSAiSW52YWxpZCBzZWFyY2ggcmVzdWx0IHJhbmdlIjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBtX21hdGNoSm9ic1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKworICAgIGZvciAoaW50IGkg
PSBmcm9tSW5kZXg7IGkgPCB0b0luZGV4OyArK2kpCisgICAgICAgICgqbm9kZUlkcyktPnB1c2hO
dW1iZXIocHVzaE5vZGVQYXRoVG9Gcm9udGVuZCgoaXQtPnNlY29uZClbaV0uZ2V0KCkpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2FuY2VsU2VhcmNoKEVycm9yU3RyaW5nKikKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzZWFyY2hJZCkKIHsKLSAgICBpZiAobV9tYXRjaEpvYnNUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX21hdGNoSm9ic1RpbWVyLnN0b3AoKTsKLSAgICBkZWxldGVBbGxW
YWx1ZXMobV9wZW5kaW5nTWF0Y2hKb2JzKTsKLSAgICBtX3BlbmRpbmdNYXRjaEpvYnMuY2xlYXIo
KTsKLSAgICBtX3NlYXJjaFJlc3VsdHMuY2xlYXIoKTsKKyAgICBtX3NlYXJjaFJlc3VsdHMucmVt
b3ZlKHNlYXJjaElkKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlTW91c2VQ
cmVzcygpCkBAIC0xMjMyLDYgKzEyNDksMTAgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW4KICAg
ICAgICAgY2FzZSBOb2RlOjpDT01NRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFf
U0VDVElPTl9OT0RFOgogICAgICAgICAgICAgbm9kZVZhbHVlID0gbm9kZS0+bm9kZVZhbHVlKCk7
CisgICAgICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCgpID4gbWF4VGV4dFNpemUpIHsKKyAg
ICAgICAgICAgICAgICBub2RlVmFsdWUgPSBub2RlVmFsdWUubGVmdChtYXhUZXh0U2l6ZSk7Cisg
ICAgICAgICAgICAgICAgbm9kZVZhbHVlLmFwcGVuZChlbGxpcHNpc1VDaGFyKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9O
T0RFOgogICAgICAgICAgICAgbG9jYWxOYW1lID0gbm9kZS0+bG9jYWxOYW1lKCk7CkBAIC0xNTc1
LDM2ICsxNTk2LDYgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6b25NYXRjaEpvYnNUaW1lcihUaW1lcjxJbnNwZWN0b3JET01BZ2VudD4qKQotewotICAg
IGlmICghbV9wZW5kaW5nTWF0Y2hKb2JzLnNpemUoKSkgewotICAgICAgICBFcnJvclN0cmluZyBl
cnJvcjsKLSAgICAgICAgY2FuY2VsU2VhcmNoKCZlcnJvcik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBMaXN0SGFzaFNldDxOb2RlKj4gcmVzdWx0Q29sbGVjdG9yOwotICAgIE1hdGNo
Sm9iKiBqb2IgPSBtX3BlbmRpbmdNYXRjaEpvYnMudGFrZUZpcnN0KCk7Ci0gICAgam9iLT5tYXRj
aChyZXN1bHRDb2xsZWN0b3IpOwotICAgIGRlbGV0ZSBqb2I7Ci0KLSAgICByZXBvcnROb2Rlc0Fz
U2VhcmNoUmVzdWx0cyhyZXN1bHRDb2xsZWN0b3IpOwotCi0gICAgbV9tYXRjaEpvYnNUaW1lci5z
dGFydE9uZVNob3QoMC4wMjUpOwotfQotCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXBvcnRO
b2Rlc0FzU2VhcmNoUmVzdWx0cyhMaXN0SGFzaFNldDxOb2RlKj4mIHJlc3VsdENvbGxlY3RvcikK
LXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG5vZGVJZHMgPSBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCk7Ci0gICAgZm9yIChMaXN0SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gcmVz
dWx0Q29sbGVjdG9yLmJlZ2luKCk7IGl0ICE9IHJlc3VsdENvbGxlY3Rvci5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAobV9zZWFyY2hSZXN1bHRzLmNvbnRhaW5zKCppdCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgbV9zZWFyY2hSZXN1bHRzLmFkZCgqaXQpOwotICAgICAgICBu
b2RlSWRzLT5wdXNoTnVtYmVyKHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoKml0KSk7Ci0gICAgfQot
ICAgIG1fZnJvbnRlbmQtPnNlYXJjaFJlc3VsdHMobm9kZUlkcy5yZWxlYXNlKCkpOwotfQotCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50Ojpjb3B5Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQp
CiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAyOTg1MTMyOWJlOGU1YmJmNDFl
OGJjOWM0ZDg3YTRhYWVkNWI5ZGYyLi5jNDYyMGY3YjI2OTYyNDU5ZDliMzFjM2Q2MWQwZjRlYjMz
OTg0NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aApAQCAtMTI2LDggKzEyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE91dGVySFRNTChFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBpbnQqIG5ld0lk
KTsKICAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiogbGlzdGVuZXJzQXJy
YXkpOwotICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
d2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgYm9vbCogY29uc3QgcnVuU3luY2hyb25vdXNs
eSk7Ci0gICAgdm9pZCBjYW5jZWxTZWFyY2goRXJyb3JTdHJpbmcqKTsKKyAgICB2b2lkIHBlcmZv
cm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVl
cnksIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOworICAgIHZvaWQgZ2V0U2Vh
cmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9t
SW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Kik7CisgICAgdm9pZCBk
aXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQp
OwogICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0
KTsKICAgICB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwogICAgIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogaGlnaGxpZ2h0Q29uZmlnKTsKQEAgLTIwOSw5ICsyMTAsNiBAQCBwcml2YXRlOgogICAg
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJl
bihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
KGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIE5vZGUqKTsKIAotICAgIHZvaWQgb25NYXRjaEpvYnNUaW1lcihUaW1lcjxJbnNwZWN0
b3JET01BZ2VudD4qKTsKLSAgICB2b2lkIHJlcG9ydE5vZGVzQXNTZWFyY2hSZXN1bHRzKExpc3RI
YXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKTsKLQogICAgIE5vZGUqIG5vZGVGb3JQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwpAQCAt
MjMxLDkgKzIyOSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hpbGRyZW5SZXF1
ZXN0ZWQ7CiAgICAgaW50IG1fbGFzdE5vZGVJZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7Ci0gICAgRGVxdWU8TWF0Y2hKb2IqPiBtX3BlbmRpbmdNYXRjaEpvYnM7Ci0gICAgVGlt
ZXI8SW5zcGVjdG9yRE9NQWdlbnQ+IG1fbWF0Y2hKb2JzVGltZXI7Ci0gICAgSGFzaFNldDxSZWZQ
dHI8Tm9kZT4gPiBtX3NlYXJjaFJlc3VsdHM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+ID4gU2VhcmNoUmVzdWx0czsKKyAgICBTZWFyY2hSZXN1bHRz
IG1fc2VhcmNoUmVzdWx0czsKICAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFz
az4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAgICBPd25QdHI8SGlnaGxpZ2h0RGF0YT4g
bV9oaWdobGlnaHREYXRhOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXggMjM2OWEy
M2UxMGQwMTY0YjVmYjkyYzYwM2M2MzQ1MWFiZTNhNzVjYi4uOGUyMzNjY2JhODk1NzE3ZGExN2Vj
YjJhYThiYzBmYmUxNDJiMGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCkBAIC04MzIsMTkgKzgzMiw1OSBAQCBXZWJJbnNwZWN0b3IuRE9N
QWdlbnQucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHF1
ZXJ5Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48RE9NQWdlbnQuTm9kZT4pfSBzZWFy
Y2hSZXN1bHRDb2xsZWN0b3IKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzZWFyY2hTeW5jaHJv
bm91c2x5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpfSBzZWFyY2hDYWxsYmFjawog
ICAgICAqLwotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5LCBzZWFyY2hSZXN1bHRD
b2xsZWN0b3IsIHNlYXJjaFN5bmNocm9ub3VzbHkpCisgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rp
b24ocXVlcnksIHNlYXJjaENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5fc2VhcmNoUmVz
dWx0Q29sbGVjdG9yID0gc2VhcmNoUmVzdWx0Q29sbGVjdG9yOwotICAgICAgICBET01BZ2VudC5w
ZXJmb3JtU2VhcmNoKHF1ZXJ5LCAhIXNlYXJjaFN5bmNocm9ub3VzbHkpOworICAgICAgICB0aGlz
LmNhbmNlbFNlYXJjaCgpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90
b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaElkCisg
ICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXN1bHRzQ291bnQKKyAgICAgICAgICovCisgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl9zZWFyY2hJZCA9IHNlYXJjaElkOworICAgICAgICAg
ICAgc2VhcmNoQ2FsbGJhY2socmVzdWx0c0NvdW50KTsKKyAgICAgICAgfQorICAgICAgICBET01B
Z2VudC5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4CisgICAgICogQHBhcmFtIHs/
ZnVuY3Rpb24oRE9NQWdlbnQuTm9kZSl9IGNhbGxiYWNrCisgICAgICovCisgICAgc2VhcmNoUmVz
dWx0OiBmdW5jdGlvbihpbmRleCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5f
c2VhcmNoSWQpIHsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogQHBhcmFtIHs/UHJv
dG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+
fSBub2RlSWRzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJh
Y2soZXJyb3IsIG5vZGVJZHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGVy
cm9yKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGgg
IT0gMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2sodGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkc1swXV0pOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgRE9NQWdlbnQuZ2V0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFyY2hJZCwgaW5kZXgs
IGluZGV4ICsgMSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICB9LAogCiAgICAgY2FuY2VsU2VhcmNoOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoUmVzdWx0Q29sbGVjdG9y
OwotICAgICAgICBET01BZ2VudC5jYW5jZWxTZWFyY2goKTsKKyAgICAgICAgaWYgKHRoaXMuX3Nl
YXJjaElkKSB7CisgICAgICAgICAgICBET01BZ2VudC5kaXNjYXJkU2VhcmNoUmVzdWx0cyh0aGlz
Ll9zZWFyY2hJZCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VhcmNoSWQ7CisgICAgICAg
IH0KICAgICB9LAogCiAgICAgLyoqCkBAIC0xMDIwLDE1ICsxMDYwLDYgQEAgV2ViSW5zcGVjdG9y
LkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIGNoaWxkTm9kZVJlbW92ZWQ6IGZ1bmN0
aW9uKHBhcmVudE5vZGVJZCwgbm9kZUlkKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tQWdlbnQu
X2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlSWQ+fSBub2RlSWRzCi0gICAg
ICovCi0gICAgc2VhcmNoUmVzdWx0czogZnVuY3Rpb24obm9kZUlkcykKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9kb21BZ2VudC5fc2VhcmNoUmVzdWx0Q29sbGVjdG9yKQotICAgICAgICAgICAg
dGhpcy5fZG9tQWdlbnQuX3NlYXJjaFJlc3VsdENvbGxlY3Rvcihub2RlSWRzKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qcwppbmRleCA2YzFlYjgxOWQxNjIzYTc4MmI4Y2NiNGVlNTlkYTg3MjJkYTI2YWY0Li41
MWZlNzFhZWFlZTdjMzI1NjgzMWVhNWEzMjY1Njk4YzFhYzI4OWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0yNTIs
NyArMjUyLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291
bnQoMCwgdGhpcyk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleDsKLSAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOworICAgICAgICBkZWxldGUg
dGhpcy5fc2VhcmNoUmVzdWx0czsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmNhbmNl
bFNlYXJjaCgpOwogICAgIH0sCiAKQEAgLTI2NSwxMSArMjY1LDIyIEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5Lmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl91cGRh
dGVkTWF0Y2hDb3VudE9uY2UgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50VXBk
YXRlVGltZW91dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gcXVlcnk7CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFyY2god2hpdGVzcGFjZVRy
aW1tZWRRdWVyeSwgdGhpcy5fYWRkTm9kZXNUb1NlYXJjaFJlc3VsdC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXN1bHRDb3VudAorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gcmVzdWx0Q291bnRDYWxsYmFjayhyZXN1bHRDb3VudCkK
KyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBk
YXRlU2VhcmNoTWF0Y2hlc0NvdW50KHJlc3VsdENvdW50LCB0aGlzKTsKKyAgICAgICAgICAgIGlm
ICghcmVzdWx0Q291bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0
aGlzLl9zZWFyY2hSZXN1bHRzID0gbmV3IEFycmF5KHJlc3VsdENvdW50KTsKKyAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOworICAgICAgICAgICAgdGhpcy5q
dW1wVG9OZXh0U2VhcmNoUmVzdWx0KCk7CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnBlcmZvcm1TZWFyY2god2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgcmVzdWx0Q291
bnRDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCiAgICAgX2NvbnRleHRNZW51RXZlbnRG
aXJlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC0zMjIsNzAgKzMzMyw1NSBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX3Vw
ZGF0ZU1hdGNoZXNDb3VudDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnNlYXJjaENvbnRyb2xsZXIudXBkYXRlU2VhcmNoTWF0Y2hlc0NvdW50KHRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50VXBkYXRlVGlt
ZW91dCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25jZSA9IHRydWU7
Ci0gICAgfSwKLQotICAgIF91cGRhdGVNYXRjaGVzQ291bnRTb29uOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZWRNYXRjaENvdW50T25jZSkKLSAgICAgICAgICAg
IHJldHVybiB0aGlzLl91cGRhdGVNYXRjaGVzQ291bnQoKTsKLSAgICAgICAgaWYgKHRoaXMuX21h
dGNoZXNDb3VudFVwZGF0ZVRpbWVvdXQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIC8v
IFVwZGF0ZSB0aGUgbWF0Y2hlcyBjb3VudCBldmVyeSBoYWxmLXNlY29uZCBzbyBpdCBkb2Vzbid0
IGZlZWwgdHdpdGNoeS4KLSAgICAgICAgdGhpcy5fbWF0Y2hlc0NvdW50VXBkYXRlVGltZW91dCA9
IHNldFRpbWVvdXQodGhpcy5fdXBkYXRlTWF0Y2hlc0NvdW50LmJpbmQodGhpcyksIDUwMCk7Ci0g
ICAgfSwKLQotICAgIF9hZGROb2Rlc1RvU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihub2RlSWRzKQot
ICAgIHsKLSAgICAgICAgaWYgKCFub2RlSWRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB2YXIgb2xkU2VhcmNoUmVzdWx0SW5kZXggPSB0aGlzLl9jdXJyZW50U2VhcmNo
UmVzdWx0SW5kZXg7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUlkcy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdmFyIG5vZGVJZCA9IG5vZGVJZHNbaV07Ci0gICAgICAgICAg
ICB2YXIgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2RlRm9ySWQobm9kZUlkKTsKLSAg
ICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgICAgIHRo
aXMuX3NlYXJjaFJlc3VsdHMucHVzaChub2RlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEF2
b2lkIGludm9jYXRpb25zIG9mIGhpZ2hsaWdodGluZyBmb3IgZXZlcnkgY2h1bmsgb2Ygbm9kZUlk
cy4KLSAgICAgICAgaWYgKG9sZFNlYXJjaFJlc3VsdEluZGV4ICE9PSB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXgpCi0gICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRDdXJyZW50U2VhcmNo
UmVzdWx0KCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZU1hdGNoZXNDb3VudFNvb24oKTsKLSAgICB9
LAotCiAgICAganVtcFRvTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aCkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7CiAgICAgICAgIGlmICgr
K3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA+PSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxl
bmd0aCkKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7Ci0g
ICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoKTsKKyAgICAgICAgICAg
IAorICAgICAgICB0aGlzLl9oaWdobGlnaHRDdXJyZW50U2VhcmNoUmVzdWx0KHRydWUpOwogICAg
IH0sCiAKICAgICBqdW1wVG9QcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzIHx8ICF0aGlzLl9zZWFyY2hSZXN1bHRz
Lmxlbmd0aCkKKyAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAgICAgICAgICAg
cmV0dXJuOwogCisgICAgICAgIHRoaXMuX2hpZGVTZWFyY2hIaWdobGlnaHRzKCk7CiAgICAgICAg
IGlmICgtLXRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA8IDApCiAgICAgICAgICAgICB0
aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5n
dGggLSAxKTsKLSAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdCgpOwor
CisgICAgICAgIHRoaXMuX2hpZ2hsaWdodEN1cnJlbnRTZWFyY2hSZXN1bHQoZmFsc2UpOwogICAg
IH0sCiAKICAgICBfaGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgdGhpcy5faGlkZVNlYXJjaEhpZ2hsaWdodHMoKTsKLSAgICAgICAgdmFyIG5v
ZGUgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07
Ci0gICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuZmluZFRyZWVFbGVt
ZW50KG5vZGUpOworICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXg7CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHRzID0gdGhpcy5fc2VhcmNoUmVzdWx0czsK
KyAgICAgICAgdmFyIHNlYXJjaFJlc3VsdCA9IHNlYXJjaFJlc3VsdHNbaW5kZXhdOworCisgICAg
ICAgIGlmIChzZWFyY2hSZXN1bHQgPT09IG51bGwpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KGluZGV4LCB0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlb2Ygc2Vh
cmNoUmVzdWx0ID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3Ig
c2xvdCwgcmVxdWVzdCBpdC4KKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGUpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0c1tpbmRleF0gPSBub2Rl
IHx8IG51bGw7CisgICAgICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0Q3VycmVudFNlYXJjaFJl
c3VsdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnNlYXJjaFJlc3VsdChpbmRleCwgY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxl
ci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleChpbmRleCwgdGhpcyk7CisKKyAgICAgICAgdmFyIHRy
ZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoc2VhcmNoUmVzdWx0
KTsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5o
aWdobGlnaHRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaFF1ZXJ5KTsKICAgICAgICAgICAgIHRy
ZWVFbGVtZW50LnJldmVhbCgpOwpAQCAtMzk0LDEyICszOTAsMTQgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2hpZGVTZWFyY2hIaWdobGlnaHRzOiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgdGhpcy5fc2VhcmNoUmVz
dWx0cyAmJiBpIDwgdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzLl9zZWFyY2hSZXN1bHRzW2ldOwotICAgICAgICAgICAgdmFyIHRy
ZWVFbGVtZW50ID0gdGhpcy50cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQobm9kZSk7Ci0gICAg
ICAgICAgICBpZiAodHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlk
ZVNlYXJjaEhpZ2hsaWdodHMoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXRoaXMuX3NlYXJj
aFJlc3VsdHMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzZWFyY2hSZXN1bHQg
PSB0aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleF07Cisg
ICAgICAgIGlmICghc2VhcmNoUmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2
YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChzZWFyY2hS
ZXN1bHQpOworICAgICAgICBpZiAodHJlZUVsZW1lbnQpCisgICAgICAgICAgICB0cmVlRWxlbWVu
dC5oaWRlU2VhcmNoSGlnaGxpZ2h0cygpOwogICAgIH0sCiAKICAgICBzZWxlY3RlZERPTU5vZGU6
IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKaW5kZXggMjNlYjdiYjNiZTM4NWI0Mjk5ZmRlMWVhMTg4MDNmNDQwZDkz
YWQzYy4uNThkNmEwMzI1Yjk3NzA1NDE4MDQzMzc0MDBiNDhlYWIwOGYwOGIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAg
LTExMjAsNyArMTEyMCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgbm9kZS5yZXZlYWwoKTsKICAgICAgICAgICAgIHRoaXMuX2N1
cnJlbnRNYXRjaGVkUmVzb3VyY2VJbmRleCA9IG1hdGNoZWRSZXNvdXJjZUluZGV4OwogICAgICAg
ICB9Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5O
ZXR3b3JrTG9nVmlldy5FdmVudFR5cGVzLlNlYXJjaEluZGV4VXBkYXRlZCwgdGhpcy5fY3VycmVu
dE1hdGNoZWRSZXNvdXJjZUluZGV4ICsgMSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5FdmVudFR5cGVzLlNlYXJjaElu
ZGV4VXBkYXRlZCwgdGhpcy5fY3VycmVudE1hdGNoZWRSZXNvdXJjZUluZGV4KTsKICAgICB9LAog
CiAgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oc2VhcmNoUXVlcnksIHNvcnRPckZpbHRlckFw
cGxpZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcwppbmRleCAzMjUwYzVlNzA4NzgxZTFhZWRjZTNlMDZiNzBlOGMwY2JkYjlm
OGZlLi40ODkwZTM3ODkwNWRhNzlkNWJiNWM2ODZmNDI2MTg1MzE5YzRjOTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMK
QEAgLTc0Myw3ICs3NDMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIHJldHVybjsgLy8gVXNlciBoYXMgc2VsZWN0ZWQgYW5vdGhl
ciB2aWV3IHdoaWxlIHdlIHdlcmUgc2VhcmNoaW5nLgogICAgICAgICAgICAgaWYgKHRoaXMuX2xh
c3RTZWFyY2hSZXN1bHRJbmRleCAhPSAtMSkKICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVW
aWV3Lmp1bXBUb1NlYXJjaFJlc3VsdCh0aGlzLl9sYXN0U2VhcmNoUmVzdWx0SW5kZXgpOwotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNo
SW5kZXgoc2VhcmNoUmVzdWx0LmN1cnJlbnRNYXRjaEluZGV4LCB0aGlzKTsKKyAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHNl
YXJjaFJlc3VsdC5jdXJyZW50TWF0Y2hJbmRleCAtIDEsIHRoaXMpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gVGhlbiBydW4gU291cmNlRnJhbWUgc2VhcmNoIGlmIG5lZWRlZCBhbmQganVtcCB0
byBzZWFyY2ggcmVzdWx0IGluZGV4IHdoZW4gZG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNWMyM2YzYzE2YjE4ZDcw
NDI4MDNlZjQxMTVmM2I1YjA1OGRiZDhjZS4uNWQ0NDJiMTc4MmM0N2FhNWJmYjZiNGUwYzljMmVh
ZDI1MWZiNzIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKQEAgLTExMTMsNyArMTExMyw3IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNo
Q29udHJvbGxlci51cGRhdGVTZWFyY2hNYXRjaGVzQ291bnQoc2VhcmNoTWF0Y2hlcywgdGhpcyk7
CiAgICAgICAgICAgICB2aWV3Lmp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29udHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleCh2
aWV3LmN1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCArIDEsIHRoaXMpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnNlYXJjaENvbnRyb2xsZXIudXBkYXRlQ3VycmVudE1hdGNoSW5kZXgodmlldy5j
dXJyZW50U2VhcmNoUmVzdWx0SW5kZXgsIHRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fc2VhcmNoVmlldy5wZXJmb3JtU2VhcmNoKHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrLmJpbmQo
dGhpcykpOwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hWaWV3Lmp1bXBUb0ZpcnN0U2Vh
cmNoUmVzdWx0KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFZpZXcu
anVtcFRvTmV4dFNlYXJjaFJlc3VsdCgpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNoQ29u
dHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCArIDEsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2VhcmNo
Q29udHJvbGxlci51cGRhdGVDdXJyZW50TWF0Y2hJbmRleCh0aGlzLl9zZWFyY2hWaWV3LmN1cnJl
bnRTZWFyY2hSZXN1bHRJbmRleCwgdGhpcyk7CiAgICAgfSwKIAogICAgIGp1bXBUb1ByZXZpb3Vz
U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFZp
ZXcuanVtcFRvTGFzdFNlYXJjaFJlc3VsdCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9zZWFyY2hWaWV3Lmp1bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHRoaXMu
X3NlYXJjaFZpZXcuY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ICsgMSwgdGhpcyk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5zZWFyY2hDb250cm9sbGVyLnVwZGF0ZUN1cnJlbnRNYXRjaEluZGV4KHRo
aXMuX3NlYXJjaFZpZXcuY3VycmVudFNlYXJjaFJlc3VsdEluZGV4LCB0aGlzKTsKICAgICB9LAog
CiAgICAgX3RvZ2dsZUZvcm1hdFNvdXJjZTogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWFyY2hDb250cm9sbGVyLmpzCmluZGV4IGY2
ZjY4NThiYzgzM2Q3YTAzMWI3NTBhNjA1ZWQzNmY2OGIxZDM2MGEuLjAzOTM2MzlkY2JkOTkzZWZm
YWU2Y2I5YmQ5ZDRkODIwZTYxYTE4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2VhcmNoQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMKQEAgLTE2NCwxMyArMTY0LDEz
IEBAIFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAobWF0Y2hlcykgewogICAgICAgICAgICAgaWYgKG1hdGNoZXMgPT09IDEpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY3VycmVudE1hdGNoSW5kZXggPT09IDEpCisgICAgICAgICAgICAgICAg
aWYgKGN1cnJlbnRNYXRjaEluZGV4ID09PSAwKQogICAgICAgICAgICAgICAgICAgICB2YXIgbWF0
Y2hlc1N0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiMSBvZiAxIG1hdGNoIik7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiMSBtYXRjaCIpOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAoY3VycmVudE1hdGNoSW5kZXgpCi0gICAgICAgICAgICAgICAg
ICAgIHZhciBtYXRjaGVzU3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlZCBvZiAlZCBt
YXRjaGVzIiwgY3VycmVudE1hdGNoSW5kZXgsIG1hdGNoZXMpOworICAgICAgICAgICAgICAgIGlm
ICh0eXBlb2YgY3VycmVudE1hdGNoSW5kZXggPT09ICJudW1iZXIiKQorICAgICAgICAgICAgICAg
ICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgb2YgJWQg
bWF0Y2hlcyIsIGN1cnJlbnRNYXRjaEluZGV4ICsgMSwgbWF0Y2hlcyk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlc1N0cmluZyA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiJWQgbWF0Y2hlcyIsIG1hdGNoZXMpOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ2NmUyNjhiMWRjYjJlYjc3MmI2ZTBiMGIyYTQwNTljODY4ZDNhZDAuLjEzMDAwZDFiZjQx
YmUxNWE3ZjNhMGFjYzcwNDllN2E2M2M0NzRmMWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0xMS0xMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogbWFrZSBzZWFyY2ggaW4gRE9NIHBhbmVsIHNjYWxlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxMTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50
cy9lbGVtZW50cy1wYW5lbC1zZWFyY2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy9lbGVtZW50cy1wYW5lbC1zZWFyY2guaHRtbDoKKwogMjAxMS0xMS0xMSAgVG9u
eSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENocm9taXVtIGV4
cGVjdGF0aW9ucyBmb3IgbmV3IHRlc3QgaW4gcjk5OTM3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1lbnRzLXBhbmVsLXNlYXJjaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4
cGVjdGVkLnR4dAppbmRleCBkN2VlZWY1NzU5OTc3NGZmNmUwNWJiYWU0OGJiMDE2M2NlYWRkMTE2
Li40NzQ3YTkwZmQyMTZlMjlkNTRmZjdjNjhhZjIxYWZmNTc3NWViNzhmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFuZWwtc2VhcmNoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFu
ZWwtc2VhcmNoLWV4cGVjdGVkLnR4dApAQCAtMiwxNCArMiwzMCBAQCBUZXN0cyB0aGF0IGVsZW1l
bnRzIHBhbmVsIHNlYXJjaCBpcyByZXR1cm5pbmcgcHJvcGVyIHJlc3VsdHMuCiAKIEZvb0Jhcgog
Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLVJlc3VsdHM6Ci1Gb29CYXIK
LUZvb0JhcgotPGlucHV0IHZhbHVlPSJJbnB1dFZhbCI+Ci08aW5wdXQgdmFsdWU9IklucHV0VmFs
Ij4KLTxpbnB1dCB2YWx1ZT0iSW5wdXRWYWwiPgotPGlucHV0IHZhbHVlPSJJbnB1dFZhbCI+Ci08
aW5wdXQgdmFsdWU9IklucHV0VmFsIj4KLTxkaXYgYXR0cj0iZm9vIj48L2Rpdj4KKworUnVubmlu
ZzogdGVzdFNldFVwCisKK1J1bm5pbmc6IHRlc3RQbGFpblRleHQKK0YgbyBvIEIgYSByCisKK1J1
bm5pbmc6IHRlc3RQYXJ0aWFsVGV4dAorRiBvIG8gQiBhIHIKKworUnVubmluZzogdGVzdFN0YXJ0
VGFnCis8IGkgbiBwIHUgdCAgIHYgYSBsIHUgZSA9ICIgSSBuIHAgdSB0IFYgYSBsICIgPgorCitS
dW5uaW5nOiB0ZXN0UGFydGlhbFRhZworPCBpIG4gcCB1IHQgICB2IGEgbCB1IGUgPSAiIEkgbiBw
IHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVzdEV4YWN0QXR0cmlidXRlTmFtZQorPCBpIG4g
cCB1IHQgICB2IGEgbCB1IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4KKworUnVubmluZzogdGVz
dEV4YWN0QXR0cmlidXRlVmFsX3VlCis8IGkgbiBwIHUgdCAgIHYgYSBsIHUgZSA9ICIgSSBuIHAg
dSB0IFYgYSBsICIgPgorCitSdW5uaW5nOiB0ZXN0UGFydGlhbEF0dHJpYnV0ZVZhbF91ZQorPCBp
IG4gcCB1IHQgICB2IGEgbCB1IGUgPSAiIEkgbiBwIHUgdCBWIGEgbCAiID4KKworUnVubmluZzog
dGVzdFhQYXRoQXR0cmlidXRlCis8IGQgaSB2ICAgYSB0IHQgciA9ICIgZiBvIG8gIiA+IDwgLyBk
IGkgdiA+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9lbGVt
ZW50cy1wYW5lbC1zZWFyY2guaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9l
bGVtZW50cy1wYW5lbC1zZWFyY2guaHRtbAppbmRleCAwYmVkNDJjZmM2MWU4MDRkYzBjNWQ0ZjA1
MWM1OTlhNmQwYWJjODVmLi40NmFkMzMwZjI0YmUxZTNhNzdmYmFmYzZiODViYjUwMjMyYjExMjg3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZWxlbWVudHMtcGFu
ZWwtc2VhcmNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2VsZW1l
bnRzLXBhbmVsLXNlYXJjaC5odG1sCkBAIC03LDU2ICs3LDczIEBAIGZ1bmN0aW9uIHRlc3QoKQog
ewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CiAKLSAgICB2YXIgc2Vh
cmNoUmVzdWx0cyA9IFtdOwotICAgIGZ1bmN0aW9uIGFkZFNlYXJjaFJlc3VsdChlcnJvciwgbWFy
a3VwVmFsdWUpCisgICAgZnVuY3Rpb24gc2VhcmNoQ2FsbGJhY2sobmV4dCwgcmVzdWx0Q291bnQp
CiAgICAgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKG1hcmt1cFZhbHVlLmluZGV4T2YoInRlciIgKyAibWkiICsgIm5hdG9yIikgIT09IC0x
KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Iik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiUmVzdWx0czoiKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0cyhz
ZWFyY2hSZXN1bHRzKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgIHNlYXJjaFJlc3VsdHMu
cHVzaChtYXJrdXBWYWx1ZSk7Ci0gICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
c3VsdENvdW50OyArK2kpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuc2VhcmNo
UmVzdWx0KGksIHNlYXJjaFJlc3VsdENhbGxiYWNrLmJpbmQodGhpcywgaSArIDEgPT09IHJlc3Vs
dENvdW50KSk7CiAKLSAgICBmdW5jdGlvbiBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0KG5vZGVJZHMp
Ci0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVJZHMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJ
ZChub2RlSWRzW2ldKTsKLSAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlKCkgPT09IE5vZGUu
VEVYVF9OT0RFKQotICAgICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaChub2RlLm5vZGVW
YWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub2RlLmdldE91dGVy
SFRNTChhZGRTZWFyY2hSZXN1bHQpOworICAgICAgICBmdW5jdGlvbiBzZWFyY2hSZXN1bHRDYWxs
YmFjayhpc0xhc3RJdGVtLCBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBub2RlLmdldE91
dGVySFRNTChhZGRTZWFyY2hSZXN1bHQuYmluZCh0aGlzLCBpc0xhc3RJdGVtKSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBhZGRTZWFyY2hSZXN1bHQoaXNMYXN0SXRlbSwgZXJyb3Is
IG1hcmt1cFZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChtYXJrdXBWYWx1ZS5zcGxpdCgiIikuam9pbigiICIpKTsKKyAgICAgICAgICAgIGlmIChp
c0xhc3RJdGVtKSB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmNhbmNl
bFNlYXJjaCgpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQo
c3RlcDEpOworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rp
b24gdGVzdFNldFVwKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQobmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdFBsYWluVGV4dChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiRm9vIiArICJCYXIiLCBzZWFyY2hDYWxsYmFj
ay5iaW5kKHRoaXMsIG5leHQpKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
UGFydGlhbFRleHQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bUFnZW50LnBlcmZvcm1TZWFyY2goIm9vIiArICJCYSIsIHNlYXJjaENhbGxiYWNrLmJpbmQodGhp
cywgbmV4dCkpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTdGFydFRhZyhu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9y
bVNlYXJjaCgiPGlucHUiICsgInQiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5leHQpKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UGFydGlhbFRhZyhuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgi
bnB1IiArICJ0Iiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEV4YWN0QXR0cmlidXRlTmFtZShuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgidmFs
dSIgKyAiZSIsIHNlYXJjaENhbGxiYWNrLmJpbmQodGhpcywgbmV4dCkpOworICAgICAgICB9LAor
CisgICAgICAgIGZ1bmN0aW9uIHRlc3RFeGFjdEF0dHJpYnV0ZVZhbF91ZShuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgiSW4i
ICsgInB1dFZhIiArICJsIiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0KSk7CisgICAg
ICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFBhcnRpYWxBdHRyaWJ1dGVWYWxfdWUobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1T
ZWFyY2goIm4iICsgInB1dFZhIiArICJsIiwgc2VhcmNoQ2FsbGJhY2suYmluZCh0aGlzLCBuZXh0
KSk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFhQYXRoQXR0cmlidXRlKG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3Jt
U2VhcmNoKCIvL2h0bWwiICsgIi8vQGF0dHIiLCBzZWFyY2hDYWxsYmFjay5iaW5kKHRoaXMsIG5l
eHQpKTsKKyAgICAgICAgfQorICAgIF0pOwogCi0gICAgZnVuY3Rpb24gc3RlcDEoKQotICAgIHsK
LSAgICAgICAgLy8gUGxhaW4gdGV4dC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBl
cmZvcm1TZWFyY2goIkZvbyIgKyAiQmFyIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7
Ci0gICAgICAgIC8vIFBhcnRpYWwgdGV4dC4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnBlcmZvcm1TZWFyY2goIm9vIiArICJCYSIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUp
OwotICAgICAgICAvLyBTdGFydCB0YWcuCi0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5w
ZXJmb3JtU2VhcmNoKCI8aW5wdSIgKyAidCIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUp
OwotICAgICAgICAvLyBQYXJ0aWFsIHRhZy4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnBlcmZvcm1TZWFyY2goIm5wdSIgKyAidCIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1bHQsIHRydWUp
OwotICAgICAgICAvLyBFeGFjdCBhdHRyaWJ1dGUgbmFtZS4KLSAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnBlcmZvcm1TZWFyY2goInZhbHUiICsgImUiLCBhZGROb2Rlc1RvU2VhcmNoUmVz
dWx0LCB0cnVlKTsKLSAgICAgICAgLy8gRXhhY3QgYXR0cmlidXRlIHZhbDw+dWUuCi0gICAgICAg
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5wZXJmb3JtU2VhcmNoKCJJbiIgKyAicHV0VmEiICsgImwi
LCBhZGROb2Rlc1RvU2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICAgICAgLy8gUGFydGlhbCBhdHRy
aWJ1dGUgdmFsPD51ZS4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnBlcmZvcm1TZWFy
Y2goIm4iICsgInB1dFZhIiArICJsIiwgYWRkTm9kZXNUb1NlYXJjaFJlc3VsdCwgdHJ1ZSk7Ci0g
ICAgICAgIC8vIFhQYXRoIGF0dHJpYnV0ZS4KLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnBlcmZvcm1TZWFyY2goIi8vaHRtbCIgKyAiLy9AYXR0ciIsIGFkZE5vZGVzVG9TZWFyY2hSZXN1
bHQsIHRydWUpOwotICAgICAgICAvLyBUZXJtaW5hdG9yLgotICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tQWdlbnQucGVyZm9ybVNlYXJjaCgidGVyIiArICJtaSIgKyAibmF0b3IiLCBhZGROb2Rlc1Rv
U2VhcmNoUmVzdWx0LCB0cnVlKTsKLSAgICB9CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4K
</data>
<flag name="review"
          id="113407"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>