<?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>148141</bug_id>
          
          <creation_ts>2015-08-18 14:19:47 -0700</creation_ts>
          <short_desc>Web Inspector: Links for rules in &lt;style&gt; are incorrect, do not account for &lt;style&gt; offset in the document</short_desc>
          <delta_ts>2015-08-18 22:00:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1118629</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 14:19:47 -0700</bug_when>
    <thetext>* SUMMARY
Links for rules in &lt;style&gt; are incorrect, do not account for &lt;style&gt; offset in the document

* TEST
&lt;html&gt;
&lt;head&gt;
&lt;style&gt;
body { color: red; }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;Test&lt;/body&gt;
&lt;/html&gt;

* STEPS TO REPRODUCE
1. Inspector &lt;body&gt; on test
2. Show Styles &gt; Rules sidebar
  =&gt; location link for &quot;body&quot; rule/selector is test.html:2, should be test.html:4

* NOTES
- Works in Chrome, kinda works in Firefox (with issues)
- Related to, but does not fix Media Query location links</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118630</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-18 14:20:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/22331966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118637</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 14:35:05 -0700</bug_when>
    <thetext>Blocked by cleanup in bug 148143.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118638</commentid>
    <comment_count>3</comment_count>
      <attachid>259299</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 14:35:45 -0700</bug_when>
    <thetext>Created attachment 259299
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118648</commentid>
    <comment_count>4</comment_count>
      <attachid>259299</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-18 15:05:30 -0700</bug_when>
    <thetext>Comment on attachment 259299
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:873
&gt; +                console.log(&quot;BEFORE&quot;, mediaSourceCodeLocation.originalLocationString());

Debug logging?

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:875
&gt; +                console.log(&quot;AFTER&quot;, mediaSourceCodeLocation.originalLocationString());

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118650</commentid>
    <comment_count>5</comment_count>
      <attachid>259299</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-18 15:07:41 -0700</bug_when>
    <thetext>Comment on attachment 259299
[PATCH] Proposed Fix

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

Have not gotten past the test yet, might look later today.

&gt; LayoutTests/inspector/css/getAllStyleSheets.html:23
&gt; +        InspectorTest.expectThat(styleSheets.length === 3, &quot;There are three stylesheets.&quot;);

NIT: I prefer phrasing these as &quot;should be&quot; rather than &quot;is/are&quot;. What do you think about this convention?

&gt; LayoutTests/inspector/css/getAllStyleSheets.html:27
&gt; +            InspectorTest.log(`URL: ${styleSheet.isInlineStyleTag() ? &quot;&lt;style&gt; on &quot; : &quot;&quot;}${sanitizeURL(styleSheet.url)}`);

NIT: I think we should err towards not performing (ternary) logic inside template ${placeholders}. It quickly becomes hard to follow IMO.

&gt; LayoutTests/inspector/css/getAllStyleSheets.html:28
&gt; +            InspectorTest.log(`OFFSET: (${styleSheet.startLineNumber}, ${styleSheet.startColumnNumber})`);

Nice.

&gt; LayoutTests/inspector/css/getAllStyleSheets.html:29
&gt; +            InspectorTest.expectThat(styleSheet.parentFrame, &quot;Stylesheet has a frame.&quot;);

(see above): &quot;should have a&quot;

&gt; Source/JavaScriptCore/inspector/protocol/CSS.json:100
&gt; +                { &quot;name&quot;: &quot;isInline&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Whether this stylesheet is a &lt;style&gt; tag created by the parser. This is not set for document.written &lt;style&gt; tags.&quot; },

Why don&apos;t tags from document.write get the flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118653</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 15:13:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 259299 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259299&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:873
&gt; &gt; +                console.log(&quot;BEFORE&quot;, mediaSourceCodeLocation.originalLocationString());
&gt; 
&gt; Debug logging?
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:875
&gt; &gt; +                console.log(&quot;AFTER&quot;, mediaSourceCodeLocation.originalLocationString());
&gt; 
&gt; See above.

Yeah, oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118655</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 15:17:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 259299 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=259299&amp;action=review
&gt; 
&gt; Have not gotten past the test yet, might look later today.
&gt; 
&gt; &gt; LayoutTests/inspector/css/getAllStyleSheets.html:23
&gt; &gt; +        InspectorTest.expectThat(styleSheets.length === 3, &quot;There are three stylesheets.&quot;);
&gt; 
&gt; NIT: I prefer phrasing these as &quot;should be&quot; rather than &quot;is/are&quot;. What do
&gt; you think about this convention?
&gt; 
&gt; &gt; LayoutTests/inspector/css/getAllStyleSheets.html:27
&gt; &gt; +            InspectorTest.log(`URL: ${styleSheet.isInlineStyleTag() ? &quot;&lt;style&gt; on &quot; : &quot;&quot;}${sanitizeURL(styleSheet.url)}`);
&gt; 
&gt; NIT: I think we should err towards not performing (ternary) logic inside
&gt; template ${placeholders}. It quickly becomes hard to follow IMO.
&gt; 
&gt; &gt; LayoutTests/inspector/css/getAllStyleSheets.html:28
&gt; &gt; +            InspectorTest.log(`OFFSET: (${styleSheet.startLineNumber}, ${styleSheet.startColumnNumber})`);
&gt; 
&gt; Nice.
&gt; 
&gt; &gt; LayoutTests/inspector/css/getAllStyleSheets.html:29
&gt; &gt; +            InspectorTest.expectThat(styleSheet.parentFrame, &quot;Stylesheet has a frame.&quot;);
&gt; 
&gt; (see above): &quot;should have a&quot;
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/protocol/CSS.json:100
&gt; &gt; +                { &quot;name&quot;: &quot;isInline&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Whether this stylesheet is a &lt;style&gt; tag created by the parser. This is not set for document.written &lt;style&gt; tags.&quot; },
&gt; 
&gt; Why don&apos;t tags from document.write get the flag?

I think in case of a document.write / dynamically generated &lt;style&gt; we should link not to any location, but to the &lt;style&gt; node itself. As in the case of dynamic generation, source code locations don&apos;t link to any reasonable location in any Resource, as they were dynamic.

CSSStyleSheet has a reference to the ownerNode that we could create a DOMNode for and push to the frontend for dynamically generated &lt;style&gt;s. I was just not ambitious enough to go that far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118713</commentid>
    <comment_count>8</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-18 17:03:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created attachment 259299 [details]
&gt; [PATCH] Proposed Fix

NIT: You have used var instead of let in a lot of places.  If we are really moving over to let, we should be consistent in its addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118734</commentid>
    <comment_count>9</comment_count>
      <attachid>259329</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-08-18 17:30:59 -0700</bug_when>
    <thetext>Created attachment 259329
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118806</commentid>
    <comment_count>10</comment_count>
      <attachid>259329</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-18 21:17:40 -0700</bug_when>
    <thetext>Comment on attachment 259329
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:61
&gt; +        return [...this._styleSheetIdentifierMap.values()];

Cool.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:107
&gt; +        this._fetchInfoForAllStyleSheets(function() {});

You can make it even more of a placeholder: () =&gt; {}

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:816
&gt; +        var styleSheet = id ? WebInspector.cssStyleManager.styleSheetForIdentifier(id.styleSheetId) : null;

I&apos;ll &apos;let&apos; it go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118825</commentid>
    <comment_count>11</comment_count>
      <attachid>259329</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 22:00:44 -0700</bug_when>
    <thetext>Comment on attachment 259329
[PATCH] Proposed Fix

Clearing flags on attachment: 259329

Committed r188631: &lt;http://trac.webkit.org/changeset/188631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118826</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-18 22:00:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259299</attachid>
            <date>2015-08-18 14:35:45 -0700</date>
            <delta_ts>2015-08-18 17:30:59 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>style-offset.patch</filename>
            <type>text/plain</type>
            <size>27405</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOTBiOGYzLi5kZTNhMWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDgt
MTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5jb3JyZWN0LCBkbyBu
b3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jc3MvZ2V0
QWxsU3R5bGVTaGVldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9j
c3MvcmVzb3VyY2VzL2V4dGVybmFsLmNzczogQWRkZWQuCisgICAgICAgIChib2R5KToKKyAgICAg
ICAgVGVzdCBmb3Igc3R5bGUgc2hlZXQgaGVhZGVyIGluZm9ybWF0aW9uIGZvciBleHRlcm5hbCBh
bmQgaW5saW5lIHN0eWxlc2hlZXRzLgorCiAyMDE1LTA4LTEzICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVkdWNlIGZsYWtp
bmVzcyBvZiBpbnNwZWN0b3IvaW5kZXhlZGRiL3JlcXVlc3REYXRhYmFzZU5hbWVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMzU1YmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0IENTUy5nZXRBbGxTdHlsZVNoZWV0
cyByZXR1cm5zIGV4cGVjdGVkIGluZm9ybWF0aW9uIGZvciBkaWZmZXJlbnQgc3R5bGUgc2hlZXQg
c291cmNlcy4KKworUEFTUzogVGhlcmUgYXJlIHRocmVlIHN0eWxlc2hlZXRzLgorCitVUkw6IGlu
c3BlY3Rvci9jc3MvcmVzb3VyY2VzL2V4dGVybmFsLmNzcworT0ZGU0VUOiAoMCwgMCkKK1BBU1M6
IFN0eWxlc2hlZXQgaGFzIGEgZnJhbWUuCisKK1VSTDogPHN0eWxlPiBvbiBpbnNwZWN0b3IvY3Nz
L2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKK09GRlNFVDogKDUsIDcpCitQQVNTOiBTdHlsZXNoZWV0
IGhhcyBhIGZyYW1lLgorCitVUkw6IGluc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRt
bAorT0ZGU0VUOiAoMCwgMCkKK1BBU1M6IFN0eWxlc2hlZXQgaGFzIGEgZnJhbWUuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmJhN2U3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9nZXRBbGxTdHlsZVNoZWV0cy5odG1sCkBAIC0wLDAg
KzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvZXh0ZXJuYWwu
Y3NzIj4KKzxzdHlsZT5ib2R5IHsgY29sb3I6IGJsdWU7IH08L3N0eWxlPgorPHNjcmlwdD4KK3Zh
ciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CitzdHlsZS50ZXh0Q29u
dGVudCA9ICJib2R5IHsgY29sb3I6IGdyYXk7IH0iOworZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGls
ZChzdHlsZSk7Cis8L3NjcmlwdD4KKzwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGZ1bmN0aW9uIHNhbml0aXplVVJMKHVybCkgeworICAgICAgICByZXR1cm4gdXJs
LnJlcGxhY2UoL14uKj9MYXlvdXRUZXN0c1wvLywgIiIpOworICAgIH0KKworICAgIFdlYkluc3Bl
Y3Rvci5jc3NTdHlsZU1hbmFnZXIuZmV0Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCk7CisgICAgSW5z
cGVjdG9yQmFja2VuZC5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgeworICAg
ICAgICBsZXQgc3R5bGVTaGVldHMgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRzOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoc3R5bGVTaGVldHMubGVu
Z3RoID09PSAzLCAiVGhlcmUgYXJlIHRocmVlIHN0eWxlc2hlZXRzLiIpOworCisgICAgICAgIGZv
ciAobGV0IHN0eWxlU2hlZXQgb2Ygc3R5bGVTaGVldHMpIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBVUkw6ICR7c3R5
bGVTaGVldC5pc0lubGluZVN0eWxlVGFnKCkgPyAiPHN0eWxlPiBvbiAiIDogIiJ9JHtzYW5pdGl6
ZVVSTChzdHlsZVNoZWV0LnVybCl9YCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhg
T0ZGU0VUOiAoJHtzdHlsZVNoZWV0LnN0YXJ0TGluZU51bWJlcn0sICR7c3R5bGVTaGVldC5zdGFy
dENvbHVtbk51bWJlcn0pYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
c3R5bGVTaGVldC5wYXJlbnRGcmFtZSwgIlN0eWxlc2hlZXQgaGFzIGEgZnJhbWUuIik7CisgICAg
ICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0pOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0
IENTUy5nZXRBbGxTdHlsZVNoZWV0cyByZXR1cm5zIGV4cGVjdGVkIGluZm9ybWF0aW9uIGZvciBk
aWZmZXJlbnQgc3R5bGUgc2hlZXQgc291cmNlcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3Jlc291cmNlcy9leHRlcm5hbC5jc3Mg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3Jlc291cmNlcy9leHRlcm5hbC5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxOTEyZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3MvcmVzb3VyY2VzL2V4dGVybmFsLmNzcwpAQCAtMCww
ICsxIEBACitib2R5IHsgY29sb3I6IHJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzdlNTZkNC4uNzc3ODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTUtMDgtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5j
b3JyZWN0LCBkbyBub3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9DU1MuanNvbjoKKyAgICAgICAgRXh0ZW5kIFN0eWxlU2hlZXRIZWFkZXIg
dG8gaW5jbHVkZSBzdGFydCBvZmZzZXQgaW5mb3JtYXRpb24gYW5kIGEgYml0CisgICAgICAgIGZv
ciB3aGV0aGVyIG9yIG5vdCB0aGlzIHdhcyBhbiBpbmxpbmUgc3R5bGUgdGFnIGNyZWF0ZWQgYnkg
dGhlIHBhcnNlci4KKyAgICAgICAgVGhlc2UgbWF0Y2ggYWRkaXRpb25zIHRvIEJsaW5rJ3MgcHJv
dG9jb2wuCisKIDIwMTUtMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5pZnkgSlNQYXJzZXJDb2RlVHlwZSwgRnVuY3Rpb25QYXJzZU1vZGUg
YW5kIE1vZHVsZVBhcnNlTW9kZSBpbnRvIFNvdXJjZVBhcnNlTW9kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KaW5kZXggMWIzMjY0Yi4u
OThkY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9DU1MuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0NTUy5qc29uCkBAIC05Niw3ICs5NiwxMCBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlN0eWxlc2hl
ZXQgcmVzb3VyY2UgVVJMLiJ9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwg
IiRyZWYiOiAiU3R5bGVTaGVldE9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJTdHlsZXNoZWV0IG9y
aWdpbi4ifSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpdGxlIiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIlN0eWxlc2hlZXQgdGl0bGUuIn0sCi0gICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkaXNhYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24i
OiAiRGVub3RlcyB3aGV0aGVyIHRoZSBzdHlsZXNoZWV0IGlzIGRpc2FibGVkLiJ9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkaXNhYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3Jp
cHRpb24iOiAiRGVub3RlcyB3aGV0aGVyIHRoZSBzdHlsZXNoZWV0IGlzIGRpc2FibGVkLiJ9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNJbmxpbmUiLCAidHlwZSI6ICJib29sZWFuIiwg
ImRlc2NyaXB0aW9uIjogIldoZXRoZXIgdGhpcyBzdHlsZXNoZWV0IGlzIGEgPHN0eWxlPiB0YWcg
Y3JlYXRlZCBieSB0aGUgcGFyc2VyLiBUaGlzIGlzIG5vdCBzZXQgZm9yIGRvY3VtZW50LndyaXR0
ZW4gPHN0eWxlPiB0YWdzLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0YXJ0TGlu
ZSIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlwdGlvbiI6ICJMaW5lIG9mZnNldCBvZiB0aGUg
c3R5bGVzaGVldCB3aXRoaW4gdGhlIHJlc291cmNlICh6ZXJvIGJhc2VkKS4iIH0sCisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzdGFydENvbHVtbiIsICJ0eXBlIjogIm51bWJlciIsICJkZXNj
cmlwdGlvbiI6ICJDb2x1bW4gb2Zmc2V0IG9mIHRoZSBzdHlsZXNoZWV0IHdpdGhpbiB0aGUgcmVz
b3VyY2UgKHplcm8gYmFzZWQpLiIgfQogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJDU1Mgc3R5bGVzaGVldCBtZXRhaW5mb3JtYXRpb24uIgogICAgICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGU3OTFkN2EuLmI5NjRiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IExpbmtzIGZvciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNv
cnJlY3QsIGRvIG5vdCBhY2NvdW50IGZvciA8c3R5bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRtbAorCisgICAgICAgICogY3NzL0NTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y3JlYXRlSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OkNTU1N0eWxlU2hlZXQpOgorICAgICAgICBJbmNsdWRlIHRoZSBzdGFydGluZyBwb3NpdGlvbiB3
aGVuIGNyZWF0ZWQgYnkgdGhlIFBhcnNlci4KKyAgICAgICAgRGVmYXVsdCB0byB0aGUgbWluaW11
bSBwb3NpdGlvbiwgd2hpY2ggc2hvdWxkIG5ldmVyIGJlCisgICAgICAgIHBvc3NpYmxlIGZvciBh
biBpbmxpbmUgPHN0eWxlPiBiZWNhdXNlIHRoZSAiPHN0eWxlPiIgY2hhcmFjdGVycworICAgICAg
ICB0aGVtc2VsdmVzIHJlcXVpcmUgYXQgbGVhc3Qgc29tZSBvZmZzZXQuCisKKyAgICAgICAgKiBk
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVN0
eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQpOgorICAgICAgICBQcm92aWRlIHRoZSBzdGFydCBw
b3NpdGlvbiBvZmZzZXQgZm9yIHRoaXMgc3R5bGVzaGVldCBpZiBpdCB3YXMgaW5saW5lLgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbyk6
CisgICAgICAgIEluY2x1ZGUgbmV3IHByb3RvY29sIHZhbHVlcyBmb3IgdGhlIHN0eWxlIHNoZWV0
LgorCiAyMDE1LTA4LTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZmFjdG9yIGFuZCBpbXByb3ZlIFRleHRJbmRpY2F0b3IgdG8gcHJlcGFyZSBm
b3IgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAwZDJiODJmLi41
Yzk4NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MiwxMyArODIs
MTMgQEAgUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVT
aGVldENvbnRlbnRzPiYmIHNoZWV0LCBDU1NJbXAKIAogUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlKiBv
d25lck5vZGUpCiB7IAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RG
Ojptb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBmYWxzZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU1N0eWxlU2hlZXQoV1RGOjptb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSkpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4g
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQorUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0
eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShOb2RlJiBvd25lck5vZGUsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nKQogewogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChvd25lck5vZGUuZG9j
dW1lbnQoKSwgYmFzZVVSTCwgZW5jb2RpbmcpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENT
U1N0eWxlU2hlZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwg
cGFyc2VyQ29udGV4dCksICZvd25lck5vZGUsIHRydWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDU1NTdHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3Ry
aW5nKCksIHBhcnNlckNvbnRleHQpLCAmb3duZXJOb2RlLCBzdGFydFBvc2l0aW9uLCB0cnVlKSk7
CiB9CiAKIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQpAQCAtOTgsMTcgKzk4LDE5
IEBAIENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBjb250ZW50cywgQ1NTSW1wb3J0UnVsZSoKICAgICAsIG1fbXV0YXRlZFJ1bGVzKGZhbHNlKQog
ICAgICwgbV9vd25lck5vZGUoMCkKICAgICAsIG1fb3duZXJSdWxlKG93bmVyUnVsZSkKKyAgICAs
IG1fc3RhcnRQb3NpdGlvbigpCiB7CiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhp
cyk7CiB9CiAKLUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250
ZW50cz4mJiBjb250ZW50cywgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5saW5lU3R5bGVzaGVl
dCkKK0NTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBjb250ZW50cywgTm9kZSogb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9z
aXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0KQogICAgIDogbV9jb250ZW50cyhXVEY6Om1v
dmUoY29udGVudHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJbmxpbmVTdHlsZXNo
ZWV0KQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRhdGVkUnVsZXMoZmFs
c2UpCiAgICAgLCBtX293bmVyTm9kZShvd25lck5vZGUpCiAgICAgLCBtX293bmVyUnVsZSgwKQor
ICAgICwgbV9zdGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKGlzQWNj
ZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXJlbnQob3duZXJOb2RlKSk7CiAgICAgbV9jb250ZW50cy0+
cmVnaXN0ZXJDbGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAx
NzRjZDRjLi5mYzE5M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVHlw
ZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUxLDcgKzUyLDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNo
ZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKICAg
ICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmLCBOb2RlKiBvd25lck5vZGUpOwotICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3Jl
YXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3Ry
aW5nKCkpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUm
LCBjb25zdCBVUkwmLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9z
aXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5n
KCkpOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwogCkBAIC0xMTgsMTEgKzExOSwx
NCBAQCBwdWJsaWM6CiAKICAgICBTdHlsZVNoZWV0Q29udGVudHMmIGNvbnRlbnRzKCkgeyByZXR1
cm4gbV9jb250ZW50czsgfQogCisgICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJbmxpbmVTdHlsZXNoZWV0OyB9CisgICAgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247IH0KKwogICAgIHZvaWQgZGV0YWNoRnJvbURv
Y3VtZW50KCkgeyBtX293bmVyTm9kZSA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBDU1NT
dHlsZVNoZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVy
UnVsZSk7Ci0gICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2Rl
KiBvd25lck5vZGUsIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0KTsKKyAgICBDU1NTdHlsZVNoZWV0
KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBv
c2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBB
U0NJSUxpdGVyYWwoInRleHQvY3NzIik7IH0KQEAgLTEzOSw2ICsxNDMsOCBAQCBwcml2YXRlOgog
ICAgIE5vZGUqIG1fb3duZXJOb2RlOwogICAgIENTU0ltcG9ydFJ1bGUqIG1fb3duZXJSdWxlOwog
CisgICAgVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKKwogICAgIG11dGFibGUgUmVmUHRy
PE1lZGlhTGlzdD4gbV9tZWRpYUNTU09NV3JhcHBlcjsKICAgICBtdXRhYmxlIFZlY3RvcjxSZWZQ
dHI8Q1NTUnVsZT4+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggNjM4Y2ZjNi4uMDRm
MTI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hl
ZXQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogCiAgICAgbV9sb2FkaW5n
ID0gdHJ1ZTsKIAotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoZWxl
bWVudCwgVVJMKCksIGRvY3VtZW50LmlucHV0RW5jb2RpbmcoKSk7CisgICAgbV9zaGVldCA9IENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBVUkwoKSwgbV9zdGFydFRleHRQb3Np
dGlvbiwgZG9jdW1lbnQuaW5wdXRFbmNvZGluZygpKTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1
ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxl
bWVudC50aXRsZSgpKTsKICAgICBtX3NoZWV0LT5jb250ZW50cygpLnBhcnNlU3RyaW5nQXRQb3Np
dGlvbih0ZXh0LCBtX3N0YXJ0VGV4dFBvc2l0aW9uLCBtX2lzUGFyc2luZ0NoaWxkcmVuKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCA1MTUzOTBkLi5iNTZlODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC04MTQsNiArODE0LDkgQEAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGQKICAgICAgICAgLnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKQogICAgICAgICAuc2V0
VGl0bGUoc3R5bGVTaGVldC0+dGl0bGUoKSkKICAgICAgICAgLnNldEZyYW1lSWQobV9wYWdlQWdl
bnQtPmZyYW1lSWQoZnJhbWUpKQorICAgICAgICAuc2V0SXNJbmxpbmUoc3R5bGVTaGVldC0+aXNJ
bmxpbmUoKSAmJiBzdHlsZVNoZWV0LT5zdGFydFBvc2l0aW9uKCkgIT0gVGV4dFBvc2l0aW9uOjpt
aW5pbXVtUG9zaXRpb24oKSkKKyAgICAgICAgLnNldFN0YXJ0TGluZShzdHlsZVNoZWV0LT5zdGFy
dFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpKQorICAgICAgICAuc2V0U3RhcnRDb2x1
bW4oc3R5bGVTaGVldC0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpKQog
ICAgICAgICAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1NzBm
YTA4Li5lOTY0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1NSBAQAog
MjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IExpbmtzIGZvciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNvcnJl
Y3QsIGRvIG5vdCBhY2NvdW50IGZvciA8c3R5bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE0MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFn
ZXIucHJvdG90eXBlLmdldCBzdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5mZXRjaFN0eWxlU2hlZXRzSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuc3R5bGVTaGVldEZvcklk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5
cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIFVwZGF0ZSBtb3JlIGluZm9ybWF0
aW9uIGFib3V0IGEgU3R5bGVTaGVldCB3aGVuIGZldGNoZWQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1J1bGUu
cHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIEVsaW1pbmF0ZSB1c2FnZSBvZiBgZGVsZXRlYC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVTaGVldC5wcm90b3R5cGUuZ2V0IHN0YXJ0TGluZU51bWJlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUuZ2V0IHN0YXJ0Q29sdW1uTnVtYmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5oYXNJbmZv
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5pc0lubGlu
ZVN0eWxlVGFnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlw
ZS51cGRhdGVJbmZvKToKKyAgICAgICAgSW5jbHVkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRo
aXMgc3R5bGVzaGVldC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJv
dG90eXBlLm9mZnNldFNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgIEluY2x1ZGUgaGVscGVy
IEFQSSB0byBvZmZzZXQgYSBzb3VyY2UgY29kZSBsb2NhdGlvbiBieSB0aGUgc3RhcnRMaW5lL0Nv
bHVtbgorICAgICAgICBvZiB0aGlzIHN0eWxlc2hlZXQgaXRzZWxmLCBpZiBpdCB3YXMgYW4gaW5s
aW5lIHN0eWxlLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5
cGUuaXNJbmxpbmVTdHlsZUF0dHJpYnV0ZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLm1hcmtBc0lubGluZVN0eWxlQXR0cmlidXRlU3R5
bGVTaGVldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5pc0lubGluZVN0
eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3Rv
dHlwZS5tYXJrQXNJbmxpbmVTdHlsZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBmb3IgY2xh
cml0eS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaCk6
CisgICAgICAgIEZldGNoIHN0eWxlc2hlZXQgaGVhZGVyIGluZm9ybWF0aW9uIGVhZ2VybHksIHNv
IHdlIGhhdmUgdGhlbSBlYXJseSBvbi4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVT
dHlsZXMucHJvdG90eXBlLl9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fcGFyc2VSdWxlUGF5bG9hZCk6
CisgICAgICAgIE9mZnNldCBzb3VyY2VDb2RlTG9jYXRpb25zIGZvciBDU1NSdWxlcyBiYXNlZCBv
biB0aGUgU3R5bGVTaGVldCBvZmZzZXQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9Tb3VyY2VDb2RlTG9jYXRpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZUxvY2F0aW9uLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICBJbXByb3ZlIGNvZGluZyBzdHls
ZS4KKworMjAxNS0wOC0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vZGVybml6ZSBDU1NTdHlsZU1hbmFnZXIKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE0MwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9D
U1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKaW5kZXggZmE0M2Q1Mi4uMTVjYTMyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
Q1NTU3R5bGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcwpAQCAtNDMsNiArNDMsNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2NvbG9yRm9ybWF0U2V0dGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZGVmYXVsdC1jb2xvci1mb3JtYXQiLCBXZWJJbnNw
ZWN0b3IuQ29sb3IuRm9ybWF0Lk9yaWdpbmFsKTsKIAorICAgICAgICB0aGlzLl9mZXRjaGVkSW5p
dGlhbFN0eWxlU2hlZXRzID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZGVudGlm
aWVyTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OwpAQCAtNTUsNiArNTYs
MTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNsYXNzIENTU1N0eWxlTWFuYWdl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9y
Rm9ybWF0U2V0dGluZy52YWx1ZTsKICAgICB9CiAKKyAgICBnZXQgc3R5bGVTaGVldHMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFsuLi50aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC52YWx1
ZXMoKV07CisgICAgfQorCiAgICAgY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB3aW5kb3cuQ1NTQWdlbnQgJiYgISFDU1NBZ2VudC5mb3JjZVBzZXVkb1N0YXRl
OwpAQCAtOTMsNiArOTksMTQgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNsYXNz
IENTU1N0eWxlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0
dXJuIG1hdGNoWzFdOwogICAgIH0KIAorICAgIGZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9mZXRjaEluZm9Gb3JBbGxTdHlsZVNoZWV0
cyhmdW5jdGlvbigpIHt9KTsKKyAgICB9CisKICAgICBzdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihp
ZCkKICAgICB7CiAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gdGhpcy5fc3R5bGVTaGVldElkZW50
aWZpZXJNYXAuZ2V0KGlkKTsKQEAgLTEzMSw3ICsxNDUsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0KTsKIAogICAgICAgICAvLyBE
byBub3Qgb2JzZXJ2ZSBpbmxpbmUgc3R5bGVzCi0gICAgICAgIGlmIChzdHlsZVNoZWV0LmlzSW5s
aW5lU3R5bGUoKSkKKyAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbmxpbmVTdHlsZUF0dHJpYnV0
ZVN0eWxlU2hlZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBzdHlsZVNoZWV0
Lm5vdGVDb250ZW50RGlkQ2hhbmdlKCk7CkBAIC0xNzMsNiArMTg3LDcgQEAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTWFuYWdlciA9IGNsYXNzIENTU1N0eWxlTWFuYWdlciBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKIAogICAgICAgICAvLyBDbGVhciBvdXIgbWFwcyB3aGVuIHRoZSBtYWluIGZy
YW1lIG5hdmlnYXRlcy4KIAorICAgICAgICB0aGlzLl9mZXRjaGVkSW5pdGlhbFN0eWxlU2hlZXRz
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLmNsZWFyKCk7
CiAgICAgICAgIHRoaXMuX3N0eWxlU2hlZXRGcmFtZVVSTE1hcC5jbGVhcigpOwogICAgICAgICB0
aGlzLl9ub2RlU3R5bGVzTWFwID0ge307CkBAIC0yNTcsOCArMjcyLDEzIEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBU
aGUgaW5mbyBkaWQgbm90IGhhdmUgJ2ZyYW1lSWQnLCBzbyBtYWtlIHBhcmVudEZyYW1lIG51bGwg
aW4gdGhhdCBjYXNlLgogICAgICAgICAgICAgICAgIHZhciBwYXJlbnRGcmFtZSA9ICJmcmFtZUlk
IiBpbiBzdHlsZVNoZWV0SW5mbyA/IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5m
cmFtZUZvcklkZW50aWZpZXIoc3R5bGVTaGVldEluZm8uZnJhbWVJZCkgOiBudWxsOwogCisgICAg
ICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBUaGUgaW5mbyBkaWQgbm90IGhh
dmUgJ2lzSW5saW5lJywgJ3N0YXJ0TGluZScsIGFuZCAnc3RhcnRDb2x1bW4nLCBzbyBtYWtlIGZh
bHNlIGFuZCAwIGluIHRoZXNlIGNhc2VzLgorICAgICAgICAgICAgICAgIHZhciBpc0lubGluZSA9
IHN0eWxlU2hlZXRJbmZvLmlzSW5saW5lIHx8IGZhbHNlOworICAgICAgICAgICAgICAgIHZhciBz
dGFydExpbmUgPSBzdHlsZVNoZWV0SW5mby5zdGFydExpbmUgfHwgMDsKKyAgICAgICAgICAgICAg
ICB2YXIgc3RhcnRDb2x1bW4gPSBzdHlsZVNoZWV0SW5mby5zdGFydENvbHVtbiB8fCAwOworCiAg
ICAgICAgICAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSB0aGlzLnN0eWxlU2hlZXRGb3JJZGVudGlm
aWVyKHN0eWxlU2hlZXRJbmZvLnN0eWxlU2hlZXRJZCk7Ci0gICAgICAgICAgICAgICAgc3R5bGVT
aGVldC51cGRhdGVJbmZvKHN0eWxlU2hlZXRJbmZvLnNvdXJjZVVSTCwgcGFyZW50RnJhbWUpOwor
ICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQudXBkYXRlSW5mbyhzdHlsZVNoZWV0SW5mby5zb3Vy
Y2VVUkwsIHBhcmVudEZyYW1lLCBpc0lubGluZSwgc3RhcnRMaW5lLCBzdGFydENvbHVtbik7CiAK
ICAgICAgICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5fZnJhbWVVUkxNYXBLZXkocGFyZW50RnJh
bWUsIHN0eWxlU2hlZXRJbmZvLnNvdXJjZVVSTCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fc3R5
bGVTaGVldEZyYW1lVVJMTWFwLnNldChrZXksIHN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1J1bGUuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcwppbmRleCBm
MGFmNmFkLi41ZWMyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcwpAQCAtODQsOCArODQsOCBAQCBXZWJJbnNwZWN0
b3IuQ1NTUnVsZSA9IGNsYXNzIENTU1J1bGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CiAgICAgICAgIHRoaXMuX21lZGlhTGlzdCA9IG1l
ZGlhTGlzdDsKIAotICAgICAgICBkZWxldGUgdGhpcy5fbWF0Y2hlZFNlbGVjdG9yczsKLSAgICAg
ICAgZGVsZXRlIHRoaXMuX21hdGNoZWRTZWxlY3RvclRleHQ7CisgICAgICAgIHRoaXMuX21hdGNo
ZWRTZWxlY3RvcnMgPSBudWxsOworICAgICAgICB0aGlzLl9tYXRjaGVkU2VsZWN0b3JUZXh0ID0g
bnVsbDsKIAogICAgICAgICBpZiAodGhpcy5fc3R5bGUpCiAgICAgICAgICAgICB0aGlzLl9zdHls
ZS5vd25lclJ1bGUgPSB0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcwppbmRleCAxZjIxMmVlLi4y
M2VmYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTU3R5bGVTaGVldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcwpAQCAtMzQsNiArMzQsMTMgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUKICAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwogICAgICAg
ICB0aGlzLl91cmwgPSBudWxsOwogICAgICAgICB0aGlzLl9wYXJlbnRGcmFtZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX3N0YXJ0TGluZU51bWJlciA9IDA7CisgICAgICAgIHRoaXMuX3N0YXJ0Q29s
dW1uTnVtYmVyID0gMDsKKworICAgICAgICB0aGlzLl9pbmxpbmVTdHlsZUF0dHJpYnV0ZSA9IGZh
bHNlOworICAgICAgICB0aGlzLl9pbmxpbmVTdHlsZVRhZyA9IGZhbHNlOworCisgICAgICAgIHRo
aXMuX2hhc0luZm8gPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTg0LDI0ICs5
MSw2NCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCA9IGNsYXNzIENTU1N0eWxlU2hlZXQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBbm9ueW1vdXMgU3R5bGVTaGVldCAlZCIpLmZvcm1hdCh0aGlzLl91bmlx
dWVEaXNwbGF5TmFtZU51bWJlcik7CiAgICAgfQogCi0gICAgaXNJbmxpbmVTdHlsZSgpCisgICAg
Z2V0IHN0YXJ0TGluZU51bWJlcigpCiAgICAgewotICAgICAgICByZXR1cm4gISF0aGlzLl9pbmxp
bmVTdHlsZTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0TGluZU51bWJlcjsKICAgICB9CiAK
LSAgICBtYXJrQXNJbmxpbmVTdHlsZSgpCisgICAgZ2V0IHN0YXJ0Q29sdW1uTnVtYmVyKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX2lubGluZVN0eWxlID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3N0YXJ0Q29sdW1uTnVtYmVyOworICAgIH0KKworICAgIGhhc0luZm8oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2hhc0luZm87CisgICAgfQorCisgICAgaXNJbmxpbmVTdHlsZVRh
ZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lU3R5bGVUYWc7CisgICAgfQor
CisgICAgaXNJbmxpbmVTdHlsZUF0dHJpYnV0ZVN0eWxlU2hlZXQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2lubGluZVN0eWxlQXR0cmlidXRlOworICAgIH0KKworICAgIG1hcmtBc0lu
bGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpCisgICAgeworICAgICAgICB0aGlzLl9pbmxp
bmVTdHlsZUF0dHJpYnV0ZSA9IHRydWU7CisgICAgfQorCisgICAgb2Zmc2V0U291cmNlQ29kZUxv
Y2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICB7CisgICAgICAgIGlmICghc291cmNlQ29k
ZUxvY2F0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKCF0aGlz
Ll9oYXNJbmZvKQorICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVMb2NhdGlvbjsKKworICAg
ICAgICB2YXIgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOworICAg
ICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMuX3N0YXJ0TGluZU51bWJlciArIHNvdXJjZUNvZGVM
b2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gdGhpcy5fc3Rh
cnRDb2x1bW5OdW1iZXIgKyBzb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgICAg
ICByZXR1cm4gc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHVwZGF0ZUlu
Zm8odXJsLCBwYXJlbnRGcmFtZSkKKyAgICB1cGRhdGVJbmZvKHVybCwgcGFyZW50RnJhbWUsIGlu
bGluZVN0eWxlLCBzdGFydExpbmVOdW1iZXIsIHN0YXJ0Q29sdW1uTnVtYmVyKQogICAgIHsKKyAg
ICAgICAgdGhpcy5faGFzSW5mbyA9IHRydWU7CisKICAgICAgICAgdGhpcy5fdXJsID0gdXJsIHx8
IG51bGw7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl91cmxDb21wb25lbnRzOworICAgICAgICB0aGlz
Ll91cmxDb21wb25lbnRzID0gdW5kZWZpbmVkOwogCiAgICAgICAgIHRoaXMuX3BhcmVudEZyYW1l
ID0gcGFyZW50RnJhbWUgfHwgbnVsbDsKKworICAgICAgICB0aGlzLl9pbmxpbmVTdHlsZVRhZyA9
IGlubGluZVN0eWxlOworICAgICAgICB0aGlzLl9zdGFydExpbmVOdW1iZXIgPSBzdGFydExpbmVO
dW1iZXI7CisgICAgICAgIHRoaXMuX3N0YXJ0Q29sdW1uTnVtYmVyID0gc3RhcnRDb2x1bW5OdW1i
ZXI7CiAgICAgfQogCiAgICAgZ2V0IHJldmlzaW9uRm9yUmVxdWVzdGVkQ29udGVudCgpCkBAIC0x
NDMsNyArMTkwLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHls
ZVNoZWV0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUKICAgICBub3RlQ29udGVudERp
ZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dENvbnRlbnREaWRD
aGFuZ2VOb3RpZmljYXRpb24pIHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25vcmVOZXh0
Q29udGVudERpZENoYW5nZU5vdGlmaWNhdGlvbjsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZU5l
eHRDb250ZW50RGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRleCBhOWZmOWVh
Li5iMzQ4YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAtMjM1LDYgKzIzNSw5IEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwge3NpZ25pZmlj
YW50Q2hhbmdlfSk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogQ29udmVydCB0byBw
dXNoaW5nIFN0eWxlU2hlZXQgaW5mb3JtYXRpb24gdG8gdGhlIGZyb250ZW5kLiA8cmRhcjovL3By
b2JsZW0vMTMyMTM2ODA+CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuZmV0
Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCk7CisKICAgICAgICAgQ1NTQWdlbnQuZ2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25vZGUuaWQsIGluY2x1ZGVQc2V1ZG86
IHRydWUsIGluY2x1ZGVJbmhlcml0ZWQ6IHRydWV9LCBmZXRjaGVkTWF0Y2hlZFN0eWxlcy5iaW5k
KHRoaXMpKTsKICAgICAgICAgQ1NTQWdlbnQuZ2V0SW5saW5lU3R5bGVzRm9yTm9kZS5pbnZva2Uo
e25vZGVJZDogdGhpcy5fbm9kZS5pZH0sIGZldGNoZWRJbmxpbmVTdHlsZXMuYmluZCh0aGlzKSk7
CiAgICAgICAgIENTU0FnZW50LmdldENvbXB1dGVkU3R5bGVGb3JOb2RlLmludm9rZSh7bm9kZUlk
OiB0aGlzLl9ub2RlLmlkfSwgZmV0Y2hlZENvbXB1dGVkU3R5bGUuYmluZCh0aGlzKSk7CkBAIC03
MjcsNyArNzMwLDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2Rl
U3R5bGVzIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB2YXIgc3R5bGVTaGVl
dCA9IGlkID8gV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRp
ZmllcihpZC5zdHlsZVNoZWV0SWQpIDogbnVsbDsKICAgICAgICAgaWYgKHN0eWxlU2hlZXQpIHsK
ICAgICAgICAgICAgIGlmICh0eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
bi5UeXBlLklubGluZSkKLSAgICAgICAgICAgICAgICBzdHlsZVNoZWV0Lm1hcmtBc0lubGluZVN0
eWxlKCk7CisgICAgICAgICAgICAgICAgc3R5bGVTaGVldC5tYXJrQXNJbmxpbmVTdHlsZUF0dHJp
YnV0ZVN0eWxlU2hlZXQoKTsKICAgICAgICAgICAgIHN0eWxlU2hlZXQuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlz
Ll9zdHlsZVNoZWV0Q29udGVudERpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIH0KIApAQCAtODEw
LDYgKzgxMyw4IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0
eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgICAgIHJldHVybiBudWxsOwogCisgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gaWQgPyBX
ZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkLnN0
eWxlU2hlZXRJZCkgOiBudWxsOworCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTog
VGhlIHBheWxvYWQgaGFkICdzZWxlY3RvclRleHQnIGFzIGEgcHJvcGVydHksCiAgICAgICAgIC8v
IG5vdyBpdCBoYXMgJ3NlbGVjdG9yTGlzdCcgd2l0aCBhICd0ZXh0JyBwcm9wZXJ0eS4gU3VwcG9y
dCBib3RoIGhlcmUuCiAgICAgICAgIHZhciBzZWxlY3RvclRleHQgPSBwYXlsb2FkLnNlbGVjdG9y
TGlzdCA/IHBheWxvYWQuc2VsZWN0b3JMaXN0LnRleHQgOiBwYXlsb2FkLnNlbGVjdG9yVGV4dDsK
QEAgLTgyMiw2ICs4MjcsOCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERP
TU5vZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB2YXIg
c291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHBheWxv
YWQuc291cmNlVVJMLCBzb3VyY2VSYW5nZS5zdGFydExpbmUsIHNvdXJjZVJhbmdlLnN0YXJ0Q29s
dW1uKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9u
ID0gdGhpcy5fY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHBheWxvYWQuc291cmNlVVJMLCBwYXls
b2FkLnNvdXJjZUxpbmUpOworICAgICAgICBpZiAoc3R5bGVTaGVldCkKKyAgICAgICAgICAgIHNv
dXJjZUNvZGVMb2NhdGlvbiA9IHN0eWxlU2hlZXQub2Zmc2V0U291cmNlQ29kZUxvY2F0aW9uKHNv
dXJjZUNvZGVMb2NhdGlvbik7CiAKICAgICAgICAgdmFyIHR5cGU7CiAgICAgICAgIHN3aXRjaCAo
cGF5bG9hZC5vcmlnaW4pIHsKQEAgLTg2MSw2ICs4NjgsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTU5v
ZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVj
dAogCiAgICAgICAgICAgICB2YXIgbWVkaWFUZXh0ID0gbWVkaWFJdGVtLnRleHQ7CiAgICAgICAg
ICAgICB2YXIgbWVkaWFTb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9jcmVhdGVTb3VyY2VDb2Rl
TG9jYXRpb24obWVkaWFJdGVtLnNvdXJjZVVSTCwgbWVkaWFJdGVtLnNvdXJjZUxpbmUpOworICAg
ICAgICAgICAgaWYgKHN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi
QURKVVNUSU5HIE1FRElBIFNPVVJDRSBDT0RFIExPQ0FUSU9OIik7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5sb2coIkJFRk9SRSIsIG1lZGlhU291cmNlQ29kZUxvY2F0aW9uLm9yaWdpbmFsTG9j
YXRpb25TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgbWVkaWFTb3VyY2VDb2RlTG9jYXRpb24g
PSBzdHlsZVNoZWV0Lm9mZnNldFNvdXJjZUNvZGVMb2NhdGlvbihtZWRpYVNvdXJjZUNvZGVMb2Nh
dGlvbik7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFGVEVSIiwgbWVkaWFTb3VyY2VD
b2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgbWVkaWFMaXN0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5DU1NNZWRpYShtZWRp
YVR5cGUsIG1lZGlhVGV4dCwgbWVkaWFTb3VyY2VDb2RlTG9jYXRpb24pKTsKICAgICAgICAgfQpA
QCAtODcwLDcgKzg4Myw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9N
Tm9kZVN0eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHJldHVy
biBydWxlOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHN0eWxlU2hlZXQgPSBpZCA/IFdlYklu
c3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoaWQuc3R5bGVT
aGVldElkKSA6IG51bGw7CiAgICAgICAgIGlmIChzdHlsZVNoZWV0KQogICAgICAgICAgICAgc3R5
bGVTaGVldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LkV2ZW50
LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3N0eWxlU2hlZXRDb250ZW50RGlkQ2hhbmdlLCB0aGlz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMKaW5kZXggZTNiYzIwZi4uNzU2OTJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NvdXJjZUNvZGVMb2NhdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZUxvY2F0aW9uLmpzCkBAIC0xNzksNyArMTc5LDcgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbiA9IGNsYXNzIFNvdXJjZUNvZGVMb2NhdGlv
biBleHRlbmRzIFdlYkluc3BlY3Rvci4KIAogICAgICAgICBpZiAoc291cmNlQ29kZSA9PT0gdGhp
cy5fc291cmNlQ29kZSAmJiBsaW5lTnVtYmVyID09PSB0aGlzLl9saW5lTnVtYmVyICYmIGNvbHVt
bk51bWJlciA9PT0gdGhpcy5fY29sdW1uTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBlbHNlIGlmICh0aGlzLl9tYXBwZWRSZXNvdXJjZSAmJiBzb3VyY2VDb2RlID09PSB0aGlz
Ll9tYXBwZWRSZXNvdXJjZSAmJiBsaW5lTnVtYmVyID09PSB0aGlzLl9tYXBwZWRMaW5lTnVtYmVy
ICYmIGNvbHVtbk51bWJlciA9PT0gdGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyKQorICAgICAgICBp
ZiAodGhpcy5fbWFwcGVkUmVzb3VyY2UgJiYgc291cmNlQ29kZSA9PT0gdGhpcy5fbWFwcGVkUmVz
b3VyY2UgJiYgbGluZU51bWJlciA9PT0gdGhpcy5fbWFwcGVkTGluZU51bWJlciAmJiBjb2x1bW5O
dW1iZXIgPT09IHRoaXMuX21hcHBlZENvbHVtbk51bWJlcikKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB2YXIgbmV3U291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259329</attachid>
            <date>2015-08-18 17:30:59 -0700</date>
            <delta_ts>2015-08-18 22:00:44 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>v2.patch</filename>
            <type>text/plain</type>
            <size>27680</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNTE2YjQ0Li5kNThiOGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDgt
MTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5jb3JyZWN0LCBkbyBu
b3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jc3MvZ2V0
QWxsU3R5bGVTaGVldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
Y3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9j
c3MvcmVzb3VyY2VzL2V4dGVybmFsLmNzczogQWRkZWQuCisgICAgICAgIChib2R5KToKKyAgICAg
ICAgVGVzdCBmb3Igc3R5bGUgc2hlZXQgaGVhZGVyIGluZm9ybWF0aW9uIGZvciBleHRlcm5hbCBh
bmQgaW5saW5lIHN0eWxlc2hlZXRzLgorCiAyMDE1LTA4LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsgZmFzdC9jc3Mvd2lsbC1jaGFuZ2Uv
d2lsbC1jaGFuZ2UtY3JlYXRlcy1zdGFja2luZy1jb250ZXh0Lmh0bWwgYXMgYW4gaW1hZ2Utb25s
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9nZXRBbGxTdHlsZVNoZWV0
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hl
ZXRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2Nj
MDFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9nZXRBbGxT
dHlsZVNoZWV0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCBDU1MuZ2V0QWxs
U3R5bGVTaGVldHMgcmV0dXJucyBleHBlY3RlZCBpbmZvcm1hdGlvbiBmb3IgZGlmZmVyZW50IHN0
eWxlIHNoZWV0IHNvdXJjZXMuCisKK1BBU1M6IFRoZXJlIHNob3VsZCBiZSB0aHJlZSBzdHlsZXNo
ZWV0cy4KKworVVJMOiBpbnNwZWN0b3IvY3NzL3Jlc291cmNlcy9leHRlcm5hbC5jc3MKK09GRlNF
VDogKDAsIDApCitQQVNTOiBTdHlsZXNoZWV0IHNob3VsZCBoYXZlIGEgZnJhbWUuCisKK1VSTDog
PHN0eWxlPiBvbiBpbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKK09GRlNFVDog
KDUsIDcpCitQQVNTOiBTdHlsZXNoZWV0IHNob3VsZCBoYXZlIGEgZnJhbWUuCisKK1VSTDogaW5z
cGVjdG9yL2Nzcy9nZXRBbGxTdHlsZVNoZWV0cy5odG1sCitPRkZTRVQ6ICgwLCAwKQorUEFTUzog
U3R5bGVzaGVldCBzaG91bGQgaGF2ZSBhIGZyYW1lLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTNmNWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jc3MvZ2V0QWxsU3R5bGVTaGVldHMuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2V4dGVybmFsLmNzcyI+Cis8c3R5bGU+Ym9k
eSB7IGNvbG9yOiBibHVlOyB9PC9zdHlsZT4KKzxzY3JpcHQ+Cit2YXIgc3R5bGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworc3R5bGUudGV4dENvbnRlbnQgPSAiYm9keSB7IGNv
bG9yOiBncmF5OyB9IjsKK2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworPC9zY3Jp
cHQ+Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmdW5jdGlv
biBzYW5pdGl6ZVVSTCh1cmwpIHsKKyAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9eLio/TGF5
b3V0VGVzdHNcLy8sICIiKTsKKyAgICB9CisKKyAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5h
Z2VyLmZldGNoU3R5bGVTaGVldHNJZk5lZWRlZCgpOworICAgIEluc3BlY3RvckJhY2tlbmQucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKKyAgICAgICAgbGV0IHN0eWxlU2hl
ZXRzID0gV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0czsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXRzLmxlbmd0aCA9PT0gMywgIlRoZXJl
IHNob3VsZCBiZSB0aHJlZSBzdHlsZXNoZWV0cy4iKTsKKworICAgICAgICBmb3IgKGxldCBzdHls
ZVNoZWV0IG9mIHN0eWxlU2hlZXRzKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgVVJMOiAke3N0eWxlU2hlZXQuaXNJ
bmxpbmVTdHlsZVRhZygpID8gIjxzdHlsZT4gb24gIiA6ICIifSR7c2FuaXRpemVVUkwoc3R5bGVT
aGVldC51cmwpfWApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYE9GRlNFVDogKCR7
c3R5bGVTaGVldC5zdGFydExpbmVOdW1iZXJ9LCAke3N0eWxlU2hlZXQuc3RhcnRDb2x1bW5OdW1i
ZXJ9KWApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHN0eWxlU2hlZXQu
cGFyZW50RnJhbWUsICJTdHlsZXNoZWV0IHNob3VsZCBoYXZlIGEgZnJhbWUuIik7CisgICAgICAg
IH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0pOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0IENT
Uy5nZXRBbGxTdHlsZVNoZWV0cyByZXR1cm5zIGV4cGVjdGVkIGluZm9ybWF0aW9uIGZvciBkaWZm
ZXJlbnQgc3R5bGUgc2hlZXQgc291cmNlcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3Jlc291cmNlcy9leHRlcm5hbC5jc3MgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL3Jlc291cmNlcy9leHRlcm5hbC5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkxOTEyZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3MvcmVzb3VyY2VzL2V4dGVybmFsLmNzcwpAQCAtMCwwICsx
IEBACitib2R5IHsgY29sb3I6IHJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDlk
MzQ5MC4uNjRiNDU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTUtMDgtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5jb3Jy
ZWN0LCBkbyBub3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9wcm90b2NvbC9DU1MuanNvbjoKKyAgICAgICAgRXh0ZW5kIFN0eWxlU2hlZXRIZWFkZXIgdG8g
aW5jbHVkZSBzdGFydCBvZmZzZXQgaW5mb3JtYXRpb24gYW5kIGEgYml0CisgICAgICAgIGZvciB3
aGV0aGVyIG9yIG5vdCB0aGlzIHdhcyBhbiBpbmxpbmUgc3R5bGUgdGFnIGNyZWF0ZWQgYnkgdGhl
IHBhcnNlci4KKyAgICAgICAgVGhlc2UgbWF0Y2ggYWRkaXRpb25zIHRvIEJsaW5rJ3MgcHJvdG9j
b2wuCisKIDIwMTUtMDgtMTggIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUcnkgdG8gZml4IHRoZSBDTE9PUCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uCmluZGV4IDFiMzI2NGIuLjk4ZGNh
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
Q1NTLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9D
U1MuanNvbgpAQCAtOTYsNyArOTYsMTAgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNv
dXJjZVVSTCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJTdHlsZXNoZWV0IHJl
c291cmNlIFVSTC4ifSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9yaWdpbiIsICIkcmVm
IjogIlN0eWxlU2hlZXRPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiU3R5bGVzaGVldCBvcmlnaW4u
In0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJTdHlsZXNoZWV0IHRpdGxlLiJ9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkRl
bm90ZXMgd2hldGhlciB0aGUgc3R5bGVzaGVldCBpcyBkaXNhYmxlZC4ifQorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIkRlbm90ZXMgd2hldGhlciB0aGUgc3R5bGVzaGVldCBpcyBkaXNhYmxlZC4ifSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImlzSW5saW5lIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNj
cmlwdGlvbiI6ICJXaGV0aGVyIHRoaXMgc3R5bGVzaGVldCBpcyBhIDxzdHlsZT4gdGFnIGNyZWF0
ZWQgYnkgdGhlIHBhcnNlci4gVGhpcyBpcyBub3Qgc2V0IGZvciBkb2N1bWVudC53cml0dGVuIDxz
dHlsZT4gdGFncy4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdGFydExpbmUiLCAi
dHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiTGluZSBvZmZzZXQgb2YgdGhlIHN0eWxl
c2hlZXQgd2l0aGluIHRoZSByZXNvdXJjZSAoemVybyBiYXNlZCkuIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic3RhcnRDb2x1bW4iLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRp
b24iOiAiQ29sdW1uIG9mZnNldCBvZiB0aGUgc3R5bGVzaGVldCB3aXRoaW4gdGhlIHJlc291cmNl
ICh6ZXJvIGJhc2VkKS4iIH0KICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiQ1NTIHN0eWxlc2hlZXQgbWV0YWluZm9ybWF0aW9uLiIKICAgICAgICAgfSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNDRlN2ViLi4yMmEwOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTUtMDgtMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBMaW5rcyBmb3IgcnVsZXMgaW4gPHN0eWxlPiBhcmUgaW5jb3JyZWN0
LCBkbyBub3QgYWNjb3VudCBmb3IgPHN0eWxlPiBvZmZzZXQgaW4gdGhlIGRvY3VtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgxNDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3IvY3NzL2dldEFsbFN0eWxlU2hlZXRzLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpDU1NT
dHlsZVNoZWV0KToKKyAgICAgICAgSW5jbHVkZSB0aGUgc3RhcnRpbmcgcG9zaXRpb24gd2hlbiBj
cmVhdGVkIGJ5IHRoZSBQYXJzZXIuCisgICAgICAgIERlZmF1bHQgdG8gdGhlIG1pbmltdW0gcG9z
aXRpb24sIHdoaWNoIHNob3VsZCBuZXZlciBiZQorICAgICAgICBwb3NzaWJsZSBmb3IgYW4gaW5s
aW5lIDxzdHlsZT4gYmVjYXVzZSB0aGUgIjxzdHlsZT4iIGNoYXJhY3RlcnMKKyAgICAgICAgdGhl
bXNlbHZlcyByZXF1aXJlIGF0IGxlYXN0IHNvbWUgb2Zmc2V0LgorCisgICAgICAgICogZG9tL0lu
bGluZVN0eWxlU2hlZXRPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVTdHlsZVNo
ZWV0T3duZXI6OmNyZWF0ZVNoZWV0KToKKyAgICAgICAgUHJvdmlkZSB0aGUgc3RhcnQgcG9zaXRp
b24gb2Zmc2V0IGZvciB0aGlzIHN0eWxlc2hlZXQgaWYgaXQgd2FzIGlubGluZS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldEluZm8pOgorICAg
ICAgICBJbmNsdWRlIG5ldyBwcm90b2NvbCB2YWx1ZXMgZm9yIHRoZSBzdHlsZSBzaGVldC4KKwog
MjAxNS0wOC0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgY2Fpcm8gYnVpbGQgYWZ0ZXIgcjE4ODU5NC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAwZDJiODJmLi41Yzk4NTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgUmVm
PENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRl
bnRzPiYmIHNoZWV0LCBDU1NJbXAKIAogUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6
OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlKiBvd25lck5vZGUp
CiB7IAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGOjptb3ZlKHNo
ZWV0KSwgb3duZXJOb2RlLCBmYWxzZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0
eWxlU2hlZXQoV1RGOjptb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246Om1pbmlt
dW1Qb3NpdGlvbigpLCBmYWxzZSkpOwogfQogCi1SZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nKQorUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6
OmNyZWF0ZUlubGluZShOb2RlJiBvd25lck5vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogewog
ICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChvd25lck5vZGUuZG9jdW1lbnQoKSwg
YmFzZVVSTCwgZW5jb2RpbmcpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0eWxlU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29u
dGV4dCksICZvd25lck5vZGUsIHRydWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NT
dHlsZVNoZWV0KFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKGJhc2VVUkwuc3RyaW5nKCksIHBh
cnNlckNvbnRleHQpLCAmb3duZXJOb2RlLCBzdGFydFBvc2l0aW9uLCB0cnVlKSk7CiB9CiAKIENT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250
ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQpAQCAtOTgsMTcgKzk4LDE5IEBAIENTU1N0
eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50
cywgQ1NTSW1wb3J0UnVsZSoKICAgICAsIG1fbXV0YXRlZFJ1bGVzKGZhbHNlKQogICAgICwgbV9v
d25lck5vZGUoMCkKICAgICAsIG1fb3duZXJSdWxlKG93bmVyUnVsZSkKKyAgICAsIG1fc3RhcnRQ
b3NpdGlvbigpCiB7CiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJDbGllbnQodGhpcyk7CiB9CiAK
LUNTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBj
b250ZW50cywgTm9kZSogb3duZXJOb2RlLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCkKK0NTU1N0
eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBjb250ZW50
cywgTm9kZSogb3duZXJOb2RlLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJv
b2wgaXNJbmxpbmVTdHlsZXNoZWV0KQogICAgIDogbV9jb250ZW50cyhXVEY6Om1vdmUoY29udGVu
dHMpKQogICAgICwgbV9pc0lubGluZVN0eWxlc2hlZXQoaXNJbmxpbmVTdHlsZXNoZWV0KQogICAg
ICwgbV9pc0Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9tdXRhdGVkUnVsZXMoZmFsc2UpCiAgICAg
LCBtX293bmVyTm9kZShvd25lck5vZGUpCiAgICAgLCBtX293bmVyUnVsZSgwKQorICAgICwgbV9z
dGFydFBvc2l0aW9uKHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKGlzQWNjZXB0YWJsZUNT
U1N0eWxlU2hlZXRQYXJlbnQob3duZXJOb2RlKSk7CiAgICAgbV9jb250ZW50cy0+cmVnaXN0ZXJD
bGllbnQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCAxNzRjZDRjLi5m
YzE5M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDcgKzUy
LDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVl
dENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKICAgICBzdGF0aWMg
UmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2Rl
KiBvd25lck5vZGUpOwotICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5l
KE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwor
ICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBV
UkwmLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwogCiAg
ICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwogCkBAIC0xMTgsMTEgKzExOSwxNCBAQCBwdWJs
aWM6CiAKICAgICBTdHlsZVNoZWV0Q29udGVudHMmIGNvbnRlbnRzKCkgeyByZXR1cm4gbV9jb250
ZW50czsgfQogCisgICAgYm9vbCBpc0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmxpbmVT
dHlsZXNoZWV0OyB9CisgICAgVGV4dFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXJ0UG9zaXRpb247IH0KKwogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCkg
eyBtX293bmVyTm9kZSA9IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0
KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSk7Ci0g
ICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlKiBvd25lck5v
ZGUsIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0KTsKKyAgICBDU1NTdHlsZVNoZWV0KFJlZjxTdHls
ZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBU0NJSUxpdGVy
YWwoInRleHQvY3NzIik7IH0KQEAgLTEzOSw2ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIE5vZGUq
IG1fb3duZXJOb2RlOwogICAgIENTU0ltcG9ydFJ1bGUqIG1fb3duZXJSdWxlOwogCisgICAgVGV4
dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlvbjsKKwogICAgIG11dGFibGUgUmVmUHRyPE1lZGlhTGlz
dD4gbV9tZWRpYUNTU09NV3JhcHBlcjsKICAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTUnVs
ZT4+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKaW5kZXggNjM4Y2ZjNi4uMDRmMTI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y3JlYXRlU2hlZXQoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogCiAgICAgbV9sb2FkaW5nID0gdHJ1ZTsK
IAotICAgIG1fc2hlZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoZWxlbWVudCwgVVJM
KCksIGRvY3VtZW50LmlucHV0RW5jb2RpbmcoKSk7CisgICAgbV9zaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBVUkwoKSwgbV9zdGFydFRleHRQb3NpdGlvbiwgZG9j
dW1lbnQuaW5wdXRFbmNvZGluZygpKTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMobWVk
aWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxlbWVudC50aXRs
ZSgpKTsKICAgICBtX3NoZWV0LT5jb250ZW50cygpLnBhcnNlU3RyaW5nQXRQb3NpdGlvbih0ZXh0
LCBtX3N0YXJ0VGV4dFBvc2l0aW9uLCBtX2lzUGFyc2luZ0NoaWxkcmVuKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA1MTUzOTBk
Li5iNTZlODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCkBAIC04MTQsNiArODE0LDkgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGQK
ICAgICAgICAgLnNldFNvdXJjZVVSTChmaW5hbFVSTCgpKQogICAgICAgICAuc2V0VGl0bGUoc3R5
bGVTaGVldC0+dGl0bGUoKSkKICAgICAgICAgLnNldEZyYW1lSWQobV9wYWdlQWdlbnQtPmZyYW1l
SWQoZnJhbWUpKQorICAgICAgICAuc2V0SXNJbmxpbmUoc3R5bGVTaGVldC0+aXNJbmxpbmUoKSAm
JiBzdHlsZVNoZWV0LT5zdGFydFBvc2l0aW9uKCkgIT0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9z
aXRpb24oKSkKKyAgICAgICAgLnNldFN0YXJ0TGluZShzdHlsZVNoZWV0LT5zdGFydFBvc2l0aW9u
KCkubV9saW5lLnplcm9CYXNlZEludCgpKQorICAgICAgICAuc2V0U3RhcnRDb2x1bW4oc3R5bGVT
aGVldC0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpKQogICAgICAgICAu
cmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0N2JlYjRlLi5jNGY1
NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1NSBAQAogMjAxNS0wOC0x
OCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IExpbmtzIGZvciBydWxlcyBpbiA8c3R5bGU+IGFyZSBpbmNvcnJlY3QsIGRvIG5v
dCBhY2NvdW50IGZvciA8c3R5bGU+IG9mZnNldCBpbiB0aGUgZG9jdW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODE0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIucHJvdG90
eXBlLmdldCBzdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5h
Z2VyLnByb3RvdHlwZS5mZXRjaFN0eWxlU2hlZXRzSWZOZWVkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuc3R5bGVTaGVldEZvcklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuX21haW5S
ZXNvdXJjZURpZENoYW5nZSk6CisgICAgICAgIFVwZGF0ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0
IGEgU3R5bGVTaGVldCB3aGVuIGZldGNoZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9DU1NSdWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBl
LnVwZGF0ZSk6CisgICAgICAgIEVsaW1pbmF0ZSB1c2FnZSBvZiBgZGVsZXRlYC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVT
aGVldC5wcm90b3R5cGUuZ2V0IHN0YXJ0TGluZU51bWJlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUuZ2V0IHN0YXJ0Q29sdW1uTnVtYmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5oYXNJbmZvKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5pc0lubGluZVN0eWxlVGFn
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS51cGRhdGVJ
bmZvKToKKyAgICAgICAgSW5jbHVkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgc3R5bGVz
aGVldC4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQucHJvdG90eXBlLm9m
ZnNldFNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgIEluY2x1ZGUgaGVscGVyIEFQSSB0byBv
ZmZzZXQgYSBzb3VyY2UgY29kZSBsb2NhdGlvbiBieSB0aGUgc3RhcnRMaW5lL0NvbHVtbgorICAg
ICAgICBvZiB0aGlzIHN0eWxlc2hlZXQgaXRzZWxmLCBpZiBpdCB3YXMgYW4gaW5saW5lIHN0eWxl
LgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUuaXNJbmxp
bmVTdHlsZUF0dHJpYnV0ZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlU2hlZXQucHJvdG90eXBlLm1hcmtBc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldC5pc0lubGluZVN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LnByb3RvdHlwZS5tYXJr
QXNJbmxpbmVTdHlsZSk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBmb3IgY2xhcml0eS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAg
IEZldGNoIHN0eWxlc2hlZXQgaGVhZGVyIGluZm9ybWF0aW9uIGVhZ2VybHksIHNvIHdlIGhhdmUg
dGhlbSBlYXJseSBvbi4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMucHJv
dG90eXBlLl9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fcGFyc2VSdWxlUGF5bG9hZCk6CisgICAgICAg
IE9mZnNldCBzb3VyY2VDb2RlTG9jYXRpb25zIGZvciBDU1NSdWxlcyBiYXNlZCBvbiB0aGUgU3R5
bGVTaGVldCBvZmZzZXQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VD
b2RlTG9jYXRpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9u
LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICBJbXByb3ZlIGNvZGluZyBzdHlsZS4KKworMjAx
NS0wOC0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHRyYW5zcGFyZW50IGNvbG9yIHN3YXRjaGVzIGhhdmUgbG9wc2lkZWQg
Y2hlY2tlcmVkIGJhY2tncm91bmQgb24gbm9uLXJldGluYQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0
eWxlTWFuYWdlci5qcwppbmRleCA3MDNlZDU3Li5mNGM5NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
Q1NTU3R5bGVNYW5hZ2VyLmpzCkBAIC00Myw2ICs0Myw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiAKICAgICAgICAgdGhpcy5fY29sb3JGb3JtYXRTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJkZWZhdWx0LWNvbG9yLWZvcm1hdCIsIFdlYkluc3BlY3Rvci5Db2xvci5Gb3Jt
YXQuT3JpZ2luYWwpOwogCisgICAgICAgIHRoaXMuX2ZldGNoZWRJbml0aWFsU3R5bGVTaGVldHMg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAgPSBuZXcgTWFw
OwogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAgPSBuZXcgTWFwOwogICAgICAg
ICB0aGlzLl9ub2RlU3R5bGVzTWFwID0ge307CkBAIC01NSw2ICs1NiwxMSBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fY29sb3JGb3JtYXRTZXR0aW5nLnZh
bHVlOwogICAgIH0KIAorICAgIGdldCBzdHlsZVNoZWV0cygpCisgICAgeworICAgICAgICByZXR1
cm4gWy4uLnRoaXMuX3N0eWxlU2hlZXRJZGVudGlmaWVyTWFwLnZhbHVlcygpXTsKKyAgICB9CisK
ICAgICBjYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHdpbmRv
dy5DU1NBZ2VudCAmJiAhIUNTU0FnZW50LmZvcmNlUHNldWRvU3RhdGU7CkBAIC05Myw2ICs5OSwx
NCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2Vy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gbWF0Y2hbMV07CiAg
ICAgfQogCisgICAgZmV0Y2hTdHlsZVNoZWV0c0lmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlm
ICh0aGlzLl9mZXRjaGVkSW5pdGlhbFN0eWxlU2hlZXRzKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX2ZldGNoSW5mb0ZvckFsbFN0eWxlU2hlZXRzKGZ1bmN0aW9uKCkge30p
OworICAgIH0KKwogICAgIHN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkKQogICAgIHsKICAgICAg
ICAgbGV0IHN0eWxlU2hlZXQgPSB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5nZXQoaWQp
OwpAQCAtMTMxLDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIgPSBjbGFz
cyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQpOwogCiAgICAgICAgIC8vIERvIG5vdCBvYnNlcnZlIGlu
bGluZSBzdHlsZXMKLSAgICAgICAgaWYgKHN0eWxlU2hlZXQuaXNJbmxpbmVTdHlsZSgpKQorICAg
ICAgICBpZiAoc3R5bGVTaGVldC5pc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHN0eWxlU2hlZXQubm90ZUNvbnRlbnREaWRD
aGFuZ2UoKTsKQEAgLTE3Myw2ICsxODcsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2Vy
ID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAg
ICAgICAgIC8vIENsZWFyIG91ciBtYXBzIHdoZW4gdGhlIG1haW4gZnJhbWUgbmF2aWdhdGVzLgog
CisgICAgICAgIHRoaXMuX2ZldGNoZWRJbml0aWFsU3R5bGVTaGVldHMgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAuY2xlYXIoKTsKICAgICAgICAgdGhpcy5f
c3R5bGVTaGVldEZyYW1lVVJMTWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX25vZGVTdHlsZXNN
YXAgPSB7fTsKQEAgLTI1MywxNCArMjY4LDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFn
ZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3Ig
KHZhciBzdHlsZVNoZWV0SW5mbyBvZiBzdHlsZVNoZWV0cykgeworICAgICAgICAgICAgZm9yIChs
ZXQgc3R5bGVTaGVldEluZm8gb2Ygc3R5bGVTaGVldHMpIHsKICAgICAgICAgICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgNik6IFRoZSBpbmZvIGRpZCBub3QgaGF2ZSAnZnJhbWVJZCcsIHNv
IG1ha2UgcGFyZW50RnJhbWUgbnVsbCBpbiB0aGF0IGNhc2UuCi0gICAgICAgICAgICAgICAgdmFy
IHBhcmVudEZyYW1lID0gImZyYW1lSWQiIGluIHN0eWxlU2hlZXRJbmZvID8gV2ViSW5zcGVjdG9y
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5mby5m
cmFtZUlkKSA6IG51bGw7CisgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZyYW1lID0gImZyYW1l
SWQiIGluIHN0eWxlU2hlZXRJbmZvID8gV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmZyYW1lRm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5mby5mcmFtZUlkKSA6IG51bGw7CiAKLSAg
ICAgICAgICAgICAgICB2YXIgc3R5bGVTaGVldCA9IHRoaXMuc3R5bGVTaGVldEZvcklkZW50aWZp
ZXIoc3R5bGVTaGVldEluZm8uc3R5bGVTaGVldElkKTsKLSAgICAgICAgICAgICAgICBzdHlsZVNo
ZWV0LnVwZGF0ZUluZm8oc3R5bGVTaGVldEluZm8uc291cmNlVVJMLCBwYXJlbnRGcmFtZSk7Cisg
ICAgICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBUaGUgaW5mbyBkaWQgbm90
IGhhdmUgJ2lzSW5saW5lJywgJ3N0YXJ0TGluZScsIGFuZCAnc3RhcnRDb2x1bW4nLCBzbyBtYWtl
IGZhbHNlIGFuZCAwIGluIHRoZXNlIGNhc2VzLgorICAgICAgICAgICAgICAgIGxldCBpc0lubGlu
ZSA9IHN0eWxlU2hlZXRJbmZvLmlzSW5saW5lIHx8IGZhbHNlOworICAgICAgICAgICAgICAgIGxl
dCBzdGFydExpbmUgPSBzdHlsZVNoZWV0SW5mby5zdGFydExpbmUgfHwgMDsKKyAgICAgICAgICAg
ICAgICBsZXQgc3RhcnRDb2x1bW4gPSBzdHlsZVNoZWV0SW5mby5zdGFydENvbHVtbiB8fCAwOwog
Ci0gICAgICAgICAgICAgICAgdmFyIGtleSA9IHRoaXMuX2ZyYW1lVVJMTWFwS2V5KHBhcmVudEZy
YW1lLCBzdHlsZVNoZWV0SW5mby5zb3VyY2VVUkwpOworICAgICAgICAgICAgICAgIGxldCBzdHls
ZVNoZWV0ID0gdGhpcy5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihzdHlsZVNoZWV0SW5mby5zdHls
ZVNoZWV0SWQpOworICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQudXBkYXRlSW5mbyhzdHlsZVNo
ZWV0SW5mby5zb3VyY2VVUkwsIHBhcmVudEZyYW1lLCBpc0lubGluZSwgc3RhcnRMaW5lLCBzdGFy
dENvbHVtbik7CisKKyAgICAgICAgICAgICAgICBsZXQga2V5ID0gdGhpcy5fZnJhbWVVUkxNYXBL
ZXkocGFyZW50RnJhbWUsIHN0eWxlU2hlZXRJbmZvLnNvdXJjZVVSTCk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLnNldChrZXksIHN0eWxlU2hlZXQpOwogICAg
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NSdWxlLmpzCmluZGV4IGYwYWY2YWQuLjVlYzI1NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpz
CkBAIC04NCw4ICs4NCw4IEBAIFdlYkluc3BlY3Rvci5DU1NSdWxlID0gY2xhc3MgQ1NTUnVsZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhpcy5fc3R5bGUgPSBzdHlsZTsK
ICAgICAgICAgdGhpcy5fbWVkaWFMaXN0ID0gbWVkaWFMaXN0OwogCi0gICAgICAgIGRlbGV0ZSB0
aGlzLl9tYXRjaGVkU2VsZWN0b3JzOwotICAgICAgICBkZWxldGUgdGhpcy5fbWF0Y2hlZFNlbGVj
dG9yVGV4dDsKKyAgICAgICAgdGhpcy5fbWF0Y2hlZFNlbGVjdG9ycyA9IG51bGw7CisgICAgICAg
IHRoaXMuX21hdGNoZWRTZWxlY3RvclRleHQgPSBudWxsOwogCiAgICAgICAgIGlmICh0aGlzLl9z
dHlsZSkKICAgICAgICAgICAgIHRoaXMuX3N0eWxlLm93bmVyUnVsZSA9IHRoaXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVT
aGVldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NT
dHlsZVNoZWV0LmpzCmluZGV4IDFmMjEyZWUuLmUxYjE4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZVNoZWV0LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZVNoZWV0
LmpzCkBAIC0zNCw2ICszNCwxMyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCA9IGNsYXNz
IENTU1N0eWxlU2hlZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZQogICAgICAgICB0
aGlzLl9pZCA9IGlkIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3VybCA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3BhcmVudEZyYW1lID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc3RhcnRMaW5lTnVtYmVy
ID0gMDsKKyAgICAgICAgdGhpcy5fc3RhcnRDb2x1bW5OdW1iZXIgPSAwOworCisgICAgICAgIHRo
aXMuX2lubGluZVN0eWxlQXR0cmlidXRlID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2lubGluZVN0
eWxlVGFnID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5faGFzSW5mbyA9IGZhbHNlOwogICAgIH0K
IAogICAgIC8vIFN0YXRpYwpAQCAtODQsMjQgKzkxLDY0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVldCBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFub255bW91cyBTdHls
ZVNoZWV0ICVkIikuZm9ybWF0KHRoaXMuX3VuaXF1ZURpc3BsYXlOYW1lTnVtYmVyKTsKICAgICB9
CiAKLSAgICBpc0lubGluZVN0eWxlKCkKKyAgICBnZXQgc3RhcnRMaW5lTnVtYmVyKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiAhIXRoaXMuX2lubGluZVN0eWxlOworICAgICAgICByZXR1cm4gdGhp
cy5fc3RhcnRMaW5lTnVtYmVyOwogICAgIH0KIAotICAgIG1hcmtBc0lubGluZVN0eWxlKCkKKyAg
ICBnZXQgc3RhcnRDb2x1bW5OdW1iZXIoKQogICAgIHsKLSAgICAgICAgdGhpcy5faW5saW5lU3R5
bGUgPSB0cnVlOworICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRDb2x1bW5OdW1iZXI7CisgICAg
fQorCisgICAgaGFzSW5mbygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGFzSW5mbzsK
KyAgICB9CisKKyAgICBpc0lubGluZVN0eWxlVGFnKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9pbmxpbmVTdHlsZVRhZzsKKyAgICB9CisKKyAgICBpc0lubGluZVN0eWxlQXR0cmlidXRl
U3R5bGVTaGVldCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lU3R5bGVBdHRy
aWJ1dGU7CisgICAgfQorCisgICAgbWFya0FzSW5saW5lU3R5bGVBdHRyaWJ1dGVTdHlsZVNoZWV0
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lubGluZVN0eWxlQXR0cmlidXRlID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBvZmZzZXRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQor
ICAgIHsKKyAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICBpZiAoIXRoaXMuX2hhc0luZm8pCisgICAgICAgICAgICByZXR1
cm4gc291cmNlQ29kZUxvY2F0aW9uOworCisgICAgICAgIGxldCBzb3VyY2VDb2RlID0gc291cmNl
Q29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7CisgICAgICAgIGxldCBsaW5lTnVtYmVyID0gdGhpcy5f
c3RhcnRMaW5lTnVtYmVyICsgc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAg
IGxldCBjb2x1bW5OdW1iZXIgPSB0aGlzLl9zdGFydENvbHVtbk51bWJlciArIHNvdXJjZUNvZGVM
b2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIHJldHVybiBzb3VyY2VDb2RlLmNyZWF0ZVNv
dXJjZUNvZGVMb2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0KIAogICAg
IC8vIFByb3RlY3RlZAogCi0gICAgdXBkYXRlSW5mbyh1cmwsIHBhcmVudEZyYW1lKQorICAgIHVw
ZGF0ZUluZm8odXJsLCBwYXJlbnRGcmFtZSwgaW5saW5lU3R5bGUsIHN0YXJ0TGluZU51bWJlciwg
c3RhcnRDb2x1bW5OdW1iZXIpCiAgICAgeworICAgICAgICB0aGlzLl9oYXNJbmZvID0gdHJ1ZTsK
KwogICAgICAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKLSAgICAgICAgZGVsZXRlIHRoaXMu
X3VybENvbXBvbmVudHM7CisgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMgPSB1bmRlZmluZWQ7
CiAKICAgICAgICAgdGhpcy5fcGFyZW50RnJhbWUgPSBwYXJlbnRGcmFtZSB8fCBudWxsOworCisg
ICAgICAgIHRoaXMuX2lubGluZVN0eWxlVGFnID0gaW5saW5lU3R5bGU7CisgICAgICAgIHRoaXMu
X3N0YXJ0TGluZU51bWJlciA9IHN0YXJ0TGluZU51bWJlcjsKKyAgICAgICAgdGhpcy5fc3RhcnRD
b2x1bW5OdW1iZXIgPSBzdGFydENvbHVtbk51bWJlcjsKICAgICB9CiAKICAgICBnZXQgcmV2aXNp
b25Gb3JSZXF1ZXN0ZWRDb250ZW50KCkKQEAgLTE0Myw3ICsxOTAsNyBAQCBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVTaGVldCA9IGNsYXNzIENTU1N0eWxlU2hlZXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZQogICAgIG5vdGVDb250ZW50RGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9pZ25vcmVOZXh0Q29udGVudERpZENoYW5nZU5vdGlmaWNhdGlvbikgewotICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2lnbm9yZU5leHRDb250ZW50RGlkQ2hhbmdlTm90aWZpY2F0aW9u
OworICAgICAgICAgICAgdGhpcy5faWdub3JlTmV4dENvbnRlbnREaWRDaGFuZ2VOb3RpZmljYXRp
b24gPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9k
ZVN0eWxlcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9E
T01Ob2RlU3R5bGVzLmpzCmluZGV4IGE5ZmY5ZWEuLjhjZjZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5
bGVzLmpzCkBAIC0yMzUsNiArMjM1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBj
bGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHls
ZXMuRXZlbnQuUmVmcmVzaGVkLCB7c2lnbmlmaWNhbnRDaGFuZ2V9KTsKICAgICAgICAgfQogCisg
ICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIHB1c2hpbmcgU3R5bGVTaGVldCBpbmZvcm1hdGlv
biB0byB0aGUgZnJvbnRlbmQuIDxyZGFyOi8vcHJvYmxlbS8xMzIxMzY4MD4KKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5mZXRjaFN0eWxlU2hlZXRzSWZOZWVkZWQoKTsKKwog
ICAgICAgICBDU1NBZ2VudC5nZXRNYXRjaGVkU3R5bGVzRm9yTm9kZS5pbnZva2Uoe25vZGVJZDog
dGhpcy5fbm9kZS5pZCwgaW5jbHVkZVBzZXVkbzogdHJ1ZSwgaW5jbHVkZUluaGVyaXRlZDogdHJ1
ZX0sIGZldGNoZWRNYXRjaGVkU3R5bGVzLmJpbmQodGhpcykpOwogICAgICAgICBDU1NBZ2VudC5n
ZXRJbmxpbmVTdHlsZXNGb3JOb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9ub2RlLmlkfSwgZmV0
Y2hlZElubGluZVN0eWxlcy5iaW5kKHRoaXMpKTsKICAgICAgICAgQ1NTQWdlbnQuZ2V0Q29tcHV0
ZWRTdHlsZUZvck5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX25vZGUuaWR9LCBmZXRjaGVkQ29t
cHV0ZWRTdHlsZS5iaW5kKHRoaXMpKTsKQEAgLTcyNyw3ICs3MzAsNyBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gaWQgPyBXZWJJbnNwZWN0b3IuY3NzU3R5
bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkLnN0eWxlU2hlZXRJZCkgOiBudWxs
OwogICAgICAgICBpZiAoc3R5bGVTaGVldCkgewogICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lKQotICAgICAgICAgICAg
ICAgIHN0eWxlU2hlZXQubWFya0FzSW5saW5lU3R5bGUoKTsKKyAgICAgICAgICAgICAgICBzdHls
ZVNoZWV0Lm1hcmtBc0lubGluZVN0eWxlQXR0cmlidXRlU3R5bGVTaGVldCgpOwogICAgICAgICAg
ICAgc3R5bGVTaGVldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
LkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3N0eWxlU2hlZXRDb250ZW50RGlkQ2hhbmdl
LCB0aGlzKTsKICAgICAgICAgfQogCkBAIC04MTAsNiArODEzLDggQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICBpZiAoIXN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKKyAg
ICAgICAgdmFyIHN0eWxlU2hlZXQgPSBpZCA/IFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIu
c3R5bGVTaGVldEZvcklkZW50aWZpZXIoaWQuc3R5bGVTaGVldElkKSA6IG51bGw7CisKICAgICAg
ICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGUgcGF5bG9hZCBoYWQgJ3NlbGVjdG9yVGV4
dCcgYXMgYSBwcm9wZXJ0eSwKICAgICAgICAgLy8gbm93IGl0IGhhcyAnc2VsZWN0b3JMaXN0JyB3
aXRoIGEgJ3RleHQnIHByb3BlcnR5LiBTdXBwb3J0IGJvdGggaGVyZS4KICAgICAgICAgdmFyIHNl
bGVjdG9yVGV4dCA9IHBheWxvYWQuc2VsZWN0b3JMaXN0ID8gcGF5bG9hZC5zZWxlY3Rvckxpc3Qu
dGV4dCA6IHBheWxvYWQuc2VsZWN0b3JUZXh0OwpAQCAtODIyLDYgKzgyNyw4IEBAIFdlYkluc3Bl
Y3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgICAgIHZhciBzb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocGF5bG9hZC5zb3VyY2VVUkwsIHNvdXJjZVJhbmdlLnN0
YXJ0TGluZSwgc291cmNlUmFuZ2Uuc3RhcnRDb2x1bW4pOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHZhciBzb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9jcmVhdGVTb3VyY2VDb2RlTG9j
YXRpb24ocGF5bG9hZC5zb3VyY2VVUkwsIHBheWxvYWQuc291cmNlTGluZSk7CisgICAgICAgIGlm
IChzdHlsZVNoZWV0KQorICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gc3R5bGVTaGVl
dC5vZmZzZXRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAg
ICB2YXIgdHlwZTsKICAgICAgICAgc3dpdGNoIChwYXlsb2FkLm9yaWdpbikgewpAQCAtODYxLDYg
Kzg2OCw4IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxl
cyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICAgICAgdmFyIG1lZGlhVGV4
dCA9IG1lZGlhSXRlbS50ZXh0OwogICAgICAgICAgICAgdmFyIG1lZGlhU291cmNlQ29kZUxvY2F0
aW9uID0gdGhpcy5fY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKG1lZGlhSXRlbS5zb3VyY2VVUkws
IG1lZGlhSXRlbS5zb3VyY2VMaW5lKTsKKyAgICAgICAgICAgIGlmIChzdHlsZVNoZWV0KQorICAg
ICAgICAgICAgICAgIG1lZGlhU291cmNlQ29kZUxvY2F0aW9uID0gc3R5bGVTaGVldC5vZmZzZXRT
b3VyY2VDb2RlTG9jYXRpb24obWVkaWFTb3VyY2VDb2RlTG9jYXRpb24pOwogCiAgICAgICAgICAg
ICBtZWRpYUxpc3QucHVzaChuZXcgV2ViSW5zcGVjdG9yLkNTU01lZGlhKG1lZGlhVHlwZSwgbWVk
aWFUZXh0LCBtZWRpYVNvdXJjZUNvZGVMb2NhdGlvbikpOwogICAgICAgICB9CkBAIC04NzAsNyAr
ODc5LDYgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVz
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuIHJ1bGU7CiAg
ICAgICAgIH0KIAotICAgICAgICB2YXIgc3R5bGVTaGVldCA9IGlkID8gV2ViSW5zcGVjdG9yLmNz
c1N0eWxlTWFuYWdlci5zdHlsZVNoZWV0Rm9ySWRlbnRpZmllcihpZC5zdHlsZVNoZWV0SWQpIDog
bnVsbDsKICAgICAgICAgaWYgKHN0eWxlU2hlZXQpCiAgICAgICAgICAgICBzdHlsZVNoZWV0LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQuRXZlbnQuQ29udGVudERp
ZENoYW5nZSwgdGhpcy5fc3R5bGVTaGVldENvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZUxvY2F0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NvdXJjZUNvZGVMb2NhdGlvbi5qcwppbmRleCBlM2JjMjBmLi43NTY5MmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29k
ZUxvY2F0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9Tb3VyY2VDb2RlTG9jYXRpb24uanMKQEAgLTE3OSw3ICsxNzksNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZUxvY2F0aW9uID0gY2xhc3MgU291cmNlQ29kZUxvY2F0aW9uIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLgogCiAgICAgICAgIGlmIChzb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VD
b2RlICYmIGxpbmVOdW1iZXIgPT09IHRoaXMuX2xpbmVOdW1iZXIgJiYgY29sdW1uTnVtYmVyID09
PSB0aGlzLl9jb2x1bW5OdW1iZXIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVsc2Ug
aWYgKHRoaXMuX21hcHBlZFJlc291cmNlICYmIHNvdXJjZUNvZGUgPT09IHRoaXMuX21hcHBlZFJl
c291cmNlICYmIGxpbmVOdW1iZXIgPT09IHRoaXMuX21hcHBlZExpbmVOdW1iZXIgJiYgY29sdW1u
TnVtYmVyID09PSB0aGlzLl9tYXBwZWRDb2x1bW5OdW1iZXIpCisgICAgICAgIGlmICh0aGlzLl9t
YXBwZWRSZXNvdXJjZSAmJiBzb3VyY2VDb2RlID09PSB0aGlzLl9tYXBwZWRSZXNvdXJjZSAmJiBs
aW5lTnVtYmVyID09PSB0aGlzLl9tYXBwZWRMaW5lTnVtYmVyICYmIGNvbHVtbk51bWJlciA9PT0g
dGhpcy5fbWFwcGVkQ29sdW1uTnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHZhciBuZXdTb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZUNvZGVM
b2NhdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>